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%^.*/%%'`
58 TIMESTAMP=" (1.385.2.206 2000/05/27 11:12:27)"
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"
960 # We need an absolute path.
962 [\\/]* | [A-Za-z]:[\\/]*) ;;
964 $echo "$modename: only absolute run-paths are allowed" 1>&2
968 if test "$prev" = rpath; then
971 *) rpath="$rpath $arg" ;;
976 *) xrpath="$xrpath $arg" ;;
983 eval "$prev=\"\$arg\""
994 if test -n "$link_static_flag"; then
995 compile_command="$compile_command $link_static_flag"
996 finalize_command="$finalize_command $link_static_flag"
1002 # FIXME: remove this flag sometime in the future.
1003 $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2
1027 -export-symbols | -export-symbols-regex)
1028 if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
1029 $echo "$modename: not more than one -exported-symbols argument allowed"
1032 if test "X$arg" = "X-export-symbols"; then
1041 dir=`$echo "X$arg" | $Xsed -e 's/^-L//'`
1042 # We need an absolute path.
1044 [\\/]* | [A-Za-z]:[\\/]*) ;;
1046 absdir=`cd "$dir" && pwd`
1047 if test -z "$absdir"; then
1048 $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2
1049 $echo "$modename: passing it literally to the linker, although it might fail" 1>&2
1055 case " $deplibs " in
1057 *) deplibs="$deplibs $arg";;
1059 case " $lib_search_path " in
1061 *) lib_search_path="$lib_search_path $dir";;
1064 *-*-cygwin* | *-*-mingw* | *-*-os2*)
1065 dllsearchdir=`cd "$dir" && pwd || echo "$dir"`
1066 case ":$dllsearchpath:" in
1067 ::) dllsearchpath="$dllsearchdir";;
1068 *":$dllsearchdir:"*) ;;
1069 *) dllsearchpath="$dllsearchpath:$dllsearchdir";;
1076 if test "$arg" = "-lc"; then
1078 *-*-cygwin* | *-*-mingw* | *-*-os2* | *-*-beos* |*-*-freebsd* )
1079 # These systems don't actually have c library (as such)
1083 # Do not include libc due to us having libc/libc_r.
1087 elif test "$arg" = "-lc_r"; then
1090 # Do not include libc_r directly, use -pthread flag.
1094 elif test "$arg" = "-lm"; then
1096 *-*-cygwin* | *-*-beos*)
1097 # These systems don't actually have math library (as such)
1102 deplibs="$deplibs $arg"
1106 deplibs="$deplibs $arg"
1137 dir=`$echo "X$arg" | $Xsed -e 's/^-R//'`
1138 # We need an absolute path.
1140 [\\/]* | [A-Za-z]:[\\/]*) ;;
1142 $echo "$modename: only absolute run-paths are allowed" 1>&2
1148 *) xrpath="$xrpath $dir" ;;
1154 # If we have no pic_flag, then this is the same as -all-static.
1155 if test -z "$pic_flag" && test -n "$link_static_flag"; then
1156 compile_command="$compile_command $link_static_flag"
1157 finalize_command="$finalize_command $link_static_flag"
1172 # Some other compiler flag.
1174 # Unknown arguments in both finalize_command and compile_command need
1175 # to be aesthetically quoted because they are evaled later.
1176 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
1178 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
1184 *.o | *.obj | *.a | *.lib)
1185 # A standard object.
1191 if test "$prev" = dlfiles; then
1192 dlfiles="$dlfiles $arg"
1193 if test "$build_libtool_libs" = yes && test "$dlopen" = yes; then
1197 # If libtool objects are unsupported, then we need to preload.
1202 if test "$prev" = dlprefiles; then
1203 # Preload the old-style object.
1204 dlprefiles="$dlprefiles "`$echo "X$arg" | $Xsed -e "$lo2o"`
1207 libobjs="$libobjs $arg"
1211 # A libtool-controlled library.
1218 # Check to see that this really is a libtool archive.
1219 if (sed -e '2q' $arg | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
1221 $echo "$modename: \`$arg' is not a valid libtool archive" 1>&2
1225 # If the library was installed with an old release of libtool,
1226 # it will not redefine variable installed.
1230 # If there is no directory component, then add one.
1232 */* | *\\*) . $arg ;;
1236 # Get the name of the library we link against.
1238 for l in $old_library $library_names; do
1242 if test -z "$linklib"; then
1243 $echo "$modename: cannot find name of link library for \`$arg'" 1>&2
1247 # Find the relevant object directory and library name.
1248 name=`$echo "X$arg" | $Xsed -e 's%^.*/%%' -e 's/\.la$//' -e 's/^lib//'`
1250 if test "X$installed" = Xyes; then
1253 dir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
1254 if test "X$dir" = "X$arg"; then
1261 if test -n "$dependency_libs"; then
1262 # Extract -R and -L from dependency_libs
1264 for deplib in $dependency_libs; do
1266 -R*) temp_xrpath=`$echo "X$deplib" | $Xsed -e 's/^-R//'`
1267 case " $rpath $xrpath " in
1268 *" $temp_xrpath "*) ;;
1269 *) xrpath="$xrpath $temp_xrpath";;
1271 -L*) case "$compile_command $temp_deplibs " in
1273 *) temp_deplibs="$temp_deplibs $deplib";;
1275 temp_dir=`$echo "X$deplib" | $Xsed -e 's/^-L//'`
1276 case " $lib_search_path " in
1278 *) lib_search_path="$lib_search_path $temp_dir";;
1281 *) temp_deplibs="$temp_deplibs $deplib";;
1284 dependency_libs="$temp_deplibs"
1287 if test -z "$libdir"; then
1288 # It is a libtool convenience library, so add in its objects.
1289 convenience="$convenience $dir/$old_library"
1290 old_convenience="$old_convenience $dir/$old_library"
1291 deplibs="$deplibs$dependency_libs"
1292 compile_command="$compile_command $dir/$old_library$dependency_libs"
1293 finalize_command="$finalize_command $dir/$old_library$dependency_libs"
1297 # This library was specified with -dlopen.
1298 if test "$prev" = dlfiles; then
1299 dlfiles="$dlfiles $arg"
1300 if test -z "$dlname" || test "$dlopen" != yes || test "$build_libtool_libs" = no; then
1301 # If there is no dlname, no dlopen support or we're linking statically,
1302 # we need to preload.
1305 # We should not create a dependency on this library, but we
1306 # may need any libraries it requires.
1307 compile_command="$compile_command$dependency_libs"
1308 finalize_command="$finalize_command$dependency_libs"
1314 # The library was specified with -dlpreopen.
1315 if test "$prev" = dlprefiles; then
1316 # Prefer using a static library (so that no silly _DYNAMIC symbols
1317 # are required to link).
1318 if test -n "$old_library"; then
1319 dlprefiles="$dlprefiles $dir/$old_library"
1321 dlprefiles="$dlprefiles $dir/$linklib"
1326 if test -n "$library_names" &&
1327 { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
1328 link_against_libtool_libs="$link_against_libtool_libs $arg"
1329 if test -n "$shlibpath_var"; then
1330 # Make sure the rpath contains only unique directories.
1331 case "$temp_rpath " in
1333 *) temp_rpath="$temp_rpath $dir" ;;
1337 # We need an absolute path.
1339 [\\/] | [A-Za-z]:[\\/]*) absdir="$dir" ;;
1341 absdir=`cd "$dir" && pwd`
1342 if test -z "$absdir"; then
1343 $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2
1344 $echo "$modename: passing it literally to the linker, although it might fail" 1>&2
1350 # This is the magic to use -rpath.
1351 # Skip directories that are in the system default run-time
1352 # search path, unless they have been requested with -R.
1353 case " $sys_lib_dlsearch_path " in
1356 case "$compile_rpath " in
1358 *) compile_rpath="$compile_rpath $absdir"
1363 case " $sys_lib_dlsearch_path " in
1366 case "$finalize_rpath " in
1368 *) finalize_rpath="$finalize_rpath $libdir"
1374 case "$hardcode_action" in
1375 immediate | unsupported)
1376 if test "$hardcode_direct" = no; then
1377 compile_command="$compile_command $dir/$linklib"
1378 deplibs="$deplibs $dir/$linklib"
1380 *-*-cygwin* | *-*-mingw* | *-*-os2*)
1381 dllsearchdir=`cd "$dir" && pwd || echo "$dir"`
1382 if test -n "$dllsearchpath"; then
1383 dllsearchpath="$dllsearchpath:$dllsearchdir"
1385 dllsearchpath="$dllsearchdir"
1389 elif test "$hardcode_minus_L" = no; then
1392 compile_shlibpath="$compile_shlibpath$dir:"
1395 case "$compile_command " in
1397 *) compile_command="$compile_command -L$dir";;
1399 compile_command="$compile_command -l$name"
1400 deplibs="$deplibs -L$dir -l$name"
1401 elif test "$hardcode_shlibpath_var" = no; then
1402 case ":$compile_shlibpath:" in
1404 *) compile_shlibpath="$compile_shlibpath$dir:";;
1406 compile_command="$compile_command -l$name"
1407 deplibs="$deplibs -l$name"
1414 if test "$hardcode_direct" = yes; then
1415 compile_command="$compile_command $absdir/$linklib"
1416 deplibs="$deplibs $absdir/$linklib"
1417 elif test "$hardcode_minus_L" = yes; then
1418 case "$compile_command " in
1420 *) compile_command="$compile_command -L$absdir";;
1422 compile_command="$compile_command -l$name"
1423 deplibs="$deplibs -L$absdir -l$name"
1424 elif test "$hardcode_shlibpath_var" = yes; then
1425 case ":$compile_shlibpath:" in
1427 *) compile_shlibpath="$compile_shlibpath$absdir:";;
1429 compile_command="$compile_command -l$name"
1430 deplibs="$deplibs -l$name"
1441 if test "$lib_linked" != yes; then
1442 $echo "$modename: configuration error: unsupported hardcode properties"
1446 # Finalize command for both is simple: just hardcode it.
1447 if test "$hardcode_direct" = yes; then
1448 finalize_command="$finalize_command $libdir/$linklib"
1449 elif test "$hardcode_minus_L" = yes; then
1450 case "$finalize_command " in
1452 *) finalize_command="$finalize_command -L$libdir";;
1454 finalize_command="$finalize_command -l$name"
1455 elif test "$hardcode_shlibpath_var" = yes; then
1456 case ":$finalize_shlibpath:" in
1458 *) finalize_shlibpath="$finalize_shlibpath$libdir:";;
1460 finalize_command="$finalize_command -l$name"
1462 # We cannot seem to hardcode it, guess we'll fake it.
1463 case "$finalize_command " in
1465 *) finalize_command="$finalize_command -L$libdir";;
1467 finalize_command="$finalize_command -l$name"
1470 # Transform directly to old archives if we don't build new libraries.
1471 if test -n "$pic_flag" && test -z "$old_library"; then
1472 $echo "$modename: cannot find static library for \`$arg'" 1>&2
1476 # Here we assume that one of hardcode_direct or hardcode_minus_L
1477 # is not unsupported. This is valid on all known static and
1479 if test "$hardcode_direct" != unsupported; then
1480 test -n "$old_library" && linklib="$old_library"
1481 compile_command="$compile_command $dir/$linklib"
1482 finalize_command="$finalize_command $dir/$linklib"
1484 case "$compile_command " in
1486 *) compile_command="$compile_command -L$dir";;
1488 compile_command="$compile_command -l$name"
1489 case "$finalize_command " in
1491 *) finalize_command="$finalize_command -L$dir";;
1493 finalize_command="$finalize_command -l$name"
1497 # Add in any libraries that this one depends upon.
1498 compile_command="$compile_command$dependency_libs"
1499 finalize_command="$finalize_command$dependency_libs"
1503 # Some other compiler argument.
1505 # Unknown arguments in both finalize_command and compile_command need
1506 # to be aesthetically quoted because they are evaled later.
1507 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
1509 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
1516 # Now actually substitute the argument into the commands.
1517 if test -n "$arg"; then
1518 compile_command="$compile_command $arg"
1519 finalize_command="$finalize_command $arg"
1523 if test -n "$prev"; then
1524 $echo "$modename: the \`$prevarg' option requires an argument" 1>&2
1529 if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
1530 eval arg=\"$export_dynamic_flag_spec\"
1531 compile_command="$compile_command $arg"
1532 finalize_command="$finalize_command $arg"
1536 # calculate the name of the file, without its directory
1537 outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'`
1538 libobjs_save="$libobjs"
1542 $echo "$modename: you must specify an output file" 1>&2
1548 if test -n "$link_against_libtool_libs"; then
1549 $echo "$modename: error: cannot link libtool libraries into archives" 1>&2
1553 if test -n "$deplibs"; then
1554 $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2
1557 if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
1558 $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2
1561 if test -n "$rpath"; then
1562 $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2
1565 if test -n "$xrpath"; then
1566 $echo "$modename: warning: \`-R' is ignored for archives" 1>&2
1569 if test -n "$vinfo"; then
1570 $echo "$modename: warning: \`-version-info' is ignored for archives" 1>&2
1573 if test -n "$release"; then
1574 $echo "$modename: warning: \`-release' is ignored for archives" 1>&2
1577 if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
1578 $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2
1581 # Now set the variables for building old libraries.
1582 build_libtool_libs=no
1587 # Make sure we only generate libraries of the form `libNAME.la'.
1588 case "$outputname" in
1590 name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
1591 eval libname=\"$libname_spec\"
1594 if test "$module" = no; then
1595 $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2
1599 if test "$need_lib_prefix" != no; then
1600 # Add the "lib" prefix for modules if required
1601 name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
1602 eval libname=\"$libname_spec\"
1604 libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
1609 output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
1610 if test "X$output_objdir" = "X$output"; then
1611 output_objdir="$objdir"
1613 output_objdir="$output_objdir/$objdir"
1616 if test -n "$objs"; then
1617 $echo "$modename: cannot build libtool library \`$output' from non-libtool objects:$objs" 2>&1
1621 # How the heck are we supposed to write a wrapper for a shared library?
1622 if test -n "$link_against_libtool_libs"; then
1623 $echo "$modename: error: cannot link shared libraries into libtool libraries" 1>&2
1627 if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
1628 $echo "$modename: warning: \`-dlopen' is ignored for libtool libraries" 1>&2
1632 if test $# -gt 2; then
1633 $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2
1638 if test -z "$rpath"; then
1639 if test "$build_libtool_libs" = yes; then
1640 # Building a libtool convenience library.
1642 oldlibs="$output_objdir/$libname.$libext $oldlibs"
1643 build_libtool_libs=convenience
1646 dependency_libs="$deplibs"
1648 if test -n "$vinfo"; then
1649 $echo "$modename: warning: \`-version-info' is ignored for convenience libraries" 1>&2
1652 if test -n "$release"; then
1653 $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2
1657 # Parse the version information argument.
1658 IFS="${IFS= }"; save_ifs="$IFS"; IFS=':'
1659 set dummy $vinfo 0 0 0
1662 if test -n "$8"; then
1663 $echo "$modename: too many parameters to \`-version-info'" 1>&2
1672 # Check that each of the things are valid numbers.
1674 0 | [1-9] | [1-9][0-9]*) ;;
1676 $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2
1677 $echo "$modename: \`$vinfo' is not valid version information" 1>&2
1683 0 | [1-9] | [1-9][0-9]*) ;;
1685 $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2
1686 $echo "$modename: \`$vinfo' is not valid version information" 1>&2
1692 0 | [1-9] | [1-9][0-9]*) ;;
1694 $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2
1695 $echo "$modename: \`$vinfo' is not valid version information" 1>&2
1700 if test $age -gt $current; then
1701 $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2
1702 $echo "$modename: \`$vinfo' is not valid version information" 1>&2
1706 # Calculate the version variables.
1710 case "$version_type" in
1714 major=`expr $current - $age + 1`
1715 versuffix="$major.$revision"
1716 verstring="sgi$major.$revision"
1718 # Add in all the interfaces that we are compatible with.
1720 while test $loop != 0; do
1721 iface=`expr $revision - $loop`
1722 loop=`expr $loop - 1`
1723 verstring="sgi$major.$iface:$verstring"
1728 major=.`expr $current - $age`
1729 versuffix="$major.$age.$revision"
1733 major=`expr $current - $age`
1734 versuffix=".$current.$age.$revision"
1735 verstring="$current.$age.$revision"
1737 # Add in all the interfaces that we are compatible with.
1739 while test $loop != 0; do
1740 iface=`expr $current - $loop`
1741 loop=`expr $loop - 1`
1742 verstring="$verstring:${iface}.0"
1745 # Make executables depend on our current version.
1746 verstring="$verstring:${current}.0"
1751 versuffix=".$current.$revision"
1756 versuffix=".$current.$revision";
1761 versuffix=".$current";
1765 # Like Linux, but with '-' rather than '.', since we only
1766 # want one extension on Windows 95.
1767 major=`expr $current - $age`
1768 versuffix="-$major-$age-$revision"
1772 $echo "$modename: unknown library version type \`$version_type'" 1>&2
1773 echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
1778 # Clear the version info if we defaulted, and they specified a release.
1779 if test -z "$vinfo" && test -n "$release"; then
1782 if test "$need_version" = no; then
1789 # Remove version info from name if versioning should be avoided
1790 if test "$avoid_version" = yes && test "$need_version" = no; then
1796 # Check to see if the archive will have undefined symbols.
1797 if test "$allow_undefined" = yes; then
1798 if test "$allow_undefined_flag" = unsupported; then
1799 $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2
1800 build_libtool_libs=no
1804 # Don't allow undefined symbols.
1805 allow_undefined_flag="$no_undefined_flag"
1808 dependency_libs="$deplibs"
1810 *-*-cygwin* | *-*-mingw* | *-*-os2* | *-*-beos* | *-*-freebsd* )
1811 # these systems don't actually have a c library (as such)!
1814 # rhapsody is a little odd...
1815 deplibs="$deplibs -framework System"
1818 # do not include libc due to us having libc/libc_r.
1821 # Add libc to deplibs on all other systems.
1822 deplibs="$deplibs -lc"
1827 # Create the output directory, or remove our outputs if we need to.
1828 if test -d $output_objdir; then
1829 $show "${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.*"
1830 $run ${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.*
1832 $show "$mkdir $output_objdir"
1833 $run $mkdir $output_objdir
1835 if test $status -ne 0 && test ! -d $output_objdir; then
1840 # Now set the variables for building old libraries.
1841 if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
1842 oldlibs="$oldlibs $output_objdir/$libname.$libext"
1844 # Transform .lo files to .o files.
1845 oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
1848 if test "$build_libtool_libs" = yes; then
1849 # Transform deplibs into only deplibs that can be linked in shared.
1851 libname_save=$libname
1852 release_save=$release
1853 versuffix_save=$versuffix
1855 # I'm not sure if I'm treating the release correctly. I think
1856 # release should show up in the -l (ie -lgmp5) so we don't want to
1857 # add it in twice. Is that correct?
1863 case "$deplibs_check_method" in
1865 # Don't check for shared/static. Everything works.
1866 # This might be a little naive. We might want to check
1867 # whether the library exists or not. But this is on
1868 # osf3 & osf4 and I'm not really sure... Just
1869 # implementing what was already the behaviour.
1873 # This code stresses the "libraries are programs" paradigm to its
1874 # limits. Maybe even breaks it. We compile a program, linking it
1875 # against the deplibs as a proxy for the library. Then we can check
1876 # whether they linked in statically or dynamically with ldd.
1878 cat > conftest.c <<EOF
1879 int main() { return 0; }
1882 $CC -o conftest conftest.c $deplibs
1883 if test $? -eq 0 ; then
1884 ldd_output=`ldd conftest`
1885 for i in $deplibs; do
1886 name="`expr $i : '-l\(.*\)'`"
1887 # If $name is empty we are operating on a -L argument.
1888 if test "$name" != "" ; then
1889 libname=`eval \\$echo \"$libname_spec\"`
1890 deplib_matches=`eval \\$echo \"$library_names_spec\"`
1891 set dummy $deplib_matches
1893 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
1894 newdeplibs="$newdeplibs $i"
1898 echo "*** Warning: This library needs some functionality provided by $i."
1899 echo "*** I have the capability to make that library automatically link in when"
1900 echo "*** you link to this library. But I can only do this if you have a"
1901 echo "*** shared version of the library, which you do not appear to have."
1904 newdeplibs="$newdeplibs $i"
1908 # Error occured in the first compile. Let's try to salvage the situation:
1909 # Compile a seperate program for each library.
1910 for i in $deplibs; do
1911 name="`expr $i : '-l\(.*\)'`"
1912 # If $name is empty we are operating on a -L argument.
1913 if test "$name" != "" ; then
1915 $CC -o conftest conftest.c $i
1917 if test $? -eq 0 ; then
1918 ldd_output=`ldd conftest`
1919 libname=`eval \\$echo \"$libname_spec\"`
1920 deplib_matches=`eval \\$echo \"$library_names_spec\"`
1921 set dummy $deplib_matches
1923 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
1924 newdeplibs="$newdeplibs $i"
1928 echo "*** Warning: This library needs some functionality provided by $i."
1929 echo "*** I have the capability to make that library automatically link in when"
1930 echo "*** you link to this library. But I can only do this if you have a"
1931 echo "*** shared version of the library, which you do not appear to have."
1936 echo "*** Warning! Library $i is needed by this library but I was not able to"
1937 echo "*** make it link in! You will probably need to install it or some"
1938 echo "*** library that it depends on before this library will be fully"
1939 echo "*** functional. Installing it before continuing would be even better."
1942 newdeplibs="$newdeplibs $i"
1948 set dummy $deplibs_check_method
1949 file_magic_regex="`expr \"$deplibs_check_method\" : \"$2 \(.*\)\"`"
1950 for a_deplib in $deplibs; do
1951 name="`expr $a_deplib : '-l\(.*\)'`"
1952 # If $name is empty we are operating on a -L argument.
1953 if test "$name" != "" ; then
1954 libname=`eval \\$echo \"$libname_spec\"`
1955 for i in $lib_search_path; do
1956 potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
1957 for potent_lib in $potential_libs; do
1958 # Follow soft links.
1959 if ls -lLd "$potent_lib" 2>/dev/null \
1960 | grep " -> " >/dev/null; then
1963 # The statement above tries to avoid entering an
1964 # endless loop below, in case of cyclic links.
1965 # We might still enter an endless loop, since a link
1966 # loop can be closed while we follow links,
1968 potlib="$potent_lib"
1969 while test -h "$potlib" 2>/dev/null; do
1970 potliblink=`ls -ld $potlib | sed 's/.* -> //'`
1971 case "$potliblink" in
1972 [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
1973 *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
1976 if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \
1978 | egrep "$file_magic_regex" > /dev/null; then
1979 newdeplibs="$newdeplibs $a_deplib"
1985 if test -n "$a_deplib" ; then
1988 echo "*** Warning: This library needs some functionality provided by $a_deplib."
1989 echo "*** I have the capability to make that library automatically link in when"
1990 echo "*** you link to this library. But I can only do this if you have a"
1991 echo "*** shared version of the library, which you do not appear to have."
1994 # Add a -L argument.
1995 newdeplibs="$newdeplibs $a_deplib"
1997 done # Gone through all deplibs.
2001 if $echo "X $deplibs" | $Xsed -e 's/ -lc$//' \
2002 -e 's/ -[LR][^ ]*//g' -e 's/[ ]//g' |
2003 grep . >/dev/null; then
2005 if test "X$deplibs_check_method" = "Xnone"; then
2006 echo "*** Warning: inter-library dependencies are not supported in this platform."
2008 echo "*** Warning: inter-library dependencies are not known to be supported."
2010 echo "*** All declared inter-library dependencies are being dropped."
2015 versuffix=$versuffix_save
2017 release=$release_save
2018 libname=$libname_save
2021 if test "$droppeddeps" = yes; then
2022 if test "$module" = yes; then
2024 echo "*** Warning: libtool could not satisfy all declared inter-library"
2025 echo "*** dependencies of module $libname. Therefore, libtool will create"
2026 echo "*** a static module, that should work as long as the dlopening"
2027 echo "*** application is linked with the -dlopen flag."
2028 if test -z "$global_symbol_pipe"; then
2030 echo "*** However, this would only work if libtool was able to extract symbol"
2031 echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
2032 echo "*** not find such a program. So, this module is probably useless."
2033 echo "*** \`nm' from GNU binutils and a full rebuild may help."
2035 if test "$build_old_libs" = no; then
2036 oldlibs="$output_objdir/$libname.$libext"
2037 build_libtool_libs=module
2040 build_libtool_libs=no
2043 echo "*** The inter-library dependencies that have been dropped here will be"
2044 echo "*** automatically added whenever a program is linked with this library"
2045 echo "*** or is declared to -dlopen it."
2048 # Done checking deplibs!
2052 # All the library-specific variables (install_libdir is set above).
2057 # Test again, we may have decided not to build it any more
2058 if test "$build_libtool_libs" = yes; then
2059 # Get the real and link names of the library.
2060 eval library_names=\"$library_names_spec\"
2061 set dummy $library_names
2065 if test -n "$soname_spec"; then
2066 eval soname=\"$soname_spec\"
2071 lib="$output_objdir/$realname"
2074 linknames="$linknames $link"
2077 # Ensure that we have .o objects for linkers which dislike .lo
2078 # (e.g. aix) in case we are running --disable-static
2079 for obj in $libobjs; do
2080 xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
2081 if test "X$xdir" = "X$obj"; then
2086 baseobj=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
2087 oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"`
2088 if test ! -f $xdir/$oldobj; then
2089 $show "(cd $xdir && ${LN_S} $baseobj $oldobj)"
2090 $run eval '(cd $xdir && ${LN_S} $baseobj $oldobj)' || exit $?
2094 # Use standard objects if they are pic
2095 test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
2097 # Prepare the list of exported symbols
2098 if test -z "$export_symbols"; then
2099 if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
2100 $show "generating symbol list for \`$libname.la'"
2101 export_symbols="$output_objdir/$libname.exp"
2102 $run $rm $export_symbols
2103 eval cmds=\"$export_symbols_cmds\"
2104 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
2105 for cmd in $cmds; do
2108 $run eval "$cmd" || exit $?
2111 if test -n "$export_symbols_regex"; then
2112 $show "egrep -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\""
2113 $run eval 'egrep -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
2114 $show "$mv \"${export_symbols}T\" \"$export_symbols\""
2115 $run eval '$mv "${export_symbols}T" "$export_symbols"'
2120 if test -n "$export_symbols" && test -n "$include_expsyms"; then
2121 $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"'
2124 if test -n "$convenience"; then
2125 if test -n "$whole_archive_flag_spec"; then
2126 eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
2128 gentop="$output_objdir/${outputname}x"
2129 $show "${rm}r $gentop"
2130 $run ${rm}r "$gentop"
2131 $show "mkdir $gentop"
2132 $run mkdir "$gentop"
2134 if test $status -ne 0 && test ! -d "$gentop"; then
2137 generated="$generated $gentop"
2139 for xlib in $convenience; do
2140 # Extract the objects.
2142 [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
2143 *) xabs=`pwd`"/$xlib" ;;
2145 xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
2146 xdir="$gentop/$xlib"
2148 $show "${rm}r $xdir"
2153 if test $status -ne 0 && test ! -d "$xdir"; then
2156 $show "(cd $xdir && $AR x $xabs)"
2157 $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
2159 libobjs="$libobjs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP`
2164 if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
2165 eval flag=\"$thread_safe_flag_spec\"
2166 linkopts="$linkopts $flag"
2169 # Do each of the archive commands.
2170 if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
2171 eval cmds=\"$archive_expsym_cmds\"
2173 eval cmds=\"$archive_cmds\"
2175 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
2176 for cmd in $cmds; do
2179 $run eval "$cmd" || exit $?
2183 # Create links to the real library.
2184 for linkname in $linknames; do
2185 if test "$realname" != "$linkname"; then
2186 $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)"
2187 $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $?
2191 # If -module or -export-dynamic was specified, set the dlname.
2192 if test "$module" = yes || test "$export_dynamic" = yes; then
2193 # On all known operating systems, these are identical.
2200 if test -n "$link_against_libtool_libs"; then
2201 $echo "$modename: error: cannot link libtool libraries into objects" 1>&2
2205 if test -n "$deplibs"; then
2206 $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2
2209 if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
2210 $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2
2213 if test -n "$rpath"; then
2214 $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2
2217 if test -n "$xrpath"; then
2218 $echo "$modename: warning: \`-R' is ignored for objects" 1>&2
2221 if test -n "$vinfo"; then
2222 $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2
2225 if test -n "$release"; then
2226 $echo "$modename: warning: \`-release' is ignored for objects" 1>&2
2231 if test -n "$objs"; then
2232 $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2
2236 obj=`$echo "X$output" | $Xsed -e "$lo2o"`
2244 # Delete the old objects.
2245 $run $rm $obj $libobj
2247 # Objects from convenience libraries. This assumes
2248 # single-version convenience libraries. Whenever we create
2249 # different ones for PIC/non-PIC, this we'll have to duplicate
2253 # reload_cmds runs $LD directly, so let us get rid of
2254 # -Wl from whole_archive_flag_spec
2257 if test -n "$convenience"; then
2258 if test -n "$whole_archive_flag_spec"; then
2259 eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\"
2261 gentop="$output_objdir/${obj}x"
2262 $show "${rm}r $gentop"
2263 $run ${rm}r "$gentop"
2264 $show "mkdir $gentop"
2265 $run mkdir "$gentop"
2267 if test $status -ne 0 && test ! -d "$gentop"; then
2270 generated="$generated $gentop"
2272 for xlib in $convenience; do
2273 # Extract the objects.
2275 [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
2276 *) xabs=`pwd`"/$xlib" ;;
2278 xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
2279 xdir="$gentop/$xlib"
2281 $show "${rm}r $xdir"
2286 if test $status -ne 0 && test ! -d "$xdir"; then
2289 $show "(cd $xdir && $AR x $xabs)"
2290 $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
2292 reload_conv_objs="$reload_objs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP`
2297 # Create the old-style object.
2298 reload_objs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs"
2301 eval cmds=\"$reload_cmds\"
2302 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
2303 for cmd in $cmds; do
2306 $run eval "$cmd" || exit $?
2310 # Exit if we aren't doing a library object file.
2311 if test -z "$libobj"; then
2312 if test -n "$gentop"; then
2313 $show "${rm}r $gentop"
2320 if test "$build_libtool_libs" != yes; then
2321 if test -n "$gentop"; then
2322 $show "${rm}r $gentop"
2326 # Create an invalid libtool object if no PIC, so that we don't
2327 # accidentally link it into a program.
2328 $show "echo timestamp > $libobj"
2329 $run eval "echo timestamp > $libobj" || exit $?
2333 if test -n "$pic_flag"; then
2334 # Only do commands if we really have different PIC objects.
2335 reload_objs="$libobjs $reload_conv_objs"
2337 eval cmds=\"$reload_cmds\"
2338 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
2339 for cmd in $cmds; do
2342 $run eval "$cmd" || exit $?
2346 # Just create a symlink.
2349 xdir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'`
2350 if test "X$xdir" = "X$libobj"; then
2355 baseobj=`$echo "X$libobj" | $Xsed -e 's%^.*/%%'`
2356 oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"`
2357 $show "(cd $xdir && $LN_S $oldobj $baseobj)"
2358 $run eval '(cd $xdir && $LN_S $oldobj $baseobj)' || exit $?
2361 if test -n "$gentop"; then
2362 $show "${rm}r $gentop"
2369 # Anything else should be a program.
2371 if test -n "$vinfo"; then
2372 $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2
2375 if test -n "$release"; then
2376 $echo "$modename: warning: \`-release' is ignored for programs" 1>&2
2379 if test "$preload" = yes; then
2380 if test "$dlopen" = unknown && test "$dlopen_self" = unknown &&
2381 test "$dlopen_self_static" = unknown; then
2382 $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support."
2386 if test -n "$rpath$xrpath"; then
2387 # If the user specified any rpath flags, then add them.
2388 for libdir in $rpath $xrpath; do
2389 # This is the magic to use -rpath.
2390 case "$compile_rpath " in
2392 *) compile_rpath="$compile_rpath $libdir" ;;
2394 case "$finalize_rpath " in
2396 *) finalize_rpath="$finalize_rpath $libdir" ;;
2401 # Now hardcode the library paths
2404 for libdir in $compile_rpath $finalize_rpath; do
2405 if test -n "$hardcode_libdir_flag_spec"; then
2406 if test -n "$hardcode_libdir_separator"; then
2407 if test -z "$hardcode_libdirs"; then
2408 hardcode_libdirs="$libdir"
2410 # Just accumulate the unique libdirs.
2411 case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in
2412 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
2415 hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
2420 eval flag=\"$hardcode_libdir_flag_spec\"
2421 rpath="$rpath $flag"
2423 elif test -n "$runpath_var"; then
2424 case "$perm_rpath " in
2426 *) perm_rpath="$perm_rpath $libdir" ;;
2430 # Substitute the hardcoded libdirs into the rpath.
2431 if test -n "$hardcode_libdir_separator" &&
2432 test -n "$hardcode_libdirs"; then
2433 libdir="$hardcode_libdirs"
2434 eval rpath=\" $hardcode_libdir_flag_spec\"
2436 compile_rpath="$rpath"
2440 for libdir in $finalize_rpath; do
2441 if test -n "$hardcode_libdir_flag_spec"; then
2442 if test -n "$hardcode_libdir_separator"; then
2443 if test -z "$hardcode_libdirs"; then
2444 hardcode_libdirs="$libdir"
2446 # Just accumulate the unique libdirs.
2447 case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in
2448 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
2451 hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
2456 eval flag=\"$hardcode_libdir_flag_spec\"
2457 rpath="$rpath $flag"
2459 elif test -n "$runpath_var"; then
2460 case "$finalize_perm_rpath " in
2462 *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
2466 # Substitute the hardcoded libdirs into the rpath.
2467 if test -n "$hardcode_libdir_separator" &&
2468 test -n "$hardcode_libdirs"; then
2469 libdir="$hardcode_libdirs"
2470 eval rpath=\" $hardcode_libdir_flag_spec\"
2472 finalize_rpath="$rpath"
2474 output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
2475 if test "X$output_objdir" = "X$output"; then
2476 output_objdir="$objdir"
2478 output_objdir="$output_objdir/$objdir"
2481 # Create the binary in the object directory, then wrap it.
2482 if test ! -d $output_objdir; then
2483 $show "$mkdir $output_objdir"
2484 $run $mkdir $output_objdir
2486 if test $status -ne 0 && test ! -d $output_objdir; then
2491 if test -n "$libobjs" && test "$build_old_libs" = yes; then
2492 # Transform all the library objects into standard objects.
2493 compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
2494 finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
2498 if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
2499 if test -n "$NM" && test -n "$global_symbol_pipe"; then
2500 dlsyms="${outputname}S.c"
2502 $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2
2506 if test -n "$dlsyms"; then
2510 # Discover the nlist of each of the dlfiles.
2511 nlist="$output_objdir/${outputname}.nm"
2513 $show "$rm $nlist ${nlist}S ${nlist}T"
2514 $run $rm "$nlist" "${nlist}S" "${nlist}T"
2516 # Parse the name list into a source file.
2517 $show "creating $output_objdir/$dlsyms"
2519 test -z "$run" && $echo > "$output_objdir/$dlsyms" "\
2520 /* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */
2521 /* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */
2527 /* Prevent the only kind of declaration conflicts we can make. */
2528 #define lt_preloaded_symbols some_other_symbol
2530 /* External symbol declarations for the compiler. */\
2533 if test "$dlself" = yes; then
2534 $show "generating symbol list for \`$output'"
2536 test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist"
2538 # Add our own program objects to the symbol list.
2539 progfiles=`$echo "X$objs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
2540 for arg in $progfiles; do
2541 $show "extracting global C symbols from \`$arg'"
2542 $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
2545 if test -n "$exclude_expsyms"; then
2546 $run eval 'egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
2547 $run eval '$mv "$nlist"T "$nlist"'
2550 if test -n "$export_symbols_regex"; then
2551 $run eval 'egrep -e "$export_symbols_regex" "$nlist" > "$nlist"T'
2552 $run eval '$mv "$nlist"T "$nlist"'
2555 # Prepare the list of exported symbols
2556 if test -z "$export_symbols"; then
2557 export_symbols="$output_objdir/$output.exp"
2558 $run $rm $export_symbols
2559 $run eval "sed -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
2561 $run eval "sed -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"'
2562 $run eval 'grep -f "$output_objdir/$output.exp" < "$nlist" > "$nlist"T'
2563 $run eval 'mv "$nlist"T "$nlist"'
2567 for arg in $dlprefiles; do
2568 $show "extracting global C symbols from \`$arg'"
2569 name=`echo "$arg" | sed -e 's%^.*/%%'`
2570 $run eval 'echo ": $name " >> "$nlist"'
2571 $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
2574 if test -z "$run"; then
2575 # Make sure we have at least an empty file.
2576 test -f "$nlist" || : > "$nlist"
2578 if test -n "$exclude_expsyms"; then
2579 egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
2580 $mv "$nlist"T "$nlist"
2583 # Try sorting and uniquifying the output.
2584 if grep -v "^: " < "$nlist" | sort +2 | uniq > "$nlist"S; then
2587 grep -v "^: " < "$nlist" > "$nlist"S
2590 if test -f "$nlist"S; then
2591 eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"'
2593 echo '/* NONE */' >> "$output_objdir/$dlsyms"
2596 $echo >> "$output_objdir/$dlsyms" "\
2598 #undef lt_preloaded_symbols
2600 #if defined (__STDC__) && __STDC__
2601 # define lt_ptr_t void *
2603 # define lt_ptr_t char *
2607 /* The mapping between symbol names and symbols. */
2612 lt_preloaded_symbols[] =
2616 sed -n -e 's/^: \([^ ]*\) $/ {\"\1\", (lt_ptr_t) 0},/p' \
2617 -e 's/^. \([^ ]*\) \([^ ]*\)$/ {"\2", (lt_ptr_t) \&\2},/p' \
2618 < "$nlist" >> "$output_objdir/$dlsyms"
2620 $echo >> "$output_objdir/$dlsyms" "\
2624 /* This works around a problem in FreeBSD linker */
2625 #ifdef FREEBSD_WORKAROUND
2626 static const void *lt_preloaded_setup() {
2627 return lt_preloaded_symbols;
2637 pic_flag_for_symtable=
2639 # compiling the symbol table file with pic_flag works around
2640 # a FreeBSD bug that causes programs to crash when -lm is
2641 # linked before any other PIC object. But we must not use
2642 # pic_flag when linking with -static. The problem exists in
2643 # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
2644 *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
2645 case "$compile_command " in
2647 *) pic_flag_for_symtable=" $pic_flag -DPIC -DFREEBSD_WORKAROUND";;
2650 case "$compile_command " in
2652 *) pic_flag_for_symtable=" $pic_flag -DPIC";;
2656 # Now compile the dynamic symbol file.
2657 $show "(cd $output_objdir && $CC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")"
2658 $run eval '(cd $output_objdir && $CC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $?
2660 # Clean up the generated files.
2661 $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T"
2662 $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T"
2664 # Transform the symbol file into the correct name.
2665 compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
2666 finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
2669 $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
2674 # We keep going just in case the user didn't refer to
2675 # lt_preloaded_symbols. The linker will fail if global_symbol_pipe
2676 # really was required.
2678 # Nullify the symbol file.
2679 compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
2680 finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
2683 if test -z "$link_against_libtool_libs" || test "$build_libtool_libs" != yes; then
2684 # Replace the output file specification.
2685 compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
2686 link_command="$compile_command$compile_rpath"
2688 # We have no uninstalled library dependencies, so finalize right now.
2689 $show "$link_command"
2690 $run eval "$link_command"
2693 # Delete the generated files.
2694 if test -n "$dlsyms"; then
2695 $show "$rm $output_objdir/${outputname}S.${objext}"
2696 $run $rm "$output_objdir/${outputname}S.${objext}"
2702 if test -n "$shlibpath_var"; then
2703 # We should set the shlibpath_var
2705 for dir in $temp_rpath; do
2707 [\\/]* | [A-Za-z]:[\\/]*)
2712 # Relative path: add a thisdir entry.
2713 rpath="$rpath\$thisdir/$dir:"
2720 if test -n "$compile_shlibpath$finalize_shlibpath"; then
2721 compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
2723 if test -n "$finalize_shlibpath"; then
2724 finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
2729 if test -n "$runpath_var"; then
2730 if test -n "$perm_rpath"; then
2731 # We should set the runpath_var.
2733 for dir in $perm_rpath; do
2736 compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
2738 if test -n "$finalize_perm_rpath"; then
2739 # We should set the runpath_var.
2741 for dir in $finalize_perm_rpath; do
2744 finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
2748 if test "$hardcode_action" = relink; then
2749 # Fast installation is not supported
2750 link_command="$compile_var$compile_command$compile_rpath"
2751 relink_command="$finalize_var$finalize_command$finalize_rpath"
2753 $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2
2754 $echo "$modename: \`$output' will be relinked during installation" 1>&2
2756 if test "$fast_install" != no; then
2757 link_command="$finalize_var$compile_command$finalize_rpath"
2758 if test "$fast_install" = yes; then
2759 relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
2761 # fast_install is set to needless
2765 link_command="$compile_var$compile_command$compile_rpath"
2766 relink_command="$finalize_var$finalize_command$finalize_rpath"
2770 # Replace the output file specification.
2771 link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
2773 # Delete the old output files.
2774 $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname
2776 $show "$link_command"
2777 $run eval "$link_command" || exit $?
2779 # Now create the wrapper script.
2780 $show "creating $output"
2782 # Quote the relink command for shipping.
2783 if test -n "$relink_command"; then
2784 relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
2787 # Quote $echo for shipping.
2788 if test "X$echo" = "X$SHELL $0 --fallback-echo"; then
2790 [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $0 --fallback-echo";;
2791 *) qecho="$SHELL `pwd`/$0 --fallback-echo";;
2793 qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"`
2795 qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"`
2798 # Only actually do things if our run command is non-null.
2799 if test -z "$run"; then
2800 # win32 will think the script is a binary if it has
2801 # a .exe suffix, so we strip it off here.
2803 *.exe) output=`echo $output|sed 's,.exe$,,'` ;;
2806 trap "$rm $output; exit 1" 1 2 15
2811 # $output - temporary wrapper script for $objdir/$outputname
2812 # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
2814 # The $output program cannot be directly executed until all the libtool
2815 # libraries that it depends on are installed.
2817 # This wrapper script should never be moved out of the build directory.
2818 # If it is, it will not operate correctly.
2820 # Sed substitution that helps us do robust quoting. It backslashifies
2821 # metacharacters that are still active within double-quoted strings.
2822 Xsed='sed -e 1s/^X//'
2823 sed_quote_subst='$sed_quote_subst'
2825 # The HP-UX ksh and POSIX shell print the target directory to stdout
2827 if test \"\${CDPATH+set}\" = set; then CDPATH=:; export CDPATH; fi
2829 relink_command=\"$relink_command\"
2831 # This environment variable determines our operation mode.
2832 if test \"\$libtool_install_magic\" = \"$magic\"; then
2833 # install mode needs the following variable:
2834 link_against_libtool_libs='$link_against_libtool_libs'
2836 # When we are sourced in execute mode, \$file and \$echo are already set.
2837 if test \"\$libtool_execute_magic\" != \"$magic\"; then
2840 # Make sure echo works.
2841 if test \"X\$1\" = X--no-reexec; then
2842 # Discard the --no-reexec flag, and continue.
2844 elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then
2845 # Yippee, \$echo works!
2848 # Restart under the correct shell, and then maybe \$echo will work.
2849 exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
2855 # Find the directory that this script lives in.
2856 thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
2857 test \"x\$thisdir\" = \"x\$file\" && thisdir=.
2859 # Follow symbolic links until we get to the real thisdir.
2860 file=\`ls -ld \"\$file\" | sed -n 's/.*-> //p'\`
2861 while test -n \"\$file\"; do
2862 destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
2864 # If there was a directory component, then change thisdir.
2865 if test \"x\$destdir\" != \"x\$file\"; then
2866 case \"\$destdir\" in
2867 [\\/]* | [A-Za-z]:[\\/]*) thisdir=\"\$destdir\" ;;
2868 *) thisdir=\"\$thisdir/\$destdir\" ;;
2872 file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
2873 file=\`ls -ld \"\$thisdir/\$file\" | sed -n 's/.*-> //p'\`
2876 # Try to get the absolute directory name.
2877 absdir=\`cd \"\$thisdir\" && pwd\`
2878 test -n \"\$absdir\" && thisdir=\"\$absdir\"
2881 if test "$fast_install" = yes; then
2883 program=lt-'$outputname'
2884 progdir=\"\$thisdir/$objdir\"
2886 if test ! -f \"\$progdir/\$program\" || \\
2887 { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | sed 1q\`; \\
2888 test \"X\$file\" != \"X\$progdir/\$program\"; }; then
2890 file=\"\$\$-\$program\"
2892 if test ! -d \"\$progdir\"; then
2893 $mkdir \"\$progdir\"
2895 $rm \"\$progdir/\$file\"
2900 # relink executable if necessary
2901 if test -n \"\$relink_command\"; then
2902 if (cd \"\$thisdir\" && eval \$relink_command); then :
2904 $rm \"\$progdir/\$file\"
2909 $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
2910 { $rm \"\$progdir/\$program\";
2911 $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; }
2912 $rm \"\$progdir/\$file\"
2916 program='$outputname'
2917 progdir=\"\$thisdir/$objdir\"
2923 if test -f \"\$progdir/\$program\"; then"
2925 # Export our shlibpath_var if we have one.
2926 if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
2928 # Add our own library path to $shlibpath_var
2929 $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
2931 # Some systems cannot cope with colon-terminated $shlibpath_var
2932 # The second colon is a workaround for a bug in BeOS R4 sed
2933 $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
2935 export $shlibpath_var
2939 # fixup the dll searchpath if we need to.
2940 if test -n "$dllsearchpath"; then
2942 # Add the dll search path components to the executable PATH
2943 PATH=$dllsearchpath:\$PATH
2948 if test \"\$libtool_execute_magic\" != \"$magic\"; then
2949 # Run the actual program with our arguments.
2952 # win32 systems need to use the prog path for dll
2956 exec \$progdir/\$program \${1+\"\$@\"}
2960 # Backslashes separate directories on plain windows
2961 *-*-mingw | *-*-os2*)
2963 exec \$progdir\\\\\$program \${1+\"\$@\"}
2969 # Export the path to the program.
2970 PATH=\"\$progdir:\$PATH\"
2973 exec \$program \${1+\"\$@\"}
2978 \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\"
2982 # The program doesn't exist.
2983 \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2
2984 \$echo \"This script is just a wrapper for \$program.\" 1>&2
2985 echo \"See the $PACKAGE documentation for more information.\" 1>&2
2996 # See if we need to build an old-fashioned archive.
2997 for oldlib in $oldlibs; do
2999 if test "$build_libtool_libs" = convenience; then
3000 oldobjs="$libobjs_save"
3001 addlibs="$convenience"
3002 build_libtool_libs=no
3004 if test "$build_libtool_libs" = module; then
3005 oldobjs="$libobjs_save"
3006 build_libtool_libs=no
3008 oldobjs="$objs "`$echo "X$libobjs_save" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`
3010 addlibs="$old_convenience"
3013 if test -n "$addlibs"; then
3014 gentop="$output_objdir/${outputname}x"
3015 $show "${rm}r $gentop"
3016 $run ${rm}r "$gentop"
3017 $show "mkdir $gentop"
3018 $run mkdir "$gentop"
3020 if test $status -ne 0 && test ! -d "$gentop"; then
3023 generated="$generated $gentop"
3025 # Add in members from convenience archives.
3026 for xlib in $addlibs; do
3027 # Extract the objects.
3029 [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
3030 *) xabs=`pwd`"/$xlib" ;;
3032 xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
3033 xdir="$gentop/$xlib"
3035 $show "${rm}r $xdir"
3040 if test $status -ne 0 && test ! -d "$xdir"; then
3043 $show "(cd $xdir && $AR x $xabs)"
3044 $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
3046 oldobjs="$oldobjs "`find $xdir -name \*.${objext} -print -o -name \*.lo -print | $NL2SP`
3050 # Do each command in the archive commands.
3051 if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
3052 eval cmds=\"$old_archive_from_new_cmds\"
3054 # Ensure that we have .o objects in place in case we decided
3055 # not to build a shared library, and have fallen back to building
3056 # static libs even though --disable-static was passed!
3057 for oldobj in $oldobjs; do
3058 if test ! -f $oldobj; then
3059 xdir=`$echo "X$oldobj" | $Xsed -e 's%/[^/]*$%%'`
3060 if test "X$xdir" = "X$oldobj"; then
3065 baseobj=`$echo "X$oldobj" | $Xsed -e 's%^.*/%%'`
3066 obj=`$echo "X$baseobj" | $Xsed -e "$o2lo"`
3067 $show "(cd $xdir && ${LN_S} $obj $baseobj)"
3068 $run eval '(cd $xdir && ${LN_S} $obj $baseobj)' || exit $?
3072 eval cmds=\"$old_archive_cmds\"
3074 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
3075 for cmd in $cmds; do
3078 $run eval "$cmd" || exit $?
3083 if test -n "$generated"; then
3084 $show "${rm}r$generated"
3085 $run ${rm}r$generated
3088 # Now create the libtool archive.
3092 test "$build_old_libs" = yes && old_library="$libname.$libext"
3093 $show "creating $output"
3095 if test -n "$xrpath"; then
3097 for libdir in $xrpath; do
3098 temp_xrpath="$temp_xrpath -R$libdir"
3100 dependency_libs="$temp_xrpath $dependency_libs"
3103 # Only create the output if not a dry run.
3104 if test -z "$run"; then
3105 for installed in no yes; do
3106 if test "$installed" = yes; then
3107 if test -z "$install_libdir"; then
3110 output="$output_objdir/$outputname"i
3114 # $outputname - a libtool library file
3115 # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
3117 # Please DO NOT delete this file!
3118 # It is necessary for linking the library.
3120 # The name that we can dlopen(3).
3123 # Names of this library.
3124 library_names='$library_names'
3126 # The name of the static archive.
3127 old_library='$old_library'
3129 # Libraries that this one depends upon.
3130 dependency_libs='$dependency_libs'
3132 # Version information for $libname.
3137 # Is this an already installed library?
3138 installed=$installed
3140 # Directory that this library needs to be installed in:
3141 libdir='$install_libdir'\
3146 # Do a symbolic link so that the libtool archive can be found in
3147 # LD_LIBRARY_PATH before the program is installed.
3148 $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)"
3149 $run eval "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" || exit $?
3155 # libtool install mode
3157 modename="$modename: install"
3159 # There may be an optional sh(1) argument at the beginning of
3160 # install_prog (especially on Windows NT).
3161 if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh; then
3162 # Aesthetically quote it.
3163 arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
3165 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
3169 install_prog="$arg "
3177 # The real first argument should be the name of the installation program.
3178 # Aesthetically quote it.
3179 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
3181 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
3185 install_prog="$install_prog$arg"
3187 # We need to accept at least all the BSD install flags.
3197 if test -n "$dest"; then
3198 files="$files $dest"
3216 # If the previous option needed an argument, then skip it.
3217 if test -n "$prev"; then
3226 # Aesthetically quote the argument.
3227 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
3229 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
3233 install_prog="$install_prog $arg"
3236 if test -z "$install_prog"; then
3237 $echo "$modename: you must specify an install program" 1>&2
3242 if test -n "$prev"; then
3243 $echo "$modename: the \`$prev' option requires an argument" 1>&2
3248 if test -z "$files"; then
3249 if test -z "$dest"; then
3250 $echo "$modename: no file or destination specified" 1>&2
3252 $echo "$modename: you must specify a destination" 1>&2
3258 # Strip any trailing slash from the destination.
3259 dest=`$echo "X$dest" | $Xsed -e 's%/$%%'`
3261 # Check to see that the destination is a directory.
3262 test -d "$dest" && isdir=yes
3263 if test "$isdir" = yes; then
3267 destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'`
3268 test "X$destdir" = "X$dest" && destdir=.
3269 destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'`
3271 # Not a directory, so check to see that there is only one file specified.
3273 if test $# -gt 2; then
3274 $echo "$modename: \`$dest' is not a directory" 1>&2
3280 [\\/]* | [A-Za-z]:[\\/]*) ;;
3282 for file in $files; do
3286 $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2
3295 # This variable tells wrapper scripts just to set variables rather
3296 # than running their programs.
3297 libtool_install_magic="$magic"
3302 for file in $files; do
3304 # Do each installation.
3307 # Do the static libraries later.
3308 staticlibs="$staticlibs $file"
3312 # Check to see that this really is a libtool archive.
3313 if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
3315 $echo "$modename: \`$file' is not a valid libtool archive" 1>&2
3322 # If there is no directory component, then add one.
3324 */* | *\\*) . $file ;;
3328 # Add the libdir to current_libdirs if it is the destination.
3329 if test "X$destdir" = "X$libdir"; then
3330 case "$current_libdirs " in
3332 *) current_libdirs="$current_libdirs $libdir" ;;
3335 # Note the libdir as a future libdir.
3336 case "$future_libdirs " in
3338 *) future_libdirs="$future_libdirs $libdir" ;;
3342 dir="`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/"
3343 test "X$dir" = "X$file/" && dir=
3346 # See the names of the shared library.
3347 set dummy $library_names
3348 if test -n "$2"; then
3353 # Install the shared library and build the symlinks.
3354 $show "$install_prog $dir/$realname $destdir/$realname"
3355 $run eval "$install_prog $dir/$realname $destdir/$realname" || exit $?
3357 if test $# -gt 0; then
3358 # Delete the old symlinks, and create new ones.
3361 if test "$linkname" != "$realname"; then
3362 $show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
3363 $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
3368 # Do each command in the postinstall commands.
3369 lib="$destdir/$realname"
3370 eval cmds=\"$postinstall_cmds\"
3371 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
3372 for cmd in $cmds; do
3375 $run eval "$cmd" || exit $?
3380 # Install the pseudo-library for information purposes.
3381 name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
3382 instname="$dir/$name"i
3383 $show "$install_prog $instname $destdir/$name"
3384 $run eval "$install_prog $instname $destdir/$name" || exit $?
3386 # Maybe install the static library, too.
3387 test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
3391 # Install (i.e. copy) a libtool object.
3393 # Figure out destination file name, if it wasn't already specified.
3394 if test -n "$destname"; then
3395 destfile="$destdir/$destname"
3397 destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
3398 destfile="$destdir/$destfile"
3401 # Deduce the name of the destination old-style object file.
3404 staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"`
3407 staticdest="$destfile"
3411 $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2
3417 # Install the libtool object if requested.
3418 if test -n "$destfile"; then
3419 $show "$install_prog $file $destfile"
3420 $run eval "$install_prog $file $destfile" || exit $?
3423 # Install the old object if enabled.
3424 if test "$build_old_libs" = yes; then
3425 # Deduce the name of the old-style object file.
3426 staticobj=`$echo "X$file" | $Xsed -e "$lo2o"`
3428 $show "$install_prog $staticobj $staticdest"
3429 $run eval "$install_prog \$staticobj \$staticdest" || exit $?
3435 # Figure out destination file name, if it wasn't already specified.
3436 if test -n "$destname"; then
3437 destfile="$destdir/$destname"
3439 destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
3440 destfile="$destdir/$destfile"
3443 # Do a test to see if this is really a libtool program.
3444 if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
3445 link_against_libtool_libs=
3448 # If there is no directory component, then add one.
3450 */* | *\\*) . $file ;;
3454 # Check the variables that should have been set.
3455 if test -z "$link_against_libtool_libs"; then
3456 $echo "$modename: invalid libtool wrapper script \`$file'" 1>&2
3461 for lib in $link_against_libtool_libs; do
3462 # Check to see that each library is installed.
3464 if test -f "$lib"; then
3465 # If there is no directory component, then add one.
3467 */* | *\\*) . $lib ;;
3471 libfile="$libdir/`$echo "X$lib" | $Xsed -e 's%^.*/%%g'`"
3472 if test -n "$libdir" && test ! -f "$libfile"; then
3473 $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2
3479 if test "$fast_install" = no && test -n "$relink_command"; then
3480 if test "$finalize" = yes && test -z "$run"; then
3482 test -n "$TMPDIR" && tmpdir="$TMPDIR"
3483 tmpdir="$tmpdir/libtool-$$"
3484 if $mkdir -p "$tmpdir" && chmod 700 "$tmpdir"; then :
3486 $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2
3489 outputname="$tmpdir/$file"
3490 # Replace the output file specification.
3491 relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
3493 $show "$relink_command"
3494 if $run eval "$relink_command"; then :
3496 $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
3502 $echo "$modename: warning: cannot relink \`$file'" 1>&2
3505 # Install the binary that we compiled earlier.
3506 file=`$echo "X$file" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
3510 $show "$install_prog$stripme $file $destfile"
3511 $run eval "$install_prog\$stripme \$file \$destfile" || exit $?
3512 test -n "$outputname" && ${rm}r "$tmpdir"
3517 for file in $staticlibs; do
3518 name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
3520 # Set up the ranlib parameters.
3521 oldlib="$destdir/$name"
3523 $show "$install_prog $file $oldlib"
3524 $run eval "$install_prog \$file \$oldlib" || exit $?
3526 # Do each command in the postinstall commands.
3527 eval cmds=\"$old_postinstall_cmds\"
3528 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
3529 for cmd in $cmds; do
3532 $run eval "$cmd" || exit $?
3537 if test -n "$future_libdirs"; then
3538 $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2
3541 if test -n "$current_libdirs"; then
3542 # Maybe just do a dry run.
3543 test -n "$run" && current_libdirs=" -n$current_libdirs"
3544 exec $SHELL $0 --finish$current_libdirs
3551 # libtool finish mode
3553 modename="$modename: finish"
3557 if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
3560 libdirs="$libdirs $dir"
3563 for libdir in $libdirs; do
3564 if test -n "$finish_cmds"; then
3565 # Do each command in the finish commands.
3566 eval cmds=\"$finish_cmds\"
3567 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
3568 for cmd in $cmds; do
3571 $run eval "$cmd" || admincmds="$admincmds
3576 if test -n "$finish_eval"; then
3577 # Do the single finish_eval.
3578 eval cmds=\"$finish_eval\"
3579 $run eval "$cmds" || admincmds="$admincmds
3585 # Exit here if they wanted silent mode.
3586 test "$show" = : && exit 0
3588 echo "----------------------------------------------------------------------"
3589 echo "Libraries have been installed in:"
3590 for libdir in $libdirs; do
3594 echo "If you ever happen to want to link against installed libraries"
3595 echo "in a given directory, LIBDIR, you must either use libtool, and"
3596 echo "specify the full pathname of the library, or use \`-LLIBDIR'"
3597 echo "flag during linking and do at least one of the following:"
3598 if test -n "$shlibpath_var"; then
3599 echo " - add LIBDIR to the \`$shlibpath_var' environment variable"
3600 echo " during execution"
3602 if test -n "$runpath_var"; then
3603 echo " - add LIBDIR to the \`$runpath_var' environment variable"
3604 echo " during linking"
3606 if test -n "$hardcode_libdir_flag_spec"; then
3608 eval flag=\"$hardcode_libdir_flag_spec\"
3610 echo " - use the \`$flag' linker flag"
3612 if test -n "$admincmds"; then
3613 echo " - have your system administrator run these commands:$admincmds"
3615 if test -f /etc/ld.so.conf; then
3616 echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
3619 echo "See any operating system documentation about shared libraries for"
3620 echo "more information, such as the ld(1) and ld.so(8) manual pages."
3621 echo "----------------------------------------------------------------------"
3625 # libtool execute mode
3627 modename="$modename: execute"
3629 # The first argument is the command name.
3631 if test -z "$cmd"; then
3632 $echo "$modename: you must specify a COMMAND" 1>&2
3637 # Handle -dlopen flags immediately.
3638 for file in $execute_dlfiles; do
3639 if test ! -f "$file"; then
3640 $echo "$modename: \`$file' is not a file" 1>&2
3648 # Check to see that this really is a libtool archive.
3649 if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
3651 $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
3656 # Read the libtool library.
3660 # If there is no directory component, then add one.
3662 */* | *\\*) . $file ;;
3666 # Skip this library if it cannot be dlopened.
3667 if test -z "$dlname"; then
3668 # Warn if it was a shared library.
3669 test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'"
3673 dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
3674 test "X$dir" = "X$file" && dir=.
3676 if test -f "$dir/$objdir/$dlname"; then
3679 $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
3685 # Just add the directory containing the .lo file.
3686 dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
3687 test "X$dir" = "X$file" && dir=.
3691 $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2
3696 # Get the absolute pathname.
3697 absdir=`cd "$dir" && pwd`
3698 test -n "$absdir" && dir="$absdir"
3700 # Now add the directory to shlibpath_var.
3701 if eval "test -z \"\$$shlibpath_var\""; then
3702 eval "$shlibpath_var=\"\$dir\""
3704 eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
3708 # This variable tells wrapper scripts just to set shlibpath_var
3709 # rather than running their programs.
3710 libtool_execute_magic="$magic"
3712 # Check if any of the arguments is a wrapper script.
3719 # Do a test to see if this is really a libtool program.
3720 if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
3721 # If there is no directory component, then add one.
3723 */* | *\\*) . $file ;;
3727 # Transform arg to wrapped name.
3728 file="$progdir/$program"
3732 # Quote arguments (to preserve shell metacharacters).
3733 file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"`
3734 args="$args \"$file\""
3737 if test -z "$run"; then
3738 if test -n "$shlibpath_var"; then
3739 # Export the shlibpath_var.
3740 eval "export $shlibpath_var"
3743 # Restore saved enviroment variables
3744 if test "${save_LC_ALL+set}" = set; then
3745 LC_ALL="$save_LC_ALL"; export LC_ALL
3747 if test "${save_LANG+set}" = set; then
3748 LANG="$save_LANG"; export LANG
3751 # Now actually exec the command.
3752 eval "exec \$cmd$args"
3754 $echo "$modename: cannot exec \$cmd$args"
3757 # Display what would be done.
3758 if test -n "$shlibpath_var"; then
3759 eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\""
3760 $echo "export $shlibpath_var"
3767 # libtool uninstall mode
3769 modename="$modename: uninstall"
3776 -*) rm="$rm $arg" ;;
3777 *) files="$files $arg" ;;
3781 if test -z "$rm"; then
3782 $echo "$modename: you must specify an RM program" 1>&2
3787 for file in $files; do
3788 dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
3789 test "X$dir" = "X$file" && dir=.
3790 name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
3796 # Possibly a libtool archive, so verify it.
3797 if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
3800 # Delete the libtool libraries and symlinks.
3801 for n in $library_names; do
3802 rmfiles="$rmfiles $dir/$n"
3804 test -n "$old_library" && rmfiles="$rmfiles $dir/$old_library"
3806 $show "$rm $rmfiles"
3809 if test -n "$library_names"; then
3810 # Do each command in the postuninstall commands.
3811 eval cmds=\"$postuninstall_cmds\"
3812 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
3813 for cmd in $cmds; do
3821 if test -n "$old_library"; then
3822 # Do each command in the old_postuninstall commands.
3823 eval cmds=\"$old_postuninstall_cmds\"
3824 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
3825 for cmd in $cmds; do
3833 # FIXME: should reinstall the best remaining shared library.
3838 if test "$build_old_libs" = yes; then
3839 oldobj=`$echo "X$name" | $Xsed -e "$lo2o"`
3840 rmfiles="$rmfiles $dir/$oldobj"
3842 $show "$rm $rmfiles"
3847 $show "$rm $rmfiles"
3856 $echo "$modename: you must specify a MODE" 1>&2
3857 $echo "$generic_help" 1>&2
3862 $echo "$modename: invalid operation mode \`$mode'" 1>&2
3863 $echo "$generic_help" 1>&2
3865 fi # test -z "$show_help"
3867 # We need to display help for each of the modes.
3870 "Usage: $modename [OPTION]... [MODE-ARG]...
3872 Provide generalized library-building support services.
3874 --config show all configuration variables
3875 --debug enable verbose shell tracing
3876 -n, --dry-run display commands without modifying any files
3877 --features display basic configuration information and exit
3878 --finish same as \`--mode=finish'
3879 --help display this help message and exit
3880 --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS]
3881 --quiet same as \`--silent'
3882 --silent don't print informational messages
3883 --version print version information
3885 MODE must be one of the following:
3887 compile compile a source file into a libtool object
3888 execute automatically set library path, then run a program
3889 finish complete the installation of libtool libraries
3890 install install libraries or executables
3891 link create a library or an executable
3892 uninstall remove libraries from an installed directory
3894 MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for
3895 a more detailed description of MODE."
3901 "Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
3903 Compile a source file into a libtool library object.
3905 This mode accepts the following additional options:
3907 -o OUTPUT-FILE set the output file name to OUTPUT-FILE
3908 -static always build a \`.o' file suitable for static linking
3910 COMPILE-COMMAND is a command to be used in creating a \`standard' object file
3911 from the given SOURCEFILE.
3913 The output file name is determined by removing the directory component from
3914 SOURCEFILE, then substituting the C source code suffix \`.c' with the
3915 library object suffix, \`.lo'."
3920 "Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]...
3922 Automatically set library path, then run a program.
3924 This mode accepts the following additional options:
3926 -dlopen FILE add the directory containing FILE to the library path
3928 This mode sets the library path environment variable according to \`-dlopen'
3931 If any of the ARGS are libtool executable wrappers, then they are translated
3932 into their corresponding uninstalled binary, and any of their required library
3933 directories are added to the library path.
3935 Then, COMMAND is executed, with ARGS as arguments."
3940 "Usage: $modename [OPTION]... --mode=finish [LIBDIR]...
3942 Complete the installation of libtool libraries.
3944 Each LIBDIR is a directory that contains libtool libraries.
3946 The commands that this mode executes may require superuser privileges. Use
3947 the \`--dry-run' option if you just want to see what would be executed."
3952 "Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND...
3954 Install executables or libraries.
3956 INSTALL-COMMAND is the installation command. The first component should be
3957 either the \`install' or \`cp' program.
3959 The rest of the components are interpreted as arguments to that command (only
3960 BSD-compatible install options are recognized)."
3965 "Usage: $modename [OPTION]... --mode=link LINK-COMMAND...
3967 Link object files or libraries together to form another library, or to
3968 create an executable program.
3970 LINK-COMMAND is a command using the C compiler that you would use to create
3971 a program from several object files.
3973 The following components of LINK-COMMAND are treated specially:
3975 -all-static do not do any dynamic linking at all
3976 -avoid-version do not add a version suffix if possible
3977 -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime
3978 -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols
3979 -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
3980 -export-symbols SYMFILE
3981 try to export only the symbols listed in SYMFILE
3982 -export-symbols-regex REGEX
3983 try to export only the symbols matching REGEX
3984 -LLIBDIR search LIBDIR for required installed libraries
3985 -lNAME OUTPUT-FILE requires the installed library libNAME
3986 -module build a library that can dlopened
3987 -no-undefined declare that a library does not refer to external symbols
3988 -o OUTPUT-FILE create OUTPUT-FILE from the specified objects
3989 -release RELEASE specify package release information
3990 -rpath LIBDIR the created library will eventually be installed in LIBDIR
3991 -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries
3992 -static do not do any dynamic linking of libtool libraries
3993 -version-info CURRENT[:REVISION[:AGE]]
3994 specify library version info [each variable defaults to 0]
3996 All other options (arguments beginning with \`-') are ignored.
3998 Every other argument is treated as a filename. Files ending in \`.la' are
3999 treated as uninstalled libtool libraries, other files are standard or library
4002 If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
4003 only library objects (\`.lo' files) may be specified, and \`-rpath' is
4004 required, except when creating a convenience library.
4006 If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
4007 using \`ar' and \`ranlib', or on Windows using \`lib'.
4009 If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
4010 is created, otherwise an executable program is created."
4015 "Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
4017 Remove libraries from an installation directory.
4019 RM is the name of the program to use to delete files associated with each FILE
4020 (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
4023 If FILE is a libtool library, all the files associated with it are deleted.
4024 Otherwise, only FILE itself is deleted using RM."
4028 $echo "$modename: invalid operation mode \`$mode'" 1>&2
4035 $echo "Try \`$modename --help' for more information about other modes."