summaryrefslogtreecommitdiff
path: root/ltmain.sh (plain)
blob: 9e71d27d86d48ea79d31f3be040ec3933bd76623
1# ltmain.sh - Provide generalized library-building support services.
2# NOTE: Changing this file will not affect anything until you rerun configure.
3#
4# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005
5# Free Software Foundation, Inc.
6# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
7#
8# This program is free software; you can redistribute it and/or modify
9# it under the terms of the GNU General Public License as published by
10# the Free Software Foundation; either version 2 of the License, or
11# (at your option) any later version.
12#
13# This program is distributed in the hope that it will be useful, but
14# WITHOUT ANY WARRANTY; without even the implied warranty of
15# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16# General Public License for more details.
17#
18# You should have received a copy of the GNU General Public License
19# along with this program; if not, write to the Free Software
20# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
21#
22# As a special exception to the GNU General Public License, if you
23# distribute this file as part of a program that contains a
24# configuration script generated by Autoconf, you may include it under
25# the same distribution terms that you use for the rest of that program.
26
27basename="s,^.*/,,g"
28
29# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
30# is ksh but when the shell is invoked as "sh" and the current value of
31# the _XPG environment variable is not equal to 1 (one), the special
32# positional parameter $0, within a function call, is the name of the
33# function.
34progpath="$0"
35
36# The name of this program:
37progname=`echo "$progpath" | $SED $basename`
38modename="$progname"
39
40# Global variables:
41EXIT_SUCCESS=0
42EXIT_FAILURE=1
43
44PROGRAM=ltmain.sh
45PACKAGE=libtool
46VERSION=1.5.20
47TIMESTAMP=" (1.1220.2.287 2005/08/31 18:54:15)"
48
49# See if we are running on zsh, and set the options which allow our
50# commands through without removal of \ escapes.
51if test -n "${ZSH_VERSION+set}" ; then
52 setopt NO_GLOB_SUBST
53fi
54
55# Check that we have a working $echo.
56if test "X$1" = X--no-reexec; then
57 # Discard the --no-reexec flag, and continue.
58 shift
59elif test "X$1" = X--fallback-echo; then
60 # Avoid inline document here, it may be left over
61 :
62elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
63 # Yippee, $echo works!
64 :
65else
66 # Restart under the correct shell, and then maybe $echo will work.
67 exec $SHELL "$progpath" --no-reexec ${1+"$@"}
68fi
69
70if test "X$1" = X--fallback-echo; then
71 # used as fallback echo
72 shift
73 cat <<EOF
74$*
75EOF
76 exit $EXIT_SUCCESS
77fi
78
79default_mode=
80help="Try \`$progname --help' for more information."
81magic="%%%MAGIC variable%%%"
82mkdir="mkdir"
83mv="mv -f"
84rm="rm -f"
85
86# Sed substitution that helps us do robust quoting. It backslashifies
87# metacharacters that are still active within double-quoted strings.
88Xsed="${SED}"' -e 1s/^X//'
89sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
90# test EBCDIC or ASCII
91case `echo X|tr X '\101'` in
92 A) # ASCII based system
93 # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
94 SP2NL='tr \040 \012'
95 NL2SP='tr \015\012 \040\040'
96 ;;
97 *) # EBCDIC based system
98 SP2NL='tr \100 \n'
99 NL2SP='tr \r\n \100\100'
100 ;;
101esac
102
103# NLS nuisances.
104# Only set LANG and LC_ALL to C if already set.
105# These must not be set unconditionally because not all systems understand
106# e.g. LANG=C (notably SCO).
107# We save the old values to restore during execute mode.
108if test "${LC_ALL+set}" = set; then
109 save_LC_ALL="$LC_ALL"; LC_ALL=C; export LC_ALL
110fi
111if test "${LANG+set}" = set; then
112 save_LANG="$LANG"; LANG=C; export LANG
113fi
114
115# Make sure IFS has a sensible default
116lt_nl='
117'
118IFS=" $lt_nl"
119
120if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
121 $echo "$modename: not configured to build any kind of library" 1>&2
122 $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
123 exit $EXIT_FAILURE
124fi
125
126# Global variables.
127mode=$default_mode
128nonopt=
129prev=
130prevopt=
131run=
132show="$echo"
133show_help=
134execute_dlfiles=
135lo2o="s/\\.lo\$/.${objext}/"
136o2lo="s/\\.${objext}\$/.lo/"
137
138#####################################
139# Shell function definitions:
140# This seems to be the best place for them
141
142# func_win32_libid arg
143# return the library type of file 'arg'
144#
145# Need a lot of goo to handle *both* DLLs and import libs
146# Has to be a shell function in order to 'eat' the argument
147# that is supplied when $file_magic_command is called.
148func_win32_libid ()
149{
150 win32_libid_type="unknown"
151 win32_fileres=`file -L $1 2>/dev/null`
152 case $win32_fileres in
153 *ar\ archive\ import\ library*) # definitely import
154 win32_libid_type="x86 archive import"
155 ;;
156 *ar\ archive*) # could be an import, or static
157 if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \
158 $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
159 win32_nmres=`eval $NM -f posix -A $1 | \
160 sed -n -e '1,100{/ I /{x;/import/!{s/^/import/;h;p;};x;};}'`
161 if test "X$win32_nmres" = "Ximport" ; then
162 win32_libid_type="x86 archive import"
163 else
164 win32_libid_type="x86 archive static"
165 fi
166 fi
167 ;;
168 *DLL*)
169 win32_libid_type="x86 DLL"
170 ;;
171 *executable*) # but shell scripts are "executable" too...
172 case $win32_fileres in
173 *MS\ Windows\ PE\ Intel*)
174 win32_libid_type="x86 DLL"
175 ;;
176 esac
177 ;;
178 esac
179 $echo $win32_libid_type
180}
181
182
183# func_infer_tag arg
184# Infer tagged configuration to use if any are available and
185# if one wasn't chosen via the "--tag" command line option.
186# Only attempt this if the compiler in the base compile
187# command doesn't match the default compiler.
188# arg is usually of the form 'gcc ...'
189func_infer_tag ()
190{
191 if test -n "$available_tags" && test -z "$tagname"; then
192 CC_quoted=
193 for arg in $CC; do
194 case $arg in
195 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
196 arg="\"$arg\""
197 ;;
198 esac
199 CC_quoted="$CC_quoted $arg"
200 done
201 case $@ in
202 # Blanks in the command may have been stripped by the calling shell,
203 # but not from the CC environment variable when configure was run.
204 " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;;
205 # Blanks at the start of $base_compile will cause this to fail
206 # if we don't check for them as well.
207 *)
208 for z in $available_tags; do
209 if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
210 # Evaluate the configuration.
211 eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
212 CC_quoted=
213 for arg in $CC; do
214 # Double-quote args containing other shell metacharacters.
215 case $arg in
216 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
217 arg="\"$arg\""
218 ;;
219 esac
220 CC_quoted="$CC_quoted $arg"
221 done
222 case "$@ " in
223 " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*)
224 # The compiler in the base compile command matches
225 # the one in the tagged configuration.
226 # Assume this is the tagged configuration we want.
227 tagname=$z
228 break
229 ;;
230 esac
231 fi
232 done
233 # If $tagname still isn't set, then no tagged configuration
234 # was found and let the user know that the "--tag" command
235 # line option must be used.
236 if test -z "$tagname"; then
237 $echo "$modename: unable to infer tagged configuration"
238 $echo "$modename: specify a tag with \`--tag'" 1>&2
239 exit $EXIT_FAILURE
240# else
241# $echo "$modename: using $tagname tagged configuration"
242 fi
243 ;;
244 esac
245 fi
246}
247
248
249# func_extract_an_archive dir oldlib
250func_extract_an_archive ()
251{
252 f_ex_an_ar_dir="$1"; shift
253 f_ex_an_ar_oldlib="$1"
254
255 $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)"
256 $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $?
257 if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
258 :
259 else
260 $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2
261 exit $EXIT_FAILURE
262 fi
263}
264
265# func_extract_archives gentop oldlib ...
266func_extract_archives ()
267{
268 my_gentop="$1"; shift
269 my_oldlibs=${1+"$@"}
270 my_oldobjs=""
271 my_xlib=""
272 my_xabs=""
273 my_xdir=""
274 my_status=""
275
276 $show "${rm}r $my_gentop"
277 $run ${rm}r "$my_gentop"
278 $show "$mkdir $my_gentop"
279 $run $mkdir "$my_gentop"
280 my_status=$?
281 if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then
282 exit $my_status
283 fi
284
285 for my_xlib in $my_oldlibs; do
286 # Extract the objects.
287 case $my_xlib in
288 [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
289 *) my_xabs=`pwd`"/$my_xlib" ;;
290 esac
291 my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'`
292 my_xdir="$my_gentop/$my_xlib"
293
294 $show "${rm}r $my_xdir"
295 $run ${rm}r "$my_xdir"
296 $show "$mkdir $my_xdir"
297 $run $mkdir "$my_xdir"
298 status=$?
299 if test "$status" -ne 0 && test ! -d "$my_xdir"; then
300 exit $status
301 fi
302 case $host in
303 *-darwin*)
304 $show "Extracting $my_xabs"
305 # Do not bother doing anything if just a dry run
306 if test -z "$run"; then
307 darwin_orig_dir=`pwd`
308 cd $my_xdir || exit $?
309 darwin_archive=$my_xabs
310 darwin_curdir=`pwd`
311 darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'`
312 darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null`
313 if test -n "$darwin_arches"; then
314 darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'`
315 darwin_arch=
316 $show "$darwin_base_archive has multiple architectures $darwin_arches"
317 for darwin_arch in $darwin_arches ; do
318 mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
319 lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
320 cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
321 func_extract_an_archive "`pwd`" "${darwin_base_archive}"
322 cd "$darwin_curdir"
323 $rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
324 done # $darwin_arches
325 ## Okay now we have a bunch of thin objects, gotta fatten them up :)
326 darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP`
327 darwin_file=
328 darwin_files=
329 for darwin_file in $darwin_filelist; do
330 darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
331 lipo -create -output "$darwin_file" $darwin_files
332 done # $darwin_filelist
333 ${rm}r unfat-$$
334 cd "$darwin_orig_dir"
335 else
336 cd "$darwin_orig_dir"
337 func_extract_an_archive "$my_xdir" "$my_xabs"
338 fi # $darwin_arches
339 fi # $run
340 ;;
341 *)
342 func_extract_an_archive "$my_xdir" "$my_xabs"
343 ;;
344 esac
345 my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
346 done
347 func_extract_archives_result="$my_oldobjs"
348}
349# End of Shell function definitions
350#####################################
351
352# Darwin sucks
353eval std_shrext=\"$shrext_cmds\"
354
355# Parse our command line options once, thoroughly.
356while test "$#" -gt 0
357do
358 arg="$1"
359 shift
360
361 case $arg in
362 -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;;
363 *) optarg= ;;
364 esac
365
366 # If the previous option needs an argument, assign it.
367 if test -n "$prev"; then
368 case $prev in
369 execute_dlfiles)
370 execute_dlfiles="$execute_dlfiles $arg"
371 ;;
372 tag)
373 tagname="$arg"
374 preserve_args="${preserve_args}=$arg"
375
376 # Check whether tagname contains only valid characters
377 case $tagname in
378 *[!-_A-Za-z0-9,/]*)
379 $echo "$progname: invalid tag name: $tagname" 1>&2
380 exit $EXIT_FAILURE
381 ;;
382 esac
383
384 case $tagname in
385 CC)
386 # Don't test for the "default" C tag, as we know, it's there, but
387 # not specially marked.
388 ;;
389 *)
390 if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then
391 taglist="$taglist $tagname"
392 # Evaluate the configuration.
393 eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`"
394 else
395 $echo "$progname: ignoring unknown tag $tagname" 1>&2
396 fi
397 ;;
398 esac
399 ;;
400 *)
401 eval "$prev=\$arg"
402 ;;
403 esac
404
405 prev=
406 prevopt=
407 continue
408 fi
409
410 # Have we seen a non-optional argument yet?
411 case $arg in
412 --help)
413 show_help=yes
414 ;;
415
416 --version)
417 $echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP"
418 $echo
419 $echo "Copyright (C) 2005 Free Software Foundation, Inc."
420 $echo "This is free software; see the source for copying conditions. There is NO"
421 $echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
422 exit $?
423 ;;
424
425 --config)
426 ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath
427 # Now print the configurations for the tags.
428 for tagname in $taglist; do
429 ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath"
430 done
431 exit $?
432 ;;
433
434 --debug)
435 $echo "$progname: enabling shell trace mode"
436 set -x
437 preserve_args="$preserve_args $arg"
438 ;;
439
440 --dry-run | -n)
441 run=:
442 ;;
443
444 --features)
445 $echo "host: $host"
446 if test "$build_libtool_libs" = yes; then
447 $echo "enable shared libraries"
448 else
449 $echo "disable shared libraries"
450 fi
451 if test "$build_old_libs" = yes; then
452 $echo "enable static libraries"
453 else
454 $echo "disable static libraries"
455 fi
456 exit $?
457 ;;
458
459 --finish) mode="finish" ;;
460
461 --mode) prevopt="--mode" prev=mode ;;
462 --mode=*) mode="$optarg" ;;
463
464 --preserve-dup-deps) duplicate_deps="yes" ;;
465
466 --quiet | --silent)
467 show=:
468 preserve_args="$preserve_args $arg"
469 ;;
470
471 --tag) prevopt="--tag" prev=tag ;;
472 --tag=*)
473 set tag "$optarg" ${1+"$@"}
474 shift
475 prev=tag
476 preserve_args="$preserve_args --tag"
477 ;;
478
479 -dlopen)
480 prevopt="-dlopen"
481 prev=execute_dlfiles
482 ;;
483
484 -*)
485 $echo "$modename: unrecognized option \`$arg'" 1>&2
486 $echo "$help" 1>&2
487 exit $EXIT_FAILURE
488 ;;
489
490 *)
491 nonopt="$arg"
492 break
493 ;;
494 esac
495done
496
497if test -n "$prevopt"; then
498 $echo "$modename: option \`$prevopt' requires an argument" 1>&2
499 $echo "$help" 1>&2
500 exit $EXIT_FAILURE
501fi
502
503# If this variable is set in any of the actions, the command in it
504# will be execed at the end. This prevents here-documents from being
505# left over by shells.
506exec_cmd=
507
508if test -z "$show_help"; then
509
510 # Infer the operation mode.
511 if test -z "$mode"; then
512 $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2
513 $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2
514 case $nonopt in
515 *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*)
516 mode=link
517 for arg
518 do
519 case $arg in
520 -c)
521 mode=compile
522 break
523 ;;
524 esac
525 done
526 ;;
527 *db | *dbx | *strace | *truss)
528 mode=execute
529 ;;
530 *install*|cp|mv)
531 mode=install
532 ;;
533 *rm)
534 mode=uninstall
535 ;;
536 *)
537 # If we have no mode, but dlfiles were specified, then do execute mode.
538 test -n "$execute_dlfiles" && mode=execute
539
540 # Just use the default operation mode.
541 if test -z "$mode"; then
542 if test -n "$nonopt"; then
543 $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2
544 else
545 $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2
546 fi
547 fi
548 ;;
549 esac
550 fi
551
552 # Only execute mode is allowed to have -dlopen flags.
553 if test -n "$execute_dlfiles" && test "$mode" != execute; then
554 $echo "$modename: unrecognized option \`-dlopen'" 1>&2
555 $echo "$help" 1>&2
556 exit $EXIT_FAILURE
557 fi
558
559 # Change the help message to a mode-specific one.
560 generic_help="$help"
561 help="Try \`$modename --help --mode=$mode' for more information."
562
563 # These modes are in order of execution frequency so that they run quickly.
564 case $mode in
565 # libtool compile mode
566 compile)
567 modename="$modename: compile"
568 # Get the compilation command and the source file.
569 base_compile=
570 srcfile="$nonopt" # always keep a non-empty value in "srcfile"
571 suppress_opt=yes
572 suppress_output=
573 arg_mode=normal
574 libobj=
575 later=
576
577 for arg
578 do
579 case $arg_mode in
580 arg )
581 # do not "continue". Instead, add this to base_compile
582 lastarg="$arg"
583 arg_mode=normal
584 ;;
585
586 target )
587 libobj="$arg"
588 arg_mode=normal
589 continue
590 ;;
591
592 normal )
593 # Accept any command-line options.
594 case $arg in
595 -o)
596 if test -n "$libobj" ; then
597 $echo "$modename: you cannot specify \`-o' more than once" 1>&2
598 exit $EXIT_FAILURE
599 fi
600 arg_mode=target
601 continue
602 ;;
603
604 -static | -prefer-pic | -prefer-non-pic)
605 later="$later $arg"
606 continue
607 ;;
608
609 -no-suppress)
610 suppress_opt=no
611 continue
612 ;;
613
614 -Xcompiler)
615 arg_mode=arg # the next one goes into the "base_compile" arg list
616 continue # The current "srcfile" will either be retained or
617 ;; # replaced later. I would guess that would be a bug.
618
619 -Wc,*)
620 args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"`
621 lastarg=
622 save_ifs="$IFS"; IFS=','
623 for arg in $args; do
624 IFS="$save_ifs"
625
626 # Double-quote args containing other shell metacharacters.
627 # Many Bourne shells cannot handle close brackets correctly
628 # in scan sets, so we specify it separately.
629 case $arg in
630 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
631 arg="\"$arg\""
632 ;;
633 esac
634 lastarg="$lastarg $arg"
635 done
636 IFS="$save_ifs"
637 lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"`
638
639 # Add the arguments to base_compile.
640 base_compile="$base_compile $lastarg"
641 continue
642 ;;
643
644 * )
645 # Accept the current argument as the source file.
646 # The previous "srcfile" becomes the current argument.
647 #
648 lastarg="$srcfile"
649 srcfile="$arg"
650 ;;
651 esac # case $arg
652 ;;
653 esac # case $arg_mode
654
655 # Aesthetically quote the previous argument.
656 lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"`
657
658 case $lastarg in
659 # Double-quote args containing other shell metacharacters.
660 # Many Bourne shells cannot handle close brackets correctly
661 # in scan sets, and some SunOS ksh mistreat backslash-escaping
662 # in scan sets (worked around with variable expansion),
663 # and furthermore cannot handle '|' '&' '(' ')' in scan sets
664 # at all, so we specify them separately.
665 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
666 lastarg="\"$lastarg\""
667 ;;
668 esac
669
670 base_compile="$base_compile $lastarg"
671 done # for arg
672
673 case $arg_mode in
674 arg)
675 $echo "$modename: you must specify an argument for -Xcompile"
676 exit $EXIT_FAILURE
677 ;;
678 target)
679 $echo "$modename: you must specify a target with \`-o'" 1>&2
680 exit $EXIT_FAILURE
681 ;;
682 *)
683 # Get the name of the library object.
684 [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'`
685 ;;
686 esac
687
688 # Recognize several different file suffixes.
689 # If the user specifies -o file.o, it is replaced with file.lo
690 xform='[cCFSifmso]'
691 case $libobj in
692 *.ada) xform=ada ;;
693 *.adb) xform=adb ;;
694 *.ads) xform=ads ;;
695 *.asm) xform=asm ;;
696 *.c++) xform=c++ ;;
697 *.cc) xform=cc ;;
698 *.ii) xform=ii ;;
699 *.class) xform=class ;;
700 *.cpp) xform=cpp ;;
701 *.cxx) xform=cxx ;;
702 *.f90) xform=f90 ;;
703 *.for) xform=for ;;
704 *.java) xform=java ;;
705 esac
706
707 libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
708
709 case $libobj in
710 *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;;
711 *)
712 $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2
713 exit $EXIT_FAILURE
714 ;;
715 esac
716
717 func_infer_tag $base_compile
718
719 for arg in $later; do
720 case $arg in
721 -static)
722 build_old_libs=yes
723 continue
724 ;;
725
726 -prefer-pic)
727 pic_mode=yes
728 continue
729 ;;
730
731 -prefer-non-pic)
732 pic_mode=no
733 continue
734 ;;
735 esac
736 done
737
738 qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"`
739 case $qlibobj in
740 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
741 qlibobj="\"$qlibobj\"" ;;
742 esac
743 test "X$libobj" != "X$qlibobj" \
744 && $echo "X$libobj" | grep '[]~#^*{};<>?"'"'"' &()|`$[]' \
745 && $echo "$modename: libobj name \`$libobj' may not contain shell special characters."
746 objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
747 xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
748 if test "X$xdir" = "X$obj"; then
749 xdir=
750 else
751 xdir=$xdir/
752 fi
753 lobj=${xdir}$objdir/$objname
754
755 if test -z "$base_compile"; then
756 $echo "$modename: you must specify a compilation command" 1>&2
757 $echo "$help" 1>&2
758 exit $EXIT_FAILURE
759 fi
760
761 # Delete any leftover library objects.
762 if test "$build_old_libs" = yes; then
763 removelist="$obj $lobj $libobj ${libobj}T"
764 else
765 removelist="$lobj $libobj ${libobj}T"
766 fi
767
768 $run $rm $removelist
769 trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15
770
771 # On Cygwin there's no "real" PIC flag so we must build both object types
772 case $host_os in
773 cygwin* | mingw* | pw32* | os2*)
774 pic_mode=default
775 ;;
776 esac
777 if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
778 # non-PIC code in shared libraries is not supported
779 pic_mode=default
780 fi
781
782 # Calculate the filename of the output object if compiler does
783 # not support -o with -c
784 if test "$compiler_c_o" = no; then
785 output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
786 lockfile="$output_obj.lock"
787 removelist="$removelist $output_obj $lockfile"
788 trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15
789 else
790 output_obj=
791 need_locks=no
792 lockfile=
793 fi
794
795 # Lock this critical section if it is needed
796 # We use this script file to make the link, it avoids creating a new file
797 if test "$need_locks" = yes; then
798 until $run ln "$progpath" "$lockfile" 2>/dev/null; do
799 $show "Waiting for $lockfile to be removed"
800 sleep 2
801 done
802 elif test "$need_locks" = warn; then
803 if test -f "$lockfile"; then
804 $echo "\
805*** ERROR, $lockfile exists and contains:
806`cat $lockfile 2>/dev/null`
807
808This indicates that another process is trying to use the same
809temporary object file, and libtool could not work around it because
810your compiler does not support \`-c' and \`-o' together. If you
811repeat this compilation, it may succeed, by chance, but you had better
812avoid parallel builds (make -j) in this platform, or get a better
813compiler."
814
815 $run $rm $removelist
816 exit $EXIT_FAILURE
817 fi
818 $echo "$srcfile" > "$lockfile"
819 fi
820
821 if test -n "$fix_srcfile_path"; then
822 eval srcfile=\"$fix_srcfile_path\"
823 fi
824 qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"`
825 case $qsrcfile in
826 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
827 qsrcfile="\"$qsrcfile\"" ;;
828 esac
829
830 $run $rm "$libobj" "${libobj}T"
831
832 # Create a libtool object file (analogous to a ".la" file),
833 # but don't create it if we're doing a dry run.
834 test -z "$run" && cat > ${libobj}T <<EOF
835# $libobj - a libtool object file
836# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
837#
838# Please DO NOT delete this file!
839# It is necessary for linking the library.
840
841# Name of the PIC object.
842EOF
843
844 # Only build a PIC object if we are building libtool libraries.
845 if test "$build_libtool_libs" = yes; then
846 # Without this assignment, base_compile gets emptied.
847 fbsd_hideous_sh_bug=$base_compile
848
849 if test "$pic_mode" != no; then
850 command="$base_compile $qsrcfile $pic_flag"
851 else
852 # Don't build PIC code
853 command="$base_compile $qsrcfile"
854 fi
855
856 if test ! -d "${xdir}$objdir"; then
857 $show "$mkdir ${xdir}$objdir"
858 $run $mkdir ${xdir}$objdir
859 status=$?
860 if test "$status" -ne 0 && test ! -d "${xdir}$objdir"; then
861 exit $status
862 fi
863 fi
864
865 if test -z "$output_obj"; then
866 # Place PIC objects in $objdir
867 command="$command -o $lobj"
868 fi
869
870 $run $rm "$lobj" "$output_obj"
871
872 $show "$command"
873 if $run eval "$command"; then :
874 else
875 test -n "$output_obj" && $run $rm $removelist
876 exit $EXIT_FAILURE
877 fi
878
879 if test "$need_locks" = warn &&
880 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
881 $echo "\
882*** ERROR, $lockfile contains:
883`cat $lockfile 2>/dev/null`
884
885but it should contain:
886$srcfile
887
888This indicates that another process is trying to use the same
889temporary object file, and libtool could not work around it because
890your compiler does not support \`-c' and \`-o' together. If you
891repeat this compilation, it may succeed, by chance, but you had better
892avoid parallel builds (make -j) in this platform, or get a better
893compiler."
894
895 $run $rm $removelist
896 exit $EXIT_FAILURE
897 fi
898
899 # Just move the object if needed, then go on to compile the next one
900 if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
901 $show "$mv $output_obj $lobj"
902 if $run $mv $output_obj $lobj; then :
903 else
904 error=$?
905 $run $rm $removelist
906 exit $error
907 fi
908 fi
909
910 # Append the name of the PIC object to the libtool object file.
911 test -z "$run" && cat >> ${libobj}T <<EOF
912pic_object='$objdir/$objname'
913
914EOF
915
916 # Allow error messages only from the first compilation.
917 if test "$suppress_opt" = yes; then
918 suppress_output=' >/dev/null 2>&1'
919 fi
920 else
921 # No PIC object so indicate it doesn't exist in the libtool
922 # object file.
923 test -z "$run" && cat >> ${libobj}T <<EOF
924pic_object=none
925
926EOF
927 fi
928
929 # Only build a position-dependent object if we build old libraries.
930 if test "$build_old_libs" = yes; then
931 if test "$pic_mode" != yes; then
932 # Don't build PIC code
933 command="$base_compile $qsrcfile"
934 else
935 command="$base_compile $qsrcfile $pic_flag"
936 fi
937 if test "$compiler_c_o" = yes; then
938 command="$command -o $obj"
939 fi
940
941 # Suppress compiler output if we already did a PIC compilation.
942 command="$command$suppress_output"
943 $run $rm "$obj" "$output_obj"
944 $show "$command"
945 if $run eval "$command"; then :
946 else
947 $run $rm $removelist
948 exit $EXIT_FAILURE
949 fi
950
951 if test "$need_locks" = warn &&
952 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
953 $echo "\
954*** ERROR, $lockfile contains:
955`cat $lockfile 2>/dev/null`
956
957but it should contain:
958$srcfile
959
960This indicates that another process is trying to use the same
961temporary object file, and libtool could not work around it because
962your compiler does not support \`-c' and \`-o' together. If you
963repeat this compilation, it may succeed, by chance, but you had better
964avoid parallel builds (make -j) in this platform, or get a better
965compiler."
966
967 $run $rm $removelist
968 exit $EXIT_FAILURE
969 fi
970
971 # Just move the object if needed
972 if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
973 $show "$mv $output_obj $obj"
974 if $run $mv $output_obj $obj; then :
975 else
976 error=$?
977 $run $rm $removelist
978 exit $error
979 fi
980 fi
981
982 # Append the name of the non-PIC object the libtool object file.
983 # Only append if the libtool object file exists.
984 test -z "$run" && cat >> ${libobj}T <<EOF
985# Name of the non-PIC object.
986non_pic_object='$objname'
987
988EOF
989 else
990 # Append the name of the non-PIC object the libtool object file.
991 # Only append if the libtool object file exists.
992 test -z "$run" && cat >> ${libobj}T <<EOF
993# Name of the non-PIC object.
994non_pic_object=none
995
996EOF
997 fi
998
999 $run $mv "${libobj}T" "${libobj}"
1000
1001 # Unlock the critical section if it was locked
1002 if test "$need_locks" != no; then
1003 $run $rm "$lockfile"
1004 fi
1005
1006 exit $EXIT_SUCCESS
1007 ;;
1008
1009 # libtool link mode
1010 link | relink)
1011 modename="$modename: link"
1012 case $host in
1013 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
1014 # It is impossible to link a dll without this setting, and
1015 # we shouldn't force the makefile maintainer to figure out
1016 # which system we are compiling for in order to pass an extra
1017 # flag for every libtool invocation.
1018 # allow_undefined=no
1019
1020 # FIXME: Unfortunately, there are problems with the above when trying
1021 # to make a dll which has undefined symbols, in which case not
1022 # even a static library is built. For now, we need to specify
1023 # -no-undefined on the libtool link line when we can be certain
1024 # that all symbols are satisfied, otherwise we get a static library.
1025 allow_undefined=yes
1026 ;;
1027 *)
1028 allow_undefined=yes
1029 ;;
1030 esac
1031 libtool_args="$nonopt"
1032 base_compile="$nonopt $@"
1033 compile_command="$nonopt"
1034 finalize_command="$nonopt"
1035
1036 compile_rpath=
1037 finalize_rpath=
1038 compile_shlibpath=
1039 finalize_shlibpath=
1040 convenience=
1041 old_convenience=
1042 deplibs=
1043 old_deplibs=
1044 compiler_flags=
1045 linker_flags=
1046 dllsearchpath=
1047 lib_search_path=`pwd`
1048 inst_prefix_dir=
1049
1050 avoid_version=no
1051 dlfiles=
1052 dlprefiles=
1053 dlself=no
1054 export_dynamic=no
1055 export_symbols=
1056 export_symbols_regex=
1057 generated=
1058 libobjs=
1059 ltlibs=
1060 module=no
1061 no_install=no
1062 objs=
1063 non_pic_objects=
1064 precious_files_regex=
1065 prefer_static_libs=no
1066 preload=no
1067 prev=
1068 prevarg=
1069 release=
1070 rpath=
1071 xrpath=
1072 perm_rpath=
1073 temp_rpath=
1074 thread_safe=no
1075 vinfo=
1076 vinfo_number=no
1077
1078 func_infer_tag $base_compile
1079
1080 # We need to know -static, to get the right output filenames.
1081 for arg
1082 do
1083 case $arg in
1084 -all-static | -static)
1085 if test "X$arg" = "X-all-static"; then
1086 if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
1087 $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2
1088 fi
1089 if test -n "$link_static_flag"; then
1090 dlopen_self=$dlopen_self_static
1091 fi
1092 else
1093 if test -z "$pic_flag" && test -n "$link_static_flag"; then
1094 dlopen_self=$dlopen_self_static
1095 fi
1096 fi
1097 build_libtool_libs=no
1098 build_old_libs=yes
1099 prefer_static_libs=yes
1100 break
1101 ;;
1102 esac
1103 done
1104
1105 # See if our shared archives depend on static archives.
1106 test -n "$old_archive_from_new_cmds" && build_old_libs=yes
1107
1108 # Go through the arguments, transforming them on the way.
1109 while test "$#" -gt 0; do
1110 arg="$1"
1111 shift
1112 case $arg in
1113 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
1114 qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test
1115 ;;
1116 *) qarg=$arg ;;
1117 esac
1118 libtool_args="$libtool_args $qarg"
1119
1120 # If the previous option needs an argument, assign it.
1121 if test -n "$prev"; then
1122 case $prev in
1123 output)
1124 compile_command="$compile_command @OUTPUT@"
1125 finalize_command="$finalize_command @OUTPUT@"
1126 ;;
1127 esac
1128
1129 case $prev in
1130 dlfiles|dlprefiles)
1131 if test "$preload" = no; then
1132 # Add the symbol object into the linking commands.
1133 compile_command="$compile_command @SYMFILE@"
1134 finalize_command="$finalize_command @SYMFILE@"
1135 preload=yes
1136 fi
1137 case $arg in
1138 *.la | *.lo) ;; # We handle these cases below.
1139 force)
1140 if test "$dlself" = no; then
1141 dlself=needless
1142 export_dynamic=yes
1143 fi
1144 prev=
1145 continue
1146 ;;
1147 self)
1148 if test "$prev" = dlprefiles; then
1149 dlself=yes
1150 elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
1151 dlself=yes
1152 else
1153 dlself=needless
1154 export_dynamic=yes
1155 fi
1156 prev=
1157 continue
1158 ;;
1159 *)
1160 if test "$prev" = dlfiles; then
1161 dlfiles="$dlfiles $arg"
1162 else
1163 dlprefiles="$dlprefiles $arg"
1164 fi
1165 prev=
1166 continue
1167 ;;
1168 esac
1169 ;;
1170 expsyms)
1171 export_symbols="$arg"
1172 if test ! -f "$arg"; then
1173 $echo "$modename: symbol file \`$arg' does not exist"
1174 exit $EXIT_FAILURE
1175 fi
1176 prev=
1177 continue
1178 ;;
1179 expsyms_regex)
1180 export_symbols_regex="$arg"
1181 prev=
1182 continue
1183 ;;
1184 inst_prefix)
1185 inst_prefix_dir="$arg"
1186 prev=
1187 continue
1188 ;;
1189 precious_regex)
1190 precious_files_regex="$arg"
1191 prev=
1192 continue
1193 ;;
1194 release)
1195 release="-$arg"
1196 prev=
1197 continue
1198 ;;
1199 objectlist)
1200 if test -f "$arg"; then
1201 save_arg=$arg
1202 moreargs=
1203 for fil in `cat $save_arg`
1204 do
1205# moreargs="$moreargs $fil"
1206 arg=$fil
1207 # A libtool-controlled object.
1208
1209 # Check to see that this really is a libtool object.
1210 if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
1211 pic_object=
1212 non_pic_object=
1213
1214 # Read the .lo file
1215 # If there is no directory component, then add one.
1216 case $arg in
1217 */* | *\\*) . $arg ;;
1218 *) . ./$arg ;;
1219 esac
1220
1221 if test -z "$pic_object" || \
1222 test -z "$non_pic_object" ||
1223 test "$pic_object" = none && \
1224 test "$non_pic_object" = none; then
1225 $echo "$modename: cannot find name of object for \`$arg'" 1>&2
1226 exit $EXIT_FAILURE
1227 fi
1228
1229 # Extract subdirectory from the argument.
1230 xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
1231 if test "X$xdir" = "X$arg"; then
1232 xdir=
1233 else
1234 xdir="$xdir/"
1235 fi
1236
1237 if test "$pic_object" != none; then
1238 # Prepend the subdirectory the object is found in.
1239 pic_object="$xdir$pic_object"
1240
1241 if test "$prev" = dlfiles; then
1242 if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
1243 dlfiles="$dlfiles $pic_object"
1244 prev=
1245 continue
1246 else
1247 # If libtool objects are unsupported, then we need to preload.
1248 prev=dlprefiles
1249 fi
1250 fi
1251
1252 # CHECK ME: I think I busted this. -Ossama
1253 if test "$prev" = dlprefiles; then
1254 # Preload the old-style object.
1255 dlprefiles="$dlprefiles $pic_object"
1256 prev=
1257 fi
1258
1259 # A PIC object.
1260 libobjs="$libobjs $pic_object"
1261 arg="$pic_object"
1262 fi
1263
1264 # Non-PIC object.
1265 if test "$non_pic_object" != none; then
1266 # Prepend the subdirectory the object is found in.
1267 non_pic_object="$xdir$non_pic_object"
1268
1269 # A standard non-PIC object
1270 non_pic_objects="$non_pic_objects $non_pic_object"
1271 if test -z "$pic_object" || test "$pic_object" = none ; then
1272 arg="$non_pic_object"
1273 fi
1274 fi
1275 else
1276 # Only an error if not doing a dry-run.
1277 if test -z "$run"; then
1278 $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
1279 exit $EXIT_FAILURE
1280 else
1281 # Dry-run case.
1282
1283 # Extract subdirectory from the argument.
1284 xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
1285 if test "X$xdir" = "X$arg"; then
1286 xdir=
1287 else
1288 xdir="$xdir/"
1289 fi
1290
1291 pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
1292 non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
1293 libobjs="$libobjs $pic_object"
1294 non_pic_objects="$non_pic_objects $non_pic_object"
1295 fi
1296 fi
1297 done
1298 else
1299 $echo "$modename: link input file \`$save_arg' does not exist"
1300 exit $EXIT_FAILURE
1301 fi
1302 arg=$save_arg
1303 prev=
1304 continue
1305 ;;
1306 rpath | xrpath)
1307 # We need an absolute path.
1308 case $arg in
1309 [\\/]* | [A-Za-z]:[\\/]*) ;;
1310 *)
1311 $echo "$modename: only absolute run-paths are allowed" 1>&2
1312 exit $EXIT_FAILURE
1313 ;;
1314 esac
1315 if test "$prev" = rpath; then
1316 case "$rpath " in
1317 *" $arg "*) ;;
1318 *) rpath="$rpath $arg" ;;
1319 esac
1320 else
1321 case "$xrpath " in
1322 *" $arg "*) ;;
1323 *) xrpath="$xrpath $arg" ;;
1324 esac
1325 fi
1326 prev=
1327 continue
1328 ;;
1329 xcompiler)
1330 compiler_flags="$compiler_flags $qarg"
1331 prev=
1332 compile_command="$compile_command $qarg"
1333 finalize_command="$finalize_command $qarg"
1334 continue
1335 ;;
1336 xlinker)
1337 linker_flags="$linker_flags $qarg"
1338 compiler_flags="$compiler_flags $wl$qarg"
1339 prev=
1340 compile_command="$compile_command $wl$qarg"
1341 finalize_command="$finalize_command $wl$qarg"
1342 continue
1343 ;;
1344 xcclinker)
1345 linker_flags="$linker_flags $qarg"
1346 compiler_flags="$compiler_flags $qarg"
1347 prev=
1348 compile_command="$compile_command $qarg"
1349 finalize_command="$finalize_command $qarg"
1350 continue
1351 ;;
1352 shrext)
1353 shrext_cmds="$arg"
1354 prev=
1355 continue
1356 ;;
1357 darwin_framework)
1358 compiler_flags="$compiler_flags $arg"
1359 compile_command="$compile_command $arg"
1360 finalize_command="$finalize_command $arg"
1361 prev=
1362 continue
1363 ;;
1364 *)
1365 eval "$prev=\"\$arg\""
1366 prev=
1367 continue
1368 ;;
1369 esac
1370 fi # test -n "$prev"
1371
1372 prevarg="$arg"
1373
1374 case $arg in
1375 -all-static)
1376 if test -n "$link_static_flag"; then
1377 compile_command="$compile_command $link_static_flag"
1378 finalize_command="$finalize_command $link_static_flag"
1379 fi
1380 continue
1381 ;;
1382
1383 -allow-undefined)
1384 # FIXME: remove this flag sometime in the future.
1385 $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2
1386 continue
1387 ;;
1388
1389 -avoid-version)
1390 avoid_version=yes
1391 continue
1392 ;;
1393
1394 -dlopen)
1395 prev=dlfiles
1396 continue
1397 ;;
1398
1399 -dlpreopen)
1400 prev=dlprefiles
1401 continue
1402 ;;
1403
1404 -export-dynamic)
1405 export_dynamic=yes
1406 continue
1407 ;;
1408
1409 -export-symbols | -export-symbols-regex)
1410 if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
1411 $echo "$modename: more than one -exported-symbols argument is not allowed"
1412 exit $EXIT_FAILURE
1413 fi
1414 if test "X$arg" = "X-export-symbols"; then
1415 prev=expsyms
1416 else
1417 prev=expsyms_regex
1418 fi
1419 continue
1420 ;;
1421
1422 -framework|-arch)
1423 prev=darwin_framework
1424 compiler_flags="$compiler_flags $arg"
1425 compile_command="$compile_command $arg"
1426 finalize_command="$finalize_command $arg"
1427 continue
1428 ;;
1429
1430 -inst-prefix-dir)
1431 prev=inst_prefix
1432 continue
1433 ;;
1434
1435 # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
1436 # so, if we see these flags be careful not to treat them like -L
1437 -L[A-Z][A-Z]*:*)
1438 case $with_gcc/$host in
1439 no/*-*-irix* | /*-*-irix*)
1440 compile_command="$compile_command $arg"
1441 finalize_command="$finalize_command $arg"
1442 ;;
1443 esac
1444 continue
1445 ;;
1446
1447 -L*)
1448 dir=`$echo "X$arg" | $Xsed -e 's/^-L//'`
1449 # We need an absolute path.
1450 case $dir in
1451 [\\/]* | [A-Za-z]:[\\/]*) ;;
1452 *)
1453 absdir=`cd "$dir" && pwd`
1454 if test -z "$absdir"; then
1455 $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2
1456 exit $EXIT_FAILURE
1457 fi
1458 dir="$absdir"
1459 ;;
1460 esac
1461 case "$deplibs " in
1462 *" -L$dir "*) ;;
1463 *)
1464 deplibs="$deplibs -L$dir"
1465 lib_search_path="$lib_search_path $dir"
1466 ;;
1467 esac
1468 case $host in
1469 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
1470 case :$dllsearchpath: in
1471 *":$dir:"*) ;;
1472 *) dllsearchpath="$dllsearchpath:$dir";;
1473 esac
1474 ;;
1475 esac
1476 continue
1477 ;;
1478
1479 -l*)
1480 if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
1481 case $host in
1482 *-*-cygwin* | *-*-pw32* | *-*-beos*)
1483 # These systems don't actually have a C or math library (as such)
1484 continue
1485 ;;
1486 *-*-mingw* | *-*-os2*)
1487 # These systems don't actually have a C library (as such)
1488 test "X$arg" = "X-lc" && continue
1489 ;;
1490 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
1491 # Do not include libc due to us having libc/libc_r.
1492 test "X$arg" = "X-lc" && continue
1493 ;;
1494 *-*-rhapsody* | *-*-darwin1.[012])
1495 # Rhapsody C and math libraries are in the System framework
1496 deplibs="$deplibs -framework System"
1497 continue
1498 esac
1499 elif test "X$arg" = "X-lc_r"; then
1500 case $host in
1501 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
1502 # Do not include libc_r directly, use -pthread flag.
1503 continue
1504 ;;
1505 esac
1506 fi
1507 deplibs="$deplibs $arg"
1508 continue
1509 ;;
1510
1511 # Tru64 UNIX uses -model [arg] to determine the layout of C++
1512 # classes, name mangling, and exception handling.
1513 -model)
1514 compile_command="$compile_command $arg"
1515 compiler_flags="$compiler_flags $arg"
1516 finalize_command="$finalize_command $arg"
1517 prev=xcompiler
1518 continue
1519 ;;
1520
1521 -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe)
1522 compiler_flags="$compiler_flags $arg"
1523 compile_command="$compile_command $arg"
1524 finalize_command="$finalize_command $arg"
1525 continue
1526 ;;
1527
1528 -module)
1529 module=yes
1530 continue
1531 ;;
1532
1533 # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
1534 # -r[0-9][0-9]* specifies the processor on the SGI compiler
1535 # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
1536 # +DA*, +DD* enable 64-bit mode on the HP compiler
1537 # -q* pass through compiler args for the IBM compiler
1538 # -m* pass through architecture-specific compiler args for GCC
1539 -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*)
1540
1541 # Unknown arguments in both finalize_command and compile_command need
1542 # to be aesthetically quoted because they are evaled later.
1543 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
1544 case $arg in
1545 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
1546 arg="\"$arg\""
1547 ;;
1548 esac
1549 compile_command="$compile_command $arg"
1550 finalize_command="$finalize_command $arg"
1551 if test "$with_gcc" = "yes" ; then
1552 compiler_flags="$compiler_flags $arg"
1553 fi
1554 continue
1555 ;;
1556
1557 -shrext)
1558 prev=shrext
1559 continue
1560 ;;
1561
1562 -no-fast-install)
1563 fast_install=no
1564 continue
1565 ;;
1566
1567 -no-install)
1568 case $host in
1569 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
1570 # The PATH hackery in wrapper scripts is required on Windows
1571 # in order for the loader to find any dlls it needs.
1572 $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2
1573 $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2
1574 fast_install=no
1575 ;;
1576 *) no_install=yes ;;
1577 esac
1578 continue
1579 ;;
1580
1581 -no-undefined)
1582 allow_undefined=no
1583 continue
1584 ;;
1585
1586 -objectlist)
1587 prev=objectlist
1588 continue
1589 ;;
1590
1591 -o) prev=output ;;
1592
1593 -precious-files-regex)
1594 prev=precious_regex
1595 continue
1596 ;;
1597
1598 -release)
1599 prev=release
1600 continue
1601 ;;
1602
1603 -rpath)
1604 prev=rpath
1605 continue
1606 ;;
1607
1608 -R)
1609 prev=xrpath
1610 continue
1611 ;;
1612
1613 -R*)
1614 dir=`$echo "X$arg" | $Xsed -e 's/^-R//'`
1615 # We need an absolute path.
1616 case $dir in
1617 [\\/]* | [A-Za-z]:[\\/]*) ;;
1618 *)
1619 $echo "$modename: only absolute run-paths are allowed" 1>&2
1620 exit $EXIT_FAILURE
1621 ;;
1622 esac
1623 case "$xrpath " in
1624 *" $dir "*) ;;
1625 *) xrpath="$xrpath $dir" ;;
1626 esac
1627 continue
1628 ;;
1629
1630 -static)
1631 # The effects of -static are defined in a previous loop.
1632 # We used to do the same as -all-static on platforms that
1633 # didn't have a PIC flag, but the assumption that the effects
1634 # would be equivalent was wrong. It would break on at least
1635 # Digital Unix and AIX.
1636 continue
1637 ;;
1638
1639 -thread-safe)
1640 thread_safe=yes
1641 continue
1642 ;;
1643
1644 -version-info)
1645 prev=vinfo
1646 continue
1647 ;;
1648 -version-number)
1649 prev=vinfo
1650 vinfo_number=yes
1651 continue
1652 ;;
1653
1654 -Wc,*)
1655 args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'`
1656 arg=
1657 save_ifs="$IFS"; IFS=','
1658 for flag in $args; do
1659 IFS="$save_ifs"
1660 case $flag in
1661 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
1662 flag="\"$flag\""
1663 ;;
1664 esac
1665 arg="$arg $wl$flag"
1666 compiler_flags="$compiler_flags $flag"
1667 done
1668 IFS="$save_ifs"
1669 arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
1670 ;;
1671
1672 -Wl,*)
1673 args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'`
1674 arg=
1675 save_ifs="$IFS"; IFS=','
1676 for flag in $args; do
1677 IFS="$save_ifs"
1678 case $flag in
1679 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
1680 flag="\"$flag\""
1681 ;;
1682 esac
1683 arg="$arg $wl$flag"
1684 compiler_flags="$compiler_flags $wl$flag"
1685 linker_flags="$linker_flags $flag"
1686 done
1687 IFS="$save_ifs"
1688 arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
1689 ;;
1690
1691 -Xcompiler)
1692 prev=xcompiler
1693 continue
1694 ;;
1695
1696 -Xlinker)
1697 prev=xlinker
1698 continue
1699 ;;
1700
1701 -XCClinker)
1702 prev=xcclinker
1703 continue
1704 ;;
1705
1706 # Some other compiler flag.
1707 -* | +*)
1708 # Unknown arguments in both finalize_command and compile_command need
1709 # to be aesthetically quoted because they are evaled later.
1710 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
1711 case $arg in
1712 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
1713 arg="\"$arg\""
1714 ;;
1715 esac
1716 ;;
1717
1718 *.$objext)
1719 # A standard object.
1720 objs="$objs $arg"
1721 ;;
1722
1723 *.lo)
1724 # A libtool-controlled object.
1725
1726 # Check to see that this really is a libtool object.
1727 if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
1728 pic_object=
1729 non_pic_object=
1730
1731 # Read the .lo file
1732 # If there is no directory component, then add one.
1733 case $arg in
1734 */* | *\\*) . $arg ;;
1735 *) . ./$arg ;;
1736 esac
1737
1738 if test -z "$pic_object" || \
1739 test -z "$non_pic_object" ||
1740 test "$pic_object" = none && \
1741 test "$non_pic_object" = none; then
1742 $echo "$modename: cannot find name of object for \`$arg'" 1>&2
1743 exit $EXIT_FAILURE
1744 fi
1745
1746 # Extract subdirectory from the argument.
1747 xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
1748 if test "X$xdir" = "X$arg"; then
1749 xdir=
1750 else
1751 xdir="$xdir/"
1752 fi
1753
1754 if test "$pic_object" != none; then
1755 # Prepend the subdirectory the object is found in.
1756 pic_object="$xdir$pic_object"
1757
1758 if test "$prev" = dlfiles; then
1759 if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
1760 dlfiles="$dlfiles $pic_object"
1761 prev=
1762 continue
1763 else
1764 # If libtool objects are unsupported, then we need to preload.
1765 prev=dlprefiles
1766 fi
1767 fi
1768
1769 # CHECK ME: I think I busted this. -Ossama
1770 if test "$prev" = dlprefiles; then
1771 # Preload the old-style object.
1772 dlprefiles="$dlprefiles $pic_object"
1773 prev=
1774 fi
1775
1776 # A PIC object.
1777 libobjs="$libobjs $pic_object"
1778 arg="$pic_object"
1779 fi
1780
1781 # Non-PIC object.
1782 if test "$non_pic_object" != none; then
1783 # Prepend the subdirectory the object is found in.
1784 non_pic_object="$xdir$non_pic_object"
1785
1786 # A standard non-PIC object
1787 non_pic_objects="$non_pic_objects $non_pic_object"
1788 if test -z "$pic_object" || test "$pic_object" = none ; then
1789 arg="$non_pic_object"
1790 fi
1791 fi
1792 else
1793 # Only an error if not doing a dry-run.
1794 if test -z "$run"; then
1795 $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
1796 exit $EXIT_FAILURE
1797 else
1798 # Dry-run case.
1799
1800 # Extract subdirectory from the argument.
1801 xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
1802 if test "X$xdir" = "X$arg"; then
1803 xdir=
1804 else
1805 xdir="$xdir/"
1806 fi
1807
1808 pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
1809 non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
1810 libobjs="$libobjs $pic_object"
1811 non_pic_objects="$non_pic_objects $non_pic_object"
1812 fi
1813 fi
1814 ;;
1815
1816 *.$libext)
1817 # An archive.
1818 deplibs="$deplibs $arg"
1819 old_deplibs="$old_deplibs $arg"
1820 continue
1821 ;;
1822
1823 *.la)
1824 # A libtool-controlled library.
1825
1826 if test "$prev" = dlfiles; then
1827 # This library was specified with -dlopen.
1828 dlfiles="$dlfiles $arg"
1829 prev=
1830 elif test "$prev" = dlprefiles; then
1831 # The library was specified with -dlpreopen.
1832 dlprefiles="$dlprefiles $arg"
1833 prev=
1834 else
1835 deplibs="$deplibs $arg"
1836 fi
1837 continue
1838 ;;
1839
1840 # Some other compiler argument.
1841 *)
1842 # Unknown arguments in both finalize_command and compile_command need
1843 # to be aesthetically quoted because they are evaled later.
1844 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
1845 case $arg in
1846 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
1847 arg="\"$arg\""
1848 ;;
1849 esac
1850 ;;
1851 esac # arg
1852
1853 # Now actually substitute the argument into the commands.
1854 if test -n "$arg"; then
1855 compile_command="$compile_command $arg"
1856 finalize_command="$finalize_command $arg"
1857 fi
1858 done # argument parsing loop
1859
1860 if test -n "$prev"; then
1861 $echo "$modename: the \`$prevarg' option requires an argument" 1>&2
1862 $echo "$help" 1>&2
1863 exit $EXIT_FAILURE
1864 fi
1865
1866 if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
1867 eval arg=\"$export_dynamic_flag_spec\"
1868 compile_command="$compile_command $arg"
1869 finalize_command="$finalize_command $arg"
1870 fi
1871
1872 oldlibs=
1873 # calculate the name of the file, without its directory
1874 outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'`
1875 libobjs_save="$libobjs"
1876
1877 if test -n "$shlibpath_var"; then
1878 # get the directories listed in $shlibpath_var
1879 eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
1880 else
1881 shlib_search_path=
1882 fi
1883 eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
1884 eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
1885
1886 output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
1887 if test "X$output_objdir" = "X$output"; then
1888 output_objdir="$objdir"
1889 else
1890 output_objdir="$output_objdir/$objdir"
1891 fi
1892 # Create the object directory.
1893 if test ! -d "$output_objdir"; then
1894 $show "$mkdir $output_objdir"
1895 $run $mkdir $output_objdir
1896 status=$?
1897 if test "$status" -ne 0 && test ! -d "$output_objdir"; then
1898 exit $status
1899 fi
1900 fi
1901
1902 # Determine the type of output
1903 case $output in
1904 "")
1905 $echo "$modename: you must specify an output file" 1>&2
1906 $echo "$help" 1>&2
1907 exit $EXIT_FAILURE
1908 ;;
1909 *.$libext) linkmode=oldlib ;;
1910 *.lo | *.$objext) linkmode=obj ;;
1911 *.la) linkmode=lib ;;
1912 *) linkmode=prog ;; # Anything else should be a program.
1913 esac
1914
1915 case $host in
1916 *cygwin* | *mingw* | *pw32*)
1917 # don't eliminate duplications in $postdeps and $predeps
1918 duplicate_compiler_generated_deps=yes
1919 ;;
1920 *)
1921 duplicate_compiler_generated_deps=$duplicate_deps
1922 ;;
1923 esac
1924 specialdeplibs=
1925
1926 libs=
1927 # Find all interdependent deplibs by searching for libraries
1928 # that are linked more than once (e.g. -la -lb -la)
1929 for deplib in $deplibs; do
1930 if test "X$duplicate_deps" = "Xyes" ; then
1931 case "$libs " in
1932 *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
1933 esac
1934 fi
1935 libs="$libs $deplib"
1936 done
1937
1938 if test "$linkmode" = lib; then
1939 libs="$predeps $libs $compiler_lib_search_path $postdeps"
1940
1941 # Compute libraries that are listed more than once in $predeps
1942 # $postdeps and mark them as special (i.e., whose duplicates are
1943 # not to be eliminated).
1944 pre_post_deps=
1945 if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then
1946 for pre_post_dep in $predeps $postdeps; do
1947 case "$pre_post_deps " in
1948 *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
1949 esac
1950 pre_post_deps="$pre_post_deps $pre_post_dep"
1951 done
1952 fi
1953 pre_post_deps=
1954 fi
1955
1956 deplibs=
1957 newdependency_libs=
1958 newlib_search_path=
1959 need_relink=no # whether we're linking any uninstalled libtool libraries
1960 notinst_deplibs= # not-installed libtool libraries
1961 notinst_path= # paths that contain not-installed libtool libraries
1962 case $linkmode in
1963 lib)
1964 passes="conv link"
1965 for file in $dlfiles $dlprefiles; do
1966 case $file in
1967 *.la) ;;
1968 *)
1969 $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2
1970 exit $EXIT_FAILURE
1971 ;;
1972 esac
1973 done
1974 ;;
1975 prog)
1976 compile_deplibs=
1977 finalize_deplibs=
1978 alldeplibs=no
1979 newdlfiles=
1980 newdlprefiles=
1981 passes="conv scan dlopen dlpreopen link"
1982 ;;
1983 *) passes="conv"
1984 ;;
1985 esac
1986 for pass in $passes; do
1987 if test "$linkmode,$pass" = "lib,link" ||
1988 test "$linkmode,$pass" = "prog,scan"; then
1989 libs="$deplibs"
1990 deplibs=
1991 fi
1992 if test "$linkmode" = prog; then
1993 case $pass in
1994 dlopen) libs="$dlfiles" ;;
1995 dlpreopen) libs="$dlprefiles" ;;
1996 link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
1997 esac
1998 fi
1999 if test "$pass" = dlopen; then
2000 # Collect dlpreopened libraries
2001 save_deplibs="$deplibs"
2002 deplibs=
2003 fi
2004 for deplib in $libs; do
2005 lib=
2006 found=no
2007 case $deplib in
2008 -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe)
2009 if test "$linkmode,$pass" = "prog,link"; then
2010 compile_deplibs="$deplib $compile_deplibs"
2011 finalize_deplibs="$deplib $finalize_deplibs"
2012 else
2013 compiler_flags="$compiler_flags $deplib"
2014 fi
2015 continue
2016 ;;
2017 -l*)
2018 if test "$linkmode" != lib && test "$linkmode" != prog; then
2019 $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2
2020 continue
2021 fi
2022 name=`$echo "X$deplib" | $Xsed -e 's/^-l//'`
2023 for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do
2024 for search_ext in .la $std_shrext .so .a; do
2025 # Search the libtool library
2026 lib="$searchdir/lib${name}${search_ext}"
2027 if test -f "$lib"; then
2028 if test "$search_ext" = ".la"; then
2029 found=yes
2030 else
2031 found=no
2032 fi
2033 break 2
2034 fi
2035 done
2036 done
2037 if test "$found" != yes; then
2038 # deplib doesn't seem to be a libtool library
2039 if test "$linkmode,$pass" = "prog,link"; then
2040 compile_deplibs="$deplib $compile_deplibs"
2041 finalize_deplibs="$deplib $finalize_deplibs"
2042 else
2043 deplibs="$deplib $deplibs"
2044 test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
2045 fi
2046 continue
2047 else # deplib is a libtool library
2048 # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
2049 # We need to do some special things here, and not later.
2050 if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
2051 case " $predeps $postdeps " in
2052 *" $deplib "*)
2053 if (${SED} -e '2q' $lib |
2054 grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
2055 library_names=
2056 old_library=
2057 case $lib in
2058 */* | *\\*) . $lib ;;
2059 *) . ./$lib ;;
2060 esac
2061 for l in $old_library $library_names; do
2062 ll="$l"
2063 done
2064 if test "X$ll" = "X$old_library" ; then # only static version available
2065 found=no
2066 ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
2067 test "X$ladir" = "X$lib" && ladir="."
2068 lib=$ladir/$old_library
2069 if test "$linkmode,$pass" = "prog,link"; then
2070 compile_deplibs="$deplib $compile_deplibs"
2071 finalize_deplibs="$deplib $finalize_deplibs"
2072 else
2073 deplibs="$deplib $deplibs"
2074 test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
2075 fi
2076 continue
2077 fi
2078 fi
2079 ;;
2080 *) ;;
2081 esac
2082 fi
2083 fi
2084 ;; # -l
2085 -L*)
2086 case $linkmode in
2087 lib)
2088 deplibs="$deplib $deplibs"
2089 test "$pass" = conv && continue
2090 newdependency_libs="$deplib $newdependency_libs"
2091 newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
2092 ;;
2093 prog)
2094 if test "$pass" = conv; then
2095 deplibs="$deplib $deplibs"
2096 continue
2097 fi
2098 if test "$pass" = scan; then
2099 deplibs="$deplib $deplibs"
2100 else
2101 compile_deplibs="$deplib $compile_deplibs"
2102 finalize_deplibs="$deplib $finalize_deplibs"
2103 fi
2104 newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
2105 ;;
2106 *)
2107 $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2
2108 ;;
2109 esac # linkmode
2110 continue
2111 ;; # -L
2112 -R*)
2113 if test "$pass" = link; then
2114 dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'`
2115 # Make sure the xrpath contains only unique directories.
2116 case "$xrpath " in
2117 *" $dir "*) ;;
2118 *) xrpath="$xrpath $dir" ;;
2119 esac
2120 fi
2121 deplibs="$deplib $deplibs"
2122 continue
2123 ;;
2124 *.la) lib="$deplib" ;;
2125 *.$libext)
2126 if test "$pass" = conv; then
2127 deplibs="$deplib $deplibs"
2128 continue
2129 fi
2130 case $linkmode in
2131 lib)
2132 valid_a_lib=no
2133 case $deplibs_check_method in
2134 match_pattern*)
2135 set dummy $deplibs_check_method
2136 match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
2137 if eval $echo \"$deplib\" 2>/dev/null \
2138 | $SED 10q \
2139 | $EGREP "$match_pattern_regex" > /dev/null; then
2140 valid_a_lib=yes
2141 fi
2142 ;;
2143 pass_all)
2144 valid_a_lib=yes
2145 ;;
2146 esac
2147 if test "$valid_a_lib" != yes; then
2148 $echo
2149 $echo "*** Warning: Trying to link with static lib archive $deplib."
2150 $echo "*** I have the capability to make that library automatically link in when"
2151 $echo "*** you link to this library. But I can only do this if you have a"
2152 $echo "*** shared version of the library, which you do not appear to have"
2153 $echo "*** because the file extensions .$libext of this argument makes me believe"
2154 $echo "*** that it is just a static archive that I should not used here."
2155 else
2156 $echo
2157 $echo "*** Warning: Linking the shared library $output against the"
2158 $echo "*** static library $deplib is not portable!"
2159 deplibs="$deplib $deplibs"
2160 fi
2161 continue
2162 ;;
2163 prog)
2164 if test "$pass" != link; then
2165 deplibs="$deplib $deplibs"
2166 else
2167 compile_deplibs="$deplib $compile_deplibs"
2168 finalize_deplibs="$deplib $finalize_deplibs"
2169 fi
2170 continue
2171 ;;
2172 esac # linkmode
2173 ;; # *.$libext
2174 *.lo | *.$objext)
2175 if test "$pass" = conv; then
2176 deplibs="$deplib $deplibs"
2177 elif test "$linkmode" = prog; then
2178 if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
2179 # If there is no dlopen support or we're linking statically,
2180 # we need to preload.
2181 newdlprefiles="$newdlprefiles $deplib"
2182 compile_deplibs="$deplib $compile_deplibs"
2183 finalize_deplibs="$deplib $finalize_deplibs"
2184 else
2185 newdlfiles="$newdlfiles $deplib"
2186 fi
2187 fi
2188 continue
2189 ;;
2190 %DEPLIBS%)
2191 alldeplibs=yes
2192 continue
2193 ;;
2194 esac # case $deplib
2195 if test "$found" = yes || test -f "$lib"; then :
2196 else
2197 $echo "$modename: cannot find the library \`$lib'" 1>&2
2198 exit $EXIT_FAILURE
2199 fi
2200
2201 # Check to see that this really is a libtool archive.
2202 if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
2203 else
2204 $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
2205 exit $EXIT_FAILURE
2206 fi
2207
2208 ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
2209 test "X$ladir" = "X$lib" && ladir="."
2210
2211 dlname=
2212 dlopen=
2213 dlpreopen=
2214 libdir=
2215 library_names=
2216 old_library=
2217 # If the library was installed with an old release of libtool,
2218 # it will not redefine variables installed, or shouldnotlink
2219 installed=yes
2220 shouldnotlink=no
2221 avoidtemprpath=
2222
2223
2224 # Read the .la file
2225 case $lib in
2226 */* | *\\*) . $lib ;;
2227 *) . ./$lib ;;
2228 esac
2229
2230 if test "$linkmode,$pass" = "lib,link" ||
2231 test "$linkmode,$pass" = "prog,scan" ||
2232 { test "$linkmode" != prog && test "$linkmode" != lib; }; then
2233 test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
2234 test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
2235 fi
2236
2237 if test "$pass" = conv; then
2238 # Only check for convenience libraries
2239 deplibs="$lib $deplibs"
2240 if test -z "$libdir"; then
2241 if test -z "$old_library"; then
2242 $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
2243 exit $EXIT_FAILURE
2244 fi
2245 # It is a libtool convenience library, so add in its objects.
2246 convenience="$convenience $ladir/$objdir/$old_library"
2247 old_convenience="$old_convenience $ladir/$objdir/$old_library"
2248 tmp_libs=
2249 for deplib in $dependency_libs; do
2250 deplibs="$deplib $deplibs"
2251 if test "X$duplicate_deps" = "Xyes" ; then
2252 case "$tmp_libs " in
2253 *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
2254 esac
2255 fi
2256 tmp_libs="$tmp_libs $deplib"
2257 done
2258 elif test "$linkmode" != prog && test "$linkmode" != lib; then
2259 $echo "$modename: \`$lib' is not a convenience library" 1>&2
2260 exit $EXIT_FAILURE
2261 fi
2262 continue
2263 fi # $pass = conv
2264
2265
2266 # Get the name of the library we link against.
2267 linklib=
2268 for l in $old_library $library_names; do
2269 linklib="$l"
2270 done
2271 if test -z "$linklib"; then
2272 $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
2273 exit $EXIT_FAILURE
2274 fi
2275
2276 # This library was specified with -dlopen.
2277 if test "$pass" = dlopen; then
2278 if test -z "$libdir"; then
2279 $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2
2280 exit $EXIT_FAILURE
2281 fi
2282 if test -z "$dlname" ||
2283 test "$dlopen_support" != yes ||
2284 test "$build_libtool_libs" = no; then
2285 # If there is no dlname, no dlopen support or we're linking
2286 # statically, we need to preload. We also need to preload any
2287 # dependent libraries so libltdl's deplib preloader doesn't
2288 # bomb out in the load deplibs phase.
2289 dlprefiles="$dlprefiles $lib $dependency_libs"
2290 else
2291 newdlfiles="$newdlfiles $lib"
2292 fi
2293 continue
2294 fi # $pass = dlopen
2295
2296 # We need an absolute path.
2297 case $ladir in
2298 [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
2299 *)
2300 abs_ladir=`cd "$ladir" && pwd`
2301 if test -z "$abs_ladir"; then
2302 $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2
2303 $echo "$modename: passing it literally to the linker, although it might fail" 1>&2
2304 abs_ladir="$ladir"
2305 fi
2306 ;;
2307 esac
2308 laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
2309
2310 # Find the relevant object directory and library name.
2311 if test "X$installed" = Xyes; then
2312 if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
2313 $echo "$modename: warning: library \`$lib' was moved." 1>&2
2314 dir="$ladir"
2315 absdir="$abs_ladir"
2316 libdir="$abs_ladir"
2317 else
2318 dir="$libdir"
2319 absdir="$libdir"
2320 fi
2321 test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
2322 else
2323 if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
2324 dir="$ladir"
2325 absdir="$abs_ladir"
2326 # Remove this search path later
2327 notinst_path="$notinst_path $abs_ladir"
2328 else
2329 dir="$ladir/$objdir"
2330 absdir="$abs_ladir/$objdir"
2331 # Remove this search path later
2332 notinst_path="$notinst_path $abs_ladir"
2333 fi
2334 fi # $installed = yes
2335 name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
2336
2337 # This library was specified with -dlpreopen.
2338 if test "$pass" = dlpreopen; then
2339 if test -z "$libdir"; then
2340 $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2
2341 exit $EXIT_FAILURE
2342 fi
2343 # Prefer using a static library (so that no silly _DYNAMIC symbols
2344 # are required to link).
2345 if test -n "$old_library"; then
2346 newdlprefiles="$newdlprefiles $dir/$old_library"
2347 # Otherwise, use the dlname, so that lt_dlopen finds it.
2348 elif test -n "$dlname"; then
2349 newdlprefiles="$newdlprefiles $dir/$dlname"
2350 else
2351 newdlprefiles="$newdlprefiles $dir/$linklib"
2352 fi
2353 fi # $pass = dlpreopen
2354
2355 if test -z "$libdir"; then
2356 # Link the convenience library
2357 if test "$linkmode" = lib; then
2358 deplibs="$dir/$old_library $deplibs"
2359 elif test "$linkmode,$pass" = "prog,link"; then
2360 compile_deplibs="$dir/$old_library $compile_deplibs"
2361 finalize_deplibs="$dir/$old_library $finalize_deplibs"
2362 else
2363 deplibs="$lib $deplibs" # used for prog,scan pass
2364 fi
2365 continue
2366 fi
2367
2368
2369 if test "$linkmode" = prog && test "$pass" != link; then
2370 newlib_search_path="$newlib_search_path $ladir"
2371 deplibs="$lib $deplibs"
2372
2373 linkalldeplibs=no
2374 if test "$link_all_deplibs" != no || test -z "$library_names" ||
2375 test "$build_libtool_libs" = no; then
2376 linkalldeplibs=yes
2377 fi
2378
2379 tmp_libs=
2380 for deplib in $dependency_libs; do
2381 case $deplib in
2382 -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test
2383 esac
2384 # Need to link against all dependency_libs?
2385 if test "$linkalldeplibs" = yes; then
2386 deplibs="$deplib $deplibs"
2387 else
2388 # Need to hardcode shared library paths
2389 # or/and link against static libraries
2390 newdependency_libs="$deplib $newdependency_libs"
2391 fi
2392 if test "X$duplicate_deps" = "Xyes" ; then
2393 case "$tmp_libs " in
2394 *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
2395 esac
2396 fi
2397 tmp_libs="$tmp_libs $deplib"
2398 done # for deplib
2399 continue
2400 fi # $linkmode = prog...
2401
2402 if test "$linkmode,$pass" = "prog,link"; then
2403 if test -n "$library_names" &&
2404 { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
2405 # We need to hardcode the library path
2406 if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
2407 # Make sure the rpath contains only unique directories.
2408 case "$temp_rpath " in
2409 *" $dir "*) ;;
2410 *" $absdir "*) ;;
2411 *) temp_rpath="$temp_rpath $absdir" ;;
2412 esac
2413 fi
2414
2415 # Hardcode the library path.
2416 # Skip directories that are in the system default run-time
2417 # search path.
2418 case " $sys_lib_dlsearch_path " in
2419 *" $absdir "*) ;;
2420 *)
2421 case "$compile_rpath " in
2422 *" $absdir "*) ;;
2423 *) compile_rpath="$compile_rpath $absdir"
2424 esac
2425 ;;
2426 esac
2427 case " $sys_lib_dlsearch_path " in
2428 *" $libdir "*) ;;
2429 *)
2430 case "$finalize_rpath " in
2431 *" $libdir "*) ;;
2432 *) finalize_rpath="$finalize_rpath $libdir"
2433 esac
2434 ;;
2435 esac
2436 fi # $linkmode,$pass = prog,link...
2437
2438 if test "$alldeplibs" = yes &&
2439 { test "$deplibs_check_method" = pass_all ||
2440 { test "$build_libtool_libs" = yes &&
2441 test -n "$library_names"; }; }; then
2442 # We only need to search for static libraries
2443 continue
2444 fi
2445 fi
2446
2447 link_static=no # Whether the deplib will be linked statically
2448 if test -n "$library_names" &&
2449 { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
2450 if test "$installed" = no; then
2451 notinst_deplibs="$notinst_deplibs $lib"
2452 need_relink=yes
2453 fi
2454 # This is a shared library
2455
2456 # Warn about portability, can't link against -module's on
2457 # some systems (darwin)
2458 if test "$shouldnotlink" = yes && test "$pass" = link ; then
2459 $echo
2460 if test "$linkmode" = prog; then
2461 $echo "*** Warning: Linking the executable $output against the loadable module"
2462 else
2463 $echo "*** Warning: Linking the shared library $output against the loadable module"
2464 fi
2465 $echo "*** $linklib is not portable!"
2466 fi
2467 if test "$linkmode" = lib &&
2468 test "$hardcode_into_libs" = yes; then
2469 # Hardcode the library path.
2470 # Skip directories that are in the system default run-time
2471 # search path.
2472 case " $sys_lib_dlsearch_path " in
2473 *" $absdir "*) ;;
2474 *)
2475 case "$compile_rpath " in
2476 *" $absdir "*) ;;
2477 *) compile_rpath="$compile_rpath $absdir"
2478 esac
2479 ;;
2480 esac
2481 case " $sys_lib_dlsearch_path " in
2482 *" $libdir "*) ;;
2483 *)
2484 case "$finalize_rpath " in
2485 *" $libdir "*) ;;
2486 *) finalize_rpath="$finalize_rpath $libdir"
2487 esac
2488 ;;
2489 esac
2490 fi
2491
2492 if test -n "$old_archive_from_expsyms_cmds"; then
2493 # figure out the soname
2494 set dummy $library_names
2495 realname="$2"
2496 shift; shift
2497 libname=`eval \\$echo \"$libname_spec\"`
2498 # use dlname if we got it. it's perfectly good, no?
2499 if test -n "$dlname"; then
2500 soname="$dlname"
2501 elif test -n "$soname_spec"; then
2502 # bleh windows
2503 case $host in
2504 *cygwin* | mingw*)
2505 major=`expr $current - $age`
2506 versuffix="-$major"
2507 ;;
2508 esac
2509 eval soname=\"$soname_spec\"
2510 else
2511 soname="$realname"
2512 fi
2513
2514 # Make a new name for the extract_expsyms_cmds to use
2515 soroot="$soname"
2516 soname=`$echo $soroot | ${SED} -e 's/^.*\///'`
2517 newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a"
2518
2519 # If the library has no export list, then create one now
2520 if test -f "$output_objdir/$soname-def"; then :
2521 else
2522 $show "extracting exported symbol list from \`$soname'"
2523 save_ifs="$IFS"; IFS='~'
2524 cmds=$extract_expsyms_cmds
2525 for cmd in $cmds; do
2526 IFS="$save_ifs"
2527 eval cmd=\"$cmd\"
2528 $show "$cmd"
2529 $run eval "$cmd" || exit $?
2530 done
2531 IFS="$save_ifs"
2532 fi
2533
2534 # Create $newlib
2535 if test -f "$output_objdir/$newlib"; then :; else
2536 $show "generating import library for \`$soname'"
2537 save_ifs="$IFS"; IFS='~'
2538 cmds=$old_archive_from_expsyms_cmds
2539 for cmd in $cmds; do
2540 IFS="$save_ifs"
2541 eval cmd=\"$cmd\"
2542 $show "$cmd"
2543 $run eval "$cmd" || exit $?
2544 done
2545 IFS="$save_ifs"
2546 fi
2547 # make sure the library variables are pointing to the new library
2548 dir=$output_objdir
2549 linklib=$newlib
2550 fi # test -n "$old_archive_from_expsyms_cmds"
2551
2552 if test "$linkmode" = prog || test "$mode" != relink; then
2553 add_shlibpath=
2554 add_dir=
2555 add=
2556 lib_linked=yes
2557 case $hardcode_action in
2558 immediate | unsupported)
2559 if test "$hardcode_direct" = no; then
2560 add="$dir/$linklib"
2561 case $host in
2562 *-*-sco3.2v5* ) add_dir="-L$dir" ;;
2563 *-*-darwin* )
2564 # if the lib is a module then we can not link against
2565 # it, someone is ignoring the new warnings I added
2566 if /usr/bin/file -L $add 2> /dev/null | $EGREP "bundle" >/dev/null ; then
2567 $echo "** Warning, lib $linklib is a module, not a shared library"
2568 if test -z "$old_library" ; then
2569 $echo
2570 $echo "** And there doesn't seem to be a static archive available"
2571 $echo "** The link will probably fail, sorry"
2572 else
2573 add="$dir/$old_library"
2574 fi
2575 fi
2576 esac
2577 elif test "$hardcode_minus_L" = no; then
2578 case $host in
2579 *-*-sunos*) add_shlibpath="$dir" ;;
2580 esac
2581 add_dir="-L$dir"
2582 add="-l$name"
2583 elif test "$hardcode_shlibpath_var" = no; then
2584 add_shlibpath="$dir"
2585 add="-l$name"
2586 else
2587 lib_linked=no
2588 fi
2589 ;;
2590 relink)
2591 if test "$hardcode_direct" = yes; then
2592 add="$dir/$linklib"
2593 elif test "$hardcode_minus_L" = yes; then
2594 add_dir="-L$dir"
2595 # Try looking first in the location we're being installed to.
2596 if test -n "$inst_prefix_dir"; then
2597 case $libdir in
2598 [\\/]*)
2599 add_dir="$add_dir -L$inst_prefix_dir$libdir"
2600 ;;
2601 esac
2602 fi
2603 add="-l$name"
2604 elif test "$hardcode_shlibpath_var" = yes; then
2605 add_shlibpath="$dir"
2606 add="-l$name"
2607 else
2608 lib_linked=no
2609 fi
2610 ;;
2611 *) lib_linked=no ;;
2612 esac
2613
2614 if test "$lib_linked" != yes; then
2615 $echo "$modename: configuration error: unsupported hardcode properties"
2616 exit $EXIT_FAILURE
2617 fi
2618
2619 if test -n "$add_shlibpath"; then
2620 case :$compile_shlibpath: in
2621 *":$add_shlibpath:"*) ;;
2622 *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
2623 esac
2624 fi
2625 if test "$linkmode" = prog; then
2626 test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
2627 test -n "$add" && compile_deplibs="$add $compile_deplibs"
2628 else
2629 test -n "$add_dir" && deplibs="$add_dir $deplibs"
2630 test -n "$add" && deplibs="$add $deplibs"
2631 if test "$hardcode_direct" != yes && \
2632 test "$hardcode_minus_L" != yes && \
2633 test "$hardcode_shlibpath_var" = yes; then
2634 case :$finalize_shlibpath: in
2635 *":$libdir:"*) ;;
2636 *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
2637 esac
2638 fi
2639 fi
2640 fi
2641
2642 if test "$linkmode" = prog || test "$mode" = relink; then
2643 add_shlibpath=
2644 add_dir=
2645 add=
2646 # Finalize command for both is simple: just hardcode it.
2647 if test "$hardcode_direct" = yes; then
2648 add="$libdir/$linklib"
2649 elif test "$hardcode_minus_L" = yes; then
2650 add_dir="-L$libdir"
2651 add="-l$name"
2652 elif test "$hardcode_shlibpath_var" = yes; then
2653 case :$finalize_shlibpath: in
2654 *":$libdir:"*) ;;
2655 *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
2656 esac
2657 add="-l$name"
2658 elif test "$hardcode_automatic" = yes; then
2659 if test -n "$inst_prefix_dir" &&
2660 test -f "$inst_prefix_dir$libdir/$linklib" ; then
2661 add="$inst_prefix_dir$libdir/$linklib"
2662 else
2663 add="$libdir/$linklib"
2664 fi
2665 else
2666 # We cannot seem to hardcode it, guess we'll fake it.
2667 add_dir="-L$libdir"
2668 # Try looking first in the location we're being installed to.
2669 if test -n "$inst_prefix_dir"; then
2670 case $libdir in
2671 [\\/]*)
2672 add_dir="$add_dir -L$inst_prefix_dir$libdir"
2673 ;;
2674 esac
2675 fi
2676 add="-l$name"
2677 fi
2678
2679 if test "$linkmode" = prog; then
2680 test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
2681 test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
2682 else
2683 test -n "$add_dir" && deplibs="$add_dir $deplibs"
2684 test -n "$add" && deplibs="$add $deplibs"
2685 fi
2686 fi
2687 elif test "$linkmode" = prog; then
2688 # Here we assume that one of hardcode_direct or hardcode_minus_L
2689 # is not unsupported. This is valid on all known static and
2690 # shared platforms.
2691 if test "$hardcode_direct" != unsupported; then
2692 test -n "$old_library" && linklib="$old_library"
2693 compile_deplibs="$dir/$linklib $compile_deplibs"
2694 finalize_deplibs="$dir/$linklib $finalize_deplibs"
2695 else
2696 compile_deplibs="-l$name -L$dir $compile_deplibs"
2697 finalize_deplibs="-l$name -L$dir $finalize_deplibs"
2698 fi
2699 elif test "$build_libtool_libs" = yes; then
2700 # Not a shared library
2701 if test "$deplibs_check_method" != pass_all; then
2702 # We're trying link a shared library against a static one
2703 # but the system doesn't support it.
2704
2705 # Just print a warning and add the library to dependency_libs so
2706 # that the program can be linked against the static library.
2707 $echo
2708 $echo "*** Warning: This system can not link to static lib archive $lib."
2709 $echo "*** I have the capability to make that library automatically link in when"
2710 $echo "*** you link to this library. But I can only do this if you have a"
2711 $echo "*** shared version of the library, which you do not appear to have."
2712 if test "$module" = yes; then
2713 $echo "*** But as you try to build a module library, libtool will still create "
2714 $echo "*** a static module, that should work as long as the dlopening application"
2715 $echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
2716 if test -z "$global_symbol_pipe"; then
2717 $echo
2718 $echo "*** However, this would only work if libtool was able to extract symbol"
2719 $echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
2720 $echo "*** not find such a program. So, this module is probably useless."
2721 $echo "*** \`nm' from GNU binutils and a full rebuild may help."
2722 fi
2723 if test "$build_old_libs" = no; then
2724 build_libtool_libs=module
2725 build_old_libs=yes
2726 else
2727 build_libtool_libs=no
2728 fi
2729 fi
2730 else
2731 deplibs="$dir/$old_library $deplibs"
2732 link_static=yes
2733 fi
2734 fi # link shared/static library?
2735
2736 if test "$linkmode" = lib; then
2737 if test -n "$dependency_libs" &&
2738 { test "$hardcode_into_libs" != yes ||
2739 test "$build_old_libs" = yes ||
2740 test "$link_static" = yes; }; then
2741 # Extract -R from dependency_libs
2742 temp_deplibs=
2743 for libdir in $dependency_libs; do
2744 case $libdir in
2745 -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'`
2746 case " $xrpath " in
2747 *" $temp_xrpath "*) ;;
2748 *) xrpath="$xrpath $temp_xrpath";;
2749 esac;;
2750 *) temp_deplibs="$temp_deplibs $libdir";;
2751 esac
2752 done
2753 dependency_libs="$temp_deplibs"
2754 fi
2755
2756 newlib_search_path="$newlib_search_path $absdir"
2757 # Link against this library
2758 test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
2759 # ... and its dependency_libs
2760 tmp_libs=
2761 for deplib in $dependency_libs; do
2762 newdependency_libs="$deplib $newdependency_libs"
2763 if test "X$duplicate_deps" = "Xyes" ; then
2764 case "$tmp_libs " in
2765 *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
2766 esac
2767 fi
2768 tmp_libs="$tmp_libs $deplib"
2769 done
2770
2771 if test "$link_all_deplibs" != no; then
2772 # Add the search paths of all dependency libraries
2773 for deplib in $dependency_libs; do
2774 case $deplib in
2775 -L*) path="$deplib" ;;
2776 *.la)
2777 dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'`
2778 test "X$dir" = "X$deplib" && dir="."
2779 # We need an absolute path.
2780 case $dir in
2781 [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
2782 *)
2783 absdir=`cd "$dir" && pwd`
2784 if test -z "$absdir"; then
2785 $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2
2786 absdir="$dir"
2787 fi
2788 ;;
2789 esac
2790 if grep "^installed=no" $deplib > /dev/null; then
2791 path="$absdir/$objdir"
2792 else
2793 eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
2794 if test -z "$libdir"; then
2795 $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
2796 exit $EXIT_FAILURE
2797 fi
2798 if test "$absdir" != "$libdir"; then
2799 $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2
2800 fi
2801 path="$absdir"
2802 fi
2803 depdepl=
2804 case $host in
2805 *-*-darwin*)
2806 # we do not want to link against static libs,
2807 # but need to link against shared
2808 eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
2809 if test -n "$deplibrary_names" ; then
2810 for tmp in $deplibrary_names ; do
2811 depdepl=$tmp
2812 done
2813 if test -f "$path/$depdepl" ; then
2814 depdepl="$path/$depdepl"
2815 fi
2816 # do not add paths which are already there
2817 case " $newlib_search_path " in
2818 *" $path "*) ;;
2819 *) newlib_search_path="$newlib_search_path $path";;
2820 esac
2821 fi
2822 path=""
2823 ;;
2824 *)
2825 path="-L$path"
2826 ;;
2827 esac
2828 ;;
2829 -l*)
2830 case $host in
2831 *-*-darwin*)
2832 # Again, we only want to link against shared libraries
2833 eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"`
2834 for tmp in $newlib_search_path ; do
2835 if test -f "$tmp/lib$tmp_libs.dylib" ; then
2836 eval depdepl="$tmp/lib$tmp_libs.dylib"
2837 break
2838 fi
2839 done
2840 path=""
2841 ;;
2842 *) continue ;;
2843 esac
2844 ;;
2845 *) continue ;;
2846 esac
2847 case " $deplibs " in
2848 *" $path "*) ;;
2849 *) deplibs="$path $deplibs" ;;
2850 esac
2851 case " $deplibs " in
2852 *" $depdepl "*) ;;
2853 *) deplibs="$depdepl $deplibs" ;;
2854 esac
2855 done
2856 fi # link_all_deplibs != no
2857 fi # linkmode = lib
2858 done # for deplib in $libs
2859 dependency_libs="$newdependency_libs"
2860 if test "$pass" = dlpreopen; then
2861 # Link the dlpreopened libraries before other libraries
2862 for deplib in $save_deplibs; do
2863 deplibs="$deplib $deplibs"
2864 done
2865 fi
2866 if test "$pass" != dlopen; then
2867 if test "$pass" != conv; then
2868 # Make sure lib_search_path contains only unique directories.
2869 lib_search_path=
2870 for dir in $newlib_search_path; do
2871 case "$lib_search_path " in
2872 *" $dir "*) ;;
2873 *) lib_search_path="$lib_search_path $dir" ;;
2874 esac
2875 done
2876 newlib_search_path=
2877 fi
2878
2879 if test "$linkmode,$pass" != "prog,link"; then
2880 vars="deplibs"
2881 else
2882 vars="compile_deplibs finalize_deplibs"
2883 fi
2884 for var in $vars dependency_libs; do
2885 # Add libraries to $var in reverse order
2886 eval tmp_libs=\"\$$var\"
2887 new_libs=
2888 for deplib in $tmp_libs; do
2889 # FIXME: Pedantically, this is the right thing to do, so
2890 # that some nasty dependency loop isn't accidentally
2891 # broken:
2892 #new_libs="$deplib $new_libs"
2893 # Pragmatically, this seems to cause very few problems in
2894 # practice:
2895 case $deplib in
2896 -L*) new_libs="$deplib $new_libs" ;;
2897 -R*) ;;
2898 *)
2899 # And here is the reason: when a library appears more
2900 # than once as an explicit dependence of a library, or
2901 # is implicitly linked in more than once by the
2902 # compiler, it is considered special, and multiple
2903 # occurrences thereof are not removed. Compare this
2904 # with having the same library being listed as a
2905 # dependency of multiple other libraries: in this case,
2906 # we know (pedantically, we assume) the library does not
2907 # need to be listed more than once, so we keep only the
2908 # last copy. This is not always right, but it is rare
2909 # enough that we require users that really mean to play
2910 # such unportable linking tricks to link the library
2911 # using -Wl,-lname, so that libtool does not consider it
2912 # for duplicate removal.
2913 case " $specialdeplibs " in
2914 *" $deplib "*) new_libs="$deplib $new_libs" ;;
2915 *)
2916 case " $new_libs " in
2917 *" $deplib "*) ;;
2918 *) new_libs="$deplib $new_libs" ;;
2919 esac
2920 ;;
2921 esac
2922 ;;
2923 esac
2924 done
2925 tmp_libs=
2926 for deplib in $new_libs; do
2927 case $deplib in
2928 -L*)
2929 case " $tmp_libs " in
2930 *" $deplib "*) ;;
2931 *) tmp_libs="$tmp_libs $deplib" ;;
2932 esac
2933 ;;
2934 *) tmp_libs="$tmp_libs $deplib" ;;
2935 esac
2936 done
2937 eval $var=\"$tmp_libs\"
2938 done # for var
2939 fi
2940 # Last step: remove runtime libs from dependency_libs
2941 # (they stay in deplibs)
2942 tmp_libs=
2943 for i in $dependency_libs ; do
2944 case " $predeps $postdeps $compiler_lib_search_path " in
2945 *" $i "*)
2946 i=""
2947 ;;
2948 esac
2949 if test -n "$i" ; then
2950 tmp_libs="$tmp_libs $i"
2951 fi
2952 done
2953 dependency_libs=$tmp_libs
2954 done # for pass
2955 if test "$linkmode" = prog; then
2956 dlfiles="$newdlfiles"
2957 dlprefiles="$newdlprefiles"
2958 fi
2959
2960 case $linkmode in
2961 oldlib)
2962 if test -n "$deplibs"; then
2963 $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2
2964 fi
2965
2966 if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
2967 $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2
2968 fi
2969
2970 if test -n "$rpath"; then
2971 $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2
2972 fi
2973
2974 if test -n "$xrpath"; then
2975 $echo "$modename: warning: \`-R' is ignored for archives" 1>&2
2976 fi
2977
2978 if test -n "$vinfo"; then
2979 $echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2
2980 fi
2981
2982 if test -n "$release"; then
2983 $echo "$modename: warning: \`-release' is ignored for archives" 1>&2
2984 fi
2985
2986 if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
2987 $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2
2988 fi
2989
2990 # Now set the variables for building old libraries.
2991 build_libtool_libs=no
2992 oldlibs="$output"
2993 objs="$objs$old_deplibs"
2994 ;;
2995
2996 lib)
2997 # Make sure we only generate libraries of the form `libNAME.la'.
2998 case $outputname in
2999 lib*)
3000 name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
3001 eval shared_ext=\"$shrext_cmds\"
3002 eval libname=\"$libname_spec\"
3003 ;;
3004 *)
3005 if test "$module" = no; then
3006 $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2
3007 $echo "$help" 1>&2
3008 exit $EXIT_FAILURE
3009 fi
3010 if test "$need_lib_prefix" != no; then
3011 # Add the "lib" prefix for modules if required
3012 name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
3013 eval shared_ext=\"$shrext_cmds\"
3014 eval libname=\"$libname_spec\"
3015 else
3016 libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
3017 fi
3018 ;;
3019 esac
3020
3021 if test -n "$objs"; then
3022 if test "$deplibs_check_method" != pass_all; then
3023 $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1
3024 exit $EXIT_FAILURE
3025 else
3026 $echo
3027 $echo "*** Warning: Linking the shared library $output against the non-libtool"
3028 $echo "*** objects $objs is not portable!"
3029 libobjs="$libobjs $objs"
3030 fi
3031 fi
3032
3033 if test "$dlself" != no; then
3034 $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2
3035 fi
3036
3037 set dummy $rpath
3038 if test "$#" -gt 2; then
3039 $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2
3040 fi
3041 install_libdir="$2"
3042
3043 oldlibs=
3044 if test -z "$rpath"; then
3045 if test "$build_libtool_libs" = yes; then
3046 # Building a libtool convenience library.
3047 # Some compilers have problems with a `.al' extension so
3048 # convenience libraries should have the same extension an
3049 # archive normally would.
3050 oldlibs="$output_objdir/$libname.$libext $oldlibs"
3051 build_libtool_libs=convenience
3052 build_old_libs=yes
3053 fi
3054
3055 if test -n "$vinfo"; then
3056 $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2
3057 fi
3058
3059 if test -n "$release"; then
3060 $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2
3061 fi
3062 else
3063
3064 # Parse the version information argument.
3065 save_ifs="$IFS"; IFS=':'
3066 set dummy $vinfo 0 0 0
3067 IFS="$save_ifs"
3068
3069 if test -n "$8"; then
3070 $echo "$modename: too many parameters to \`-version-info'" 1>&2
3071 $echo "$help" 1>&2
3072 exit $EXIT_FAILURE
3073 fi
3074
3075 # convert absolute version numbers to libtool ages
3076 # this retains compatibility with .la files and attempts
3077 # to make the code below a bit more comprehensible
3078
3079 case $vinfo_number in
3080 yes)
3081 number_major="$2"
3082 number_minor="$3"
3083 number_revision="$4"
3084 #
3085 # There are really only two kinds -- those that
3086 # use the current revision as the major version
3087 # and those that subtract age and use age as
3088 # a minor version. But, then there is irix
3089 # which has an extra 1 added just for fun
3090 #
3091 case $version_type in
3092 darwin|linux|osf|windows)
3093 current=`expr $number_major + $number_minor`
3094 age="$number_minor"
3095 revision="$number_revision"
3096 ;;
3097 freebsd-aout|freebsd-elf|sunos)
3098 current="$number_major"
3099 revision="$number_minor"
3100 age="0"
3101 ;;
3102 irix|nonstopux)
3103 current=`expr $number_major + $number_minor - 1`
3104 age="$number_minor"
3105 revision="$number_minor"
3106 ;;
3107 esac
3108 ;;
3109 no)
3110 current="$2"
3111 revision="$3"
3112 age="$4"
3113 ;;
3114 esac
3115
3116 # Check that each of the things are valid numbers.
3117 case $current in
3118 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
3119 *)
3120 $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2
3121 $echo "$modename: \`$vinfo' is not valid version information" 1>&2
3122 exit $EXIT_FAILURE
3123 ;;
3124 esac
3125
3126 case $revision in
3127 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
3128 *)
3129 $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2
3130 $echo "$modename: \`$vinfo' is not valid version information" 1>&2
3131 exit $EXIT_FAILURE
3132 ;;
3133 esac
3134
3135 case $age in
3136 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
3137 *)
3138 $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2
3139 $echo "$modename: \`$vinfo' is not valid version information" 1>&2
3140 exit $EXIT_FAILURE
3141 ;;
3142 esac
3143
3144 if test "$age" -gt "$current"; then
3145 $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2
3146 $echo "$modename: \`$vinfo' is not valid version information" 1>&2
3147 exit $EXIT_FAILURE
3148 fi
3149
3150 # Calculate the version variables.
3151 major=
3152 versuffix=
3153 verstring=
3154 case $version_type in
3155 none) ;;
3156
3157 darwin)
3158 # Like Linux, but with the current version available in
3159 # verstring for coding it into the library header
3160 major=.`expr $current - $age`
3161 versuffix="$major.$age.$revision"
3162 # Darwin ld doesn't like 0 for these options...
3163 minor_current=`expr $current + 1`
3164 verstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
3165 ;;
3166
3167 freebsd-aout)
3168 major=".$current"
3169 versuffix=".$current.$revision";
3170 ;;
3171
3172 freebsd-elf)
3173 major=".$current"
3174 versuffix=".$current";
3175 ;;
3176
3177 irix | nonstopux)
3178 major=`expr $current - $age + 1`
3179
3180 case $version_type in
3181 nonstopux) verstring_prefix=nonstopux ;;
3182 *) verstring_prefix=sgi ;;
3183 esac
3184 verstring="$verstring_prefix$major.$revision"
3185
3186 # Add in all the interfaces that we are compatible with.
3187 loop=$revision
3188 while test "$loop" -ne 0; do
3189 iface=`expr $revision - $loop`
3190 loop=`expr $loop - 1`
3191 verstring="$verstring_prefix$major.$iface:$verstring"
3192 done
3193
3194 # Before this point, $major must not contain `.'.
3195 major=.$major
3196 versuffix="$major.$revision"
3197 ;;
3198
3199 linux)
3200 major=.`expr $current - $age`
3201 versuffix="$major.$age.$revision"
3202 ;;
3203
3204 osf)
3205 major=.`expr $current - $age`
3206 versuffix=".$current.$age.$revision"
3207 verstring="$current.$age.$revision"
3208
3209 # Add in all the interfaces that we are compatible with.
3210 loop=$age
3211 while test "$loop" -ne 0; do
3212 iface=`expr $current - $loop`
3213 loop=`expr $loop - 1`
3214 verstring="$verstring:${iface}.0"
3215 done
3216
3217 # Make executables depend on our current version.
3218 verstring="$verstring:${current}.0"
3219 ;;
3220
3221 sunos)
3222 major=".$current"
3223 versuffix=".$current.$revision"
3224 ;;
3225
3226 windows)
3227 # Use '-' rather than '.', since we only want one
3228 # extension on DOS 8.3 filesystems.
3229 major=`expr $current - $age`
3230 versuffix="-$major"
3231 ;;
3232
3233 *)
3234 $echo "$modename: unknown library version type \`$version_type'" 1>&2
3235 $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
3236 exit $EXIT_FAILURE
3237 ;;
3238 esac
3239
3240 # Clear the version info if we defaulted, and they specified a release.
3241 if test -z "$vinfo" && test -n "$release"; then
3242 major=
3243 case $version_type in
3244 darwin)
3245 # we can't check for "0.0" in archive_cmds due to quoting
3246 # problems, so we reset it completely
3247 verstring=
3248 ;;
3249 *)
3250 verstring="0.0"
3251 ;;
3252 esac
3253 if test "$need_version" = no; then
3254 versuffix=
3255 else
3256 versuffix=".0.0"
3257 fi
3258 fi
3259
3260 # Remove version info from name if versioning should be avoided
3261 if test "$avoid_version" = yes && test "$need_version" = no; then
3262 major=
3263 versuffix=
3264 verstring=""
3265 fi
3266
3267 # Check to see if the archive will have undefined symbols.
3268 if test "$allow_undefined" = yes; then
3269 if test "$allow_undefined_flag" = unsupported; then
3270 $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2
3271 build_libtool_libs=no
3272 build_old_libs=yes
3273 fi
3274 else
3275 # Don't allow undefined symbols.
3276 allow_undefined_flag="$no_undefined_flag"
3277 fi
3278 fi
3279
3280 if test "$mode" != relink; then
3281 # Remove our outputs, but don't remove object files since they
3282 # may have been created when compiling PIC objects.
3283 removelist=
3284 tempremovelist=`$echo "$output_objdir/*"`
3285 for p in $tempremovelist; do
3286 case $p in
3287 *.$objext)
3288 ;;
3289 $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
3290 if test "X$precious_files_regex" != "X"; then
3291 if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
3292 then
3293 continue
3294 fi
3295 fi
3296 removelist="$removelist $p"
3297 ;;
3298 *) ;;
3299 esac
3300 done
3301 if test -n "$removelist"; then
3302 $show "${rm}r $removelist"
3303 $run ${rm}r $removelist
3304 fi
3305 fi
3306
3307 # Now set the variables for building old libraries.
3308 if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
3309 oldlibs="$oldlibs $output_objdir/$libname.$libext"
3310
3311 # Transform .lo files to .o files.
3312 oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
3313 fi
3314
3315 # Eliminate all temporary directories.
3316 for path in $notinst_path; do
3317 lib_search_path=`$echo "$lib_search_path " | ${SED} -e 's% $path % %g'`
3318 deplibs=`$echo "$deplibs " | ${SED} -e 's% -L$path % %g'`
3319 dependency_libs=`$echo "$dependency_libs " | ${SED} -e 's% -L$path % %g'`
3320 done
3321
3322 if test -n "$xrpath"; then
3323 # If the user specified any rpath flags, then add them.
3324 temp_xrpath=
3325 for libdir in $xrpath; do
3326 temp_xrpath="$temp_xrpath -R$libdir"
3327 case "$finalize_rpath " in
3328 *" $libdir "*) ;;
3329 *) finalize_rpath="$finalize_rpath $libdir" ;;
3330 esac
3331 done
3332 if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
3333 dependency_libs="$temp_xrpath $dependency_libs"
3334 fi
3335 fi
3336
3337 # Make sure dlfiles contains only unique files that won't be dlpreopened
3338 old_dlfiles="$dlfiles"
3339 dlfiles=
3340 for lib in $old_dlfiles; do
3341 case " $dlprefiles $dlfiles " in
3342 *" $lib "*) ;;
3343 *) dlfiles="$dlfiles $lib" ;;
3344 esac
3345 done
3346
3347 # Make sure dlprefiles contains only unique files
3348 old_dlprefiles="$dlprefiles"
3349 dlprefiles=
3350 for lib in $old_dlprefiles; do
3351 case "$dlprefiles " in
3352 *" $lib "*) ;;
3353 *) dlprefiles="$dlprefiles $lib" ;;
3354 esac
3355 done
3356
3357 if test "$build_libtool_libs" = yes; then
3358 if test -n "$rpath"; then
3359 case $host in
3360 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*)
3361 # these systems don't actually have a c library (as such)!
3362 ;;
3363 *-*-rhapsody* | *-*-darwin1.[012])
3364 # Rhapsody C library is in the System framework
3365 deplibs="$deplibs -framework System"
3366 ;;
3367 *-*-netbsd*)
3368 # Don't link with libc until the a.out ld.so is fixed.
3369 ;;
3370 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
3371 # Do not include libc due to us having libc/libc_r.
3372 test "X$arg" = "X-lc" && continue
3373 ;;
3374 *)
3375 # Add libc to deplibs on all other systems if necessary.
3376 if test "$build_libtool_need_lc" = "yes"; then
3377 deplibs="$deplibs -lc"
3378 fi
3379 ;;
3380 esac
3381 fi
3382
3383 # Transform deplibs into only deplibs that can be linked in shared.
3384 name_save=$name
3385 libname_save=$libname
3386 release_save=$release
3387 versuffix_save=$versuffix
3388 major_save=$major
3389 # I'm not sure if I'm treating the release correctly. I think
3390 # release should show up in the -l (ie -lgmp5) so we don't want to
3391 # add it in twice. Is that correct?
3392 release=""
3393 versuffix=""
3394 major=""
3395 newdeplibs=
3396 droppeddeps=no
3397 case $deplibs_check_method in
3398 pass_all)
3399 # Don't check for shared/static. Everything works.
3400 # This might be a little naive. We might want to check
3401 # whether the library exists or not. But this is on
3402 # osf3 & osf4 and I'm not really sure... Just
3403 # implementing what was already the behavior.
3404 newdeplibs=$deplibs
3405 ;;
3406 test_compile)
3407 # This code stresses the "libraries are programs" paradigm to its
3408 # limits. Maybe even breaks it. We compile a program, linking it
3409 # against the deplibs as a proxy for the library. Then we can check
3410 # whether they linked in statically or dynamically with ldd.
3411 $rm conftest.c
3412 cat > conftest.c <<EOF
3413 int main() { return 0; }
3414EOF
3415 $rm conftest
3416 $LTCC -o conftest conftest.c $deplibs
3417 if test "$?" -eq 0 ; then
3418 ldd_output=`ldd conftest`
3419 for i in $deplibs; do
3420 name=`expr $i : '-l\(.*\)'`
3421 # If $name is empty we are operating on a -L argument.
3422 if test "$name" != "" && test "$name" -ne "0"; then
3423 if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
3424 case " $predeps $postdeps " in
3425 *" $i "*)
3426 newdeplibs="$newdeplibs $i"
3427 i=""
3428 ;;
3429 esac
3430 fi
3431 if test -n "$i" ; then
3432 libname=`eval \\$echo \"$libname_spec\"`
3433 deplib_matches=`eval \\$echo \"$library_names_spec\"`
3434 set dummy $deplib_matches
3435 deplib_match=$2
3436 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
3437 newdeplibs="$newdeplibs $i"
3438 else
3439 droppeddeps=yes
3440 $echo
3441 $echo "*** Warning: dynamic linker does not accept needed library $i."
3442 $echo "*** I have the capability to make that library automatically link in when"
3443 $echo "*** you link to this library. But I can only do this if you have a"
3444 $echo "*** shared version of the library, which I believe you do not have"
3445 $echo "*** because a test_compile did reveal that the linker did not use it for"
3446 $echo "*** its dynamic dependency list that programs get resolved with at runtime."
3447 fi
3448 fi
3449 else
3450 newdeplibs="$newdeplibs $i"
3451 fi
3452 done
3453 else
3454 # Error occurred in the first compile. Let's try to salvage
3455 # the situation: Compile a separate program for each library.
3456 for i in $deplibs; do
3457 name=`expr $i : '-l\(.*\)'`
3458 # If $name is empty we are operating on a -L argument.
3459 if test "$name" != "" && test "$name" != "0"; then
3460 $rm conftest
3461 $LTCC -o conftest conftest.c $i
3462 # Did it work?
3463 if test "$?" -eq 0 ; then
3464 ldd_output=`ldd conftest`
3465 if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
3466 case " $predeps $postdeps " in
3467 *" $i "*)
3468 newdeplibs="$newdeplibs $i"
3469 i=""
3470 ;;
3471 esac
3472 fi
3473 if test -n "$i" ; then
3474 libname=`eval \\$echo \"$libname_spec\"`
3475 deplib_matches=`eval \\$echo \"$library_names_spec\"`
3476 set dummy $deplib_matches
3477 deplib_match=$2
3478 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
3479 newdeplibs="$newdeplibs $i"
3480 else
3481 droppeddeps=yes
3482 $echo
3483 $echo "*** Warning: dynamic linker does not accept needed library $i."
3484 $echo "*** I have the capability to make that library automatically link in when"
3485 $echo "*** you link to this library. But I can only do this if you have a"
3486 $echo "*** shared version of the library, which you do not appear to have"
3487 $echo "*** because a test_compile did reveal that the linker did not use this one"
3488 $echo "*** as a dynamic dependency that programs can get resolved with at runtime."
3489 fi
3490 fi
3491 else
3492 droppeddeps=yes
3493 $echo
3494 $echo "*** Warning! Library $i is needed by this library but I was not able to"
3495 $echo "*** make it link in! You will probably need to install it or some"
3496 $echo "*** library that it depends on before this library will be fully"
3497 $echo "*** functional. Installing it before continuing would be even better."
3498 fi
3499 else
3500 newdeplibs="$newdeplibs $i"
3501 fi
3502 done
3503 fi
3504 ;;
3505 file_magic*)
3506 set dummy $deplibs_check_method
3507 file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
3508 for a_deplib in $deplibs; do
3509 name=`expr $a_deplib : '-l\(.*\)'`
3510 # If $name is empty we are operating on a -L argument.
3511 if test "$name" != "" && test "$name" != "0"; then
3512 if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
3513 case " $predeps $postdeps " in
3514 *" $a_deplib "*)
3515 newdeplibs="$newdeplibs $a_deplib"
3516 a_deplib=""
3517 ;;
3518 esac
3519 fi
3520 if test -n "$a_deplib" ; then
3521 libname=`eval \\$echo \"$libname_spec\"`
3522 for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
3523 potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
3524 for potent_lib in $potential_libs; do
3525 # Follow soft links.
3526 if ls -lLd "$potent_lib" 2>/dev/null \
3527 | grep " -> " >/dev/null; then
3528 continue
3529 fi
3530 # The statement above tries to avoid entering an
3531 # endless loop below, in case of cyclic links.
3532 # We might still enter an endless loop, since a link
3533 # loop can be closed while we follow links,
3534 # but so what?
3535 potlib="$potent_lib"
3536 while test -h "$potlib" 2>/dev/null; do
3537 potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
3538 case $potliblink in
3539 [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
3540 *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
3541 esac
3542 done
3543 if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \
3544 | ${SED} 10q \
3545 | $EGREP "$file_magic_regex" > /dev/null; then
3546 newdeplibs="$newdeplibs $a_deplib"
3547 a_deplib=""
3548 break 2
3549 fi
3550 done
3551 done
3552 fi
3553 if test -n "$a_deplib" ; then
3554 droppeddeps=yes
3555 $echo
3556 $echo "*** Warning: linker path does not have real file for library $a_deplib."
3557 $echo "*** I have the capability to make that library automatically link in when"
3558 $echo "*** you link to this library. But I can only do this if you have a"
3559 $echo "*** shared version of the library, which you do not appear to have"
3560 $echo "*** because I did check the linker path looking for a file starting"
3561 if test -z "$potlib" ; then
3562 $echo "*** with $libname but no candidates were found. (...for file magic test)"
3563 else
3564 $echo "*** with $libname and none of the candidates passed a file format test"
3565 $echo "*** using a file magic. Last file checked: $potlib"
3566 fi
3567 fi
3568 else
3569 # Add a -L argument.
3570 newdeplibs="$newdeplibs $a_deplib"
3571 fi
3572 done # Gone through all deplibs.
3573 ;;
3574 match_pattern*)
3575 set dummy $deplibs_check_method
3576 match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
3577 for a_deplib in $deplibs; do
3578 name=`expr $a_deplib : '-l\(.*\)'`
3579 # If $name is empty we are operating on a -L argument.
3580 if test -n "$name" && test "$name" != "0"; then
3581 if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
3582 case " $predeps $postdeps " in
3583 *" $a_deplib "*)
3584 newdeplibs="$newdeplibs $a_deplib"
3585 a_deplib=""
3586 ;;
3587 esac
3588 fi
3589 if test -n "$a_deplib" ; then
3590 libname=`eval \\$echo \"$libname_spec\"`
3591 for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
3592 potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
3593 for potent_lib in $potential_libs; do
3594 potlib="$potent_lib" # see symlink-check above in file_magic test
3595 if eval $echo \"$potent_lib\" 2>/dev/null \
3596 | ${SED} 10q \
3597 | $EGREP "$match_pattern_regex" > /dev/null; then
3598 newdeplibs="$newdeplibs $a_deplib"
3599 a_deplib=""
3600 break 2
3601 fi
3602 done
3603 done
3604 fi
3605 if test -n "$a_deplib" ; then
3606 droppeddeps=yes
3607 $echo
3608 $echo "*** Warning: linker path does not have real file for library $a_deplib."
3609 $echo "*** I have the capability to make that library automatically link in when"
3610 $echo "*** you link to this library. But I can only do this if you have a"
3611 $echo "*** shared version of the library, which you do not appear to have"
3612 $echo "*** because I did check the linker path looking for a file starting"
3613 if test -z "$potlib" ; then
3614 $echo "*** with $libname but no candidates were found. (...for regex pattern test)"
3615 else
3616 $echo "*** with $libname and none of the candidates passed a file format test"
3617 $echo "*** using a regex pattern. Last file checked: $potlib"
3618 fi
3619 fi
3620 else
3621 # Add a -L argument.
3622 newdeplibs="$newdeplibs $a_deplib"
3623 fi
3624 done # Gone through all deplibs.
3625 ;;
3626 none | unknown | *)
3627 newdeplibs=""
3628 tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \
3629 -e 's/ -[LR][^ ]*//g'`
3630 if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
3631 for i in $predeps $postdeps ; do
3632 # can't use Xsed below, because $i might contain '/'
3633 tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"`
3634 done
3635 fi
3636 if $echo "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' \
3637 | grep . >/dev/null; then
3638 $echo
3639 if test "X$deplibs_check_method" = "Xnone"; then
3640 $echo "*** Warning: inter-library dependencies are not supported in this platform."
3641 else
3642 $echo "*** Warning: inter-library dependencies are not known to be supported."
3643 fi
3644 $echo "*** All declared inter-library dependencies are being dropped."
3645 droppeddeps=yes
3646 fi
3647 ;;
3648 esac
3649 versuffix=$versuffix_save
3650 major=$major_save
3651 release=$release_save
3652 libname=$libname_save
3653 name=$name_save
3654
3655 case $host in
3656 *-*-rhapsody* | *-*-darwin1.[012])
3657 # On Rhapsody replace the C library is the System framework
3658 newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'`
3659 ;;
3660 esac
3661
3662 if test "$droppeddeps" = yes; then
3663 if test "$module" = yes; then
3664 $echo
3665 $echo "*** Warning: libtool could not satisfy all declared inter-library"
3666 $echo "*** dependencies of module $libname. Therefore, libtool will create"
3667 $echo "*** a static module, that should work as long as the dlopening"
3668 $echo "*** application is linked with the -dlopen flag."
3669 if test -z "$global_symbol_pipe"; then
3670 $echo
3671 $echo "*** However, this would only work if libtool was able to extract symbol"
3672 $echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
3673 $echo "*** not find such a program. So, this module is probably useless."
3674 $echo "*** \`nm' from GNU binutils and a full rebuild may help."
3675 fi
3676 if test "$build_old_libs" = no; then
3677 oldlibs="$output_objdir/$libname.$libext"
3678 build_libtool_libs=module
3679 build_old_libs=yes
3680 else
3681 build_libtool_libs=no
3682 fi
3683 else
3684 $echo "*** The inter-library dependencies that have been dropped here will be"
3685 $echo "*** automatically added whenever a program is linked with this library"
3686 $echo "*** or is declared to -dlopen it."
3687
3688 if test "$allow_undefined" = no; then
3689 $echo
3690 $echo "*** Since this library must not contain undefined symbols,"
3691 $echo "*** because either the platform does not support them or"
3692 $echo "*** it was explicitly requested with -no-undefined,"
3693 $echo "*** libtool will only create a static version of it."
3694 if test "$build_old_libs" = no; then
3695 oldlibs="$output_objdir/$libname.$libext"
3696 build_libtool_libs=module
3697 build_old_libs=yes
3698 else
3699 build_libtool_libs=no
3700 fi
3701 fi
3702 fi
3703 fi
3704 # Done checking deplibs!
3705 deplibs=$newdeplibs
3706 fi
3707
3708 # All the library-specific variables (install_libdir is set above).
3709 library_names=
3710 old_library=
3711 dlname=
3712
3713 # Test again, we may have decided not to build it any more
3714 if test "$build_libtool_libs" = yes; then
3715 if test "$hardcode_into_libs" = yes; then
3716 # Hardcode the library paths
3717 hardcode_libdirs=
3718 dep_rpath=
3719 rpath="$finalize_rpath"
3720 test "$mode" != relink && rpath="$compile_rpath$rpath"
3721 for libdir in $rpath; do
3722 if test -n "$hardcode_libdir_flag_spec"; then
3723 if test -n "$hardcode_libdir_separator"; then
3724 if test -z "$hardcode_libdirs"; then
3725 hardcode_libdirs="$libdir"
3726 else
3727 # Just accumulate the unique libdirs.
3728 case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
3729 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
3730 ;;
3731 *)
3732 hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
3733 ;;
3734 esac
3735 fi
3736 else
3737 eval flag=\"$hardcode_libdir_flag_spec\"
3738 dep_rpath="$dep_rpath $flag"
3739 fi
3740 elif test -n "$runpath_var"; then
3741 case "$perm_rpath " in
3742 *" $libdir "*) ;;
3743 *) perm_rpath="$perm_rpath $libdir" ;;
3744 esac
3745 fi
3746 done
3747 # Substitute the hardcoded libdirs into the rpath.
3748 if test -n "$hardcode_libdir_separator" &&
3749 test -n "$hardcode_libdirs"; then
3750 libdir="$hardcode_libdirs"
3751 if test -n "$hardcode_libdir_flag_spec_ld"; then
3752 eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
3753 else
3754 eval dep_rpath=\"$hardcode_libdir_flag_spec\"
3755 fi
3756 fi
3757 if test -n "$runpath_var" && test -n "$perm_rpath"; then
3758 # We should set the runpath_var.
3759 rpath=
3760 for dir in $perm_rpath; do
3761 rpath="$rpath$dir:"
3762 done
3763 eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
3764 fi
3765 test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
3766 fi
3767
3768 shlibpath="$finalize_shlibpath"
3769 test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
3770 if test -n "$shlibpath"; then
3771 eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
3772 fi
3773
3774 # Get the real and link names of the library.
3775 eval shared_ext=\"$shrext_cmds\"
3776 eval library_names=\"$library_names_spec\"
3777 set dummy $library_names
3778 realname="$2"
3779 shift; shift
3780
3781 if test -n "$soname_spec"; then
3782 eval soname=\"$soname_spec\"
3783 else
3784 soname="$realname"
3785 fi
3786 if test -z "$dlname"; then
3787 dlname=$soname
3788 fi
3789
3790 lib="$output_objdir/$realname"
3791 for link
3792 do
3793 linknames="$linknames $link"
3794 done
3795
3796 # Use standard objects if they are pic
3797 test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
3798
3799 # Prepare the list of exported symbols
3800 if test -z "$export_symbols"; then
3801 if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
3802 $show "generating symbol list for \`$libname.la'"
3803 export_symbols="$output_objdir/$libname.exp"
3804 $run $rm $export_symbols
3805 cmds=$export_symbols_cmds
3806 save_ifs="$IFS"; IFS='~'
3807 for cmd in $cmds; do
3808 IFS="$save_ifs"
3809 eval cmd=\"$cmd\"
3810 if len=`expr "X$cmd" : ".*"` &&
3811 test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
3812 $show "$cmd"
3813 $run eval "$cmd" || exit $?
3814 skipped_export=false
3815 else
3816 # The command line is too long to execute in one step.
3817 $show "using reloadable object file for export list..."
3818 skipped_export=:
3819 # Break out early, otherwise skipped_export may be
3820 # set to false by a later but shorter cmd.
3821 break
3822 fi
3823 done
3824 IFS="$save_ifs"
3825 if test -n "$export_symbols_regex"; then
3826 $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\""
3827 $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
3828 $show "$mv \"${export_symbols}T\" \"$export_symbols\""
3829 $run eval '$mv "${export_symbols}T" "$export_symbols"'
3830 fi
3831 fi
3832 fi
3833
3834 if test -n "$export_symbols" && test -n "$include_expsyms"; then
3835 $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"'
3836 fi
3837
3838 tmp_deplibs=
3839 for test_deplib in $deplibs; do
3840 case " $convenience " in
3841 *" $test_deplib "*) ;;
3842 *)
3843 tmp_deplibs="$tmp_deplibs $test_deplib"
3844 ;;
3845 esac
3846 done
3847 deplibs="$tmp_deplibs"
3848
3849 if test -n "$convenience"; then
3850 if test -n "$whole_archive_flag_spec"; then
3851 save_libobjs=$libobjs
3852 eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
3853 else
3854 gentop="$output_objdir/${outputname}x"
3855 generated="$generated $gentop"
3856
3857 func_extract_archives $gentop $convenience
3858 libobjs="$libobjs $func_extract_archives_result"
3859 fi
3860 fi
3861
3862 if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
3863 eval flag=\"$thread_safe_flag_spec\"
3864 linker_flags="$linker_flags $flag"
3865 fi
3866
3867 # Make a backup of the uninstalled library when relinking
3868 if test "$mode" = relink; then
3869 $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $?
3870 fi
3871
3872 # Do each of the archive commands.
3873 if test "$module" = yes && test -n "$module_cmds" ; then
3874 if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
3875 eval test_cmds=\"$module_expsym_cmds\"
3876 cmds=$module_expsym_cmds
3877 else
3878 eval test_cmds=\"$module_cmds\"
3879 cmds=$module_cmds
3880 fi
3881 else
3882 if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
3883 eval test_cmds=\"$archive_expsym_cmds\"
3884 cmds=$archive_expsym_cmds
3885 else
3886 eval test_cmds=\"$archive_cmds\"
3887 cmds=$archive_cmds
3888 fi
3889 fi
3890
3891 if test "X$skipped_export" != "X:" &&
3892 len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
3893 test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
3894 :
3895 else
3896 # The command line is too long to link in one step, link piecewise.
3897 $echo "creating reloadable object files..."
3898
3899 # Save the value of $output and $libobjs because we want to
3900 # use them later. If we have whole_archive_flag_spec, we
3901 # want to use save_libobjs as it was before
3902 # whole_archive_flag_spec was expanded, because we can't
3903 # assume the linker understands whole_archive_flag_spec.
3904 # This may have to be revisited, in case too many
3905 # convenience libraries get linked in and end up exceeding
3906 # the spec.
3907 if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
3908 save_libobjs=$libobjs
3909 fi
3910 save_output=$output
3911 output_la=`$echo "X$output" | $Xsed -e "$basename"`
3912
3913 # Clear the reloadable object creation command queue and
3914 # initialize k to one.
3915 test_cmds=
3916 concat_cmds=
3917 objlist=
3918 delfiles=
3919 last_robj=
3920 k=1
3921 output=$output_objdir/$output_la-${k}.$objext
3922 # Loop over the list of objects to be linked.
3923 for obj in $save_libobjs
3924 do
3925 eval test_cmds=\"$reload_cmds $objlist $last_robj\"
3926 if test "X$objlist" = X ||
3927 { len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
3928 test "$len" -le "$max_cmd_len"; }; then
3929 objlist="$objlist $obj"
3930 else
3931 # The command $test_cmds is almost too long, add a
3932 # command to the queue.
3933 if test "$k" -eq 1 ; then
3934 # The first file doesn't have a previous command to add.
3935 eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
3936 else
3937 # All subsequent reloadable object files will link in
3938 # the last one created.
3939 eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\"
3940 fi
3941 last_robj=$output_objdir/$output_la-${k}.$objext
3942 k=`expr $k + 1`
3943 output=$output_objdir/$output_la-${k}.$objext
3944 objlist=$obj
3945 len=1
3946 fi
3947 done
3948 # Handle the remaining objects by creating one last
3949 # reloadable object file. All subsequent reloadable object
3950 # files will link in the last one created.
3951 test -z "$concat_cmds" || concat_cmds=$concat_cmds~
3952 eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
3953
3954 if ${skipped_export-false}; then
3955 $show "generating symbol list for \`$libname.la'"
3956 export_symbols="$output_objdir/$libname.exp"
3957 $run $rm $export_symbols
3958 libobjs=$output
3959 # Append the command to create the export file.
3960 eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\"
3961 fi
3962
3963 # Set up a command to remove the reloadable object files
3964 # after they are used.
3965 i=0
3966 while test "$i" -lt "$k"
3967 do
3968 i=`expr $i + 1`
3969 delfiles="$delfiles $output_objdir/$output_la-${i}.$objext"
3970 done
3971
3972 $echo "creating a temporary reloadable object file: $output"
3973
3974 # Loop through the commands generated above and execute them.
3975 save_ifs="$IFS"; IFS='~'
3976 for cmd in $concat_cmds; do
3977 IFS="$save_ifs"
3978 $show "$cmd"
3979 $run eval "$cmd" || exit $?
3980 done
3981 IFS="$save_ifs"
3982
3983 libobjs=$output
3984 # Restore the value of output.
3985 output=$save_output
3986
3987 if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
3988 eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
3989 fi
3990 # Expand the library linking commands again to reset the
3991 # value of $libobjs for piecewise linking.
3992
3993 # Do each of the archive commands.
3994 if test "$module" = yes && test -n "$module_cmds" ; then
3995 if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
3996 cmds=$module_expsym_cmds
3997 else
3998 cmds=$module_cmds
3999 fi
4000 else
4001 if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
4002 cmds=$archive_expsym_cmds
4003 else
4004 cmds=$archive_cmds
4005 fi
4006 fi
4007
4008 # Append the command to remove the reloadable object files
4009 # to the just-reset $cmds.
4010 eval cmds=\"\$cmds~\$rm $delfiles\"
4011 fi
4012 save_ifs="$IFS"; IFS='~'
4013 for cmd in $cmds; do
4014 IFS="$save_ifs"
4015 eval cmd=\"$cmd\"
4016 $show "$cmd"
4017 $run eval "$cmd" || {
4018 lt_exit=$?
4019
4020 # Restore the uninstalled library and exit
4021 if test "$mode" = relink; then
4022 $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)'
4023 fi
4024
4025 exit $lt_exit
4026 }
4027 done
4028 IFS="$save_ifs"
4029
4030 # Restore the uninstalled library and exit
4031 if test "$mode" = relink; then
4032 $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $?
4033
4034 if test -n "$convenience"; then
4035 if test -z "$whole_archive_flag_spec"; then
4036 $show "${rm}r $gentop"
4037 $run ${rm}r "$gentop"
4038 fi
4039 fi
4040
4041 exit $EXIT_SUCCESS
4042 fi
4043
4044 # Create links to the real library.
4045 for linkname in $linknames; do
4046 if test "$realname" != "$linkname"; then
4047 $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)"
4048 $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $?
4049 fi
4050 done
4051
4052 # If -module or -export-dynamic was specified, set the dlname.
4053 if test "$module" = yes || test "$export_dynamic" = yes; then
4054 # On all known operating systems, these are identical.
4055 dlname="$soname"
4056 fi
4057 fi
4058 ;;
4059
4060 obj)
4061 if test -n "$deplibs"; then
4062 $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2
4063 fi
4064
4065 if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
4066 $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2
4067 fi
4068
4069 if test -n "$rpath"; then
4070 $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2
4071 fi
4072
4073 if test -n "$xrpath"; then
4074 $echo "$modename: warning: \`-R' is ignored for objects" 1>&2
4075 fi
4076
4077 if test -n "$vinfo"; then
4078 $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2
4079 fi
4080
4081 if test -n "$release"; then
4082 $echo "$modename: warning: \`-release' is ignored for objects" 1>&2
4083 fi
4084
4085 case $output in
4086 *.lo)
4087 if test -n "$objs$old_deplibs"; then
4088 $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2
4089 exit $EXIT_FAILURE
4090 fi
4091 libobj="$output"
4092 obj=`$echo "X$output" | $Xsed -e "$lo2o"`
4093 ;;
4094 *)
4095 libobj=
4096 obj="$output"
4097 ;;
4098 esac
4099
4100 # Delete the old objects.
4101 $run $rm $obj $libobj
4102
4103 # Objects from convenience libraries. This assumes
4104 # single-version convenience libraries. Whenever we create
4105 # different ones for PIC/non-PIC, this we'll have to duplicate
4106 # the extraction.
4107 reload_conv_objs=
4108 gentop=
4109 # reload_cmds runs $LD directly, so let us get rid of
4110 # -Wl from whole_archive_flag_spec
4111 wl=
4112
4113 if test -n "$convenience"; then
4114 if test -n "$whole_archive_flag_spec"; then
4115 eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\"
4116 else
4117 gentop="$output_objdir/${obj}x"
4118 generated="$generated $gentop"
4119
4120 func_extract_archives $gentop $convenience
4121 reload_conv_objs="$reload_objs $func_extract_archives_result"
4122 fi
4123 fi
4124
4125 # Create the old-style object.
4126 reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
4127
4128 output="$obj"
4129 cmds=$reload_cmds
4130 save_ifs="$IFS"; IFS='~'
4131 for cmd in $cmds; do
4132 IFS="$save_ifs"
4133 eval cmd=\"$cmd\"
4134 $show "$cmd"
4135 $run eval "$cmd" || exit $?
4136 done
4137 IFS="$save_ifs"
4138
4139 # Exit if we aren't doing a library object file.
4140 if test -z "$libobj"; then
4141 if test -n "$gentop"; then
4142 $show "${rm}r $gentop"
4143 $run ${rm}r $gentop
4144 fi
4145
4146 exit $EXIT_SUCCESS
4147 fi
4148
4149 if test "$build_libtool_libs" != yes; then
4150 if test -n "$gentop"; then
4151 $show "${rm}r $gentop"
4152 $run ${rm}r $gentop
4153 fi
4154
4155 # Create an invalid libtool object if no PIC, so that we don't
4156 # accidentally link it into a program.
4157 # $show "echo timestamp > $libobj"
4158 # $run eval "echo timestamp > $libobj" || exit $?
4159 exit $EXIT_SUCCESS
4160 fi
4161
4162 if test -n "$pic_flag" || test "$pic_mode" != default; then
4163 # Only do commands if we really have different PIC objects.
4164 reload_objs="$libobjs $reload_conv_objs"
4165 output="$libobj"
4166 cmds=$reload_cmds
4167 save_ifs="$IFS"; IFS='~'
4168 for cmd in $cmds; do
4169 IFS="$save_ifs"
4170 eval cmd=\"$cmd\"
4171 $show "$cmd"
4172 $run eval "$cmd" || exit $?
4173 done
4174 IFS="$save_ifs"
4175 fi
4176
4177 if test -n "$gentop"; then
4178 $show "${rm}r $gentop"
4179 $run ${rm}r $gentop
4180 fi
4181
4182 exit $EXIT_SUCCESS
4183 ;;
4184
4185 prog)
4186 case $host in
4187 *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;;
4188 esac
4189 if test -n "$vinfo"; then
4190 $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2
4191 fi
4192
4193 if test -n "$release"; then
4194 $echo "$modename: warning: \`-release' is ignored for programs" 1>&2
4195 fi
4196
4197 if test "$preload" = yes; then
4198 if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown &&
4199 test "$dlopen_self_static" = unknown; then
4200 $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support."
4201 fi
4202 fi
4203
4204 case $host in
4205 *-*-rhapsody* | *-*-darwin1.[012])
4206 # On Rhapsody replace the C library is the System framework
4207 compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
4208 finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
4209 ;;
4210 esac
4211
4212 case $host in
4213 *darwin*)
4214 # Don't allow lazy linking, it breaks C++ global constructors
4215 if test "$tagname" = CXX ; then
4216 compile_command="$compile_command ${wl}-bind_at_load"
4217 finalize_command="$finalize_command ${wl}-bind_at_load"
4218 fi
4219 ;;
4220 esac
4221
4222 compile_command="$compile_command $compile_deplibs"
4223 finalize_command="$finalize_command $finalize_deplibs"
4224
4225 if test -n "$rpath$xrpath"; then
4226 # If the user specified any rpath flags, then add them.
4227 for libdir in $rpath $xrpath; do
4228 # This is the magic to use -rpath.
4229 case "$finalize_rpath " in
4230 *" $libdir "*) ;;
4231 *) finalize_rpath="$finalize_rpath $libdir" ;;
4232 esac
4233 done
4234 fi
4235
4236 # Now hardcode the library paths
4237 rpath=
4238 hardcode_libdirs=
4239 for libdir in $compile_rpath $finalize_rpath; do
4240 if test -n "$hardcode_libdir_flag_spec"; then
4241 if test -n "$hardcode_libdir_separator"; then
4242 if test -z "$hardcode_libdirs"; then
4243 hardcode_libdirs="$libdir"
4244 else
4245 # Just accumulate the unique libdirs.
4246 case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
4247 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
4248 ;;
4249 *)
4250 hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
4251 ;;
4252 esac
4253 fi
4254 else
4255 eval flag=\"$hardcode_libdir_flag_spec\"
4256 rpath="$rpath $flag"
4257 fi
4258 elif test -n "$runpath_var"; then
4259 case "$perm_rpath " in
4260 *" $libdir "*) ;;
4261 *) perm_rpath="$perm_rpath $libdir" ;;
4262 esac
4263 fi
4264 case $host in
4265 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
4266 case :$dllsearchpath: in
4267 *":$libdir:"*) ;;
4268 *) dllsearchpath="$dllsearchpath:$libdir";;
4269 esac
4270 ;;
4271 esac
4272 done
4273 # Substitute the hardcoded libdirs into the rpath.
4274 if test -n "$hardcode_libdir_separator" &&
4275 test -n "$hardcode_libdirs"; then
4276 libdir="$hardcode_libdirs"
4277 eval rpath=\" $hardcode_libdir_flag_spec\"
4278 fi
4279 compile_rpath="$rpath"
4280
4281 rpath=
4282 hardcode_libdirs=
4283 for libdir in $finalize_rpath; do
4284 if test -n "$hardcode_libdir_flag_spec"; then
4285 if test -n "$hardcode_libdir_separator"; then
4286 if test -z "$hardcode_libdirs"; then
4287 hardcode_libdirs="$libdir"
4288 else
4289 # Just accumulate the unique libdirs.
4290 case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
4291 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
4292 ;;
4293 *)
4294 hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
4295 ;;
4296 esac
4297 fi
4298 else
4299 eval flag=\"$hardcode_libdir_flag_spec\"
4300 rpath="$rpath $flag"
4301 fi
4302 elif test -n "$runpath_var"; then
4303 case "$finalize_perm_rpath " in
4304 *" $libdir "*) ;;
4305 *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
4306 esac
4307 fi
4308 done
4309 # Substitute the hardcoded libdirs into the rpath.
4310 if test -n "$hardcode_libdir_separator" &&
4311 test -n "$hardcode_libdirs"; then
4312 libdir="$hardcode_libdirs"
4313 eval rpath=\" $hardcode_libdir_flag_spec\"
4314 fi
4315 finalize_rpath="$rpath"
4316
4317 if test -n "$libobjs" && test "$build_old_libs" = yes; then
4318 # Transform all the library objects into standard objects.
4319 compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
4320 finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
4321 fi
4322
4323 dlsyms=
4324 if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
4325 if test -n "$NM" && test -n "$global_symbol_pipe"; then
4326 dlsyms="${outputname}S.c"
4327 else
4328 $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2
4329 fi
4330 fi
4331
4332 if test -n "$dlsyms"; then
4333 case $dlsyms in
4334 "") ;;
4335 *.c)
4336 # Discover the nlist of each of the dlfiles.
4337 nlist="$output_objdir/${outputname}.nm"
4338
4339 $show "$rm $nlist ${nlist}S ${nlist}T"
4340 $run $rm "$nlist" "${nlist}S" "${nlist}T"
4341
4342 # Parse the name list into a source file.
4343 $show "creating $output_objdir/$dlsyms"
4344
4345 test -z "$run" && $echo > "$output_objdir/$dlsyms" "\
4346/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */
4347/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */
4348
4349#ifdef __cplusplus
4350extern \"C\" {
4351#endif
4352
4353/* Prevent the only kind of declaration conflicts we can make. */
4354#define lt_preloaded_symbols some_other_symbol
4355
4356/* External symbol declarations for the compiler. */\
4357"
4358
4359 if test "$dlself" = yes; then
4360 $show "generating symbol list for \`$output'"
4361
4362 test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist"
4363
4364 # Add our own program objects to the symbol list.
4365 progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
4366 for arg in $progfiles; do
4367 $show "extracting global C symbols from \`$arg'"
4368 $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
4369 done
4370
4371 if test -n "$exclude_expsyms"; then
4372 $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
4373 $run eval '$mv "$nlist"T "$nlist"'
4374 fi
4375
4376 if test -n "$export_symbols_regex"; then
4377 $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
4378 $run eval '$mv "$nlist"T "$nlist"'
4379 fi
4380
4381 # Prepare the list of exported symbols
4382 if test -z "$export_symbols"; then
4383 export_symbols="$output_objdir/$outputname.exp"
4384 $run $rm $export_symbols
4385 $run eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
4386 else
4387 $run eval "${SED} -e 's/\([ ][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
4388 $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
4389 $run eval 'mv "$nlist"T "$nlist"'
4390 fi
4391 fi
4392
4393 for arg in $dlprefiles; do
4394 $show "extracting global C symbols from \`$arg'"
4395 name=`$echo "$arg" | ${SED} -e 's%^.*/%%'`
4396 $run eval '$echo ": $name " >> "$nlist"'
4397 $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
4398 done
4399
4400 if test -z "$run"; then
4401 # Make sure we have at least an empty file.
4402 test -f "$nlist" || : > "$nlist"
4403
4404 if test -n "$exclude_expsyms"; then
4405 $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
4406 $mv "$nlist"T "$nlist"
4407 fi
4408
4409 # Try sorting and uniquifying the output.
4410 if grep -v "^: " < "$nlist" |
4411 if sort -k 3 </dev/null >/dev/null 2>&1; then
4412 sort -k 3
4413 else
4414 sort +2
4415 fi |
4416 uniq > "$nlist"S; then
4417 :
4418 else
4419 grep -v "^: " < "$nlist" > "$nlist"S
4420 fi
4421
4422 if test -f "$nlist"S; then
4423 eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"'
4424 else
4425 $echo '/* NONE */' >> "$output_objdir/$dlsyms"
4426 fi
4427
4428 $echo >> "$output_objdir/$dlsyms" "\
4429
4430#undef lt_preloaded_symbols
4431
4432#if defined (__STDC__) && __STDC__
4433# define lt_ptr void *
4434#else
4435# define lt_ptr char *
4436# define const
4437#endif
4438
4439/* The mapping between symbol names and symbols. */
4440"
4441
4442 case $host in
4443 *cygwin* | *mingw* )
4444 $echo >> "$output_objdir/$dlsyms" "\
4445/* DATA imports from DLLs on WIN32 can't be const, because
4446 runtime relocations are performed -- see ld's documentation
4447 on pseudo-relocs */
4448struct {
4449"
4450 ;;
4451 * )
4452 $echo >> "$output_objdir/$dlsyms" "\
4453const struct {
4454"
4455 ;;
4456 esac
4457
4458
4459 $echo >> "$output_objdir/$dlsyms" "\
4460 const char *name;
4461 lt_ptr address;
4462}
4463lt_preloaded_symbols[] =
4464{\
4465"
4466
4467 eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms"
4468
4469 $echo >> "$output_objdir/$dlsyms" "\
4470 {0, (lt_ptr) 0}
4471};
4472
4473/* This works around a problem in FreeBSD linker */
4474#ifdef FREEBSD_WORKAROUND
4475static const void *lt_preloaded_setup() {
4476 return lt_preloaded_symbols;
4477}
4478#endif
4479
4480#ifdef __cplusplus
4481}
4482#endif\
4483"
4484 fi
4485
4486 pic_flag_for_symtable=
4487 case $host in
4488 # compiling the symbol table file with pic_flag works around
4489 # a FreeBSD bug that causes programs to crash when -lm is
4490 # linked before any other PIC object. But we must not use
4491 # pic_flag when linking with -static. The problem exists in
4492 # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
4493 *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
4494 case "$compile_command " in
4495 *" -static "*) ;;
4496 *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";;
4497 esac;;
4498 *-*-hpux*)
4499 case "$compile_command " in
4500 *" -static "*) ;;
4501 *) pic_flag_for_symtable=" $pic_flag";;
4502 esac
4503 esac
4504
4505 # Now compile the dynamic symbol file.
4506 $show "(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")"
4507 $run eval '(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $?
4508
4509 # Clean up the generated files.
4510 $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T"
4511 $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T"
4512
4513 # Transform the symbol file into the correct name.
4514 compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
4515 finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
4516 ;;
4517 *)
4518 $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
4519 exit $EXIT_FAILURE
4520 ;;
4521 esac
4522 else
4523 # We keep going just in case the user didn't refer to
4524 # lt_preloaded_symbols. The linker will fail if global_symbol_pipe
4525 # really was required.
4526
4527 # Nullify the symbol file.
4528 compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
4529 finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
4530 fi
4531
4532 if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
4533 # Replace the output file specification.
4534 compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
4535 link_command="$compile_command$compile_rpath"
4536
4537 # We have no uninstalled library dependencies, so finalize right now.
4538 $show "$link_command"
4539 $run eval "$link_command"
4540 status=$?
4541
4542 # Delete the generated files.
4543 if test -n "$dlsyms"; then
4544 $show "$rm $output_objdir/${outputname}S.${objext}"
4545 $run $rm "$output_objdir/${outputname}S.${objext}"
4546 fi
4547
4548 exit $status
4549 fi
4550
4551 if test -n "$shlibpath_var"; then
4552 # We should set the shlibpath_var
4553 rpath=
4554 for dir in $temp_rpath; do
4555 case $dir in
4556 [\\/]* | [A-Za-z]:[\\/]*)
4557 # Absolute path.
4558 rpath="$rpath$dir:"
4559 ;;
4560 *)
4561 # Relative path: add a thisdir entry.
4562 rpath="$rpath\$thisdir/$dir:"
4563 ;;
4564 esac
4565 done
4566 temp_rpath="$rpath"
4567 fi
4568
4569 if test -n "$compile_shlibpath$finalize_shlibpath"; then
4570 compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
4571 fi
4572 if test -n "$finalize_shlibpath"; then
4573 finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
4574 fi
4575
4576 compile_var=
4577 finalize_var=
4578 if test -n "$runpath_var"; then
4579 if test -n "$perm_rpath"; then
4580 # We should set the runpath_var.
4581 rpath=
4582 for dir in $perm_rpath; do
4583 rpath="$rpath$dir:"
4584 done
4585 compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
4586 fi
4587 if test -n "$finalize_perm_rpath"; then
4588 # We should set the runpath_var.
4589 rpath=
4590 for dir in $finalize_perm_rpath; do
4591 rpath="$rpath$dir:"
4592 done
4593 finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
4594 fi
4595 fi
4596
4597 if test "$no_install" = yes; then
4598 # We don't need to create a wrapper script.
4599 link_command="$compile_var$compile_command$compile_rpath"
4600 # Replace the output file specification.
4601 link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
4602 # Delete the old output file.
4603 $run $rm $output
4604 # Link the executable and exit
4605 $show "$link_command"
4606 $run eval "$link_command" || exit $?
4607 exit $EXIT_SUCCESS
4608 fi
4609
4610 if test "$hardcode_action" = relink; then
4611 # Fast installation is not supported
4612 link_command="$compile_var$compile_command$compile_rpath"
4613 relink_command="$finalize_var$finalize_command$finalize_rpath"
4614
4615 $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2
4616 $echo "$modename: \`$output' will be relinked during installation" 1>&2
4617 else
4618 if test "$fast_install" != no; then
4619 link_command="$finalize_var$compile_command$finalize_rpath"
4620 if test "$fast_install" = yes; then
4621 relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
4622 else
4623 # fast_install is set to needless
4624 relink_command=
4625 fi
4626 else
4627 link_command="$compile_var$compile_command$compile_rpath"
4628 relink_command="$finalize_var$finalize_command$finalize_rpath"
4629 fi
4630 fi
4631
4632 # Replace the output file specification.
4633 link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
4634
4635 # Delete the old output files.
4636 $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname
4637
4638 $show "$link_command"
4639 $run eval "$link_command" || exit $?
4640
4641 # Now create the wrapper script.
4642 $show "creating $output"
4643
4644 # Quote the relink command for shipping.
4645 if test -n "$relink_command"; then
4646 # Preserve any variables that may affect compiler behavior
4647 for var in $variables_saved_for_relink; do
4648 if eval test -z \"\${$var+set}\"; then
4649 relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
4650 elif eval var_value=\$$var; test -z "$var_value"; then
4651 relink_command="$var=; export $var; $relink_command"
4652 else
4653 var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
4654 relink_command="$var=\"$var_value\"; export $var; $relink_command"
4655 fi
4656 done
4657 relink_command="(cd `pwd`; $relink_command)"
4658 relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
4659 fi
4660
4661 # Quote $echo for shipping.
4662 if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then
4663 case $progpath in
4664 [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
4665 *) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
4666 esac
4667 qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"`
4668 else
4669 qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"`
4670 fi
4671
4672 # Only actually do things if our run command is non-null.
4673 if test -z "$run"; then
4674 # win32 will think the script is a binary if it has
4675 # a .exe suffix, so we strip it off here.
4676 case $output in
4677 *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;;
4678 esac
4679 # test for cygwin because mv fails w/o .exe extensions
4680 case $host in
4681 *cygwin*)
4682 exeext=.exe
4683 outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;;
4684 *) exeext= ;;
4685 esac
4686 case $host in
4687 *cygwin* | *mingw* )
4688 cwrappersource=`$echo ${objdir}/lt-${outputname}.c`
4689 cwrapper=`$echo ${output}.exe`
4690 $rm $cwrappersource $cwrapper
4691 trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
4692
4693 cat > $cwrappersource <<EOF
4694
4695/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
4696 Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
4697
4698 The $output program cannot be directly executed until all the libtool
4699 libraries that it depends on are installed.
4700
4701 This wrapper executable should never be moved out of the build directory.
4702 If it is, it will not operate correctly.
4703
4704 Currently, it simply execs the wrapper *script* "/bin/sh $output",
4705 but could eventually absorb all of the scripts functionality and
4706 exec $objdir/$outputname directly.
4707*/
4708EOF
4709 cat >> $cwrappersource<<"EOF"
4710#include <stdio.h>
4711#include <stdlib.h>
4712#include <unistd.h>
4713#include <malloc.h>
4714#include <stdarg.h>
4715#include <assert.h>
4716
4717#if defined(PATH_MAX)
4718# define LT_PATHMAX PATH_MAX
4719#elif defined(MAXPATHLEN)
4720# define LT_PATHMAX MAXPATHLEN
4721#else
4722# define LT_PATHMAX 1024
4723#endif
4724
4725#ifndef DIR_SEPARATOR
4726#define DIR_SEPARATOR '/'
4727#endif
4728
4729#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
4730 defined (__OS2__)
4731#define HAVE_DOS_BASED_FILE_SYSTEM
4732#ifndef DIR_SEPARATOR_2
4733#define DIR_SEPARATOR_2 '\\'
4734#endif
4735#endif
4736
4737#ifndef DIR_SEPARATOR_2
4738# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
4739#else /* DIR_SEPARATOR_2 */
4740# define IS_DIR_SEPARATOR(ch) \
4741 (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
4742#endif /* DIR_SEPARATOR_2 */
4743
4744#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type)))
4745#define XFREE(stale) do { \
4746 if (stale) { free ((void *) stale); stale = 0; } \
4747} while (0)
4748
4749const char *program_name = NULL;
4750
4751void * xmalloc (size_t num);
4752char * xstrdup (const char *string);
4753char * basename (const char *name);
4754char * fnqualify(const char *path);
4755char * strendzap(char *str, const char *pat);
4756void lt_fatal (const char *message, ...);
4757
4758int
4759main (int argc, char *argv[])
4760{
4761 char **newargz;
4762 int i;
4763
4764 program_name = (char *) xstrdup ((char *) basename (argv[0]));
4765 newargz = XMALLOC(char *, argc+2);
4766EOF
4767
4768 cat >> $cwrappersource <<EOF
4769 newargz[0] = "$SHELL";
4770EOF
4771
4772 cat >> $cwrappersource <<"EOF"
4773 newargz[1] = fnqualify(argv[0]);
4774 /* we know the script has the same name, without the .exe */
4775 /* so make sure newargz[1] doesn't end in .exe */
4776 strendzap(newargz[1],".exe");
4777 for (i = 1; i < argc; i++)
4778 newargz[i+1] = xstrdup(argv[i]);
4779 newargz[argc+1] = NULL;
4780EOF
4781
4782 cat >> $cwrappersource <<EOF
4783 execv("$SHELL",newargz);
4784EOF
4785
4786 cat >> $cwrappersource <<"EOF"
4787 return 127;
4788}
4789
4790void *
4791xmalloc (size_t num)
4792{
4793 void * p = (void *) malloc (num);
4794 if (!p)
4795 lt_fatal ("Memory exhausted");
4796
4797 return p;
4798}
4799
4800char *
4801xstrdup (const char *string)
4802{
4803 return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL
4804;
4805}
4806
4807char *
4808basename (const char *name)
4809{
4810 const char *base;
4811
4812#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
4813 /* Skip over the disk name in MSDOS pathnames. */
4814 if (isalpha (name[0]) && name[1] == ':')
4815 name += 2;
4816#endif
4817
4818 for (base = name; *name; name++)
4819 if (IS_DIR_SEPARATOR (*name))
4820 base = name + 1;
4821 return (char *) base;
4822}
4823
4824char *
4825fnqualify(const char *path)
4826{
4827 size_t size;
4828 char *p;
4829 char tmp[LT_PATHMAX + 1];
4830
4831 assert(path != NULL);
4832
4833 /* Is it qualified already? */
4834#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
4835 if (isalpha (path[0]) && path[1] == ':')
4836 return xstrdup (path);
4837#endif
4838 if (IS_DIR_SEPARATOR (path[0]))
4839 return xstrdup (path);
4840
4841 /* prepend the current directory */
4842 /* doesn't handle '~' */
4843 if (getcwd (tmp, LT_PATHMAX) == NULL)
4844 lt_fatal ("getcwd failed");
4845 size = strlen(tmp) + 1 + strlen(path) + 1; /* +2 for '/' and '\0' */
4846 p = XMALLOC(char, size);
4847 sprintf(p, "%s%c%s", tmp, DIR_SEPARATOR, path);
4848 return p;
4849}
4850
4851char *
4852strendzap(char *str, const char *pat)
4853{
4854 size_t len, patlen;
4855
4856 assert(str != NULL);
4857 assert(pat != NULL);
4858
4859 len = strlen(str);
4860 patlen = strlen(pat);
4861
4862 if (patlen <= len)
4863 {
4864 str += len - patlen;
4865 if (strcmp(str, pat) == 0)
4866 *str = '\0';
4867 }
4868 return str;
4869}
4870
4871static void
4872lt_error_core (int exit_status, const char * mode,
4873 const char * message, va_list ap)
4874{
4875 fprintf (stderr, "%s: %s: ", program_name, mode);
4876 vfprintf (stderr, message, ap);
4877 fprintf (stderr, ".\n");
4878
4879 if (exit_status >= 0)
4880 exit (exit_status);
4881}
4882
4883void
4884lt_fatal (const char *message, ...)
4885{
4886 va_list ap;
4887 va_start (ap, message);
4888 lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
4889 va_end (ap);
4890}
4891EOF
4892 # we should really use a build-platform specific compiler
4893 # here, but OTOH, the wrappers (shell script and this C one)
4894 # are only useful if you want to execute the "real" binary.
4895 # Since the "real" binary is built for $host, then this
4896 # wrapper might as well be built for $host, too.
4897 $run $LTCC -s -o $cwrapper $cwrappersource
4898 ;;
4899 esac
4900 $rm $output
4901 trap "$rm $output; exit $EXIT_FAILURE" 1 2 15
4902
4903 $echo > $output "\
4904#! $SHELL
4905
4906# $output - temporary wrapper script for $objdir/$outputname
4907# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
4908#
4909# The $output program cannot be directly executed until all the libtool
4910# libraries that it depends on are installed.
4911#
4912# This wrapper script should never be moved out of the build directory.
4913# If it is, it will not operate correctly.
4914
4915# Sed substitution that helps us do robust quoting. It backslashifies
4916# metacharacters that are still active within double-quoted strings.
4917Xsed='${SED} -e 1s/^X//'
4918sed_quote_subst='$sed_quote_subst'
4919
4920# The HP-UX ksh and POSIX shell print the target directory to stdout
4921# if CDPATH is set.
4922(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
4923
4924relink_command=\"$relink_command\"
4925
4926# This environment variable determines our operation mode.
4927if test \"\$libtool_install_magic\" = \"$magic\"; then
4928 # install mode needs the following variable:
4929 notinst_deplibs='$notinst_deplibs'
4930else
4931 # When we are sourced in execute mode, \$file and \$echo are already set.
4932 if test \"\$libtool_execute_magic\" != \"$magic\"; then
4933 echo=\"$qecho\"
4934 file=\"\$0\"
4935 # Make sure echo works.
4936 if test \"X\$1\" = X--no-reexec; then
4937 # Discard the --no-reexec flag, and continue.
4938 shift
4939 elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then
4940 # Yippee, \$echo works!
4941 :
4942 else
4943 # Restart under the correct shell, and then maybe \$echo will work.
4944 exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
4945 fi
4946 fi\
4947"
4948 $echo >> $output "\
4949
4950 # Find the directory that this script lives in.
4951 thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
4952 test \"x\$thisdir\" = \"x\$file\" && thisdir=.
4953
4954 # Follow symbolic links until we get to the real thisdir.
4955 file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
4956 while test -n \"\$file\"; do
4957 destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
4958
4959 # If there was a directory component, then change thisdir.
4960 if test \"x\$destdir\" != \"x\$file\"; then
4961 case \"\$destdir\" in
4962 [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
4963 *) thisdir=\"\$thisdir/\$destdir\" ;;
4964 esac
4965 fi
4966
4967 file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
4968 file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
4969 done
4970
4971 # Try to get the absolute directory name.
4972 absdir=\`cd \"\$thisdir\" && pwd\`
4973 test -n \"\$absdir\" && thisdir=\"\$absdir\"
4974"
4975
4976 if test "$fast_install" = yes; then
4977 $echo >> $output "\
4978 program=lt-'$outputname'$exeext
4979 progdir=\"\$thisdir/$objdir\"
4980
4981 if test ! -f \"\$progdir/\$program\" || \\
4982 { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
4983 test \"X\$file\" != \"X\$progdir/\$program\"; }; then
4984
4985 file=\"\$\$-\$program\"
4986
4987 if test ! -d \"\$progdir\"; then
4988 $mkdir \"\$progdir\"
4989 else
4990 $rm \"\$progdir/\$file\"
4991 fi"
4992
4993 $echo >> $output "\
4994
4995 # relink executable if necessary
4996 if test -n \"\$relink_command\"; then
4997 if relink_command_output=\`eval \$relink_command 2>&1\`; then :
4998 else
4999 $echo \"\$relink_command_output\" >&2
5000 $rm \"\$progdir/\$file\"
5001 exit $EXIT_FAILURE
5002 fi
5003 fi
5004
5005 $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
5006 { $rm \"\$progdir/\$program\";
5007 $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; }
5008 $rm \"\$progdir/\$file\"
5009 fi"
5010 else
5011 $echo >> $output "\
5012 program='$outputname'
5013 progdir=\"\$thisdir/$objdir\"
5014"
5015 fi
5016
5017 $echo >> $output "\
5018
5019 if test -f \"\$progdir/\$program\"; then"
5020
5021 # Export our shlibpath_var if we have one.
5022 if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
5023 $echo >> $output "\
5024 # Add our own library path to $shlibpath_var
5025 $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
5026
5027 # Some systems cannot cope with colon-terminated $shlibpath_var
5028 # The second colon is a workaround for a bug in BeOS R4 sed
5029 $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
5030
5031 export $shlibpath_var
5032"
5033 fi
5034
5035 # fixup the dll searchpath if we need to.
5036 if test -n "$dllsearchpath"; then
5037 $echo >> $output "\
5038 # Add the dll search path components to the executable PATH
5039 PATH=$dllsearchpath:\$PATH
5040"
5041 fi
5042
5043 $echo >> $output "\
5044 if test \"\$libtool_execute_magic\" != \"$magic\"; then
5045 # Run the actual program with our arguments.
5046"
5047 case $host in
5048 # Backslashes separate directories on plain windows
5049 *-*-mingw | *-*-os2*)
5050 $echo >> $output "\
5051 exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
5052"
5053 ;;
5054
5055 *)
5056 $echo >> $output "\
5057 exec \"\$progdir/\$program\" \${1+\"\$@\"}
5058"
5059 ;;
5060 esac
5061 $echo >> $output "\
5062 \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\"
5063 exit $EXIT_FAILURE
5064 fi
5065 else
5066 # The program doesn't exist.
5067 \$echo \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
5068 \$echo \"This script is just a wrapper for \$program.\" 1>&2
5069 $echo \"See the $PACKAGE documentation for more information.\" 1>&2
5070 exit $EXIT_FAILURE
5071 fi
5072fi\
5073"
5074 chmod +x $output
5075 fi
5076 exit $EXIT_SUCCESS
5077 ;;
5078 esac
5079
5080 # See if we need to build an old-fashioned archive.
5081 for oldlib in $oldlibs; do
5082
5083 if test "$build_libtool_libs" = convenience; then
5084 oldobjs="$libobjs_save"
5085 addlibs="$convenience"
5086 build_libtool_libs=no
5087 else
5088 if test "$build_libtool_libs" = module; then
5089 oldobjs="$libobjs_save"
5090 build_libtool_libs=no
5091 else
5092 oldobjs="$old_deplibs $non_pic_objects"
5093 fi
5094 addlibs="$old_convenience"
5095 fi
5096
5097 if test -n "$addlibs"; then
5098 gentop="$output_objdir/${outputname}x"
5099 generated="$generated $gentop"
5100
5101 func_extract_archives $gentop $addlibs
5102 oldobjs="$oldobjs $func_extract_archives_result"
5103 fi
5104
5105 # Do each command in the archive commands.
5106 if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
5107 cmds=$old_archive_from_new_cmds
5108 else
5109 # POSIX demands no paths to be encoded in archives. We have
5110 # to avoid creating archives with duplicate basenames if we
5111 # might have to extract them afterwards, e.g., when creating a
5112 # static archive out of a convenience library, or when linking
5113 # the entirety of a libtool archive into another (currently
5114 # not supported by libtool).
5115 if (for obj in $oldobjs
5116 do
5117 $echo "X$obj" | $Xsed -e 's%^.*/%%'
5118 done | sort | sort -uc >/dev/null 2>&1); then
5119 :
5120 else
5121 $echo "copying selected object files to avoid basename conflicts..."
5122
5123 if test -z "$gentop"; then
5124 gentop="$output_objdir/${outputname}x"
5125 generated="$generated $gentop"
5126
5127 $show "${rm}r $gentop"
5128 $run ${rm}r "$gentop"
5129 $show "$mkdir $gentop"
5130 $run $mkdir "$gentop"
5131 status=$?
5132 if test "$status" -ne 0 && test ! -d "$gentop"; then
5133 exit $status
5134 fi
5135 fi
5136
5137 save_oldobjs=$oldobjs
5138 oldobjs=
5139 counter=1
5140 for obj in $save_oldobjs
5141 do
5142 objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
5143 case " $oldobjs " in
5144 " ") oldobjs=$obj ;;
5145 *[\ /]"$objbase "*)
5146 while :; do
5147 # Make sure we don't pick an alternate name that also
5148 # overlaps.
5149 newobj=lt$counter-$objbase
5150 counter=`expr $counter + 1`
5151 case " $oldobjs " in
5152 *[\ /]"$newobj "*) ;;
5153 *) if test ! -f "$gentop/$newobj"; then break; fi ;;
5154 esac
5155 done
5156 $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
5157 $run ln "$obj" "$gentop/$newobj" ||
5158 $run cp "$obj" "$gentop/$newobj"
5159 oldobjs="$oldobjs $gentop/$newobj"
5160 ;;
5161 *) oldobjs="$oldobjs $obj" ;;
5162 esac
5163 done
5164 fi
5165
5166 eval cmds=\"$old_archive_cmds\"
5167
5168 if len=`expr "X$cmds" : ".*"` &&
5169 test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
5170 cmds=$old_archive_cmds
5171 else
5172 # the command line is too long to link in one step, link in parts
5173 $echo "using piecewise archive linking..."
5174 save_RANLIB=$RANLIB
5175 RANLIB=:
5176 objlist=
5177 concat_cmds=
5178 save_oldobjs=$oldobjs
5179
5180 # Is there a better way of finding the last object in the list?
5181 for obj in $save_oldobjs
5182 do
5183 last_oldobj=$obj
5184 done
5185 for obj in $save_oldobjs
5186 do
5187 oldobjs="$objlist $obj"
5188 objlist="$objlist $obj"
5189 eval test_cmds=\"$old_archive_cmds\"
5190 if len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
5191 test "$len" -le "$max_cmd_len"; then
5192 :
5193 else
5194 # the above command should be used before it gets too long
5195 oldobjs=$objlist
5196 if test "$obj" = "$last_oldobj" ; then
5197 RANLIB=$save_RANLIB
5198 fi
5199 test -z "$concat_cmds" || concat_cmds=$concat_cmds~
5200 eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
5201 objlist=
5202 fi
5203 done
5204 RANLIB=$save_RANLIB
5205 oldobjs=$objlist
5206 if test "X$oldobjs" = "X" ; then
5207 eval cmds=\"\$concat_cmds\"
5208 else
5209 eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
5210 fi
5211 fi
5212 fi
5213 save_ifs="$IFS"; IFS='~'
5214 for cmd in $cmds; do
5215 eval cmd=\"$cmd\"
5216 IFS="$save_ifs"
5217 $show "$cmd"
5218 $run eval "$cmd" || exit $?
5219 done
5220 IFS="$save_ifs"
5221 done
5222
5223 if test -n "$generated"; then
5224 $show "${rm}r$generated"
5225 $run ${rm}r$generated
5226 fi
5227
5228 # Now create the libtool archive.
5229 case $output in
5230 *.la)
5231 old_library=
5232 test "$build_old_libs" = yes && old_library="$libname.$libext"
5233 $show "creating $output"
5234
5235 # Preserve any variables that may affect compiler behavior
5236 for var in $variables_saved_for_relink; do
5237 if eval test -z \"\${$var+set}\"; then
5238 relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
5239 elif eval var_value=\$$var; test -z "$var_value"; then
5240 relink_command="$var=; export $var; $relink_command"
5241 else
5242 var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
5243 relink_command="$var=\"$var_value\"; export $var; $relink_command"
5244 fi
5245 done
5246 # Quote the link command for shipping.
5247 relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
5248 relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
5249 if test "$hardcode_automatic" = yes ; then
5250 relink_command=
5251 fi
5252
5253
5254 # Only create the output if not a dry run.
5255 if test -z "$run"; then
5256 for installed in no yes; do
5257 if test "$installed" = yes; then
5258 if test -z "$install_libdir"; then
5259 break
5260 fi
5261 output="$output_objdir/$outputname"i
5262 # Replace all uninstalled libtool libraries with the installed ones
5263 newdependency_libs=
5264 for deplib in $dependency_libs; do
5265 case $deplib in
5266 *.la)
5267 name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'`
5268 eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
5269 if test -z "$libdir"; then
5270 $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
5271 exit $EXIT_FAILURE
5272 fi
5273 newdependency_libs="$newdependency_libs $libdir/$name"
5274 ;;
5275 *) newdependency_libs="$newdependency_libs $deplib" ;;
5276 esac
5277 done
5278 dependency_libs="$newdependency_libs"
5279 newdlfiles=
5280 for lib in $dlfiles; do
5281 name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
5282 eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
5283 if test -z "$libdir"; then
5284 $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
5285 exit $EXIT_FAILURE
5286 fi
5287 newdlfiles="$newdlfiles $libdir/$name"
5288 done
5289 dlfiles="$newdlfiles"
5290 newdlprefiles=
5291 for lib in $dlprefiles; do
5292 name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
5293 eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
5294 if test -z "$libdir"; then
5295 $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
5296 exit $EXIT_FAILURE
5297 fi
5298 newdlprefiles="$newdlprefiles $libdir/$name"
5299 done
5300 dlprefiles="$newdlprefiles"
5301 else
5302 newdlfiles=
5303 for lib in $dlfiles; do
5304 case $lib in
5305 [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
5306 *) abs=`pwd`"/$lib" ;;
5307 esac
5308 newdlfiles="$newdlfiles $abs"
5309 done
5310 dlfiles="$newdlfiles"
5311 newdlprefiles=
5312 for lib in $dlprefiles; do
5313 case $lib in
5314 [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
5315 *) abs=`pwd`"/$lib" ;;
5316 esac
5317 newdlprefiles="$newdlprefiles $abs"
5318 done
5319 dlprefiles="$newdlprefiles"
5320 fi
5321 $rm $output
5322 # place dlname in correct position for cygwin
5323 tdlname=$dlname
5324 case $host,$output,$installed,$module,$dlname in
5325 *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
5326 esac
5327 $echo > $output "\
5328# $outputname - a libtool library file
5329# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
5330#
5331# Please DO NOT delete this file!
5332# It is necessary for linking the library.
5333
5334# The name that we can dlopen(3).
5335dlname='$tdlname'
5336
5337# Names of this library.
5338library_names='$library_names'
5339
5340# The name of the static archive.
5341old_library='$old_library'
5342
5343# Libraries that this one depends upon.
5344dependency_libs='$dependency_libs'
5345
5346# Version information for $libname.
5347current=$current
5348age=$age
5349revision=$revision
5350
5351# Is this an already installed library?
5352installed=$installed
5353
5354# Should we warn about portability when linking against -modules?
5355shouldnotlink=$module
5356
5357# Files to dlopen/dlpreopen
5358dlopen='$dlfiles'
5359dlpreopen='$dlprefiles'
5360
5361# Directory that this library needs to be installed in:
5362libdir='$install_libdir'"
5363 if test "$installed" = no && test "$need_relink" = yes; then
5364 $echo >> $output "\
5365relink_command=\"$relink_command\""
5366 fi
5367 done
5368 fi
5369
5370 # Do a symbolic link so that the libtool archive can be found in
5371 # LD_LIBRARY_PATH before the program is installed.
5372 $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)"
5373 $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $?
5374 ;;
5375 esac
5376 exit $EXIT_SUCCESS
5377 ;;
5378
5379 # libtool install mode
5380 install)
5381 modename="$modename: install"
5382
5383 # There may be an optional sh(1) argument at the beginning of
5384 # install_prog (especially on Windows NT).
5385 if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
5386 # Allow the use of GNU shtool's install command.
5387 $echo "X$nonopt" | grep shtool > /dev/null; then
5388 # Aesthetically quote it.
5389 arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
5390 case $arg in
5391 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
5392 arg="\"$arg\""
5393 ;;
5394 esac
5395 install_prog="$arg "
5396 arg="$1"
5397 shift
5398 else
5399 install_prog=
5400 arg=$nonopt
5401 fi
5402
5403 # The real first argument should be the name of the installation program.
5404 # Aesthetically quote it.
5405 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
5406 case $arg in
5407 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
5408 arg="\"$arg\""
5409 ;;
5410 esac
5411 install_prog="$install_prog$arg"
5412
5413 # We need to accept at least all the BSD install flags.
5414 dest=
5415 files=
5416 opts=
5417 prev=
5418 install_type=
5419 isdir=no
5420 stripme=
5421 for arg
5422 do
5423 if test -n "$dest"; then
5424 files="$files $dest"
5425 dest=$arg
5426 continue
5427 fi
5428
5429 case $arg in
5430 -d) isdir=yes ;;
5431 -f)
5432 case " $install_prog " in
5433 *[\\\ /]cp\ *) ;;
5434 *) prev=$arg ;;
5435 esac
5436 ;;
5437 -g | -m | -o) prev=$arg ;;
5438 -s)
5439 stripme=" -s"
5440 continue
5441 ;;
5442 -*)
5443 ;;
5444 *)
5445 # If the previous option needed an argument, then skip it.
5446 if test -n "$prev"; then
5447 prev=
5448 else
5449 dest=$arg
5450 continue
5451 fi
5452 ;;
5453 esac
5454
5455 # Aesthetically quote the argument.
5456 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
5457 case $arg in
5458 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
5459 arg="\"$arg\""
5460 ;;
5461 esac
5462 install_prog="$install_prog $arg"
5463 done
5464
5465 if test -z "$install_prog"; then
5466 $echo "$modename: you must specify an install program" 1>&2
5467 $echo "$help" 1>&2
5468 exit $EXIT_FAILURE
5469 fi
5470
5471 if test -n "$prev"; then
5472 $echo "$modename: the \`$prev' option requires an argument" 1>&2
5473 $echo "$help" 1>&2
5474 exit $EXIT_FAILURE
5475 fi
5476
5477 if test -z "$files"; then
5478 if test -z "$dest"; then
5479 $echo "$modename: no file or destination specified" 1>&2
5480 else
5481 $echo "$modename: you must specify a destination" 1>&2
5482 fi
5483 $echo "$help" 1>&2
5484 exit $EXIT_FAILURE
5485 fi
5486
5487 # Strip any trailing slash from the destination.
5488 dest=`$echo "X$dest" | $Xsed -e 's%/$%%'`
5489
5490 # Check to see that the destination is a directory.
5491 test -d "$dest" && isdir=yes
5492 if test "$isdir" = yes; then
5493 destdir="$dest"
5494 destname=
5495 else
5496 destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'`
5497 test "X$destdir" = "X$dest" && destdir=.
5498 destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'`
5499
5500 # Not a directory, so check to see that there is only one file specified.
5501 set dummy $files
5502 if test "$#" -gt 2; then
5503 $echo "$modename: \`$dest' is not a directory" 1>&2
5504 $echo "$help" 1>&2
5505 exit $EXIT_FAILURE
5506 fi
5507 fi
5508 case $destdir in
5509 [\\/]* | [A-Za-z]:[\\/]*) ;;
5510 *)
5511 for file in $files; do
5512 case $file in
5513 *.lo) ;;
5514 *)
5515 $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2
5516 $echo "$help" 1>&2
5517 exit $EXIT_FAILURE
5518 ;;
5519 esac
5520 done
5521 ;;
5522 esac
5523
5524 # This variable tells wrapper scripts just to set variables rather
5525 # than running their programs.
5526 libtool_install_magic="$magic"
5527
5528 staticlibs=
5529 future_libdirs=
5530 current_libdirs=
5531 for file in $files; do
5532
5533 # Do each installation.
5534 case $file in
5535 *.$libext)
5536 # Do the static libraries later.
5537 staticlibs="$staticlibs $file"
5538 ;;
5539
5540 *.la)
5541 # Check to see that this really is a libtool archive.
5542 if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
5543 else
5544 $echo "$modename: \`$file' is not a valid libtool archive" 1>&2
5545 $echo "$help" 1>&2
5546 exit $EXIT_FAILURE
5547 fi
5548
5549 library_names=
5550 old_library=
5551 relink_command=
5552 # If there is no directory component, then add one.
5553 case $file in
5554 */* | *\\*) . $file ;;
5555 *) . ./$file ;;
5556 esac
5557
5558 # Add the libdir to current_libdirs if it is the destination.
5559 if test "X$destdir" = "X$libdir"; then
5560 case "$current_libdirs " in
5561 *" $libdir "*) ;;
5562 *) current_libdirs="$current_libdirs $libdir" ;;
5563 esac
5564 else
5565 # Note the libdir as a future libdir.
5566 case "$future_libdirs " in
5567 *" $libdir "*) ;;
5568 *) future_libdirs="$future_libdirs $libdir" ;;
5569 esac
5570 fi
5571
5572 dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/
5573 test "X$dir" = "X$file/" && dir=
5574 dir="$dir$objdir"
5575
5576 if test -n "$relink_command"; then
5577 # Determine the prefix the user has applied to our future dir.
5578 inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"`
5579
5580 # Don't allow the user to place us outside of our expected
5581 # location b/c this prevents finding dependent libraries that
5582 # are installed to the same prefix.
5583 # At present, this check doesn't affect windows .dll's that
5584 # are installed into $libdir/../bin (currently, that works fine)
5585 # but it's something to keep an eye on.
5586 if test "$inst_prefix_dir" = "$destdir"; then
5587 $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2
5588 exit $EXIT_FAILURE
5589 fi
5590
5591 if test -n "$inst_prefix_dir"; then
5592 # Stick the inst_prefix_dir data into the link command.
5593 relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
5594 else
5595 relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
5596 fi
5597
5598 $echo "$modename: warning: relinking \`$file'" 1>&2
5599 $show "$relink_command"
5600 if $run eval "$relink_command"; then :
5601 else
5602 $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
5603 exit $EXIT_FAILURE
5604 fi
5605 fi
5606
5607 # See the names of the shared library.
5608 set dummy $library_names
5609 if test -n "$2"; then
5610 realname="$2"
5611 shift
5612 shift
5613
5614 srcname="$realname"
5615 test -n "$relink_command" && srcname="$realname"T
5616
5617 # Install the shared library and build the symlinks.
5618 $show "$install_prog $dir/$srcname $destdir/$realname"
5619 $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $?
5620 if test -n "$stripme" && test -n "$striplib"; then
5621 $show "$striplib $destdir/$realname"
5622 $run eval "$striplib $destdir/$realname" || exit $?
5623 fi
5624
5625 if test "$#" -gt 0; then
5626 # Delete the old symlinks, and create new ones.
5627 # Try `ln -sf' first, because the `ln' binary might depend on
5628 # the symlink we replace! Solaris /bin/ln does not understand -f,
5629 # so we also need to try rm && ln -s.
5630 for linkname
5631 do
5632 if test "$linkname" != "$realname"; then
5633 $show "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })"
5634 $run eval "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })"
5635 fi
5636 done
5637 fi
5638
5639 # Do each command in the postinstall commands.
5640 lib="$destdir/$realname"
5641 cmds=$postinstall_cmds
5642 save_ifs="$IFS"; IFS='~'
5643 for cmd in $cmds; do
5644 IFS="$save_ifs"
5645 eval cmd=\"$cmd\"
5646 $show "$cmd"
5647 $run eval "$cmd" || {
5648 lt_exit=$?
5649
5650 # Restore the uninstalled library and exit
5651 if test "$mode" = relink; then
5652 $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)'
5653 fi
5654
5655 exit $lt_exit
5656 }
5657 done
5658 IFS="$save_ifs"
5659 fi
5660
5661 # Install the pseudo-library for information purposes.
5662 name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
5663 instname="$dir/$name"i
5664 $show "$install_prog $instname $destdir/$name"
5665 $run eval "$install_prog $instname $destdir/$name" || exit $?
5666
5667 # Maybe install the static library, too.
5668 test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
5669 ;;
5670
5671 *.lo)
5672 # Install (i.e. copy) a libtool object.
5673
5674 # Figure out destination file name, if it wasn't already specified.
5675 if test -n "$destname"; then
5676 destfile="$destdir/$destname"
5677 else
5678 destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
5679 destfile="$destdir/$destfile"
5680 fi
5681
5682 # Deduce the name of the destination old-style object file.
5683 case $destfile in
5684 *.lo)
5685 staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"`
5686 ;;
5687 *.$objext)
5688 staticdest="$destfile"
5689 destfile=
5690 ;;
5691 *)
5692 $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2
5693 $echo "$help" 1>&2
5694 exit $EXIT_FAILURE
5695 ;;
5696 esac
5697
5698 # Install the libtool object if requested.
5699 if test -n "$destfile"; then
5700 $show "$install_prog $file $destfile"
5701 $run eval "$install_prog $file $destfile" || exit $?
5702 fi
5703
5704 # Install the old object if enabled.
5705 if test "$build_old_libs" = yes; then
5706 # Deduce the name of the old-style object file.
5707 staticobj=`$echo "X$file" | $Xsed -e "$lo2o"`
5708
5709 $show "$install_prog $staticobj $staticdest"
5710 $run eval "$install_prog \$staticobj \$staticdest" || exit $?
5711 fi
5712 exit $EXIT_SUCCESS
5713 ;;
5714
5715 *)
5716 # Figure out destination file name, if it wasn't already specified.
5717 if test -n "$destname"; then
5718 destfile="$destdir/$destname"
5719 else
5720 destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
5721 destfile="$destdir/$destfile"
5722 fi
5723
5724 # If the file is missing, and there is a .exe on the end, strip it
5725 # because it is most likely a libtool script we actually want to
5726 # install
5727 stripped_ext=""
5728 case $file in
5729 *.exe)
5730 if test ! -f "$file"; then
5731 file=`$echo $file|${SED} 's,.exe$,,'`
5732 stripped_ext=".exe"
5733 fi
5734 ;;
5735 esac
5736
5737 # Do a test to see if this is really a libtool program.
5738 case $host in
5739 *cygwin*|*mingw*)
5740 wrapper=`$echo $file | ${SED} -e 's,.exe$,,'`
5741 ;;
5742 *)
5743 wrapper=$file
5744 ;;
5745 esac
5746 if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then
5747 notinst_deplibs=
5748 relink_command=
5749
5750 # Note that it is not necessary on cygwin/mingw to append a dot to
5751 # foo even if both foo and FILE.exe exist: automatic-append-.exe
5752 # behavior happens only for exec(3), not for open(2)! Also, sourcing
5753 # `FILE.' does not work on cygwin managed mounts.
5754 #
5755 # If there is no directory component, then add one.
5756 case $wrapper in
5757 */* | *\\*) . ${wrapper} ;;
5758 *) . ./${wrapper} ;;
5759 esac
5760
5761 # Check the variables that should have been set.
5762 if test -z "$notinst_deplibs"; then
5763 $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2
5764 exit $EXIT_FAILURE
5765 fi
5766
5767 finalize=yes
5768 for lib in $notinst_deplibs; do
5769 # Check to see that each library is installed.
5770 libdir=
5771 if test -f "$lib"; then
5772 # If there is no directory component, then add one.
5773 case $lib in
5774 */* | *\\*) . $lib ;;
5775 *) . ./$lib ;;
5776 esac
5777 fi
5778 libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
5779 if test -n "$libdir" && test ! -f "$libfile"; then
5780 $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2
5781 finalize=no
5782 fi
5783 done
5784
5785 relink_command=
5786 # Note that it is not necessary on cygwin/mingw to append a dot to
5787 # foo even if both foo and FILE.exe exist: automatic-append-.exe
5788 # behavior happens only for exec(3), not for open(2)! Also, sourcing
5789 # `FILE.' does not work on cygwin managed mounts.
5790 #
5791 # If there is no directory component, then add one.
5792 case $wrapper in
5793 */* | *\\*) . ${wrapper} ;;
5794 *) . ./${wrapper} ;;
5795 esac
5796
5797 outputname=
5798 if test "$fast_install" = no && test -n "$relink_command"; then
5799 if test "$finalize" = yes && test -z "$run"; then
5800 tmpdir="/tmp"
5801 test -n "$TMPDIR" && tmpdir="$TMPDIR"
5802 tmpdir="$tmpdir/libtool-$$"
5803 save_umask=`umask`
5804 umask 0077
5805 if $mkdir "$tmpdir"; then
5806 umask $save_umask
5807 else
5808 umask $save_umask
5809 $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2
5810 continue
5811 fi
5812 file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'`
5813 outputname="$tmpdir/$file"
5814 # Replace the output file specification.
5815 relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
5816
5817 $show "$relink_command"
5818 if $run eval "$relink_command"; then :
5819 else
5820 $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
5821 ${rm}r "$tmpdir"
5822 continue
5823 fi
5824 file="$outputname"
5825 else
5826 $echo "$modename: warning: cannot relink \`$file'" 1>&2
5827 fi
5828 else
5829 # Install the binary that we compiled earlier.
5830 file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
5831 fi
5832 fi
5833
5834 # remove .exe since cygwin /usr/bin/install will append another
5835 # one anyway
5836 case $install_prog,$host in
5837 */usr/bin/install*,*cygwin*)
5838 case $file:$destfile in
5839 *.exe:*.exe)
5840 # this is ok
5841 ;;
5842 *.exe:*)
5843 destfile=$destfile.exe
5844 ;;
5845 *:*.exe)
5846 destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'`
5847 ;;
5848 esac
5849 ;;
5850 esac
5851 $show "$install_prog$stripme $file $destfile"
5852 $run eval "$install_prog\$stripme \$file \$destfile" || exit $?
5853 test -n "$outputname" && ${rm}r "$tmpdir"
5854 ;;
5855 esac
5856 done
5857
5858 for file in $staticlibs; do
5859 name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
5860
5861 # Set up the ranlib parameters.
5862 oldlib="$destdir/$name"
5863
5864 $show "$install_prog $file $oldlib"
5865 $run eval "$install_prog \$file \$oldlib" || exit $?
5866
5867 if test -n "$stripme" && test -n "$old_striplib"; then
5868 $show "$old_striplib $oldlib"
5869 $run eval "$old_striplib $oldlib" || exit $?
5870 fi
5871
5872 # Do each command in the postinstall commands.
5873 cmds=$old_postinstall_cmds
5874 save_ifs="$IFS"; IFS='~'
5875 for cmd in $cmds; do
5876 IFS="$save_ifs"
5877 eval cmd=\"$cmd\"
5878 $show "$cmd"
5879 $run eval "$cmd" || exit $?
5880 done
5881 IFS="$save_ifs"
5882 done
5883
5884 if test -n "$future_libdirs"; then
5885 $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2
5886 fi
5887
5888 if test -n "$current_libdirs"; then
5889 # Maybe just do a dry run.
5890 test -n "$run" && current_libdirs=" -n$current_libdirs"
5891 exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
5892 else
5893 exit $EXIT_SUCCESS
5894 fi
5895 ;;
5896
5897 # libtool finish mode
5898 finish)
5899 modename="$modename: finish"
5900 libdirs="$nonopt"
5901 admincmds=
5902
5903 if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
5904 for dir
5905 do
5906 libdirs="$libdirs $dir"
5907 done
5908
5909 for libdir in $libdirs; do
5910 if test -n "$finish_cmds"; then
5911 # Do each command in the finish commands.
5912 cmds=$finish_cmds
5913 save_ifs="$IFS"; IFS='~'
5914 for cmd in $cmds; do
5915 IFS="$save_ifs"
5916 eval cmd=\"$cmd\"
5917 $show "$cmd"
5918 $run eval "$cmd" || admincmds="$admincmds
5919 $cmd"
5920 done
5921 IFS="$save_ifs"
5922 fi
5923 if test -n "$finish_eval"; then
5924 # Do the single finish_eval.
5925 eval cmds=\"$finish_eval\"
5926 $run eval "$cmds" || admincmds="$admincmds
5927 $cmds"
5928 fi
5929 done
5930 fi
5931
5932 # Exit here if they wanted silent mode.
5933 test "$show" = : && exit $EXIT_SUCCESS
5934
5935 $echo "----------------------------------------------------------------------"
5936 $echo "Libraries have been installed in:"
5937 for libdir in $libdirs; do
5938 $echo " $libdir"
5939 done
5940 $echo
5941 $echo "If you ever happen to want to link against installed libraries"
5942 $echo "in a given directory, LIBDIR, you must either use libtool, and"
5943 $echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
5944 $echo "flag during linking and do at least one of the following:"
5945 if test -n "$shlibpath_var"; then
5946 $echo " - add LIBDIR to the \`$shlibpath_var' environment variable"
5947 $echo " during execution"
5948 fi
5949 if test -n "$runpath_var"; then
5950 $echo " - add LIBDIR to the \`$runpath_var' environment variable"
5951 $echo " during linking"
5952 fi
5953 if test -n "$hardcode_libdir_flag_spec"; then
5954 libdir=LIBDIR
5955 eval flag=\"$hardcode_libdir_flag_spec\"
5956
5957 $echo " - use the \`$flag' linker flag"
5958 fi
5959 if test -n "$admincmds"; then
5960 $echo " - have your system administrator run these commands:$admincmds"
5961 fi
5962 if test -f /etc/ld.so.conf; then
5963 $echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
5964 fi
5965 $echo
5966 $echo "See any operating system documentation about shared libraries for"
5967 $echo "more information, such as the ld(1) and ld.so(8) manual pages."
5968 $echo "----------------------------------------------------------------------"
5969 exit $EXIT_SUCCESS
5970 ;;
5971
5972 # libtool execute mode
5973 execute)
5974 modename="$modename: execute"
5975
5976 # The first argument is the command name.
5977 cmd="$nonopt"
5978 if test -z "$cmd"; then
5979 $echo "$modename: you must specify a COMMAND" 1>&2
5980 $echo "$help"
5981 exit $EXIT_FAILURE
5982 fi
5983
5984 # Handle -dlopen flags immediately.
5985 for file in $execute_dlfiles; do
5986 if test ! -f "$file"; then
5987 $echo "$modename: \`$file' is not a file" 1>&2
5988 $echo "$help" 1>&2
5989 exit $EXIT_FAILURE
5990 fi
5991
5992 dir=
5993 case $file in
5994 *.la)
5995 # Check to see that this really is a libtool archive.
5996 if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
5997 else
5998 $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
5999 $echo "$help" 1>&2
6000 exit $EXIT_FAILURE
6001 fi
6002
6003 # Read the libtool library.
6004 dlname=
6005 library_names=
6006
6007 # If there is no directory component, then add one.
6008 case $file in
6009 */* | *\\*) . $file ;;
6010 *) . ./$file ;;
6011 esac
6012
6013 # Skip this library if it cannot be dlopened.
6014 if test -z "$dlname"; then
6015 # Warn if it was a shared library.
6016 test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'"
6017 continue
6018 fi
6019
6020 dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
6021 test "X$dir" = "X$file" && dir=.
6022
6023 if test -f "$dir/$objdir/$dlname"; then
6024 dir="$dir/$objdir"
6025 else
6026 $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
6027 exit $EXIT_FAILURE
6028 fi
6029 ;;
6030
6031 *.lo)
6032 # Just add the directory containing the .lo file.
6033 dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
6034 test "X$dir" = "X$file" && dir=.
6035 ;;
6036
6037 *)
6038 $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2
6039 continue
6040 ;;
6041 esac
6042
6043 # Get the absolute pathname.
6044 absdir=`cd "$dir" && pwd`
6045 test -n "$absdir" && dir="$absdir"
6046
6047 # Now add the directory to shlibpath_var.
6048 if eval "test -z \"\$$shlibpath_var\""; then
6049 eval "$shlibpath_var=\"\$dir\""
6050 else
6051 eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
6052 fi
6053 done
6054
6055 # This variable tells wrapper scripts just to set shlibpath_var
6056 # rather than running their programs.
6057 libtool_execute_magic="$magic"
6058
6059 # Check if any of the arguments is a wrapper script.
6060 args=
6061 for file
6062 do
6063 case $file in
6064 -*) ;;
6065 *)
6066 # Do a test to see if this is really a libtool program.
6067 if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
6068 # If there is no directory component, then add one.
6069 case $file in
6070 */* | *\\*) . $file ;;
6071 *) . ./$file ;;
6072 esac
6073
6074 # Transform arg to wrapped name.
6075 file="$progdir/$program"
6076 fi
6077 ;;
6078 esac
6079 # Quote arguments (to preserve shell metacharacters).
6080 file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"`
6081 args="$args \"$file\""
6082 done
6083
6084 if test -z "$run"; then
6085 if test -n "$shlibpath_var"; then
6086 # Export the shlibpath_var.
6087 eval "export $shlibpath_var"
6088 fi
6089
6090 # Restore saved environment variables
6091 if test "${save_LC_ALL+set}" = set; then
6092 LC_ALL="$save_LC_ALL"; export LC_ALL
6093 fi
6094 if test "${save_LANG+set}" = set; then
6095 LANG="$save_LANG"; export LANG
6096 fi
6097
6098 # Now prepare to actually exec the command.
6099 exec_cmd="\$cmd$args"
6100 else
6101 # Display what would be done.
6102 if test -n "$shlibpath_var"; then
6103 eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\""
6104 $echo "export $shlibpath_var"
6105 fi
6106 $echo "$cmd$args"
6107 exit $EXIT_SUCCESS
6108 fi
6109 ;;
6110
6111 # libtool clean and uninstall mode
6112 clean | uninstall)
6113 modename="$modename: $mode"
6114 rm="$nonopt"
6115 files=
6116 rmforce=
6117 exit_status=0
6118
6119 # This variable tells wrapper scripts just to set variables rather
6120 # than running their programs.
6121 libtool_install_magic="$magic"
6122
6123 for arg
6124 do
6125 case $arg in
6126 -f) rm="$rm $arg"; rmforce=yes ;;
6127 -*) rm="$rm $arg" ;;
6128 *) files="$files $arg" ;;
6129 esac
6130 done
6131
6132 if test -z "$rm"; then
6133 $echo "$modename: you must specify an RM program" 1>&2
6134 $echo "$help" 1>&2
6135 exit $EXIT_FAILURE
6136 fi
6137
6138 rmdirs=
6139
6140 origobjdir="$objdir"
6141 for file in $files; do
6142 dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
6143 if test "X$dir" = "X$file"; then
6144 dir=.
6145 objdir="$origobjdir"
6146 else
6147 objdir="$dir/$origobjdir"
6148 fi
6149 name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
6150 test "$mode" = uninstall && objdir="$dir"
6151
6152 # Remember objdir for removal later, being careful to avoid duplicates
6153 if test "$mode" = clean; then
6154 case " $rmdirs " in
6155 *" $objdir "*) ;;
6156 *) rmdirs="$rmdirs $objdir" ;;
6157 esac
6158 fi
6159
6160 # Don't error if the file doesn't exist and rm -f was used.
6161 if (test -L "$file") >/dev/null 2>&1 \
6162 || (test -h "$file") >/dev/null 2>&1 \
6163 || test -f "$file"; then
6164 :
6165 elif test -d "$file"; then
6166 exit_status=1
6167 continue
6168 elif test "$rmforce" = yes; then
6169 continue
6170 fi
6171
6172 rmfiles="$file"
6173
6174 case $name in
6175 *.la)
6176 # Possibly a libtool archive, so verify it.
6177 if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
6178 . $dir/$name
6179
6180 # Delete the libtool libraries and symlinks.
6181 for n in $library_names; do
6182 rmfiles="$rmfiles $objdir/$n"
6183 done
6184 test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
6185 test "$mode" = clean && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
6186
6187 if test "$mode" = uninstall; then
6188 if test -n "$library_names"; then
6189 # Do each command in the postuninstall commands.
6190 cmds=$postuninstall_cmds
6191 save_ifs="$IFS"; IFS='~'
6192 for cmd in $cmds; do
6193 IFS="$save_ifs"
6194 eval cmd=\"$cmd\"
6195 $show "$cmd"
6196 $run eval "$cmd"
6197 if test "$?" -ne 0 && test "$rmforce" != yes; then
6198 exit_status=1
6199 fi
6200 done
6201 IFS="$save_ifs"
6202 fi
6203
6204 if test -n "$old_library"; then
6205 # Do each command in the old_postuninstall commands.
6206 cmds=$old_postuninstall_cmds
6207 save_ifs="$IFS"; IFS='~'
6208 for cmd in $cmds; do
6209 IFS="$save_ifs"
6210 eval cmd=\"$cmd\"
6211 $show "$cmd"
6212 $run eval "$cmd"
6213 if test "$?" -ne 0 && test "$rmforce" != yes; then
6214 exit_status=1
6215 fi
6216 done
6217 IFS="$save_ifs"
6218 fi
6219 # FIXME: should reinstall the best remaining shared library.
6220 fi
6221 fi
6222 ;;
6223
6224 *.lo)
6225 # Possibly a libtool object, so verify it.
6226 if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
6227
6228 # Read the .lo file
6229 . $dir/$name
6230
6231 # Add PIC object to the list of files to remove.
6232 if test -n "$pic_object" \
6233 && test "$pic_object" != none; then
6234 rmfiles="$rmfiles $dir/$pic_object"
6235 fi
6236
6237 # Add non-PIC object to the list of files to remove.
6238 if test -n "$non_pic_object" \
6239 && test "$non_pic_object" != none; then
6240 rmfiles="$rmfiles $dir/$non_pic_object"
6241 fi
6242 fi
6243 ;;
6244
6245 *)
6246 if test "$mode" = clean ; then
6247 noexename=$name
6248 case $file in
6249 *.exe)
6250 file=`$echo $file|${SED} 's,.exe$,,'`
6251 noexename=`$echo $name|${SED} 's,.exe$,,'`
6252 # $file with .exe has already been added to rmfiles,
6253 # add $file without .exe
6254 rmfiles="$rmfiles $file"
6255 ;;
6256 esac
6257 # Do a test to see if this is a libtool program.
6258 if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
6259 relink_command=
6260 . $dir/$noexename
6261
6262 # note $name still contains .exe if it was in $file originally
6263 # as does the version of $file that was added into $rmfiles
6264 rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
6265 if test "$fast_install" = yes && test -n "$relink_command"; then
6266 rmfiles="$rmfiles $objdir/lt-$name"
6267 fi
6268 if test "X$noexename" != "X$name" ; then
6269 rmfiles="$rmfiles $objdir/lt-${noexename}.c"
6270 fi
6271 fi
6272 fi
6273 ;;
6274 esac
6275 $show "$rm $rmfiles"
6276 $run $rm $rmfiles || exit_status=1
6277 done
6278 objdir="$origobjdir"
6279
6280 # Try to remove the ${objdir}s in the directories where we deleted files
6281 for dir in $rmdirs; do
6282 if test -d "$dir"; then
6283 $show "rmdir $dir"
6284 $run rmdir $dir >/dev/null 2>&1
6285 fi
6286 done
6287
6288 exit $exit_status
6289 ;;
6290
6291 "")
6292 $echo "$modename: you must specify a MODE" 1>&2
6293 $echo "$generic_help" 1>&2
6294 exit $EXIT_FAILURE
6295 ;;
6296 esac
6297
6298 if test -z "$exec_cmd"; then
6299 $echo "$modename: invalid operation mode \`$mode'" 1>&2
6300 $echo "$generic_help" 1>&2
6301 exit $EXIT_FAILURE
6302 fi
6303fi # test -z "$show_help"
6304
6305if test -n "$exec_cmd"; then
6306 eval exec $exec_cmd
6307 exit $EXIT_FAILURE
6308fi
6309
6310# We need to display help for each of the modes.
6311case $mode in
6312"") $echo \
6313"Usage: $modename [OPTION]... [MODE-ARG]...
6314
6315Provide generalized library-building support services.
6316
6317 --config show all configuration variables
6318 --debug enable verbose shell tracing
6319-n, --dry-run display commands without modifying any files
6320 --features display basic configuration information and exit
6321 --finish same as \`--mode=finish'
6322 --help display this help message and exit
6323 --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS]
6324 --quiet same as \`--silent'
6325 --silent don't print informational messages
6326 --tag=TAG use configuration variables from tag TAG
6327 --version print version information
6328
6329MODE must be one of the following:
6330
6331 clean remove files from the build directory
6332 compile compile a source file into a libtool object
6333 execute automatically set library path, then run a program
6334 finish complete the installation of libtool libraries
6335 install install libraries or executables
6336 link create a library or an executable
6337 uninstall remove libraries from an installed directory
6338
6339MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for
6340a more detailed description of MODE.
6341
6342Report bugs to <bug-libtool@gnu.org>."
6343 exit $EXIT_SUCCESS
6344 ;;
6345
6346clean)
6347 $echo \
6348"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
6349
6350Remove files from the build directory.
6351
6352RM is the name of the program to use to delete files associated with each FILE
6353(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
6354to RM.
6355
6356If FILE is a libtool library, object or program, all the files associated
6357with it are deleted. Otherwise, only FILE itself is deleted using RM."
6358 ;;
6359
6360compile)
6361 $echo \
6362"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
6363
6364Compile a source file into a libtool library object.
6365
6366This mode accepts the following additional options:
6367
6368 -o OUTPUT-FILE set the output file name to OUTPUT-FILE
6369 -prefer-pic try to building PIC objects only
6370 -prefer-non-pic try to building non-PIC objects only
6371 -static always build a \`.o' file suitable for static linking
6372
6373COMPILE-COMMAND is a command to be used in creating a \`standard' object file
6374from the given SOURCEFILE.
6375
6376The output file name is determined by removing the directory component from
6377SOURCEFILE, then substituting the C source code suffix \`.c' with the
6378library object suffix, \`.lo'."
6379 ;;
6380
6381execute)
6382 $echo \
6383"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]...
6384
6385Automatically set library path, then run a program.
6386
6387This mode accepts the following additional options:
6388
6389 -dlopen FILE add the directory containing FILE to the library path
6390
6391This mode sets the library path environment variable according to \`-dlopen'
6392flags.
6393
6394If any of the ARGS are libtool executable wrappers, then they are translated
6395into their corresponding uninstalled binary, and any of their required library
6396directories are added to the library path.
6397
6398Then, COMMAND is executed, with ARGS as arguments."
6399 ;;
6400
6401finish)
6402 $echo \
6403"Usage: $modename [OPTION]... --mode=finish [LIBDIR]...
6404
6405Complete the installation of libtool libraries.
6406
6407Each LIBDIR is a directory that contains libtool libraries.
6408
6409The commands that this mode executes may require superuser privileges. Use
6410the \`--dry-run' option if you just want to see what would be executed."
6411 ;;
6412
6413install)
6414 $echo \
6415"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND...
6416
6417Install executables or libraries.
6418
6419INSTALL-COMMAND is the installation command. The first component should be
6420either the \`install' or \`cp' program.
6421
6422The rest of the components are interpreted as arguments to that command (only
6423BSD-compatible install options are recognized)."
6424 ;;
6425
6426link)
6427 $echo \
6428"Usage: $modename [OPTION]... --mode=link LINK-COMMAND...
6429
6430Link object files or libraries together to form another library, or to
6431create an executable program.
6432
6433LINK-COMMAND is a command using the C compiler that you would use to create
6434a program from several object files.
6435
6436The following components of LINK-COMMAND are treated specially:
6437
6438 -all-static do not do any dynamic linking at all
6439 -avoid-version do not add a version suffix if possible
6440 -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime
6441 -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols
6442 -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
6443 -export-symbols SYMFILE
6444 try to export only the symbols listed in SYMFILE
6445 -export-symbols-regex REGEX
6446 try to export only the symbols matching REGEX
6447 -LLIBDIR search LIBDIR for required installed libraries
6448 -lNAME OUTPUT-FILE requires the installed library libNAME
6449 -module build a library that can dlopened
6450 -no-fast-install disable the fast-install mode
6451 -no-install link a not-installable executable
6452 -no-undefined declare that a library does not refer to external symbols
6453 -o OUTPUT-FILE create OUTPUT-FILE from the specified objects
6454 -objectlist FILE Use a list of object files found in FILE to specify objects
6455 -precious-files-regex REGEX
6456 don't remove output files matching REGEX
6457 -release RELEASE specify package release information
6458 -rpath LIBDIR the created library will eventually be installed in LIBDIR
6459 -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries
6460 -static do not do any dynamic linking of libtool libraries
6461 -version-info CURRENT[:REVISION[:AGE]]
6462 specify library version info [each variable defaults to 0]
6463
6464All other options (arguments beginning with \`-') are ignored.
6465
6466Every other argument is treated as a filename. Files ending in \`.la' are
6467treated as uninstalled libtool libraries, other files are standard or library
6468object files.
6469
6470If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
6471only library objects (\`.lo' files) may be specified, and \`-rpath' is
6472required, except when creating a convenience library.
6473
6474If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
6475using \`ar' and \`ranlib', or on Windows using \`lib'.
6476
6477If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
6478is created, otherwise an executable program is created."
6479 ;;
6480
6481uninstall)
6482 $echo \
6483"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
6484
6485Remove libraries from an installation directory.
6486
6487RM is the name of the program to use to delete files associated with each FILE
6488(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
6489to RM.
6490
6491If FILE is a libtool library, all the files associated with it are deleted.
6492Otherwise, only FILE itself is deleted using RM."
6493 ;;
6494
6495*)
6496 $echo "$modename: invalid operation mode \`$mode'" 1>&2
6497 $echo "$help" 1>&2
6498 exit $EXIT_FAILURE
6499 ;;
6500esac
6501
6502$echo
6503$echo "Try \`$modename --help' for more information about other modes."
6504
6505exit $?
6506
6507# The TAGs below are defined such that we never get into a situation
6508# in which we disable both kinds of libraries. Given conflicting
6509# choices, we go for a static library, that is the most portable,
6510# since we can't tell whether shared libraries were disabled because
6511# the user asked for that or because the platform doesn't support
6512# them. This is particularly important on AIX, because we don't
6513# support having both static and shared libraries enabled at the same
6514# time on that platform, so we default to a shared-only configuration.
6515# If a disable-shared tag is given, we'll fallback to a static-only
6516# configuration. But we'll never go from static-only to shared-only.
6517
6518# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
6519build_libtool_libs=no
6520build_old_libs=yes
6521# ### END LIBTOOL TAG CONFIG: disable-shared
6522
6523# ### BEGIN LIBTOOL TAG CONFIG: disable-static
6524build_old_libs=`case $build_libtool_libs in yes) $echo no;; *) $echo yes;; esac`
6525# ### END LIBTOOL TAG CONFIG: disable-static
6526
6527# Local Variables:
6528# mode:shell-script
6529# sh-indentation:2
6530# End:
6531