1 # ltmain.sh - Provide generalized library-building support services.
2 # NOTE: Changing this file will not affect anything until you rerun ltconfig.
4 # Copyright (C) 1996-1999 Free Software Foundation, Inc.
5 # Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
7 # This program is free software; you can redistribute it and/or modify
8 # it under the terms of the GNU General Public License as published by
9 # the Free Software Foundation; either version 2 of the License, or
10 # (at your option) any later version.
12 # This program is distributed in the hope that it will be useful, but
13 # WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 # General Public License for more details.
17 # You should have received a copy of the GNU General Public License
18 # along with this program; if not, write to the Free Software
19 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
21 # As a special exception to the GNU General Public License, if you
22 # distribute this file as part of a program that contains a
23 # configuration script generated by Autoconf, you may include it under
24 # the same distribution terms that you use for the rest of that program.
26 # Check that we have a working $echo.
27 if test "X$1" = X--no-reexec; then
28 # Discard the --no-reexec flag, and continue.
30 elif test "X$1" = X--fallback-echo; then
31 # Avoid inline document here, it may be left over
33 elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
34 # Yippee, $echo works!
37 # Restart under the correct shell, and then maybe $echo will work.
38 exec $SHELL "$0" --no-reexec ${1+"$@"}
41 if test "X$1" = X--fallback-echo; then
42 # used as fallback echo
50 # The name of this program.
51 progname=`$echo "$0" | sed 's%^.*/%%'`
57 VERSION=1.3.4-freebsd-ports
58 TIMESTAMP=" (1.385.2.196 1999/12/07 21:47:57)"
61 help="Try \`$progname --help' for more information."
62 magic="%%%MAGIC variable%%%"
67 # Sed substitution that helps us do robust quoting. It backslashifies
68 # metacharacters that are still active within double-quoted strings.
70 sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
72 NL2SP='tr \015\012 \040\040'
75 # Only set LANG and LC_ALL to C if already set.
76 # These must not be set unconditionally because not all systems understand
77 # e.g. LANG=C (notably SCO).
78 # We save the old values to restore during execute mode.
79 if test "${LC_ALL+set}" = set; then
80 save_LC_ALL="$LC_ALL"; LC_ALL=C; export LC_ALL
82 if test "${LANG+set}" = set; then
83 save_LANG="$LANG"; LANG=C; export LANG
86 if test "$LTCONFIG_VERSION" != "$VERSION"; then
87 echo "$modename: ltconfig version \`$LTCONFIG_VERSION' does not match $PROGRAM version \`$VERSION'" 1>&2
88 echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
92 if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
93 echo "$modename: not configured to build any kind of library" 1>&2
94 echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
107 lo2o="s/\\.lo\$/.${objext}/"
108 o2lo="s/\\.${objext}\$/.lo/"
110 # Parse our command line options once, thoroughly.
117 -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;;
121 # If the previous option needs an argument, assign it.
122 if test -n "$prev"; then
125 eval "$prev=\"\$$prev \$arg\""
137 # Have we seen a non-optional argument yet?
144 echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP"
149 sed -e '1,/^### BEGIN LIBTOOL CONFIG/d' -e '/^### END LIBTOOL CONFIG/,$d' $0
154 echo "$progname: enabling shell trace mode"
164 if test "$build_libtool_libs" = yes; then
165 echo "enable shared libraries"
167 echo "disable shared libraries"
169 if test "$build_old_libs" = yes; then
170 echo "enable static libraries"
172 echo "disable static libraries"
177 --finish) mode="finish" ;;
179 --mode) prevopt="--mode" prev=mode ;;
180 --mode=*) mode="$optarg" ;;
192 $echo "$modename: unrecognized option \`$arg'" 1>&2
204 if test -n "$prevopt"; then
205 $echo "$modename: option \`$prevopt' requires an argument" 1>&2
210 if test -z "$show_help"; then
212 # Infer the operation mode.
213 if test -z "$mode"; then
215 *cc | *++ | gcc* | *-gcc*)
227 *db | *dbx | *strace | *truss)
237 # If we have no mode, but dlfiles were specified, then do execute mode.
238 test -n "$execute_dlfiles" && mode=execute
240 # Just use the default operation mode.
241 if test -z "$mode"; then
242 if test -n "$nonopt"; then
243 $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2
245 $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2
252 # Only execute mode is allowed to have -dlopen flags.
253 if test -n "$execute_dlfiles" && test "$mode" != execute; then
254 $echo "$modename: unrecognized option \`-dlopen'" 1>&2
259 # Change the help message to a mode-specific one.
261 help="Try \`$modename --help --mode=$mode' for more information."
263 # These modes are in order of execution frequency so that they run quickly.
265 # libtool compile mode
267 modename="$modename: compile"
268 # Get the compilation command and the source file.
277 # Accept any command-line options.
280 if test "$user_target" != "no"; then
281 $echo "$modename: you cannot specify \`-o' more than once" 1>&2
293 case "$user_target" in
295 # The next one is the -o target name
300 # We got the output file
307 # Accept the current argument as the source file.
311 # Aesthetically quote the previous argument.
313 # Backslashify any backslashes, double quotes, and dollar signs.
314 # These are the only characters that are still specially
315 # interpreted inside of double-quoted scrings.
316 lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"`
318 # Double-quote args containing other shell metacharacters.
319 # Many Bourne shells cannot handle close brackets correctly in scan
320 # sets, so we specify it separately.
322 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
323 lastarg="\"$lastarg\""
327 # Add the previous argument to base_compile.
328 if test -z "$base_compile"; then
329 base_compile="$lastarg"
331 base_compile="$base_compile $lastarg"
335 case "$user_target" in
339 # Get the name of the library object.
340 libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'`
343 $echo "$modename: you must specify a target with \`-o'" 1>&2
348 # Recognize several different file suffixes.
349 # If the user specifies -o file.o, it is replaced with file.lo
364 libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
367 *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;;
369 $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2
374 if test -z "$base_compile"; then
375 $echo "$modename: you must specify a compilation command" 1>&2
380 # Delete any leftover library objects.
381 if test "$build_old_libs" = yes; then
382 removelist="$obj $libobj"
388 trap "$run $rm $removelist; exit 1" 1 2 15
390 # Calculate the filename of the output object if compiler does
391 # not support -o with -c
392 if test "$compiler_c_o" = no; then
393 output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\..*$%%'`.${objext}
394 lockfile="$output_obj.lock"
395 removelist="$removelist $output_obj $lockfile"
396 trap "$run $rm $removelist; exit 1" 1 2 15
402 # Lock this critical section if it is needed
403 # We use this script file to make the link, it avoids creating a new file
404 if test "$need_locks" = yes; then
405 until ln "$0" "$lockfile" 2>/dev/null; do
406 $show "Waiting for $lockfile to be removed"
409 elif test "$need_locks" = warn; then
410 if test -f "$lockfile"; then
412 *** ERROR, $lockfile exists and contains:
413 `cat $lockfile 2>/dev/null`
415 This indicates that another process is trying to use the same
416 temporary object file, and libtool could not work around it because
417 your compiler does not support \`-c' and \`-o' together. If you
418 repeat this compilation, it may succeed, by chance, but you had better
419 avoid parallel builds (make -j) in this platform, or get a better
425 echo $srcfile > "$lockfile"
428 if test -n "$fix_srcfile_path"; then
429 eval srcfile=\"$fix_srcfile_path\"
432 # Only build a PIC object if we are building libtool libraries.
433 if test "$build_libtool_libs" = yes; then
434 # Without this assignment, base_compile gets emptied.
435 fbsd_hideous_sh_bug=$base_compile
437 # All platforms use -DPIC, to notify preprocessed assembler code.
438 command="$base_compile $srcfile $pic_flag -DPIC"
439 if test "$build_old_libs" = yes; then
441 dir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'`
442 if test "X$dir" = "X$libobj"; then
447 libobj="$dir/"`$echo "X$libobj" | $Xsed -e 's%^.*/%%'`
449 if test -d "$dir"; then
456 if test $status -ne 0 && test ! -d $dir; then
461 if test "$compiler_o_lo" = yes; then
463 command="$command -o $output_obj"
464 elif test "$compiler_c_o" = yes; then
466 command="$command -o $output_obj"
469 $run $rm "$output_obj"
471 if $run eval "$command"; then :
473 test -n "$output_obj" && $run $rm $removelist
477 if test "$need_locks" = warn &&
478 test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then
480 *** ERROR, $lockfile contains:
481 `cat $lockfile 2>/dev/null`
483 but it should contain:
486 This indicates that another process is trying to use the same
487 temporary object file, and libtool could not work around it because
488 your compiler does not support \`-c' and \`-o' together. If you
489 repeat this compilation, it may succeed, by chance, but you had better
490 avoid parallel builds (make -j) in this platform, or get a better
497 # Just move the object if needed, then go on to compile the next one
498 if test x"$output_obj" != x"$libobj"; then
499 $show "$mv $output_obj $libobj"
500 if $run $mv $output_obj $libobj; then :
508 # If we have no pic_flag, then copy the object into place and finish.
509 if test -z "$pic_flag" && test "$build_old_libs" = yes; then
510 # Rename the .lo from within objdir to obj
511 if test -f $obj; then
516 $show "$mv $libobj $obj"
517 if $run $mv $libobj $obj; then :
524 xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
525 if test "X$xdir" = "X$obj"; then
530 baseobj=`$echo "X$obj" | $Xsed -e "s%.*/%%"`
531 libobj=`$echo "X$baseobj" | $Xsed -e "$o2lo"`
532 # Now arrange that obj and lo_libobj become the same file
533 $show "(cd $xdir && $LN_S $baseobj $libobj)"
534 if $run eval '(cd $xdir && $LN_S $baseobj $libobj)'; then
543 # Allow error messages only from the first compilation.
544 suppress_output=' >/dev/null 2>&1'
547 # Only build a position-dependent object if we build old libraries.
548 if test "$build_old_libs" = yes; then
549 command="$base_compile $srcfile"
550 if test "$compiler_c_o" = yes; then
551 command="$command -o $obj"
555 # Suppress compiler output if we already did a PIC compilation.
556 command="$command$suppress_output"
557 $run $rm "$output_obj"
559 if $run eval "$command"; then :
565 if test "$need_locks" = warn &&
566 test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then
568 *** ERROR, $lockfile contains:
569 `cat $lockfile 2>/dev/null`
571 but it should contain:
574 This indicates that another process is trying to use the same
575 temporary object file, and libtool could not work around it because
576 your compiler does not support \`-c' and \`-o' together. If you
577 repeat this compilation, it may succeed, by chance, but you had better
578 avoid parallel builds (make -j) in this platform, or get a better
585 # Just move the object if needed
586 if test x"$output_obj" != x"$obj"; then
587 $show "$mv $output_obj $obj"
588 if $run $mv $output_obj $obj; then :
596 # Create an invalid libtool object if no PIC, so that we do not
597 # accidentally link it into a program.
598 if test "$build_libtool_libs" != yes; then
599 $show "echo timestamp > $libobj"
600 $run eval "echo timestamp > \$libobj" || exit $?
602 # Move the .lo from within objdir
603 $show "$mv $libobj $lo_libobj"
604 if $run $mv $libobj $lo_libobj; then :
613 # Unlock the critical section if it was locked
614 if test "$need_locks" != no; then
623 modename="$modename: link"
625 *-*-cygwin* | *-*-mingw* | *-*-os2*)
626 # It is impossible to link a dll without this setting, and
627 # we shouldn't force the makefile maintainer to figure out
628 # which system we are compiling for in order to pass an extra
629 # flag for every libtool invokation.
632 # FIXME: Unfortunately, there are problems with the above when trying
633 # to make a dll which has undefined symbols, in which case not
634 # even a static library is built. For now, we need to specify
635 # -no-undefined on the libtool link line when we can be certain
636 # that all symbols are satisfied, otherwise we get a static library.
639 # This is a source program that is used to create dlls on Windows
640 # Don't remove nor modify the starting and closing comments
641 # /* ltdll.c starts here */
642 # #define WIN32_LEAN_AND_MEAN
643 # #include <windows.h>
644 # #undef WIN32_LEAN_AND_MEAN
648 # # ifdef __CYGWIN32__
649 # # define __CYGWIN__ __CYGWIN32__
656 # BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved);
662 # #include <cygwin/cygwin_dll.h>
663 # DECLARE_CYGWIN_DLL( DllMain );
665 # HINSTANCE __hDllInstance_base;
668 # DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved)
670 # __hDllInstance_base = hInst;
673 # /* ltdll.c ends here */
674 # This is a source program that is used to create import libraries
675 # on Windows for dlls which lack them. Don't remove nor modify the
676 # starting and closing comments
677 # /* impgen.c starts here */
678 # /* Copyright (C) 1999 Free Software Foundation, Inc.
680 # This file is part of GNU libtool.
682 # This program is free software; you can redistribute it and/or modify
683 # it under the terms of the GNU General Public License as published by
684 # the Free Software Foundation; either version 2 of the License, or
685 # (at your option) any later version.
687 # This program is distributed in the hope that it will be useful,
688 # but WITHOUT ANY WARRANTY; without even the implied warranty of
689 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
690 # GNU General Public License for more details.
692 # You should have received a copy of the GNU General Public License
693 # along with this program; if not, write to the Free Software
694 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
697 # #include <stdio.h> /* for printf() */
698 # #include <unistd.h> /* for open(), lseek(), read() */
699 # #include <fcntl.h> /* for O_RDONLY, O_BINARY */
700 # #include <string.h> /* for strdup() */
702 # static unsigned int
703 # pe_get16 (fd, offset)
707 # unsigned char b[2];
708 # lseek (fd, offset, SEEK_SET);
710 # return b[0] + (b[1]<<8);
713 # static unsigned int
714 # pe_get32 (fd, offset)
718 # unsigned char b[4];
719 # lseek (fd, offset, SEEK_SET);
721 # return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24);
724 # static unsigned int
728 # unsigned char *b = ptr;
729 # return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24);
738 # unsigned long pe_header_offset, opthdr_ofs, num_entries, i;
739 # unsigned long export_rva, export_size, nsections, secptr, expptr;
740 # unsigned long name_rvas, nexp;
741 # unsigned char *expdata, *erva;
742 # char *filename, *dll_name;
744 # filename = argv[1];
746 # dll = open(filename, O_RDONLY|O_BINARY);
750 # dll_name = filename;
752 # for (i=0; filename[i]; i++)
753 # if (filename[i] == '/' || filename[i] == '\\' || filename[i] == ':')
754 # dll_name = filename + i +1;
756 # pe_header_offset = pe_get32 (dll, 0x3c);
757 # opthdr_ofs = pe_header_offset + 4 + 20;
758 # num_entries = pe_get32 (dll, opthdr_ofs + 92);
760 # if (num_entries < 1) /* no exports */
763 # export_rva = pe_get32 (dll, opthdr_ofs + 96);
764 # export_size = pe_get32 (dll, opthdr_ofs + 100);
765 # nsections = pe_get16 (dll, pe_header_offset + 4 +2);
766 # secptr = (pe_header_offset + 4 + 20 +
767 # pe_get16 (dll, pe_header_offset + 4 + 16));
770 # for (i = 0; i < nsections; i++)
773 # unsigned long secptr1 = secptr + 40 * i;
774 # unsigned long vaddr = pe_get32 (dll, secptr1 + 12);
775 # unsigned long vsize = pe_get32 (dll, secptr1 + 16);
776 # unsigned long fptr = pe_get32 (dll, secptr1 + 20);
777 # lseek(dll, secptr1, SEEK_SET);
778 # read(dll, sname, 8);
779 # if (vaddr <= export_rva && vaddr+vsize > export_rva)
781 # expptr = fptr + (export_rva - vaddr);
782 # if (export_rva + export_size > vaddr + vsize)
783 # export_size = vsize - (export_rva - vaddr);
788 # expdata = (unsigned char*)malloc(export_size);
789 # lseek (dll, expptr, SEEK_SET);
790 # read (dll, expdata, export_size);
791 # erva = expdata - export_rva;
793 # nexp = pe_as32 (expdata+24);
794 # name_rvas = pe_as32 (expdata+32);
796 # printf ("EXPORTS\n");
797 # for (i = 0; i<nexp; i++)
799 # unsigned long name_rva = pe_as32 (erva+name_rvas+i*4);
800 # printf ("\t%s @ %ld ;\n", erva+name_rva, 1+ i);
805 # /* impgen.c ends here */
811 compile_command="$nonopt"
812 finalize_command="$nonopt"
823 if test -n "$shlibpath_var"; then
824 # get the directories listed in $shlibpath_var
825 eval lib_search_path=\`\$echo \"X \${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
829 # now prepend the system-specific ones
830 eval lib_search_path=\"$sys_lib_search_path_spec\$lib_search_path\"
831 eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
839 export_symbols_regex=
842 link_against_libtool_libs=
846 prefer_static_libs=no
858 # We need to know -static, to get the right output filenames.
862 -all-static | -static)
863 if test "X$arg" = "X-all-static"; then
864 if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
865 $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2
867 if test -n "$link_static_flag"; then
868 dlopen_self=$dlopen_self_static
871 if test -z "$pic_flag" && test -n "$link_static_flag"; then
872 dlopen_self=$dlopen_self_static
875 build_libtool_libs=no
877 prefer_static_libs=yes
883 # See if our shared archives depend on static archives.
884 test -n "$old_archive_from_new_cmds" && build_old_libs=yes
886 # Go through the arguments, transforming them on the way.
887 while test $# -gt 0; do
891 # If the previous option needs an argument, assign it.
892 if test -n "$prev"; then
895 compile_command="$compile_command @OUTPUT@"
896 finalize_command="$finalize_command @OUTPUT@"
902 if test "$preload" = no; then
903 # Add the symbol object into the linking commands.
904 compile_command="$compile_command @SYMFILE@"
905 finalize_command="$finalize_command @SYMFILE@"
909 *.la | *.lo) ;; # We handle these cases below.
911 if test "$dlself" = no; then
919 if test "$prev" = dlprefiles; then
921 elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
931 if test "$prev" = dlfiles; then
932 dlfiles="$dlfiles $arg"
934 dlprefiles="$dlprefiles $arg"
941 export_symbols="$arg"
942 if test ! -f "$arg"; then
943 $echo "$modename: symbol file \`$arg' does not exist"
950 export_symbols_regex="$arg"
955 if test "$release_suffix" = all; then
957 elif test "$release_suffix" = yes; then
964 # We need an absolute path.
966 [\\/]* | [A-Za-z]:[\\/]*) ;;
968 $echo "$modename: only absolute run-paths are allowed" 1>&2
972 if test "$prev" = rpath; then
975 *) rpath="$rpath $arg" ;;
980 *) xrpath="$xrpath $arg" ;;
987 eval "$prev=\"\$arg\""
998 if test -n "$link_static_flag"; then
999 compile_command="$compile_command $link_static_flag"
1000 finalize_command="$finalize_command $link_static_flag"
1006 # FIXME: remove this flag sometime in the future.
1007 $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2
1032 -export-symbols | -export-symbols-regex)
1033 if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
1034 $echo "$modename: not more than one -exported-symbols argument allowed"
1037 if test "X$arg" = "X-export-symbols"; then
1046 dir=`$echo "X$arg" | $Xsed -e 's/^-L//'`
1047 # We need an absolute path.
1049 [\\/]* | [A-Za-z]:[\\/]*) ;;
1051 absdir=`cd "$dir" && pwd`
1052 if test -z "$absdir"; then
1053 $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2
1054 $echo "$modename: passing it literally to the linker, although it might fail" 1>&2
1060 case " $deplibs " in
1062 *) deplibs="$deplibs $arg";;
1064 case " $lib_search_path " in
1066 *) lib_search_path="$lib_search_path $dir";;
1069 *-*-cygwin* | *-*-mingw* | *-*-os2*)
1070 dllsearchdir=`cd "$dir" && pwd || echo "$dir"`
1071 case ":$dllsearchpath:" in
1072 ::) dllsearchpath="$dllsearchdir";;
1073 *":$dllsearchdir:"*) ;;
1074 *) dllsearchpath="$dllsearchpath:$dllsearchdir";;
1081 if test "$arg" = "-lc"; then
1083 *-*-cygwin* | *-*-mingw* | *-*-os2* | *-*-beos*)
1084 # These systems don't actually have c library (as such)
1088 elif test "$arg" = "-lm"; then
1090 *-*-cygwin* | *-*-beos*)
1091 # These systems don't actually have math library (as such)
1096 deplibs="$deplibs $arg"
1100 deplibs="$deplibs $arg"
1131 dir=`$echo "X$arg" | $Xsed -e 's/^-R//'`
1132 # We need an absolute path.
1134 [\\/]* | [A-Za-z]:[\\/]*) ;;
1136 $echo "$modename: only absolute run-paths are allowed" 1>&2
1142 *) xrpath="$xrpath $dir" ;;
1148 # If we have no pic_flag, then this is the same as -all-static.
1149 if test -z "$pic_flag" && test -n "$link_static_flag"; then
1150 compile_command="$compile_command $link_static_flag"
1151 finalize_command="$finalize_command $link_static_flag"
1166 # Some other compiler flag.
1168 # Unknown arguments in both finalize_command and compile_command need
1169 # to be aesthetically quoted because they are evaled later.
1170 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
1172 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
1178 *.o | *.obj | *.a | *.lib)
1179 # A standard object.
1180 libobjs="$libobjs $arg"
1185 if test "$prev" = dlfiles; then
1186 dlfiles="$dlfiles $arg"
1187 if test "$build_libtool_libs" = yes && test "$dlopen" = yes; then
1191 # If libtool objects are unsupported, then we need to preload.
1196 if test "$prev" = dlprefiles; then
1197 # Preload the old-style object.
1198 dlprefiles="$dlprefiles "`$echo "X$arg" | $Xsed -e "$lo2o"`
1201 libobjs="$libobjs $arg"
1205 # A libtool-controlled library.
1212 # Check to see that this really is a libtool archive.
1213 if (sed -e '2q' $arg | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
1215 $echo "$modename: \`$arg' is not a valid libtool archive" 1>&2
1219 # If the library was installed with an old release of libtool,
1220 # it will not redefine variable installed.
1224 # If there is no directory component, then add one.
1226 */* | *\\*) . $arg ;;
1230 # Get the name of the library we link against.
1232 for l in $old_library $library_names; do
1236 if test -z "$linklib"; then
1237 $echo "$modename: cannot find name of link library for \`$arg'" 1>&2
1241 # Find the relevant object directory and library name.
1242 name=`$echo "X$arg" | $Xsed -e 's%^.*/%%' -e 's/\.la$//' -e 's/^lib//'`
1244 if test "X$installed" = Xyes; then
1247 dir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
1248 if test "X$dir" = "X$arg"; then
1255 if test -n "$dependency_libs"; then
1256 # Extract -R and -L from dependency_libs
1258 for deplib in $dependency_libs; do
1260 -R*) temp_xrpath=`$echo "X$deplib" | $Xsed -e 's/^-R//'`
1261 case " $rpath $xrpath " in
1262 *" $temp_xrpath "*) ;;
1263 *) xrpath="$xrpath $temp_xrpath";;
1265 -L*) case "$compile_command $temp_deplibs " in
1267 *) temp_deplibs="$temp_deplibs $deplib";;
1269 temp_dir=`$echo "X$deplib" | $Xsed -e 's/^-L//'`
1270 case " $lib_search_path " in
1272 *) lib_search_path="$lib_search_path $temp_dir";;
1275 *) temp_deplibs="$temp_deplibs $deplib";;
1278 dependency_libs="$temp_deplibs"
1281 if test -z "$libdir"; then
1282 # It is a libtool convenience library, so add in its objects.
1283 convenience="$convenience $dir/$old_library"
1284 old_convenience="$old_convenience $dir/$old_library"
1285 deplibs="$deplibs$dependency_libs"
1286 compile_command="$compile_command $dir/$old_library$dependency_libs"
1287 finalize_command="$finalize_command $dir/$old_library$dependency_libs"
1291 # This library was specified with -dlopen.
1292 if test "$prev" = dlfiles; then
1293 dlfiles="$dlfiles $arg"
1294 if test -z "$dlname" || test "$dlopen" != yes || test "$build_libtool_libs" = no; then
1295 # If there is no dlname, no dlopen support or we're linking statically,
1296 # we need to preload.
1299 # We should not create a dependency on this library, but we
1300 # may need any libraries it requires.
1301 compile_command="$compile_command$dependency_libs"
1302 finalize_command="$finalize_command$dependency_libs"
1308 # The library was specified with -dlpreopen.
1309 if test "$prev" = dlprefiles; then
1310 # Prefer using a static library (so that no silly _DYNAMIC symbols
1311 # are required to link).
1312 if test -n "$old_library"; then
1313 dlprefiles="$dlprefiles $dir/$old_library"
1315 dlprefiles="$dlprefiles $dir/$linklib"
1320 if test -n "$library_names" &&
1321 { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
1322 link_against_libtool_libs="$link_against_libtool_libs $arg"
1323 if test -n "$shlibpath_var"; then
1324 # Make sure the rpath contains only unique directories.
1325 case "$temp_rpath " in
1327 *) temp_rpath="$temp_rpath $dir" ;;
1331 # We need an absolute path.
1333 [\\/] | [A-Za-z]:[\\/]*) absdir="$dir" ;;
1335 absdir=`cd "$dir" && pwd`
1336 if test -z "$absdir"; then
1337 $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2
1338 $echo "$modename: passing it literally to the linker, although it might fail" 1>&2
1344 # This is the magic to use -rpath.
1345 # Skip directories that are in the system default run-time
1346 # search path, unless they have been requested with -R.
1347 case " $sys_lib_dlsearch_path " in
1350 case "$compile_rpath " in
1352 *) compile_rpath="$compile_rpath $absdir"
1357 case " $sys_lib_dlsearch_path " in
1360 case "$finalize_rpath " in
1362 *) finalize_rpath="$finalize_rpath $libdir"
1368 case "$hardcode_action" in
1369 immediate | unsupported)
1370 if test "$hardcode_direct" = no; then
1371 compile_command="$compile_command $dir/$linklib"
1372 deplibs="$deplibs $dir/$linklib"
1374 *-*-cygwin* | *-*-mingw* | *-*-os2*)
1375 dllsearchdir=`cd "$dir" && pwd || echo "$dir"`
1376 if test -n "$dllsearchpath"; then
1377 dllsearchpath="$dllsearchpath:$dllsearchdir"
1379 dllsearchpath="$dllsearchdir"
1383 elif test "$hardcode_minus_L" = no; then
1386 compile_shlibpath="$compile_shlibpath$dir:"
1389 case "$compile_command " in
1391 *) compile_command="$compile_command -L$dir";;
1393 compile_command="$compile_command -l$name"
1394 deplibs="$deplibs -L$dir -l$name"
1395 elif test "$hardcode_shlibpath_var" = no; then
1396 case ":$compile_shlibpath:" in
1398 *) compile_shlibpath="$compile_shlibpath$dir:";;
1400 compile_command="$compile_command -l$name"
1401 deplibs="$deplibs -l$name"
1408 if test "$hardcode_direct" = yes; then
1409 compile_command="$compile_command $absdir/$linklib"
1410 deplibs="$deplibs $absdir/$linklib"
1411 elif test "$hardcode_minus_L" = yes; then
1412 case "$compile_command " in
1414 *) compile_command="$compile_command -L$absdir";;
1416 compile_command="$compile_command -l$name"
1417 deplibs="$deplibs -L$absdir -l$name"
1418 elif test "$hardcode_shlibpath_var" = yes; then
1419 case ":$compile_shlibpath:" in
1421 *) compile_shlibpath="$compile_shlibpath$absdir:";;
1423 compile_command="$compile_command -l$name"
1424 deplibs="$deplibs -l$name"
1435 if test "$lib_linked" != yes; then
1436 $echo "$modename: configuration error: unsupported hardcode properties"
1440 # Finalize command for both is simple: just hardcode it.
1441 if test "$hardcode_direct" = yes; then
1442 finalize_command="$finalize_command $libdir/$linklib"
1443 elif test "$hardcode_minus_L" = yes; then
1444 case "$finalize_command " in
1446 *) finalize_command="$finalize_command -L$libdir";;
1448 finalize_command="$finalize_command -l$name"
1449 elif test "$hardcode_shlibpath_var" = yes; then
1450 case ":$finalize_shlibpath:" in
1452 *) finalize_shlibpath="$finalize_shlibpath$libdir:";;
1454 finalize_command="$finalize_command -l$name"
1456 # We cannot seem to hardcode it, guess we'll fake it.
1457 case "$finalize_command " in
1459 *) finalize_command="$finalize_command -L$libdir";;
1461 finalize_command="$finalize_command -l$name"
1464 # Transform directly to old archives if we don't build new libraries.
1465 if test -n "$pic_flag" && test -z "$old_library"; then
1466 $echo "$modename: cannot find static library for \`$arg'" 1>&2
1470 # Here we assume that one of hardcode_direct or hardcode_minus_L
1471 # is not unsupported. This is valid on all known static and
1473 if test "$hardcode_direct" != unsupported; then
1474 test -n "$old_library" && linklib="$old_library"
1475 compile_command="$compile_command $dir/$linklib"
1476 finalize_command="$finalize_command $dir/$linklib"
1478 case "$compile_command " in
1480 *) compile_command="$compile_command -L$dir";;
1482 compile_command="$compile_command -l$name"
1483 case "$finalize_command " in
1485 *) finalize_command="$finalize_command -L$dir";;
1487 finalize_command="$finalize_command -l$name"
1491 # Add in any libraries that this one depends upon.
1492 compile_command="$compile_command$dependency_libs"
1493 finalize_command="$finalize_command$dependency_libs"
1497 # Some other compiler argument.
1499 # Unknown arguments in both finalize_command and compile_command need
1500 # to be aesthetically quoted because they are evaled later.
1501 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
1503 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
1510 # Now actually substitute the argument into the commands.
1511 if test -n "$arg"; then
1512 compile_command="$compile_command $arg"
1513 finalize_command="$finalize_command $arg"
1517 if test -n "$prev"; then
1518 $echo "$modename: the \`$prevarg' option requires an argument" 1>&2
1523 if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
1524 eval arg=\"$export_dynamic_flag_spec\"
1525 compile_command="$compile_command $arg"
1526 finalize_command="$finalize_command $arg"
1530 # calculate the name of the file, without its directory
1531 outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'`
1532 libobjs_save="$libobjs"
1536 $echo "$modename: you must specify an output file" 1>&2
1542 if test -n "$link_against_libtool_libs"; then
1543 $echo "$modename: error: cannot link libtool libraries into archives" 1>&2
1547 if test -n "$deplibs"; then
1548 $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2
1551 if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
1552 $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2
1555 if test -n "$rpath"; then
1556 $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2
1559 if test -n "$xrpath"; then
1560 $echo "$modename: warning: \`-R' is ignored for archives" 1>&2
1563 if test -n "$vinfo"; then
1564 $echo "$modename: warning: \`-version-info' is ignored for archives" 1>&2
1567 if test -n "$release"; then
1568 $echo "$modename: warning: \`-release' is ignored for archives" 1>&2
1571 if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
1572 $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2
1575 # Now set the variables for building old libraries.
1576 build_libtool_libs=no
1581 # Make sure we only generate libraries of the form `libNAME.la'.
1582 case "$outputname" in
1584 name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
1585 eval libname=\"$libname_spec\"
1588 if test "$module" = no; then
1589 $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2
1593 if test "$need_lib_prefix" != no; then
1594 # Add the "lib" prefix for modules if required
1595 name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
1596 eval libname=\"$libname_spec\"
1598 libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
1603 output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
1604 if test "X$output_objdir" = "X$output"; then
1605 output_objdir="$objdir"
1607 output_objdir="$output_objdir/$objdir"
1610 if test -n "$objs"; then
1611 $echo "$modename: cannot build libtool library \`$output' from non-libtool objects:$objs" 2>&1
1615 if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
1616 $echo "$modename: warning: \`-dlopen' is ignored for libtool libraries" 1>&2
1620 if test $# -gt 2; then
1621 $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2
1626 if test -z "$rpath"; then
1627 if test "$build_libtool_libs" = yes; then
1628 # Building a libtool convenience library.
1630 oldlibs="$output_objdir/$libname.$libext $oldlibs"
1631 build_libtool_libs=convenience
1634 dependency_libs="$deplibs"
1636 if test -n "$vinfo"; then
1637 $echo "$modename: warning: \`-version-info' is ignored for convenience libraries" 1>&2
1640 if test -n "$release"; then
1641 $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2
1645 # Parse the version information argument.
1646 IFS="${IFS= }"; save_ifs="$IFS"; IFS=':'
1647 set dummy $vinfo 0 0 0
1650 if test -n "$8"; then
1651 $echo "$modename: too many parameters to \`-version-info'" 1>&2
1660 # Check that each of the things are valid numbers.
1662 0 | [1-9] | [1-9][0-9]*) ;;
1664 $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2
1665 $echo "$modename: \`$vinfo' is not valid version information" 1>&2
1671 0 | [1-9] | [1-9][0-9]*) ;;
1673 $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2
1674 $echo "$modename: \`$vinfo' is not valid version information" 1>&2
1680 0 | [1-9] | [1-9][0-9]*) ;;
1682 $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2
1683 $echo "$modename: \`$vinfo' is not valid version information" 1>&2
1688 if test $age -gt $current; then
1689 $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2
1690 $echo "$modename: \`$vinfo' is not valid version information" 1>&2
1694 # Calculate the version variables.
1698 case "$version_type" in
1702 major=`expr $current - $age + 1`
1703 versuffix="$major.$revision"
1704 verstring="sgi$major.$revision"
1706 # Add in all the interfaces that we are compatible with.
1708 while test $loop != 0; do
1709 iface=`expr $revision - $loop`
1710 loop=`expr $loop - 1`
1711 verstring="sgi$major.$iface:$verstring"
1716 major=.`expr $current - $age`
1717 versuffix="$major.$age.$revision"
1721 major=`expr $current - $age`
1722 versuffix=".$current.$age.$revision"
1723 verstring="$current.$age.$revision"
1725 # Add in all the interfaces that we are compatible with.
1727 while test $loop != 0; do
1728 iface=`expr $current - $loop`
1729 loop=`expr $loop - 1`
1730 verstring="$verstring:${iface}.0"
1733 # Make executables depend on our current version.
1734 verstring="$verstring:${current}.0"
1739 versuffix=".$current.$revision"
1744 versuffix=".$current.$revision";
1749 versuffix=".$current";
1753 # Like Linux, but with '-' rather than '.', since we only
1754 # want one extension on Windows 95.
1755 major=`expr $current - $age`
1756 versuffix="-$major-$age-$revision"
1760 $echo "$modename: unknown library version type \`$version_type'" 1>&2
1761 echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
1766 # Clear the version info if we defaulted, and they specified a release.
1767 if test -z "$vinfo" && test -n "$release"; then
1770 if test "$need_version" = no; then
1777 # Remove version info from name if versioning should be avoided
1778 if test "$avoid_version" = yes && test "$need_version" = no; then
1784 # Check to see if the archive will have undefined symbols.
1785 if test "$allow_undefined" = yes; then
1786 if test "$allow_undefined_flag" = unsupported; then
1787 $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2
1788 build_libtool_libs=no
1792 # Don't allow undefined symbols.
1793 allow_undefined_flag="$no_undefined_flag"
1796 dependency_libs="$deplibs"
1798 *-*-cygwin* | *-*-mingw* | *-*-os2* | *-*-beos*)
1799 # these systems don't actually have a c library (as such)!
1802 # FreeBSD doesn't need this...
1805 # Add libc to deplibs on all other systems.
1806 deplibs="$deplibs -lc"
1811 if test -n "$rpath$xrpath"; then
1812 # If the user specified any rpath flags, then add them.
1813 for libdir in $rpath $xrpath; do
1814 # This is the magic to use -rpath.
1815 case "$compile_rpath " in
1817 *) compile_rpath="$compile_rpath $libdir" ;;
1819 case "$finalize_rpath " in
1821 *) finalize_rpath="$finalize_rpath $libdir" ;;
1826 # Now hardcode the library paths
1829 for libdir in $compile_rpath; do
1830 if test -n "$hardcode_libdir_flag_spec"; then
1831 if test -n "$hardcode_libdir_separator"; then
1832 if test -z "$hardcode_libdirs"; then
1833 hardcode_libdirs="$libdir"
1835 # Just accumulate the unique libdirs.
1836 case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in
1837 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
1840 hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
1845 eval flag=\"$hardcode_libdir_flag_spec\"
1846 rpath="$rpath $flag"
1848 elif test -n "$runpath_var"; then
1849 case "$perm_rpath " in
1851 *) perm_rpath="$perm_rpath $libdir" ;;
1855 # Substitute the hardcoded libdirs into the rpath.
1856 if test -n "$hardcode_libdir_separator" &&
1857 test -n "$hardcode_libdirs"; then
1858 libdir="$hardcode_libdirs"
1859 eval rpath=\" $hardcode_libdir_flag_spec\"
1861 compile_rpath="$rpath"
1865 for libdir in $finalize_rpath; do
1866 if test -n "$hardcode_libdir_flag_spec"; then
1867 if test -n "$hardcode_libdir_separator"; then
1868 if test -z "$hardcode_libdirs"; then
1869 hardcode_libdirs="$libdir"
1871 # Just accumulate the unique libdirs.
1872 case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in
1873 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
1876 hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
1881 eval flag=\"$hardcode_libdir_flag_spec\"
1882 rpath="$rpath $flag"
1884 elif test -n "$runpath_var"; then
1885 case "$finalize_perm_rpath " in
1887 *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
1891 # Substitute the hardcoded libdirs into the rpath.
1892 if test -n "$hardcode_libdir_separator" &&
1893 test -n "$hardcode_libdirs"; then
1894 libdir="$hardcode_libdirs"
1895 eval rpath=\" $hardcode_libdir_flag_spec\"
1897 finalize_rpath="$rpath"
1899 # Create the output directory, or remove our outputs if we need to.
1900 if test -d $output_objdir; then
1901 $show "${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.*"
1902 $run ${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.*
1904 $show "$mkdir $output_objdir"
1905 $run $mkdir $output_objdir
1907 if test $status -ne 0 && test ! -d $output_objdir; then
1912 # Now set the variables for building old libraries.
1913 if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
1914 if test "$release_suffix" = all; then
1915 oldlibs="$oldlibs $output_objdir/$libname$release.$libext"
1917 oldlibs="$oldlibs $output_objdir/$libname.$libext"
1920 # Transform .lo files to .o files.
1921 oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
1924 if test "$build_libtool_libs" = yes; then
1925 # Transform deplibs into only deplibs that can be linked in shared.
1927 libname_save=$libname
1928 release_save=$release
1929 versuffix_save=$versuffix
1931 # I'm not sure if I'm treating the release correctly. I think
1932 # release should show up in the -l (ie -lgmp5) so we don't want to
1933 # add it in twice. Is that correct?
1939 case "$deplibs_check_method" in
1941 # Don't check for shared/static. Everything works.
1942 # This might be a little naive. We might want to check
1943 # whether the library exists or not. But this is on
1944 # osf3 & osf4 and I'm not really sure... Just
1945 # implementing what was already the behaviour.
1949 # This code stresses the "libraries are programs" paradigm to its
1950 # limits. Maybe even breaks it. We compile a program, linking it
1951 # against the deplibs as a proxy for the library. Then we can check
1952 # whether they linked in statically or dynamically with ldd.
1954 cat > conftest.c <<EOF
1955 int main() { return 0; }
1958 $CC -o conftest conftest.c $deplibs
1959 if test $? -eq 0 ; then
1960 ldd_output=`ldd conftest`
1961 for i in $deplibs; do
1962 name="`expr $i : '-l\(.*\)'`"
1963 # If $name is empty we are operating on a -L argument.
1964 if test "$name" != "" ; then
1965 libname=`eval \\$echo \"$libname_spec\"`
1966 deplib_matches=`eval \\$echo \"$library_names_spec\"`
1967 set dummy $deplib_matches
1969 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
1970 newdeplibs="$newdeplibs $i"
1974 echo "*** Warning: This library needs some functionality provided by $i."
1975 echo "*** I have the capability to make that library automatically link in when"
1976 echo "*** you link to this library. But I can only do this if you have a"
1977 echo "*** shared version of the library, which you do not appear to have."
1980 newdeplibs="$newdeplibs $i"
1984 # Error occured in the first compile. Let's try to salvage the situation:
1985 # Compile a seperate program for each library.
1986 for i in $deplibs; do
1987 name="`expr $i : '-l\(.*\)'`"
1988 # If $name is empty we are operating on a -L argument.
1989 if test "$name" != "" ; then
1991 $CC -o conftest conftest.c $i
1993 if test $? -eq 0 ; then
1994 ldd_output=`ldd conftest`
1995 libname=`eval \\$echo \"$libname_spec\"`
1996 deplib_matches=`eval \\$echo \"$library_names_spec\"`
1997 set dummy $deplib_matches
1999 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
2000 newdeplibs="$newdeplibs $i"
2004 echo "*** Warning: This library needs some functionality provided by $i."
2005 echo "*** I have the capability to make that library automatically link in when"
2006 echo "*** you link to this library. But I can only do this if you have a"
2007 echo "*** shared version of the library, which you do not appear to have."
2012 echo "*** Warning! Library $i is needed by this library but I was not able to"
2013 echo "*** make it link in! You will probably need to install it or some"
2014 echo "*** library that it depends on before this library will be fully"
2015 echo "*** functional. Installing it before continuing would be even better."
2018 newdeplibs="$newdeplibs $i"
2024 set dummy $deplibs_check_method
2025 file_magic_regex="`expr \"$deplibs_check_method\" : \"$2 \(.*\)\"`"
2026 for a_deplib in $deplibs; do
2027 name="`expr $a_deplib : '-l\(.*\)'`"
2028 # If $name is empty we are operating on a -L argument.
2029 if test "$name" != "" ; then
2030 libname=`eval \\$echo \"$libname_spec\"`
2031 for i in $lib_search_path; do
2032 potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
2033 for potent_lib in $potential_libs; do
2034 # Follow soft links.
2035 if ls -lLd "$potent_lib" 2>/dev/null \
2036 | grep " -> " >/dev/null; then
2039 # The statement above tries to avoid entering an
2040 # endless loop below, in case of cyclic links.
2041 # We might still enter an endless loop, since a link
2042 # loop can be closed while we follow links,
2044 potlib="$potent_lib"
2045 while test -h "$potlib" 2>/dev/null; do
2046 potliblink=`ls -ld $potlib | sed 's/.* -> //'`
2047 case "$potliblink" in
2048 [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
2049 *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
2052 if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \
2054 | egrep "$file_magic_regex" > /dev/null; then
2055 newdeplibs="$newdeplibs $a_deplib"
2061 if test -n "$a_deplib" ; then
2064 echo "*** Warning: This library needs some functionality provided by $a_deplib."
2065 echo "*** I have the capability to make that library automatically link in when"
2066 echo "*** you link to this library. But I can only do this if you have a"
2067 echo "*** shared version of the library, which you do not appear to have."
2070 # Add a -L argument.
2071 newdeplibs="$newdeplibs $a_deplib"
2073 done # Gone through all deplibs.
2077 if $echo "X $deplibs" | $Xsed -e 's/ -lc$//' \
2078 -e 's/ -[LR][^ ]*//g' -e 's/[ ]//g' |
2079 grep . >/dev/null; then
2081 if test "X$deplibs_check_method" = "Xnone"; then
2082 echo "*** Warning: inter-library dependencies are not supported in this platform."
2084 echo "*** Warning: inter-library dependencies are not known to be supported."
2086 echo "*** All declared inter-library dependencies are being dropped."
2091 versuffix=$versuffix_save
2093 release=$release_save
2094 libname=$libname_save
2097 if test "$droppeddeps" = yes; then
2098 if test "$module" = yes; then
2100 echo "*** Warning: libtool could not satisfy all declared inter-library"
2101 echo "*** dependencies of module $libname. Therefore, libtool will create"
2102 echo "*** a static module, that should work as long as the dlopening"
2103 echo "*** application is linked with the -dlopen flag."
2104 if test -z "$global_symbol_pipe"; then
2106 echo "*** However, this would only work if libtool was able to extract symbol"
2107 echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
2108 echo "*** not find such a program. So, this module is probably useless."
2109 echo "*** \`nm' from GNU binutils and a full rebuild may help."
2111 if test "$build_old_libs" = no; then
2112 if test "$release_suffix" = all; then
2113 oldlibs="$output_objdir/$libname$release.$libext"
2115 oldlibs="$output_objdir/$libname.$libext"
2117 build_libtool_libs=module
2120 build_libtool_libs=no
2123 echo "*** The inter-library dependencies that have been dropped here will be"
2124 echo "*** automatically added whenever a program is linked with this library"
2125 echo "*** or is declared to -dlopen it."
2128 # Done checking deplibs!
2132 # All the library-specific variables (install_libdir is set above).
2137 # Test again, we may have decided not to build it any more
2138 if test "$build_libtool_libs" = yes; then
2139 # Get the real and link names of the library.
2140 eval library_names=\"$library_names_spec\"
2141 set dummy $library_names
2145 if test -n "$soname_spec"; then
2146 eval soname=\"$soname_spec\"
2151 lib="$output_objdir/$realname"
2154 linknames="$linknames $link"
2157 # Ensure that we have .o objects for linkers which dislike .lo
2158 # (e.g. aix) in case we are running --disable-static
2159 for obj in $libobjs; do
2160 xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
2161 if test "X$xdir" = "X$obj"; then
2166 baseobj=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
2167 oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"`
2168 if test ! -f $xdir/$oldobj; then
2169 $show "(cd $xdir && ${LN_S} $baseobj $oldobj)"
2170 $run eval '(cd $xdir && ${LN_S} $baseobj $oldobj)' || exit $?
2174 # Use standard objects if they are pic
2175 test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
2177 # Prepare the list of exported symbols
2178 if test -z "$export_symbols"; then
2179 if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
2180 $show "generating symbol list for \`$libname.la'"
2181 export_symbols="$output_objdir/$libname.exp"
2182 $run $rm $export_symbols
2183 eval cmds=\"$export_symbols_cmds\"
2184 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
2185 for cmd in $cmds; do
2188 $run eval "$cmd" || exit $?
2191 if test -n "$export_symbols_regex"; then
2192 $show "egrep -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\""
2193 $run eval 'egrep -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
2194 $show "$mv \"${export_symbols}T\" \"$export_symbols\""
2195 $run eval '$mv "${export_symbols}T" "$export_symbols"'
2200 if test -n "$export_symbols" && test -n "$include_expsyms"; then
2201 $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"'
2204 if test -n "$convenience"; then
2205 if test -n "$whole_archive_flag_spec"; then
2206 eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
2208 gentop="$output_objdir/${outputname}x"
2209 $show "${rm}r $gentop"
2210 $run ${rm}r "$gentop"
2211 $show "mkdir $gentop"
2212 $run mkdir "$gentop"
2214 if test $status -ne 0 && test ! -d "$gentop"; then
2217 generated="$generated $gentop"
2219 for xlib in $convenience; do
2220 # Extract the objects.
2222 [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
2223 *) xabs=`pwd`"/$xlib" ;;
2225 xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
2226 xdir="$gentop/$xlib"
2228 $show "${rm}r $xdir"
2233 if test $status -ne 0 && test ! -d "$xdir"; then
2236 $show "(cd $xdir && $AR x $xabs)"
2237 $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
2239 libobjs="$libobjs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP`
2244 if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
2245 eval flag=\"$thread_safe_flag_spec\"
2246 linkopts="$linkopts $flag"
2249 # Do each of the archive commands.
2250 if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
2251 eval cmds=\"$archive_expsym_cmds\"
2253 eval cmds=\"$archive_cmds\"
2255 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
2256 for cmd in $cmds; do
2259 $run eval "$cmd" || exit $?
2263 # Create links to the real library.
2264 for linkname in $linknames; do
2265 if test "$realname" != "$linkname"; then
2266 $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)"
2267 $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $?
2271 # If -module or -export-dynamic was specified, set the dlname.
2272 if test "$module" = yes || test "$export_dynamic" = yes; then
2273 # On all known operating systems, these are identical.
2280 if test -n "$link_against_libtool_libs"; then
2281 $echo "$modename: error: cannot link libtool libraries into objects" 1>&2
2285 if test -n "$deplibs"; then
2286 $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2
2289 if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
2290 $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2
2293 if test -n "$rpath"; then
2294 $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2
2297 if test -n "$xrpath"; then
2298 $echo "$modename: warning: \`-R' is ignored for objects" 1>&2
2301 if test -n "$vinfo"; then
2302 $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2
2305 if test -n "$release"; then
2306 $echo "$modename: warning: \`-release' is ignored for objects" 1>&2
2311 if test -n "$objs"; then
2312 $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2
2316 obj=`$echo "X$output" | $Xsed -e "$lo2o"`
2324 # Delete the old objects.
2325 $run $rm $obj $libobj
2327 # Objects from convenience libraries. This assumes
2328 # single-version convenience libraries. Whenever we create
2329 # different ones for PIC/non-PIC, this we'll have to duplicate
2333 # reload_cmds runs $LD directly, so let us get rid of
2334 # -Wl from whole_archive_flag_spec
2337 if test -n "$convenience"; then
2338 if test -n "$whole_archive_flag_spec"; then
2339 eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\"
2341 gentop="$output_objdir/${obj}x"
2342 $show "${rm}r $gentop"
2343 $run ${rm}r "$gentop"
2344 $show "mkdir $gentop"
2345 $run mkdir "$gentop"
2347 if test $status -ne 0 && test ! -d "$gentop"; then
2350 generated="$generated $gentop"
2352 for xlib in $convenience; do
2353 # Extract the objects.
2355 [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
2356 *) xabs=`pwd`"/$xlib" ;;
2358 xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
2359 xdir="$gentop/$xlib"
2361 $show "${rm}r $xdir"
2366 if test $status -ne 0 && test ! -d "$xdir"; then
2369 $show "(cd $xdir && $AR x $xabs)"
2370 $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
2372 reload_conv_objs="$reload_objs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP`
2377 # Create the old-style object.
2378 reload_objs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs"
2381 eval cmds=\"$reload_cmds\"
2382 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
2383 for cmd in $cmds; do
2386 $run eval "$cmd" || exit $?
2390 # Exit if we aren't doing a library object file.
2391 if test -z "$libobj"; then
2392 if test -n "$gentop"; then
2393 $show "${rm}r $gentop"
2400 if test "$build_libtool_libs" != yes; then
2401 if test -n "$gentop"; then
2402 $show "${rm}r $gentop"
2406 # Create an invalid libtool object if no PIC, so that we don't
2407 # accidentally link it into a program.
2408 $show "echo timestamp > $libobj"
2409 $run eval "echo timestamp > $libobj" || exit $?
2413 if test -n "$pic_flag"; then
2414 # Only do commands if we really have different PIC objects.
2415 reload_objs="$libobjs $reload_conv_objs"
2417 eval cmds=\"$reload_cmds\"
2418 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
2419 for cmd in $cmds; do
2422 $run eval "$cmd" || exit $?
2426 # Just create a symlink.
2429 xdir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'`
2430 if test "X$xdir" = "X$libobj"; then
2435 baseobj=`$echo "X$libobj" | $Xsed -e 's%^.*/%%'`
2436 oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"`
2437 $show "(cd $xdir && $LN_S $oldobj $baseobj)"
2438 $run eval '(cd $xdir && $LN_S $oldobj $baseobj)' || exit $?
2441 if test -n "$gentop"; then
2442 $show "${rm}r $gentop"
2449 # Anything else should be a program.
2451 if test -n "$vinfo"; then
2452 $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2
2455 if test -n "$release"; then
2456 $echo "$modename: warning: \`-release' is ignored for programs" 1>&2
2459 if test "$preload" = yes; then
2460 if test "$dlopen" = unknown && test "$dlopen_self" = unknown &&
2461 test "$dlopen_self_static" = unknown; then
2462 $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support."
2466 if test -n "$rpath$xrpath"; then
2467 # If the user specified any rpath flags, then add them.
2468 for libdir in $rpath $xrpath; do
2469 # This is the magic to use -rpath.
2470 case "$compile_rpath " in
2472 *) compile_rpath="$compile_rpath $libdir" ;;
2474 case "$finalize_rpath " in
2476 *) finalize_rpath="$finalize_rpath $libdir" ;;
2481 # Now hardcode the library paths
2484 for libdir in $compile_rpath $finalize_rpath; do
2485 if test -n "$hardcode_libdir_flag_spec"; then
2486 if test -n "$hardcode_libdir_separator"; then
2487 if test -z "$hardcode_libdirs"; then
2488 hardcode_libdirs="$libdir"
2490 # Just accumulate the unique libdirs.
2491 case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in
2492 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
2495 hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
2500 eval flag=\"$hardcode_libdir_flag_spec\"
2501 rpath="$rpath $flag"
2503 elif test -n "$runpath_var"; then
2504 case "$perm_rpath " in
2506 *) perm_rpath="$perm_rpath $libdir" ;;
2510 # Substitute the hardcoded libdirs into the rpath.
2511 if test -n "$hardcode_libdir_separator" &&
2512 test -n "$hardcode_libdirs"; then
2513 libdir="$hardcode_libdirs"
2514 eval rpath=\" $hardcode_libdir_flag_spec\"
2516 compile_rpath="$rpath"
2520 for libdir in $finalize_rpath; do
2521 if test -n "$hardcode_libdir_flag_spec"; then
2522 if test -n "$hardcode_libdir_separator"; then
2523 if test -z "$hardcode_libdirs"; then
2524 hardcode_libdirs="$libdir"
2526 # Just accumulate the unique libdirs.
2527 case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in
2528 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
2531 hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
2536 eval flag=\"$hardcode_libdir_flag_spec\"
2537 rpath="$rpath $flag"
2539 elif test -n "$runpath_var"; then
2540 case "$finalize_perm_rpath " in
2542 *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
2546 # Substitute the hardcoded libdirs into the rpath.
2547 if test -n "$hardcode_libdir_separator" &&
2548 test -n "$hardcode_libdirs"; then
2549 libdir="$hardcode_libdirs"
2550 eval rpath=\" $hardcode_libdir_flag_spec\"
2552 finalize_rpath="$rpath"
2554 output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
2555 if test "X$output_objdir" = "X$output"; then
2556 output_objdir="$objdir"
2558 output_objdir="$output_objdir/$objdir"
2561 # Create the binary in the object directory, then wrap it.
2562 if test ! -d $output_objdir; then
2563 $show "$mkdir $output_objdir"
2564 $run $mkdir $output_objdir
2566 if test $status -ne 0 && test ! -d $output_objdir; then
2571 if test -n "$libobjs" && test "$build_old_libs" = yes; then
2572 # Transform all the library objects into standard objects.
2573 compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
2574 finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
2578 if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
2579 if test -n "$NM" && test -n "$global_symbol_pipe"; then
2580 dlsyms="${outputname}S.c"
2582 $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2
2586 if test -n "$dlsyms"; then
2590 # Discover the nlist of each of the dlfiles.
2591 nlist="$output_objdir/${outputname}.nm"
2593 $show "$rm $nlist ${nlist}S ${nlist}T"
2594 $run $rm "$nlist" "${nlist}S" "${nlist}T"
2596 # Parse the name list into a source file.
2597 $show "creating $output_objdir/$dlsyms"
2599 test -z "$run" && $echo > "$output_objdir/$dlsyms" "\
2600 /* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */
2601 /* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */
2607 /* Prevent the only kind of declaration conflicts we can make. */
2608 #define lt_preloaded_symbols some_other_symbol
2610 /* External symbol declarations for the compiler. */\
2613 if test "$dlself" = yes; then
2614 $show "generating symbol list for \`$output'"
2616 test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist"
2618 # Add our own program objects to the symbol list.
2619 progfiles=`$echo "X$objs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
2620 for arg in $progfiles; do
2621 $show "extracting global C symbols from \`$arg'"
2622 $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
2625 if test -n "$exclude_expsyms"; then
2626 $run eval 'egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
2627 $run eval '$mv "$nlist"T "$nlist"'
2630 if test -n "$export_symbols_regex"; then
2631 $run eval 'egrep -e "$export_symbols_regex" "$nlist" > "$nlist"T'
2632 $run eval '$mv "$nlist"T "$nlist"'
2635 # Prepare the list of exported symbols
2636 if test -z "$export_symbols"; then
2637 export_symbols="$output_objdir/$output.exp"
2638 $run $rm $export_symbols
2639 $run eval "sed -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
2641 $run eval "sed -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"'
2642 $run eval 'grep -f "$output_objdir/$output.exp" < "$nlist" > "$nlist"T'
2643 $run eval 'mv "$nlist"T "$nlist"'
2647 for arg in $dlprefiles; do
2648 $show "extracting global C symbols from \`$arg'"
2649 name=`echo "$arg" | sed -e 's%^.*/%%'`
2650 $run eval 'echo ": $name " >> "$nlist"'
2651 $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
2654 if test -z "$run"; then
2655 # Make sure we have at least an empty file.
2656 test -f "$nlist" || : > "$nlist"
2658 if test -n "$exclude_expsyms"; then
2659 egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
2660 $mv "$nlist"T "$nlist"
2663 # Try sorting and uniquifying the output.
2664 if grep -v "^: " < "$nlist" | sort +2 | uniq > "$nlist"S; then
2667 grep -v "^: " < "$nlist" > "$nlist"S
2670 if test -f "$nlist"S; then
2671 eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"'
2673 echo '/* NONE */' >> "$output_objdir/$dlsyms"
2676 $echo >> "$output_objdir/$dlsyms" "\
2678 #undef lt_preloaded_symbols
2680 #if defined (__STDC__) && __STDC__
2681 # define lt_ptr_t void *
2683 # define lt_ptr_t char *
2687 /* The mapping between symbol names and symbols. */
2692 lt_preloaded_symbols[] =
2696 sed -n -e 's/^: \([^ ]*\) $/ {\"\1\", (lt_ptr_t) 0},/p' \
2697 -e 's/^. \([^ ]*\) \([^ ]*\)$/ {"\2", (lt_ptr_t) \&\2},/p' \
2698 < "$nlist" >> "$output_objdir/$dlsyms"
2700 $echo >> "$output_objdir/$dlsyms" "\
2704 /* This works around a problem in FreeBSD linker */
2705 #ifdef FREEBSD_WORKAROUND
2706 static const void *lt_preloaded_setup() {
2707 return lt_preloaded_symbols;
2717 pic_flag_for_symtable=
2719 # compiling the symbol table file with pic_flag works around
2720 # a FreeBSD bug that causes programs to crash when -lm is
2721 # linked before any other PIC object. But we must not use
2722 # pic_flag when linking with -static. The problem exists in
2723 # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
2724 *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
\r
2725 case "$compile_command " in
2727 *) pic_flag_for_symtable=" $pic_flag -DPIC -DFREEBSD_WORKAROUND";;
2730 case "$compile_command " in
2732 *) pic_flag_for_symtable=" $pic_flag -DPIC";;
2736 # Now compile the dynamic symbol file.
2737 $show "(cd $output_objdir && $CC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")"
2738 $run eval '(cd $output_objdir && $CC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $?
2740 # Clean up the generated files.
2741 $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T"
2742 $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T"
2744 # Transform the symbol file into the correct name.
2745 compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
2746 finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
2749 $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
2754 # We keep going just in case the user didn't refer to
2755 # lt_preloaded_symbols. The linker will fail if global_symbol_pipe
2756 # really was required.
2758 # Nullify the symbol file.
2759 compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
2760 finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
2763 if test -z "$link_against_libtool_libs" || test "$build_libtool_libs" != yes; then
2764 # Replace the output file specification.
2765 compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
2766 link_command="$compile_command$compile_rpath"
2768 # We have no uninstalled library dependencies, so finalize right now.
2769 $show "$link_command"
2770 $run eval "$link_command"
2773 # Delete the generated files.
2774 if test -n "$dlsyms"; then
2775 $show "$rm $output_objdir/${outputname}S.${objext}"
2776 $run $rm "$output_objdir/${outputname}S.${objext}"
2782 if test -n "$shlibpath_var"; then
2783 # We should set the shlibpath_var
2785 for dir in $temp_rpath; do
2787 [\\/]* | [A-Za-z]:[\\/]*)
2792 # Relative path: add a thisdir entry.
2793 rpath="$rpath\$thisdir/$dir:"
2800 if test -n "$compile_shlibpath$finalize_shlibpath"; then
2801 compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
2803 if test -n "$finalize_shlibpath"; then
2804 finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
2809 if test -n "$runpath_var"; then
2810 if test -n "$perm_rpath"; then
2811 # We should set the runpath_var.
2813 for dir in $perm_rpath; do
2816 compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
2818 if test -n "$finalize_perm_rpath"; then
2819 # We should set the runpath_var.
2821 for dir in $finalize_perm_rpath; do
2824 finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
2828 if test "$hardcode_action" = relink; then
2829 # Fast installation is not supported
2830 link_command="$compile_var$compile_command$compile_rpath"
2831 relink_command="$finalize_var$finalize_command$finalize_rpath"
2833 $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2
2834 $echo "$modename: \`$output' will be relinked during installation" 1>&2
2836 if test "$fast_install" != no; then
2837 link_command="$finalize_var$compile_command$finalize_rpath"
2838 if test "$fast_install" = yes; then
2839 relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
2841 # fast_install is set to needless
2845 link_command="$compile_var$compile_command$compile_rpath"
2846 relink_command="$finalize_var$finalize_command$finalize_rpath"
2850 # Replace the output file specification.
2851 link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
2853 # Delete the old output files.
2854 $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname
2856 $show "$link_command"
2857 $run eval "$link_command" || exit $?
2859 # Now create the wrapper script.
2860 $show "creating $output"
2862 # Quote the relink command for shipping.
2863 if test -n "$relink_command"; then
2864 relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
2867 # Quote $echo for shipping.
2868 if test "X$echo" = "X$SHELL $0 --fallback-echo"; then
2870 [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $0 --fallback-echo";;
2871 *) qecho="$SHELL `pwd`/$0 --fallback-echo";;
2873 qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"`
2875 qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"`
2878 # Only actually do things if our run command is non-null.
2879 if test -z "$run"; then
2880 # win32 will think the script is a binary if it has
2881 # a .exe suffix, so we strip it off here.
2883 *.exe) output=`echo $output|sed 's,.exe$,,'` ;;
2886 trap "$rm $output; exit 1" 1 2 15
2891 # $output - temporary wrapper script for $objdir/$outputname
2892 # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
2894 # The $output program cannot be directly executed until all the libtool
2895 # libraries that it depends on are installed.
2897 # This wrapper script should never be moved out of the build directory.
2898 # If it is, it will not operate correctly.
2900 # Sed substitution that helps us do robust quoting. It backslashifies
2901 # metacharacters that are still active within double-quoted strings.
2902 Xsed='sed -e 1s/^X//'
2903 sed_quote_subst='$sed_quote_subst'
2905 # The HP-UX ksh and POSIX shell print the target directory to stdout
2907 if test \"\${CDPATH+set}\" = set; then CDPATH=:; export CDPATH; fi
2909 relink_command=\"$relink_command\"
2911 # This environment variable determines our operation mode.
2912 if test \"\$libtool_install_magic\" = \"$magic\"; then
2913 # install mode needs the following variable:
2914 link_against_libtool_libs='$link_against_libtool_libs'
2916 # When we are sourced in execute mode, \$file and \$echo are already set.
2917 if test \"\$libtool_execute_magic\" != \"$magic\"; then
2920 # Make sure echo works.
2921 if test \"X\$1\" = X--no-reexec; then
2922 # Discard the --no-reexec flag, and continue.
2924 elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then
2925 # Yippee, \$echo works!
2928 # Restart under the correct shell, and then maybe \$echo will work.
2929 exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
2935 # Find the directory that this script lives in.
2936 thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
2937 test \"x\$thisdir\" = \"x\$file\" && thisdir=.
2939 # Follow symbolic links until we get to the real thisdir.
2940 file=\`ls -ld \"\$file\" | sed -n 's/.*-> //p'\`
2941 while test -n \"\$file\"; do
2942 destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
2944 # If there was a directory component, then change thisdir.
2945 if test \"x\$destdir\" != \"x\$file\"; then
2946 case \"\$destdir\" in
2947 [\\/]* | [A-Za-z]:[\\/]*) thisdir=\"\$destdir\" ;;
2948 *) thisdir=\"\$thisdir/\$destdir\" ;;
2952 file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
2953 file=\`ls -ld \"\$thisdir/\$file\" | sed -n 's/.*-> //p'\`
2956 # Try to get the absolute directory name.
2957 absdir=\`cd \"\$thisdir\" && pwd\`
2958 test -n \"\$absdir\" && thisdir=\"\$absdir\"
2961 if test "$fast_install" = yes; then
2963 program=lt-'$outputname'
2964 progdir=\"\$thisdir/$objdir\"
2966 if test ! -f \"\$progdir/\$program\" || \\
2967 { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | sed 1q\`; \\
2968 test \"X\$file\" != \"X\$progdir/\$program\"; }; then
2970 file=\"\$\$-\$program\"
2972 if test ! -d \"\$progdir\"; then
2973 $mkdir \"\$progdir\"
2975 $rm \"\$progdir/\$file\"
2980 # relink executable if necessary
2981 if test -n \"\$relink_command\"; then
2982 if (cd \"\$thisdir\" && eval \$relink_command); then :
2984 $rm \"\$progdir/\$file\"
2989 $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
2990 { $rm \"\$progdir/\$program\";
2991 $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; }
2992 $rm \"\$progdir/\$file\"
2996 program='$outputname'
2997 progdir=\"\$thisdir/$objdir\"
3003 if test -f \"\$progdir/\$program\"; then"
3005 # Export our shlibpath_var if we have one.
3006 if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
3008 # Add our own library path to $shlibpath_var
3009 $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
3011 # Some systems cannot cope with colon-terminated $shlibpath_var
3012 # The second colon is a workaround for a bug in BeOS R4 sed
3013 $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
3015 export $shlibpath_var
3019 # fixup the dll searchpath if we need to.
3020 if test -n "$dllsearchpath"; then
3022 # Add the dll search path components to the executable PATH
3023 PATH=$dllsearchpath:\$PATH
3028 if test \"\$libtool_execute_magic\" != \"$magic\"; then
3029 # Run the actual program with our arguments.
3032 *-*-cygwin* | *-*-mingw | *-*-os2*)
3033 # win32 systems need to use the prog path for dll
3036 exec \$progdir\\\\\$program \${1+\"\$@\"}
3041 # Export the path to the program.
3042 PATH=\"\$progdir:\$PATH\"
3045 exec \$program \${1+\"\$@\"}
3050 \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\"
3054 # The program doesn't exist.
3055 \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2
3056 \$echo \"This script is just a wrapper for \$program.\" 1>&2
3057 echo \"See the $PACKAGE documentation for more information.\" 1>&2
3068 # See if we need to build an old-fashioned archive.
3069 for oldlib in $oldlibs; do
3071 if test "$build_libtool_libs" = convenience; then
3072 oldobjs="$libobjs_save"
3073 addlibs="$convenience"
3074 build_libtool_libs=no
3076 if test "$build_libtool_libs" = module; then
3077 oldobjs="$libobjs_save"
3078 build_libtool_libs=no
3080 oldobjs="$objs "`$echo "X$libobjs_save" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`
3082 addlibs="$old_convenience"
3085 if test -n "$addlibs"; then
3086 gentop="$output_objdir/${outputname}x"
3087 $show "${rm}r $gentop"
3088 $run ${rm}r "$gentop"
3089 $show "mkdir $gentop"
3090 $run mkdir "$gentop"
3092 if test $status -ne 0 && test ! -d "$gentop"; then
3095 generated="$generated $gentop"
3097 # Add in members from convenience archives.
3098 for xlib in $addlibs; do
3099 # Extract the objects.
3101 [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
3102 *) xabs=`pwd`"/$xlib" ;;
3104 xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
3105 xdir="$gentop/$xlib"
3107 $show "${rm}r $xdir"
3112 if test $status -ne 0 && test ! -d "$xdir"; then
3115 $show "(cd $xdir && $AR x $xabs)"
3116 $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
3118 oldobjs="$oldobjs "`find $xdir -name \*.${objext} -print -o -name \*.lo -print | $NL2SP`
3122 # Do each command in the archive commands.
3123 if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
3124 eval cmds=\"$old_archive_from_new_cmds\"
3126 # Ensure that we have .o objects in place in case we decided
3127 # not to build a shared library, and have fallen back to building
3128 # static libs even though --disable-static was passed!
3129 for oldobj in $oldobjs; do
3130 if test ! -f $oldobj; then
3131 xdir=`$echo "X$oldobj" | $Xsed -e 's%/[^/]*$%%'`
3132 if test "X$xdir" = "X$oldobj"; then
3137 baseobj=`$echo "X$oldobj" | $Xsed -e 's%^.*/%%'`
3138 obj=`$echo "X$baseobj" | $Xsed -e "$o2lo"`
3139 $show "(cd $xdir && ${LN_S} $obj $baseobj)"
3140 $run eval '(cd $xdir && ${LN_S} $obj $baseobj)' || exit $?
3144 eval cmds=\"$old_archive_cmds\"
3146 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
3147 for cmd in $cmds; do
3150 $run eval "$cmd" || exit $?
3155 if test -n "$generated"; then
3156 $show "${rm}r$generated"
3157 $run ${rm}r$generated
3160 # Now create the libtool archive.
3164 if test "$release_suffix" = all; then
3165 test "$build_old_libs" = yes && old_library="$libname$release.$libext"
3167 test "$build_old_libs" = yes && old_library="$libname.$libext"
3169 $show "creating $output"
3171 if test -n "$xrpath"; then
3173 for libdir in $xrpath; do
3174 temp_xrpath="$temp_xrpath -R$libdir"
3176 dependency_libs="$temp_xrpath $dependency_libs"
3179 # Only create the output if not a dry run.
3180 if test -z "$run"; then
3181 for installed in no yes; do
3182 if test "$installed" = yes; then
3183 if test -z "$install_libdir"; then
3186 output="$output_objdir/$outputname"i
3190 # $outputname - a libtool library file
3191 # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
3193 # Please DO NOT delete this file!
3194 # It is necessary for linking the library.
3196 # The name that we can dlopen(3).
3199 # Names of this library.
3200 library_names='$library_names'
3202 # The name of the static archive.
3203 old_library='$old_library'
3205 # Libraries that this one depends upon.
3206 dependency_libs='$dependency_libs'
3208 # Version information for $libname.
3213 # Is this an already installed library?
3214 installed=$installed
3216 # Directory that this library needs to be installed in:
3217 libdir='$install_libdir'\
3222 # Do a symbolic link so that the libtool archive can be found in
3223 # LD_LIBRARY_PATH before the program is installed.
3224 $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)"
3225 $run eval "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" || exit $?
3231 # libtool install mode
3233 modename="$modename: install"
3235 # There may be an optional sh(1) argument at the beginning of
3236 # install_prog (especially on Windows NT).
3237 if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh; then
3238 # Aesthetically quote it.
3239 arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
3241 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
3245 install_prog="$arg "
3253 # The real first argument should be the name of the installation program.
3254 # Aesthetically quote it.
3255 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
3257 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
3261 install_prog="$install_prog$arg"
3263 # We need to accept at least all the BSD install flags.
3273 if test -n "$dest"; then
3274 files="$files $dest"
3292 # If the previous option needed an argument, then skip it.
3293 if test -n "$prev"; then
3302 # Aesthetically quote the argument.
3303 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
3305 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
3309 install_prog="$install_prog $arg"
3312 if test -z "$install_prog"; then
3313 $echo "$modename: you must specify an install program" 1>&2
3318 if test -n "$prev"; then
3319 $echo "$modename: the \`$prev' option requires an argument" 1>&2
3324 if test -z "$files"; then
3325 if test -z "$dest"; then
3326 $echo "$modename: no file or destination specified" 1>&2
3328 $echo "$modename: you must specify a destination" 1>&2
3334 # Strip any trailing slash from the destination.
3335 dest=`$echo "X$dest" | $Xsed -e 's%/$%%'`
3337 # Check to see that the destination is a directory.
3338 test -d "$dest" && isdir=yes
3339 if test "$isdir" = yes; then
3343 destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'`
3344 test "X$destdir" = "X$dest" && destdir=.
3345 destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'`
3347 # Not a directory, so check to see that there is only one file specified.
3349 if test $# -gt 2; then
3350 $echo "$modename: \`$dest' is not a directory" 1>&2
3356 [\\/]* | [A-Za-z]:[\\/]*) ;;
3358 for file in $files; do
3362 $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2
3371 # This variable tells wrapper scripts just to set variables rather
3372 # than running their programs.
3373 libtool_install_magic="$magic"
3378 for file in $files; do
3380 # Do each installation.
3383 # Do the static libraries later.
3384 staticlibs="$staticlibs $file"
3388 # Check to see that this really is a libtool archive.
3389 if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
3391 $echo "$modename: \`$file' is not a valid libtool archive" 1>&2
3398 # If there is no directory component, then add one.
3400 */* | *\\*) . $file ;;
3404 # Add the libdir to current_libdirs if it is the destination.
3405 if test "X$destdir" = "X$libdir"; then
3406 case "$current_libdirs " in
3408 *) current_libdirs="$current_libdirs $libdir" ;;
3411 # Note the libdir as a future libdir.
3412 case "$future_libdirs " in
3414 *) future_libdirs="$future_libdirs $libdir" ;;
3418 dir="`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/"
3419 test "X$dir" = "X$file/" && dir=
3422 # See the names of the shared library.
3423 set dummy $library_names
3424 if test -n "$2"; then
3429 # Install the shared library and build the symlinks.
3430 $show "$install_prog $dir/$realname $destdir/$realname"
3431 $run eval "$install_prog $dir/$realname $destdir/$realname" || exit $?
3433 if test $# -gt 0; then
3434 # Delete the old symlinks, and create new ones.
3437 if test "$linkname" != "$realname"; then
3438 $show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
3439 $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
3444 # Do each command in the postinstall commands.
3445 lib="$destdir/$realname"
3446 eval cmds=\"$postinstall_cmds\"
3447 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
3448 for cmd in $cmds; do
3451 $run eval "$cmd" || exit $?
3456 # Install the pseudo-library for information purposes.
3457 if test "$install_ltlibs" = yes; then
3458 name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
3459 instname="$dir/$name"i
3460 $show "$install_prog $instname $destdir/$name"
3461 $run eval "$install_prog $instname $destdir/$name" || exit $?
3464 # Maybe install the static library, too.
3465 test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
3469 # Install (i.e. copy) a libtool object.
3471 # Figure out destination file name, if it wasn't already specified.
3472 if test -n "$destname"; then
3473 destfile="$destdir/$destname"
3475 destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
3476 destfile="$destdir/$destfile"
3479 # Deduce the name of the destination old-style object file.
3482 staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"`
3485 staticdest="$destfile"
3489 $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2
3495 # Install the libtool object if requested.
3496 if test -n "$destfile"; then
3497 $show "$install_prog $file $destfile"
3498 $run eval "$install_prog $file $destfile" || exit $?
3501 # Install the old object if enabled.
3502 if test "$build_old_libs" = yes; then
3503 # Deduce the name of the old-style object file.
3504 staticobj=`$echo "X$file" | $Xsed -e "$lo2o"`
3506 $show "$install_prog $staticobj $staticdest"
3507 $run eval "$install_prog \$staticobj \$staticdest" || exit $?
3513 # Figure out destination file name, if it wasn't already specified.
3514 if test -n "$destname"; then
3515 destfile="$destdir/$destname"
3517 destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
3518 destfile="$destdir/$destfile"
3521 # Do a test to see if this is really a libtool program.
3522 if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
3523 link_against_libtool_libs=
3526 # If there is no directory component, then add one.
3528 */* | *\\*) . $file ;;
3532 # Check the variables that should have been set.
3533 if test -z "$link_against_libtool_libs"; then
3534 $echo "$modename: invalid libtool wrapper script \`$file'" 1>&2
3539 for lib in $link_against_libtool_libs; do
3540 # Check to see that each library is installed.
3542 if test -f "$lib"; then
3543 # If there is no directory component, then add one.
3545 */* | *\\*) . $lib ;;
3549 libfile="$libdir/`$echo "X$lib" | $Xsed -e 's%^.*/%%g'`"
3550 if test -n "$libdir" && test ! -f "$libfile"; then
3556 if test "$fast_install" = no && test -n "$relink_command"; then
3557 if test "$finalize" = yes && test -z "$run"; then
3559 test -n "$TMPDIR" && tmpdir="$TMPDIR"
3560 tmpdir="$tmpdir/libtool-$$"
3561 if $mkdir -p "$tmpdir" && chmod 700 "$tmpdir"; then :
3563 $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2
3566 outputname="$tmpdir/$file"
3567 # Replace the output file specification.
3568 relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
3570 $show "$relink_command"
3571 if $run eval "$relink_command"; then :
3573 $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
3579 $echo "$modename: warning: cannot relink \`$file'" 1>&2
3582 # Install the binary that we compiled earlier.
3583 file=`$echo "X$file" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
3587 $show "$install_prog$stripme $file $destfile"
3588 $run eval "$install_prog\$stripme \$file \$destfile" || exit $?
3589 test -n "$outputname" && ${rm}r "$tmpdir"
3594 for file in $staticlibs; do
3595 name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
3597 # Set up the ranlib parameters.
3598 oldlib="$destdir/$name"
3600 $show "$install_prog $file $oldlib"
3601 $run eval "$install_prog \$file \$oldlib" || exit $?
3603 # Do each command in the postinstall commands.
3604 eval cmds=\"$old_postinstall_cmds\"
3605 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
3606 for cmd in $cmds; do
3609 $run eval "$cmd" || exit $?
3614 if test -n "$future_libdirs"; then
3615 $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2
3618 if test -n "$current_libdirs"; then
3619 # Maybe just do a dry run.
3620 test -n "$run" && current_libdirs=" -n$current_libdirs"
3621 exec $SHELL $0 --finish$current_libdirs
3628 # libtool finish mode
3630 modename="$modename: finish"
3634 if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
3637 libdirs="$libdirs $dir"
3640 for libdir in $libdirs; do
3641 if test -n "$finish_cmds"; then
3642 # Do each command in the finish commands.
3643 eval cmds=\"$finish_cmds\"
3644 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
3645 for cmd in $cmds; do
3648 $run eval "$cmd" || admincmds="$admincmds
3653 if test -n "$finish_eval"; then
3654 # Do the single finish_eval.
3655 eval cmds=\"$finish_eval\"
3656 $run eval "$cmds" || admincmds="$admincmds
3662 # Exit here if they wanted silent mode.
3663 test "$show" = : && exit 0
3665 echo "----------------------------------------------------------------------"
3666 echo "Libraries have been installed in:"
3667 for libdir in $libdirs; do
3671 echo "If you ever happen to want to link against installed libraries"
3672 echo "in a given directory, LIBDIR, you must either use libtool, and"
3673 echo "specify the full pathname of the library, or use \`-LLIBDIR'"
3674 echo "flag during linking and do at least one of the following:"
3675 if test -n "$shlibpath_var"; then
3676 echo " - add LIBDIR to the \`$shlibpath_var' environment variable"
3677 echo " during execution"
3679 if test -n "$runpath_var"; then
3680 echo " - add LIBDIR to the \`$runpath_var' environment variable"
3681 echo " during linking"
3683 if test -n "$hardcode_libdir_flag_spec"; then
3685 eval flag=\"$hardcode_libdir_flag_spec\"
3687 echo " - use the \`$flag' linker flag"
3689 if test -n "$admincmds"; then
3690 echo " - have your system administrator run these commands:$admincmds"
3692 if test -f /etc/ld.so.conf; then
3693 echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
3696 echo "See any operating system documentation about shared libraries for"
3697 echo "more information, such as the ld(1) and ld.so(8) manual pages."
3698 echo "----------------------------------------------------------------------"
3702 # libtool execute mode
3704 modename="$modename: execute"
3706 # The first argument is the command name.
3708 if test -z "$cmd"; then
3709 $echo "$modename: you must specify a COMMAND" 1>&2
3714 # Handle -dlopen flags immediately.
3715 for file in $execute_dlfiles; do
3716 if test ! -f "$file"; then
3717 $echo "$modename: \`$file' is not a file" 1>&2
3725 # Check to see that this really is a libtool archive.
3726 if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
3728 $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
3733 # Read the libtool library.
3737 # If there is no directory component, then add one.
3739 */* | *\\*) . $file ;;
3743 # Skip this library if it cannot be dlopened.
3744 if test -z "$dlname"; then
3745 # Warn if it was a shared library.
3746 test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'"
3750 dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
3751 test "X$dir" = "X$file" && dir=.
3753 if test -f "$dir/$objdir/$dlname"; then
3756 $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
3762 # Just add the directory containing the .lo file.
3763 dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
3764 test "X$dir" = "X$file" && dir=.
3768 $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2
3773 # Get the absolute pathname.
3774 absdir=`cd "$dir" && pwd`
3775 test -n "$absdir" && dir="$absdir"
3777 # Now add the directory to shlibpath_var.
3778 if eval "test -z \"\$$shlibpath_var\""; then
3779 eval "$shlibpath_var=\"\$dir\""
3781 eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
3785 # This variable tells wrapper scripts just to set shlibpath_var
3786 # rather than running their programs.
3787 libtool_execute_magic="$magic"
3789 # Check if any of the arguments is a wrapper script.
3796 # Do a test to see if this is really a libtool program.
3797 if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
3798 # If there is no directory component, then add one.
3800 */* | *\\*) . $file ;;
3804 # Transform arg to wrapped name.
3805 file="$progdir/$program"
3809 # Quote arguments (to preserve shell metacharacters).
3810 file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"`
3811 args="$args \"$file\""
3814 if test -z "$run"; then
3815 if test -n "$shlibpath_var"; then
3816 # Export the shlibpath_var.
3817 eval "export $shlibpath_var"
3820 # Restore saved enviroment variables
3821 if test "${save_LC_ALL+set}" = set; then
3822 LC_ALL="$save_LC_ALL"; export LC_ALL
3824 if test "${save_LANG+set}" = set; then
3825 LANG="$save_LANG"; export LANG
3828 # Now actually exec the command.
3829 eval "exec \$cmd$args"
3831 $echo "$modename: cannot exec \$cmd$args"
3834 # Display what would be done.
3835 if test -n "$shlibpath_var"; then
3836 eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\""
3837 $echo "export $shlibpath_var"
3844 # libtool uninstall mode
3846 modename="$modename: uninstall"
3853 -*) rm="$rm $arg" ;;
3854 *) files="$files $arg" ;;
3858 if test -z "$rm"; then
3859 $echo "$modename: you must specify an RM program" 1>&2
3864 for file in $files; do
3865 dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
3866 test "X$dir" = "X$file" && dir=.
3867 name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
3873 # Possibly a libtool archive, so verify it.
3874 if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
3877 # Delete the libtool libraries and symlinks.
3878 for n in $library_names; do
3879 rmfiles="$rmfiles $dir/$n"
3881 test -n "$old_library" && rmfiles="$rmfiles $dir/$old_library"
3883 $show "$rm $rmfiles"
3886 if test -n "$library_names"; then
3887 # Do each command in the postuninstall commands.
3888 eval cmds=\"$postuninstall_cmds\"
3889 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
3890 for cmd in $cmds; do
3898 if test -n "$old_library"; then
3899 # Do each command in the old_postuninstall commands.
3900 eval cmds=\"$old_postuninstall_cmds\"
3901 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
3902 for cmd in $cmds; do
3910 # FIXME: should reinstall the best remaining shared library.
3915 if test "$build_old_libs" = yes; then
3916 oldobj=`$echo "X$name" | $Xsed -e "$lo2o"`
3917 rmfiles="$rmfiles $dir/$oldobj"
3919 $show "$rm $rmfiles"
3924 $show "$rm $rmfiles"
3933 $echo "$modename: you must specify a MODE" 1>&2
3934 $echo "$generic_help" 1>&2
3939 $echo "$modename: invalid operation mode \`$mode'" 1>&2
3940 $echo "$generic_help" 1>&2
3942 fi # test -z "$show_help"
3944 # We need to display help for each of the modes.
3947 "Usage: $modename [OPTION]... [MODE-ARG]...
3949 Provide generalized library-building support services.
3951 --config show all configuration variables
3952 --debug enable verbose shell tracing
3953 -n, --dry-run display commands without modifying any files
3954 --features display basic configuration information and exit
3955 --finish same as \`--mode=finish'
3956 --help display this help message and exit
3957 --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS]
3958 --quiet same as \`--silent'
3959 --silent don't print informational messages
3960 --version print version information
3962 MODE must be one of the following:
3964 compile compile a source file into a libtool object
3965 execute automatically set library path, then run a program
3966 finish complete the installation of libtool libraries
3967 install install libraries or executables
3968 link create a library or an executable
3969 uninstall remove libraries from an installed directory
3971 MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for
3972 a more detailed description of MODE."
3978 "Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
3980 Compile a source file into a libtool library object.
3982 This mode accepts the following additional options:
3984 -o OUTPUT-FILE set the output file name to OUTPUT-FILE
3985 -static always build a \`.o' file suitable for static linking
3987 COMPILE-COMMAND is a command to be used in creating a \`standard' object file
3988 from the given SOURCEFILE.
3990 The output file name is determined by removing the directory component from
3991 SOURCEFILE, then substituting the C source code suffix \`.c' with the
3992 library object suffix, \`.lo'."
3997 "Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]...
3999 Automatically set library path, then run a program.
4001 This mode accepts the following additional options:
4003 -dlopen FILE add the directory containing FILE to the library path
4005 This mode sets the library path environment variable according to \`-dlopen'
4008 If any of the ARGS are libtool executable wrappers, then they are translated
4009 into their corresponding uninstalled binary, and any of their required library
4010 directories are added to the library path.
4012 Then, COMMAND is executed, with ARGS as arguments."
4017 "Usage: $modename [OPTION]... --mode=finish [LIBDIR]...
4019 Complete the installation of libtool libraries.
4021 Each LIBDIR is a directory that contains libtool libraries.
4023 The commands that this mode executes may require superuser privileges. Use
4024 the \`--dry-run' option if you just want to see what would be executed."
4029 "Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND...
4031 Install executables or libraries.
4033 INSTALL-COMMAND is the installation command. The first component should be
4034 either the \`install' or \`cp' program.
4036 The rest of the components are interpreted as arguments to that command (only
4037 BSD-compatible install options are recognized)."
4042 "Usage: $modename [OPTION]... --mode=link LINK-COMMAND...
4044 Link object files or libraries together to form another library, or to
4045 create an executable program.
4047 LINK-COMMAND is a command using the C compiler that you would use to create
4048 a program from several object files.
4050 The following components of LINK-COMMAND are treated specially:
4052 -all-static do not do any dynamic linking at all
4053 -avoid-version do not add a version suffix if possible
4054 -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime
4055 -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols
4056 -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
4057 -export-symbols SYMFILE
4058 try to export only the symbols listed in SYMFILE
4059 -export-symbols-regex REGEX
4060 try to export only the symbols matching REGEX
4061 -LLIBDIR search LIBDIR for required installed libraries
4062 -lNAME OUTPUT-FILE requires the installed library libNAME
4063 -module build a library that can dlopened
4064 -no-undefined declare that a library does not refer to external symbols
4065 -o OUTPUT-FILE create OUTPUT-FILE from the specified objects
4066 -release RELEASE specify package release information
4067 -rpath LIBDIR the created library will eventually be installed in LIBDIR
4068 -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries
4069 -static do not do any dynamic linking of libtool libraries
4070 -version-info CURRENT[:REVISION[:AGE]]
4071 specify library version info [each variable defaults to 0]
4073 All other options (arguments beginning with \`-') are ignored.
4075 Every other argument is treated as a filename. Files ending in \`.la' are
4076 treated as uninstalled libtool libraries, other files are standard or library
4079 If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
4080 only library objects (\`.lo' files) may be specified, and \`-rpath' is
4081 required, except when creating a convenience library.
4083 If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
4084 using \`ar' and \`ranlib', or on Windows using \`lib'.
4086 If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
4087 is created, otherwise an executable program is created."
4092 "Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
4094 Remove libraries from an installation directory.
4096 RM is the name of the program to use to delete files associated with each FILE
4097 (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
4100 If FILE is a libtool library, all the files associated with it are deleted.
4101 Otherwise, only FILE itself is deleted using RM."
4105 $echo "$modename: invalid operation mode \`$mode'" 1>&2
4112 $echo "Try \`$modename --help' for more information about other modes."