Added llvmgcc version to allow tests to be xfailed by frontend version.
[llvm-complete.git] / autoconf / ltmain.sh
blob38479b1fbdd71a9635f3136c10861ebc82e37a32
1 # ltmain.sh - Provide generalized library-building support services.
2 # NOTE: Changing this file will not affect anything until you rerun configure.
4 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004
5 # Free Software Foundation, Inc.
6 # Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
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.
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.
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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
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.
27 basename="s,^.*/,,g"
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.
34 progpath="$0"
36 # The name of this program:
37 progname=`echo "$progpath" | $SED $basename`
38 modename="$progname"
40 # Global variables:
41 EXIT_SUCCESS=0
42 EXIT_FAILURE=1
44 PROGRAM=ltmain.sh
45 PACKAGE=libtool
46 VERSION=1.5.10
47 TIMESTAMP=" (1.1220.2.130 2004/09/19 12:13:49)"
49 # See if we are running on zsh, and set the options which allow our
50 # commands through without removal of \ escapes.
51 if test -n "${ZSH_VERSION+set}" ; then
52 setopt NO_GLOB_SUBST
55 # Check that we have a working $echo.
56 if test "X$1" = X--no-reexec; then
57 # Discard the --no-reexec flag, and continue.
58 shift
59 elif test "X$1" = X--fallback-echo; then
60 # Avoid inline document here, it may be left over
62 elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
63 # Yippee, $echo works!
65 else
66 # Restart under the correct shell, and then maybe $echo will work.
67 exec $SHELL "$progpath" --no-reexec ${1+"$@"}
70 if test "X$1" = X--fallback-echo; then
71 # used as fallback echo
72 shift
73 cat <<EOF
75 EOF
76 exit $EXIT_SUCCESS
79 default_mode=
80 help="Try \`$progname --help' for more information."
81 magic="%%%MAGIC variable%%%"
82 mkdir="mkdir"
83 mv="mv -f"
84 rm="rm -f"
86 # Sed substitution that helps us do robust quoting. It backslashifies
87 # metacharacters that are still active within double-quoted strings.
88 Xsed="${SED}"' -e 1s/^X//'
89 sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
90 # test EBCDIC or ASCII
91 case `echo A|tr A '\301'` in
92 A) # EBCDIC based system
93 SP2NL="tr '\100' '\n'"
94 NL2SP="tr '\r\n' '\100\100'"
96 *) # Assume ASCII based system
97 SP2NL="tr '\040' '\012'"
98 NL2SP="tr '\015\012' '\040\040'"
100 esac
102 # NLS nuisances.
103 # Only set LANG and LC_ALL to C if already set.
104 # These must not be set unconditionally because not all systems understand
105 # e.g. LANG=C (notably SCO).
106 # We save the old values to restore during execute mode.
107 if test "${LC_ALL+set}" = set; then
108 save_LC_ALL="$LC_ALL"; LC_ALL=C; export LC_ALL
110 if test "${LANG+set}" = set; then
111 save_LANG="$LANG"; LANG=C; export LANG
114 # Make sure IFS has a sensible default
115 : ${IFS="
118 if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
119 $echo "$modename: not configured to build any kind of library" 1>&2
120 $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
121 exit $EXIT_FAILURE
124 # Global variables.
125 mode=$default_mode
126 nonopt=
127 prev=
128 prevopt=
129 run=
130 show="$echo"
131 show_help=
132 execute_dlfiles=
133 lo2o="s/\\.lo\$/.${objext}/"
134 o2lo="s/\\.${objext}\$/.lo/"
136 #####################################
137 # Shell function definitions:
138 # This seems to be the best place for them
140 # func_win32_libid arg
141 # return the library type of file 'arg'
143 # Need a lot of goo to handle *both* DLLs and import libs
144 # Has to be a shell function in order to 'eat' the argument
145 # that is supplied when $file_magic_command is called.
146 func_win32_libid () {
147 win32_libid_type="unknown"
148 win32_fileres=`file -L $1 2>/dev/null`
149 case $win32_fileres in
150 *ar\ archive\ import\ library*) # definitely import
151 win32_libid_type="x86 archive import"
153 *ar\ archive*) # could be an import, or static
154 if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \
155 $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
156 win32_nmres=`eval $NM -f posix -A $1 | \
157 sed -n -e '1,100{/ I /{x;/import/!{s/^/import/;h;p;};x;};}'`
158 if test "X$win32_nmres" = "Ximport" ; then
159 win32_libid_type="x86 archive import"
160 else
161 win32_libid_type="x86 archive static"
165 *DLL*)
166 win32_libid_type="x86 DLL"
168 *executable*) # but shell scripts are "executable" too...
169 case $win32_fileres in
170 *MS\ Windows\ PE\ Intel*)
171 win32_libid_type="x86 DLL"
173 esac
175 esac
176 $echo $win32_libid_type
180 # func_infer_tag arg
181 # Infer tagged configuration to use if any are available and
182 # if one wasn't chosen via the "--tag" command line option.
183 # Only attempt this if the compiler in the base compile
184 # command doesn't match the default compiler.
185 # arg is usually of the form 'gcc ...'
186 func_infer_tag () {
187 if test -n "$available_tags" && test -z "$tagname"; then
188 CC_quoted=
189 for arg in $CC; do
190 case $arg in
191 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
192 arg="\"$arg\""
194 esac
195 CC_quoted="$CC_quoted $arg"
196 done
197 case $@ in
198 # Blanks in the command may have been stripped by the calling shell,
199 # but not from the CC environment variable when configure was run.
200 " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;;
201 # Blanks at the start of $base_compile will cause this to fail
202 # if we don't check for them as well.
204 for z in $available_tags; do
205 if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
206 # Evaluate the configuration.
207 eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
208 CC_quoted=
209 for arg in $CC; do
210 # Double-quote args containing other shell metacharacters.
211 case $arg in
212 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
213 arg="\"$arg\""
215 esac
216 CC_quoted="$CC_quoted $arg"
217 done
218 case "$@ " in
219 " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*)
220 # The compiler in the base compile command matches
221 # the one in the tagged configuration.
222 # Assume this is the tagged configuration we want.
223 tagname=$z
224 break
226 esac
228 done
229 # If $tagname still isn't set, then no tagged configuration
230 # was found and let the user know that the "--tag" command
231 # line option must be used.
232 if test -z "$tagname"; then
233 $echo "$modename: unable to infer tagged configuration"
234 $echo "$modename: specify a tag with \`--tag'" 1>&2
235 exit $EXIT_FAILURE
236 # else
237 # $echo "$modename: using $tagname tagged configuration"
240 esac
245 # func_extract_archives gentop oldlib ...
246 func_extract_archives () {
247 my_gentop="$1"; shift
248 my_oldlibs=${1+"$@"}
249 my_oldobjs=""
250 my_xlib=""
251 my_xabs=""
252 my_xdir=""
253 my_status=""
255 $show "${rm}r $my_gentop"
256 $run ${rm}r "$my_gentop"
257 $show "$mkdir $my_gentop"
258 $run $mkdir "$my_gentop"
259 my_status=$?
260 if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then
261 exit $my_status
264 for my_xlib in $my_oldlibs; do
265 # Extract the objects.
266 case $my_xlib in
267 [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
268 *) my_xabs=`pwd`"/$my_xlib" ;;
269 esac
270 my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'`
271 my_xdir="$my_gentop/$my_xlib"
273 $show "${rm}r $my_xdir"
274 $run ${rm}r "$my_xdir"
275 $show "$mkdir $my_xdir"
276 $run $mkdir "$my_xdir"
277 status=$?
278 if test "$status" -ne 0 && test ! -d "$my_xdir"; then
279 exit $status
281 case $host in
282 *-darwin*)
283 $show "Extracting $my_xabs"
284 # Do not bother doing anything if just a dry run
285 if test -z "$run"; then
286 darwin_orig_dir=`pwd`
287 cd $my_xdir || exit $?
288 darwin_archive=$my_xabs
289 darwin_curdir=`pwd`
290 darwin_base_archive=`basename $darwin_archive`
291 darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null`
292 if test -n "$darwin_arches"; then
293 darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'`
294 darwin_arch=
295 $show "$darwin_base_archive has multiple architectures $darwin_arches"
296 for darwin_arch in $darwin_arches ; do
297 mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
298 lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
299 # Remove the table of contents from the thin files.
300 $AR -d "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" __.SYMDEF 2>/dev/null || true
301 $AR -d "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" __.SYMDEF\ SORTED 2>/dev/null || true
302 cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
303 $AR -xo "${darwin_base_archive}"
304 rm "${darwin_base_archive}"
305 cd "$darwin_curdir"
306 done # $darwin_arches
307 ## Okay now we have a bunch of thin objects, gotta fatten them up :)
308 darwin_filelist=`find unfat-$$ -type f | xargs basename | sort -u | $NL2SP`
309 darwin_file=
310 darwin_files=
311 for darwin_file in $darwin_filelist; do
312 darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
313 lipo -create -output "$darwin_file" $darwin_files
314 done # $darwin_filelist
315 rm -rf unfat-$$
316 cd "$darwin_orig_dir"
317 else
318 cd $darwin_orig_dir
319 (cd $my_xdir && $AR x $my_xabs) || exit $?
320 fi # $darwin_arches
321 fi # $run
324 # We will extract separately just the conflicting names and we will
325 # no longer touch any unique names. It is faster to leave these
326 # extract automatically by $AR in one run.
327 $show "(cd $my_xdir && $AR x $my_xabs)"
328 $run eval "(cd \$my_xdir && $AR x \$my_xabs)" || exit $?
329 if ($AR t "$my_xabs" | sort | sort -uc >/dev/null 2>&1); then
331 else
332 $echo "$modename: warning: object name conflicts; renaming object files" 1>&2
333 $echo "$modename: warning: to ensure that they will not overwrite" 1>&2
334 $AR t "$my_xabs" | sort | uniq -cd | while read -r count name
337 while test "$i" -le "$count"
339 # Put our $i before any first dot (extension)
340 # Never overwrite any file
341 name_to="$name"
342 while test "X$name_to" = "X$name" || test -f "$my_xdir/$name_to"
344 name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"`
345 done
346 $show "(cd $my_xdir && $AR xN $i $my_xabs '$name' && $mv '$name' '$name_to')"
347 $run eval "(cd \$my_xdir && $AR xN $i \$my_xabs '$name' && $mv '$name' '$name_to')" || exit $?
348 i=`expr $i + 1`
349 done
350 done
353 esac
354 my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
355 done
357 func_extract_archives_result="$my_oldobjs"
359 # End of Shell function definitions
360 #####################################
362 # Darwin sucks
363 eval std_shrext=\"$shrext_cmds\"
365 # Parse our command line options once, thoroughly.
366 while test "$#" -gt 0
368 arg="$1"
369 shift
371 case $arg in
372 -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;;
373 *) optarg= ;;
374 esac
376 # If the previous option needs an argument, assign it.
377 if test -n "$prev"; then
378 case $prev in
379 execute_dlfiles)
380 execute_dlfiles="$execute_dlfiles $arg"
382 tag)
383 tagname="$arg"
384 preserve_args="${preserve_args}=$arg"
386 # Check whether tagname contains only valid characters
387 case $tagname in
388 *[!-_A-Za-z0-9,/]*)
389 $echo "$progname: invalid tag name: $tagname" 1>&2
390 exit $EXIT_FAILURE
392 esac
394 case $tagname in
396 # Don't test for the "default" C tag, as we know, it's there, but
397 # not specially marked.
400 if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then
401 taglist="$taglist $tagname"
402 # Evaluate the configuration.
403 eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`"
404 else
405 $echo "$progname: ignoring unknown tag $tagname" 1>&2
408 esac
411 eval "$prev=\$arg"
413 esac
415 prev=
416 prevopt=
417 continue
420 # Have we seen a non-optional argument yet?
421 case $arg in
422 --help)
423 show_help=yes
426 --version)
427 $echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP"
428 $echo
429 $echo "Copyright (C) 2003 Free Software Foundation, Inc."
430 $echo "This is free software; see the source for copying conditions. There is NO"
431 $echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
432 exit $EXIT_SUCCESS
435 --config)
436 ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath
437 # Now print the configurations for the tags.
438 for tagname in $taglist; do
439 ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath"
440 done
441 exit $EXIT_SUCCESS
444 --debug)
445 $echo "$progname: enabling shell trace mode"
446 set -x
447 preserve_args="$preserve_args $arg"
450 --dry-run | -n)
451 run=:
454 --features)
455 $echo "host: $host"
456 if test "$build_libtool_libs" = yes; then
457 $echo "enable shared libraries"
458 else
459 $echo "disable shared libraries"
461 if test "$build_old_libs" = yes; then
462 $echo "enable static libraries"
463 else
464 $echo "disable static libraries"
466 exit $EXIT_SUCCESS
469 --finish) mode="finish" ;;
471 --mode) prevopt="--mode" prev=mode ;;
472 --mode=*) mode="$optarg" ;;
474 --preserve-dup-deps) duplicate_deps="yes" ;;
476 --quiet | --silent)
477 show=:
478 preserve_args="$preserve_args $arg"
481 --tag) prevopt="--tag" prev=tag ;;
482 --tag=*)
483 set tag "$optarg" ${1+"$@"}
484 shift
485 prev=tag
486 preserve_args="$preserve_args --tag"
489 -dlopen)
490 prevopt="-dlopen"
491 prev=execute_dlfiles
495 $echo "$modename: unrecognized option \`$arg'" 1>&2
496 $echo "$help" 1>&2
497 exit $EXIT_FAILURE
501 nonopt="$arg"
502 break
504 esac
505 done
507 if test -n "$prevopt"; then
508 $echo "$modename: option \`$prevopt' requires an argument" 1>&2
509 $echo "$help" 1>&2
510 exit $EXIT_FAILURE
513 # If this variable is set in any of the actions, the command in it
514 # will be execed at the end. This prevents here-documents from being
515 # left over by shells.
516 exec_cmd=
518 if test -z "$show_help"; then
520 # Infer the operation mode.
521 if test -z "$mode"; then
522 $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2
523 $echo "*** Future versions of Libtool will require -mode=MODE be specified." 1>&2
524 case $nonopt in
525 *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*)
526 mode=link
527 for arg
529 case $arg in
531 mode=compile
532 break
534 esac
535 done
537 *db | *dbx | *strace | *truss)
538 mode=execute
540 *install*|cp|mv)
541 mode=install
543 *rm)
544 mode=uninstall
547 # If we have no mode, but dlfiles were specified, then do execute mode.
548 test -n "$execute_dlfiles" && mode=execute
550 # Just use the default operation mode.
551 if test -z "$mode"; then
552 if test -n "$nonopt"; then
553 $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2
554 else
555 $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2
559 esac
562 # Only execute mode is allowed to have -dlopen flags.
563 if test -n "$execute_dlfiles" && test "$mode" != execute; then
564 $echo "$modename: unrecognized option \`-dlopen'" 1>&2
565 $echo "$help" 1>&2
566 exit $EXIT_FAILURE
569 # Change the help message to a mode-specific one.
570 generic_help="$help"
571 help="Try \`$modename --help --mode=$mode' for more information."
573 # These modes are in order of execution frequency so that they run quickly.
574 case $mode in
575 # libtool compile mode
576 compile)
577 modename="$modename: compile"
578 # Get the compilation command and the source file.
579 base_compile=
580 srcfile="$nonopt" # always keep a non-empty value in "srcfile"
581 suppress_opt=yes
582 suppress_output=
583 arg_mode=normal
584 libobj=
585 later=
587 for arg
589 case "$arg_mode" in
590 arg )
591 # do not "continue". Instead, add this to base_compile
592 lastarg="$arg"
593 arg_mode=normal
596 target )
597 libobj="$arg"
598 arg_mode=normal
599 continue
602 normal )
603 # Accept any command-line options.
604 case $arg in
606 if test -n "$libobj" ; then
607 $echo "$modename: you cannot specify \`-o' more than once" 1>&2
608 exit $EXIT_FAILURE
610 arg_mode=target
611 continue
614 -static | -prefer-pic | -prefer-non-pic)
615 later="$later $arg"
616 continue
619 -no-suppress)
620 suppress_opt=no
621 continue
624 -Xcompiler)
625 arg_mode=arg # the next one goes into the "base_compile" arg list
626 continue # The current "srcfile" will either be retained or
627 ;; # replaced later. I would guess that would be a bug.
629 -Wc,*)
630 args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"`
631 lastarg=
632 save_ifs="$IFS"; IFS=','
633 for arg in $args; do
634 IFS="$save_ifs"
636 # Double-quote args containing other shell metacharacters.
637 # Many Bourne shells cannot handle close brackets correctly
638 # in scan sets, so we specify it separately.
639 case $arg in
640 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
641 arg="\"$arg\""
643 esac
644 lastarg="$lastarg $arg"
645 done
646 IFS="$save_ifs"
647 lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"`
649 # Add the arguments to base_compile.
650 base_compile="$base_compile $lastarg"
651 continue
655 # Accept the current argument as the source file.
656 # The previous "srcfile" becomes the current argument.
658 lastarg="$srcfile"
659 srcfile="$arg"
661 esac # case $arg
663 esac # case $arg_mode
665 # Aesthetically quote the previous argument.
666 lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"`
668 case $lastarg in
669 # Double-quote args containing other shell metacharacters.
670 # Many Bourne shells cannot handle close brackets correctly
671 # in scan sets, so we specify it separately.
672 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
673 lastarg="\"$lastarg\""
675 esac
677 base_compile="$base_compile $lastarg"
678 done # for arg
680 case $arg_mode in
681 arg)
682 $echo "$modename: you must specify an argument for -Xcompile"
683 exit $EXIT_FAILURE
685 target)
686 $echo "$modename: you must specify a target with \`-o'" 1>&2
687 exit $EXIT_FAILURE
690 # Get the name of the library object.
691 [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'`
693 esac
695 # Recognize several different file suffixes.
696 # If the user specifies -o file.o, it is replaced with file.lo
697 xform='[cCFSifmso]'
698 case $libobj in
699 *.ada) xform=ada ;;
700 *.adb) xform=adb ;;
701 *.ads) xform=ads ;;
702 *.asm) xform=asm ;;
703 *.c++) xform=c++ ;;
704 *.cc) xform=cc ;;
705 *.ii) xform=ii ;;
706 *.class) xform=class ;;
707 *.cpp) xform=cpp ;;
708 *.cxx) xform=cxx ;;
709 *.f90) xform=f90 ;;
710 *.for) xform=for ;;
711 *.java) xform=java ;;
712 esac
714 libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
716 case $libobj in
717 *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;;
719 $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2
720 exit $EXIT_FAILURE
722 esac
724 func_infer_tag $base_compile
726 for arg in $later; do
727 case $arg in
728 -static)
729 build_old_libs=yes
730 continue
733 -prefer-pic)
734 pic_mode=yes
735 continue
738 -prefer-non-pic)
739 pic_mode=no
740 continue
742 esac
743 done
745 objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
746 xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
747 if test "X$xdir" = "X$obj"; then
748 xdir=
749 else
750 xdir=$xdir/
752 lobj=${xdir}$objdir/$objname
754 if test -z "$base_compile"; then
755 $echo "$modename: you must specify a compilation command" 1>&2
756 $echo "$help" 1>&2
757 exit $EXIT_FAILURE
760 # Delete any leftover library objects.
761 if test "$build_old_libs" = yes; then
762 removelist="$obj $lobj $libobj ${libobj}T"
763 else
764 removelist="$lobj $libobj ${libobj}T"
767 $run $rm $removelist
768 trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15
770 # On Cygwin there's no "real" PIC flag so we must build both object types
771 case $host_os in
772 cygwin* | mingw* | pw32* | os2*)
773 pic_mode=default
775 esac
776 if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
777 # non-PIC code in shared libraries is not supported
778 pic_mode=default
781 # Calculate the filename of the output object if compiler does
782 # not support -o with -c
783 if test "$compiler_c_o" = no; then
784 output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
785 lockfile="$output_obj.lock"
786 removelist="$removelist $output_obj $lockfile"
787 trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15
788 else
789 output_obj=
790 need_locks=no
791 lockfile=
794 # Lock this critical section if it is needed
795 # We use this script file to make the link, it avoids creating a new file
796 if test "$need_locks" = yes; then
797 until $run ln "$progpath" "$lockfile" 2>/dev/null; do
798 $show "Waiting for $lockfile to be removed"
799 sleep 2
800 done
801 elif test "$need_locks" = warn; then
802 if test -f "$lockfile"; then
803 $echo "\
804 *** ERROR, $lockfile exists and contains:
805 `cat $lockfile 2>/dev/null`
807 This indicates that another process is trying to use the same
808 temporary object file, and libtool could not work around it because
809 your compiler does not support \`-c' and \`-o' together. If you
810 repeat this compilation, it may succeed, by chance, but you had better
811 avoid parallel builds (make -j) in this platform, or get a better
812 compiler."
814 $run $rm $removelist
815 exit $EXIT_FAILURE
817 $echo $srcfile > "$lockfile"
820 if test -n "$fix_srcfile_path"; then
821 eval srcfile=\"$fix_srcfile_path\"
824 $run $rm "$libobj" "${libobj}T"
826 # Create a libtool object file (analogous to a ".la" file),
827 # but don't create it if we're doing a dry run.
828 test -z "$run" && cat > ${libobj}T <<EOF
829 # $libobj - a libtool object file
830 # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
832 # Please DO NOT delete this file!
833 # It is necessary for linking the library.
835 # Name of the PIC object.
838 # Only build a PIC object if we are building libtool libraries.
839 if test "$build_libtool_libs" = yes; then
840 # Without this assignment, base_compile gets emptied.
841 fbsd_hideous_sh_bug=$base_compile
843 if test "$pic_mode" != no; then
844 command="$base_compile $srcfile $pic_flag"
845 else
846 # Don't build PIC code
847 command="$base_compile $srcfile"
850 if test ! -d "${xdir}$objdir"; then
851 $show "$mkdir ${xdir}$objdir"
852 $run $mkdir ${xdir}$objdir
853 status=$?
854 if test "$status" -ne 0 && test ! -d "${xdir}$objdir"; then
855 exit $status
859 if test -z "$output_obj"; then
860 # Place PIC objects in $objdir
861 command="$command -o $lobj"
864 $run $rm "$lobj" "$output_obj"
866 $show "$command"
867 if $run eval "$command"; then :
868 else
869 test -n "$output_obj" && $run $rm $removelist
870 exit $EXIT_FAILURE
873 if test "$need_locks" = warn &&
874 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
875 $echo "\
876 *** ERROR, $lockfile contains:
877 `cat $lockfile 2>/dev/null`
879 but it should contain:
880 $srcfile
882 This indicates that another process is trying to use the same
883 temporary object file, and libtool could not work around it because
884 your compiler does not support \`-c' and \`-o' together. If you
885 repeat this compilation, it may succeed, by chance, but you had better
886 avoid parallel builds (make -j) in this platform, or get a better
887 compiler."
889 $run $rm $removelist
890 exit $EXIT_FAILURE
893 # Just move the object if needed, then go on to compile the next one
894 if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
895 $show "$mv $output_obj $lobj"
896 if $run $mv $output_obj $lobj; then :
897 else
898 error=$?
899 $run $rm $removelist
900 exit $error
904 # Append the name of the PIC object to the libtool object file.
905 test -z "$run" && cat >> ${libobj}T <<EOF
906 pic_object='$objdir/$objname'
910 # Allow error messages only from the first compilation.
911 if test "$suppress_opt" = yes; then
912 suppress_output=' >/dev/null 2>&1'
914 else
915 # No PIC object so indicate it doesn't exist in the libtool
916 # object file.
917 test -z "$run" && cat >> ${libobj}T <<EOF
918 pic_object=none
923 # Only build a position-dependent object if we build old libraries.
924 if test "$build_old_libs" = yes; then
925 if test "$pic_mode" != yes; then
926 # Don't build PIC code
927 command="$base_compile $srcfile"
928 else
929 command="$base_compile $srcfile $pic_flag"
931 if test "$compiler_c_o" = yes; then
932 command="$command -o $obj"
935 # Suppress compiler output if we already did a PIC compilation.
936 command="$command$suppress_output"
937 $run $rm "$obj" "$output_obj"
938 $show "$command"
939 if $run eval "$command"; then :
940 else
941 $run $rm $removelist
942 exit $EXIT_FAILURE
945 if test "$need_locks" = warn &&
946 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
947 $echo "\
948 *** ERROR, $lockfile contains:
949 `cat $lockfile 2>/dev/null`
951 but it should contain:
952 $srcfile
954 This indicates that another process is trying to use the same
955 temporary object file, and libtool could not work around it because
956 your compiler does not support \`-c' and \`-o' together. If you
957 repeat this compilation, it may succeed, by chance, but you had better
958 avoid parallel builds (make -j) in this platform, or get a better
959 compiler."
961 $run $rm $removelist
962 exit $EXIT_FAILURE
965 # Just move the object if needed
966 if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
967 $show "$mv $output_obj $obj"
968 if $run $mv $output_obj $obj; then :
969 else
970 error=$?
971 $run $rm $removelist
972 exit $error
976 # Append the name of the non-PIC object the libtool object file.
977 # Only append if the libtool object file exists.
978 test -z "$run" && cat >> ${libobj}T <<EOF
979 # Name of the non-PIC object.
980 non_pic_object='$objname'
983 else
984 # Append the name of the non-PIC object the libtool object file.
985 # Only append if the libtool object file exists.
986 test -z "$run" && cat >> ${libobj}T <<EOF
987 # Name of the non-PIC object.
988 non_pic_object=none
993 $run $mv "${libobj}T" "${libobj}"
995 # Unlock the critical section if it was locked
996 if test "$need_locks" != no; then
997 $run $rm "$lockfile"
1000 exit $EXIT_SUCCESS
1003 # libtool link mode
1004 link | relink)
1005 modename="$modename: link"
1006 case $host in
1007 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
1008 # It is impossible to link a dll without this setting, and
1009 # we shouldn't force the makefile maintainer to figure out
1010 # which system we are compiling for in order to pass an extra
1011 # flag for every libtool invocation.
1012 # allow_undefined=no
1014 # FIXME: Unfortunately, there are problems with the above when trying
1015 # to make a dll which has undefined symbols, in which case not
1016 # even a static library is built. For now, we need to specify
1017 # -no-undefined on the libtool link line when we can be certain
1018 # that all symbols are satisfied, otherwise we get a static library.
1019 allow_undefined=yes
1022 allow_undefined=yes
1024 esac
1025 libtool_args="$nonopt"
1026 base_compile="$nonopt $@"
1027 compile_command="$nonopt"
1028 finalize_command="$nonopt"
1030 compile_rpath=
1031 finalize_rpath=
1032 compile_shlibpath=
1033 finalize_shlibpath=
1034 convenience=
1035 old_convenience=
1036 deplibs=
1037 old_deplibs=
1038 compiler_flags=
1039 linker_flags=
1040 dllsearchpath=
1041 lib_search_path=`pwd`
1042 inst_prefix_dir=
1044 avoid_version=no
1045 dlfiles=
1046 dlprefiles=
1047 dlself=no
1048 export_dynamic=no
1049 export_symbols=
1050 export_symbols_regex=
1051 generated=
1052 libobjs=
1053 ltlibs=
1054 module=no
1055 no_install=no
1056 objs=
1057 non_pic_objects=
1058 precious_files_regex=
1059 prefer_static_libs=no
1060 preload=no
1061 prev=
1062 prevarg=
1063 release=
1064 rpath=
1065 xrpath=
1066 perm_rpath=
1067 temp_rpath=
1068 thread_safe=no
1069 vinfo=
1070 vinfo_number=no
1072 func_infer_tag $base_compile
1074 # We need to know -static, to get the right output filenames.
1075 for arg
1077 case $arg in
1078 -all-static | -static)
1079 if test "X$arg" = "X-all-static"; then
1080 if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
1081 $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2
1083 if test -n "$link_static_flag"; then
1084 dlopen_self=$dlopen_self_static
1086 else
1087 if test -z "$pic_flag" && test -n "$link_static_flag"; then
1088 dlopen_self=$dlopen_self_static
1091 build_libtool_libs=no
1092 build_old_libs=yes
1093 prefer_static_libs=yes
1094 break
1096 esac
1097 done
1099 # See if our shared archives depend on static archives.
1100 test -n "$old_archive_from_new_cmds" && build_old_libs=yes
1102 # Go through the arguments, transforming them on the way.
1103 while test "$#" -gt 0; do
1104 arg="$1"
1105 shift
1106 case $arg in
1107 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
1108 qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test
1110 *) qarg=$arg ;;
1111 esac
1112 libtool_args="$libtool_args $qarg"
1114 # If the previous option needs an argument, assign it.
1115 if test -n "$prev"; then
1116 case $prev in
1117 output)
1118 compile_command="$compile_command @OUTPUT@"
1119 finalize_command="$finalize_command @OUTPUT@"
1121 esac
1123 case $prev in
1124 dlfiles|dlprefiles)
1125 if test "$preload" = no; then
1126 # Add the symbol object into the linking commands.
1127 compile_command="$compile_command @SYMFILE@"
1128 finalize_command="$finalize_command @SYMFILE@"
1129 preload=yes
1131 case $arg in
1132 *.la | *.lo) ;; # We handle these cases below.
1133 force)
1134 if test "$dlself" = no; then
1135 dlself=needless
1136 export_dynamic=yes
1138 prev=
1139 continue
1141 self)
1142 if test "$prev" = dlprefiles; then
1143 dlself=yes
1144 elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
1145 dlself=yes
1146 else
1147 dlself=needless
1148 export_dynamic=yes
1150 prev=
1151 continue
1154 if test "$prev" = dlfiles; then
1155 dlfiles="$dlfiles $arg"
1156 else
1157 dlprefiles="$dlprefiles $arg"
1159 prev=
1160 continue
1162 esac
1164 expsyms)
1165 export_symbols="$arg"
1166 if test ! -f "$arg"; then
1167 $echo "$modename: symbol file \`$arg' does not exist"
1168 exit $EXIT_FAILURE
1170 prev=
1171 continue
1173 expsyms_regex)
1174 export_symbols_regex="$arg"
1175 prev=
1176 continue
1178 inst_prefix)
1179 inst_prefix_dir="$arg"
1180 prev=
1181 continue
1183 precious_regex)
1184 precious_files_regex="$arg"
1185 prev=
1186 continue
1188 release)
1189 release="-$arg"
1190 prev=
1191 continue
1193 objectlist)
1194 if test -f "$arg"; then
1195 save_arg=$arg
1196 moreargs=
1197 for fil in `cat $save_arg`
1199 # moreargs="$moreargs $fil"
1200 arg=$fil
1201 # A libtool-controlled object.
1203 # Check to see that this really is a libtool object.
1204 if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
1205 pic_object=
1206 non_pic_object=
1208 # Read the .lo file
1209 # If there is no directory component, then add one.
1210 case $arg in
1211 */* | *\\*) . $arg ;;
1212 *) . ./$arg ;;
1213 esac
1215 if test -z "$pic_object" || \
1216 test -z "$non_pic_object" ||
1217 test "$pic_object" = none && \
1218 test "$non_pic_object" = none; then
1219 $echo "$modename: cannot find name of object for \`$arg'" 1>&2
1220 exit $EXIT_FAILURE
1223 # Extract subdirectory from the argument.
1224 xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
1225 if test "X$xdir" = "X$arg"; then
1226 xdir=
1227 else
1228 xdir="$xdir/"
1231 if test "$pic_object" != none; then
1232 # Prepend the subdirectory the object is found in.
1233 pic_object="$xdir$pic_object"
1235 if test "$prev" = dlfiles; then
1236 if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
1237 dlfiles="$dlfiles $pic_object"
1238 prev=
1239 continue
1240 else
1241 # If libtool objects are unsupported, then we need to preload.
1242 prev=dlprefiles
1246 # CHECK ME: I think I busted this. -Ossama
1247 if test "$prev" = dlprefiles; then
1248 # Preload the old-style object.
1249 dlprefiles="$dlprefiles $pic_object"
1250 prev=
1253 # A PIC object.
1254 libobjs="$libobjs $pic_object"
1255 arg="$pic_object"
1258 # Non-PIC object.
1259 if test "$non_pic_object" != none; then
1260 # Prepend the subdirectory the object is found in.
1261 non_pic_object="$xdir$non_pic_object"
1263 # A standard non-PIC object
1264 non_pic_objects="$non_pic_objects $non_pic_object"
1265 if test -z "$pic_object" || test "$pic_object" = none ; then
1266 arg="$non_pic_object"
1269 else
1270 # Only an error if not doing a dry-run.
1271 if test -z "$run"; then
1272 $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
1273 exit $EXIT_FAILURE
1274 else
1275 # Dry-run case.
1277 # Extract subdirectory from the argument.
1278 xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
1279 if test "X$xdir" = "X$arg"; then
1280 xdir=
1281 else
1282 xdir="$xdir/"
1285 pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
1286 non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
1287 libobjs="$libobjs $pic_object"
1288 non_pic_objects="$non_pic_objects $non_pic_object"
1291 done
1292 else
1293 $echo "$modename: link input file \`$save_arg' does not exist"
1294 exit $EXIT_FAILURE
1296 arg=$save_arg
1297 prev=
1298 continue
1300 rpath | xrpath)
1301 # We need an absolute path.
1302 case $arg in
1303 [\\/]* | [A-Za-z]:[\\/]*) ;;
1305 $echo "$modename: only absolute run-paths are allowed" 1>&2
1306 exit $EXIT_FAILURE
1308 esac
1309 if test "$prev" = rpath; then
1310 case "$rpath " in
1311 *" $arg "*) ;;
1312 *) rpath="$rpath $arg" ;;
1313 esac
1314 else
1315 case "$xrpath " in
1316 *" $arg "*) ;;
1317 *) xrpath="$xrpath $arg" ;;
1318 esac
1320 prev=
1321 continue
1323 xcompiler)
1324 compiler_flags="$compiler_flags $qarg"
1325 prev=
1326 compile_command="$compile_command $qarg"
1327 finalize_command="$finalize_command $qarg"
1328 continue
1330 xlinker)
1331 linker_flags="$linker_flags $qarg"
1332 compiler_flags="$compiler_flags $wl$qarg"
1333 prev=
1334 compile_command="$compile_command $wl$qarg"
1335 finalize_command="$finalize_command $wl$qarg"
1336 continue
1338 xcclinker)
1339 linker_flags="$linker_flags $qarg"
1340 compiler_flags="$compiler_flags $qarg"
1341 prev=
1342 compile_command="$compile_command $qarg"
1343 finalize_command="$finalize_command $qarg"
1344 continue
1346 shrext)
1347 shrext_cmds="$arg"
1348 prev=
1349 continue
1352 eval "$prev=\"\$arg\""
1353 prev=
1354 continue
1356 esac
1357 fi # test -n "$prev"
1359 prevarg="$arg"
1361 case $arg in
1362 -all-static)
1363 if test -n "$link_static_flag"; then
1364 compile_command="$compile_command $link_static_flag"
1365 finalize_command="$finalize_command $link_static_flag"
1367 continue
1370 -allow-undefined)
1371 # FIXME: remove this flag sometime in the future.
1372 $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2
1373 continue
1376 -avoid-version)
1377 avoid_version=yes
1378 continue
1381 -dlopen)
1382 prev=dlfiles
1383 continue
1386 -dlpreopen)
1387 prev=dlprefiles
1388 continue
1391 -export-dynamic)
1392 export_dynamic=yes
1393 continue
1396 -export-symbols | -export-symbols-regex)
1397 if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
1398 $echo "$modename: more than one -exported-symbols argument is not allowed"
1399 exit $EXIT_FAILURE
1401 if test "X$arg" = "X-export-symbols"; then
1402 prev=expsyms
1403 else
1404 prev=expsyms_regex
1406 continue
1409 -inst-prefix-dir)
1410 prev=inst_prefix
1411 continue
1414 # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
1415 # so, if we see these flags be careful not to treat them like -L
1416 -L[A-Z][A-Z]*:*)
1417 case $with_gcc/$host in
1418 no/*-*-irix* | /*-*-irix*)
1419 compile_command="$compile_command $arg"
1420 finalize_command="$finalize_command $arg"
1422 esac
1423 continue
1426 -L*)
1427 dir=`$echo "X$arg" | $Xsed -e 's/^-L//'`
1428 # We need an absolute path.
1429 case $dir in
1430 [\\/]* | [A-Za-z]:[\\/]*) ;;
1432 absdir=`cd "$dir" && pwd`
1433 if test -z "$absdir"; then
1434 $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2
1435 exit $EXIT_FAILURE
1437 dir="$absdir"
1439 esac
1440 case "$deplibs " in
1441 *" -L$dir "*) ;;
1443 deplibs="$deplibs -L$dir"
1444 lib_search_path="$lib_search_path $dir"
1446 esac
1447 case $host in
1448 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
1449 case :$dllsearchpath: in
1450 *":$dir:"*) ;;
1451 *) dllsearchpath="$dllsearchpath:$dir";;
1452 esac
1454 esac
1455 continue
1458 -l*)
1459 if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
1460 case $host in
1461 *-*-cygwin* | *-*-pw32* | *-*-beos*)
1462 # These systems don't actually have a C or math library (as such)
1463 continue
1465 *-*-mingw* | *-*-os2*)
1466 # These systems don't actually have a C library (as such)
1467 test "X$arg" = "X-lc" && continue
1469 *-*-openbsd* | *-*-freebsd*)
1470 # Do not include libc due to us having libc/libc_r.
1471 test "X$arg" = "X-lc" && continue
1473 *-*-rhapsody* | *-*-darwin1.[012])
1474 # Rhapsody C and math libraries are in the System framework
1475 deplibs="$deplibs -framework System"
1476 continue
1477 esac
1478 elif test "X$arg" = "X-lc_r"; then
1479 case $host in
1480 *-*-openbsd* | *-*-freebsd*)
1481 # Do not include libc_r directly, use -pthread flag.
1482 continue
1484 esac
1486 deplibs="$deplibs $arg"
1487 continue
1490 -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe)
1491 deplibs="$deplibs $arg"
1492 continue
1495 -module)
1496 module=yes
1497 continue
1500 # gcc -m* arguments should be passed to the linker via $compiler_flags
1501 # in order to pass architecture information to the linker
1502 # (e.g. 32 vs 64-bit). This may also be accomplished via -Wl,-mfoo
1503 # but this is not reliable with gcc because gcc may use -mfoo to
1504 # select a different linker, different libraries, etc, while
1505 # -Wl,-mfoo simply passes -mfoo to the linker.
1506 -m*)
1507 # Unknown arguments in both finalize_command and compile_command need
1508 # to be aesthetically quoted because they are evaled later.
1509 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
1510 case $arg in
1511 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
1512 arg="\"$arg\""
1514 esac
1515 compile_command="$compile_command $arg"
1516 finalize_command="$finalize_command $arg"
1517 if test "$with_gcc" = "yes" ; then
1518 compiler_flags="$compiler_flags $arg"
1520 continue
1523 -shrext)
1524 prev=shrext
1525 continue
1528 -no-fast-install)
1529 fast_install=no
1530 continue
1533 -no-install)
1534 case $host in
1535 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
1536 # The PATH hackery in wrapper scripts is required on Windows
1537 # in order for the loader to find any dlls it needs.
1538 $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2
1539 $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2
1540 fast_install=no
1542 *) no_install=yes ;;
1543 esac
1544 continue
1547 -no-undefined)
1548 allow_undefined=no
1549 continue
1552 -objectlist)
1553 prev=objectlist
1554 continue
1557 -o) prev=output ;;
1559 -precious-files-regex)
1560 prev=precious_regex
1561 continue
1564 -release)
1565 prev=release
1566 continue
1569 -rpath)
1570 prev=rpath
1571 continue
1575 prev=xrpath
1576 continue
1579 -R*)
1580 dir=`$echo "X$arg" | $Xsed -e 's/^-R//'`
1581 # We need an absolute path.
1582 case $dir in
1583 [\\/]* | [A-Za-z]:[\\/]*) ;;
1585 $echo "$modename: only absolute run-paths are allowed" 1>&2
1586 exit $EXIT_FAILURE
1588 esac
1589 case "$xrpath " in
1590 *" $dir "*) ;;
1591 *) xrpath="$xrpath $dir" ;;
1592 esac
1593 continue
1596 -static)
1597 # The effects of -static are defined in a previous loop.
1598 # We used to do the same as -all-static on platforms that
1599 # didn't have a PIC flag, but the assumption that the effects
1600 # would be equivalent was wrong. It would break on at least
1601 # Digital Unix and AIX.
1602 continue
1605 -thread-safe)
1606 thread_safe=yes
1607 continue
1610 -version-info)
1611 prev=vinfo
1612 continue
1614 -version-number)
1615 prev=vinfo
1616 vinfo_number=yes
1617 continue
1620 -Wc,*)
1621 args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'`
1622 arg=
1623 save_ifs="$IFS"; IFS=','
1624 for flag in $args; do
1625 IFS="$save_ifs"
1626 case $flag in
1627 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
1628 flag="\"$flag\""
1630 esac
1631 arg="$arg $wl$flag"
1632 compiler_flags="$compiler_flags $flag"
1633 done
1634 IFS="$save_ifs"
1635 arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
1638 -Wl,*)
1639 args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'`
1640 arg=
1641 save_ifs="$IFS"; IFS=','
1642 for flag in $args; do
1643 IFS="$save_ifs"
1644 case $flag in
1645 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
1646 flag="\"$flag\""
1648 esac
1649 arg="$arg $wl$flag"
1650 compiler_flags="$compiler_flags $wl$flag"
1651 linker_flags="$linker_flags $flag"
1652 done
1653 IFS="$save_ifs"
1654 arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
1657 -Xcompiler)
1658 prev=xcompiler
1659 continue
1662 -Xlinker)
1663 prev=xlinker
1664 continue
1667 -XCClinker)
1668 prev=xcclinker
1669 continue
1672 # Some other compiler flag.
1673 -* | +*)
1674 # Unknown arguments in both finalize_command and compile_command need
1675 # to be aesthetically quoted because they are evaled later.
1676 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
1677 case $arg in
1678 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
1679 arg="\"$arg\""
1681 esac
1684 *.$objext)
1685 # A standard object.
1686 objs="$objs $arg"
1689 *.lo)
1690 # A libtool-controlled object.
1692 # Check to see that this really is a libtool object.
1693 if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
1694 pic_object=
1695 non_pic_object=
1697 # Read the .lo file
1698 # If there is no directory component, then add one.
1699 case $arg in
1700 */* | *\\*) . $arg ;;
1701 *) . ./$arg ;;
1702 esac
1704 if test -z "$pic_object" || \
1705 test -z "$non_pic_object" ||
1706 test "$pic_object" = none && \
1707 test "$non_pic_object" = none; then
1708 $echo "$modename: cannot find name of object for \`$arg'" 1>&2
1709 exit $EXIT_FAILURE
1712 # Extract subdirectory from the argument.
1713 xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
1714 if test "X$xdir" = "X$arg"; then
1715 xdir=
1716 else
1717 xdir="$xdir/"
1720 if test "$pic_object" != none; then
1721 # Prepend the subdirectory the object is found in.
1722 pic_object="$xdir$pic_object"
1724 if test "$prev" = dlfiles; then
1725 if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
1726 dlfiles="$dlfiles $pic_object"
1727 prev=
1728 continue
1729 else
1730 # If libtool objects are unsupported, then we need to preload.
1731 prev=dlprefiles
1735 # CHECK ME: I think I busted this. -Ossama
1736 if test "$prev" = dlprefiles; then
1737 # Preload the old-style object.
1738 dlprefiles="$dlprefiles $pic_object"
1739 prev=
1742 # A PIC object.
1743 libobjs="$libobjs $pic_object"
1744 arg="$pic_object"
1747 # Non-PIC object.
1748 if test "$non_pic_object" != none; then
1749 # Prepend the subdirectory the object is found in.
1750 non_pic_object="$xdir$non_pic_object"
1752 # A standard non-PIC object
1753 non_pic_objects="$non_pic_objects $non_pic_object"
1754 if test -z "$pic_object" || test "$pic_object" = none ; then
1755 arg="$non_pic_object"
1758 else
1759 # Only an error if not doing a dry-run.
1760 if test -z "$run"; then
1761 $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
1762 exit $EXIT_FAILURE
1763 else
1764 # Dry-run case.
1766 # Extract subdirectory from the argument.
1767 xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
1768 if test "X$xdir" = "X$arg"; then
1769 xdir=
1770 else
1771 xdir="$xdir/"
1774 pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
1775 non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
1776 libobjs="$libobjs $pic_object"
1777 non_pic_objects="$non_pic_objects $non_pic_object"
1782 *.$libext)
1783 # An archive.
1784 deplibs="$deplibs $arg"
1785 old_deplibs="$old_deplibs $arg"
1786 continue
1789 *.la)
1790 # A libtool-controlled library.
1792 if test "$prev" = dlfiles; then
1793 # This library was specified with -dlopen.
1794 dlfiles="$dlfiles $arg"
1795 prev=
1796 elif test "$prev" = dlprefiles; then
1797 # The library was specified with -dlpreopen.
1798 dlprefiles="$dlprefiles $arg"
1799 prev=
1800 else
1801 deplibs="$deplibs $arg"
1803 continue
1806 # Some other compiler argument.
1808 # Unknown arguments in both finalize_command and compile_command need
1809 # to be aesthetically quoted because they are evaled later.
1810 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
1811 case $arg in
1812 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
1813 arg="\"$arg\""
1815 esac
1817 esac # arg
1819 # Now actually substitute the argument into the commands.
1820 if test -n "$arg"; then
1821 compile_command="$compile_command $arg"
1822 finalize_command="$finalize_command $arg"
1824 done # argument parsing loop
1826 if test -n "$prev"; then
1827 $echo "$modename: the \`$prevarg' option requires an argument" 1>&2
1828 $echo "$help" 1>&2
1829 exit $EXIT_FAILURE
1832 if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
1833 eval arg=\"$export_dynamic_flag_spec\"
1834 compile_command="$compile_command $arg"
1835 finalize_command="$finalize_command $arg"
1838 oldlibs=
1839 # calculate the name of the file, without its directory
1840 outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'`
1841 libobjs_save="$libobjs"
1843 if test -n "$shlibpath_var"; then
1844 # get the directories listed in $shlibpath_var
1845 eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
1846 else
1847 shlib_search_path=
1849 eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
1850 eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
1852 output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
1853 if test "X$output_objdir" = "X$output"; then
1854 output_objdir="$objdir"
1855 else
1856 output_objdir="$output_objdir/$objdir"
1858 # Create the object directory.
1859 if test ! -d "$output_objdir"; then
1860 $show "$mkdir $output_objdir"
1861 $run $mkdir $output_objdir
1862 status=$?
1863 if test "$status" -ne 0 && test ! -d "$output_objdir"; then
1864 exit $status
1868 # Determine the type of output
1869 case $output in
1871 $echo "$modename: you must specify an output file" 1>&2
1872 $echo "$help" 1>&2
1873 exit $EXIT_FAILURE
1875 *.$libext) linkmode=oldlib ;;
1876 *.lo | *.$objext) linkmode=obj ;;
1877 *.la) linkmode=lib ;;
1878 *) linkmode=prog ;; # Anything else should be a program.
1879 esac
1881 case $host in
1882 *cygwin* | *mingw* | *pw32*)
1883 # don't eliminate duplications in $postdeps and $predeps
1884 duplicate_compiler_generated_deps=yes
1887 duplicate_compiler_generated_deps=$duplicate_deps
1889 esac
1890 specialdeplibs=
1892 libs=
1893 # Find all interdependent deplibs by searching for libraries
1894 # that are linked more than once (e.g. -la -lb -la)
1895 for deplib in $deplibs; do
1896 if test "X$duplicate_deps" = "Xyes" ; then
1897 case "$libs " in
1898 *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
1899 esac
1901 libs="$libs $deplib"
1902 done
1904 if test "$linkmode" = lib; then
1905 libs="$predeps $libs $compiler_lib_search_path $postdeps"
1907 # Compute libraries that are listed more than once in $predeps
1908 # $postdeps and mark them as special (i.e., whose duplicates are
1909 # not to be eliminated).
1910 pre_post_deps=
1911 if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then
1912 for pre_post_dep in $predeps $postdeps; do
1913 case "$pre_post_deps " in
1914 *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
1915 esac
1916 pre_post_deps="$pre_post_deps $pre_post_dep"
1917 done
1919 pre_post_deps=
1922 deplibs=
1923 newdependency_libs=
1924 newlib_search_path=
1925 need_relink=no # whether we're linking any uninstalled libtool libraries
1926 notinst_deplibs= # not-installed libtool libraries
1927 notinst_path= # paths that contain not-installed libtool libraries
1928 case $linkmode in
1929 lib)
1930 passes="conv link"
1931 for file in $dlfiles $dlprefiles; do
1932 case $file in
1933 *.la) ;;
1935 $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2
1936 exit $EXIT_FAILURE
1938 esac
1939 done
1941 prog)
1942 compile_deplibs=
1943 finalize_deplibs=
1944 alldeplibs=no
1945 newdlfiles=
1946 newdlprefiles=
1947 passes="conv scan dlopen dlpreopen link"
1949 *) passes="conv"
1951 esac
1952 for pass in $passes; do
1953 if test "$linkmode,$pass" = "lib,link" ||
1954 test "$linkmode,$pass" = "prog,scan"; then
1955 libs="$deplibs"
1956 deplibs=
1958 if test "$linkmode" = prog; then
1959 case $pass in
1960 dlopen) libs="$dlfiles" ;;
1961 dlpreopen) libs="$dlprefiles" ;;
1962 link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
1963 esac
1965 if test "$pass" = dlopen; then
1966 # Collect dlpreopened libraries
1967 save_deplibs="$deplibs"
1968 deplibs=
1970 for deplib in $libs; do
1971 lib=
1972 found=no
1973 case $deplib in
1974 -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe)
1975 if test "$linkmode,$pass" = "prog,link"; then
1976 compile_deplibs="$deplib $compile_deplibs"
1977 finalize_deplibs="$deplib $finalize_deplibs"
1978 else
1979 deplibs="$deplib $deplibs"
1981 continue
1983 -l*)
1984 if test "$linkmode" != lib && test "$linkmode" != prog; then
1985 $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2
1986 continue
1988 if test "$pass" = conv; then
1989 deplibs="$deplib $deplibs"
1990 continue
1992 name=`$echo "X$deplib" | $Xsed -e 's/^-l//'`
1993 for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do
1994 for search_ext in .la $std_shrext .so .a; do
1995 # Search the libtool library
1996 lib="$searchdir/lib${name}${search_ext}"
1997 if test -f "$lib"; then
1998 if test "$search_ext" = ".la"; then
1999 found=yes
2000 else
2001 found=no
2003 break 2
2005 done
2006 done
2007 if test "$found" != yes; then
2008 # deplib doesn't seem to be a libtool library
2009 if test "$linkmode,$pass" = "prog,link"; then
2010 compile_deplibs="$deplib $compile_deplibs"
2011 finalize_deplibs="$deplib $finalize_deplibs"
2012 else
2013 deplibs="$deplib $deplibs"
2014 test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
2016 continue
2017 else # deplib is a libtool library
2018 # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
2019 # We need to do some special things here, and not later.
2020 if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
2021 case " $predeps $postdeps " in
2022 *" $deplib "*)
2023 if (${SED} -e '2q' $lib |
2024 grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
2025 library_names=
2026 old_library=
2027 case $lib in
2028 */* | *\\*) . $lib ;;
2029 *) . ./$lib ;;
2030 esac
2031 for l in $old_library $library_names; do
2032 ll="$l"
2033 done
2034 if test "X$ll" = "X$old_library" ; then # only static version available
2035 found=no
2036 ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
2037 test "X$ladir" = "X$lib" && ladir="."
2038 lib=$ladir/$old_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"
2046 continue
2050 *) ;;
2051 esac
2054 ;; # -l
2055 -L*)
2056 case $linkmode in
2057 lib)
2058 deplibs="$deplib $deplibs"
2059 test "$pass" = conv && continue
2060 newdependency_libs="$deplib $newdependency_libs"
2061 newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
2063 prog)
2064 if test "$pass" = conv; then
2065 deplibs="$deplib $deplibs"
2066 continue
2068 if test "$pass" = scan; then
2069 deplibs="$deplib $deplibs"
2070 else
2071 compile_deplibs="$deplib $compile_deplibs"
2072 finalize_deplibs="$deplib $finalize_deplibs"
2074 newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
2077 $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2
2079 esac # linkmode
2080 continue
2081 ;; # -L
2082 -R*)
2083 if test "$pass" = link; then
2084 dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'`
2085 # Make sure the xrpath contains only unique directories.
2086 case "$xrpath " in
2087 *" $dir "*) ;;
2088 *) xrpath="$xrpath $dir" ;;
2089 esac
2091 deplibs="$deplib $deplibs"
2092 continue
2094 *.la) lib="$deplib" ;;
2095 *.$libext)
2096 if test "$pass" = conv; then
2097 deplibs="$deplib $deplibs"
2098 continue
2100 case $linkmode in
2101 lib)
2102 valid_a_lib=no
2103 case $deplibs_check_method in
2104 match_pattern*)
2105 set dummy $deplibs_check_method
2106 match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
2107 if eval $echo \"$deplib\" 2>/dev/null \
2108 | $SED 10q \
2109 | $EGREP "$match_pattern_regex" > /dev/null; then
2110 valid_a_lib=yes
2113 pass_all)
2114 valid_a_lib=yes
2116 esac
2117 if test "$valid_a_lib" != yes; then
2118 $echo
2119 $echo "*** Warning: Trying to link with static lib archive $deplib."
2120 $echo "*** I have the capability to make that library automatically link in when"
2121 $echo "*** you link to this library. But I can only do this if you have a"
2122 $echo "*** shared version of the library, which you do not appear to have"
2123 $echo "*** because the file extensions .$libext of this argument makes me believe"
2124 $echo "*** that it is just a static archive that I should not used here."
2125 else
2126 $echo
2127 $echo "*** Warning: Linking the shared library $output against the"
2128 $echo "*** static library $deplib is not portable!"
2129 deplibs="$deplib $deplibs"
2131 continue
2133 prog)
2134 if test "$pass" != link; then
2135 deplibs="$deplib $deplibs"
2136 else
2137 compile_deplibs="$deplib $compile_deplibs"
2138 finalize_deplibs="$deplib $finalize_deplibs"
2140 continue
2142 esac # linkmode
2143 ;; # *.$libext
2144 *.lo | *.$objext)
2145 if test "$pass" = conv; then
2146 deplibs="$deplib $deplibs"
2147 elif test "$linkmode" = prog; then
2148 if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
2149 # If there is no dlopen support or we're linking statically,
2150 # we need to preload.
2151 newdlprefiles="$newdlprefiles $deplib"
2152 compile_deplibs="$deplib $compile_deplibs"
2153 finalize_deplibs="$deplib $finalize_deplibs"
2154 else
2155 newdlfiles="$newdlfiles $deplib"
2158 continue
2160 %DEPLIBS%)
2161 alldeplibs=yes
2162 continue
2164 esac # case $deplib
2165 if test "$found" = yes || test -f "$lib"; then :
2166 else
2167 $echo "$modename: cannot find the library \`$lib'" 1>&2
2168 exit $EXIT_FAILURE
2171 # Check to see that this really is a libtool archive.
2172 if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
2173 else
2174 $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
2175 exit $EXIT_FAILURE
2178 ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
2179 test "X$ladir" = "X$lib" && ladir="."
2181 dlname=
2182 dlopen=
2183 dlpreopen=
2184 libdir=
2185 library_names=
2186 old_library=
2187 # If the library was installed with an old release of libtool,
2188 # it will not redefine variables installed, or shouldnotlink
2189 installed=yes
2190 shouldnotlink=no
2192 # Read the .la file
2193 case $lib in
2194 */* | *\\*) . $lib ;;
2195 *) . ./$lib ;;
2196 esac
2198 if test "$linkmode,$pass" = "lib,link" ||
2199 test "$linkmode,$pass" = "prog,scan" ||
2200 { test "$linkmode" != prog && test "$linkmode" != lib; }; then
2201 test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
2202 test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
2205 if test "$pass" = conv; then
2206 # Only check for convenience libraries
2207 deplibs="$lib $deplibs"
2208 if test -z "$libdir"; then
2209 if test -z "$old_library"; then
2210 $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
2211 exit $EXIT_FAILURE
2213 # It is a libtool convenience library, so add in its objects.
2214 convenience="$convenience $ladir/$objdir/$old_library"
2215 old_convenience="$old_convenience $ladir/$objdir/$old_library"
2216 tmp_libs=
2217 for deplib in $dependency_libs; do
2218 deplibs="$deplib $deplibs"
2219 if test "X$duplicate_deps" = "Xyes" ; then
2220 case "$tmp_libs " in
2221 *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
2222 esac
2224 tmp_libs="$tmp_libs $deplib"
2225 done
2226 elif test "$linkmode" != prog && test "$linkmode" != lib; then
2227 $echo "$modename: \`$lib' is not a convenience library" 1>&2
2228 exit $EXIT_FAILURE
2230 continue
2231 fi # $pass = conv
2234 # Get the name of the library we link against.
2235 linklib=
2236 for l in $old_library $library_names; do
2237 linklib="$l"
2238 done
2239 if test -z "$linklib"; then
2240 $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
2241 exit $EXIT_FAILURE
2244 # This library was specified with -dlopen.
2245 if test "$pass" = dlopen; then
2246 if test -z "$libdir"; then
2247 $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2
2248 exit $EXIT_FAILURE
2250 if test -z "$dlname" ||
2251 test "$dlopen_support" != yes ||
2252 test "$build_libtool_libs" = no; then
2253 # If there is no dlname, no dlopen support or we're linking
2254 # statically, we need to preload. We also need to preload any
2255 # dependent libraries so libltdl's deplib preloader doesn't
2256 # bomb out in the load deplibs phase.
2257 dlprefiles="$dlprefiles $lib $dependency_libs"
2258 else
2259 newdlfiles="$newdlfiles $lib"
2261 continue
2262 fi # $pass = dlopen
2264 # We need an absolute path.
2265 case $ladir in
2266 [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
2268 abs_ladir=`cd "$ladir" && pwd`
2269 if test -z "$abs_ladir"; then
2270 $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2
2271 $echo "$modename: passing it literally to the linker, although it might fail" 1>&2
2272 abs_ladir="$ladir"
2275 esac
2276 laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
2278 # Find the relevant object directory and library name.
2279 if test "X$installed" = Xyes; then
2280 if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
2281 $echo "$modename: warning: library \`$lib' was moved." 1>&2
2282 dir="$ladir"
2283 absdir="$abs_ladir"
2284 libdir="$abs_ladir"
2285 else
2286 dir="$libdir"
2287 absdir="$libdir"
2289 else
2290 if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
2291 dir="$ladir"
2292 absdir="$abs_ladir"
2293 # Remove this search path later
2294 notinst_path="$notinst_path $abs_ladir"
2295 else
2296 dir="$ladir/$objdir"
2297 absdir="$abs_ladir/$objdir"
2298 # Remove this search path later
2299 notinst_path="$notinst_path $abs_ladir"
2301 fi # $installed = yes
2302 name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
2304 # This library was specified with -dlpreopen.
2305 if test "$pass" = dlpreopen; then
2306 if test -z "$libdir"; then
2307 $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2
2308 exit $EXIT_FAILURE
2310 # Prefer using a static library (so that no silly _DYNAMIC symbols
2311 # are required to link).
2312 if test -n "$old_library"; then
2313 newdlprefiles="$newdlprefiles $dir/$old_library"
2314 # Otherwise, use the dlname, so that lt_dlopen finds it.
2315 elif test -n "$dlname"; then
2316 newdlprefiles="$newdlprefiles $dir/$dlname"
2317 else
2318 newdlprefiles="$newdlprefiles $dir/$linklib"
2320 fi # $pass = dlpreopen
2322 if test -z "$libdir"; then
2323 # Link the convenience library
2324 if test "$linkmode" = lib; then
2325 deplibs="$dir/$old_library $deplibs"
2326 elif test "$linkmode,$pass" = "prog,link"; then
2327 compile_deplibs="$dir/$old_library $compile_deplibs"
2328 finalize_deplibs="$dir/$old_library $finalize_deplibs"
2329 else
2330 deplibs="$lib $deplibs" # used for prog,scan pass
2332 continue
2336 if test "$linkmode" = prog && test "$pass" != link; then
2337 newlib_search_path="$newlib_search_path $ladir"
2338 deplibs="$lib $deplibs"
2340 linkalldeplibs=no
2341 if test "$link_all_deplibs" != no || test -z "$library_names" ||
2342 test "$build_libtool_libs" = no; then
2343 linkalldeplibs=yes
2346 tmp_libs=
2347 for deplib in $dependency_libs; do
2348 case $deplib in
2349 -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test
2350 esac
2351 # Need to link against all dependency_libs?
2352 if test "$linkalldeplibs" = yes; then
2353 deplibs="$deplib $deplibs"
2354 else
2355 # Need to hardcode shared library paths
2356 # or/and link against static libraries
2357 newdependency_libs="$deplib $newdependency_libs"
2359 if test "X$duplicate_deps" = "Xyes" ; then
2360 case "$tmp_libs " in
2361 *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
2362 esac
2364 tmp_libs="$tmp_libs $deplib"
2365 done # for deplib
2366 continue
2367 fi # $linkmode = prog...
2369 if test "$linkmode,$pass" = "prog,link"; then
2370 if test -n "$library_names" &&
2371 { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
2372 # We need to hardcode the library path
2373 if test -n "$shlibpath_var"; then
2374 # Make sure the rpath contains only unique directories.
2375 case "$temp_rpath " in
2376 *" $dir "*) ;;
2377 *" $absdir "*) ;;
2378 *) temp_rpath="$temp_rpath $dir" ;;
2379 esac
2382 # Hardcode the library path.
2383 # Skip directories that are in the system default run-time
2384 # search path.
2385 case " $sys_lib_dlsearch_path " in
2386 *" $absdir "*) ;;
2388 case "$compile_rpath " in
2389 *" $absdir "*) ;;
2390 *) compile_rpath="$compile_rpath $absdir"
2391 esac
2393 esac
2394 case " $sys_lib_dlsearch_path " in
2395 *" $libdir "*) ;;
2397 case "$finalize_rpath " in
2398 *" $libdir "*) ;;
2399 *) finalize_rpath="$finalize_rpath $libdir"
2400 esac
2402 esac
2403 fi # $linkmode,$pass = prog,link...
2405 if test "$alldeplibs" = yes &&
2406 { test "$deplibs_check_method" = pass_all ||
2407 { test "$build_libtool_libs" = yes &&
2408 test -n "$library_names"; }; }; then
2409 # We only need to search for static libraries
2410 continue
2414 link_static=no # Whether the deplib will be linked statically
2415 if test -n "$library_names" &&
2416 { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
2417 if test "$installed" = no; then
2418 notinst_deplibs="$notinst_deplibs $lib"
2419 need_relink=yes
2421 # This is a shared library
2423 # Warn about portability, can't link against -module's on
2424 # some systems (darwin)
2425 if test "$shouldnotlink" = yes && test "$pass" = link ; then
2426 $echo
2427 if test "$linkmode" = prog; then
2428 $echo "*** Warning: Linking the executable $output against the loadable module"
2429 else
2430 $echo "*** Warning: Linking the shared library $output against the loadable module"
2432 $echo "*** $linklib is not portable!"
2434 if test "$linkmode" = lib &&
2435 test "$hardcode_into_libs" = yes; then
2436 # Hardcode the library path.
2437 # Skip directories that are in the system default run-time
2438 # search path.
2439 case " $sys_lib_dlsearch_path " in
2440 *" $absdir "*) ;;
2442 case "$compile_rpath " in
2443 *" $absdir "*) ;;
2444 *) compile_rpath="$compile_rpath $absdir"
2445 esac
2447 esac
2448 case " $sys_lib_dlsearch_path " in
2449 *" $libdir "*) ;;
2451 case "$finalize_rpath " in
2452 *" $libdir "*) ;;
2453 *) finalize_rpath="$finalize_rpath $libdir"
2454 esac
2456 esac
2459 if test -n "$old_archive_from_expsyms_cmds"; then
2460 # figure out the soname
2461 set dummy $library_names
2462 realname="$2"
2463 shift; shift
2464 libname=`eval \\$echo \"$libname_spec\"`
2465 # use dlname if we got it. it's perfectly good, no?
2466 if test -n "$dlname"; then
2467 soname="$dlname"
2468 elif test -n "$soname_spec"; then
2469 # bleh windows
2470 case $host in
2471 *cygwin* | mingw*)
2472 major=`expr $current - $age`
2473 versuffix="-$major"
2475 esac
2476 eval soname=\"$soname_spec\"
2477 else
2478 soname="$realname"
2481 # Make a new name for the extract_expsyms_cmds to use
2482 soroot="$soname"
2483 soname=`$echo $soroot | ${SED} -e 's/^.*\///'`
2484 newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a"
2486 # If the library has no export list, then create one now
2487 if test -f "$output_objdir/$soname-def"; then :
2488 else
2489 $show "extracting exported symbol list from \`$soname'"
2490 save_ifs="$IFS"; IFS='~'
2491 cmds=$extract_expsyms_cmds
2492 for cmd in $cmds; do
2493 IFS="$save_ifs"
2494 eval cmd=\"$cmd\"
2495 $show "$cmd"
2496 $run eval "$cmd" || exit $?
2497 done
2498 IFS="$save_ifs"
2501 # Create $newlib
2502 if test -f "$output_objdir/$newlib"; then :; else
2503 $show "generating import library for \`$soname'"
2504 save_ifs="$IFS"; IFS='~'
2505 cmds=$old_archive_from_expsyms_cmds
2506 for cmd in $cmds; do
2507 IFS="$save_ifs"
2508 eval cmd=\"$cmd\"
2509 $show "$cmd"
2510 $run eval "$cmd" || exit $?
2511 done
2512 IFS="$save_ifs"
2514 # make sure the library variables are pointing to the new library
2515 dir=$output_objdir
2516 linklib=$newlib
2517 fi # test -n "$old_archive_from_expsyms_cmds"
2519 if test "$linkmode" = prog || test "$mode" != relink; then
2520 add_shlibpath=
2521 add_dir=
2522 add=
2523 lib_linked=yes
2524 case $hardcode_action in
2525 immediate | unsupported)
2526 if test "$hardcode_direct" = no; then
2527 add="$dir/$linklib"
2528 case $host in
2529 *-*-sco3.2v5* ) add_dir="-L$dir" ;;
2530 *-*-darwin* )
2531 # if the lib is a module then we can not link against
2532 # it, someone is ignoring the new warnings I added
2533 if /usr/bin/file -L $add 2> /dev/null | $EGREP "bundle" >/dev/null ; then
2534 $echo "** Warning, lib $linklib is a module, not a shared library"
2535 if test -z "$old_library" ; then
2536 $echo
2537 $echo "** And there doesn't seem to be a static archive available"
2538 $echo "** The link will probably fail, sorry"
2539 else
2540 add="$dir/$old_library"
2543 esac
2544 elif test "$hardcode_minus_L" = no; then
2545 case $host in
2546 *-*-sunos*) add_shlibpath="$dir" ;;
2547 esac
2548 add_dir="-L$dir"
2549 add="-l$name"
2550 elif test "$hardcode_shlibpath_var" = no; then
2551 add_shlibpath="$dir"
2552 add="-l$name"
2553 else
2554 lib_linked=no
2557 relink)
2558 if test "$hardcode_direct" = yes; then
2559 add="$dir/$linklib"
2560 elif test "$hardcode_minus_L" = yes; then
2561 add_dir="-L$dir"
2562 # Try looking first in the location we're being installed to.
2563 if test -n "$inst_prefix_dir"; then
2564 case "$libdir" in
2565 [\\/]*)
2566 add_dir="$add_dir -L$inst_prefix_dir$libdir"
2568 esac
2570 add="-l$name"
2571 elif test "$hardcode_shlibpath_var" = yes; then
2572 add_shlibpath="$dir"
2573 add="-l$name"
2574 else
2575 lib_linked=no
2578 *) lib_linked=no ;;
2579 esac
2581 if test "$lib_linked" != yes; then
2582 $echo "$modename: configuration error: unsupported hardcode properties"
2583 exit $EXIT_FAILURE
2586 if test -n "$add_shlibpath"; then
2587 case :$compile_shlibpath: in
2588 *":$add_shlibpath:"*) ;;
2589 *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
2590 esac
2592 if test "$linkmode" = prog; then
2593 test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
2594 test -n "$add" && compile_deplibs="$add $compile_deplibs"
2595 else
2596 test -n "$add_dir" && deplibs="$add_dir $deplibs"
2597 test -n "$add" && deplibs="$add $deplibs"
2598 if test "$hardcode_direct" != yes && \
2599 test "$hardcode_minus_L" != yes && \
2600 test "$hardcode_shlibpath_var" = yes; then
2601 case :$finalize_shlibpath: in
2602 *":$libdir:"*) ;;
2603 *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
2604 esac
2609 if test "$linkmode" = prog || test "$mode" = relink; then
2610 add_shlibpath=
2611 add_dir=
2612 add=
2613 # Finalize command for both is simple: just hardcode it.
2614 if test "$hardcode_direct" = yes; then
2615 add="$libdir/$linklib"
2616 elif test "$hardcode_minus_L" = yes; then
2617 add_dir="-L$libdir"
2618 add="-l$name"
2619 elif test "$hardcode_shlibpath_var" = yes; then
2620 case :$finalize_shlibpath: in
2621 *":$libdir:"*) ;;
2622 *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
2623 esac
2624 add="-l$name"
2625 elif test "$hardcode_automatic" = yes; then
2626 if test -n "$inst_prefix_dir" &&
2627 test -f "$inst_prefix_dir$libdir/$linklib" ; then
2628 add="$inst_prefix_dir$libdir/$linklib"
2629 else
2630 add="$libdir/$linklib"
2632 else
2633 # We cannot seem to hardcode it, guess we'll fake it.
2634 add_dir="-L$libdir"
2635 # Try looking first in the location we're being installed to.
2636 if test -n "$inst_prefix_dir"; then
2637 case "$libdir" in
2638 [\\/]*)
2639 add_dir="$add_dir -L$inst_prefix_dir$libdir"
2641 esac
2643 add="-l$name"
2646 if test "$linkmode" = prog; then
2647 test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
2648 test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
2649 else
2650 test -n "$add_dir" && deplibs="$add_dir $deplibs"
2651 test -n "$add" && deplibs="$add $deplibs"
2654 elif test "$linkmode" = prog; then
2655 # Here we assume that one of hardcode_direct or hardcode_minus_L
2656 # is not unsupported. This is valid on all known static and
2657 # shared platforms.
2658 if test "$hardcode_direct" != unsupported; then
2659 test -n "$old_library" && linklib="$old_library"
2660 compile_deplibs="$dir/$linklib $compile_deplibs"
2661 finalize_deplibs="$dir/$linklib $finalize_deplibs"
2662 else
2663 compile_deplibs="-l$name -L$dir $compile_deplibs"
2664 finalize_deplibs="-l$name -L$dir $finalize_deplibs"
2666 elif test "$build_libtool_libs" = yes; then
2667 # Not a shared library
2668 if test "$deplibs_check_method" != pass_all; then
2669 # We're trying link a shared library against a static one
2670 # but the system doesn't support it.
2672 # Just print a warning and add the library to dependency_libs so
2673 # that the program can be linked against the static library.
2674 $echo
2675 $echo "*** Warning: This system can not link to static lib archive $lib."
2676 $echo "*** I have the capability to make that library automatically link in when"
2677 $echo "*** you link to this library. But I can only do this if you have a"
2678 $echo "*** shared version of the library, which you do not appear to have."
2679 if test "$module" = yes; then
2680 $echo "*** But as you try to build a module library, libtool will still create "
2681 $echo "*** a static module, that should work as long as the dlopening application"
2682 $echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
2683 if test -z "$global_symbol_pipe"; then
2684 $echo
2685 $echo "*** However, this would only work if libtool was able to extract symbol"
2686 $echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
2687 $echo "*** not find such a program. So, this module is probably useless."
2688 $echo "*** \`nm' from GNU binutils and a full rebuild may help."
2690 if test "$build_old_libs" = no; then
2691 build_libtool_libs=module
2692 build_old_libs=yes
2693 else
2694 build_libtool_libs=no
2697 else
2698 convenience="$convenience $dir/$old_library"
2699 old_convenience="$old_convenience $dir/$old_library"
2700 deplibs="$dir/$old_library $deplibs"
2701 link_static=yes
2703 fi # link shared/static library?
2705 if test "$linkmode" = lib; then
2706 if test -n "$dependency_libs" &&
2707 { test "$hardcode_into_libs" != yes ||
2708 test "$build_old_libs" = yes ||
2709 test "$link_static" = yes; }; then
2710 # Extract -R from dependency_libs
2711 temp_deplibs=
2712 for libdir in $dependency_libs; do
2713 case $libdir in
2714 -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'`
2715 case " $xrpath " in
2716 *" $temp_xrpath "*) ;;
2717 *) xrpath="$xrpath $temp_xrpath";;
2718 esac;;
2719 *) temp_deplibs="$temp_deplibs $libdir";;
2720 esac
2721 done
2722 dependency_libs="$temp_deplibs"
2725 newlib_search_path="$newlib_search_path $absdir"
2726 # Link against this library
2727 test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
2728 # ... and its dependency_libs
2729 tmp_libs=
2730 for deplib in $dependency_libs; do
2731 newdependency_libs="$deplib $newdependency_libs"
2732 if test "X$duplicate_deps" = "Xyes" ; then
2733 case "$tmp_libs " in
2734 *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
2735 esac
2737 tmp_libs="$tmp_libs $deplib"
2738 done
2740 if test "$link_all_deplibs" != no; then
2741 # Add the search paths of all dependency libraries
2742 for deplib in $dependency_libs; do
2743 case $deplib in
2744 -L*) path="$deplib" ;;
2745 *.la)
2746 dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'`
2747 test "X$dir" = "X$deplib" && dir="."
2748 # We need an absolute path.
2749 case $dir in
2750 [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
2752 absdir=`cd "$dir" && pwd`
2753 if test -z "$absdir"; then
2754 $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2
2755 absdir="$dir"
2758 esac
2759 if grep "^installed=no" $deplib > /dev/null; then
2760 path="$absdir/$objdir"
2761 else
2762 eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
2763 if test -z "$libdir"; then
2764 $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
2765 exit $EXIT_FAILURE
2767 if test "$absdir" != "$libdir"; then
2768 $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2
2770 path="$absdir"
2772 depdepl=
2773 case $host in
2774 *-*-darwin*)
2775 # we do not want to link against static libs,
2776 # but need to link against shared
2777 eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
2778 if test -n "$deplibrary_names" ; then
2779 for tmp in $deplibrary_names ; do
2780 depdepl=$tmp
2781 done
2782 if test -f "$path/$depdepl" ; then
2783 depdepl="$path/$depdepl"
2785 # do not add paths which are already there
2786 case " $newlib_search_path " in
2787 *" $path "*) ;;
2788 *) newlib_search_path="$newlib_search_path $path";;
2789 esac
2791 path=""
2794 path="-L$path"
2796 esac
2798 -l*)
2799 case $host in
2800 *-*-darwin*)
2801 # Again, we only want to link against shared libraries
2802 eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"`
2803 for tmp in $newlib_search_path ; do
2804 if test -f "$tmp/lib$tmp_libs.dylib" ; then
2805 eval depdepl="$tmp/lib$tmp_libs.dylib"
2806 break
2808 done
2809 path=""
2811 *) continue ;;
2812 esac
2814 *) continue ;;
2815 esac
2816 case " $deplibs " in
2817 *" $depdepl "*) ;;
2818 *) deplibs="$depdepl $deplibs" ;;
2819 esac
2820 case " $deplibs " in
2821 *" $path "*) ;;
2822 *) deplibs="$deplibs $path" ;;
2823 esac
2824 done
2825 fi # link_all_deplibs != no
2826 fi # linkmode = lib
2827 done # for deplib in $libs
2828 dependency_libs="$newdependency_libs"
2829 if test "$pass" = dlpreopen; then
2830 # Link the dlpreopened libraries before other libraries
2831 for deplib in $save_deplibs; do
2832 deplibs="$deplib $deplibs"
2833 done
2835 if test "$pass" != dlopen; then
2836 if test "$pass" != conv; then
2837 # Make sure lib_search_path contains only unique directories.
2838 lib_search_path=
2839 for dir in $newlib_search_path; do
2840 case "$lib_search_path " in
2841 *" $dir "*) ;;
2842 *) lib_search_path="$lib_search_path $dir" ;;
2843 esac
2844 done
2845 newlib_search_path=
2848 if test "$linkmode,$pass" != "prog,link"; then
2849 vars="deplibs"
2850 else
2851 vars="compile_deplibs finalize_deplibs"
2853 for var in $vars dependency_libs; do
2854 # Add libraries to $var in reverse order
2855 eval tmp_libs=\"\$$var\"
2856 new_libs=
2857 for deplib in $tmp_libs; do
2858 # FIXME: Pedantically, this is the right thing to do, so
2859 # that some nasty dependency loop isn't accidentally
2860 # broken:
2861 #new_libs="$deplib $new_libs"
2862 # Pragmatically, this seems to cause very few problems in
2863 # practice:
2864 case $deplib in
2865 -L*) new_libs="$deplib $new_libs" ;;
2866 -R*) ;;
2868 # And here is the reason: when a library appears more
2869 # than once as an explicit dependence of a library, or
2870 # is implicitly linked in more than once by the
2871 # compiler, it is considered special, and multiple
2872 # occurrences thereof are not removed. Compare this
2873 # with having the same library being listed as a
2874 # dependency of multiple other libraries: in this case,
2875 # we know (pedantically, we assume) the library does not
2876 # need to be listed more than once, so we keep only the
2877 # last copy. This is not always right, but it is rare
2878 # enough that we require users that really mean to play
2879 # such unportable linking tricks to link the library
2880 # using -Wl,-lname, so that libtool does not consider it
2881 # for duplicate removal.
2882 case " $specialdeplibs " in
2883 *" $deplib "*) new_libs="$deplib $new_libs" ;;
2885 case " $new_libs " in
2886 *" $deplib "*) ;;
2887 *) new_libs="$deplib $new_libs" ;;
2888 esac
2890 esac
2892 esac
2893 done
2894 tmp_libs=
2895 for deplib in $new_libs; do
2896 case $deplib in
2897 -L*)
2898 case " $tmp_libs " in
2899 *" $deplib "*) ;;
2900 *) tmp_libs="$tmp_libs $deplib" ;;
2901 esac
2903 *) tmp_libs="$tmp_libs $deplib" ;;
2904 esac
2905 done
2906 eval $var=\"$tmp_libs\"
2907 done # for var
2909 # Last step: remove runtime libs from dependency_libs
2910 # (they stay in deplibs)
2911 tmp_libs=
2912 for i in $dependency_libs ; do
2913 case " $predeps $postdeps $compiler_lib_search_path " in
2914 *" $i "*)
2915 i=""
2917 esac
2918 if test -n "$i" ; then
2919 tmp_libs="$tmp_libs $i"
2921 done
2922 dependency_libs=$tmp_libs
2923 done # for pass
2924 if test "$linkmode" = prog; then
2925 dlfiles="$newdlfiles"
2926 dlprefiles="$newdlprefiles"
2929 case $linkmode in
2930 oldlib)
2931 if test -n "$deplibs"; then
2932 $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2
2935 if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
2936 $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2
2939 if test -n "$rpath"; then
2940 $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2
2943 if test -n "$xrpath"; then
2944 $echo "$modename: warning: \`-R' is ignored for archives" 1>&2
2947 if test -n "$vinfo"; then
2948 $echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2
2951 if test -n "$release"; then
2952 $echo "$modename: warning: \`-release' is ignored for archives" 1>&2
2955 if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
2956 $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2
2959 # Now set the variables for building old libraries.
2960 build_libtool_libs=no
2961 oldlibs="$output"
2962 objs="$objs$old_deplibs"
2965 lib)
2966 # Make sure we only generate libraries of the form `libNAME.la'.
2967 case $outputname in
2968 lib*)
2969 name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
2970 eval shared_ext=\"$shrext_cmds\"
2971 eval libname=\"$libname_spec\"
2974 if test "$module" = no; then
2975 $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2
2976 $echo "$help" 1>&2
2977 exit $EXIT_FAILURE
2979 if test "$need_lib_prefix" != no; then
2980 # Add the "lib" prefix for modules if required
2981 name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
2982 eval shared_ext=\"$shrext_cmds\"
2983 eval libname=\"$libname_spec\"
2984 else
2985 libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
2988 esac
2990 if test -n "$objs"; then
2991 if test "$deplibs_check_method" != pass_all; then
2992 $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1
2993 exit $EXIT_FAILURE
2994 else
2995 $echo
2996 $echo "*** Warning: Linking the shared library $output against the non-libtool"
2997 $echo "*** objects $objs is not portable!"
2998 libobjs="$libobjs $objs"
3002 if test "$dlself" != no; then
3003 $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2
3006 set dummy $rpath
3007 if test "$#" -gt 2; then
3008 $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2
3010 install_libdir="$2"
3012 oldlibs=
3013 if test -z "$rpath"; then
3014 if test "$build_libtool_libs" = yes; then
3015 # Building a libtool convenience library.
3016 # Some compilers have problems with a `.al' extension so
3017 # convenience libraries should have the same extension an
3018 # archive normally would.
3019 oldlibs="$output_objdir/$libname.$libext $oldlibs"
3020 build_libtool_libs=convenience
3021 build_old_libs=yes
3024 if test -n "$vinfo"; then
3025 $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2
3028 if test -n "$release"; then
3029 $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2
3031 else
3033 # Parse the version information argument.
3034 save_ifs="$IFS"; IFS=':'
3035 set dummy $vinfo 0 0 0
3036 IFS="$save_ifs"
3038 if test -n "$8"; then
3039 $echo "$modename: too many parameters to \`-version-info'" 1>&2
3040 $echo "$help" 1>&2
3041 exit $EXIT_FAILURE
3044 # convert absolute version numbers to libtool ages
3045 # this retains compatibility with .la files and attempts
3046 # to make the code below a bit more comprehensible
3048 case $vinfo_number in
3049 yes)
3050 number_major="$2"
3051 number_minor="$3"
3052 number_revision="$4"
3054 # There are really only two kinds -- those that
3055 # use the current revision as the major version
3056 # and those that subtract age and use age as
3057 # a minor version. But, then there is irix
3058 # which has an extra 1 added just for fun
3060 case $version_type in
3061 darwin|linux|osf|windows)
3062 current=`expr $number_major + $number_minor`
3063 age="$number_minor"
3064 revision="$number_revision"
3066 freebsd-aout|freebsd-elf|sunos)
3067 current="$number_major"
3068 revision="$number_minor"
3069 age="0"
3071 irix|nonstopux)
3072 current=`expr $number_major + $number_minor - 1`
3073 age="$number_minor"
3074 revision="$number_minor"
3076 esac
3079 current="$2"
3080 revision="$3"
3081 age="$4"
3083 esac
3085 # Check that each of the things are valid numbers.
3086 case $current in
3087 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;;
3089 $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2
3090 $echo "$modename: \`$vinfo' is not valid version information" 1>&2
3091 exit $EXIT_FAILURE
3093 esac
3095 case $revision in
3096 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;;
3098 $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2
3099 $echo "$modename: \`$vinfo' is not valid version information" 1>&2
3100 exit $EXIT_FAILURE
3102 esac
3104 case $age in
3105 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;;
3107 $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2
3108 $echo "$modename: \`$vinfo' is not valid version information" 1>&2
3109 exit $EXIT_FAILURE
3111 esac
3113 if test "$age" -gt "$current"; then
3114 $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2
3115 $echo "$modename: \`$vinfo' is not valid version information" 1>&2
3116 exit $EXIT_FAILURE
3119 # Calculate the version variables.
3120 major=
3121 versuffix=
3122 verstring=
3123 case $version_type in
3124 none) ;;
3126 darwin)
3127 # Like Linux, but with the current version available in
3128 # verstring for coding it into the library header
3129 major=.`expr $current - $age`
3130 versuffix="$major.$age.$revision"
3131 # Darwin ld doesn't like 0 for these options...
3132 minor_current=`expr $current + 1`
3133 verstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
3136 freebsd-aout)
3137 major=".$current"
3138 versuffix=".$current.$revision";
3141 freebsd-elf)
3142 major=".$current"
3143 versuffix=".$current";
3146 irix | nonstopux)
3147 major=`expr $current - $age + 1`
3149 case $version_type in
3150 nonstopux) verstring_prefix=nonstopux ;;
3151 *) verstring_prefix=sgi ;;
3152 esac
3153 verstring="$verstring_prefix$major.$revision"
3155 # Add in all the interfaces that we are compatible with.
3156 loop=$revision
3157 while test "$loop" -ne 0; do
3158 iface=`expr $revision - $loop`
3159 loop=`expr $loop - 1`
3160 verstring="$verstring_prefix$major.$iface:$verstring"
3161 done
3163 # Before this point, $major must not contain `.'.
3164 major=.$major
3165 versuffix="$major.$revision"
3168 linux)
3169 major=.`expr $current - $age`
3170 versuffix="$major.$age.$revision"
3173 osf)
3174 major=.`expr $current - $age`
3175 versuffix=".$current.$age.$revision"
3176 verstring="$current.$age.$revision"
3178 # Add in all the interfaces that we are compatible with.
3179 loop=$age
3180 while test "$loop" -ne 0; do
3181 iface=`expr $current - $loop`
3182 loop=`expr $loop - 1`
3183 verstring="$verstring:${iface}.0"
3184 done
3186 # Make executables depend on our current version.
3187 verstring="$verstring:${current}.0"
3190 sunos)
3191 major=".$current"
3192 versuffix=".$current.$revision"
3195 windows)
3196 # Use '-' rather than '.', since we only want one
3197 # extension on DOS 8.3 filesystems.
3198 major=`expr $current - $age`
3199 versuffix="-$major"
3203 $echo "$modename: unknown library version type \`$version_type'" 1>&2
3204 $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
3205 exit $EXIT_FAILURE
3207 esac
3209 # Clear the version info if we defaulted, and they specified a release.
3210 if test -z "$vinfo" && test -n "$release"; then
3211 major=
3212 case $version_type in
3213 darwin)
3214 # we can't check for "0.0" in archive_cmds due to quoting
3215 # problems, so we reset it completely
3216 verstring=
3219 verstring="0.0"
3221 esac
3222 if test "$need_version" = no; then
3223 versuffix=
3224 else
3225 versuffix=".0.0"
3229 # Remove version info from name if versioning should be avoided
3230 if test "$avoid_version" = yes && test "$need_version" = no; then
3231 major=
3232 versuffix=
3233 verstring=""
3236 # Check to see if the archive will have undefined symbols.
3237 if test "$allow_undefined" = yes; then
3238 if test "$allow_undefined_flag" = unsupported; then
3239 $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2
3240 build_libtool_libs=no
3241 build_old_libs=yes
3243 else
3244 # Don't allow undefined symbols.
3245 allow_undefined_flag="$no_undefined_flag"
3249 if test "$mode" != relink; then
3250 # Remove our outputs, but don't remove object files since they
3251 # may have been created when compiling PIC objects.
3252 removelist=
3253 tempremovelist=`$echo "$output_objdir/*"`
3254 for p in $tempremovelist; do
3255 case $p in
3256 *.$objext)
3258 $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
3259 if test "X$precious_files_regex" != "X"; then
3260 if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
3261 then
3262 continue
3265 removelist="$removelist $p"
3267 *) ;;
3268 esac
3269 done
3270 if test -n "$removelist"; then
3271 $show "${rm}r $removelist"
3272 $run ${rm}r $removelist
3276 # Now set the variables for building old libraries.
3277 if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
3278 oldlibs="$oldlibs $output_objdir/$libname.$libext"
3280 # Transform .lo files to .o files.
3281 oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
3284 # Eliminate all temporary directories.
3285 for path in $notinst_path; do
3286 lib_search_path=`$echo "$lib_search_path " | ${SED} -e 's% $path % %g'`
3287 deplibs=`$echo "$deplibs " | ${SED} -e 's% -L$path % %g'`
3288 dependency_libs=`$echo "$dependency_libs " | ${SED} -e 's% -L$path % %g'`
3289 done
3291 if test -n "$xrpath"; then
3292 # If the user specified any rpath flags, then add them.
3293 temp_xrpath=
3294 for libdir in $xrpath; do
3295 temp_xrpath="$temp_xrpath -R$libdir"
3296 case "$finalize_rpath " in
3297 *" $libdir "*) ;;
3298 *) finalize_rpath="$finalize_rpath $libdir" ;;
3299 esac
3300 done
3301 if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
3302 dependency_libs="$temp_xrpath $dependency_libs"
3306 # Make sure dlfiles contains only unique files that won't be dlpreopened
3307 old_dlfiles="$dlfiles"
3308 dlfiles=
3309 for lib in $old_dlfiles; do
3310 case " $dlprefiles $dlfiles " in
3311 *" $lib "*) ;;
3312 *) dlfiles="$dlfiles $lib" ;;
3313 esac
3314 done
3316 # Make sure dlprefiles contains only unique files
3317 old_dlprefiles="$dlprefiles"
3318 dlprefiles=
3319 for lib in $old_dlprefiles; do
3320 case "$dlprefiles " in
3321 *" $lib "*) ;;
3322 *) dlprefiles="$dlprefiles $lib" ;;
3323 esac
3324 done
3326 if test "$build_libtool_libs" = yes; then
3327 if test -n "$rpath"; then
3328 case $host in
3329 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*)
3330 # these systems don't actually have a c library (as such)!
3332 *-*-rhapsody* | *-*-darwin1.[012])
3333 # Rhapsody C library is in the System framework
3334 deplibs="$deplibs -framework System"
3336 *-*-netbsd*)
3337 # Don't link with libc until the a.out ld.so is fixed.
3339 *-*-openbsd* | *-*-freebsd*)
3340 # Do not include libc due to us having libc/libc_r.
3341 test "X$arg" = "X-lc" && continue
3344 # Add libc to deplibs on all other systems if necessary.
3345 if test "$build_libtool_need_lc" = "yes"; then
3346 deplibs="$deplibs -lc"
3349 esac
3352 # Transform deplibs into only deplibs that can be linked in shared.
3353 name_save=$name
3354 libname_save=$libname
3355 release_save=$release
3356 versuffix_save=$versuffix
3357 major_save=$major
3358 # I'm not sure if I'm treating the release correctly. I think
3359 # release should show up in the -l (ie -lgmp5) so we don't want to
3360 # add it in twice. Is that correct?
3361 release=""
3362 versuffix=""
3363 major=""
3364 newdeplibs=
3365 droppeddeps=no
3366 case $deplibs_check_method in
3367 pass_all)
3368 # Don't check for shared/static. Everything works.
3369 # This might be a little naive. We might want to check
3370 # whether the library exists or not. But this is on
3371 # osf3 & osf4 and I'm not really sure... Just
3372 # implementing what was already the behavior.
3373 newdeplibs=$deplibs
3375 test_compile)
3376 # This code stresses the "libraries are programs" paradigm to its
3377 # limits. Maybe even breaks it. We compile a program, linking it
3378 # against the deplibs as a proxy for the library. Then we can check
3379 # whether they linked in statically or dynamically with ldd.
3380 $rm conftest.c
3381 cat > conftest.c <<EOF
3382 int main() { return 0; }
3384 $rm conftest
3385 $LTCC -o conftest conftest.c $deplibs
3386 if test "$?" -eq 0 ; then
3387 ldd_output=`ldd conftest`
3388 for i in $deplibs; do
3389 name="`expr $i : '-l\(.*\)'`"
3390 # If $name is empty we are operating on a -L argument.
3391 if test "$name" != "" && test "$name" -ne "0"; then
3392 if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
3393 case " $predeps $postdeps " in
3394 *" $i "*)
3395 newdeplibs="$newdeplibs $i"
3396 i=""
3398 esac
3400 if test -n "$i" ; then
3401 libname=`eval \\$echo \"$libname_spec\"`
3402 deplib_matches=`eval \\$echo \"$library_names_spec\"`
3403 set dummy $deplib_matches
3404 deplib_match=$2
3405 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
3406 newdeplibs="$newdeplibs $i"
3407 else
3408 droppeddeps=yes
3409 $echo
3410 $echo "*** Warning: dynamic linker does not accept needed library $i."
3411 $echo "*** I have the capability to make that library automatically link in when"
3412 $echo "*** you link to this library. But I can only do this if you have a"
3413 $echo "*** shared version of the library, which I believe you do not have"
3414 $echo "*** because a test_compile did reveal that the linker did not use it for"
3415 $echo "*** its dynamic dependency list that programs get resolved with at runtime."
3418 else
3419 newdeplibs="$newdeplibs $i"
3421 done
3422 else
3423 # Error occurred in the first compile. Let's try to salvage
3424 # the situation: Compile a separate program for each library.
3425 for i in $deplibs; do
3426 name="`expr $i : '-l\(.*\)'`"
3427 # If $name is empty we are operating on a -L argument.
3428 if test "$name" != "" && test "$name" != "0"; then
3429 $rm conftest
3430 $LTCC -o conftest conftest.c $i
3431 # Did it work?
3432 if test "$?" -eq 0 ; then
3433 ldd_output=`ldd conftest`
3434 if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
3435 case " $predeps $postdeps " in
3436 *" $i "*)
3437 newdeplibs="$newdeplibs $i"
3438 i=""
3440 esac
3442 if test -n "$i" ; then
3443 libname=`eval \\$echo \"$libname_spec\"`
3444 deplib_matches=`eval \\$echo \"$library_names_spec\"`
3445 set dummy $deplib_matches
3446 deplib_match=$2
3447 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
3448 newdeplibs="$newdeplibs $i"
3449 else
3450 droppeddeps=yes
3451 $echo
3452 $echo "*** Warning: dynamic linker does not accept needed library $i."
3453 $echo "*** I have the capability to make that library automatically link in when"
3454 $echo "*** you link to this library. But I can only do this if you have a"
3455 $echo "*** shared version of the library, which you do not appear to have"
3456 $echo "*** because a test_compile did reveal that the linker did not use this one"
3457 $echo "*** as a dynamic dependency that programs can get resolved with at runtime."
3460 else
3461 droppeddeps=yes
3462 $echo
3463 $echo "*** Warning! Library $i is needed by this library but I was not able to"
3464 $echo "*** make it link in! You will probably need to install it or some"
3465 $echo "*** library that it depends on before this library will be fully"
3466 $echo "*** functional. Installing it before continuing would be even better."
3468 else
3469 newdeplibs="$newdeplibs $i"
3471 done
3474 file_magic*)
3475 set dummy $deplibs_check_method
3476 file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
3477 for a_deplib in $deplibs; do
3478 name="`expr $a_deplib : '-l\(.*\)'`"
3479 # If $name is empty we are operating on a -L argument.
3480 if test "$name" != "" && test "$name" != "0"; then
3481 if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
3482 case " $predeps $postdeps " in
3483 *" $a_deplib "*)
3484 newdeplibs="$newdeplibs $a_deplib"
3485 a_deplib=""
3487 esac
3489 if test -n "$a_deplib" ; then
3490 libname=`eval \\$echo \"$libname_spec\"`
3491 for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
3492 potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
3493 for potent_lib in $potential_libs; do
3494 # Follow soft links.
3495 if ls -lLd "$potent_lib" 2>/dev/null \
3496 | grep " -> " >/dev/null; then
3497 continue
3499 # The statement above tries to avoid entering an
3500 # endless loop below, in case of cyclic links.
3501 # We might still enter an endless loop, since a link
3502 # loop can be closed while we follow links,
3503 # but so what?
3504 potlib="$potent_lib"
3505 while test -h "$potlib" 2>/dev/null; do
3506 potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
3507 case $potliblink in
3508 [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
3509 *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
3510 esac
3511 done
3512 if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \
3513 | ${SED} 10q \
3514 | $EGREP "$file_magic_regex" > /dev/null; then
3515 newdeplibs="$newdeplibs $a_deplib"
3516 a_deplib=""
3517 break 2
3519 done
3520 done
3522 if test -n "$a_deplib" ; then
3523 droppeddeps=yes
3524 $echo
3525 $echo "*** Warning: linker path does not have real file for library $a_deplib."
3526 $echo "*** I have the capability to make that library automatically link in when"
3527 $echo "*** you link to this library. But I can only do this if you have a"
3528 $echo "*** shared version of the library, which you do not appear to have"
3529 $echo "*** because I did check the linker path looking for a file starting"
3530 if test -z "$potlib" ; then
3531 $echo "*** with $libname but no candidates were found. (...for file magic test)"
3532 else
3533 $echo "*** with $libname and none of the candidates passed a file format test"
3534 $echo "*** using a file magic. Last file checked: $potlib"
3537 else
3538 # Add a -L argument.
3539 newdeplibs="$newdeplibs $a_deplib"
3541 done # Gone through all deplibs.
3543 match_pattern*)
3544 set dummy $deplibs_check_method
3545 match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
3546 for a_deplib in $deplibs; do
3547 name="`expr $a_deplib : '-l\(.*\)'`"
3548 # If $name is empty we are operating on a -L argument.
3549 if test -n "$name" && test "$name" != "0"; then
3550 if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
3551 case " $predeps $postdeps " in
3552 *" $a_deplib "*)
3553 newdeplibs="$newdeplibs $a_deplib"
3554 a_deplib=""
3556 esac
3558 if test -n "$a_deplib" ; then
3559 libname=`eval \\$echo \"$libname_spec\"`
3560 for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
3561 potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
3562 for potent_lib in $potential_libs; do
3563 potlib="$potent_lib" # see symlink-check above in file_magic test
3564 if eval $echo \"$potent_lib\" 2>/dev/null \
3565 | ${SED} 10q \
3566 | $EGREP "$match_pattern_regex" > /dev/null; then
3567 newdeplibs="$newdeplibs $a_deplib"
3568 a_deplib=""
3569 break 2
3571 done
3572 done
3574 if test -n "$a_deplib" ; then
3575 droppeddeps=yes
3576 $echo
3577 $echo "*** Warning: linker path does not have real file for library $a_deplib."
3578 $echo "*** I have the capability to make that library automatically link in when"
3579 $echo "*** you link to this library. But I can only do this if you have a"
3580 $echo "*** shared version of the library, which you do not appear to have"
3581 $echo "*** because I did check the linker path looking for a file starting"
3582 if test -z "$potlib" ; then
3583 $echo "*** with $libname but no candidates were found. (...for regex pattern test)"
3584 else
3585 $echo "*** with $libname and none of the candidates passed a file format test"
3586 $echo "*** using a regex pattern. Last file checked: $potlib"
3589 else
3590 # Add a -L argument.
3591 newdeplibs="$newdeplibs $a_deplib"
3593 done # Gone through all deplibs.
3595 none | unknown | *)
3596 newdeplibs=""
3597 tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \
3598 -e 's/ -[LR][^ ]*//g'`
3599 if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
3600 for i in $predeps $postdeps ; do
3601 # can't use Xsed below, because $i might contain '/'
3602 tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"`
3603 done
3605 if $echo "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' \
3606 | grep . >/dev/null; then
3607 $echo
3608 if test "X$deplibs_check_method" = "Xnone"; then
3609 $echo "*** Warning: inter-library dependencies are not supported in this platform."
3610 else
3611 $echo "*** Warning: inter-library dependencies are not known to be supported."
3613 $echo "*** All declared inter-library dependencies are being dropped."
3614 droppeddeps=yes
3617 esac
3618 versuffix=$versuffix_save
3619 major=$major_save
3620 release=$release_save
3621 libname=$libname_save
3622 name=$name_save
3624 case $host in
3625 *-*-rhapsody* | *-*-darwin1.[012])
3626 # On Rhapsody replace the C library is the System framework
3627 newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'`
3629 esac
3631 if test "$droppeddeps" = yes; then
3632 if test "$module" = yes; then
3633 $echo
3634 $echo "*** Warning: libtool could not satisfy all declared inter-library"
3635 $echo "*** dependencies of module $libname. Therefore, libtool will create"
3636 $echo "*** a static module, that should work as long as the dlopening"
3637 $echo "*** application is linked with the -dlopen flag."
3638 if test -z "$global_symbol_pipe"; then
3639 $echo
3640 $echo "*** However, this would only work if libtool was able to extract symbol"
3641 $echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
3642 $echo "*** not find such a program. So, this module is probably useless."
3643 $echo "*** \`nm' from GNU binutils and a full rebuild may help."
3645 if test "$build_old_libs" = no; then
3646 oldlibs="$output_objdir/$libname.$libext"
3647 build_libtool_libs=module
3648 build_old_libs=yes
3649 else
3650 build_libtool_libs=no
3652 else
3653 $echo "*** The inter-library dependencies that have been dropped here will be"
3654 $echo "*** automatically added whenever a program is linked with this library"
3655 $echo "*** or is declared to -dlopen it."
3657 if test "$allow_undefined" = no; then
3658 $echo
3659 $echo "*** Since this library must not contain undefined symbols,"
3660 $echo "*** because either the platform does not support them or"
3661 $echo "*** it was explicitly requested with -no-undefined,"
3662 $echo "*** libtool will only create a static version of it."
3663 if test "$build_old_libs" = no; then
3664 oldlibs="$output_objdir/$libname.$libext"
3665 build_libtool_libs=module
3666 build_old_libs=yes
3667 else
3668 build_libtool_libs=no
3673 # Done checking deplibs!
3674 deplibs=$newdeplibs
3677 # All the library-specific variables (install_libdir is set above).
3678 library_names=
3679 old_library=
3680 dlname=
3682 # Test again, we may have decided not to build it any more
3683 if test "$build_libtool_libs" = yes; then
3684 if test "$hardcode_into_libs" = yes; then
3685 # Hardcode the library paths
3686 hardcode_libdirs=
3687 dep_rpath=
3688 rpath="$finalize_rpath"
3689 test "$mode" != relink && rpath="$compile_rpath$rpath"
3690 for libdir in $rpath; do
3691 if test -n "$hardcode_libdir_flag_spec"; then
3692 if test -n "$hardcode_libdir_separator"; then
3693 if test -z "$hardcode_libdirs"; then
3694 hardcode_libdirs="$libdir"
3695 else
3696 # Just accumulate the unique libdirs.
3697 case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
3698 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
3701 hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
3703 esac
3705 else
3706 eval flag=\"$hardcode_libdir_flag_spec\"
3707 dep_rpath="$dep_rpath $flag"
3709 elif test -n "$runpath_var"; then
3710 case "$perm_rpath " in
3711 *" $libdir "*) ;;
3712 *) perm_rpath="$perm_rpath $libdir" ;;
3713 esac
3715 done
3716 # Substitute the hardcoded libdirs into the rpath.
3717 if test -n "$hardcode_libdir_separator" &&
3718 test -n "$hardcode_libdirs"; then
3719 libdir="$hardcode_libdirs"
3720 if test -n "$hardcode_libdir_flag_spec_ld"; then
3721 eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
3722 else
3723 eval dep_rpath=\"$hardcode_libdir_flag_spec\"
3726 if test -n "$runpath_var" && test -n "$perm_rpath"; then
3727 # We should set the runpath_var.
3728 rpath=
3729 for dir in $perm_rpath; do
3730 rpath="$rpath$dir:"
3731 done
3732 eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
3734 test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
3737 shlibpath="$finalize_shlibpath"
3738 test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
3739 if test -n "$shlibpath"; then
3740 eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
3743 # Get the real and link names of the library.
3744 eval shared_ext=\"$shrext_cmds\"
3745 eval library_names=\"$library_names_spec\"
3746 set dummy $library_names
3747 realname="$2"
3748 shift; shift
3750 if test -n "$soname_spec"; then
3751 eval soname=\"$soname_spec\"
3752 else
3753 soname="$realname"
3755 if test -z "$dlname"; then
3756 dlname=$soname
3759 lib="$output_objdir/$realname"
3760 for link
3762 linknames="$linknames $link"
3763 done
3765 # Use standard objects if they are pic
3766 test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
3768 # Prepare the list of exported symbols
3769 if test -z "$export_symbols"; then
3770 if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
3771 $show "generating symbol list for \`$libname.la'"
3772 export_symbols="$output_objdir/$libname.exp"
3773 $run $rm $export_symbols
3774 cmds=$export_symbols_cmds
3775 save_ifs="$IFS"; IFS='~'
3776 for cmd in $cmds; do
3777 IFS="$save_ifs"
3778 eval cmd=\"$cmd\"
3779 if len=`expr "X$cmd" : ".*"` &&
3780 test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
3781 $show "$cmd"
3782 $run eval "$cmd" || exit $?
3783 skipped_export=false
3784 else
3785 # The command line is too long to execute in one step.
3786 $show "using reloadable object file for export list..."
3787 skipped_export=:
3789 done
3790 IFS="$save_ifs"
3791 if test -n "$export_symbols_regex"; then
3792 $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\""
3793 $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
3794 $show "$mv \"${export_symbols}T\" \"$export_symbols\""
3795 $run eval '$mv "${export_symbols}T" "$export_symbols"'
3800 if test -n "$export_symbols" && test -n "$include_expsyms"; then
3801 $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"'
3804 tmp_deplibs=
3805 for test_deplib in $deplibs; do
3806 case " $convenience " in
3807 *" $test_deplib "*) ;;
3809 tmp_deplibs="$tmp_deplibs $test_deplib"
3811 esac
3812 done
3813 deplibs="$tmp_deplibs"
3815 if test -n "$convenience"; then
3816 if test -n "$whole_archive_flag_spec"; then
3817 save_libobjs=$libobjs
3818 eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
3819 else
3820 gentop="$output_objdir/${outputname}x"
3821 generated="$generated $gentop"
3823 func_extract_archives $gentop $convenience
3824 libobjs="$libobjs $func_extract_archives_result"
3828 if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
3829 eval flag=\"$thread_safe_flag_spec\"
3830 linker_flags="$linker_flags $flag"
3833 # Make a backup of the uninstalled library when relinking
3834 if test "$mode" = relink; then
3835 $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $?
3838 # Do each of the archive commands.
3839 if test "$module" = yes && test -n "$module_cmds" ; then
3840 if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
3841 eval test_cmds=\"$module_expsym_cmds\"
3842 cmds=$module_expsym_cmds
3843 else
3844 eval test_cmds=\"$module_cmds\"
3845 cmds=$module_cmds
3847 else
3848 if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
3849 eval test_cmds=\"$archive_expsym_cmds\"
3850 cmds=$archive_expsym_cmds
3851 else
3852 eval test_cmds=\"$archive_cmds\"
3853 cmds=$archive_cmds
3857 if test "X$skipped_export" != "X:" && len=`expr "X$test_cmds" : ".*"` &&
3858 test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
3860 else
3861 # The command line is too long to link in one step, link piecewise.
3862 $echo "creating reloadable object files..."
3864 # Save the value of $output and $libobjs because we want to
3865 # use them later. If we have whole_archive_flag_spec, we
3866 # want to use save_libobjs as it was before
3867 # whole_archive_flag_spec was expanded, because we can't
3868 # assume the linker understands whole_archive_flag_spec.
3869 # This may have to be revisited, in case too many
3870 # convenience libraries get linked in and end up exceeding
3871 # the spec.
3872 if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
3873 save_libobjs=$libobjs
3875 save_output=$output
3877 # Clear the reloadable object creation command queue and
3878 # initialize k to one.
3879 test_cmds=
3880 concat_cmds=
3881 objlist=
3882 delfiles=
3883 last_robj=
3885 output=$output_objdir/$save_output-${k}.$objext
3886 # Loop over the list of objects to be linked.
3887 for obj in $save_libobjs
3889 eval test_cmds=\"$reload_cmds $objlist $last_robj\"
3890 if test "X$objlist" = X ||
3891 { len=`expr "X$test_cmds" : ".*"` &&
3892 test "$len" -le "$max_cmd_len"; }; then
3893 objlist="$objlist $obj"
3894 else
3895 # The command $test_cmds is almost too long, add a
3896 # command to the queue.
3897 if test "$k" -eq 1 ; then
3898 # The first file doesn't have a previous command to add.
3899 eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
3900 else
3901 # All subsequent reloadable object files will link in
3902 # the last one created.
3903 eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\"
3905 last_robj=$output_objdir/$save_output-${k}.$objext
3906 k=`expr $k + 1`
3907 output=$output_objdir/$save_output-${k}.$objext
3908 objlist=$obj
3909 len=1
3911 done
3912 # Handle the remaining objects by creating one last
3913 # reloadable object file. All subsequent reloadable object
3914 # files will link in the last one created.
3915 test -z "$concat_cmds" || concat_cmds=$concat_cmds~
3916 eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
3918 if ${skipped_export-false}; then
3919 $show "generating symbol list for \`$libname.la'"
3920 export_symbols="$output_objdir/$libname.exp"
3921 $run $rm $export_symbols
3922 libobjs=$output
3923 # Append the command to create the export file.
3924 eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\"
3927 # Set up a command to remove the reloadale object files
3928 # after they are used.
3930 while test "$i" -lt "$k"
3932 i=`expr $i + 1`
3933 delfiles="$delfiles $output_objdir/$save_output-${i}.$objext"
3934 done
3936 $echo "creating a temporary reloadable object file: $output"
3938 # Loop through the commands generated above and execute them.
3939 save_ifs="$IFS"; IFS='~'
3940 for cmd in $concat_cmds; do
3941 IFS="$save_ifs"
3942 $show "$cmd"
3943 $run eval "$cmd" || exit $?
3944 done
3945 IFS="$save_ifs"
3947 libobjs=$output
3948 # Restore the value of output.
3949 output=$save_output
3951 if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
3952 eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
3954 # Expand the library linking commands again to reset the
3955 # value of $libobjs for piecewise linking.
3957 # Do each of the archive commands.
3958 if test "$module" = yes && test -n "$module_cmds" ; then
3959 if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
3960 cmds=$module_expsym_cmds
3961 else
3962 cmds=$module_cmds
3964 else
3965 if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
3966 cmds=$archive_expsym_cmds
3967 else
3968 cmds=$archive_cmds
3972 # Append the command to remove the reloadable object files
3973 # to the just-reset $cmds.
3974 eval cmds=\"\$cmds~\$rm $delfiles\"
3976 save_ifs="$IFS"; IFS='~'
3977 for cmd in $cmds; do
3978 IFS="$save_ifs"
3979 eval cmd=\"$cmd\"
3980 $show "$cmd"
3981 $run eval "$cmd" || exit $?
3982 done
3983 IFS="$save_ifs"
3985 # Restore the uninstalled library and exit
3986 if test "$mode" = relink; then
3987 $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $?
3988 exit $EXIT_SUCCESS
3991 # Create links to the real library.
3992 for linkname in $linknames; do
3993 if test "$realname" != "$linkname"; then
3994 $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)"
3995 $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $?
3997 done
3999 # If -module or -export-dynamic was specified, set the dlname.
4000 if test "$module" = yes || test "$export_dynamic" = yes; then
4001 # On all known operating systems, these are identical.
4002 dlname="$soname"
4007 obj)
4008 if test -n "$deplibs"; then
4009 $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2
4012 if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
4013 $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2
4016 if test -n "$rpath"; then
4017 $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2
4020 if test -n "$xrpath"; then
4021 $echo "$modename: warning: \`-R' is ignored for objects" 1>&2
4024 if test -n "$vinfo"; then
4025 $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2
4028 if test -n "$release"; then
4029 $echo "$modename: warning: \`-release' is ignored for objects" 1>&2
4032 case $output in
4033 *.lo)
4034 if test -n "$objs$old_deplibs"; then
4035 $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2
4036 exit $EXIT_FAILURE
4038 libobj="$output"
4039 obj=`$echo "X$output" | $Xsed -e "$lo2o"`
4042 libobj=
4043 obj="$output"
4045 esac
4047 # Delete the old objects.
4048 $run $rm $obj $libobj
4050 # Objects from convenience libraries. This assumes
4051 # single-version convenience libraries. Whenever we create
4052 # different ones for PIC/non-PIC, this we'll have to duplicate
4053 # the extraction.
4054 reload_conv_objs=
4055 gentop=
4056 # reload_cmds runs $LD directly, so let us get rid of
4057 # -Wl from whole_archive_flag_spec
4060 if test -n "$convenience"; then
4061 if test -n "$whole_archive_flag_spec"; then
4062 eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\"
4063 else
4064 gentop="$output_objdir/${obj}x"
4065 generated="$generated $gentop"
4067 func_extract_archives $gentop $convenience
4068 reload_conv_objs="$reload_objs $func_extract_archives_result"
4072 # Create the old-style object.
4073 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
4075 output="$obj"
4076 cmds=$reload_cmds
4077 save_ifs="$IFS"; IFS='~'
4078 for cmd in $cmds; do
4079 IFS="$save_ifs"
4080 eval cmd=\"$cmd\"
4081 $show "$cmd"
4082 $run eval "$cmd" || exit $?
4083 done
4084 IFS="$save_ifs"
4086 # Exit if we aren't doing a library object file.
4087 if test -z "$libobj"; then
4088 if test -n "$gentop"; then
4089 $show "${rm}r $gentop"
4090 $run ${rm}r $gentop
4093 exit $EXIT_SUCCESS
4096 if test "$build_libtool_libs" != yes; then
4097 if test -n "$gentop"; then
4098 $show "${rm}r $gentop"
4099 $run ${rm}r $gentop
4102 # Create an invalid libtool object if no PIC, so that we don't
4103 # accidentally link it into a program.
4104 # $show "echo timestamp > $libobj"
4105 # $run eval "echo timestamp > $libobj" || exit $?
4106 exit $EXIT_SUCCESS
4109 if test -n "$pic_flag" || test "$pic_mode" != default; then
4110 # Only do commands if we really have different PIC objects.
4111 reload_objs="$libobjs $reload_conv_objs"
4112 output="$libobj"
4113 cmds=$reload_cmds
4114 save_ifs="$IFS"; IFS='~'
4115 for cmd in $cmds; do
4116 IFS="$save_ifs"
4117 eval cmd=\"$cmd\"
4118 $show "$cmd"
4119 $run eval "$cmd" || exit $?
4120 done
4121 IFS="$save_ifs"
4124 if test -n "$gentop"; then
4125 $show "${rm}r $gentop"
4126 $run ${rm}r $gentop
4129 exit $EXIT_SUCCESS
4132 prog)
4133 case $host in
4134 *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;;
4135 esac
4136 if test -n "$vinfo"; then
4137 $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2
4140 if test -n "$release"; then
4141 $echo "$modename: warning: \`-release' is ignored for programs" 1>&2
4144 if test "$preload" = yes; then
4145 if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown &&
4146 test "$dlopen_self_static" = unknown; then
4147 $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support."
4151 case $host in
4152 *-*-rhapsody* | *-*-darwin1.[012])
4153 # On Rhapsody replace the C library is the System framework
4154 compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
4155 finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
4157 esac
4159 case $host in
4160 *darwin*)
4161 # Don't allow lazy linking, it breaks C++ global constructors
4162 if test "$tagname" = CXX ; then
4163 compile_command="$compile_command ${wl}-bind_at_load"
4164 finalize_command="$finalize_command ${wl}-bind_at_load"
4167 esac
4169 compile_command="$compile_command $compile_deplibs"
4170 finalize_command="$finalize_command $finalize_deplibs"
4172 if test -n "$rpath$xrpath"; then
4173 # If the user specified any rpath flags, then add them.
4174 for libdir in $rpath $xrpath; do
4175 # This is the magic to use -rpath.
4176 case "$finalize_rpath " in
4177 *" $libdir "*) ;;
4178 *) finalize_rpath="$finalize_rpath $libdir" ;;
4179 esac
4180 done
4183 # Now hardcode the library paths
4184 rpath=
4185 hardcode_libdirs=
4186 for libdir in $compile_rpath $finalize_rpath; do
4187 if test -n "$hardcode_libdir_flag_spec"; then
4188 if test -n "$hardcode_libdir_separator"; then
4189 if test -z "$hardcode_libdirs"; then
4190 hardcode_libdirs="$libdir"
4191 else
4192 # Just accumulate the unique libdirs.
4193 case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
4194 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
4197 hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
4199 esac
4201 else
4202 eval flag=\"$hardcode_libdir_flag_spec\"
4203 rpath="$rpath $flag"
4205 elif test -n "$runpath_var"; then
4206 case "$perm_rpath " in
4207 *" $libdir "*) ;;
4208 *) perm_rpath="$perm_rpath $libdir" ;;
4209 esac
4211 case $host in
4212 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
4213 case :$dllsearchpath: in
4214 *":$libdir:"*) ;;
4215 *) dllsearchpath="$dllsearchpath:$libdir";;
4216 esac
4218 esac
4219 done
4220 # Substitute the hardcoded libdirs into the rpath.
4221 if test -n "$hardcode_libdir_separator" &&
4222 test -n "$hardcode_libdirs"; then
4223 libdir="$hardcode_libdirs"
4224 eval rpath=\" $hardcode_libdir_flag_spec\"
4226 compile_rpath="$rpath"
4228 rpath=
4229 hardcode_libdirs=
4230 for libdir in $finalize_rpath; do
4231 if test -n "$hardcode_libdir_flag_spec"; then
4232 if test -n "$hardcode_libdir_separator"; then
4233 if test -z "$hardcode_libdirs"; then
4234 hardcode_libdirs="$libdir"
4235 else
4236 # Just accumulate the unique libdirs.
4237 case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
4238 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
4241 hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
4243 esac
4245 else
4246 eval flag=\"$hardcode_libdir_flag_spec\"
4247 rpath="$rpath $flag"
4249 elif test -n "$runpath_var"; then
4250 case "$finalize_perm_rpath " in
4251 *" $libdir "*) ;;
4252 *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
4253 esac
4255 done
4256 # Substitute the hardcoded libdirs into the rpath.
4257 if test -n "$hardcode_libdir_separator" &&
4258 test -n "$hardcode_libdirs"; then
4259 libdir="$hardcode_libdirs"
4260 eval rpath=\" $hardcode_libdir_flag_spec\"
4262 finalize_rpath="$rpath"
4264 if test -n "$libobjs" && test "$build_old_libs" = yes; then
4265 # Transform all the library objects into standard objects.
4266 compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
4267 finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
4270 dlsyms=
4271 if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
4272 if test -n "$NM" && test -n "$global_symbol_pipe"; then
4273 dlsyms="${outputname}S.c"
4274 else
4275 $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2
4279 if test -n "$dlsyms"; then
4280 case $dlsyms in
4281 "") ;;
4282 *.c)
4283 # Discover the nlist of each of the dlfiles.
4284 nlist="$output_objdir/${outputname}.nm"
4286 $show "$rm $nlist ${nlist}S ${nlist}T"
4287 $run $rm "$nlist" "${nlist}S" "${nlist}T"
4289 # Parse the name list into a source file.
4290 $show "creating $output_objdir/$dlsyms"
4292 test -z "$run" && $echo > "$output_objdir/$dlsyms" "\
4293 /* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */
4294 /* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */
4296 #ifdef __cplusplus
4297 extern \"C\" {
4298 #endif
4300 /* Prevent the only kind of declaration conflicts we can make. */
4301 #define lt_preloaded_symbols some_other_symbol
4303 /* External symbol declarations for the compiler. */\
4306 if test "$dlself" = yes; then
4307 $show "generating symbol list for \`$output'"
4309 test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist"
4311 # Add our own program objects to the symbol list.
4312 progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
4313 for arg in $progfiles; do
4314 $show "extracting global C symbols from \`$arg'"
4315 $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
4316 done
4318 if test -n "$exclude_expsyms"; then
4319 $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
4320 $run eval '$mv "$nlist"T "$nlist"'
4323 if test -n "$export_symbols_regex"; then
4324 $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
4325 $run eval '$mv "$nlist"T "$nlist"'
4328 # Prepare the list of exported symbols
4329 if test -z "$export_symbols"; then
4330 export_symbols="$output_objdir/$outputname.exp"
4331 $run $rm $export_symbols
4332 $run eval "${SED} -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
4333 else
4334 $run eval "${SED} -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
4335 $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
4336 $run eval 'mv "$nlist"T "$nlist"'
4340 for arg in $dlprefiles; do
4341 $show "extracting global C symbols from \`$arg'"
4342 name=`$echo "$arg" | ${SED} -e 's%^.*/%%'`
4343 $run eval '$echo ": $name " >> "$nlist"'
4344 $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
4345 done
4347 if test -z "$run"; then
4348 # Make sure we have at least an empty file.
4349 test -f "$nlist" || : > "$nlist"
4351 if test -n "$exclude_expsyms"; then
4352 $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
4353 $mv "$nlist"T "$nlist"
4356 # Try sorting and uniquifying the output.
4357 if grep -v "^: " < "$nlist" |
4358 if sort -k 3 </dev/null >/dev/null 2>&1; then
4359 sort -k 3
4360 else
4361 sort +2
4362 fi |
4363 uniq > "$nlist"S; then
4365 else
4366 grep -v "^: " < "$nlist" > "$nlist"S
4369 if test -f "$nlist"S; then
4370 eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"'
4371 else
4372 $echo '/* NONE */' >> "$output_objdir/$dlsyms"
4375 $echo >> "$output_objdir/$dlsyms" "\
4377 #undef lt_preloaded_symbols
4379 #if defined (__STDC__) && __STDC__
4380 # define lt_ptr void *
4381 #else
4382 # define lt_ptr char *
4383 # define const
4384 #endif
4386 /* The mapping between symbol names and symbols. */
4387 const struct {
4388 const char *name;
4389 lt_ptr address;
4391 lt_preloaded_symbols[] =
4395 eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms"
4397 $echo >> "$output_objdir/$dlsyms" "\
4398 {0, (lt_ptr) 0}
4401 /* This works around a problem in FreeBSD linker */
4402 #ifdef FREEBSD_WORKAROUND
4403 static const void *lt_preloaded_setup() {
4404 return lt_preloaded_symbols;
4406 #endif
4408 #ifdef __cplusplus
4410 #endif\
4414 pic_flag_for_symtable=
4415 case $host in
4416 # compiling the symbol table file with pic_flag works around
4417 # a FreeBSD bug that causes programs to crash when -lm is
4418 # linked before any other PIC object. But we must not use
4419 # pic_flag when linking with -static. The problem exists in
4420 # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
4421 *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
4422 case "$compile_command " in
4423 *" -static "*) ;;
4424 *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";;
4425 esac;;
4426 *-*-hpux*)
4427 case "$compile_command " in
4428 *" -static "*) ;;
4429 *) pic_flag_for_symtable=" $pic_flag";;
4430 esac
4431 esac
4433 # Now compile the dynamic symbol file.
4434 $show "(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")"
4435 $run eval '(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $?
4437 # Clean up the generated files.
4438 $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T"
4439 $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T"
4441 # Transform the symbol file into the correct name.
4442 compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
4443 finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
4446 $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
4447 exit $EXIT_FAILURE
4449 esac
4450 else
4451 # We keep going just in case the user didn't refer to
4452 # lt_preloaded_symbols. The linker will fail if global_symbol_pipe
4453 # really was required.
4455 # Nullify the symbol file.
4456 compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
4457 finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
4460 if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
4461 # Replace the output file specification.
4462 compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
4463 link_command="$compile_command$compile_rpath"
4465 # We have no uninstalled library dependencies, so finalize right now.
4466 $show "$link_command"
4467 $run eval "$link_command"
4468 status=$?
4470 # Delete the generated files.
4471 if test -n "$dlsyms"; then
4472 $show "$rm $output_objdir/${outputname}S.${objext}"
4473 $run $rm "$output_objdir/${outputname}S.${objext}"
4476 exit $status
4479 if test -n "$shlibpath_var"; then
4480 # We should set the shlibpath_var
4481 rpath=
4482 for dir in $temp_rpath; do
4483 case $dir in
4484 [\\/]* | [A-Za-z]:[\\/]*)
4485 # Absolute path.
4486 rpath="$rpath$dir:"
4489 # Relative path: add a thisdir entry.
4490 rpath="$rpath\$thisdir/$dir:"
4492 esac
4493 done
4494 temp_rpath="$rpath"
4497 if test -n "$compile_shlibpath$finalize_shlibpath"; then
4498 compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
4500 if test -n "$finalize_shlibpath"; then
4501 finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
4504 compile_var=
4505 finalize_var=
4506 if test -n "$runpath_var"; then
4507 if test -n "$perm_rpath"; then
4508 # We should set the runpath_var.
4509 rpath=
4510 for dir in $perm_rpath; do
4511 rpath="$rpath$dir:"
4512 done
4513 compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
4515 if test -n "$finalize_perm_rpath"; then
4516 # We should set the runpath_var.
4517 rpath=
4518 for dir in $finalize_perm_rpath; do
4519 rpath="$rpath$dir:"
4520 done
4521 finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
4525 if test "$no_install" = yes; then
4526 # We don't need to create a wrapper script.
4527 link_command="$compile_var$compile_command$compile_rpath"
4528 # Replace the output file specification.
4529 link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
4530 # Delete the old output file.
4531 $run $rm $output
4532 # Link the executable and exit
4533 $show "$link_command"
4534 $run eval "$link_command" || exit $?
4535 exit $EXIT_SUCCESS
4538 if test "$hardcode_action" = relink; then
4539 # Fast installation is not supported
4540 link_command="$compile_var$compile_command$compile_rpath"
4541 relink_command="$finalize_var$finalize_command$finalize_rpath"
4543 $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2
4544 $echo "$modename: \`$output' will be relinked during installation" 1>&2
4545 else
4546 if test "$fast_install" != no; then
4547 link_command="$finalize_var$compile_command$finalize_rpath"
4548 if test "$fast_install" = yes; then
4549 relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
4550 else
4551 # fast_install is set to needless
4552 relink_command=
4554 else
4555 link_command="$compile_var$compile_command$compile_rpath"
4556 relink_command="$finalize_var$finalize_command$finalize_rpath"
4560 # Replace the output file specification.
4561 link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
4563 # Delete the old output files.
4564 $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname
4566 $show "$link_command"
4567 $run eval "$link_command" || exit $?
4569 # Now create the wrapper script.
4570 $show "creating $output"
4572 # Quote the relink command for shipping.
4573 if test -n "$relink_command"; then
4574 # Preserve any variables that may affect compiler behavior
4575 for var in $variables_saved_for_relink; do
4576 if eval test -z \"\${$var+set}\"; then
4577 relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
4578 elif eval var_value=\$$var; test -z "$var_value"; then
4579 relink_command="$var=; export $var; $relink_command"
4580 else
4581 var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
4582 relink_command="$var=\"$var_value\"; export $var; $relink_command"
4584 done
4585 relink_command="(cd `pwd`; $relink_command)"
4586 relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
4589 # Quote $echo for shipping.
4590 if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then
4591 case $progpath in
4592 [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
4593 *) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
4594 esac
4595 qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"`
4596 else
4597 qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"`
4600 # Only actually do things if our run command is non-null.
4601 if test -z "$run"; then
4602 # win32 will think the script is a binary if it has
4603 # a .exe suffix, so we strip it off here.
4604 case $output in
4605 *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;;
4606 esac
4607 # test for cygwin because mv fails w/o .exe extensions
4608 case $host in
4609 *cygwin*)
4610 exeext=.exe
4611 outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;;
4612 *) exeext= ;;
4613 esac
4614 case $host in
4615 *cygwin* | *mingw* )
4616 cwrappersource=`$echo ${objdir}/lt-${output}.c`
4617 cwrapper=`$echo ${output}.exe`
4618 $rm $cwrappersource $cwrapper
4619 trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
4621 cat > $cwrappersource <<EOF
4623 /* $cwrappersource - temporary wrapper executable for $objdir/$outputname
4624 Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
4626 The $output program cannot be directly executed until all the libtool
4627 libraries that it depends on are installed.
4629 This wrapper executable should never be moved out of the build directory.
4630 If it is, it will not operate correctly.
4632 Currently, it simply execs the wrapper *script* "/bin/sh $output",
4633 but could eventually absorb all of the scripts functionality and
4634 exec $objdir/$outputname directly.
4637 cat >> $cwrappersource<<"EOF"
4638 #include <stdio.h>
4639 #include <stdlib.h>
4640 #include <unistd.h>
4641 #include <malloc.h>
4642 #include <stdarg.h>
4643 #include <assert.h>
4645 #if defined(PATH_MAX)
4646 # define LT_PATHMAX PATH_MAX
4647 #elif defined(MAXPATHLEN)
4648 # define LT_PATHMAX MAXPATHLEN
4649 #else
4650 # define LT_PATHMAX 1024
4651 #endif
4653 #ifndef DIR_SEPARATOR
4654 #define DIR_SEPARATOR '/'
4655 #endif
4657 #if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
4658 defined (__OS2__)
4659 #define HAVE_DOS_BASED_FILE_SYSTEM
4660 #ifndef DIR_SEPARATOR_2
4661 #define DIR_SEPARATOR_2 '\\'
4662 #endif
4663 #endif
4665 #ifndef DIR_SEPARATOR_2
4666 # define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
4667 #else /* DIR_SEPARATOR_2 */
4668 # define IS_DIR_SEPARATOR(ch) \
4669 (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
4670 #endif /* DIR_SEPARATOR_2 */
4672 #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type)))
4673 #define XFREE(stale) do { \
4674 if (stale) { free ((void *) stale); stale = 0; } \
4675 } while (0)
4677 const char *program_name = NULL;
4679 void * xmalloc (size_t num);
4680 char * xstrdup (const char *string);
4681 char * basename (const char *name);
4682 char * fnqualify(const char *path);
4683 char * strendzap(char *str, const char *pat);
4684 void lt_fatal (const char *message, ...);
4687 main (int argc, char *argv[])
4689 char **newargz;
4690 int i;
4692 program_name = (char *) xstrdup ((char *) basename (argv[0]));
4693 newargz = XMALLOC(char *, argc+2);
4696 cat >> $cwrappersource <<EOF
4697 newargz[0] = "$SHELL";
4700 cat >> $cwrappersource <<"EOF"
4701 newargz[1] = fnqualify(argv[0]);
4702 /* we know the script has the same name, without the .exe */
4703 /* so make sure newargz[1] doesn't end in .exe */
4704 strendzap(newargz[1],".exe");
4705 for (i = 1; i < argc; i++)
4706 newargz[i+1] = xstrdup(argv[i]);
4707 newargz[argc+1] = NULL;
4710 cat >> $cwrappersource <<EOF
4711 execv("$SHELL",newargz);
4714 cat >> $cwrappersource <<"EOF"
4717 void *
4718 xmalloc (size_t num)
4720 void * p = (void *) malloc (num);
4721 if (!p)
4722 lt_fatal ("Memory exhausted");
4724 return p;
4727 char *
4728 xstrdup (const char *string)
4730 return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL
4734 char *
4735 basename (const char *name)
4737 const char *base;
4739 #if defined (HAVE_DOS_BASED_FILE_SYSTEM)
4740 /* Skip over the disk name in MSDOS pathnames. */
4741 if (isalpha (name[0]) && name[1] == ':')
4742 name += 2;
4743 #endif
4745 for (base = name; *name; name++)
4746 if (IS_DIR_SEPARATOR (*name))
4747 base = name + 1;
4748 return (char *) base;
4751 char *
4752 fnqualify(const char *path)
4754 size_t size;
4755 char *p;
4756 char tmp[LT_PATHMAX + 1];
4758 assert(path != NULL);
4760 /* Is it qualified already? */
4761 #if defined (HAVE_DOS_BASED_FILE_SYSTEM)
4762 if (isalpha (path[0]) && path[1] == ':')
4763 return xstrdup (path);
4764 #endif
4765 if (IS_DIR_SEPARATOR (path[0]))
4766 return xstrdup (path);
4768 /* prepend the current directory */
4769 /* doesn't handle '~' */
4770 if (getcwd (tmp, LT_PATHMAX) == NULL)
4771 lt_fatal ("getcwd failed");
4772 size = strlen(tmp) + 1 + strlen(path) + 1; /* +2 for '/' and '\0' */
4773 p = XMALLOC(char, size);
4774 sprintf(p, "%s%c%s", tmp, DIR_SEPARATOR, path);
4775 return p;
4778 char *
4779 strendzap(char *str, const char *pat)
4781 size_t len, patlen;
4783 assert(str != NULL);
4784 assert(pat != NULL);
4786 len = strlen(str);
4787 patlen = strlen(pat);
4789 if (patlen <= len)
4791 str += len - patlen;
4792 if (strcmp(str, pat) == 0)
4793 *str = '\0';
4795 return str;
4798 static void
4799 lt_error_core (int exit_status, const char * mode,
4800 const char * message, va_list ap)
4802 fprintf (stderr, "%s: %s: ", program_name, mode);
4803 vfprintf (stderr, message, ap);
4804 fprintf (stderr, ".\n");
4806 if (exit_status >= 0)
4807 exit (exit_status);
4810 void
4811 lt_fatal (const char *message, ...)
4813 va_list ap;
4814 va_start (ap, message);
4815 lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
4816 va_end (ap);
4819 # we should really use a build-platform specific compiler
4820 # here, but OTOH, the wrappers (shell script and this C one)
4821 # are only useful if you want to execute the "real" binary.
4822 # Since the "real" binary is built for $host, then this
4823 # wrapper might as well be built for $host, too.
4824 $run $LTCC -s -o $cwrapper $cwrappersource
4826 esac
4827 $rm $output
4828 trap "$rm $output; exit $EXIT_FAILURE" 1 2 15
4830 $echo > $output "\
4831 #! $SHELL
4833 # $output - temporary wrapper script for $objdir/$outputname
4834 # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
4836 # The $output program cannot be directly executed until all the libtool
4837 # libraries that it depends on are installed.
4839 # This wrapper script should never be moved out of the build directory.
4840 # If it is, it will not operate correctly.
4842 # Sed substitution that helps us do robust quoting. It backslashifies
4843 # metacharacters that are still active within double-quoted strings.
4844 Xsed='${SED} -e 1s/^X//'
4845 sed_quote_subst='$sed_quote_subst'
4847 # The HP-UX ksh and POSIX shell print the target directory to stdout
4848 # if CDPATH is set.
4849 (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
4851 relink_command=\"$relink_command\"
4853 # This environment variable determines our operation mode.
4854 if test \"\$libtool_install_magic\" = \"$magic\"; then
4855 # install mode needs the following variable:
4856 notinst_deplibs='$notinst_deplibs'
4857 else
4858 # When we are sourced in execute mode, \$file and \$echo are already set.
4859 if test \"\$libtool_execute_magic\" != \"$magic\"; then
4860 echo=\"$qecho\"
4861 file=\"\$0\"
4862 # Make sure echo works.
4863 if test \"X\$1\" = X--no-reexec; then
4864 # Discard the --no-reexec flag, and continue.
4865 shift
4866 elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then
4867 # Yippee, \$echo works!
4869 else
4870 # Restart under the correct shell, and then maybe \$echo will work.
4871 exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
4875 $echo >> $output "\
4877 # Find the directory that this script lives in.
4878 thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
4879 test \"x\$thisdir\" = \"x\$file\" && thisdir=.
4881 # Follow symbolic links until we get to the real thisdir.
4882 file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
4883 while test -n \"\$file\"; do
4884 destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
4886 # If there was a directory component, then change thisdir.
4887 if test \"x\$destdir\" != \"x\$file\"; then
4888 case \"\$destdir\" in
4889 [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
4890 *) thisdir=\"\$thisdir/\$destdir\" ;;
4891 esac
4894 file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
4895 file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
4896 done
4898 # Try to get the absolute directory name.
4899 absdir=\`cd \"\$thisdir\" && pwd\`
4900 test -n \"\$absdir\" && thisdir=\"\$absdir\"
4903 if test "$fast_install" = yes; then
4904 $echo >> $output "\
4905 program=lt-'$outputname'$exeext
4906 progdir=\"\$thisdir/$objdir\"
4908 if test ! -f \"\$progdir/\$program\" || \\
4909 { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
4910 test \"X\$file\" != \"X\$progdir/\$program\"; }; then
4912 file=\"\$\$-\$program\"
4914 if test ! -d \"\$progdir\"; then
4915 $mkdir \"\$progdir\"
4916 else
4917 $rm \"\$progdir/\$file\"
4920 $echo >> $output "\
4922 # relink executable if necessary
4923 if test -n \"\$relink_command\"; then
4924 if relink_command_output=\`eval \$relink_command 2>&1\`; then :
4925 else
4926 $echo \"\$relink_command_output\" >&2
4927 $rm \"\$progdir/\$file\"
4928 exit $EXIT_FAILURE
4932 $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
4933 { $rm \"\$progdir/\$program\";
4934 $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; }
4935 $rm \"\$progdir/\$file\"
4937 else
4938 $echo >> $output "\
4939 program='$outputname'
4940 progdir=\"\$thisdir/$objdir\"
4944 $echo >> $output "\
4946 if test -f \"\$progdir/\$program\"; then"
4948 # Export our shlibpath_var if we have one.
4949 if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
4950 $echo >> $output "\
4951 # Add our own library path to $shlibpath_var
4952 $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
4954 # Some systems cannot cope with colon-terminated $shlibpath_var
4955 # The second colon is a workaround for a bug in BeOS R4 sed
4956 $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
4958 export $shlibpath_var
4962 # fixup the dll searchpath if we need to.
4963 if test -n "$dllsearchpath"; then
4964 $echo >> $output "\
4965 # Add the dll search path components to the executable PATH
4966 PATH=$dllsearchpath:\$PATH
4970 $echo >> $output "\
4971 if test \"\$libtool_execute_magic\" != \"$magic\"; then
4972 # Run the actual program with our arguments.
4974 case $host in
4975 # Backslashes separate directories on plain windows
4976 *-*-mingw | *-*-os2*)
4977 $echo >> $output "\
4978 exec \$progdir\\\\\$program \${1+\"\$@\"}
4983 $echo >> $output "\
4984 exec \$progdir/\$program \${1+\"\$@\"}
4987 esac
4988 $echo >> $output "\
4989 \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\"
4990 exit $EXIT_FAILURE
4992 else
4993 # The program doesn't exist.
4994 \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2
4995 \$echo \"This script is just a wrapper for \$program.\" 1>&2
4996 $echo \"See the $PACKAGE documentation for more information.\" 1>&2
4997 exit $EXIT_FAILURE
5001 chmod +x $output
5003 exit $EXIT_SUCCESS
5005 esac
5007 # See if we need to build an old-fashioned archive.
5008 for oldlib in $oldlibs; do
5010 if test "$build_libtool_libs" = convenience; then
5011 oldobjs="$libobjs_save"
5012 addlibs="$convenience"
5013 build_libtool_libs=no
5014 else
5015 if test "$build_libtool_libs" = module; then
5016 oldobjs="$libobjs_save"
5017 build_libtool_libs=no
5018 else
5019 oldobjs="$old_deplibs $non_pic_objects"
5021 addlibs="$old_convenience"
5024 if test -n "$addlibs"; then
5025 gentop="$output_objdir/${outputname}x"
5026 generated="$generated $gentop"
5028 func_extract_archives $gentop $addlibs
5029 oldobjs="$oldobjs $func_extract_archives_result"
5032 # Do each command in the archive commands.
5033 if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
5034 cmds=$old_archive_from_new_cmds
5035 else
5036 eval cmds=\"$old_archive_cmds\"
5038 if len=`expr "X$cmds" : ".*"` &&
5039 test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
5040 cmds=$old_archive_cmds
5041 else
5042 # the command line is too long to link in one step, link in parts
5043 $echo "using piecewise archive linking..."
5044 save_RANLIB=$RANLIB
5045 RANLIB=:
5046 objlist=
5047 concat_cmds=
5048 save_oldobjs=$oldobjs
5049 # GNU ar 2.10+ was changed to match POSIX; thus no paths are
5050 # encoded into archives. This makes 'ar r' malfunction in
5051 # this piecewise linking case whenever conflicting object
5052 # names appear in distinct ar calls; check, warn and compensate.
5053 if (for obj in $save_oldobjs
5055 $echo "X$obj" | $Xsed -e 's%^.*/%%'
5056 done | sort | sort -uc >/dev/null 2>&1); then
5058 else
5059 $echo "$modename: warning: object name conflicts; overriding AR_FLAGS to 'cq'" 1>&2
5060 $echo "$modename: warning: to ensure that POSIX-compatible ar will work" 1>&2
5061 AR_FLAGS=cq
5063 # Is there a better way of finding the last object in the list?
5064 for obj in $save_oldobjs
5066 last_oldobj=$obj
5067 done
5068 for obj in $save_oldobjs
5070 oldobjs="$objlist $obj"
5071 objlist="$objlist $obj"
5072 eval test_cmds=\"$old_archive_cmds\"
5073 if len=`expr "X$test_cmds" : ".*"` &&
5074 test "$len" -le "$max_cmd_len"; then
5076 else
5077 # the above command should be used before it gets too long
5078 oldobjs=$objlist
5079 if test "$obj" = "$last_oldobj" ; then
5080 RANLIB=$save_RANLIB
5082 test -z "$concat_cmds" || concat_cmds=$concat_cmds~
5083 eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
5084 objlist=
5086 done
5087 RANLIB=$save_RANLIB
5088 oldobjs=$objlist
5089 if test "X$oldobjs" = "X" ; then
5090 eval cmds=\"\$concat_cmds\"
5091 else
5092 eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
5096 save_ifs="$IFS"; IFS='~'
5097 for cmd in $cmds; do
5098 eval cmd=\"$cmd\"
5099 IFS="$save_ifs"
5100 $show "$cmd"
5101 $run eval "$cmd" || exit $?
5102 done
5103 IFS="$save_ifs"
5104 done
5106 if test -n "$generated"; then
5107 $show "${rm}r$generated"
5108 $run ${rm}r$generated
5111 # Now create the libtool archive.
5112 case $output in
5113 *.la)
5114 old_library=
5115 test "$build_old_libs" = yes && old_library="$libname.$libext"
5116 $show "creating $output"
5118 # Preserve any variables that may affect compiler behavior
5119 for var in $variables_saved_for_relink; do
5120 if eval test -z \"\${$var+set}\"; then
5121 relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
5122 elif eval var_value=\$$var; test -z "$var_value"; then
5123 relink_command="$var=; export $var; $relink_command"
5124 else
5125 var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
5126 relink_command="$var=\"$var_value\"; export $var; $relink_command"
5128 done
5129 # Quote the link command for shipping.
5130 relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
5131 relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
5132 if test "$hardcode_automatic" = yes ; then
5133 relink_command=
5137 # Only create the output if not a dry run.
5138 if test -z "$run"; then
5139 for installed in no yes; do
5140 if test "$installed" = yes; then
5141 if test -z "$install_libdir"; then
5142 break
5144 output="$output_objdir/$outputname"i
5145 # Replace all uninstalled libtool libraries with the installed ones
5146 newdependency_libs=
5147 for deplib in $dependency_libs; do
5148 case $deplib in
5149 *.la)
5150 name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'`
5151 eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
5152 if test -z "$libdir"; then
5153 $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
5154 exit $EXIT_FAILURE
5156 newdependency_libs="$newdependency_libs $libdir/$name"
5158 *) newdependency_libs="$newdependency_libs $deplib" ;;
5159 esac
5160 done
5161 dependency_libs="$newdependency_libs"
5162 newdlfiles=
5163 for lib in $dlfiles; do
5164 name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
5165 eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
5166 if test -z "$libdir"; then
5167 $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
5168 exit $EXIT_FAILURE
5170 newdlfiles="$newdlfiles $libdir/$name"
5171 done
5172 dlfiles="$newdlfiles"
5173 newdlprefiles=
5174 for lib in $dlprefiles; do
5175 name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
5176 eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
5177 if test -z "$libdir"; then
5178 $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
5179 exit $EXIT_FAILURE
5181 newdlprefiles="$newdlprefiles $libdir/$name"
5182 done
5183 dlprefiles="$newdlprefiles"
5184 else
5185 newdlfiles=
5186 for lib in $dlfiles; do
5187 case $lib in
5188 [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
5189 *) abs=`pwd`"/$lib" ;;
5190 esac
5191 newdlfiles="$newdlfiles $abs"
5192 done
5193 dlfiles="$newdlfiles"
5194 newdlprefiles=
5195 for lib in $dlprefiles; do
5196 case $lib in
5197 [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
5198 *) abs=`pwd`"/$lib" ;;
5199 esac
5200 newdlprefiles="$newdlprefiles $abs"
5201 done
5202 dlprefiles="$newdlprefiles"
5204 $rm $output
5205 # place dlname in correct position for cygwin
5206 tdlname=$dlname
5207 case $host,$output,$installed,$module,$dlname in
5208 *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
5209 esac
5210 $echo > $output "\
5211 # $outputname - a libtool library file
5212 # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
5214 # Please DO NOT delete this file!
5215 # It is necessary for linking the library.
5217 # The name that we can dlopen(3).
5218 dlname='$tdlname'
5220 # Names of this library.
5221 library_names='$library_names'
5223 # The name of the static archive.
5224 old_library='$old_library'
5226 # Libraries that this one depends upon.
5227 dependency_libs='$dependency_libs'
5229 # Version information for $libname.
5230 current=$current
5231 age=$age
5232 revision=$revision
5234 # Is this an already installed library?
5235 installed=$installed
5237 # Should we warn about portability when linking against -modules?
5238 shouldnotlink=$module
5240 # Files to dlopen/dlpreopen
5241 dlopen='$dlfiles'
5242 dlpreopen='$dlprefiles'
5244 # Directory that this library needs to be installed in:
5245 libdir='$install_libdir'"
5246 if test "$installed" = no && test "$need_relink" = yes; then
5247 $echo >> $output "\
5248 relink_command=\"$relink_command\""
5250 done
5253 # Do a symbolic link so that the libtool archive can be found in
5254 # LD_LIBRARY_PATH before the program is installed.
5255 $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)"
5256 $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $?
5258 esac
5259 exit $EXIT_SUCCESS
5262 # libtool install mode
5263 install)
5264 modename="$modename: install"
5266 # There may be an optional sh(1) argument at the beginning of
5267 # install_prog (especially on Windows NT).
5268 if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
5269 # Allow the use of GNU shtool's install command.
5270 $echo "X$nonopt" | $Xsed | grep shtool > /dev/null; then
5271 # Aesthetically quote it.
5272 arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
5273 case $arg in
5274 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
5275 arg="\"$arg\""
5277 esac
5278 install_prog="$arg "
5279 arg="$1"
5280 shift
5281 else
5282 install_prog=
5283 arg="$nonopt"
5286 # The real first argument should be the name of the installation program.
5287 # Aesthetically quote it.
5288 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
5289 case $arg in
5290 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
5291 arg="\"$arg\""
5293 esac
5294 install_prog="$install_prog$arg"
5296 # We need to accept at least all the BSD install flags.
5297 dest=
5298 files=
5299 opts=
5300 prev=
5301 install_type=
5302 isdir=no
5303 stripme=
5304 for arg
5306 if test -n "$dest"; then
5307 files="$files $dest"
5308 dest="$arg"
5309 continue
5312 case $arg in
5313 -d) isdir=yes ;;
5314 -f) prev="-f" ;;
5315 -g) prev="-g" ;;
5316 -m) prev="-m" ;;
5317 -o) prev="-o" ;;
5319 stripme=" -s"
5320 continue
5322 -*) ;;
5325 # If the previous option needed an argument, then skip it.
5326 if test -n "$prev"; then
5327 prev=
5328 else
5329 dest="$arg"
5330 continue
5333 esac
5335 # Aesthetically quote the argument.
5336 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
5337 case $arg in
5338 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
5339 arg="\"$arg\""
5341 esac
5342 install_prog="$install_prog $arg"
5343 done
5345 if test -z "$install_prog"; then
5346 $echo "$modename: you must specify an install program" 1>&2
5347 $echo "$help" 1>&2
5348 exit $EXIT_FAILURE
5351 if test -n "$prev"; then
5352 $echo "$modename: the \`$prev' option requires an argument" 1>&2
5353 $echo "$help" 1>&2
5354 exit $EXIT_FAILURE
5357 if test -z "$files"; then
5358 if test -z "$dest"; then
5359 $echo "$modename: no file or destination specified" 1>&2
5360 else
5361 $echo "$modename: you must specify a destination" 1>&2
5363 $echo "$help" 1>&2
5364 exit $EXIT_FAILURE
5367 # Strip any trailing slash from the destination.
5368 dest=`$echo "X$dest" | $Xsed -e 's%/$%%'`
5370 # Check to see that the destination is a directory.
5371 test -d "$dest" && isdir=yes
5372 if test "$isdir" = yes; then
5373 destdir="$dest"
5374 destname=
5375 else
5376 destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'`
5377 test "X$destdir" = "X$dest" && destdir=.
5378 destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'`
5380 # Not a directory, so check to see that there is only one file specified.
5381 set dummy $files
5382 if test "$#" -gt 2; then
5383 $echo "$modename: \`$dest' is not a directory" 1>&2
5384 $echo "$help" 1>&2
5385 exit $EXIT_FAILURE
5388 case $destdir in
5389 [\\/]* | [A-Za-z]:[\\/]*) ;;
5391 for file in $files; do
5392 case $file in
5393 *.lo) ;;
5395 $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2
5396 $echo "$help" 1>&2
5397 exit $EXIT_FAILURE
5399 esac
5400 done
5402 esac
5404 # This variable tells wrapper scripts just to set variables rather
5405 # than running their programs.
5406 libtool_install_magic="$magic"
5408 staticlibs=
5409 future_libdirs=
5410 current_libdirs=
5411 for file in $files; do
5413 # Do each installation.
5414 case $file in
5415 *.$libext)
5416 # Do the static libraries later.
5417 staticlibs="$staticlibs $file"
5420 *.la)
5421 # Check to see that this really is a libtool archive.
5422 if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
5423 else
5424 $echo "$modename: \`$file' is not a valid libtool archive" 1>&2
5425 $echo "$help" 1>&2
5426 exit $EXIT_FAILURE
5429 library_names=
5430 old_library=
5431 relink_command=
5432 # If there is no directory component, then add one.
5433 case $file in
5434 */* | *\\*) . $file ;;
5435 *) . ./$file ;;
5436 esac
5438 # Add the libdir to current_libdirs if it is the destination.
5439 if test "X$destdir" = "X$libdir"; then
5440 case "$current_libdirs " in
5441 *" $libdir "*) ;;
5442 *) current_libdirs="$current_libdirs $libdir" ;;
5443 esac
5444 else
5445 # Note the libdir as a future libdir.
5446 case "$future_libdirs " in
5447 *" $libdir "*) ;;
5448 *) future_libdirs="$future_libdirs $libdir" ;;
5449 esac
5452 dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/
5453 test "X$dir" = "X$file/" && dir=
5454 dir="$dir$objdir"
5456 if test -n "$relink_command"; then
5457 # Determine the prefix the user has applied to our future dir.
5458 inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"`
5460 # Don't allow the user to place us outside of our expected
5461 # location b/c this prevents finding dependent libraries that
5462 # are installed to the same prefix.
5463 # At present, this check doesn't affect windows .dll's that
5464 # are installed into $libdir/../bin (currently, that works fine)
5465 # but it's something to keep an eye on.
5466 if test "$inst_prefix_dir" = "$destdir"; then
5467 $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2
5468 exit $EXIT_FAILURE
5471 if test -n "$inst_prefix_dir"; then
5472 # Stick the inst_prefix_dir data into the link command.
5473 relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
5474 else
5475 relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
5478 $echo "$modename: warning: relinking \`$file'" 1>&2
5479 $show "$relink_command"
5480 if $run eval "$relink_command"; then :
5481 else
5482 $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
5483 exit $EXIT_FAILURE
5487 # See the names of the shared library.
5488 set dummy $library_names
5489 if test -n "$2"; then
5490 realname="$2"
5491 shift
5492 shift
5494 srcname="$realname"
5495 test -n "$relink_command" && srcname="$realname"T
5497 # Install the shared library and build the symlinks.
5498 $show "$install_prog $dir/$srcname $destdir/$realname"
5499 $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $?
5500 if test -n "$stripme" && test -n "$striplib"; then
5501 $show "$striplib $destdir/$realname"
5502 $run eval "$striplib $destdir/$realname" || exit $?
5505 if test "$#" -gt 0; then
5506 # Delete the old symlinks, and create new ones.
5507 for linkname
5509 if test "$linkname" != "$realname"; then
5510 $show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
5511 $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
5513 done
5516 # Do each command in the postinstall commands.
5517 lib="$destdir/$realname"
5518 cmds=$postinstall_cmds
5519 save_ifs="$IFS"; IFS='~'
5520 for cmd in $cmds; do
5521 IFS="$save_ifs"
5522 eval cmd=\"$cmd\"
5523 $show "$cmd"
5524 $run eval "$cmd" || exit $?
5525 done
5526 IFS="$save_ifs"
5529 # Install the pseudo-library for information purposes.
5530 name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
5531 instname="$dir/$name"i
5532 $show "$install_prog $instname $destdir/$name"
5533 $run eval "$install_prog $instname $destdir/$name" || exit $?
5535 # Maybe install the static library, too.
5536 test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
5539 *.lo)
5540 # Install (i.e. copy) a libtool object.
5542 # Figure out destination file name, if it wasn't already specified.
5543 if test -n "$destname"; then
5544 destfile="$destdir/$destname"
5545 else
5546 destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
5547 destfile="$destdir/$destfile"
5550 # Deduce the name of the destination old-style object file.
5551 case $destfile in
5552 *.lo)
5553 staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"`
5555 *.$objext)
5556 staticdest="$destfile"
5557 destfile=
5560 $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2
5561 $echo "$help" 1>&2
5562 exit $EXIT_FAILURE
5564 esac
5566 # Install the libtool object if requested.
5567 if test -n "$destfile"; then
5568 $show "$install_prog $file $destfile"
5569 $run eval "$install_prog $file $destfile" || exit $?
5572 # Install the old object if enabled.
5573 if test "$build_old_libs" = yes; then
5574 # Deduce the name of the old-style object file.
5575 staticobj=`$echo "X$file" | $Xsed -e "$lo2o"`
5577 $show "$install_prog $staticobj $staticdest"
5578 $run eval "$install_prog \$staticobj \$staticdest" || exit $?
5580 exit $EXIT_SUCCESS
5584 # Figure out destination file name, if it wasn't already specified.
5585 if test -n "$destname"; then
5586 destfile="$destdir/$destname"
5587 else
5588 destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
5589 destfile="$destdir/$destfile"
5592 # If the file is missing, and there is a .exe on the end, strip it
5593 # because it is most likely a libtool script we actually want to
5594 # install
5595 stripped_ext=""
5596 case $file in
5597 *.exe)
5598 if test ! -f "$file"; then
5599 file=`$echo $file|${SED} 's,.exe$,,'`
5600 stripped_ext=".exe"
5603 esac
5605 # Do a test to see if this is really a libtool program.
5606 case $host in
5607 *cygwin*|*mingw*)
5608 wrapper=`$echo $file | ${SED} -e 's,.exe$,,'`
5611 wrapper=$file
5613 esac
5614 if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then
5615 notinst_deplibs=
5616 relink_command=
5618 # To insure that "foo" is sourced, and not "foo.exe",
5619 # finese the cygwin/MSYS system by explicitly sourcing "foo."
5620 # which disallows the automatic-append-.exe behavior.
5621 case $build in
5622 *cygwin* | *mingw*) wrapperdot=${wrapper}. ;;
5623 *) wrapperdot=${wrapper} ;;
5624 esac
5625 # If there is no directory component, then add one.
5626 case $file in
5627 */* | *\\*) . ${wrapperdot} ;;
5628 *) . ./${wrapperdot} ;;
5629 esac
5631 # Check the variables that should have been set.
5632 if test -z "$notinst_deplibs"; then
5633 $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2
5634 exit $EXIT_FAILURE
5637 finalize=yes
5638 for lib in $notinst_deplibs; do
5639 # Check to see that each library is installed.
5640 libdir=
5641 if test -f "$lib"; then
5642 # If there is no directory component, then add one.
5643 case $lib in
5644 */* | *\\*) . $lib ;;
5645 *) . ./$lib ;;
5646 esac
5648 libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
5649 if test -n "$libdir" && test ! -f "$libfile"; then
5650 $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2
5651 finalize=no
5653 done
5655 relink_command=
5656 # To insure that "foo" is sourced, and not "foo.exe",
5657 # finese the cygwin/MSYS system by explicitly sourcing "foo."
5658 # which disallows the automatic-append-.exe behavior.
5659 case $build in
5660 *cygwin* | *mingw*) wrapperdot=${wrapper}. ;;
5661 *) wrapperdot=${wrapper} ;;
5662 esac
5663 # If there is no directory component, then add one.
5664 case $file in
5665 */* | *\\*) . ${wrapperdot} ;;
5666 *) . ./${wrapperdot} ;;
5667 esac
5669 outputname=
5670 if test "$fast_install" = no && test -n "$relink_command"; then
5671 if test "$finalize" = yes && test -z "$run"; then
5672 tmpdir="/tmp"
5673 test -n "$TMPDIR" && tmpdir="$TMPDIR"
5674 tmpdir="$tmpdir/libtool-$$"
5675 save_umask=`umask`
5676 umask 0077
5677 if $mkdir "$tmpdir"; then
5678 umask $save_umask
5679 else
5680 umask $save_umask
5681 $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2
5682 continue
5684 file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'`
5685 outputname="$tmpdir/$file"
5686 # Replace the output file specification.
5687 relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
5689 $show "$relink_command"
5690 if $run eval "$relink_command"; then :
5691 else
5692 $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
5693 ${rm}r "$tmpdir"
5694 continue
5696 file="$outputname"
5697 else
5698 $echo "$modename: warning: cannot relink \`$file'" 1>&2
5700 else
5701 # Install the binary that we compiled earlier.
5702 file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
5706 # remove .exe since cygwin /usr/bin/install will append another
5707 # one anyways
5708 case $install_prog,$host in
5709 */usr/bin/install*,*cygwin*)
5710 case $file:$destfile in
5711 *.exe:*.exe)
5712 # this is ok
5714 *.exe:*)
5715 destfile=$destfile.exe
5717 *:*.exe)
5718 destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'`
5720 esac
5722 esac
5723 $show "$install_prog$stripme $file $destfile"
5724 $run eval "$install_prog\$stripme \$file \$destfile" || exit $?
5725 test -n "$outputname" && ${rm}r "$tmpdir"
5727 esac
5728 done
5730 for file in $staticlibs; do
5731 name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
5733 # Set up the ranlib parameters.
5734 oldlib="$destdir/$name"
5736 $show "$install_prog $file $oldlib"
5737 $run eval "$install_prog \$file \$oldlib" || exit $?
5739 if test -n "$stripme" && test -n "$old_striplib"; then
5740 $show "$old_striplib $oldlib"
5741 $run eval "$old_striplib $oldlib" || exit $?
5744 # Do each command in the postinstall commands.
5745 cmds=$old_postinstall_cmds
5746 save_ifs="$IFS"; IFS='~'
5747 for cmd in $cmds; do
5748 IFS="$save_ifs"
5749 eval cmd=\"$cmd\"
5750 $show "$cmd"
5751 $run eval "$cmd" || exit $?
5752 done
5753 IFS="$save_ifs"
5754 done
5756 if test -n "$future_libdirs"; then
5757 $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2
5760 if test -n "$current_libdirs"; then
5761 # Maybe just do a dry run.
5762 test -n "$run" && current_libdirs=" -n$current_libdirs"
5763 exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
5764 else
5765 exit $EXIT_SUCCESS
5769 # libtool finish mode
5770 finish)
5771 modename="$modename: finish"
5772 libdirs="$nonopt"
5773 admincmds=
5775 if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
5776 for dir
5778 libdirs="$libdirs $dir"
5779 done
5781 for libdir in $libdirs; do
5782 if test -n "$finish_cmds"; then
5783 # Do each command in the finish commands.
5784 cmds=$finish_cmds
5785 save_ifs="$IFS"; IFS='~'
5786 for cmd in $cmds; do
5787 IFS="$save_ifs"
5788 eval cmd=\"$cmd\"
5789 $show "$cmd"
5790 $run eval "$cmd" || admincmds="$admincmds
5791 $cmd"
5792 done
5793 IFS="$save_ifs"
5795 if test -n "$finish_eval"; then
5796 # Do the single finish_eval.
5797 eval cmds=\"$finish_eval\"
5798 $run eval "$cmds" || admincmds="$admincmds
5799 $cmds"
5801 done
5804 # Exit here if they wanted silent mode.
5805 test "$show" = : && exit $EXIT_SUCCESS
5807 $echo "----------------------------------------------------------------------"
5808 $echo "Libraries have been installed in:"
5809 for libdir in $libdirs; do
5810 $echo " $libdir"
5811 done
5812 $echo
5813 $echo "If you ever happen to want to link against installed libraries"
5814 $echo "in a given directory, LIBDIR, you must either use libtool, and"
5815 $echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
5816 $echo "flag during linking and do at least one of the following:"
5817 if test -n "$shlibpath_var"; then
5818 $echo " - add LIBDIR to the \`$shlibpath_var' environment variable"
5819 $echo " during execution"
5821 if test -n "$runpath_var"; then
5822 $echo " - add LIBDIR to the \`$runpath_var' environment variable"
5823 $echo " during linking"
5825 if test -n "$hardcode_libdir_flag_spec"; then
5826 libdir=LIBDIR
5827 eval flag=\"$hardcode_libdir_flag_spec\"
5829 $echo " - use the \`$flag' linker flag"
5831 if test -n "$admincmds"; then
5832 $echo " - have your system administrator run these commands:$admincmds"
5834 if test -f /etc/ld.so.conf; then
5835 $echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
5837 $echo
5838 $echo "See any operating system documentation about shared libraries for"
5839 $echo "more information, such as the ld(1) and ld.so(8) manual pages."
5840 $echo "----------------------------------------------------------------------"
5841 exit $EXIT_SUCCESS
5844 # libtool execute mode
5845 execute)
5846 modename="$modename: execute"
5848 # The first argument is the command name.
5849 cmd="$nonopt"
5850 if test -z "$cmd"; then
5851 $echo "$modename: you must specify a COMMAND" 1>&2
5852 $echo "$help"
5853 exit $EXIT_FAILURE
5856 # Handle -dlopen flags immediately.
5857 for file in $execute_dlfiles; do
5858 if test ! -f "$file"; then
5859 $echo "$modename: \`$file' is not a file" 1>&2
5860 $echo "$help" 1>&2
5861 exit $EXIT_FAILURE
5864 dir=
5865 case $file in
5866 *.la)
5867 # Check to see that this really is a libtool archive.
5868 if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
5869 else
5870 $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
5871 $echo "$help" 1>&2
5872 exit $EXIT_FAILURE
5875 # Read the libtool library.
5876 dlname=
5877 library_names=
5879 # If there is no directory component, then add one.
5880 case $file in
5881 */* | *\\*) . $file ;;
5882 *) . ./$file ;;
5883 esac
5885 # Skip this library if it cannot be dlopened.
5886 if test -z "$dlname"; then
5887 # Warn if it was a shared library.
5888 test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'"
5889 continue
5892 dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
5893 test "X$dir" = "X$file" && dir=.
5895 if test -f "$dir/$objdir/$dlname"; then
5896 dir="$dir/$objdir"
5897 else
5898 $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
5899 exit $EXIT_FAILURE
5903 *.lo)
5904 # Just add the directory containing the .lo file.
5905 dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
5906 test "X$dir" = "X$file" && dir=.
5910 $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2
5911 continue
5913 esac
5915 # Get the absolute pathname.
5916 absdir=`cd "$dir" && pwd`
5917 test -n "$absdir" && dir="$absdir"
5919 # Now add the directory to shlibpath_var.
5920 if eval "test -z \"\$$shlibpath_var\""; then
5921 eval "$shlibpath_var=\"\$dir\""
5922 else
5923 eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
5925 done
5927 # This variable tells wrapper scripts just to set shlibpath_var
5928 # rather than running their programs.
5929 libtool_execute_magic="$magic"
5931 # Check if any of the arguments is a wrapper script.
5932 args=
5933 for file
5935 case $file in
5936 -*) ;;
5938 # Do a test to see if this is really a libtool program.
5939 if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
5940 # If there is no directory component, then add one.
5941 case $file in
5942 */* | *\\*) . $file ;;
5943 *) . ./$file ;;
5944 esac
5946 # Transform arg to wrapped name.
5947 file="$progdir/$program"
5950 esac
5951 # Quote arguments (to preserve shell metacharacters).
5952 file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"`
5953 args="$args \"$file\""
5954 done
5956 if test -z "$run"; then
5957 if test -n "$shlibpath_var"; then
5958 # Export the shlibpath_var.
5959 eval "export $shlibpath_var"
5962 # Restore saved environment variables
5963 if test "${save_LC_ALL+set}" = set; then
5964 LC_ALL="$save_LC_ALL"; export LC_ALL
5966 if test "${save_LANG+set}" = set; then
5967 LANG="$save_LANG"; export LANG
5970 # Now prepare to actually exec the command.
5971 exec_cmd="\$cmd$args"
5972 else
5973 # Display what would be done.
5974 if test -n "$shlibpath_var"; then
5975 eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\""
5976 $echo "export $shlibpath_var"
5978 $echo "$cmd$args"
5979 exit $EXIT_SUCCESS
5983 # libtool clean and uninstall mode
5984 clean | uninstall)
5985 modename="$modename: $mode"
5986 rm="$nonopt"
5987 files=
5988 rmforce=
5989 exit_status=0
5991 # This variable tells wrapper scripts just to set variables rather
5992 # than running their programs.
5993 libtool_install_magic="$magic"
5995 for arg
5997 case $arg in
5998 -f) rm="$rm $arg"; rmforce=yes ;;
5999 -*) rm="$rm $arg" ;;
6000 *) files="$files $arg" ;;
6001 esac
6002 done
6004 if test -z "$rm"; then
6005 $echo "$modename: you must specify an RM program" 1>&2
6006 $echo "$help" 1>&2
6007 exit $EXIT_FAILURE
6010 rmdirs=
6012 origobjdir="$objdir"
6013 for file in $files; do
6014 dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
6015 if test "X$dir" = "X$file"; then
6016 dir=.
6017 objdir="$origobjdir"
6018 else
6019 objdir="$dir/$origobjdir"
6021 name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
6022 test "$mode" = uninstall && objdir="$dir"
6024 # Remember objdir for removal later, being careful to avoid duplicates
6025 if test "$mode" = clean; then
6026 case " $rmdirs " in
6027 *" $objdir "*) ;;
6028 *) rmdirs="$rmdirs $objdir" ;;
6029 esac
6032 # Don't error if the file doesn't exist and rm -f was used.
6033 if (test -L "$file") >/dev/null 2>&1 \
6034 || (test -h "$file") >/dev/null 2>&1 \
6035 || test -f "$file"; then
6037 elif test -d "$file"; then
6038 exit_status=1
6039 continue
6040 elif test "$rmforce" = yes; then
6041 continue
6044 rmfiles="$file"
6046 case $name in
6047 *.la)
6048 # Possibly a libtool archive, so verify it.
6049 if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
6050 . $dir/$name
6052 # Delete the libtool libraries and symlinks.
6053 for n in $library_names; do
6054 rmfiles="$rmfiles $objdir/$n"
6055 done
6056 test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
6057 test "$mode" = clean && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
6059 if test "$mode" = uninstall; then
6060 if test -n "$library_names"; then
6061 # Do each command in the postuninstall commands.
6062 cmds=$postuninstall_cmds
6063 save_ifs="$IFS"; IFS='~'
6064 for cmd in $cmds; do
6065 IFS="$save_ifs"
6066 eval cmd=\"$cmd\"
6067 $show "$cmd"
6068 $run eval "$cmd"
6069 if test "$?" -ne 0 && test "$rmforce" != yes; then
6070 exit_status=1
6072 done
6073 IFS="$save_ifs"
6076 if test -n "$old_library"; then
6077 # Do each command in the old_postuninstall commands.
6078 cmds=$old_postuninstall_cmds
6079 save_ifs="$IFS"; IFS='~'
6080 for cmd in $cmds; do
6081 IFS="$save_ifs"
6082 eval cmd=\"$cmd\"
6083 $show "$cmd"
6084 $run eval "$cmd"
6085 if test "$?" -ne 0 && test "$rmforce" != yes; then
6086 exit_status=1
6088 done
6089 IFS="$save_ifs"
6091 # FIXME: should reinstall the best remaining shared library.
6096 *.lo)
6097 # Possibly a libtool object, so verify it.
6098 if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
6100 # Read the .lo file
6101 . $dir/$name
6103 # Add PIC object to the list of files to remove.
6104 if test -n "$pic_object" \
6105 && test "$pic_object" != none; then
6106 rmfiles="$rmfiles $dir/$pic_object"
6109 # Add non-PIC object to the list of files to remove.
6110 if test -n "$non_pic_object" \
6111 && test "$non_pic_object" != none; then
6112 rmfiles="$rmfiles $dir/$non_pic_object"
6118 if test "$mode" = clean ; then
6119 noexename=$name
6120 case $file in
6121 *.exe)
6122 file=`$echo $file|${SED} 's,.exe$,,'`
6123 noexename=`$echo $name|${SED} 's,.exe$,,'`
6124 # $file with .exe has already been added to rmfiles,
6125 # add $file without .exe
6126 rmfiles="$rmfiles $file"
6128 esac
6129 # Do a test to see if this is a libtool program.
6130 if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
6131 relink_command=
6132 . $dir/$noexename
6134 # note $name still contains .exe if it was in $file originally
6135 # as does the version of $file that was added into $rmfiles
6136 rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
6137 if test "$fast_install" = yes && test -n "$relink_command"; then
6138 rmfiles="$rmfiles $objdir/lt-$name"
6140 if test "X$noexename" != "X$name" ; then
6141 rmfiles="$rmfiles $objdir/lt-${noexename}.c"
6146 esac
6147 $show "$rm $rmfiles"
6148 $run $rm $rmfiles || exit_status=1
6149 done
6150 objdir="$origobjdir"
6152 # Try to remove the ${objdir}s in the directories where we deleted files
6153 for dir in $rmdirs; do
6154 if test -d "$dir"; then
6155 $show "rmdir $dir"
6156 $run rmdir $dir >/dev/null 2>&1
6158 done
6160 exit $exit_status
6164 $echo "$modename: you must specify a MODE" 1>&2
6165 $echo "$generic_help" 1>&2
6166 exit $EXIT_FAILURE
6168 esac
6170 if test -z "$exec_cmd"; then
6171 $echo "$modename: invalid operation mode \`$mode'" 1>&2
6172 $echo "$generic_help" 1>&2
6173 exit $EXIT_FAILURE
6175 fi # test -z "$show_help"
6177 if test -n "$exec_cmd"; then
6178 eval exec $exec_cmd
6179 exit $EXIT_FAILURE
6182 # We need to display help for each of the modes.
6183 case $mode in
6184 "") $echo \
6185 "Usage: $modename [OPTION]... [MODE-ARG]...
6187 Provide generalized library-building support services.
6189 --config show all configuration variables
6190 --debug enable verbose shell tracing
6191 -n, --dry-run display commands without modifying any files
6192 --features display basic configuration information and exit
6193 --finish same as \`--mode=finish'
6194 --help display this help message and exit
6195 --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS]
6196 --quiet same as \`--silent'
6197 --silent don't print informational messages
6198 --tag=TAG use configuration variables from tag TAG
6199 --version print version information
6201 MODE must be one of the following:
6203 clean remove files from the build directory
6204 compile compile a source file into a libtool object
6205 execute automatically set library path, then run a program
6206 finish complete the installation of libtool libraries
6207 install install libraries or executables
6208 link create a library or an executable
6209 uninstall remove libraries from an installed directory
6211 MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for
6212 a more detailed description of MODE.
6214 Report bugs to <bug-libtool@gnu.org>."
6215 exit $EXIT_SUCCESS
6218 clean)
6219 $echo \
6220 "Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
6222 Remove files from the build directory.
6224 RM is the name of the program to use to delete files associated with each FILE
6225 (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
6226 to RM.
6228 If FILE is a libtool library, object or program, all the files associated
6229 with it are deleted. Otherwise, only FILE itself is deleted using RM."
6232 compile)
6233 $echo \
6234 "Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
6236 Compile a source file into a libtool library object.
6238 This mode accepts the following additional options:
6240 -o OUTPUT-FILE set the output file name to OUTPUT-FILE
6241 -prefer-pic try to building PIC objects only
6242 -prefer-non-pic try to building non-PIC objects only
6243 -static always build a \`.o' file suitable for static linking
6245 COMPILE-COMMAND is a command to be used in creating a \`standard' object file
6246 from the given SOURCEFILE.
6248 The output file name is determined by removing the directory component from
6249 SOURCEFILE, then substituting the C source code suffix \`.c' with the
6250 library object suffix, \`.lo'."
6253 execute)
6254 $echo \
6255 "Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]...
6257 Automatically set library path, then run a program.
6259 This mode accepts the following additional options:
6261 -dlopen FILE add the directory containing FILE to the library path
6263 This mode sets the library path environment variable according to \`-dlopen'
6264 flags.
6266 If any of the ARGS are libtool executable wrappers, then they are translated
6267 into their corresponding uninstalled binary, and any of their required library
6268 directories are added to the library path.
6270 Then, COMMAND is executed, with ARGS as arguments."
6273 finish)
6274 $echo \
6275 "Usage: $modename [OPTION]... --mode=finish [LIBDIR]...
6277 Complete the installation of libtool libraries.
6279 Each LIBDIR is a directory that contains libtool libraries.
6281 The commands that this mode executes may require superuser privileges. Use
6282 the \`--dry-run' option if you just want to see what would be executed."
6285 install)
6286 $echo \
6287 "Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND...
6289 Install executables or libraries.
6291 INSTALL-COMMAND is the installation command. The first component should be
6292 either the \`install' or \`cp' program.
6294 The rest of the components are interpreted as arguments to that command (only
6295 BSD-compatible install options are recognized)."
6298 link)
6299 $echo \
6300 "Usage: $modename [OPTION]... --mode=link LINK-COMMAND...
6302 Link object files or libraries together to form another library, or to
6303 create an executable program.
6305 LINK-COMMAND is a command using the C compiler that you would use to create
6306 a program from several object files.
6308 The following components of LINK-COMMAND are treated specially:
6310 -all-static do not do any dynamic linking at all
6311 -avoid-version do not add a version suffix if possible
6312 -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime
6313 -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols
6314 -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
6315 -export-symbols SYMFILE
6316 try to export only the symbols listed in SYMFILE
6317 -export-symbols-regex REGEX
6318 try to export only the symbols matching REGEX
6319 -LLIBDIR search LIBDIR for required installed libraries
6320 -lNAME OUTPUT-FILE requires the installed library libNAME
6321 -module build a library that can dlopened
6322 -no-fast-install disable the fast-install mode
6323 -no-install link a not-installable executable
6324 -no-undefined declare that a library does not refer to external symbols
6325 -o OUTPUT-FILE create OUTPUT-FILE from the specified objects
6326 -objectlist FILE Use a list of object files found in FILE to specify objects
6327 -precious-files-regex REGEX
6328 don't remove output files matching REGEX
6329 -release RELEASE specify package release information
6330 -rpath LIBDIR the created library will eventually be installed in LIBDIR
6331 -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries
6332 -static do not do any dynamic linking of libtool libraries
6333 -version-info CURRENT[:REVISION[:AGE]]
6334 specify library version info [each variable defaults to 0]
6336 All other options (arguments beginning with \`-') are ignored.
6338 Every other argument is treated as a filename. Files ending in \`.la' are
6339 treated as uninstalled libtool libraries, other files are standard or library
6340 object files.
6342 If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
6343 only library objects (\`.lo' files) may be specified, and \`-rpath' is
6344 required, except when creating a convenience library.
6346 If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
6347 using \`ar' and \`ranlib', or on Windows using \`lib'.
6349 If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
6350 is created, otherwise an executable program is created."
6353 uninstall)
6354 $echo \
6355 "Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
6357 Remove libraries from an installation directory.
6359 RM is the name of the program to use to delete files associated with each FILE
6360 (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
6361 to RM.
6363 If FILE is a libtool library, all the files associated with it are deleted.
6364 Otherwise, only FILE itself is deleted using RM."
6368 $echo "$modename: invalid operation mode \`$mode'" 1>&2
6369 $echo "$help" 1>&2
6370 exit $EXIT_FAILURE
6372 esac
6374 $echo
6375 $echo "Try \`$modename --help' for more information about other modes."
6377 exit $EXIT_SUCCESS
6379 # The TAGs below are defined such that we never get into a situation
6380 # in which we disable both kinds of libraries. Given conflicting
6381 # choices, we go for a static library, that is the most portable,
6382 # since we can't tell whether shared libraries were disabled because
6383 # the user asked for that or because the platform doesn't support
6384 # them. This is particularly important on AIX, because we don't
6385 # support having both static and shared libraries enabled at the same
6386 # time on that platform, so we default to a shared-only configuration.
6387 # If a disable-shared tag is given, we'll fallback to a static-only
6388 # configuration. But we'll never go from static-only to shared-only.
6390 # ### BEGIN LIBTOOL TAG CONFIG: disable-shared
6391 build_libtool_libs=no
6392 build_old_libs=yes
6393 # ### END LIBTOOL TAG CONFIG: disable-shared
6395 # ### BEGIN LIBTOOL TAG CONFIG: disable-static
6396 build_old_libs=`case $build_libtool_libs in yes) $echo no;; *) $echo yes;; esac`
6397 # ### END LIBTOOL TAG CONFIG: disable-static
6399 # Local Variables:
6400 # mode:shell-script
6401 # sh-indentation:2
6402 # End: