Added a command line option to attach to a process (thanks to Matthew Allen).
[kdbg.git] / admin / ltmain.sh
blobf2a88efabcde6f60659646dd7c20c354b08e6f51
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
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 # Check that we have a working $echo.
28 if test "X$1" = X--no-reexec; then
29 # Discard the --no-reexec flag, and continue.
30 shift
31 elif test "X$1" = X--fallback-echo; then
32 # Avoid inline document here, it may be left over
34 elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
35 # Yippee, $echo works!
37 else
38 # Restart under the correct shell, and then maybe $echo will work.
39 exec $SHELL "$0" --no-reexec ${1+"$@"}
42 if test "X$1" = X--fallback-echo; then
43 # used as fallback echo
44 shift
45 cat <<EOF
47 EOF
48 exit 0
51 # The name of this program.
52 progname=`$echo "$0" | ${SED} 's%^.*/%%'`
53 modename="$progname"
55 # Constants.
56 PROGRAM=ltmain.sh
57 PACKAGE=libtool
58 VERSION=1.4e
59 TIMESTAMP=" (1.1090 2002/02/07 19:54:36)"
61 default_mode=
62 help="Try \`$progname --help' for more information."
63 magic="%%%MAGIC variable%%%"
64 mkdir="mkdir"
65 mv="mv -f"
66 rm="rm -f"
68 # Sed substitution that helps us do robust quoting. It backslashifies
69 # metacharacters that are still active within double-quoted strings.
70 Xsed="${SED}"' -e 1s/^X//'
71 sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
72 SP2NL='tr \040 \012'
73 NL2SP='tr \015\012 \040\040'
75 # NLS nuisances.
76 # Only set LANG and LC_ALL to C if already set.
77 # These must not be set unconditionally because not all systems understand
78 # e.g. LANG=C (notably SCO).
79 # We save the old values to restore during execute mode.
80 if test "${LC_ALL+set}" = set; then
81 save_LC_ALL="$LC_ALL"; LC_ALL=C; export LC_ALL
83 if test "${LANG+set}" = set; then
84 save_LANG="$LANG"; LANG=C; export LANG
87 # Make sure IFS has a sensible default
88 : ${IFS=" "}
90 if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
91 echo "$modename: not configured to build any kind of library" 1>&2
92 echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
93 exit 1
96 # Global variables.
97 mode=$default_mode
98 nonopt=
99 prev=
100 prevopt=
101 run=
102 show="$echo"
103 show_help=
104 execute_dlfiles=
105 lo2o="s/\\.lo\$/.${objext}/"
106 o2lo="s/\\.${objext}\$/.lo/"
108 # Parse our command line options once, thoroughly.
109 while test "$#" -gt 0
111 arg="$1"
112 shift
114 case $arg in
115 -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;;
116 *) optarg= ;;
117 esac
119 # If the previous option needs an argument, assign it.
120 if test -n "$prev"; then
121 case $prev in
122 execute_dlfiles)
123 execute_dlfiles="$execute_dlfiles $arg"
125 tag)
126 tagname="$arg"
128 # Check whether tagname contains only valid characters
129 case $tagname in
130 *[!-_A-Za-z0-9,/]*)
131 echo "$progname: invalid tag name: $tagname" 1>&2
132 exit 1
134 esac
136 case $tagname in
138 # Don't test for the "default" C tag, as we know, it's there, but
139 # not specially marked.
142 if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$0" > /dev/null; then
143 taglist="$taglist $tagname"
144 # Evaluate the configuration.
145 eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $0`"
146 else
147 echo "$progname: ignoring unknown tag $tagname" 1>&2
150 esac
153 eval "$prev=\$arg"
155 esac
157 prev=
158 prevopt=
159 continue
162 # Have we seen a non-optional argument yet?
163 case $arg in
164 --help)
165 show_help=yes
168 --version)
169 echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP"
170 echo
171 echo "Copyright 1996, 1997, 1998, 1999, 2000, 2001"
172 echo "Free Software Foundation, Inc."
173 echo "This is free software; see the source for copying conditions. There is NO"
174 echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
175 exit 0
178 --config)
179 ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $0
180 # Now print the configurations for the tags.
181 for tagname in $taglist; do
182 ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$0"
183 done
184 exit 0
187 --debug)
188 echo "$progname: enabling shell trace mode"
189 set -x
192 --dry-run | -n)
193 run=:
196 --features)
197 echo "host: $host"
198 if test "$build_libtool_libs" = yes; then
199 echo "enable shared libraries"
200 else
201 echo "disable shared libraries"
203 if test "$build_old_libs" = yes; then
204 echo "enable static libraries"
205 else
206 echo "disable static libraries"
208 exit 0
211 --finish) mode="finish" ;;
213 --mode) prevopt="--mode" prev=mode ;;
214 --mode=*) mode="$optarg" ;;
216 --preserve-dup-deps) duplicate_deps="yes" ;;
218 --quiet | --silent)
219 show=:
222 --tag) prevopt="--tag" prev=tag ;;
223 --tag=*)
224 set tag "$optarg" ${1+"$@"}
225 shift
226 prev=tag
229 -dlopen)
230 prevopt="-dlopen"
231 prev=execute_dlfiles
235 $echo "$modename: unrecognized option \`$arg'" 1>&2
236 $echo "$help" 1>&2
237 exit 1
241 nonopt="$arg"
242 break
244 esac
245 done
247 if test -n "$prevopt"; then
248 $echo "$modename: option \`$prevopt' requires an argument" 1>&2
249 $echo "$help" 1>&2
250 exit 1
253 # If this variable is set in any of the actions, the command in it
254 # will be execed at the end. This prevents here-documents from being
255 # left over by shells.
256 exec_cmd=
258 if test -z "$show_help"; then
260 # Infer the operation mode.
261 if test -z "$mode"; then
262 case $nonopt in
263 *cc | *++ | gcc* | *-gcc*)
264 mode=link
265 for arg
267 case $arg in
269 mode=compile
270 break
272 esac
273 done
275 *db | *dbx | *strace | *truss)
276 mode=execute
278 *install*|cp|mv)
279 mode=install
281 *rm)
282 mode=uninstall
285 # If we have no mode, but dlfiles were specified, then do execute mode.
286 test -n "$execute_dlfiles" && mode=execute
288 # Just use the default operation mode.
289 if test -z "$mode"; then
290 if test -n "$nonopt"; then
291 $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2
292 else
293 $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2
297 esac
300 # Only execute mode is allowed to have -dlopen flags.
301 if test -n "$execute_dlfiles" && test "$mode" != execute; then
302 $echo "$modename: unrecognized option \`-dlopen'" 1>&2
303 $echo "$help" 1>&2
304 exit 1
307 # Change the help message to a mode-specific one.
308 generic_help="$help"
309 help="Try \`$modename --help --mode=$mode' for more information."
311 # These modes are in order of execution frequency so that they run quickly.
312 case $mode in
313 # libtool compile mode
314 compile)
315 modename="$modename: compile"
316 # Get the compilation command and the source file.
317 base_compile=
318 prev=
319 lastarg=
320 srcfile="$nonopt"
321 suppress_output=
323 user_target=no
324 for arg
326 case $prev in
327 "") ;;
328 xcompiler)
329 # Aesthetically quote the previous argument.
330 prev=
331 lastarg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
333 case $arg in
334 # Double-quote args containing other shell metacharacters.
335 # Many Bourne shells cannot handle close brackets correctly
336 # in scan sets, so we specify it separately.
337 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
338 arg="\"$arg\""
340 esac
342 # Add the previous argument to base_compile.
343 if test -z "$base_compile"; then
344 base_compile="$lastarg"
345 else
346 base_compile="$base_compile $lastarg"
348 continue
350 esac
352 # Accept any command-line options.
353 case $arg in
355 if test "$user_target" != "no"; then
356 $echo "$modename: you cannot specify \`-o' more than once" 1>&2
357 exit 1
359 user_target=next
362 -static)
363 build_old_libs=yes
364 continue
367 -prefer-pic)
368 pic_mode=yes
369 continue
372 -prefer-non-pic)
373 pic_mode=no
374 continue
377 -Xcompiler)
378 prev=xcompiler
379 continue
382 -Wc,*)
383 args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"`
384 lastarg=
385 save_ifs="$IFS"; IFS=','
386 for arg in $args; do
387 IFS="$save_ifs"
389 # Double-quote args containing other shell metacharacters.
390 # Many Bourne shells cannot handle close brackets correctly
391 # in scan sets, so we specify it separately.
392 case $arg in
393 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
394 arg="\"$arg\""
396 esac
397 lastarg="$lastarg $arg"
398 done
399 IFS="$save_ifs"
400 lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"`
402 # Add the arguments to base_compile.
403 if test -z "$base_compile"; then
404 base_compile="$lastarg"
405 else
406 base_compile="$base_compile $lastarg"
408 continue
410 esac
412 case $user_target in
413 next)
414 # The next one is the -o target name
415 user_target=yes
416 continue
418 yes)
419 # We got the output file
420 user_target=set
421 libobj="$arg"
422 continue
424 esac
426 # Accept the current argument as the source file.
427 lastarg="$srcfile"
428 srcfile="$arg"
430 # Aesthetically quote the previous argument.
432 # Backslashify any backslashes, double quotes, and dollar signs.
433 # These are the only characters that are still specially
434 # interpreted inside of double-quoted scrings.
435 lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"`
437 # Double-quote args containing other shell metacharacters.
438 # Many Bourne shells cannot handle close brackets correctly
439 # in scan sets, so we specify it separately.
440 case $lastarg in
441 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
442 lastarg="\"$lastarg\""
444 esac
446 # Add the previous argument to base_compile.
447 if test -z "$base_compile"; then
448 base_compile="$lastarg"
449 else
450 base_compile="$base_compile $lastarg"
452 done
454 case $user_target in
455 set)
458 # Get the name of the library object.
459 libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'`
462 $echo "$modename: you must specify a target with \`-o'" 1>&2
463 exit 1
465 esac
467 # Recognize several different file suffixes.
468 # If the user specifies -o file.o, it is replaced with file.lo
469 xform='[cCFSifmso]'
470 case $libobj in
471 *.ada) xform=ada ;;
472 *.adb) xform=adb ;;
473 *.ads) xform=ads ;;
474 *.asm) xform=asm ;;
475 *.c++) xform=c++ ;;
476 *.cc) xform=cc ;;
477 *.ii) xform=ii ;;
478 *.class) xform=class ;;
479 *.cpp) xform=cpp ;;
480 *.cxx) xform=cxx ;;
481 *.f90) xform=f90 ;;
482 *.for) xform=for ;;
483 *.java) xform=java ;;
484 esac
486 libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
488 case $libobj in
489 *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;;
491 $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2
492 exit 1
494 esac
496 # Infer tagged configuration to use if any are available and
497 # if one wasn't chosen via the "--tag" command line option.
498 # Only attempt this if the compiler in the base compile
499 # command doesn't match the default compiler.
500 if test -n "$available_tags" && test -z "$tagname"; then
501 case "$base_compile " in
502 "$CC "*) ;;
503 # Blanks in the command may have been stripped by the calling shell,
504 # but not from the CC environment variable when ltconfig was run.
505 "`$echo $CC` "*) ;;
507 for z in $available_tags; do
508 if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$0" > /dev/null; then
509 # Evaluate the configuration.
510 eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $0`"
511 case "$base_compile " in
512 "$CC "*)
513 # The compiler in the base compile command matches
514 # the one in the tagged configuration.
515 # Assume this is the tagged configuration we want.
516 tagname=$z
517 break
519 "`$echo $CC` "*)
520 tagname=$z
521 break
523 esac
525 done
526 # If $tagname still isn't set, then no tagged configuration
527 # was found and let the user know that the "--tag" command
528 # line option must be used.
529 if test -z "$tagname"; then
530 echo "$modename: unable to infer tagged configuration"
531 echo "$modename: specify a tag with \`--tag'" 1>&2
532 exit 1
533 # else
534 # echo "$modename: using $tagname tagged configuration"
537 esac
540 objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
541 xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
542 if test "X$xdir" = "X$obj"; then
543 xdir=
544 else
545 xdir=$xdir/
547 lobj=${xdir}$objdir/$objname
549 if test -z "$base_compile"; then
550 $echo "$modename: you must specify a compilation command" 1>&2
551 $echo "$help" 1>&2
552 exit 1
555 # Delete any leftover library objects.
556 if test "$build_old_libs" = yes; then
557 removelist="$obj $lobj $libobj ${libobj}T"
558 else
559 removelist="$lobj $libobj ${libobj}T"
562 $run $rm $removelist
563 trap "$run $rm $removelist; exit 1" 1 2 15
565 # On Cygwin there's no "real" PIC flag so we must build both object types
566 case $host_os in
567 cygwin* | mingw* | pw32* | os2*)
568 pic_mode=default
570 esac
571 if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
572 # non-PIC code in shared libraries is not supported
573 pic_mode=default
576 # Calculate the filename of the output object if compiler does
577 # not support -o with -c
578 if test "$compiler_c_o" = no; then
579 output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
580 lockfile="$output_obj.lock"
581 removelist="$removelist $output_obj $lockfile"
582 trap "$run $rm $removelist; exit 1" 1 2 15
583 else
584 output_obj=
585 need_locks=no
586 lockfile=
589 # Lock this critical section if it is needed
590 # We use this script file to make the link, it avoids creating a new file
591 if test "$need_locks" = yes; then
592 until $run ln "$0" "$lockfile" 2>/dev/null; do
593 $show "Waiting for $lockfile to be removed"
594 sleep 2
595 done
596 elif test "$need_locks" = warn; then
597 if test -f "$lockfile"; then
598 echo "\
599 *** ERROR, $lockfile exists and contains:
600 `cat $lockfile 2>/dev/null`
602 This indicates that another process is trying to use the same
603 temporary object file, and libtool could not work around it because
604 your compiler does not support \`-c' and \`-o' together. If you
605 repeat this compilation, it may succeed, by chance, but you had better
606 avoid parallel builds (make -j) in this platform, or get a better
607 compiler."
609 $run $rm $removelist
610 exit 1
612 echo $srcfile > "$lockfile"
615 if test -n "$fix_srcfile_path"; then
616 eval srcfile=\"$fix_srcfile_path\"
619 $run $rm "$libobj" "${libobj}T"
621 # Create a libtool object file (analogous to a ".la" file),
622 # but don't create it if we're doing a dry run.
623 test -z "$run" && cat > ${libobj}T <<EOF
624 # $libobj - a libtool object file
625 # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
627 # Please DO NOT delete this file!
628 # It is necessary for linking the library.
630 # Name of the PIC object.
633 # Only build a PIC object if we are building libtool libraries.
634 if test "$build_libtool_libs" = yes; then
635 # Without this assignment, base_compile gets emptied.
636 fbsd_hideous_sh_bug=$base_compile
638 if test "$pic_mode" != no; then
639 command="$base_compile $srcfile $pic_flag"
640 else
641 # Don't build PIC code
642 command="$base_compile $srcfile"
645 if test ! -d "${xdir}$objdir"; then
646 $show "$mkdir ${xdir}$objdir"
647 $run $mkdir ${xdir}$objdir
648 status=$?
649 if test "$status" -ne 0 && test ! -d "${xdir}$objdir"; then
650 exit $status
654 if test -z "$output_obj"; then
655 # Place PIC objects in $objdir
656 command="$command -o $lobj"
659 $run $rm "$lobj" "$output_obj"
661 $show "$command"
662 if $run eval "$command"; then :
663 else
664 test -n "$output_obj" && $run $rm $removelist
665 exit 1
668 if test "$need_locks" = warn &&
669 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
670 echo "\
671 *** ERROR, $lockfile contains:
672 `cat $lockfile 2>/dev/null`
674 but it should contain:
675 $srcfile
677 This indicates that another process is trying to use the same
678 temporary object file, and libtool could not work around it because
679 your compiler does not support \`-c' and \`-o' together. If you
680 repeat this compilation, it may succeed, by chance, but you had better
681 avoid parallel builds (make -j) in this platform, or get a better
682 compiler."
684 $run $rm $removelist
685 exit 1
688 # Just move the object if needed, then go on to compile the next one
689 if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
690 $show "$mv $output_obj $lobj"
691 if $run $mv $output_obj $lobj; then :
692 else
693 error=$?
694 $run $rm $removelist
695 exit $error
699 # Append the name of the PIC object to the libtool object file.
700 test -z "$run" && cat >> ${libobj}T <<EOF
701 pic_object='$objdir/$objname'
705 # Allow error messages only from the first compilation.
706 suppress_output=' >/dev/null 2>&1'
707 else
708 # No PIC object so indicate it doesn't exist in the libtool
709 # object file.
710 test -z "$run" && cat >> ${libobj}T <<EOF
711 pic_object=none
716 # Only build a position-dependent object if we build old libraries.
717 if test "$build_old_libs" = yes; then
718 if test "$pic_mode" != yes; then
719 # Don't build PIC code
720 command="$base_compile $srcfile"
721 else
722 command="$base_compile $srcfile $pic_flag"
724 if test "$compiler_c_o" = yes; then
725 command="$command -o $obj"
728 # Suppress compiler output if we already did a PIC compilation.
729 command="$command$suppress_output"
730 $run $rm "$obj" "$output_obj"
731 $show "$command"
732 if $run eval "$command"; then :
733 else
734 $run $rm $removelist
735 exit 1
738 if test "$need_locks" = warn &&
739 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
740 echo "\
741 *** ERROR, $lockfile contains:
742 `cat $lockfile 2>/dev/null`
744 but it should contain:
745 $srcfile
747 This indicates that another process is trying to use the same
748 temporary object file, and libtool could not work around it because
749 your compiler does not support \`-c' and \`-o' together. If you
750 repeat this compilation, it may succeed, by chance, but you had better
751 avoid parallel builds (make -j) in this platform, or get a better
752 compiler."
754 $run $rm $removelist
755 exit 1
758 # Just move the object if needed
759 if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
760 $show "$mv $output_obj $obj"
761 if $run $mv $output_obj $obj; then :
762 else
763 error=$?
764 $run $rm $removelist
765 exit $error
769 # Append the name of the non-PIC object the libtool object file.
770 # Only append if the libtool object file exists.
771 test -z "$run" && cat >> ${libobj}T <<EOF
772 # Name of the non-PIC object.
773 non_pic_object='$objname'
776 else
777 # Append the name of the non-PIC object the libtool object file.
778 # Only append if the libtool object file exists.
779 test -z "$run" && cat >> ${libobj}T <<EOF
780 # Name of the non-PIC object.
781 non_pic_object=none
786 $run $mv "${libobj}T" "${libobj}"
788 # Unlock the critical section if it was locked
789 if test "$need_locks" != no; then
790 $run $rm "$lockfile"
793 exit 0
796 # libtool link mode
797 link | relink)
798 modename="$modename: link"
799 case $host in
800 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
801 # It is impossible to link a dll without this setting, and
802 # we shouldn't force the makefile maintainer to figure out
803 # which system we are compiling for in order to pass an extra
804 # flag for every libtool invokation.
805 # allow_undefined=no
807 # FIXME: Unfortunately, there are problems with the above when trying
808 # to make a dll which has undefined symbols, in which case not
809 # even a static library is built. For now, we need to specify
810 # -no-undefined on the libtool link line when we can be certain
811 # that all symbols are satisfied, otherwise we get a static library.
812 allow_undefined=yes
815 allow_undefined=yes
817 esac
818 libtool_args="$nonopt"
819 base_compile="$nonopt"
820 compile_command="$nonopt"
821 finalize_command="$nonopt"
823 compile_rpath=
824 finalize_rpath=
825 compile_shlibpath=
826 finalize_shlibpath=
827 convenience=
828 old_convenience=
829 deplibs=
830 old_deplibs=
831 add_flags=
832 compiler_flags=
833 linker_flags=
834 dllsearchpath=
835 lib_search_path=`pwd`
837 avoid_version=no
838 dlfiles=
839 dlprefiles=
840 dlself=no
841 export_dynamic=no
842 export_symbols=
843 export_symbols_regex=
844 generated=
845 libobjs=
846 ltlibs=
847 module=no
848 no_install=no
849 objs=
850 non_pic_objects=
851 prefer_static_libs=no
852 preload=no
853 prev=
854 prevarg=
855 release=
856 rpath=
857 xrpath=
858 perm_rpath=
859 temp_rpath=
860 thread_safe=no
861 vinfo=
863 # We need to know -static, to get the right output filenames.
864 for arg
866 case $arg in
867 -all-static | -static)
868 if test "X$arg" = "X-all-static"; then
869 if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
870 $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2
872 if test -n "$link_static_flag"; then
873 dlopen_self=$dlopen_self_static
875 else
876 if test -z "$pic_flag" && test -n "$link_static_flag"; then
877 dlopen_self=$dlopen_self_static
880 build_libtool_libs=no
881 build_old_libs=yes
882 prefer_static_libs=yes
883 break
885 esac
886 done
888 # See if our shared archives depend on static archives.
889 test -n "$old_archive_from_new_cmds" && build_old_libs=yes
891 # Go through the arguments, transforming them on the way.
892 while test "$#" -gt 0; do
893 arg="$1"
894 base_compile="$base_compile $arg"
895 shift
896 case $arg in
897 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
898 qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test
900 *) qarg=$arg ;;
901 esac
902 libtool_args="$libtool_args $qarg"
904 # If the previous option needs an argument, assign it.
905 if test -n "$prev"; then
906 case $prev in
907 output)
908 compile_command="$compile_command @OUTPUT@"
909 finalize_command="$finalize_command @OUTPUT@"
911 esac
913 case $prev in
914 dlfiles|dlprefiles)
915 if test "$preload" = no; then
916 # Add the symbol object into the linking commands.
917 compile_command="$compile_command @SYMFILE@"
918 finalize_command="$finalize_command @SYMFILE@"
919 preload=yes
921 case $arg in
922 *.la | *.lo) ;; # We handle these cases below.
923 force)
924 if test "$dlself" = no; then
925 dlself=needless
926 export_dynamic=yes
928 prev=
929 continue
931 self)
932 if test "$prev" = dlprefiles; then
933 dlself=yes
934 elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
935 dlself=yes
936 else
937 dlself=needless
938 export_dynamic=yes
940 prev=
941 continue
944 if test "$prev" = dlfiles; then
945 dlfiles="$dlfiles $arg"
946 else
947 dlprefiles="$dlprefiles $arg"
949 prev=
950 continue
952 esac
954 expsyms)
955 export_symbols="$arg"
956 if test ! -f "$arg"; then
957 $echo "$modename: symbol file \`$arg' does not exist"
958 exit 1
960 prev=
961 continue
963 expsyms_regex)
964 export_symbols_regex="$arg"
965 prev=
966 continue
968 release)
969 release="-$arg"
970 prev=
971 continue
973 objectlist)
974 if test -f "$arg"; then
975 save_arg=$arg
976 moreargs=
977 for fil in `cat $save_arg`
979 # moreargs="$moreargs $fil"
980 arg=$fil
981 # A libtool-controlled object.
983 # Check to see that this really is a libtool object.
984 if (${SED} -e '2q' $arg | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
985 pic_object=
986 non_pic_object=
988 # Read the .lo file
989 # If there is no directory component, then add one.
990 case $arg in
991 */* | *\\*) . $arg ;;
992 *) . ./$arg ;;
993 esac
995 if test -z "$pic_object" || \
996 test -z "$non_pic_object" ||
997 test "$pic_object" = none && \
998 test "$non_pic_object" = none; then
999 $echo "$modename: cannot find name of object for \`$arg'" 1>&2
1000 exit 1
1003 # Extract subdirectory from the argument.
1004 xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
1005 if test "X$xdir" = "X$arg"; then
1006 xdir=
1007 else
1008 xdir="$xdir/"
1011 if test "$pic_object" != none; then
1012 # Prepend the subdirectory the object is found in.
1013 pic_object="$xdir$pic_object"
1015 if test "$prev" = dlfiles; then
1016 if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
1017 dlfiles="$dlfiles $pic_object"
1018 prev=
1019 continue
1020 else
1021 # If libtool objects are unsupported, then we need to preload.
1022 prev=dlprefiles
1026 # CHECK ME: I think I busted this. -Ossama
1027 if test "$prev" = dlprefiles; then
1028 # Preload the old-style object.
1029 dlprefiles="$dlprefiles $pic_object"
1030 prev=
1033 # A PIC object.
1034 libobjs="$libobjs $pic_object"
1035 arg="$pic_object"
1038 # Non-PIC object.
1039 if test "$non_pic_object" != none; then
1040 # Prepend the subdirectory the object is found in.
1041 non_pic_object="$xdir$non_pic_object"
1043 # A standard non-PIC object
1044 non_pic_objects="$non_pic_objects $non_pic_object"
1045 if test -z "$pic_object" || test "$pic_object" = none ; then
1046 arg="$non_pic_object"
1049 else
1050 # Only an error if not doing a dry-run.
1051 if test -z "$run"; then
1052 $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
1053 exit 1
1054 else
1055 # Dry-run case.
1057 # Extract subdirectory from the argument.
1058 xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
1059 if test "X$xdir" = "X$arg"; then
1060 xdir=
1061 else
1062 xdir="$xdir/"
1065 pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
1066 non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
1067 libobjs="$libobjs $pic_object"
1068 non_pic_objects="$non_pic_objects $non_pic_object"
1071 done
1072 else
1073 $echo "$modename: link input file \`$save_arg' does not exist"
1074 exit 1
1076 arg=$save_arg
1077 prev=
1078 continue
1080 rpath | xrpath)
1081 # We need an absolute path.
1082 case $arg in
1083 [\\/]* | [A-Za-z]:[\\/]*) ;;
1085 $echo "$modename: only absolute run-paths are allowed" 1>&2
1086 exit 1
1088 esac
1089 if test "$prev" = rpath; then
1090 case "$rpath " in
1091 *" $arg "*) ;;
1092 *) rpath="$rpath $arg" ;;
1093 esac
1094 else
1095 case "$xrpath " in
1096 *" $arg "*) ;;
1097 *) xrpath="$xrpath $arg" ;;
1098 esac
1100 prev=
1101 continue
1103 xcompiler)
1104 compiler_flags="$compiler_flags $qarg"
1105 prev=
1106 compile_command="$compile_command $qarg"
1107 finalize_command="$finalize_command $qarg"
1108 continue
1110 xlinker)
1111 linker_flags="$linker_flags $qarg"
1112 compiler_flags="$compiler_flags $wl$qarg"
1113 prev=
1114 compile_command="$compile_command $wl$qarg"
1115 finalize_command="$finalize_command $wl$qarg"
1116 continue
1119 eval "$prev=\"\$arg\""
1120 prev=
1121 continue
1123 esac
1124 fi # test -n "$prev"
1126 prevarg="$arg"
1128 case $arg in
1129 -all-static)
1130 if test -n "$link_static_flag"; then
1131 compile_command="$compile_command $link_static_flag"
1132 finalize_command="$finalize_command $link_static_flag"
1134 continue
1137 -allow-undefined)
1138 # FIXME: remove this flag sometime in the future.
1139 $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2
1140 continue
1143 -avoid-version)
1144 avoid_version=yes
1145 continue
1148 -dlopen)
1149 prev=dlfiles
1150 continue
1153 -dlpreopen)
1154 prev=dlprefiles
1155 continue
1158 -export-dynamic)
1159 export_dynamic=yes
1160 continue
1163 -export-symbols | -export-symbols-regex)
1164 if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
1165 $echo "$modename: more than one -exported-symbols argument is not allowed"
1166 exit 1
1168 if test "X$arg" = "X-export-symbols"; then
1169 prev=expsyms
1170 else
1171 prev=expsyms_regex
1173 continue
1176 # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
1177 # so, if we see these flags be careful not to treat them like -L
1178 -L[A-Z][A-Z]*:*)
1179 case $with_gcc/$host in
1180 no/*-*-irix* | /*-*-irix*)
1181 compile_command="$compile_command $arg"
1182 finalize_command="$finalize_command $arg"
1184 esac
1185 continue
1188 -L*)
1189 dir=`$echo "X$arg" | $Xsed -e 's/^-L//'`
1190 # We need an absolute path.
1191 case $dir in
1192 [\\/]* | [A-Za-z]:[\\/]*) ;;
1194 absdir=`cd "$dir" && pwd`
1195 if test -z "$absdir"; then
1196 $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2
1197 exit 1
1199 dir="$absdir"
1201 esac
1202 case "$deplibs " in
1203 *" -L$dir "*) ;;
1205 deplibs="$deplibs -L$dir"
1206 lib_search_path="$lib_search_path $dir"
1208 esac
1209 case $host in
1210 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
1211 case :$dllsearchpath: in
1212 *":$dir:"*) ;;
1213 *) dllsearchpath="$dllsearchpath:$dir";;
1214 esac
1216 esac
1217 continue
1220 -l*)
1221 if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
1222 case $host in
1223 *-*-cygwin* | *-*-pw32* | *-*-beos*)
1224 # These systems don't actually have a C or math library (as such)
1225 continue
1227 *-*-mingw* | *-*-os2*)
1228 # These systems don't actually have a C library (as such)
1229 test "X$arg" = "X-lc" && continue
1231 *-*-openbsd* | *-*-freebsd*)
1232 # Do not include libc due to us having libc/libc_r.
1233 test "X$arg" = "X-lc" && continue
1235 *-*-rhapsody* | *-*-darwin1.[012])
1236 # Rhapsody C and math libraries are in the System framework
1237 deplibs="$deplibs -framework System"
1238 continue
1239 esac
1240 elif test "X$arg" = "X-lc_r"; then
1241 case $host in
1242 *-*-openbsd* | *-*-freebsd*)
1243 # Do not include libc_r directly, use -pthread flag.
1244 continue
1246 esac
1248 deplibs="$deplibs $arg"
1249 continue
1252 -module)
1253 module=yes
1254 continue
1257 -no-fast-install)
1258 fast_install=no
1259 continue
1262 -no-install)
1263 case $host in
1264 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
1265 # The PATH hackery in wrapper scripts is required on Windows
1266 # in order for the loader to find any dlls it needs.
1267 $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2
1268 $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2
1269 fast_install=no
1271 *) no_install=yes ;;
1272 esac
1273 continue
1276 -no-undefined)
1277 allow_undefined=no
1278 continue
1281 -objectlist)
1282 prev=objectlist
1283 continue
1286 -o) prev=output ;;
1288 -release)
1289 prev=release
1290 continue
1293 -rpath)
1294 prev=rpath
1295 continue
1299 prev=xrpath
1300 continue
1303 -R*)
1304 dir=`$echo "X$arg" | $Xsed -e 's/^-R//'`
1305 # We need an absolute path.
1306 case $dir in
1307 [\\/]* | [A-Za-z]:[\\/]*) ;;
1309 $echo "$modename: only absolute run-paths are allowed" 1>&2
1310 exit 1
1312 esac
1313 case "$xrpath " in
1314 *" $dir "*) ;;
1315 *) xrpath="$xrpath $dir" ;;
1316 esac
1317 continue
1320 -static)
1321 # The effects of -static are defined in a previous loop.
1322 # We used to do the same as -all-static on platforms that
1323 # didn't have a PIC flag, but the assumption that the effects
1324 # would be equivalent was wrong. It would break on at least
1325 # Digital Unix and AIX.
1326 continue
1329 -thread-safe)
1330 thread_safe=yes
1331 continue
1334 -version-info)
1335 prev=vinfo
1336 continue
1339 -Wc,*)
1340 args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'`
1341 arg=
1342 save_ifs="$IFS"; IFS=','
1343 for flag in $args; do
1344 IFS="$save_ifs"
1345 case $flag in
1346 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
1347 flag="\"$flag\""
1349 esac
1350 arg="$arg $wl$flag"
1351 compiler_flags="$compiler_flags $flag"
1352 done
1353 IFS="$save_ifs"
1354 arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
1357 -Wl,*)
1358 args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'`
1359 arg=
1360 save_ifs="$IFS"; IFS=','
1361 for flag in $args; do
1362 IFS="$save_ifs"
1363 case $flag in
1364 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
1365 flag="\"$flag\""
1367 esac
1368 arg="$arg $wl$flag"
1369 compiler_flags="$compiler_flags $wl$flag"
1370 linker_flags="$linker_flags $flag"
1371 done
1372 IFS="$save_ifs"
1373 arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
1376 -Xcompiler)
1377 prev=xcompiler
1378 continue
1381 -Xlinker)
1382 prev=xlinker
1383 continue
1386 # Some other compiler flag.
1387 -* | +*)
1388 # Unknown arguments in both finalize_command and compile_command need
1389 # to be aesthetically quoted because they are evaled later.
1390 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
1391 case $arg in
1392 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
1393 arg="\"$arg\""
1395 esac
1396 add_flags="$add_flags $arg"
1399 *.$objext)
1400 # A standard object.
1401 objs="$objs $arg"
1404 *.lo)
1405 # A libtool-controlled object.
1407 # Check to see that this really is a libtool object.
1408 if (${SED} -e '2q' $arg | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
1409 pic_object=
1410 non_pic_object=
1412 # Read the .lo file
1413 # If there is no directory component, then add one.
1414 case $arg in
1415 */* | *\\*) . $arg ;;
1416 *) . ./$arg ;;
1417 esac
1419 if test -z "$pic_object" || \
1420 test -z "$non_pic_object" ||
1421 test "$pic_object" = none && \
1422 test "$non_pic_object" = none; then
1423 $echo "$modename: cannot find name of object for \`$arg'" 1>&2
1424 exit 1
1427 # Extract subdirectory from the argument.
1428 xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
1429 if test "X$xdir" = "X$arg"; then
1430 xdir=
1431 else
1432 xdir="$xdir/"
1435 if test "$pic_object" != none; then
1436 # Prepend the subdirectory the object is found in.
1437 pic_object="$xdir$pic_object"
1439 if test "$prev" = dlfiles; then
1440 if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
1441 dlfiles="$dlfiles $pic_object"
1442 prev=
1443 continue
1444 else
1445 # If libtool objects are unsupported, then we need to preload.
1446 prev=dlprefiles
1450 # CHECK ME: I think I busted this. -Ossama
1451 if test "$prev" = dlprefiles; then
1452 # Preload the old-style object.
1453 dlprefiles="$dlprefiles $pic_object"
1454 prev=
1457 # A PIC object.
1458 libobjs="$libobjs $pic_object"
1459 arg="$pic_object"
1462 # Non-PIC object.
1463 if test "$non_pic_object" != none; then
1464 # Prepend the subdirectory the object is found in.
1465 non_pic_object="$xdir$non_pic_object"
1467 # A standard non-PIC object
1468 non_pic_objects="$non_pic_objects $non_pic_object"
1469 if test -z "$pic_object" || test "$pic_object" = none ; then
1470 arg="$non_pic_object"
1473 else
1474 # Only an error if not doing a dry-run.
1475 if test -z "$run"; then
1476 $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
1477 exit 1
1478 else
1479 # Dry-run case.
1481 # Extract subdirectory from the argument.
1482 xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
1483 if test "X$xdir" = "X$arg"; then
1484 xdir=
1485 else
1486 xdir="$xdir/"
1489 pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
1490 non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
1491 libobjs="$libobjs $pic_object"
1492 non_pic_objects="$non_pic_objects $non_pic_object"
1497 *.$libext)
1498 # An archive.
1499 deplibs="$deplibs $arg"
1500 old_deplibs="$old_deplibs $arg"
1501 continue
1504 *.la)
1505 # A libtool-controlled library.
1507 if test "$prev" = dlfiles; then
1508 # This library was specified with -dlopen.
1509 dlfiles="$dlfiles $arg"
1510 prev=
1511 elif test "$prev" = dlprefiles; then
1512 # The library was specified with -dlpreopen.
1513 dlprefiles="$dlprefiles $arg"
1514 prev=
1515 else
1516 deplibs="$deplibs $arg"
1518 continue
1521 # Some other compiler argument.
1523 # Unknown arguments in both finalize_command and compile_command need
1524 # to be aesthetically quoted because they are evaled later.
1525 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
1526 case $arg in
1527 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
1528 arg="\"$arg\""
1530 esac
1531 add_flags="$add_flags $arg"
1533 esac # arg
1535 # Now actually substitute the argument into the commands.
1536 if test -n "$arg"; then
1537 compile_command="$compile_command $arg"
1538 finalize_command="$finalize_command $arg"
1540 done # argument parsing loop
1542 if test -n "$prev"; then
1543 $echo "$modename: the \`$prevarg' option requires an argument" 1>&2
1544 $echo "$help" 1>&2
1545 exit 1
1548 # Infer tagged configuration to use if any are available and
1549 # if one wasn't chosen via the "--tag" command line option.
1550 # Only attempt this if the compiler in the base link
1551 # command doesn't match the default compiler.
1552 if test -n "$available_tags" && test -z "$tagname"; then
1553 case $base_compile in
1554 "$CC "*) ;;
1555 # Blanks in the command may have been stripped by the calling shell,
1556 # but not from the CC environment variable when ltconfig was run.
1557 "`$echo $CC` "*) ;;
1559 for z in $available_tags; do
1560 if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$0" > /dev/null; then
1561 # Evaluate the configuration.
1562 eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $0`"
1563 case $base_compile in
1564 "$CC "*)
1565 # The compiler in $compile_command matches
1566 # the one in the tagged configuration.
1567 # Assume this is the tagged configuration we want.
1568 tagname=$z
1569 break
1571 "`$echo $CC` "*)
1572 tagname=$z
1573 break
1575 esac
1577 done
1578 # If $tagname still isn't set, then no tagged configuration
1579 # was found and let the user know that the "--tag" command
1580 # line option must be used.
1581 if test -z "$tagname"; then
1582 echo "$modename: unable to infer tagged configuration"
1583 echo "$modename: specify a tag with \`--tag'" 1>&2
1584 exit 1
1585 # else
1586 # echo "$modename: using $tagname tagged configuration"
1589 esac
1592 if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
1593 eval arg=\"$export_dynamic_flag_spec\"
1594 compile_command="$compile_command $arg"
1595 finalize_command="$finalize_command $arg"
1598 oldlibs=
1599 # calculate the name of the file, without its directory
1600 outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'`
1601 libobjs_save="$libobjs"
1603 if test -n "$shlibpath_var"; then
1604 # get the directories listed in $shlibpath_var
1605 eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
1606 else
1607 shlib_search_path=
1609 eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
1610 eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
1612 output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
1613 if test "X$output_objdir" = "X$output"; then
1614 output_objdir="$objdir"
1615 else
1616 output_objdir="$output_objdir/$objdir"
1618 # Create the object directory.
1619 if test ! -d "$output_objdir"; then
1620 $show "$mkdir $output_objdir"
1621 $run $mkdir $output_objdir
1622 status=$?
1623 if test "$status" -ne 0 && test ! -d "$output_objdir"; then
1624 exit $status
1628 # Determine the type of output
1629 case $output in
1631 $echo "$modename: you must specify an output file" 1>&2
1632 $echo "$help" 1>&2
1633 exit 1
1635 *.$libext) linkmode=oldlib ;;
1636 *.lo | *.$objext) linkmode=obj ;;
1637 *.la) linkmode=lib ;;
1638 *) linkmode=prog ;; # Anything else should be a program.
1639 esac
1641 specialdeplibs=
1642 libs=
1643 # Find all interdependent deplibs by searching for libraries
1644 # that are linked more than once (e.g. -la -lb -la)
1645 for deplib in $deplibs; do
1646 if test "X$duplicate_deps" = "Xyes" ; then
1647 case "$libs " in
1648 *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
1649 esac
1651 libs="$libs $deplib"
1652 done
1654 if test "$linkmode" = lib; then
1655 libs="$predeps $libs $compiler_lib_search_path $postdeps"
1657 # Compute libraries that are listed more than once in $predeps
1658 # $postdeps and mark them as special (i.e., whose duplicates are
1659 # not to be eliminated).
1660 pre_post_deps=
1661 if test "X$duplicate_deps" = "Xyes" ; then
1662 for pre_post_dep in $predeps $postdeps; do
1663 case "$pre_post_deps " in
1664 *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
1665 esac
1666 pre_post_deps="$pre_post_deps $pre_post_dep"
1667 done
1669 pre_post_deps=
1672 deplibs=
1673 newdependency_libs=
1674 newlib_search_path=
1675 need_relink=no # whether we're linking any uninstalled libtool libraries
1676 notinst_deplibs= # not-installed libtool libraries
1677 notinst_path= # paths that contain not-installed libtool libraries
1678 case $linkmode in
1679 lib)
1680 passes="conv link"
1681 for file in $dlfiles $dlprefiles; do
1682 case $file in
1683 *.la) ;;
1685 $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2
1686 exit 1
1688 esac
1689 done
1691 prog)
1692 compile_deplibs=
1693 finalize_deplibs=
1694 alldeplibs=no
1695 newdlfiles=
1696 newdlprefiles=
1697 passes="conv scan dlopen dlpreopen link"
1699 *) passes="conv"
1701 esac
1702 for pass in $passes; do
1703 if test "$linkmode,$pass" = "lib,link" ||
1704 test "$linkmode,$pass" = "prog,scan"; then
1705 libs="$deplibs"
1706 deplibs=
1708 if test "$linkmode" = prog; then
1709 case $pass in
1710 dlopen) libs="$dlfiles" ;;
1711 dlpreopen) libs="$dlprefiles" ;;
1712 link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
1713 esac
1715 if test "$pass" = dlopen; then
1716 # Collect dlpreopened libraries
1717 save_deplibs="$deplibs"
1718 deplibs=
1720 for deplib in $libs; do
1721 lib=
1722 found=no
1723 case $deplib in
1724 -l*)
1725 if test "$linkmode" != lib && test "$linkmode" != prog; then
1726 $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2
1727 continue
1729 if test "$pass" = conv && test "$allow_undefined" = yes; then
1730 deplibs="$deplib $deplibs"
1731 continue
1733 name=`$echo "X$deplib" | $Xsed -e 's/^-l//'`
1734 for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do
1735 # Search the libtool library
1736 lib="$searchdir/lib${name}.la"
1737 if test -f "$lib"; then
1738 found=yes
1739 break
1741 done
1742 if test "$found" != yes; then
1743 # deplib doesn't seem to be a libtool library
1744 if test "$linkmode,$pass" = "prog,link"; then
1745 compile_deplibs="$deplib $compile_deplibs"
1746 finalize_deplibs="$deplib $finalize_deplibs"
1747 else
1748 deplibs="$deplib $deplibs"
1749 test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
1751 continue
1753 ;; # -l
1754 -L*)
1755 case $linkmode in
1756 lib)
1757 deplibs="$deplib $deplibs"
1758 test "$pass" = conv && continue
1759 newdependency_libs="$deplib $newdependency_libs"
1760 newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
1762 prog)
1763 if test "$pass" = conv; then
1764 deplibs="$deplib $deplibs"
1765 continue
1767 if test "$pass" = scan; then
1768 deplibs="$deplib $deplibs"
1769 newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
1770 else
1771 compile_deplibs="$deplib $compile_deplibs"
1772 finalize_deplibs="$deplib $finalize_deplibs"
1776 $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2
1778 esac # linkmode
1779 continue
1780 ;; # -L
1781 -R*)
1782 if test "$pass" = link; then
1783 dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'`
1784 # Make sure the xrpath contains only unique directories.
1785 case "$xrpath " in
1786 *" $dir "*) ;;
1787 *) xrpath="$xrpath $dir" ;;
1788 esac
1790 deplibs="$deplib $deplibs"
1791 continue
1793 *.la) lib="$deplib" ;;
1794 *.$libext)
1795 if test "$pass" = conv; then
1796 deplibs="$deplib $deplibs"
1797 continue
1799 case $linkmode in
1800 lib)
1801 if test "$deplibs_check_method" != pass_all; then
1802 echo
1803 echo "*** Warning: Trying to link with static lib archive $deplib."
1804 echo "*** I have the capability to make that library automatically link in when"
1805 echo "*** you link to this library. But I can only do this if you have a"
1806 echo "*** shared version of the library, which you do not appear to have"
1807 echo "*** because the file extensions .$libext of this argument makes me believe"
1808 echo "*** that it is just a static archive that I should not used here."
1809 else
1810 echo
1811 echo "*** Warning: Linking the shared library $output against the"
1812 echo "*** static library $deplib is not portable!"
1813 deplibs="$deplib $deplibs"
1815 continue
1817 prog)
1818 if test "$pass" != link; then
1819 deplibs="$deplib $deplibs"
1820 else
1821 compile_deplibs="$deplib $compile_deplibs"
1822 finalize_deplibs="$deplib $finalize_deplibs"
1824 continue
1826 esac # linkmode
1827 ;; # *.$libext
1828 *.lo | *.$objext)
1829 if test "$pass" = conv; then
1830 deplibs="$deplib $deplibs"
1831 elif test "$linkmode" = prog; then
1832 if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
1833 # If there is no dlopen support or we're linking statically,
1834 # we need to preload.
1835 newdlprefiles="$newdlprefiles $deplib"
1836 compile_deplibs="$deplib $compile_deplibs"
1837 finalize_deplibs="$deplib $finalize_deplibs"
1838 else
1839 newdlfiles="$newdlfiles $deplib"
1842 continue
1844 %DEPLIBS%)
1845 alldeplibs=yes
1846 continue
1848 esac # case $deplib
1849 if test "$found" = yes || test -f "$lib"; then :
1850 else
1851 $echo "$modename: cannot find the library \`$lib'" 1>&2
1852 exit 1
1855 # Check to see that this really is a libtool archive.
1856 if (${SED} -e '2q' $lib | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
1857 else
1858 $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
1859 exit 1
1862 ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
1863 test "X$ladir" = "X$lib" && ladir="."
1865 dlname=
1866 dlopen=
1867 dlpreopen=
1868 libdir=
1869 library_names=
1870 old_library=
1871 # If the library was installed with an old release of libtool,
1872 # it will not redefine variable installed.
1873 installed=yes
1875 # Read the .la file
1876 case $lib in
1877 */* | *\\*) . $lib ;;
1878 *) . ./$lib ;;
1879 esac
1881 if test "$linkmode,$pass" = "lib,link" ||
1882 test "$linkmode,$pass" = "prog,scan" ||
1883 { test "$linkmode" != prog && test "$linkmode" != lib; }; then
1884 test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
1885 test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
1888 if test "$pass" = conv; then
1889 # Only check for convenience libraries
1890 deplibs="$lib $deplibs"
1891 tmp_libs=
1892 for deplib in $dependency_libs; do
1893 #echo "Adding $deplib to \$deplibs"
1894 deplibs="$deplib $deplibs"
1895 if test "X$duplicate_deps" = "Xyes" ; then
1896 case "$tmp_libs " in
1897 *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
1898 esac
1900 tmp_libs="$tmp_libs $deplib"
1901 done
1902 if test -z "$libdir"; then
1903 if test -z "$old_library"; then
1904 $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
1905 exit 1
1907 # It is a libtool convenience library, so add in its objects.
1908 convenience="$convenience $ladir/$objdir/$old_library"
1909 old_convenience="$old_convenience $ladir/$objdir/$old_library"
1910 elif test "$linkmode" != prog && test "$linkmode" != lib; then
1911 $echo "$modename: \`$lib' is not a convenience library" 1>&2
1912 exit 1
1914 continue
1915 fi # $pass = conv
1917 # Get the name of the library we link against.
1918 linklib=
1919 for l in $old_library $library_names; do
1920 linklib="$l"
1921 done
1922 if test -z "$linklib"; then
1923 $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
1924 exit 1
1927 # This library was specified with -dlopen.
1928 if test "$pass" = dlopen; then
1929 if test -z "$libdir"; then
1930 $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2
1931 exit 1
1933 if test -z "$dlname" || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
1934 # If there is no dlname, no dlopen support or we're linking
1935 # statically, we need to preload. We also need to preload any
1936 # dependent libraries so libltdl's deplib preloader doesn't
1937 # bomb out in the load deplibs phase.
1938 dlprefiles="$dlprefiles $lib $dependency_libs"
1939 else
1940 newdlfiles="$newdlfiles $lib"
1942 continue
1943 fi # $pass = dlopen
1945 # We need an absolute path.
1946 case $ladir in
1947 [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
1949 abs_ladir=`cd "$ladir" && pwd`
1950 if test -z "$abs_ladir"; then
1951 $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2
1952 $echo "$modename: passing it literally to the linker, although it might fail" 1>&2
1953 abs_ladir="$ladir"
1956 esac
1957 laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
1959 # Find the relevant object directory and library name.
1960 if test "X$installed" = Xyes; then
1961 if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
1962 $echo "$modename: warning: library \`$lib' was moved." 1>&2
1963 dir="$ladir"
1964 absdir="$abs_ladir"
1965 libdir="$abs_ladir"
1966 else
1967 dir="$libdir"
1968 absdir="$libdir"
1970 else
1971 dir="$ladir/$objdir"
1972 absdir="$abs_ladir/$objdir"
1973 # Remove this search path later
1974 notinst_path="$notinst_path $abs_ladir"
1975 fi # $installed = yes
1976 name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
1978 # This library was specified with -dlpreopen.
1979 if test "$pass" = dlpreopen; then
1980 if test -z "$libdir"; then
1981 $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2
1982 exit 1
1984 # Prefer using a static library (so that no silly _DYNAMIC symbols
1985 # are required to link).
1986 if test -n "$old_library"; then
1987 newdlprefiles="$newdlprefiles $dir/$old_library"
1988 # Otherwise, use the dlname, so that lt_dlopen finds it.
1989 elif test -n "$dlname"; then
1990 newdlprefiles="$newdlprefiles $dir/$dlname"
1991 else
1992 newdlprefiles="$newdlprefiles $dir/$linklib"
1994 fi # $pass = dlpreopen
1996 if test -z "$libdir"; then
1997 # Link the convenience library
1998 if test "$linkmode" = lib; then
1999 deplibs="$dir/$old_library $deplibs"
2000 elif test "$linkmode,$pass" = "prog,link"; then
2001 compile_deplibs="$dir/$old_library $compile_deplibs"
2002 finalize_deplibs="$dir/$old_library $finalize_deplibs"
2003 else
2004 deplibs="$lib $deplibs" # used for prog,scan pass
2006 continue
2009 if test "$linkmode" = prog && test "$pass" != link; then
2010 newlib_search_path="$newlib_search_path $ladir"
2011 deplibs="$lib $deplibs"
2013 linkalldeplibs=no
2014 if test "$link_all_deplibs" != no || test -z "$library_names" ||
2015 test "$build_libtool_libs" = no; then
2016 linkalldeplibs=yes
2019 tmp_libs=
2020 for deplib in $dependency_libs; do
2021 case $deplib in
2022 -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test
2023 esac
2024 # Need to link against all dependency_libs?
2025 if test "$linkalldeplibs" = yes; then
2026 deplibs="$deplib $deplibs"
2027 else
2028 # Need to hardcode shared library paths
2029 # or/and link against static libraries
2030 newdependency_libs="$deplib $newdependency_libs"
2032 if test "X$duplicate_deps" = "Xyes" ; then
2033 case "$tmp_libs " in
2034 *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
2035 esac
2037 tmp_libs="$tmp_libs $deplib"
2038 done # for deplib
2039 continue
2040 fi # $linkmode = prog...
2042 if test "$linkmode,$pass" = "prog,link"; then
2043 if test -n "$library_names" &&
2044 { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
2045 # We need to hardcode the library path
2046 if test -n "$shlibpath_var"; then
2047 # Make sure the rpath contains only unique directories.
2048 case "$temp_rpath " in
2049 *" $dir "*) ;;
2050 *" $absdir "*) ;;
2051 *) temp_rpath="$temp_rpath $dir" ;;
2052 esac
2055 # Hardcode the library path.
2056 # Skip directories that are in the system default run-time
2057 # search path.
2058 case " $sys_lib_dlsearch_path " in
2059 *" $absdir "*) ;;
2061 case "$compile_rpath " in
2062 *" $absdir "*) ;;
2063 *) compile_rpath="$compile_rpath $absdir"
2064 esac
2066 esac
2067 case " $sys_lib_dlsearch_path " in
2068 *" $libdir "*) ;;
2070 case "$finalize_rpath " in
2071 *" $libdir "*) ;;
2072 *) finalize_rpath="$finalize_rpath $libdir"
2073 esac
2075 esac
2076 fi # $linkmode,$pass = prog,link...
2078 if test "$alldeplibs" = yes &&
2079 { test "$deplibs_check_method" = pass_all ||
2080 { test "$build_libtool_libs" = yes &&
2081 test -n "$library_names"; }; }; then
2082 # We only need to search for static libraries
2083 continue
2087 link_static=no # Whether the deplib will be linked statically
2088 if test -n "$library_names" &&
2089 { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
2090 if test "$installed" = no; then
2091 notinst_deplibs="$notinst_deplibs $lib"
2092 need_relink=yes
2094 # This is a shared library
2095 if test "$linkmode" = lib &&
2096 test "$hardcode_into_libs" = yes; then
2097 # Hardcode the library path.
2098 # Skip directories that are in the system default run-time
2099 # search path.
2100 case " $sys_lib_dlsearch_path " in
2101 *" $absdir "*) ;;
2103 case "$compile_rpath " in
2104 *" $absdir "*) ;;
2105 *) compile_rpath="$compile_rpath $absdir"
2106 esac
2108 esac
2109 case " $sys_lib_dlsearch_path " in
2110 *" $libdir "*) ;;
2112 case "$finalize_rpath " in
2113 *" $libdir "*) ;;
2114 *) finalize_rpath="$finalize_rpath $libdir"
2115 esac
2117 esac
2120 if test -n "$old_archive_from_expsyms_cmds"; then
2121 # figure out the soname
2122 set dummy $library_names
2123 realname="$2"
2124 shift; shift
2125 libname=`eval \\$echo \"$libname_spec\"`
2126 # use dlname if we got it. it's perfectly good, no?
2127 if test -n "$dlname"; then
2128 soname="$dlname"
2129 elif test -n "$soname_spec"; then
2130 # bleh windows
2131 case $host in
2132 *cygwin*)
2133 major=`expr $current - $age`
2134 versuffix="-$major"
2136 esac
2137 eval soname=\"$soname_spec\"
2138 else
2139 soname="$realname"
2142 # Make a new name for the extract_expsyms_cmds to use
2143 soroot="$soname"
2144 soname=`echo $soroot | ${SED} -e 's/^.*\///'`
2145 newlib="libimp-`echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a"
2147 # If the library has no export list, then create one now
2148 if test -f "$output_objdir/$soname-def"; then :
2149 else
2150 $show "extracting exported symbol list from \`$soname'"
2151 save_ifs="$IFS"; IFS='~'
2152 eval cmds=\"$extract_expsyms_cmds\"
2153 for cmd in $cmds; do
2154 IFS="$save_ifs"
2155 $show "$cmd"
2156 $run eval "$cmd" || exit $?
2157 done
2158 IFS="$save_ifs"
2161 # Create $newlib
2162 if test -f "$output_objdir/$newlib"; then :; else
2163 $show "generating import library for \`$soname'"
2164 save_ifs="$IFS"; IFS='~'
2165 eval cmds=\"$old_archive_from_expsyms_cmds\"
2166 for cmd in $cmds; do
2167 IFS="$save_ifs"
2168 $show "$cmd"
2169 $run eval "$cmd" || exit $?
2170 done
2171 IFS="$save_ifs"
2173 # make sure the library variables are pointing to the new library
2174 dir=$output_objdir
2175 linklib=$newlib
2176 fi # test -n "$old_archive_from_expsyms_cmds"
2178 if test "$linkmode" = prog || test "$mode" != relink; then
2179 add_shlibpath=
2180 add_dir=
2181 add=
2182 lib_linked=yes
2183 case $hardcode_action in
2184 immediate | unsupported)
2185 if test "$hardcode_direct" = no; then
2186 add="$dir/$linklib"
2187 elif test "$hardcode_minus_L" = no; then
2188 case $host in
2189 *-*-sunos*) add_shlibpath="$dir" ;;
2190 esac
2191 add_dir="-L$dir"
2192 add="-l$name"
2193 elif test "$hardcode_shlibpath_var" = no; then
2194 add_shlibpath="$dir"
2195 add="-l$name"
2196 else
2197 lib_linked=no
2200 relink)
2201 if test "$hardcode_direct" = yes; then
2202 add="$dir/$linklib"
2203 elif test "$hardcode_minus_L" = yes; then
2204 add_dir="-L$dir"
2205 add="-l$name"
2206 elif test "$hardcode_shlibpath_var" = yes; then
2207 add_shlibpath="$dir"
2208 add="-l$name"
2209 else
2210 lib_linked=no
2213 *) lib_linked=no ;;
2214 esac
2216 if test "$lib_linked" != yes; then
2217 $echo "$modename: configuration error: unsupported hardcode properties"
2218 exit 1
2221 if test -n "$add_shlibpath"; then
2222 case :$compile_shlibpath: in
2223 *":$add_shlibpath:"*) ;;
2224 *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
2225 esac
2227 if test "$linkmode" = prog; then
2228 test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
2229 test -n "$add" && compile_deplibs="$add $compile_deplibs"
2230 else
2231 test -n "$add_dir" && deplibs="$add_dir $deplibs"
2232 test -n "$add" && deplibs="$add $deplibs"
2233 if test "$hardcode_direct" != yes && \
2234 test "$hardcode_minus_L" != yes && \
2235 test "$hardcode_shlibpath_var" = yes; then
2236 case :$finalize_shlibpath: in
2237 *":$libdir:"*) ;;
2238 *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
2239 esac
2244 if test "$linkmode" = prog || test "$mode" = relink; then
2245 add_shlibpath=
2246 add_dir=
2247 add=
2248 # Finalize command for both is simple: just hardcode it.
2249 if test "$hardcode_direct" = yes; then
2250 add="$libdir/$linklib"
2251 elif test "$hardcode_minus_L" = yes; then
2252 add_dir="-L$libdir"
2253 add="-l$name"
2254 elif test "$hardcode_shlibpath_var" = yes; then
2255 case :$finalize_shlibpath: in
2256 *":$libdir:"*) ;;
2257 *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
2258 esac
2259 add="-l$name"
2260 else
2261 # We cannot seem to hardcode it, guess we'll fake it.
2262 add_dir="-L$libdir"
2263 add="-l$name"
2266 if test "$linkmode" = prog; then
2267 test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
2268 test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
2269 else
2270 test -n "$add_dir" && deplibs="$add_dir $deplibs"
2271 test -n "$add" && deplibs="$add $deplibs"
2274 elif test "$linkmode" = prog; then
2275 # Here we assume that one of hardcode_direct or hardcode_minus_L
2276 # is not unsupported. This is valid on all known static and
2277 # shared platforms.
2278 if test "$hardcode_direct" != unsupported; then
2279 test -n "$old_library" && linklib="$old_library"
2280 compile_deplibs="$dir/$linklib $compile_deplibs"
2281 finalize_deplibs="$dir/$linklib $finalize_deplibs"
2282 else
2283 compile_deplibs="-l$name -L$dir $compile_deplibs"
2284 finalize_deplibs="-l$name -L$dir $finalize_deplibs"
2286 elif test "$build_libtool_libs" = yes; then
2287 # Not a shared library
2288 if test "$deplibs_check_method" != pass_all; then
2289 # We're trying link a shared library against a static one
2290 # but the system doesn't support it.
2292 # Just print a warning and add the library to dependency_libs so
2293 # that the program can be linked against the static library.
2294 echo
2295 echo "*** Warning: This system can not link to static lib archive $lib."
2296 echo "*** I have the capability to make that library automatically link in when"
2297 echo "*** you link to this library. But I can only do this if you have a"
2298 echo "*** shared version of the library, which you do not appear to have."
2299 if test "$module" = yes; then
2300 echo "*** But as you try to build a module library, libtool will still create "
2301 echo "*** a static module, that should work as long as the dlopening application"
2302 echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
2303 if test -z "$global_symbol_pipe"; then
2304 echo
2305 echo "*** However, this would only work if libtool was able to extract symbol"
2306 echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
2307 echo "*** not find such a program. So, this module is probably useless."
2308 echo "*** \`nm' from GNU binutils and a full rebuild may help."
2310 if test "$build_old_libs" = no; then
2311 build_libtool_libs=module
2312 build_old_libs=yes
2313 else
2314 build_libtool_libs=no
2317 else
2318 convenience="$convenience $dir/$old_library"
2319 old_convenience="$old_convenience $dir/$old_library"
2320 deplibs="$dir/$old_library $deplibs"
2321 link_static=yes
2323 fi # link shared/static library?
2325 if test "$linkmode" = lib; then
2326 #if test -n "$dependency_libs" &&
2327 # { test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes ||
2328 # test "$link_static" = yes; }; then
2329 # Extract -R from dependency_libs
2330 temp_deplibs=
2331 for libdir in $dependency_libs; do
2332 case $libdir in
2333 -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'`
2334 case " $xrpath " in
2335 *" $temp_xrpath "*) ;;
2336 *) xrpath="$xrpath $temp_xrpath";;
2337 esac;;
2338 *) temp_deplibs="$temp_deplibs $libdir";;
2339 esac
2340 done
2341 dependency_libs="$temp_deplibs"
2344 newlib_search_path="$newlib_search_path $absdir"
2345 # Link against this library
2346 test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
2347 # ... and its dependency_libs
2348 tmp_libs=
2349 for deplib in $dependency_libs; do
2350 newdependency_libs="$deplib $newdependency_libs"
2351 if test "X$duplicate_deps" = "Xyes" ; then
2352 case "$tmp_libs " in
2353 *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
2354 esac
2356 tmp_libs="$tmp_libs $deplib"
2357 done
2359 if test "$link_all_deplibs" != no; then
2360 # Add the search paths of all dependency libraries
2361 for deplib in $dependency_libs; do
2362 case $deplib in
2363 -L*) path="$deplib" ;;
2364 *.la)
2365 dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'`
2366 test "X$dir" = "X$deplib" && dir="."
2367 # We need an absolute path.
2368 case $dir in
2369 [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
2371 absdir=`cd "$dir" && pwd`
2372 if test -z "$absdir"; then
2373 $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2
2374 absdir="$dir"
2377 esac
2378 if grep "^installed=no" $deplib > /dev/null; then
2379 path="-L$absdir/$objdir"
2380 else
2381 eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
2382 if test -z "$libdir"; then
2383 $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
2384 exit 1
2386 path="-L$absdir"
2389 *) continue ;;
2390 esac
2391 case " $deplibs " in
2392 *" $path "*) ;;
2393 *) deplibs="$deplibs $path" ;;
2394 esac
2395 done
2396 fi # link_all_deplibs != no
2397 fi # linkmode = lib
2398 done # for deplib in $libs
2399 dependency_libs="$newdependency_libs"
2400 if test "$pass" = dlpreopen; then
2401 # Link the dlpreopened libraries before other libraries
2402 for deplib in $save_deplibs; do
2403 deplibs="$deplib $deplibs"
2404 done
2406 if test "$pass" != dlopen; then
2407 if test "$pass" != conv; then
2408 # Make sure lib_search_path contains only unique directories.
2409 lib_search_path=
2410 for dir in $newlib_search_path; do
2411 case "$lib_search_path " in
2412 *" $dir "*) ;;
2413 *) lib_search_path="$lib_search_path $dir" ;;
2414 esac
2415 done
2416 newlib_search_path=
2419 if test "$linkmode,$pass" != "prog,link"; then
2420 vars="deplibs"
2421 else
2422 vars="compile_deplibs finalize_deplibs"
2424 for var in $vars dependency_libs; do
2425 # Add libraries to $var in reverse order
2426 eval tmp_libs=\"\$$var\"
2427 new_libs=
2428 for deplib in $tmp_libs; do
2429 # FIXME: Pedantically, this is the right thing to do, so
2430 # that some nasty dependency loop isn't accidentally
2431 # broken:
2432 #new_libs="$deplib $new_libs"
2433 # Pragmatically, this seems to cause very few problems in
2434 # practice:
2435 case $deplib in
2436 -L*) new_libs="$deplib $new_libs" ;;
2438 # And here is the reason: when a library appears more
2439 # than once as an explicit dependence of a library, or
2440 # is implicitly linked in more than once by the
2441 # compiler, it is considered special, and multiple
2442 # occurrences thereof are not removed. Compare this
2443 # with having the same library being listed as a
2444 # dependency of multiple other libraries: in this case,
2445 # we know (pedantically, we assume) the library does not
2446 # need to be listed more than once, so we keep only the
2447 # last copy. This is not always right, but it is rare
2448 # enough that we require users that really mean to play
2449 # such unportable linking tricks to link the library
2450 # using -Wl,-lname, so that libtool does not consider it
2451 # for duplicate removal.
2452 case " $specialdeplibs " in
2453 *" $deplib "*) new_libs="$deplib $new_libs" ;;
2455 case " $new_libs " in
2456 *" $deplib "*) ;;
2457 *) new_libs="$deplib $new_libs" ;;
2458 esac
2460 esac
2462 esac
2463 done
2464 tmp_libs=
2465 for deplib in $new_libs; do
2466 case $deplib in
2467 -L*)
2468 case " $tmp_libs " in
2469 *" $deplib "*) ;;
2470 *) tmp_libs="$tmp_libs $deplib" ;;
2471 esac
2473 -R*)
2474 temp_xrpath=`$echo "X$deplib" | $Xsed -e 's/^-R//'`
2475 case " $xrpath " in
2476 *" $temp_xrpath "*) ;;
2477 *) xrpath="$xrpath $temp_xrpath";;
2478 esac;;
2479 *) tmp_libs="$tmp_libs $deplib" ;;
2480 esac
2481 done
2482 eval $var=\"$tmp_libs\"
2483 done # for var
2485 done # for pass
2486 if test "$linkmode" = prog; then
2487 dlfiles="$newdlfiles"
2488 dlprefiles="$newdlprefiles"
2491 case $linkmode in
2492 oldlib)
2493 if test -n "$deplibs"; then
2494 $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2
2497 if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
2498 $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2
2501 if test -n "$rpath"; then
2502 $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2
2505 if test -n "$xrpath"; then
2506 $echo "$modename: warning: \`-R' is ignored for archives" 1>&2
2509 if test -n "$vinfo"; then
2510 $echo "$modename: warning: \`-version-info' is ignored for archives" 1>&2
2513 if test -n "$release"; then
2514 $echo "$modename: warning: \`-release' is ignored for archives" 1>&2
2517 if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
2518 $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2
2521 # Now set the variables for building old libraries.
2522 build_libtool_libs=no
2523 oldlibs="$output"
2524 objs="$objs$old_deplibs"
2527 lib)
2528 # Make sure we only generate libraries of the form `libNAME.la'.
2529 case $outputname in
2530 lib*)
2531 name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
2532 eval libname=\"$libname_spec\"
2535 if test "$module" = no; then
2536 $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2
2537 $echo "$help" 1>&2
2538 exit 1
2540 if test "$need_lib_prefix" != no; then
2541 # Add the "lib" prefix for modules if required
2542 name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
2543 eval libname=\"$libname_spec\"
2544 else
2545 libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
2548 esac
2550 if test -n "$objs"; then
2551 if test "$deplibs_check_method" != pass_all; then
2552 $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1
2553 exit 1
2554 else
2555 echo
2556 echo "*** Warning: Linking the shared library $output against the non-libtool"
2557 echo "*** objects $objs is not portable!"
2558 libobjs="$libobjs $objs"
2562 if test "$dlself" != no; then
2563 $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2
2566 set dummy $rpath
2567 if test "$#" -gt 2; then
2568 $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2
2570 install_libdir="$2"
2572 oldlibs=
2573 if test -z "$rpath"; then
2574 if test "$build_libtool_libs" = yes; then
2575 # Building a libtool convenience library.
2576 # Some compilers have problems with a `.al' extension so
2577 # convenience libraries should have the same extension an
2578 # archive normally would.
2579 oldlibs="$output_objdir/$libname.$libext $oldlibs"
2580 build_libtool_libs=convenience
2581 build_old_libs=yes
2584 if test -n "$vinfo"; then
2585 $echo "$modename: warning: \`-version-info' is ignored for convenience libraries" 1>&2
2588 if test -n "$release"; then
2589 $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2
2591 else
2593 # Parse the version information argument.
2594 save_ifs="$IFS"; IFS=':'
2595 set dummy $vinfo 0 0 0
2596 IFS="$save_ifs"
2598 if test -n "$8"; then
2599 $echo "$modename: too many parameters to \`-version-info'" 1>&2
2600 $echo "$help" 1>&2
2601 exit 1
2604 current="$2"
2605 revision="$3"
2606 age="$4"
2608 # Check that each of the things are valid numbers.
2609 case $current in
2610 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;;
2612 $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2
2613 $echo "$modename: \`$vinfo' is not valid version information" 1>&2
2614 exit 1
2616 esac
2618 case $revision in
2619 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;;
2621 $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2
2622 $echo "$modename: \`$vinfo' is not valid version information" 1>&2
2623 exit 1
2625 esac
2627 case $age in
2628 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;;
2630 $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2
2631 $echo "$modename: \`$vinfo' is not valid version information" 1>&2
2632 exit 1
2634 esac
2636 if test "$age" -gt "$current"; then
2637 $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2
2638 $echo "$modename: \`$vinfo' is not valid version information" 1>&2
2639 exit 1
2642 # Calculate the version variables.
2643 major=
2644 versuffix=
2645 verstring=
2646 case $version_type in
2647 none) ;;
2649 darwin)
2650 # Like Linux, but with the current version available in
2651 # verstring for coding it into the library header
2652 major=.`expr $current - $age`
2653 versuffix="$major.$age.$revision"
2654 # Darwin ld doesn't like 0 for these options...
2655 minor_current=`expr $current + 1`
2656 verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
2659 freebsd-aout)
2660 major=".$current"
2661 versuffix=".$current.$revision";
2664 freebsd-elf)
2665 major=".$current"
2666 versuffix=".$current";
2669 irix | nonstopux)
2670 case $version_type in
2671 nonstopux) verstring_prefix=nonstopux ;;
2672 *) verstring_prefix=sgi ;;
2673 esac
2674 verstring="$verstring_prefix$major.$revision"
2676 major=`expr $current - $age + 1`
2678 # Add in all the interfaces that we are compatible with.
2679 loop=$revision
2680 while test "$loop" -ne 0; do
2681 iface=`expr $revision - $loop`
2682 loop=`expr $loop - 1`
2683 verstring="$verstring_prefix$major.$iface:$verstring"
2684 done
2686 # Before this point, $major must not contain `.'.
2687 major=.$major
2688 versuffix="$major.$revision"
2691 linux)
2692 major=.`expr $current - $age`
2693 versuffix="$major.$age.$revision"
2696 osf)
2697 major=`expr $current - $age`
2698 versuffix=".$current.$age.$revision"
2699 verstring="$current.$age.$revision"
2701 # Add in all the interfaces that we are compatible with.
2702 loop=$age
2703 while test "$loop" -ne 0; do
2704 iface=`expr $current - $loop`
2705 loop=`expr $loop - 1`
2706 verstring="$verstring:${iface}.0"
2707 done
2709 # Make executables depend on our current version.
2710 verstring="$verstring:${current}.0"
2713 sunos)
2714 major=".$current"
2715 versuffix=".$current.$revision"
2718 windows)
2719 # Use '-' rather than '.', since we only want one
2720 # extension on DOS 8.3 filesystems.
2721 major=`expr $current - $age`
2722 versuffix="-$major"
2726 $echo "$modename: unknown library version type \`$version_type'" 1>&2
2727 echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
2728 exit 1
2730 esac
2732 # Clear the version info if we defaulted, and they specified a release.
2733 if test -z "$vinfo" && test -n "$release"; then
2734 major=
2735 case $version_type in
2736 darwin)
2737 # we can't check for "0.0" in archive_cmds due to quoting
2738 # problems, so we reset it completely
2739 verstring=
2742 verstring="0.0"
2744 esac
2745 if test "$need_version" = no; then
2746 versuffix=
2747 else
2748 versuffix=".0.0"
2752 # Remove version info from name if versioning should be avoided
2753 if test "$avoid_version" = yes && test "$need_version" = no; then
2754 major=
2755 versuffix=
2756 verstring=""
2759 # Check to see if the archive will have undefined symbols.
2760 if test "$allow_undefined" = yes; then
2761 if test "$allow_undefined_flag" = unsupported; then
2762 $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2
2763 build_libtool_libs=no
2764 build_old_libs=yes
2766 else
2767 # Don't allow undefined symbols.
2768 allow_undefined_flag="$no_undefined_flag"
2772 if test "$mode" != relink; then
2773 # Remove our outputs, but don't remove object files since they
2774 # may have been created when compiling PIC objects.
2775 removelist=
2776 tempremovelist=`echo "$output_objdir/*"`
2777 for p in $tempremovelist; do
2778 case $p in
2779 *.$objext)
2781 $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
2782 removelist="$removelist $p"
2784 *) ;;
2785 esac
2786 done
2787 if test -n "$removelist"; then
2788 $show "${rm}r $removelist"
2789 $run ${rm}r $removelist
2793 # Now set the variables for building old libraries.
2794 if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
2795 oldlibs="$oldlibs $output_objdir/$libname.$libext"
2797 # Transform .lo files to .o files.
2798 oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
2801 # Eliminate all temporary directories.
2802 for path in $notinst_path; do
2803 lib_search_path=`echo "$lib_search_path " | ${SED} -e 's% $path % %g'`
2804 deplibs=`echo "$deplibs " | ${SED} -e 's% -L$path % %g'`
2805 dependency_libs=`echo "$dependency_libs " | ${SED} -e 's% -L$path % %g'`
2806 done
2808 if test -n "$xrpath"; then
2809 # If the user specified any rpath flags, then add them.
2810 temp_xrpath=
2811 for libdir in $xrpath; do
2812 temp_xrpath="$temp_xrpath -R$libdir"
2813 case "$finalize_rpath " in
2814 *" $libdir "*) ;;
2815 *) finalize_rpath="$finalize_rpath $libdir" ;;
2816 esac
2817 done
2818 if true || test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
2819 dependency_libs="$temp_xrpath $dependency_libs"
2823 # Make sure dlfiles contains only unique files that won't be dlpreopened
2824 old_dlfiles="$dlfiles"
2825 dlfiles=
2826 for lib in $old_dlfiles; do
2827 case " $dlprefiles $dlfiles " in
2828 *" $lib "*) ;;
2829 *) dlfiles="$dlfiles $lib" ;;
2830 esac
2831 done
2833 # Make sure dlprefiles contains only unique files
2834 old_dlprefiles="$dlprefiles"
2835 dlprefiles=
2836 for lib in $old_dlprefiles; do
2837 case "$dlprefiles " in
2838 *" $lib "*) ;;
2839 *) dlprefiles="$dlprefiles $lib" ;;
2840 esac
2841 done
2843 if test "$build_libtool_libs" = yes; then
2844 if test -n "$rpath"; then
2845 case $host in
2846 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*)
2847 # these systems don't actually have a c library (as such)!
2849 *-*-rhapsody* | *-*-darwin1.[012])
2850 # Rhapsody C library is in the System framework
2851 deplibs="$deplibs -framework System"
2853 *-*-netbsd*)
2854 # Don't link with libc until the a.out ld.so is fixed.
2856 *-*-openbsd* | *-*-freebsd*)
2857 # Do not include libc due to us having libc/libc_r.
2858 test "X$arg" = "X-lc" && continue
2861 # Add libc to deplibs on all other systems if necessary.
2862 if test "$build_libtool_need_lc" = "yes"; then
2863 deplibs="$deplibs -lc"
2866 esac
2869 # Transform deplibs into only deplibs that can be linked in shared.
2870 name_save=$name
2871 libname_save=$libname
2872 release_save=$release
2873 versuffix_save=$versuffix
2874 major_save=$major
2875 # I'm not sure if I'm treating the release correctly. I think
2876 # release should show up in the -l (ie -lgmp5) so we don't want to
2877 # add it in twice. Is that correct?
2878 release=""
2879 versuffix=""
2880 major=""
2881 newdeplibs=
2882 droppeddeps=no
2883 case $deplibs_check_method in
2884 pass_all)
2885 # Don't check for shared/static. Everything works.
2886 # This might be a little naive. We might want to check
2887 # whether the library exists or not. But this is on
2888 # osf3 & osf4 and I'm not really sure... Just
2889 # implementing what was already the behaviour.
2890 newdeplibs=$deplibs
2892 test_compile)
2893 # This code stresses the "libraries are programs" paradigm to its
2894 # limits. Maybe even breaks it. We compile a program, linking it
2895 # against the deplibs as a proxy for the library. Then we can check
2896 # whether they linked in statically or dynamically with ldd.
2897 $rm conftest.c
2898 cat > conftest.c <<EOF
2899 int main() { return 0; }
2901 $rm conftest
2902 $LTCC -o conftest conftest.c $deplibs
2903 if test "$?" -eq 0 ; then
2904 ldd_output=`ldd conftest`
2905 for i in $deplibs; do
2906 name="`expr $i : '-l\(.*\)'`"
2907 # If $name is empty we are operating on a -L argument.
2908 if test "$name" != "" && test "$name" -ne "0"; then
2909 libname=`eval \\$echo \"$libname_spec\"`
2910 deplib_matches=`eval \\$echo \"$library_names_spec\"`
2911 set dummy $deplib_matches
2912 deplib_match=$2
2913 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
2914 newdeplibs="$newdeplibs $i"
2915 else
2916 droppeddeps=yes
2917 echo
2918 echo "*** Warning: dynamic linker does not accept needed library $i."
2919 echo "*** I have the capability to make that library automatically link in when"
2920 echo "*** you link to this library. But I can only do this if you have a"
2921 echo "*** shared version of the library, which I believe you do not have"
2922 echo "*** because a test_compile did reveal that the linker did not use it for"
2923 echo "*** its dynamic dependency list that programs get resolved with at runtime."
2925 else
2926 newdeplibs="$newdeplibs $i"
2928 done
2929 else
2930 # Error occured in the first compile. Let's try to salvage
2931 # the situation: Compile a separate program for each library.
2932 for i in $deplibs; do
2933 name="`expr $i : '-l\(.*\)'`"
2934 # If $name is empty we are operating on a -L argument.
2935 if test "$name" != "" && test "$name" != "0"; then
2936 $rm conftest
2937 $LTCC -o conftest conftest.c $i
2938 # Did it work?
2939 if test "$?" -eq 0 ; then
2940 ldd_output=`ldd conftest`
2941 libname=`eval \\$echo \"$libname_spec\"`
2942 deplib_matches=`eval \\$echo \"$library_names_spec\"`
2943 set dummy $deplib_matches
2944 deplib_match=$2
2945 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
2946 newdeplibs="$newdeplibs $i"
2947 else
2948 droppeddeps=yes
2949 echo
2950 echo "*** Warning: dynamic linker does not accept needed library $i."
2951 echo "*** I have the capability to make that library automatically link in when"
2952 echo "*** you link to this library. But I can only do this if you have a"
2953 echo "*** shared version of the library, which you do not appear to have"
2954 echo "*** because a test_compile did reveal that the linker did not use this one"
2955 echo "*** as a dynamic dependency that programs can get resolved with at runtime."
2957 else
2958 droppeddeps=yes
2959 echo
2960 echo "*** Warning! Library $i is needed by this library but I was not able to"
2961 echo "*** make it link in! You will probably need to install it or some"
2962 echo "*** library that it depends on before this library will be fully"
2963 echo "*** functional. Installing it before continuing would be even better."
2965 else
2966 newdeplibs="$newdeplibs $i"
2968 done
2971 file_magic*)
2972 set dummy $deplibs_check_method
2973 file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
2974 for a_deplib in $deplibs; do
2975 name="`expr $a_deplib : '-l\(.*\)'`"
2976 # If $name is empty we are operating on a -L argument.
2977 if test "$name" != "" && test "$name" != "0"; then
2978 libname=`eval \\$echo \"$libname_spec\"`
2979 for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
2980 potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
2981 for potent_lib in $potential_libs; do
2982 # Follow soft links.
2983 if ls -lLd "$potent_lib" 2>/dev/null \
2984 | grep " -> " >/dev/null; then
2985 continue
2987 # The statement above tries to avoid entering an
2988 # endless loop below, in case of cyclic links.
2989 # We might still enter an endless loop, since a link
2990 # loop can be closed while we follow links,
2991 # but so what?
2992 potlib="$potent_lib"
2993 while test -h "$potlib" 2>/dev/null; do
2994 potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
2995 case $potliblink in
2996 [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
2997 *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
2998 esac
2999 done
3000 if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \
3001 | ${SED} 10q \
3002 | egrep "$file_magic_regex" > /dev/null; then
3003 newdeplibs="$newdeplibs $a_deplib"
3004 a_deplib=""
3005 break 2
3007 done
3008 done
3009 if test -n "$a_deplib" ; then
3010 droppeddeps=yes
3011 echo
3012 echo "*** Warning: linker path does not have real file for library $a_deplib."
3013 echo "*** I have the capability to make that library automatically link in when"
3014 echo "*** you link to this library. But I can only do this if you have a"
3015 echo "*** shared version of the library, which you do not appear to have"
3016 echo "*** because I did check the linker path looking for a file starting"
3017 if test -z "$potlib" ; then
3018 echo "*** with $libname but no candidates were found. (...for file magic test)"
3019 else
3020 echo "*** with $libname and none of the candidates passed a file format test"
3021 echo "*** using a file magic. Last file checked: $potlib"
3024 else
3025 # Add a -L argument.
3026 newdeplibs="$newdeplibs $a_deplib"
3028 done # Gone through all deplibs.
3030 match_pattern*)
3031 set dummy $deplibs_check_method
3032 match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
3033 for a_deplib in $deplibs; do
3034 name="`expr $a_deplib : '-l\(.*\)'`"
3035 # If $name is empty we are operating on a -L argument.
3036 if test -n "$name" && test "$name" != "0"; then
3037 libname=`eval \\$echo \"$libname_spec\"`
3038 for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
3039 potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
3040 for potent_lib in $potential_libs; do
3041 potlib="$potent_lib" # see symlink-check above in file_magic test
3042 if eval echo \"$potent_lib\" 2>/dev/null \
3043 | ${SED} 10q \
3044 | egrep "$match_pattern_regex" > /dev/null; then
3045 newdeplibs="$newdeplibs $a_deplib"
3046 a_deplib=""
3047 break 2
3049 done
3050 done
3051 if test -n "$a_deplib" ; then
3052 droppeddeps=yes
3053 echo
3054 echo "*** Warning: linker path does not have real file for library $a_deplib."
3055 echo "*** I have the capability to make that library automatically link in when"
3056 echo "*** you link to this library. But I can only do this if you have a"
3057 echo "*** shared version of the library, which you do not appear to have"
3058 echo "*** because I did check the linker path looking for a file starting"
3059 if test -z "$potlib" ; then
3060 echo "*** with $libname but no candidates were found. (...for regex pattern test)"
3061 else
3062 echo "*** with $libname and none of the candidates passed a file format test"
3063 echo "*** using a regex pattern. Last file checked: $potlib"
3066 else
3067 # Add a -L argument.
3068 newdeplibs="$newdeplibs $a_deplib"
3070 done # Gone through all deplibs.
3072 none | unknown | *)
3073 newdeplibs=""
3074 if $echo "X $deplibs" | $Xsed -e 's/ -lc$//' \
3075 -e 's/ -[LR][^ ]*//g' -e 's/[ ]//g' |
3076 grep . >/dev/null; then
3077 echo
3078 if test "X$deplibs_check_method" = "Xnone"; then
3079 echo "*** Warning: inter-library dependencies are not supported in this platform."
3080 else
3081 echo "*** Warning: inter-library dependencies are not known to be supported."
3083 echo "*** All declared inter-library dependencies are being dropped."
3084 droppeddeps=yes
3087 esac
3088 versuffix=$versuffix_save
3089 major=$major_save
3090 release=$release_save
3091 libname=$libname_save
3092 name=$name_save
3094 case $host in
3095 *-*-rhapsody* | *-*-darwin1.[012])
3096 # On Rhapsody replace the C library is the System framework
3097 newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'`
3099 esac
3101 if test "$droppeddeps" = yes; then
3102 if test "$module" = yes; then
3103 echo
3104 echo "*** Warning: libtool could not satisfy all declared inter-library"
3105 echo "*** dependencies of module $libname. Therefore, libtool will create"
3106 echo "*** a static module, that should work as long as the dlopening"
3107 echo "*** application is linked with the -dlopen flag."
3108 if test -z "$global_symbol_pipe"; then
3109 echo
3110 echo "*** However, this would only work if libtool was able to extract symbol"
3111 echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
3112 echo "*** not find such a program. So, this module is probably useless."
3113 echo "*** \`nm' from GNU binutils and a full rebuild may help."
3115 if test "$build_old_libs" = no; then
3116 oldlibs="$output_objdir/$libname.$libext"
3117 build_libtool_libs=module
3118 build_old_libs=yes
3119 else
3120 build_libtool_libs=no
3122 else
3123 echo "*** The inter-library dependencies that have been dropped here will be"
3124 echo "*** automatically added whenever a program is linked with this library"
3125 echo "*** or is declared to -dlopen it."
3127 if test "$allow_undefined" = no; then
3128 echo
3129 echo "*** Since this library must not contain undefined symbols,"
3130 echo "*** because either the platform does not support them or"
3131 echo "*** it was explicitly requested with -no-undefined,"
3132 echo "*** libtool will only create a static version of it."
3133 if test "$build_old_libs" = no; then
3134 oldlibs="$output_objdir/$libname.$libext"
3135 build_libtool_libs=module
3136 build_old_libs=yes
3137 else
3138 build_libtool_libs=no
3143 # Done checking deplibs!
3144 deplibs=$newdeplibs
3147 # All the library-specific variables (install_libdir is set above).
3148 library_names=
3149 old_library=
3150 dlname=
3152 # Test again, we may have decided not to build it any more
3153 if test "$build_libtool_libs" = yes; then
3154 if test "$hardcode_into_libs" = yes; then
3155 # Hardcode the library paths
3156 hardcode_libdirs=
3157 dep_rpath=
3158 rpath="$finalize_rpath"
3159 test "$mode" != relink && test "$fast_install" = no && rpath="$compile_rpath$rpath"
3160 for libdir in $rpath; do
3161 if test -n "$hardcode_libdir_flag_spec"; then
3162 if test -n "$hardcode_libdir_separator"; then
3163 if test -z "$hardcode_libdirs"; then
3164 hardcode_libdirs="$libdir"
3165 else
3166 # Just accumulate the unique libdirs.
3167 case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
3168 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
3171 hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
3173 esac
3175 else
3176 eval flag=\"$hardcode_libdir_flag_spec\"
3177 dep_rpath="$dep_rpath $flag"
3179 elif test -n "$runpath_var"; then
3180 case "$perm_rpath " in
3181 *" $libdir "*) ;;
3182 *) perm_rpath="$perm_rpath $libdir" ;;
3183 esac
3185 done
3186 # Substitute the hardcoded libdirs into the rpath.
3187 if test -n "$hardcode_libdir_separator" &&
3188 test -n "$hardcode_libdirs"; then
3189 libdir="$hardcode_libdirs"
3190 eval dep_rpath=\"$hardcode_libdir_flag_spec\"
3192 if test -n "$runpath_var" && test -n "$perm_rpath"; then
3193 # We should set the runpath_var.
3194 rpath=
3195 for dir in $perm_rpath; do
3196 rpath="$rpath$dir:"
3197 done
3198 eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
3200 test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
3203 shlibpath="$finalize_shlibpath"
3204 test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
3205 if test -n "$shlibpath"; then
3206 eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
3209 # Get the real and link names of the library.
3210 eval library_names=\"$library_names_spec\"
3211 set dummy $library_names
3212 realname="$2"
3213 shift; shift
3215 if test -n "$soname_spec"; then
3216 eval soname=\"$soname_spec\"
3217 else
3218 soname="$realname"
3220 if test -z "$dlname"; then
3221 dlname=$soname
3224 lib="$output_objdir/$realname"
3225 for link
3227 linknames="$linknames $link"
3228 done
3230 # Use standard objects if they are pic
3231 test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
3233 # Prepare the list of exported symbols
3234 if test -z "$export_symbols"; then
3235 if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
3236 $show "generating symbol list for \`$libname.la'"
3237 export_symbols="$output_objdir/$libname.exp"
3238 $run $rm $export_symbols
3239 eval cmds=\"$export_symbols_cmds\"
3240 save_ifs="$IFS"; IFS='~'
3241 for cmd in $cmds; do
3242 IFS="$save_ifs"
3243 $show "$cmd"
3244 $run eval "$cmd" || exit $?
3245 done
3246 IFS="$save_ifs"
3247 if test -n "$export_symbols_regex"; then
3248 $show "egrep -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\""
3249 $run eval 'egrep -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
3250 $show "$mv \"${export_symbols}T\" \"$export_symbols\""
3251 $run eval '$mv "${export_symbols}T" "$export_symbols"'
3256 if test -n "$export_symbols" && test -n "$include_expsyms"; then
3257 $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"'
3260 if test -n "$convenience"; then
3261 if test -n "$whole_archive_flag_spec"; then
3262 save_libobjs=$libobjs
3263 eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
3264 else
3265 gentop="$output_objdir/${outputname}x"
3266 $show "${rm}r $gentop"
3267 $run ${rm}r "$gentop"
3268 $show "$mkdir $gentop"
3269 $run $mkdir "$gentop"
3270 status=$?
3271 if test "$status" -ne 0 && test ! -d "$gentop"; then
3272 exit $status
3274 generated="$generated $gentop"
3276 for xlib in $convenience; do
3277 # Extract the objects.
3278 case $xlib in
3279 [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
3280 *) xabs=`pwd`"/$xlib" ;;
3281 esac
3282 xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
3283 xdir="$gentop/$xlib"
3285 $show "${rm}r $xdir"
3286 $run ${rm}r "$xdir"
3287 $show "$mkdir $xdir"
3288 $run $mkdir "$xdir"
3289 status=$?
3290 if test "$status" -ne 0 && test ! -d "$xdir"; then
3291 exit $status
3293 $show "(cd $xdir && $AR x $xabs)"
3294 $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
3296 libobjs="$libobjs "`find $xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
3297 done
3301 if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
3302 eval flag=\"$thread_safe_flag_spec\"
3303 linker_flags="$linker_flags $flag"
3306 # Make a backup of the uninstalled library when relinking
3307 if test "$mode" = relink; then
3308 $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $?
3311 # Add all flags from the command line. We here create a library,
3312 # but those flags were only added to compile_command and
3313 # finalize_command, which are only used when creating executables.
3314 # So do it by hand here.
3315 compiler_flags="$compiler_flags $add_flags"
3316 # Only add it to commands which use CC, instead of LD, i.e.
3317 # only to $compiler_flags
3318 #linker_flags="$linker_flags $add_flags"
3320 # Do each of the archive commands.
3321 if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
3322 eval cmds=\"$archive_expsym_cmds\"
3323 else
3324 eval cmds=\"$archive_cmds\"
3327 if len=`expr "X$cmds" : ".*"` &&
3328 test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
3330 else
3331 # The command line is too long to link in one step, link piecewise.
3332 $echo "creating reloadable object files..."
3334 # Save the value of $output and $libobjs because we want to
3335 # use them later. If we have whole_archive_flag_spec, we
3336 # want to use save_libobjs as it was before
3337 # whole_archive_flag_spec was expanded, because we can't
3338 # assume the linker understands whole_archive_flag_spec.
3339 # This may have to be revisited, in case too many
3340 # convenience libraries get linked in and end up exceeding
3341 # the spec.
3342 if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
3343 save_libobjs=$libobjs
3345 save_output=$output
3347 # Clear the reloadable object creation command queue and
3348 # initialize k to one.
3349 test_cmds=
3350 concat_cmds=
3351 objlist=
3352 delfiles=
3353 last_robj=
3355 output=$output_objdir/$save_output-${k}.$objext
3356 # Loop over the list of objects to be linked.
3357 for obj in $save_libobjs
3359 eval test_cmds=\"$reload_cmds $objlist $last_robj\"
3360 if test "X$objlist" = X ||
3361 { len=`expr "X$test_cmds" : ".*"` &&
3362 test "$len" -le "$max_cmd_len"; }; then
3363 objlist="$objlist $obj"
3364 else
3365 # The command $test_cmds is almost too long, add a
3366 # command to the queue.
3367 if test "$k" -eq 1 ; then
3368 # The first file doesn't have a previous command to add.
3369 eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
3370 else
3371 # All subsequent reloadable object files will link in
3372 # the last one created.
3373 eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\"
3375 last_robj=$output_objdir/$save_output-${k}.$objext
3376 k=`expr $k + 1`
3377 output=$output_objdir/$save_output-${k}.$objext
3378 objlist=$obj
3379 len=1
3381 done
3382 # Handle the remaining objects by creating one last
3383 # reloadable object file. All subsequent reloadable object
3384 # files will link in the last one created.
3385 test -z "$concat_cmds" || concat_cmds=$concat_cmds~
3386 eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
3388 # Set up a command to remove the reloadale object files
3389 # after they are used.
3391 while test "$i" -lt "$k"
3393 i=`expr $i + 1`
3394 delfiles="$delfiles $output_objdir/$save_output-${i}.$objext"
3395 done
3397 $echo "creating a temporary reloadable object file: $output"
3399 # Loop through the commands generated above and execute them.
3400 save_ifs="$IFS"; IFS='~'
3401 for cmd in $concat_cmds; do
3402 IFS="$save_ifs"
3403 $show "$cmd"
3404 $run eval "$cmd" || exit $?
3405 done
3406 IFS="$save_ifs"
3408 libobjs=$output
3409 # Restore the value of output.
3410 output=$save_output
3412 if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
3413 eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
3415 # Expand the library linking commands again to reset the
3416 # value of $libobjs for piecewise linking.
3418 # Do each of the archive commands.
3419 if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
3420 eval cmds=\"$archive_expsym_cmds\"
3421 else
3422 eval cmds=\"$archive_cmds\"
3425 # Append the command to remove the reloadable object files
3426 # to the just-reset $cmds.
3427 eval cmds=\"\$cmds~$rm $delfiles\"
3429 save_ifs="$IFS"; IFS='~'
3430 for cmd in $cmds; do
3431 IFS="$save_ifs"
3432 $show "$cmd"
3433 $run eval "$cmd" || exit $?
3434 done
3435 IFS="$save_ifs"
3437 # Restore the uninstalled library and exit
3438 if test "$mode" = relink; then
3439 $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $?
3440 exit 0
3443 # Create links to the real library.
3444 for linkname in $linknames; do
3445 if test "$realname" != "$linkname"; then
3446 $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)"
3447 $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $?
3449 done
3451 # If -module or -export-dynamic was specified, set the dlname.
3452 if test "$module" = yes || test "$export_dynamic" = yes; then
3453 # On all known operating systems, these are identical.
3454 dlname="$soname"
3459 obj)
3460 if test -n "$deplibs"; then
3461 $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2
3464 if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
3465 $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2
3468 if test -n "$rpath"; then
3469 $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2
3472 if test -n "$xrpath"; then
3473 $echo "$modename: warning: \`-R' is ignored for objects" 1>&2
3476 if test -n "$vinfo"; then
3477 $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2
3480 if test -n "$release"; then
3481 $echo "$modename: warning: \`-release' is ignored for objects" 1>&2
3484 case $output in
3485 *.lo)
3486 if test -n "$objs$old_deplibs"; then
3487 $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2
3488 exit 1
3490 libobj="$output"
3491 obj=`$echo "X$output" | $Xsed -e "$lo2o"`
3494 libobj=
3495 obj="$output"
3497 esac
3499 # Delete the old objects.
3500 $run $rm $obj $libobj
3502 # Objects from convenience libraries. This assumes
3503 # single-version convenience libraries. Whenever we create
3504 # different ones for PIC/non-PIC, this we'll have to duplicate
3505 # the extraction.
3506 reload_conv_objs=
3507 gentop=
3508 # reload_cmds runs $LD directly, so let us get rid of
3509 # -Wl from whole_archive_flag_spec
3512 if test -n "$convenience"; then
3513 if test -n "$whole_archive_flag_spec"; then
3514 eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\"
3515 else
3516 gentop="$output_objdir/${obj}x"
3517 $show "${rm}r $gentop"
3518 $run ${rm}r "$gentop"
3519 $show "$mkdir $gentop"
3520 $run $mkdir "$gentop"
3521 status=$?
3522 if test "$status" -ne 0 && test ! -d "$gentop"; then
3523 exit $status
3525 generated="$generated $gentop"
3527 for xlib in $convenience; do
3528 # Extract the objects.
3529 case $xlib in
3530 [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
3531 *) xabs=`pwd`"/$xlib" ;;
3532 esac
3533 xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
3534 xdir="$gentop/$xlib"
3536 $show "${rm}r $xdir"
3537 $run ${rm}r "$xdir"
3538 $show "$mkdir $xdir"
3539 $run $mkdir "$xdir"
3540 status=$?
3541 if test "$status" -ne 0 && test ! -d "$xdir"; then
3542 exit $status
3544 $show "(cd $xdir && $AR x $xabs)"
3545 $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
3547 reload_conv_objs="$reload_objs "`find $xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
3548 done
3552 # Create the old-style object.
3553 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
3555 output="$obj"
3556 eval cmds=\"$reload_cmds\"
3557 save_ifs="$IFS"; IFS='~'
3558 for cmd in $cmds; do
3559 IFS="$save_ifs"
3560 $show "$cmd"
3561 $run eval "$cmd" || exit $?
3562 done
3563 IFS="$save_ifs"
3565 # Exit if we aren't doing a library object file.
3566 if test -z "$libobj"; then
3567 if test -n "$gentop"; then
3568 $show "${rm}r $gentop"
3569 $run ${rm}r $gentop
3572 exit 0
3575 if test "$build_libtool_libs" != yes; then
3576 if test -n "$gentop"; then
3577 $show "${rm}r $gentop"
3578 $run ${rm}r $gentop
3581 # Create an invalid libtool object if no PIC, so that we don't
3582 # accidentally link it into a program.
3583 # $show "echo timestamp > $libobj"
3584 # $run eval "echo timestamp > $libobj" || exit $?
3585 exit 0
3588 if test -n "$pic_flag" || test "$pic_mode" != default; then
3589 # Only do commands if we really have different PIC objects.
3590 reload_objs="$libobjs $reload_conv_objs"
3591 output="$libobj"
3592 eval cmds=\"$reload_cmds\"
3593 save_ifs="$IFS"; IFS='~'
3594 for cmd in $cmds; do
3595 IFS="$save_ifs"
3596 $show "$cmd"
3597 $run eval "$cmd" || exit $?
3598 done
3599 IFS="$save_ifs"
3602 if test -n "$gentop"; then
3603 $show "${rm}r $gentop"
3604 $run ${rm}r $gentop
3607 exit 0
3610 prog)
3611 case $host in
3612 *cygwin*) output=`echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;;
3613 esac
3614 if test -n "$vinfo"; then
3615 $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2
3618 if test -n "$release"; then
3619 $echo "$modename: warning: \`-release' is ignored for programs" 1>&2
3622 if test "$preload" = yes; then
3623 if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown &&
3624 test "$dlopen_self_static" = unknown; then
3625 $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support."
3629 case $host in
3630 *-*-rhapsody* | *-*-darwin1.[012])
3631 # On Rhapsody replace the C library is the System framework
3632 compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
3633 finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
3635 esac
3637 compile_command="$compile_command $compile_deplibs"
3638 finalize_command="$finalize_command $finalize_deplibs"
3640 if test -n "$rpath$xrpath"; then
3641 # If the user specified any rpath flags, then add them.
3642 for libdir in $rpath $xrpath; do
3643 # This is the magic to use -rpath.
3644 case "$finalize_rpath " in
3645 *" $libdir "*) ;;
3646 *) finalize_rpath="$finalize_rpath $libdir" ;;
3647 esac
3648 done
3651 # Now hardcode the library paths
3652 rpath=
3653 hardcode_libdirs=
3654 for libdir in $compile_rpath $finalize_rpath; do
3655 if test -n "$hardcode_libdir_flag_spec"; then
3656 if test -n "$hardcode_libdir_separator"; then
3657 if test -z "$hardcode_libdirs"; then
3658 hardcode_libdirs="$libdir"
3659 else
3660 # Just accumulate the unique libdirs.
3661 case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
3662 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
3665 hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
3667 esac
3669 else
3670 eval flag=\"$hardcode_libdir_flag_spec\"
3671 rpath="$rpath $flag"
3673 elif test -n "$runpath_var"; then
3674 case "$perm_rpath " in
3675 *" $libdir "*) ;;
3676 *) perm_rpath="$perm_rpath $libdir" ;;
3677 esac
3679 case $host in
3680 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
3681 case :$dllsearchpath: in
3682 *":$libdir:"*) ;;
3683 *) dllsearchpath="$dllsearchpath:$libdir";;
3684 esac
3686 esac
3687 done
3688 # Substitute the hardcoded libdirs into the rpath.
3689 if test -n "$hardcode_libdir_separator" &&
3690 test -n "$hardcode_libdirs"; then
3691 libdir="$hardcode_libdirs"
3692 eval rpath=\" $hardcode_libdir_flag_spec\"
3694 compile_rpath="$rpath"
3696 rpath=
3697 hardcode_libdirs=
3698 for libdir in $finalize_rpath; do
3699 if test -n "$hardcode_libdir_flag_spec"; then
3700 if test -n "$hardcode_libdir_separator"; then
3701 if test -z "$hardcode_libdirs"; then
3702 hardcode_libdirs="$libdir"
3703 else
3704 # Just accumulate the unique libdirs.
3705 case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
3706 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
3709 hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
3711 esac
3713 else
3714 eval flag=\"$hardcode_libdir_flag_spec\"
3715 rpath="$rpath $flag"
3717 elif test -n "$runpath_var"; then
3718 case "$finalize_perm_rpath " in
3719 *" $libdir "*) ;;
3720 *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
3721 esac
3723 done
3724 # Substitute the hardcoded libdirs into the rpath.
3725 if test -n "$hardcode_libdir_separator" &&
3726 test -n "$hardcode_libdirs"; then
3727 libdir="$hardcode_libdirs"
3728 eval rpath=\" $hardcode_libdir_flag_spec\"
3730 finalize_rpath="$rpath"
3732 if test -n "$libobjs" && test "$build_old_libs" = yes; then
3733 # Transform all the library objects into standard objects.
3734 compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
3735 finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
3738 dlsyms=
3739 if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
3740 if test -n "$NM" && test -n "$global_symbol_pipe"; then
3741 dlsyms="${outputname}S.c"
3742 else
3743 $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2
3747 if test -n "$dlsyms"; then
3748 case $dlsyms in
3749 "") ;;
3750 *.c)
3751 # Discover the nlist of each of the dlfiles.
3752 nlist="$output_objdir/${outputname}.nm"
3754 $show "$rm $nlist ${nlist}S ${nlist}T"
3755 $run $rm "$nlist" "${nlist}S" "${nlist}T"
3757 # Parse the name list into a source file.
3758 $show "creating $output_objdir/$dlsyms"
3760 test -z "$run" && $echo > "$output_objdir/$dlsyms" "\
3761 /* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */
3762 /* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */
3764 #ifdef __cplusplus
3765 extern \"C\" {
3766 #endif
3768 /* Prevent the only kind of declaration conflicts we can make. */
3769 #define lt_preloaded_symbols some_other_symbol
3771 /* External symbol declarations for the compiler. */\
3774 if test "$dlself" = yes; then
3775 $show "generating symbol list for \`$output'"
3777 test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist"
3779 # Add our own program objects to the symbol list.
3780 progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
3781 for arg in $progfiles; do
3782 $show "extracting global C symbols from \`$arg'"
3783 $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
3784 done
3786 if test -n "$exclude_expsyms"; then
3787 $run eval 'egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
3788 $run eval '$mv "$nlist"T "$nlist"'
3791 if test -n "$export_symbols_regex"; then
3792 $run eval 'egrep -e "$export_symbols_regex" "$nlist" > "$nlist"T'
3793 $run eval '$mv "$nlist"T "$nlist"'
3796 # Prepare the list of exported symbols
3797 if test -z "$export_symbols"; then
3798 export_symbols="$output_objdir/$output.exp"
3799 $run $rm $export_symbols
3800 $run eval "${SED} -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
3801 else
3802 $run eval "${SED} -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"'
3803 $run eval 'grep -f "$output_objdir/$output.exp" < "$nlist" > "$nlist"T'
3804 $run eval 'mv "$nlist"T "$nlist"'
3808 for arg in $dlprefiles; do
3809 $show "extracting global C symbols from \`$arg'"
3810 name=`echo "$arg" | ${SED} -e 's%^.*/%%'`
3811 $run eval 'echo ": $name " >> "$nlist"'
3812 $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
3813 done
3815 if test -z "$run"; then
3816 # Make sure we have at least an empty file.
3817 test -f "$nlist" || : > "$nlist"
3819 if test -n "$exclude_expsyms"; then
3820 egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
3821 $mv "$nlist"T "$nlist"
3824 # Try sorting and uniquifying the output.
3825 if grep -v "^: " < "$nlist" | sort +2 | uniq > "$nlist"S; then
3827 else
3828 grep -v "^: " < "$nlist" > "$nlist"S
3831 if test -f "$nlist"S; then
3832 eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"'
3833 else
3834 echo '/* NONE */' >> "$output_objdir/$dlsyms"
3837 $echo >> "$output_objdir/$dlsyms" "\
3839 #undef lt_preloaded_symbols
3841 #if defined (__STDC__) && __STDC__
3842 # define lt_ptr void *
3843 #else
3844 # define lt_ptr char *
3845 # define const
3846 #endif
3848 /* The mapping between symbol names and symbols. */
3849 const struct {
3850 const char *name;
3851 lt_ptr address;
3853 lt_preloaded_symbols[] =
3857 eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms"
3859 $echo >> "$output_objdir/$dlsyms" "\
3860 {0, (lt_ptr) 0}
3863 /* This works around a problem in FreeBSD linker */
3864 #ifdef FREEBSD_WORKAROUND
3865 static const void *lt_preloaded_setup() {
3866 return lt_preloaded_symbols;
3868 #endif
3870 #ifdef __cplusplus
3872 #endif\
3876 pic_flag_for_symtable=
3877 case $host in
3878 # compiling the symbol table file with pic_flag works around
3879 # a FreeBSD bug that causes programs to crash when -lm is
3880 # linked before any other PIC object. But we must not use
3881 # pic_flag when linking with -static. The problem exists in
3882 # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
3883 *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
3884 case "$compile_command " in
3885 *" -static "*) ;;
3886 *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";;
3887 esac;;
3888 *-*-hpux*)
3889 case "$compile_command " in
3890 *" -static "*) ;;
3891 *) pic_flag_for_symtable=" $pic_flag";;
3892 esac
3893 esac
3895 # Now compile the dynamic symbol file.
3896 $show "(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")"
3897 $run eval '(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $?
3899 # Clean up the generated files.
3900 $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T"
3901 $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T"
3903 # Transform the symbol file into the correct name.
3904 compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
3905 finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
3908 $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
3909 exit 1
3911 esac
3912 else
3913 # We keep going just in case the user didn't refer to
3914 # lt_preloaded_symbols. The linker will fail if global_symbol_pipe
3915 # really was required.
3917 # Nullify the symbol file.
3918 compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
3919 finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
3922 # AIX runtime linking requires linking programs with -Wl,-brtl and libs with -Wl,-G
3923 # Also add -bnolibpath to the beginning of the link line, to clear the hardcoded runpath.
3924 # Otherwise, things like the -L path to libgcc.a are accidentally hardcoded by ld.
3925 # This does not apply on AIX for ia64, which uses a SysV linker.
3926 case "$host" in
3927 ia64-*-aix5*) ;;
3928 *-*-aix4* | *-*-aix5*)
3929 compile_command=`$echo "X$compile_command $wl-brtl" | $Xsed -e "s/\$CC/\$CC $wl-bnolibpath/1"`
3930 finalize_command=`$echo "X$finalize_command $wl-brtl" | $Xsed -e "s/\$CC/\$CC $wl-bnolibpath/1"` ;;
3931 esac
3933 if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
3934 # Replace the output file specification.
3935 compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
3936 link_command="$compile_command$compile_rpath"
3938 # We have no uninstalled library dependencies, so finalize right now.
3939 $show "$link_command"
3940 $run eval "$link_command"
3941 status=$?
3943 # Delete the generated files.
3944 if test -n "$dlsyms"; then
3945 $show "$rm $output_objdir/${outputname}S.${objext}"
3946 $run $rm "$output_objdir/${outputname}S.${objext}"
3949 exit $status
3952 if test -n "$shlibpath_var"; then
3953 # We should set the shlibpath_var
3954 rpath=
3955 for dir in $temp_rpath; do
3956 case $dir in
3957 [\\/]* | [A-Za-z]:[\\/]*)
3958 # Absolute path.
3959 rpath="$rpath$dir:"
3962 # Relative path: add a thisdir entry.
3963 rpath="$rpath\$thisdir/$dir:"
3965 esac
3966 done
3967 temp_rpath="$rpath"
3970 if test -n "$compile_shlibpath$finalize_shlibpath"; then
3971 compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
3973 if test -n "$finalize_shlibpath"; then
3974 finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
3977 compile_var=
3978 finalize_var=
3979 if test -n "$runpath_var"; then
3980 if test -n "$perm_rpath"; then
3981 # We should set the runpath_var.
3982 rpath=
3983 for dir in $perm_rpath; do
3984 rpath="$rpath$dir:"
3985 done
3986 compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
3988 if test -n "$finalize_perm_rpath"; then
3989 # We should set the runpath_var.
3990 rpath=
3991 for dir in $finalize_perm_rpath; do
3992 rpath="$rpath$dir:"
3993 done
3994 finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
3998 if test "$no_install" = yes; then
3999 # We don't need to create a wrapper script.
4000 link_command="$compile_var$compile_command$compile_rpath"
4001 # Replace the output file specification.
4002 link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
4003 # Delete the old output file.
4004 $run $rm $output
4005 # Link the executable and exit
4006 $show "$link_command"
4007 $run eval "$link_command" || exit $?
4008 exit 0
4011 if test "$hardcode_action" = relink; then
4012 # Fast installation is not supported
4013 link_command="$compile_var$compile_command$compile_rpath"
4014 relink_command="$finalize_var$finalize_command$finalize_rpath"
4016 $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2
4017 $echo "$modename: \`$output' will be relinked during installation" 1>&2
4018 else
4019 if test "$fast_install" != no; then
4020 link_command="$finalize_var$compile_command$finalize_rpath"
4021 if test "$fast_install" = yes; then
4022 relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
4023 else
4024 # fast_install is set to needless
4025 relink_command=
4027 else
4028 link_command="$compile_var$compile_command$compile_rpath"
4029 relink_command="$finalize_var$finalize_command$finalize_rpath"
4033 # Replace the output file specification.
4034 link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
4036 # Delete the old output files.
4037 $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname
4039 $show "$link_command"
4040 $run eval "$link_command" || exit $?
4042 # Now create the wrapper script.
4043 $show "creating $output"
4045 # Quote the relink command for shipping.
4046 if test -n "$relink_command"; then
4047 # Preserve any variables that may affect compiler behavior
4048 for var in $variables_saved_for_relink; do
4049 if eval test -z \"\${$var+set}\"; then
4050 relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
4051 elif eval var_value=\$$var; test -z "$var_value"; then
4052 relink_command="$var=; export $var; $relink_command"
4053 else
4054 var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
4055 relink_command="$var=\"$var_value\"; export $var; $relink_command"
4057 done
4058 relink_command="(cd `pwd`; $relink_command)"
4059 relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
4062 # Quote $echo for shipping.
4063 if test "X$echo" = "X$SHELL $0 --fallback-echo"; then
4064 case $0 in
4065 [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $0 --fallback-echo";;
4066 *) qecho="$SHELL `pwd`/$0 --fallback-echo";;
4067 esac
4068 qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"`
4069 else
4070 qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"`
4073 # Only actually do things if our run command is non-null.
4074 if test -z "$run"; then
4075 # win32 will think the script is a binary if it has
4076 # a .exe suffix, so we strip it off here.
4077 case $output in
4078 *.exe) output=`echo $output|${SED} 's,.exe$,,'` ;;
4079 esac
4080 # test for cygwin because mv fails w/o .exe extensions
4081 case $host in
4082 *cygwin*) exeext=.exe ;;
4083 *) exeext= ;;
4084 esac
4085 $rm $output
4086 trap "$rm $output; exit 1" 1 2 15
4088 $echo > $output "\
4089 #! $SHELL
4091 # $output - temporary wrapper script for $objdir/$outputname
4092 # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
4094 # The $output program cannot be directly executed until all the libtool
4095 # libraries that it depends on are installed.
4097 # This wrapper script should never be moved out of the build directory.
4098 # If it is, it will not operate correctly.
4100 # Sed substitution that helps us do robust quoting. It backslashifies
4101 # metacharacters that are still active within double-quoted strings.
4102 Xsed='${SED} -e 1s/^X//'
4103 sed_quote_subst='$sed_quote_subst'
4105 # The HP-UX ksh and POSIX shell print the target directory to stdout
4106 # if CDPATH is set.
4107 if test \"\${CDPATH+set}\" = set; then CDPATH=:; export CDPATH; fi
4109 relink_command=\"$relink_command\"
4111 # This environment variable determines our operation mode.
4112 if test \"\$libtool_install_magic\" = \"$magic\"; then
4113 # install mode needs the following variable:
4114 notinst_deplibs='$notinst_deplibs'
4115 else
4116 # When we are sourced in execute mode, \$file and \$echo are already set.
4117 if test \"\$libtool_execute_magic\" != \"$magic\"; then
4118 echo=\"$qecho\"
4119 file=\"\$0\"
4120 # Make sure echo works.
4121 if test \"X\$1\" = X--no-reexec; then
4122 # Discard the --no-reexec flag, and continue.
4123 shift
4124 elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then
4125 # Yippee, \$echo works!
4127 else
4128 # Restart under the correct shell, and then maybe \$echo will work.
4129 exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
4133 $echo >> $output "\
4135 # Find the directory that this script lives in.
4136 thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
4137 test \"x\$thisdir\" = \"x\$file\" && thisdir=.
4139 # Follow symbolic links until we get to the real thisdir.
4140 file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
4141 while test -n \"\$file\"; do
4142 destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
4144 # If there was a directory component, then change thisdir.
4145 if test \"x\$destdir\" != \"x\$file\"; then
4146 case \"\$destdir\" in
4147 [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
4148 *) thisdir=\"\$thisdir/\$destdir\" ;;
4149 esac
4152 file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
4153 file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
4154 done
4156 # Try to get the absolute directory name.
4157 absdir=\`cd \"\$thisdir\" && pwd\`
4158 test -n \"\$absdir\" && thisdir=\"\$absdir\"
4161 if test "$fast_install" = yes; then
4162 echo >> $output "\
4163 program=lt-'$outputname'$exeext
4164 progdir=\"\$thisdir/$objdir\"
4166 if test ! -f \"\$progdir/\$program\" || \\
4167 { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
4168 test \"X\$file\" != \"X\$progdir/\$program\"; }; then
4170 file=\"\$\$-\$program\"
4172 if test ! -d \"\$progdir\"; then
4173 $mkdir \"\$progdir\"
4174 else
4175 $rm \"\$progdir/\$file\"
4178 echo >> $output "\
4180 # relink executable if necessary
4181 if test -n \"\$relink_command\"; then
4182 if relink_command_output=\`eval \$relink_command 2>&1\`; then :
4183 else
4184 $echo \"\$relink_command_output\" >&2
4185 $rm \"\$progdir/\$file\"
4186 exit 1
4190 $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
4191 { $rm \"\$progdir/\$program\";
4192 $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; }
4193 $rm \"\$progdir/\$file\"
4195 else
4196 echo >> $output "\
4197 program='$outputname'
4198 progdir=\"\$thisdir/$objdir\"
4202 echo >> $output "\
4204 if test -f \"\$progdir/\$program\"; then"
4206 # Export our shlibpath_var if we have one.
4207 if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
4208 $echo >> $output "\
4209 # Add our own library path to $shlibpath_var
4210 $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
4212 # Some systems cannot cope with colon-terminated $shlibpath_var
4213 # The second colon is a workaround for a bug in BeOS R4 sed
4214 $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
4216 export $shlibpath_var
4220 # fixup the dll searchpath if we need to.
4221 if test -n "$dllsearchpath"; then
4222 $echo >> $output "\
4223 # Add the dll search path components to the executable PATH
4224 PATH=$dllsearchpath:\$PATH
4228 $echo >> $output "\
4229 if test \"\$libtool_execute_magic\" != \"$magic\"; then
4230 # Run the actual program with our arguments.
4232 case $host in
4233 # win32 systems need to use the prog path for dll
4234 # lookup to work
4235 *-*-cygwin* | *-*-pw32*)
4236 $echo >> $output "\
4237 exec \$progdir/\$program \${1+\"\$@\"}
4241 # Backslashes separate directories on plain windows
4242 *-*-mingw | *-*-os2*)
4243 $echo >> $output "\
4244 exec \$progdir\\\\\$program \${1+\"\$@\"}
4249 $echo >> $output "\
4250 # Export the path to the program.
4251 PATH=\"\$progdir:\$PATH\"
4252 export PATH
4254 exec \$program \${1+\"\$@\"}
4257 esac
4258 $echo >> $output "\
4259 \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\"
4260 exit 1
4262 else
4263 # The program doesn't exist.
4264 \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2
4265 \$echo \"This script is just a wrapper for \$program.\" 1>&2
4266 echo \"See the $PACKAGE documentation for more information.\" 1>&2
4267 exit 1
4271 chmod +x $output
4273 exit 0
4275 esac
4277 # See if we need to build an old-fashioned archive.
4278 for oldlib in $oldlibs; do
4280 if test "$build_libtool_libs" = convenience; then
4281 oldobjs="$libobjs_save"
4282 addlibs="$convenience"
4283 build_libtool_libs=no
4284 else
4285 if test "$build_libtool_libs" = module; then
4286 oldobjs="$libobjs_save"
4287 build_libtool_libs=no
4288 else
4289 #oldobjs="$oldobjs$old_deplibs $non_pic_objects"
4290 oldobjs="$old_deplibs $non_pic_objects"
4292 addlibs="$old_convenience"
4295 if test -n "$addlibs"; then
4296 gentop="$output_objdir/${outputname}x"
4297 $show "${rm}r $gentop"
4298 $run ${rm}r "$gentop"
4299 $show "$mkdir $gentop"
4300 $run $mkdir "$gentop"
4301 status=$?
4302 if test "$status" -ne 0 && test ! -d "$gentop"; then
4303 exit $status
4305 generated="$generated $gentop"
4307 # Add in members from convenience archives.
4308 for xlib in $addlibs; do
4309 # Extract the objects.
4310 case $xlib in
4311 [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
4312 *) xabs=`pwd`"/$xlib" ;;
4313 esac
4314 xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
4315 xdir="$gentop/$xlib"
4317 $show "${rm}r $xdir"
4318 $run ${rm}r "$xdir"
4319 $show "$mkdir $xdir"
4320 $run $mkdir "$xdir"
4321 status=$?
4322 if test "$status" -ne 0 && test ! -d "$xdir"; then
4323 exit $status
4325 $show "(cd $xdir && $AR x $xabs)"
4326 $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
4328 oldobjs="$oldobjs "`find $xdir -name \*.${objext} -print -o -name \*.lo -print | $NL2SP`
4329 done
4332 compiler_flags="$compiler_flags $add_flags"
4334 # Do each command in the archive commands.
4335 if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
4336 eval cmds=\"$old_archive_from_new_cmds\"
4337 else
4338 eval cmds=\"$old_archive_cmds\"
4340 if len=`expr "X$cmds" : ".*"` &&
4341 test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
4343 else
4344 # the command line is too long to link in one step, link in parts
4345 $echo "using piecewise archive linking..."
4346 save_RANLIB=$RANLIB
4347 RANLIB=:
4348 objlist=
4349 concat_cmds=
4350 save_oldobjs=$oldobjs
4351 for obj in $save_oldobjs
4353 oldobjs="$objlist $obj"
4354 objlist="$objlist $obj"
4355 eval test_cmds=\"$old_archive_cmds\"
4356 if len=`expr "X$test_cmds" : ".*"` &&
4357 test "$len" -le "$max_cmd_len"; then
4359 else
4360 # the above command should be used before it gets too long
4361 oldobjs=$objlist
4362 test -z "$concat_cmds" || concat_cmds=$concat_cmds~
4363 eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
4364 objlist=
4366 done
4367 RANLIB=$save_RANLIB
4368 oldobjs=$objlist
4369 eval cmds=\"\$concat_cmds~$old_archive_cmds\"
4372 save_ifs="$IFS"; IFS='~'
4373 for cmd in $cmds; do
4374 IFS="$save_ifs"
4375 $show "$cmd"
4376 $run eval "$cmd" || exit $?
4377 done
4378 IFS="$save_ifs"
4379 done
4381 if test -n "$generated"; then
4382 $show "${rm}r$generated"
4383 $run ${rm}r$generated
4386 # Now create the libtool archive.
4387 case $output in
4388 *.la)
4389 old_library=
4390 test "$build_old_libs" = yes && old_library="$libname.$libext"
4391 $show "creating $output"
4393 # Preserve any variables that may affect compiler behavior
4394 for var in $variables_saved_for_relink; do
4395 if eval test -z \"\${$var+set}\"; then
4396 relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
4397 elif eval var_value=\$$var; test -z "$var_value"; then
4398 relink_command="$var=; export $var; $relink_command"
4399 else
4400 var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
4401 relink_command="$var=\"$var_value\"; export $var; $relink_command"
4403 done
4404 # Quote the link command for shipping.
4405 relink_command="($relink_command; cd `pwd`; $SHELL $0 --mode=relink $libtool_args)"
4406 relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
4408 # Only create the output if not a dry run.
4409 if test -z "$run"; then
4410 for installed in no yes; do
4411 if test "$installed" = yes; then
4412 if test -z "$install_libdir"; then
4413 break
4415 output="$output_objdir/$outputname"i
4416 # Replace all uninstalled libtool libraries with the installed ones
4417 newdependency_libs=
4418 for deplib in $dependency_libs; do
4419 case $deplib in
4420 *.la)
4421 name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'`
4422 eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
4423 if test -z "$libdir"; then
4424 $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
4425 exit 1
4427 newdependency_libs="$newdependency_libs $libdir/$name"
4429 *) newdependency_libs="$newdependency_libs $deplib" ;;
4430 esac
4431 done
4432 dependency_libs="$newdependency_libs"
4433 newdlfiles=
4434 for lib in $dlfiles; do
4435 name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
4436 eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
4437 if test -z "$libdir"; then
4438 $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
4439 exit 1
4441 newdlfiles="$newdlfiles $libdir/$name"
4442 done
4443 dlfiles="$newdlfiles"
4444 newdlprefiles=
4445 for lib in $dlprefiles; do
4446 name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
4447 eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
4448 if test -z "$libdir"; then
4449 $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
4450 exit 1
4452 newdlprefiles="$newdlprefiles $libdir/$name"
4453 done
4454 dlprefiles="$newdlprefiles"
4456 $rm $output
4457 # place dlname in correct position for cygwin
4458 tdlname=$dlname
4459 case $host,$output,$installed,$module,$dlname in
4460 *cygwin*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
4461 esac
4462 $echo > $output "\
4463 # $outputname - a libtool library file
4464 # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
4466 # Please DO NOT delete this file!
4467 # It is necessary for linking the library.
4469 # The name that we can dlopen(3).
4470 dlname='$tdlname'
4472 # Names of this library.
4473 library_names='$library_names'
4475 # The name of the static archive.
4476 old_library='$old_library'
4478 # Libraries that this one depends upon.
4479 dependency_libs='$dependency_libs'
4481 # Version information for $libname.
4482 current=$current
4483 age=$age
4484 revision=$revision
4486 # Is this an already installed library?
4487 installed=$installed
4489 # Files to dlopen/dlpreopen
4490 dlopen='$dlfiles'
4491 dlpreopen='$dlprefiles'
4493 # Directory that this library needs to be installed in:
4494 libdir='$install_libdir'"
4495 if test "$installed" = no && test "$need_relink" = yes && test "$fast_install" = no; then
4496 $echo >> $output "\
4497 relink_command=\"$relink_command\""
4499 done
4502 # Do a symbolic link so that the libtool archive can be found in
4503 # LD_LIBRARY_PATH before the program is installed.
4504 $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)"
4505 $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $?
4507 esac
4508 exit 0
4511 # libtool install mode
4512 install)
4513 modename="$modename: install"
4515 # There may be an optional sh(1) argument at the beginning of
4516 # install_prog (especially on Windows NT).
4517 if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
4518 # Allow the use of GNU shtool's install command.
4519 $echo "X$nonopt" | $Xsed | grep shtool > /dev/null; then
4520 # Aesthetically quote it.
4521 arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
4522 case $arg in
4523 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
4524 arg="\"$arg\""
4526 esac
4527 install_prog="$arg "
4528 arg="$1"
4529 shift
4530 else
4531 install_prog=
4532 arg="$nonopt"
4535 # The real first argument should be the name of the installation program.
4536 # Aesthetically quote it.
4537 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
4538 case $arg in
4539 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
4540 arg="\"$arg\""
4542 esac
4543 install_prog="$install_prog$arg"
4545 # We need to accept at least all the BSD install flags.
4546 dest=
4547 files=
4548 opts=
4549 prev=
4550 install_type=
4551 isdir=no
4552 stripme=
4553 for arg
4555 if test -n "$dest"; then
4556 files="$files $dest"
4557 dest="$arg"
4558 continue
4561 case $arg in
4562 -d) isdir=yes ;;
4563 -f) prev="-f" ;;
4564 -g) prev="-g" ;;
4565 -m) prev="-m" ;;
4566 -o) prev="-o" ;;
4568 stripme=" -s"
4569 continue
4571 -*) ;;
4574 # If the previous option needed an argument, then skip it.
4575 if test -n "$prev"; then
4576 prev=
4577 else
4578 dest="$arg"
4579 continue
4582 esac
4584 # Aesthetically quote the argument.
4585 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
4586 case $arg in
4587 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
4588 arg="\"$arg\""
4590 esac
4591 install_prog="$install_prog $arg"
4592 done
4594 if test -z "$install_prog"; then
4595 $echo "$modename: you must specify an install program" 1>&2
4596 $echo "$help" 1>&2
4597 exit 1
4600 if test -n "$prev"; then
4601 $echo "$modename: the \`$prev' option requires an argument" 1>&2
4602 $echo "$help" 1>&2
4603 exit 1
4606 if test -z "$files"; then
4607 if test -z "$dest"; then
4608 $echo "$modename: no file or destination specified" 1>&2
4609 else
4610 $echo "$modename: you must specify a destination" 1>&2
4612 $echo "$help" 1>&2
4613 exit 1
4616 # Strip any trailing slash from the destination.
4617 dest=`$echo "X$dest" | $Xsed -e 's%/$%%'`
4619 # Check to see that the destination is a directory.
4620 test -d "$dest" && isdir=yes
4621 if test "$isdir" = yes; then
4622 destdir="$dest"
4623 destname=
4624 else
4625 destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'`
4626 test "X$destdir" = "X$dest" && destdir=.
4627 destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'`
4629 # Not a directory, so check to see that there is only one file specified.
4630 set dummy $files
4631 if test "$#" -gt 2; then
4632 $echo "$modename: \`$dest' is not a directory" 1>&2
4633 $echo "$help" 1>&2
4634 exit 1
4637 case $destdir in
4638 [\\/]* | [A-Za-z]:[\\/]*) ;;
4640 for file in $files; do
4641 case $file in
4642 *.lo) ;;
4644 $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2
4645 $echo "$help" 1>&2
4646 exit 1
4648 esac
4649 done
4651 esac
4653 # This variable tells wrapper scripts just to set variables rather
4654 # than running their programs.
4655 libtool_install_magic="$magic"
4657 staticlibs=
4658 future_libdirs=
4659 current_libdirs=
4660 for file in $files; do
4662 # Do each installation.
4663 case $file in
4664 *.$libext)
4665 # Do the static libraries later.
4666 staticlibs="$staticlibs $file"
4669 *.la)
4670 # Check to see that this really is a libtool archive.
4671 if (${SED} -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
4672 else
4673 $echo "$modename: \`$file' is not a valid libtool archive" 1>&2
4674 $echo "$help" 1>&2
4675 exit 1
4678 library_names=
4679 old_library=
4680 relink_command=
4681 # If there is no directory component, then add one.
4682 case $file in
4683 */* | *\\*) . $file ;;
4684 *) . ./$file ;;
4685 esac
4687 # Add the libdir to current_libdirs if it is the destination.
4688 if test "X$destdir" = "X$libdir"; then
4689 case "$current_libdirs " in
4690 *" $libdir "*) ;;
4691 *) current_libdirs="$current_libdirs $libdir" ;;
4692 esac
4693 else
4694 # Note the libdir as a future libdir.
4695 case "$future_libdirs " in
4696 *" $libdir "*) ;;
4697 *) future_libdirs="$future_libdirs $libdir" ;;
4698 esac
4701 dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/
4702 test "X$dir" = "X$file/" && dir=
4703 dir="$dir$objdir"
4705 if test -n "$relink_command"; then
4706 $echo "$modename: warning: relinking \`$file'" 1>&2
4707 $show "$relink_command"
4708 if $run eval "$relink_command"; then :
4709 else
4710 $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
4711 continue
4715 # See the names of the shared library.
4716 set dummy $library_names
4717 if test -n "$2"; then
4718 realname="$2"
4719 shift
4720 shift
4722 srcname="$realname"
4723 test -n "$relink_command" && srcname="$realname"T
4725 # Install the shared library and build the symlinks.
4726 $show "$install_prog $dir/$srcname $destdir/$realname"
4727 $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $?
4728 if test -n "$stripme" && test -n "$striplib"; then
4729 $show "$striplib $destdir/$realname"
4730 $run eval "$striplib $destdir/$realname" || exit $?
4733 if test "$#" -gt 0; then
4734 # Delete the old symlinks, and create new ones.
4735 for linkname
4737 if test "$linkname" != "$realname"; then
4738 $show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
4739 $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
4741 done
4744 # Do each command in the postinstall commands.
4745 lib="$destdir/$realname"
4746 eval cmds=\"$postinstall_cmds\"
4747 save_ifs="$IFS"; IFS='~'
4748 for cmd in $cmds; do
4749 IFS="$save_ifs"
4750 $show "$cmd"
4751 $run eval "$cmd" || exit $?
4752 done
4753 IFS="$save_ifs"
4756 # Install the pseudo-library for information purposes.
4757 name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
4758 instname="$dir/$name"i
4759 $show "$install_prog $instname $destdir/$name"
4760 $run eval "$install_prog $instname $destdir/$name" || exit $?
4762 # Maybe install the static library, too.
4763 test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
4766 *.lo)
4767 # Install (i.e. copy) a libtool object.
4769 # Figure out destination file name, if it wasn't already specified.
4770 if test -n "$destname"; then
4771 destfile="$destdir/$destname"
4772 else
4773 destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
4774 destfile="$destdir/$destfile"
4777 # Deduce the name of the destination old-style object file.
4778 case $destfile in
4779 *.lo)
4780 staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"`
4782 *.$objext)
4783 staticdest="$destfile"
4784 destfile=
4787 $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2
4788 $echo "$help" 1>&2
4789 exit 1
4791 esac
4793 # Install the libtool object if requested.
4794 if test -n "$destfile"; then
4795 $show "$install_prog $file $destfile"
4796 $run eval "$install_prog $file $destfile" || exit $?
4799 # Install the old object if enabled.
4800 if test "$build_old_libs" = yes; then
4801 # Deduce the name of the old-style object file.
4802 staticobj=`$echo "X$file" | $Xsed -e "$lo2o"`
4804 $show "$install_prog $staticobj $staticdest"
4805 $run eval "$install_prog \$staticobj \$staticdest" || exit $?
4807 exit 0
4811 # Figure out destination file name, if it wasn't already specified.
4812 if test -n "$destname"; then
4813 destfile="$destdir/$destname"
4814 else
4815 destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
4816 destfile="$destdir/$destfile"
4819 # Do a test to see if this is really a libtool program.
4820 case $host in
4821 *cygwin*|*mingw*)
4822 wrapper=`echo $file | ${SED} -e 's,.exe$,,'`
4825 wrapper=$file
4827 esac
4828 if (${SED} -e '4q' $wrapper | egrep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then
4829 notinst_deplibs=
4830 relink_command=
4832 # If there is no directory component, then add one.
4833 case $file in
4834 */* | *\\*) . $wrapper ;;
4835 *) . ./$wrapper ;;
4836 esac
4838 # Check the variables that should have been set.
4839 if test -z "$notinst_deplibs"; then
4840 $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2
4841 exit 1
4844 finalize=yes
4845 for lib in $notinst_deplibs; do
4846 # Check to see that each library is installed.
4847 libdir=
4848 if test -f "$lib"; then
4849 # If there is no directory component, then add one.
4850 case $lib in
4851 */* | *\\*) . $lib ;;
4852 *) . ./$lib ;;
4853 esac
4855 libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
4856 if test -n "$libdir" && test ! -f "$libfile"; then
4857 $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2
4858 finalize=no
4860 done
4862 relink_command=
4863 # If there is no directory component, then add one.
4864 case $file in
4865 */* | *\\*) . $file ;;
4866 *) . ./$file ;;
4867 esac
4869 outputname=
4870 if test "$fast_install" = no && test -n "$relink_command"; then
4871 if test "$finalize" = yes && test -z "$run"; then
4872 tmpdir="/tmp"
4873 test -n "$TMPDIR" && tmpdir="$TMPDIR"
4874 tmpdir="$tmpdir/libtool-$$"
4875 if $mkdir -p "$tmpdir" && chmod 700 "$tmpdir"; then :
4876 else
4877 $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2
4878 continue
4880 file=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
4881 outputname="$tmpdir/$file"
4882 # Replace the output file specification.
4883 relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
4885 $show "$relink_command"
4886 if $run eval "$relink_command"; then :
4887 else
4888 $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
4889 ${rm}r "$tmpdir"
4890 continue
4892 file="$outputname"
4893 else
4894 $echo "$modename: warning: cannot relink \`$file'" 1>&2
4896 else
4897 # Install the binary that we compiled earlier.
4898 file=`$echo "X$file" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
4902 # remove .exe since cygwin /usr/bin/install will append another
4903 # one anyways
4904 case $install_prog,$host in
4905 */usr/bin/install*,*cygwin*)
4906 case $file:$destfile in
4907 *.exe:*.exe)
4908 # this is ok
4910 *.exe:*)
4911 destfile=$destfile.exe
4913 *:*.exe)
4914 destfile=`echo $destfile | ${SED} -e 's,.exe$,,'`
4916 esac
4918 esac
4919 $show "$install_prog$stripme $file $destfile"
4920 $run eval "$install_prog\$stripme \$file \$destfile" || exit $?
4921 test -n "$outputname" && ${rm}r "$tmpdir"
4923 esac
4924 done
4926 for file in $staticlibs; do
4927 name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
4929 # Set up the ranlib parameters.
4930 oldlib="$destdir/$name"
4932 $show "$install_prog $file $oldlib"
4933 $run eval "$install_prog \$file \$oldlib" || exit $?
4935 if test -n "$stripme" && test -n "$striplib"; then
4936 $show "$old_striplib $oldlib"
4937 $run eval "$old_striplib $oldlib" || exit $?
4940 # Do each command in the postinstall commands.
4941 eval cmds=\"$old_postinstall_cmds\"
4942 save_ifs="$IFS"; IFS='~'
4943 for cmd in $cmds; do
4944 IFS="$save_ifs"
4945 $show "$cmd"
4946 $run eval "$cmd" || exit $?
4947 done
4948 IFS="$save_ifs"
4949 done
4951 if test -n "$future_libdirs"; then
4952 $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2
4955 if test -n "$current_libdirs"; then
4956 # Maybe just do a dry run.
4957 test -n "$run" && current_libdirs=" -n$current_libdirs"
4958 exec_cmd='$SHELL $0 --finish$current_libdirs'
4959 else
4960 exit 0
4964 # libtool finish mode
4965 finish)
4966 modename="$modename: finish"
4967 libdirs="$nonopt"
4968 admincmds=
4970 if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
4971 for dir
4973 libdirs="$libdirs $dir"
4974 done
4976 for libdir in $libdirs; do
4977 if test -n "$finish_cmds"; then
4978 # Do each command in the finish commands.
4979 eval cmds=\"$finish_cmds\"
4980 save_ifs="$IFS"; IFS='~'
4981 for cmd in $cmds; do
4982 IFS="$save_ifs"
4983 $show "$cmd"
4984 $run eval "$cmd" || admincmds="$admincmds
4985 $cmd"
4986 done
4987 IFS="$save_ifs"
4989 if test -n "$finish_eval"; then
4990 # Do the single finish_eval.
4991 eval cmds=\"$finish_eval\"
4992 $run eval "$cmds" || admincmds="$admincmds
4993 $cmds"
4995 done
4998 # Exit here if they wanted silent mode.
4999 exit 0
5001 echo "----------------------------------------------------------------------"
5002 echo "Libraries have been installed in:"
5003 for libdir in $libdirs; do
5004 echo " $libdir"
5005 done
5006 echo
5007 echo "If you ever happen to want to link against installed libraries"
5008 echo "in a given directory, LIBDIR, you must either use libtool, and"
5009 echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
5010 echo "flag during linking and do at least one of the following:"
5011 if test -n "$shlibpath_var"; then
5012 echo " - add LIBDIR to the \`$shlibpath_var' environment variable"
5013 echo " during execution"
5015 if test -n "$runpath_var"; then
5016 echo " - add LIBDIR to the \`$runpath_var' environment variable"
5017 echo " during linking"
5019 if test -n "$hardcode_libdir_flag_spec"; then
5020 libdir=LIBDIR
5021 eval flag=\"$hardcode_libdir_flag_spec\"
5023 echo " - use the \`$flag' linker flag"
5025 if test -n "$admincmds"; then
5026 echo " - have your system administrator run these commands:$admincmds"
5028 if test -f /etc/ld.so.conf; then
5029 echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
5031 echo
5032 echo "See any operating system documentation about shared libraries for"
5033 echo "more information, such as the ld(1) and ld.so(8) manual pages."
5034 echo "----------------------------------------------------------------------"
5035 exit 0
5038 # libtool execute mode
5039 execute)
5040 modename="$modename: execute"
5042 # The first argument is the command name.
5043 cmd="$nonopt"
5044 if test -z "$cmd"; then
5045 $echo "$modename: you must specify a COMMAND" 1>&2
5046 $echo "$help"
5047 exit 1
5050 # Handle -dlopen flags immediately.
5051 for file in $execute_dlfiles; do
5052 if test ! -f "$file"; then
5053 $echo "$modename: \`$file' is not a file" 1>&2
5054 $echo "$help" 1>&2
5055 exit 1
5058 dir=
5059 case $file in
5060 *.la)
5061 # Check to see that this really is a libtool archive.
5062 if (${SED} -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
5063 else
5064 $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
5065 $echo "$help" 1>&2
5066 exit 1
5069 # Read the libtool library.
5070 dlname=
5071 library_names=
5073 # If there is no directory component, then add one.
5074 case $file in
5075 */* | *\\*) . $file ;;
5076 *) . ./$file ;;
5077 esac
5079 # Skip this library if it cannot be dlopened.
5080 if test -z "$dlname"; then
5081 # Warn if it was a shared library.
5082 test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'"
5083 continue
5086 dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
5087 test "X$dir" = "X$file" && dir=.
5089 if test -f "$dir/$objdir/$dlname"; then
5090 dir="$dir/$objdir"
5091 else
5092 $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
5093 exit 1
5097 *.lo)
5098 # Just add the directory containing the .lo file.
5099 dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
5100 test "X$dir" = "X$file" && dir=.
5104 $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2
5105 continue
5107 esac
5109 # Get the absolute pathname.
5110 absdir=`cd "$dir" && pwd`
5111 test -n "$absdir" && dir="$absdir"
5113 # Now add the directory to shlibpath_var.
5114 if eval "test -z \"\$$shlibpath_var\""; then
5115 eval "$shlibpath_var=\"\$dir\""
5116 else
5117 eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
5119 done
5121 # This variable tells wrapper scripts just to set shlibpath_var
5122 # rather than running their programs.
5123 libtool_execute_magic="$magic"
5125 # Check if any of the arguments is a wrapper script.
5126 args=
5127 for file
5129 case $file in
5130 -*) ;;
5132 # Do a test to see if this is really a libtool program.
5133 if (${SED} -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
5134 # If there is no directory component, then add one.
5135 case $file in
5136 */* | *\\*) . $file ;;
5137 *) . ./$file ;;
5138 esac
5140 # Transform arg to wrapped name.
5141 file="$progdir/$program"
5144 esac
5145 # Quote arguments (to preserve shell metacharacters).
5146 file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"`
5147 args="$args \"$file\""
5148 done
5150 if test -z "$run"; then
5151 if test -n "$shlibpath_var"; then
5152 # Export the shlibpath_var.
5153 eval "export $shlibpath_var"
5156 # Restore saved enviroment variables
5157 if test "${save_LC_ALL+set}" = set; then
5158 LC_ALL="$save_LC_ALL"; export LC_ALL
5160 if test "${save_LANG+set}" = set; then
5161 LANG="$save_LANG"; export LANG
5164 # Now prepare to actually exec the command.
5165 exec_cmd="\$cmd$args"
5166 else
5167 # Display what would be done.
5168 if test -n "$shlibpath_var"; then
5169 eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\""
5170 $echo "export $shlibpath_var"
5172 $echo "$cmd$args"
5173 exit 0
5177 # libtool clean and uninstall mode
5178 clean | uninstall)
5179 modename="$modename: $mode"
5180 rm="$nonopt"
5181 files=
5182 rmforce=
5183 exit_status=0
5185 # This variable tells wrapper scripts just to set variables rather
5186 # than running their programs.
5187 libtool_install_magic="$magic"
5189 for arg
5191 case $arg in
5192 -f) rm="$rm $arg"; rmforce=yes ;;
5193 -*) rm="$rm $arg" ;;
5194 *) files="$files $arg" ;;
5195 esac
5196 done
5198 if test -z "$rm"; then
5199 $echo "$modename: you must specify an RM program" 1>&2
5200 $echo "$help" 1>&2
5201 exit 1
5204 rmdirs=
5206 for file in $files; do
5207 dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
5208 if test "X$dir" = "X$file"; then
5209 dir=.
5210 objdir="$objdir"
5211 else
5212 objdir="$dir/$objdir"
5214 name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
5215 test "$mode" = uninstall && objdir="$dir"
5217 # Remember objdir for removal later, being careful to avoid duplicates
5218 if test "$mode" = clean; then
5219 case " $rmdirs " in
5220 *" $objdir "*) ;;
5221 *) rmdirs="$rmdirs $objdir" ;;
5222 esac
5225 # Don't error if the file doesn't exist and rm -f was used.
5226 if (test -L "$file") >/dev/null 2>&1 \
5227 || (test -h "$file") >/dev/null 2>&1 \
5228 || test -f "$file"; then
5230 elif test -d "$file"; then
5231 exit_status=1
5232 continue
5233 elif test "$rmforce" = yes; then
5234 continue
5237 rmfiles="$file"
5239 case $name in
5240 *.la)
5241 # Possibly a libtool archive, so verify it.
5242 if (${SED} -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
5243 . $dir/$name
5245 # Delete the libtool libraries and symlinks.
5246 for n in $library_names; do
5247 rmfiles="$rmfiles $objdir/$n"
5248 done
5249 test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
5250 test "$mode" = clean && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
5252 if test "$mode" = uninstall; then
5253 if test -n "$library_names"; then
5254 # Do each command in the postuninstall commands.
5255 eval cmds=\"$postuninstall_cmds\"
5256 save_ifs="$IFS"; IFS='~'
5257 for cmd in $cmds; do
5258 IFS="$save_ifs"
5259 $show "$cmd"
5260 $run eval "$cmd"
5261 if test "$?" -ne 0 && test "$rmforce" != yes; then
5262 exit_status=1
5264 done
5265 IFS="$save_ifs"
5268 if test -n "$old_library"; then
5269 # Do each command in the old_postuninstall commands.
5270 eval cmds=\"$old_postuninstall_cmds\"
5271 save_ifs="$IFS"; IFS='~'
5272 for cmd in $cmds; do
5273 IFS="$save_ifs"
5274 $show "$cmd"
5275 $run eval "$cmd"
5276 if test "$?" -ne 0 && test "$rmforce" != yes; then
5277 exit_status=1
5279 done
5280 IFS="$save_ifs"
5282 # FIXME: should reinstall the best remaining shared library.
5287 *.lo)
5288 # Possibly a libtool object, so verify it.
5289 if (${SED} -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
5291 # Read the .lo file
5292 . $dir/$name
5294 # Add PIC object to the list of files to remove.
5295 if test -n "$pic_object" \
5296 && test "$pic_object" != none; then
5297 rmfiles="$rmfiles $dir/$pic_object"
5300 # Add non-PIC object to the list of files to remove.
5301 if test -n "$non_pic_object" \
5302 && test "$non_pic_object" != none; then
5303 rmfiles="$rmfiles $dir/$non_pic_object"
5309 # Do a test to see if this is a libtool program.
5310 if test "$mode" = clean &&
5311 (${SED} -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
5312 relink_command=
5313 . $dir/$file
5315 rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
5316 if test "$fast_install" = yes && test -n "$relink_command"; then
5317 rmfiles="$rmfiles $objdir/lt-$name"
5321 esac
5322 $show "$rm $rmfiles"
5323 $run $rm $rmfiles || exit_status=1
5324 done
5326 # Try to remove the ${objdir}s in the directories where we deleted files
5327 for dir in $rmdirs; do
5328 if test -d "$dir"; then
5329 $show "rmdir $dir"
5330 $run rmdir $dir >/dev/null 2>&1
5332 done
5334 exit $exit_status
5338 $echo "$modename: you must specify a MODE" 1>&2
5339 $echo "$generic_help" 1>&2
5340 exit 1
5342 esac
5344 if test -z "$exec_cmd"; then
5345 $echo "$modename: invalid operation mode \`$mode'" 1>&2
5346 $echo "$generic_help" 1>&2
5347 exit 1
5349 fi # test -z "$show_help"
5351 if test -n "$exec_cmd"; then
5352 eval exec $exec_cmd
5353 exit 1
5356 # We need to display help for each of the modes.
5357 case $mode in
5358 "") $echo \
5359 "Usage: $modename [OPTION]... [MODE-ARG]...
5361 Provide generalized library-building support services.
5363 --config show all configuration variables
5364 --debug enable verbose shell tracing
5365 -n, --dry-run display commands without modifying any files
5366 --features display basic configuration information and exit
5367 --finish same as \`--mode=finish'
5368 --help display this help message and exit
5369 --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS]
5370 --quiet same as \`--silent'
5371 --silent don't print informational messages
5372 --tag=TAG use configuration variables from tag TAG
5373 --version print version information
5375 MODE must be one of the following:
5377 clean remove files from the build directory
5378 compile compile a source file into a libtool object
5379 execute automatically set library path, then run a program
5380 finish complete the installation of libtool libraries
5381 install install libraries or executables
5382 link create a library or an executable
5383 uninstall remove libraries from an installed directory
5385 MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for
5386 a more detailed description of MODE."
5387 exit 0
5390 clean)
5391 $echo \
5392 "Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
5394 Remove files from the build directory.
5396 RM is the name of the program to use to delete files associated with each FILE
5397 (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
5398 to RM.
5400 If FILE is a libtool library, object or program, all the files associated
5401 with it are deleted. Otherwise, only FILE itself is deleted using RM."
5404 compile)
5405 $echo \
5406 "Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
5408 Compile a source file into a libtool library object.
5410 This mode accepts the following additional options:
5412 -o OUTPUT-FILE set the output file name to OUTPUT-FILE
5413 -prefer-pic try to building PIC objects only
5414 -prefer-non-pic try to building non-PIC objects only
5415 -static always build a \`.o' file suitable for static linking
5417 COMPILE-COMMAND is a command to be used in creating a \`standard' object file
5418 from the given SOURCEFILE.
5420 The output file name is determined by removing the directory component from
5421 SOURCEFILE, then substituting the C source code suffix \`.c' with the
5422 library object suffix, \`.lo'."
5425 execute)
5426 $echo \
5427 "Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]...
5429 Automatically set library path, then run a program.
5431 This mode accepts the following additional options:
5433 -dlopen FILE add the directory containing FILE to the library path
5435 This mode sets the library path environment variable according to \`-dlopen'
5436 flags.
5438 If any of the ARGS are libtool executable wrappers, then they are translated
5439 into their corresponding uninstalled binary, and any of their required library
5440 directories are added to the library path.
5442 Then, COMMAND is executed, with ARGS as arguments."
5445 finish)
5446 $echo \
5447 "Usage: $modename [OPTION]... --mode=finish [LIBDIR]...
5449 Complete the installation of libtool libraries.
5451 Each LIBDIR is a directory that contains libtool libraries.
5453 The commands that this mode executes may require superuser privileges. Use
5454 the \`--dry-run' option if you just want to see what would be executed."
5457 install)
5458 $echo \
5459 "Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND...
5461 Install executables or libraries.
5463 INSTALL-COMMAND is the installation command. The first component should be
5464 either the \`install' or \`cp' program.
5466 The rest of the components are interpreted as arguments to that command (only
5467 BSD-compatible install options are recognized)."
5470 link)
5471 $echo \
5472 "Usage: $modename [OPTION]... --mode=link LINK-COMMAND...
5474 Link object files or libraries together to form another library, or to
5475 create an executable program.
5477 LINK-COMMAND is a command using the C compiler that you would use to create
5478 a program from several object files.
5480 The following components of LINK-COMMAND are treated specially:
5482 -all-static do not do any dynamic linking at all
5483 -avoid-version do not add a version suffix if possible
5484 -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime
5485 -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols
5486 -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
5487 -export-symbols SYMFILE
5488 try to export only the symbols listed in SYMFILE
5489 -export-symbols-regex REGEX
5490 try to export only the symbols matching REGEX
5491 -LLIBDIR search LIBDIR for required installed libraries
5492 -lNAME OUTPUT-FILE requires the installed library libNAME
5493 -module build a library that can dlopened
5494 -no-fast-install disable the fast-install mode
5495 -no-install link a not-installable executable
5496 -no-undefined declare that a library does not refer to external symbols
5497 -o OUTPUT-FILE create OUTPUT-FILE from the specified objects
5498 -objectlist FILE Use a list of object files found in FILE to specify objects
5499 -release RELEASE specify package release information
5500 -rpath LIBDIR the created library will eventually be installed in LIBDIR
5501 -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries
5502 -static do not do any dynamic linking of libtool libraries
5503 -version-info CURRENT[:REVISION[:AGE]]
5504 specify library version info [each variable defaults to 0]
5506 All other options (arguments beginning with \`-') are ignored.
5508 Every other argument is treated as a filename. Files ending in \`.la' are
5509 treated as uninstalled libtool libraries, other files are standard or library
5510 object files.
5512 If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
5513 only library objects (\`.lo' files) may be specified, and \`-rpath' is
5514 required, except when creating a convenience library.
5516 If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
5517 using \`ar' and \`ranlib', or on Windows using \`lib'.
5519 If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
5520 is created, otherwise an executable program is created."
5523 uninstall)
5524 $echo \
5525 "Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
5527 Remove libraries from an installation directory.
5529 RM is the name of the program to use to delete files associated with each FILE
5530 (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
5531 to RM.
5533 If FILE is a libtool library, all the files associated with it are deleted.
5534 Otherwise, only FILE itself is deleted using RM."
5538 $echo "$modename: invalid operation mode \`$mode'" 1>&2
5539 $echo "$help" 1>&2
5540 exit 1
5542 esac
5544 echo
5545 $echo "Try \`$modename --help' for more information about other modes."
5547 exit 0
5549 # The TAGs below are defined such that we never get into a situation
5550 # in which we disable both kinds of libraries. Given conflicting
5551 # choices, we go for a static library, that is the most portable,
5552 # since we can't tell whether shared libraries were disabled because
5553 # the user asked for that or because the platform doesn't support
5554 # them. This is particularly important on AIX, because we don't
5555 # support having both static and shared libraries enabled at the same
5556 # time on that platform, so we default to a shared-only configuration.
5557 # If a disable-shared tag is given, we'll fallback to a static-only
5558 # configuration. But we'll never go from static-only to shared-only.
5560 # ### BEGIN LIBTOOL TAG CONFIG: disable-shared
5561 build_libtool_libs=no
5562 build_old_libs=yes
5563 # ### END LIBTOOL TAG CONFIG: disable-shared
5565 # ### BEGIN LIBTOOL TAG CONFIG: disable-static
5566 build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
5567 # ### END LIBTOOL TAG CONFIG: disable-static
5569 # Local Variables:
5570 # mode:shell-script
5571 # sh-indentation:2
5572 # End: