1 # ltmain.sh - Provide generalized library-building support services.
2 # NOTE: Changing this file will not affect anything until you rerun ltconfig.
4 # Copyright (C) 1996-1999 Free Software Foundation, Inc.
5 # Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
7 # This program is free software; you can redistribute it and/or modify
8 # it under the terms of the GNU General Public License as published by
9 # the Free Software Foundation; either version 2 of the License, or
10 # (at your option) any later version.
12 # This program is distributed in the hope that it will be useful, but
13 # WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 # General Public License for more details.
17 # You should have received a copy of the GNU General Public License
18 # along with this program; if not, write to the Free Software
19 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
21 # As a special exception to the GNU General Public License, if you
22 # distribute this file as part of a program that contains a
23 # configuration script generated by Autoconf, you may include it under
24 # the same distribution terms that you use for the rest of that program.
26 # Check that we have a working $echo.
27 if test "X$1" = X--no-reexec; then
28 # Discard the --no-reexec flag, and continue.
30 elif test "X$1" = X--fallback-echo; then
31 # Avoid inline document here, it may be left over
33 elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
34 # Yippee, $echo works!
37 # Restart under the correct shell, and then maybe $echo will work.
38 exec $SHELL "$0" --no-reexec ${1+"$@"}
41 if test "X$1" = X--fallback-echo; then
42 # used as fallback echo
50 # The name of this program.
51 progname=`$echo "$0" | sed 's%^.*/%%'`
57 VERSION=1.3.4-freebsd-ports
58 TIMESTAMP=" (1.385.2.196 1999/12/07 21:47:57)"
61 help="Try \`$progname --help' for more information."
62 magic="%%%MAGIC variable%%%"
67 # Sed substitution that helps us do robust quoting. It backslashifies
68 # metacharacters that are still active within double-quoted strings.
70 sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
72 NL2SP='tr \015\012 \040\040'
75 # Only set LANG and LC_ALL to C if already set.
76 # These must not be set unconditionally because not all systems understand
77 # e.g. LANG=C (notably SCO).
78 # We save the old values to restore during execute mode.
79 if test "${LC_ALL+set}" = set; then
80 save_LC_ALL="$LC_ALL"; LC_ALL=C; export LC_ALL
82 if test "${LANG+set}" = set; then
83 save_LANG="$LANG"; LANG=C; export LANG
86 if test "$LTCONFIG_VERSION" != "$VERSION"; then
87 echo "$modename: ltconfig version \`$LTCONFIG_VERSION' does not match $PROGRAM version \`$VERSION'" 1>&2
88 echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
92 if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
93 echo "$modename: not configured to build any kind of library" 1>&2
94 echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
107 lo2o="s/\\.lo\$/.${objext}/"
108 o2lo="s/\\.${objext}\$/.lo/"
110 # Parse our command line options once, thoroughly.
117 -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;;
121 # If the previous option needs an argument, assign it.
122 if test -n "$prev"; then
125 eval "$prev=\"\$$prev \$arg\""
137 # Have we seen a non-optional argument yet?
144 echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP"
149 sed -e '1,/^### BEGIN LIBTOOL CONFIG/d' -e '/^### END LIBTOOL CONFIG/,$d' $0
154 echo "$progname: enabling shell trace mode"
164 if test "$build_libtool_libs" = yes; then
165 echo "enable shared libraries"
167 echo "disable shared libraries"
169 if test "$build_old_libs" = yes; then
170 echo "enable static libraries"
172 echo "disable static libraries"
177 --finish) mode="finish" ;;
179 --mode) prevopt="--mode" prev=mode ;;
180 --mode=*) mode="$optarg" ;;
192 $echo "$modename: unrecognized option \`$arg'" 1>&2
204 if test -n "$prevopt"; then
205 $echo "$modename: option \`$prevopt' requires an argument" 1>&2
210 if test -z "$show_help"; then
212 # Infer the operation mode.
213 if test -z "$mode"; then
215 *cc | *++ | gcc* | *-gcc*)
227 *db | *dbx | *strace | *truss)
237 # If we have no mode, but dlfiles were specified, then do execute mode.
238 test -n "$execute_dlfiles" && mode=execute
240 # Just use the default operation mode.
241 if test -z "$mode"; then
242 if test -n "$nonopt"; then
243 $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2
245 $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2
252 # Only execute mode is allowed to have -dlopen flags.
253 if test -n "$execute_dlfiles" && test "$mode" != execute; then
254 $echo "$modename: unrecognized option \`-dlopen'" 1>&2
259 # Change the help message to a mode-specific one.
261 help="Try \`$modename --help --mode=$mode' for more information."
263 # These modes are in order of execution frequency so that they run quickly.
265 # libtool compile mode
267 modename="$modename: compile"
268 # Get the compilation command and the source file.
277 # Accept any command-line options.
280 if test "$user_target" != "no"; then
281 $echo "$modename: you cannot specify \`-o' more than once" 1>&2
293 case "$user_target" in
295 # The next one is the -o target name
300 # We got the output file
307 # Accept the current argument as the source file.
311 # Aesthetically quote the previous argument.
313 # Backslashify any backslashes, double quotes, and dollar signs.
314 # These are the only characters that are still specially
315 # interpreted inside of double-quoted scrings.
316 lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"`
318 # Double-quote args containing other shell metacharacters.
319 # Many Bourne shells cannot handle close brackets correctly in scan
320 # sets, so we specify it separately.
322 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
323 lastarg="\"$lastarg\""
327 # Add the previous argument to base_compile.
328 if test -z "$base_compile"; then
329 base_compile="$lastarg"
331 base_compile="$base_compile $lastarg"
335 case "$user_target" in
339 # Get the name of the library object.
340 libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'`
343 $echo "$modename: you must specify a target with \`-o'" 1>&2
348 # Recognize several different file suffixes.
349 # If the user specifies -o file.o, it is replaced with file.lo
364 libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
367 *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;;
369 $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2
374 if test -z "$base_compile"; then
375 $echo "$modename: you must specify a compilation command" 1>&2
380 # Delete any leftover library objects.
381 if test "$build_old_libs" = yes; then
382 removelist="$obj $libobj"
388 trap "$run $rm $removelist; exit 1" 1 2 15
390 # Calculate the filename of the output object if compiler does
391 # not support -o with -c
392 if test "$compiler_c_o" = no; then
393 output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\..*$%%'`.${objext}
394 lockfile="$output_obj.lock"
395 removelist="$removelist $output_obj $lockfile"
396 trap "$run $rm $removelist; exit 1" 1 2 15
402 # Lock this critical section if it is needed
403 # We use this script file to make the link, it avoids creating a new file
404 if test "$need_locks" = yes; then
405 until ln "$0" "$lockfile" 2>/dev/null; do
406 $show "Waiting for $lockfile to be removed"
409 elif test "$need_locks" = warn; then
410 if test -f "$lockfile"; then
412 *** ERROR, $lockfile exists and contains:
413 `cat $lockfile 2>/dev/null`
415 This indicates that another process is trying to use the same
416 temporary object file, and libtool could not work around it because
417 your compiler does not support \`-c' and \`-o' together. If you
418 repeat this compilation, it may succeed, by chance, but you had better
419 avoid parallel builds (make -j) in this platform, or get a better
425 echo $srcfile > "$lockfile"
428 if test -n "$fix_srcfile_path"; then
429 eval srcfile=\"$fix_srcfile_path\"
432 # Only build a PIC object if we are building libtool libraries.
433 if test "$build_libtool_libs" = yes; then
434 # Without this assignment, base_compile gets emptied.
435 fbsd_hideous_sh_bug=$base_compile
437 # All platforms use -DPIC, to notify preprocessed assembler code.
438 command="$base_compile $srcfile $pic_flag -DPIC"
439 if test "$build_old_libs" = yes; then
441 dir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'`
442 if test "X$dir" = "X$libobj"; then
447 libobj="$dir/"`$echo "X$libobj" | $Xsed -e 's%^.*/%%'`
449 if test -d "$dir"; then
456 if test $status -ne 0 && test ! -d $dir; then
461 if test "$compiler_o_lo" = yes; then
463 command="$command -o $output_obj"
464 elif test "$compiler_c_o" = yes; then
466 command="$command -o $output_obj"
469 $run $rm "$output_obj"
471 if $run eval "$command"; then :
473 test -n "$output_obj" && $run $rm $removelist
477 if test "$need_locks" = warn &&
478 test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then
480 *** ERROR, $lockfile contains:
481 `cat $lockfile 2>/dev/null`
483 but it should contain:
486 This indicates that another process is trying to use the same
487 temporary object file, and libtool could not work around it because
488 your compiler does not support \`-c' and \`-o' together. If you
489 repeat this compilation, it may succeed, by chance, but you had better
490 avoid parallel builds (make -j) in this platform, or get a better
497 # Just move the object if needed, then go on to compile the next one
498 if test x"$output_obj" != x"$libobj"; then
499 $show "$mv $output_obj $libobj"
500 if $run $mv $output_obj $libobj; then :
508 # If we have no pic_flag, then copy the object into place and finish.
509 if test -z "$pic_flag" && test "$build_old_libs" = yes; then
510 # Rename the .lo from within objdir to obj
511 if test -f $obj; then
516 $show "$mv $libobj $obj"
517 if $run $mv $libobj $obj; then :
524 xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
525 if test "X$xdir" = "X$obj"; then
530 baseobj=`$echo "X$obj" | $Xsed -e "s%.*/%%"`
531 libobj=`$echo "X$baseobj" | $Xsed -e "$o2lo"`
532 # Now arrange that obj and lo_libobj become the same file
533 $show "(cd $xdir && $LN_S $baseobj $libobj)"
534 if $run eval '(cd $xdir && $LN_S $baseobj $libobj)'; then
543 # Allow error messages only from the first compilation.
544 suppress_output=' >/dev/null 2>&1'
547 # Only build a position-dependent object if we build old libraries.
548 if test "$build_old_libs" = yes; then
549 command="$base_compile $srcfile"
550 if test "$compiler_c_o" = yes; then
551 command="$command -o $obj"
555 # Suppress compiler output if we already did a PIC compilation.
556 command="$command$suppress_output"
557 $run $rm "$output_obj"
559 if $run eval "$command"; then :
565 if test "$need_locks" = warn &&
566 test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then
568 *** ERROR, $lockfile contains:
569 `cat $lockfile 2>/dev/null`
571 but it should contain:
574 This indicates that another process is trying to use the same
575 temporary object file, and libtool could not work around it because
576 your compiler does not support \`-c' and \`-o' together. If you
577 repeat this compilation, it may succeed, by chance, but you had better
578 avoid parallel builds (make -j) in this platform, or get a better
585 # Just move the object if needed
586 if test x"$output_obj" != x"$obj"; then
587 $show "$mv $output_obj $obj"
588 if $run $mv $output_obj $obj; then :
596 # Create an invalid libtool object if no PIC, so that we do not
597 # accidentally link it into a program.
598 if test "$build_libtool_libs" != yes; then
599 $show "echo timestamp > $libobj"
600 $run eval "echo timestamp > \$libobj" || exit $?
602 # Move the .lo from within objdir
603 $show "$mv $libobj $lo_libobj"
604 if $run $mv $libobj $lo_libobj; then :
613 # Unlock the critical section if it was locked
614 if test "$need_locks" != no; then
623 modename="$modename: link"
625 *-*-cygwin* | *-*-mingw* | *-*-os2*)
626 # It is impossible to link a dll without this setting, and
627 # we shouldn't force the makefile maintainer to figure out
628 # which system we are compiling for in order to pass an extra
629 # flag for every libtool invokation.
632 # FIXME: Unfortunately, there are problems with the above when trying
633 # to make a dll which has undefined symbols, in which case not
634 # even a static library is built. For now, we need to specify
635 # -no-undefined on the libtool link line when we can be certain
636 # that all symbols are satisfied, otherwise we get a static library.
639 # This is a source program that is used to create dlls on Windows
640 # Don't remove nor modify the starting and closing comments
641 # /* ltdll.c starts here */
642 # #define WIN32_LEAN_AND_MEAN
643 # #include <windows.h>
644 # #undef WIN32_LEAN_AND_MEAN
648 # # ifdef __CYGWIN32__
649 # # define __CYGWIN__ __CYGWIN32__
656 # BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved);
662 # #include <cygwin/cygwin_dll.h>
663 # DECLARE_CYGWIN_DLL( DllMain );
665 # HINSTANCE __hDllInstance_base;
668 # DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved)
670 # __hDllInstance_base = hInst;
673 # /* ltdll.c ends here */
674 # This is a source program that is used to create import libraries
675 # on Windows for dlls which lack them. Don't remove nor modify the
676 # starting and closing comments
677 # /* impgen.c starts here */
678 # /* Copyright (C) 1999 Free Software Foundation, Inc.
680 # This file is part of GNU libtool.
682 # This program is free software; you can redistribute it and/or modify
683 # it under the terms of the GNU General Public License as published by
684 # the Free Software Foundation; either version 2 of the License, or
685 # (at your option) any later version.
687 # This program is distributed in the hope that it will be useful,
688 # but WITHOUT ANY WARRANTY; without even the implied warranty of
689 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
690 # GNU General Public License for more details.
692 # You should have received a copy of the GNU General Public License
693 # along with this program; if not, write to the Free Software
694 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
697 # #include <stdio.h> /* for printf() */
698 # #include <unistd.h> /* for open(), lseek(), read() */
699 # #include <fcntl.h> /* for O_RDONLY, O_BINARY */
700 # #include <string.h> /* for strdup() */
702 # static unsigned int
703 # pe_get16 (fd, offset)
707 # unsigned char b[2];
708 # lseek (fd, offset, SEEK_SET);
710 # return b[0] + (b[1]<<8);
713 # static unsigned int
714 # pe_get32 (fd, offset)
718 # unsigned char b[4];
719 # lseek (fd, offset, SEEK_SET);
721 # return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24);
724 # static unsigned int
728 # unsigned char *b = ptr;
729 # return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24);
738 # unsigned long pe_header_offset, opthdr_ofs, num_entries, i;
739 # unsigned long export_rva, export_size, nsections, secptr, expptr;
740 # unsigned long name_rvas, nexp;
741 # unsigned char *expdata, *erva;
742 # char *filename, *dll_name;
744 # filename = argv[1];
746 # dll = open(filename, O_RDONLY|O_BINARY);
750 # dll_name = filename;
752 # for (i=0; filename[i]; i++)
753 # if (filename[i] == '/' || filename[i] == '\\' || filename[i] == ':')
754 # dll_name = filename + i +1;
756 # pe_header_offset = pe_get32 (dll, 0x3c);
757 # opthdr_ofs = pe_header_offset + 4 + 20;
758 # num_entries = pe_get32 (dll, opthdr_ofs + 92);
760 # if (num_entries < 1) /* no exports */
763 # export_rva = pe_get32 (dll, opthdr_ofs + 96);
764 # export_size = pe_get32 (dll, opthdr_ofs + 100);
765 # nsections = pe_get16 (dll, pe_header_offset + 4 +2);
766 # secptr = (pe_header_offset + 4 + 20 +
767 # pe_get16 (dll, pe_header_offset + 4 + 16));
770 # for (i = 0; i < nsections; i++)
773 # unsigned long secptr1 = secptr + 40 * i;
774 # unsigned long vaddr = pe_get32 (dll, secptr1 + 12);
775 # unsigned long vsize = pe_get32 (dll, secptr1 + 16);
776 # unsigned long fptr = pe_get32 (dll, secptr1 + 20);
777 # lseek(dll, secptr1, SEEK_SET);
778 # read(dll, sname, 8);
779 # if (vaddr <= export_rva && vaddr+vsize > export_rva)
781 # expptr = fptr + (export_rva - vaddr);
782 # if (export_rva + export_size > vaddr + vsize)
783 # export_size = vsize - (export_rva - vaddr);
788 # expdata = (unsigned char*)malloc(export_size);
789 # lseek (dll, expptr, SEEK_SET);
790 # read (dll, expdata, export_size);
791 # erva = expdata - export_rva;
793 # nexp = pe_as32 (expdata+24);
794 # name_rvas = pe_as32 (expdata+32);
796 # printf ("EXPORTS\n");
797 # for (i = 0; i<nexp; i++)
799 # unsigned long name_rva = pe_as32 (erva+name_rvas+i*4);
800 # printf ("\t%s @ %ld ;\n", erva+name_rva, 1+ i);
805 # /* impgen.c ends here */
811 compile_command="$nonopt"
812 finalize_command="$nonopt"
823 if test -n "$shlibpath_var"; then
824 # get the directories listed in $shlibpath_var
825 eval lib_search_path=\`\$echo \"X \${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
829 # now prepend the system-specific ones
830 eval lib_search_path=\"$sys_lib_search_path_spec\$lib_search_path\"
831 eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
839 export_symbols_regex=
842 link_against_libtool_libs=
846 prefer_static_libs=no
858 # We need to know -static, to get the right output filenames.
862 -all-static | -static)
863 if test "X$arg" = "X-all-static"; then
864 if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
865 $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2
867 if test -n "$link_static_flag"; then
868 dlopen_self=$dlopen_self_static
871 if test -z "$pic_flag" && test -n "$link_static_flag"; then
872 dlopen_self=$dlopen_self_static
875 build_libtool_libs=no
877 prefer_static_libs=yes
883 # See if our shared archives depend on static archives.
884 test -n "$old_archive_from_new_cmds" && build_old_libs=yes
886 # Go through the arguments, transforming them on the way.
887 while test $# -gt 0; do
891 # If the previous option needs an argument, assign it.
892 if test -n "$prev"; then
895 compile_command="$compile_command @OUTPUT@"
896 finalize_command="$finalize_command @OUTPUT@"
902 if test "$preload" = no; then
903 # Add the symbol object into the linking commands.
904 compile_command="$compile_command @SYMFILE@"
905 finalize_command="$finalize_command @SYMFILE@"
909 *.la | *.lo) ;; # We handle these cases below.
911 if test "$dlself" = no; then
919 if test "$prev" = dlprefiles; then
921 elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
931 if test "$prev" = dlfiles; then
932 dlfiles="$dlfiles $arg"
934 dlprefiles="$dlprefiles $arg"
941 export_symbols="$arg"
942 if test ! -f "$arg"; then
943 $echo "$modename: symbol file \`$arg' does not exist"
950 export_symbols_regex="$arg"
955 if test "$release_suffix" = all; then
957 elif test "$release_suffix" = yes; then
964 # We need an absolute path.
966 [\\/]* | [A-Za-z]:[\\/]*) ;;
968 $echo "$modename: only absolute run-paths are allowed" 1>&2
972 if test "$prev" = rpath; then
975 *) rpath="$rpath $arg" ;;
980 *) xrpath="$xrpath $arg" ;;
987 eval "$prev=\"\$arg\""
998 if test -n "$link_static_flag"; then
999 compile_command="$compile_command $link_static_flag"
1000 finalize_command="$finalize_command $link_static_flag"
1006 # FIXME: remove this flag sometime in the future.
1007 $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2
1032 -export-symbols | -export-symbols-regex)
1033 if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
1034 $echo "$modename: not more than one -exported-symbols argument allowed"
1037 if test "X$arg" = "X-export-symbols"; then
1046 dir=`$echo "X$arg" | $Xsed -e 's/^-L//'`
1047 # We need an absolute path.
1049 [\\/]* | [A-Za-z]:[\\/]*) ;;
1051 absdir=`cd "$dir" && pwd`
1052 if test -z "$absdir"; then
1053 $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2
1054 $echo "$modename: passing it literally to the linker, although it might fail" 1>&2
1060 case " $deplibs " in
1062 *) deplibs="$deplibs $arg";;
1064 case " $lib_search_path " in
1066 *) lib_search_path="$lib_search_path $dir";;
1069 *-*-cygwin* | *-*-mingw* | *-*-os2*)
1070 dllsearchdir=`cd "$dir" && pwd || echo "$dir"`
1071 case ":$dllsearchpath:" in
1072 ::) dllsearchpath="$dllsearchdir";;
1073 *":$dllsearchdir:"*) ;;
1074 *) dllsearchpath="$dllsearchpath:$dllsearchdir";;
1081 if test "$arg" = "-lc"; then
1083 *-*-cygwin* | *-*-mingw* | *-*-os2* | *-*-beos*)
1084 # These systems don't actually have c library (as such)
1087 *-*-rhapsody* | *-*-darwin*)
1088 # Darwin C library is in the System framework
1089 deplibs="$deplibs -framework System"
1092 elif test "$arg" = "-lm"; then
1094 *-*-cygwin* | *-*-beos*)
1095 # These systems don't actually have math library (as such)
1098 *-*-rhapsody* | *-*-darwin*)
1099 # Darwin math library is in the System framework
1100 deplibs="$deplibs -framework System"
1104 deplibs="$deplibs $arg"
1108 deplibs="$deplibs $arg"
1139 dir=`$echo "X$arg" | $Xsed -e 's/^-R//'`
1140 # We need an absolute path.
1142 [\\/]* | [A-Za-z]:[\\/]*) ;;
1144 $echo "$modename: only absolute run-paths are allowed" 1>&2
1150 *) xrpath="$xrpath $dir" ;;
1156 # If we have no pic_flag, then this is the same as -all-static.
1157 if test -z "$pic_flag" && test -n "$link_static_flag"; then
1158 compile_command="$compile_command $link_static_flag"
1159 finalize_command="$finalize_command $link_static_flag"
1174 # Some other compiler flag.
1176 # Unknown arguments in both finalize_command and compile_command need
1177 # to be aesthetically quoted because they are evaled later.
1178 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
1180 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
1186 *.o | *.obj | *.a | *.lib)
1187 # A standard object.
1188 libobjs="$libobjs $arg"
1193 if test "$prev" = dlfiles; then
1194 dlfiles="$dlfiles $arg"
1195 if test "$build_libtool_libs" = yes && test "$dlopen" = yes; then
1199 # If libtool objects are unsupported, then we need to preload.
1204 if test "$prev" = dlprefiles; then
1205 # Preload the old-style object.
1206 dlprefiles="$dlprefiles "`$echo "X$arg" | $Xsed -e "$lo2o"`
1209 libobjs="$libobjs $arg"
1213 # A libtool-controlled library.
1220 # Check to see that this really is a libtool archive.
1221 if (sed -e '2q' $arg | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
1223 $echo "$modename: \`$arg' is not a valid libtool archive" 1>&2
1227 # If the library was installed with an old release of libtool,
1228 # it will not redefine variable installed.
1232 # If there is no directory component, then add one.
1234 */* | *\\*) . $arg ;;
1238 # Get the name of the library we link against.
1240 for l in $old_library $library_names; do
1244 if test -z "$linklib"; then
1245 $echo "$modename: cannot find name of link library for \`$arg'" 1>&2
1249 # Find the relevant object directory and library name.
1250 name=`$echo "X$arg" | $Xsed -e 's%^.*/%%' -e 's/\.la$//' -e 's/^lib//'`
1252 if test "X$installed" = Xyes; then
1255 dir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
1256 if test "X$dir" = "X$arg"; then
1263 if test -n "$dependency_libs"; then
1264 # Extract -R and -L from dependency_libs
1266 for deplib in $dependency_libs; do
1268 -R*) temp_xrpath=`$echo "X$deplib" | $Xsed -e 's/^-R//'`
1269 case " $rpath $xrpath " in
1270 *" $temp_xrpath "*) ;;
1271 *) xrpath="$xrpath $temp_xrpath";;
1273 -L*) case "$compile_command $temp_deplibs " in
1275 *) temp_deplibs="$temp_deplibs $deplib";;
1277 temp_dir=`$echo "X$deplib" | $Xsed -e 's/^-L//'`
1278 case " $lib_search_path " in
1280 *) lib_search_path="$lib_search_path $temp_dir";;
1283 *) temp_deplibs="$temp_deplibs $deplib";;
1286 dependency_libs="$temp_deplibs"
1289 if test -z "$libdir"; then
1290 # It is a libtool convenience library, so add in its objects.
1291 convenience="$convenience $dir/$old_library"
1292 old_convenience="$old_convenience $dir/$old_library"
1293 deplibs="$deplibs$dependency_libs"
1294 compile_command="$compile_command $dir/$old_library$dependency_libs"
1295 finalize_command="$finalize_command $dir/$old_library$dependency_libs"
1299 # This library was specified with -dlopen.
1300 if test "$prev" = dlfiles; then
1301 dlfiles="$dlfiles $arg"
1302 if test -z "$dlname" || test "$dlopen" != yes || test "$build_libtool_libs" = no; then
1303 # If there is no dlname, no dlopen support or we're linking statically,
1304 # we need to preload.
1307 # We should not create a dependency on this library, but we
1308 # may need any libraries it requires.
1309 compile_command="$compile_command$dependency_libs"
1310 finalize_command="$finalize_command$dependency_libs"
1316 # The library was specified with -dlpreopen.
1317 if test "$prev" = dlprefiles; then
1318 # Prefer using a static library (so that no silly _DYNAMIC symbols
1319 # are required to link).
1320 if test -n "$old_library"; then
1321 dlprefiles="$dlprefiles $dir/$old_library"
1323 dlprefiles="$dlprefiles $dir/$linklib"
1328 if test -n "$library_names" &&
1329 { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
1330 link_against_libtool_libs="$link_against_libtool_libs $arg"
1331 if test -n "$shlibpath_var"; then
1332 # Make sure the rpath contains only unique directories.
1333 case "$temp_rpath " in
1335 *) temp_rpath="$temp_rpath $dir" ;;
1339 # We need an absolute path.
1341 [\\/] | [A-Za-z]:[\\/]*) absdir="$dir" ;;
1343 absdir=`cd "$dir" && pwd`
1344 if test -z "$absdir"; then
1345 $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2
1346 $echo "$modename: passing it literally to the linker, although it might fail" 1>&2
1352 # This is the magic to use -rpath.
1353 # Skip directories that are in the system default run-time
1354 # search path, unless they have been requested with -R.
1355 case " $sys_lib_dlsearch_path " in
1358 case "$compile_rpath " in
1360 *) compile_rpath="$compile_rpath $absdir"
1365 case " $sys_lib_dlsearch_path " in
1368 case "$finalize_rpath " in
1370 *) finalize_rpath="$finalize_rpath $libdir"
1376 case "$hardcode_action" in
1377 immediate | unsupported)
1378 if test "$hardcode_direct" = no; then
1379 compile_command="$compile_command $dir/$linklib"
1380 deplibs="$deplibs $dir/$linklib"
1382 *-*-cygwin* | *-*-mingw* | *-*-os2*)
1383 dllsearchdir=`cd "$dir" && pwd || echo "$dir"`
1384 if test -n "$dllsearchpath"; then
1385 dllsearchpath="$dllsearchpath:$dllsearchdir"
1387 dllsearchpath="$dllsearchdir"
1391 elif test "$hardcode_minus_L" = no; then
1394 compile_shlibpath="$compile_shlibpath$dir:"
1397 case "$compile_command " in
1399 *) compile_command="$compile_command -L$dir";;
1401 compile_command="$compile_command -l$name"
1402 deplibs="$deplibs -L$dir -l$name"
1403 elif test "$hardcode_shlibpath_var" = no; then
1404 case ":$compile_shlibpath:" in
1406 *) compile_shlibpath="$compile_shlibpath$dir:";;
1408 compile_command="$compile_command -l$name"
1409 deplibs="$deplibs -l$name"
1416 if test "$hardcode_direct" = yes; then
1417 compile_command="$compile_command $absdir/$linklib"
1418 deplibs="$deplibs $absdir/$linklib"
1419 elif test "$hardcode_minus_L" = yes; then
1420 case "$compile_command " in
1422 *) compile_command="$compile_command -L$absdir";;
1424 compile_command="$compile_command -l$name"
1425 deplibs="$deplibs -L$absdir -l$name"
1426 elif test "$hardcode_shlibpath_var" = yes; then
1427 case ":$compile_shlibpath:" in
1429 *) compile_shlibpath="$compile_shlibpath$absdir:";;
1431 compile_command="$compile_command -l$name"
1432 deplibs="$deplibs -l$name"
1443 if test "$lib_linked" != yes; then
1444 $echo "$modename: configuration error: unsupported hardcode properties"
1448 # Finalize command for both is simple: just hardcode it.
1449 if test "$hardcode_direct" = yes; then
1450 finalize_command="$finalize_command $libdir/$linklib"
1451 elif test "$hardcode_minus_L" = yes; then
1452 case "$finalize_command " in
1454 *) finalize_command="$finalize_command -L$libdir";;
1456 finalize_command="$finalize_command -l$name"
1457 elif test "$hardcode_shlibpath_var" = yes; then
1458 case ":$finalize_shlibpath:" in
1460 *) finalize_shlibpath="$finalize_shlibpath$libdir:";;
1462 finalize_command="$finalize_command -l$name"
1464 # We cannot seem to hardcode it, guess we'll fake it.
1465 case "$finalize_command " in
1467 *) finalize_command="$finalize_command -L$libdir";;
1469 finalize_command="$finalize_command -l$name"
1472 # Transform directly to old archives if we don't build new libraries.
1473 if test -n "$pic_flag" && test -z "$old_library"; then
1474 $echo "$modename: cannot find static library for \`$arg'" 1>&2
1478 # Here we assume that one of hardcode_direct or hardcode_minus_L
1479 # is not unsupported. This is valid on all known static and
1481 if test "$hardcode_direct" != unsupported; then
1482 test -n "$old_library" && linklib="$old_library"
1483 compile_command="$compile_command $dir/$linklib"
1484 finalize_command="$finalize_command $dir/$linklib"
1486 case "$compile_command " in
1488 *) compile_command="$compile_command -L$dir";;
1490 compile_command="$compile_command -l$name"
1491 case "$finalize_command " in
1493 *) finalize_command="$finalize_command -L$dir";;
1495 finalize_command="$finalize_command -l$name"
1499 # Add in any libraries that this one depends upon.
1500 compile_command="$compile_command$dependency_libs"
1501 finalize_command="$finalize_command$dependency_libs"
1505 # Some other compiler argument.
1507 # Unknown arguments in both finalize_command and compile_command need
1508 # to be aesthetically quoted because they are evaled later.
1509 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
1511 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
1518 # Now actually substitute the argument into the commands.
1519 if test -n "$arg"; then
1520 compile_command="$compile_command $arg"
1521 finalize_command="$finalize_command $arg"
1525 if test -n "$prev"; then
1526 $echo "$modename: the \`$prevarg' option requires an argument" 1>&2
1531 if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
1532 eval arg=\"$export_dynamic_flag_spec\"
1533 compile_command="$compile_command $arg"
1534 finalize_command="$finalize_command $arg"
1538 # calculate the name of the file, without its directory
1539 outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'`
1540 libobjs_save="$libobjs"
1544 $echo "$modename: you must specify an output file" 1>&2
1550 if test -n "$link_against_libtool_libs"; then
1551 $echo "$modename: error: cannot link libtool libraries into archives" 1>&2
1555 if test -n "$deplibs"; then
1556 $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2
1559 if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
1560 $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2
1563 if test -n "$rpath"; then
1564 $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2
1567 if test -n "$xrpath"; then
1568 $echo "$modename: warning: \`-R' is ignored for archives" 1>&2
1571 if test -n "$vinfo"; then
1572 $echo "$modename: warning: \`-version-info' is ignored for archives" 1>&2
1575 if test -n "$release"; then
1576 $echo "$modename: warning: \`-release' is ignored for archives" 1>&2
1579 if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
1580 $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2
1583 # Now set the variables for building old libraries.
1584 build_libtool_libs=no
1589 # Make sure we only generate libraries of the form `libNAME.la'.
1590 case "$outputname" in
1592 name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
1593 eval libname=\"$libname_spec\"
1596 if test "$module" = no; then
1597 $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2
1601 if test "$need_lib_prefix" != no; then
1602 # Add the "lib" prefix for modules if required
1603 name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
1604 eval libname=\"$libname_spec\"
1606 libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
1611 output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
1612 if test "X$output_objdir" = "X$output"; then
1613 output_objdir="$objdir"
1615 output_objdir="$output_objdir/$objdir"
1618 if test -n "$objs"; then
1619 $echo "$modename: cannot build libtool library \`$output' from non-libtool objects:$objs" 2>&1
1623 if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
1624 $echo "$modename: warning: \`-dlopen' is ignored for libtool libraries" 1>&2
1628 if test $# -gt 2; then
1629 $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2
1634 if test -z "$rpath"; then
1635 if test "$build_libtool_libs" = yes; then
1636 # Building a libtool convenience library.
1638 oldlibs="$output_objdir/$libname.$libext $oldlibs"
1639 build_libtool_libs=convenience
1642 dependency_libs="$deplibs"
1644 if test -n "$vinfo"; then
1645 $echo "$modename: warning: \`-version-info' is ignored for convenience libraries" 1>&2
1648 if test -n "$release"; then
1649 $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2
1653 # Parse the version information argument.
1654 IFS="${IFS= }"; save_ifs="$IFS"; IFS=':'
1655 set dummy $vinfo 0 0 0
1658 if test -n "$8"; then
1659 $echo "$modename: too many parameters to \`-version-info'" 1>&2
1668 # Check that each of the things are valid numbers.
1670 0 | [1-9] | [1-9][0-9]*) ;;
1672 $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2
1673 $echo "$modename: \`$vinfo' is not valid version information" 1>&2
1679 0 | [1-9] | [1-9][0-9]*) ;;
1681 $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2
1682 $echo "$modename: \`$vinfo' is not valid version information" 1>&2
1688 0 | [1-9] | [1-9][0-9]*) ;;
1690 $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2
1691 $echo "$modename: \`$vinfo' is not valid version information" 1>&2
1696 if test $age -gt $current; then
1697 $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2
1698 $echo "$modename: \`$vinfo' is not valid version information" 1>&2
1702 # Calculate the version variables.
1706 case "$version_type" in
1710 major=`expr $current - $age + 1`
1711 versuffix="$major.$revision"
1712 verstring="sgi$major.$revision"
1714 # Add in all the interfaces that we are compatible with.
1716 while test $loop != 0; do
1717 iface=`expr $revision - $loop`
1718 loop=`expr $loop - 1`
1719 verstring="sgi$major.$iface:$verstring"
1724 major=.`expr $current - $age`
1725 versuffix="$major.$age.$revision"
1729 major=`expr $current - $age`
1730 versuffix=".$current.$age.$revision"
1731 verstring="$current.$age.$revision"
1733 # Add in all the interfaces that we are compatible with.
1735 while test $loop != 0; do
1736 iface=`expr $current - $loop`
1737 loop=`expr $loop - 1`
1738 verstring="$verstring:${iface}.0"
1741 # Make executables depend on our current version.
1742 verstring="$verstring:${current}.0"
1747 versuffix=".$current.$revision"
1752 versuffix=".$current.$revision";
1757 versuffix=".$current";
1761 # Like Linux, but with '-' rather than '.', since we only
1762 # want one extension on Windows 95.
1763 major=`expr $current - $age`
1764 versuffix="-$major-$age-$revision"
1768 $echo "$modename: unknown library version type \`$version_type'" 1>&2
1769 echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
1774 # Clear the version info if we defaulted, and they specified a release.
1775 if test -z "$vinfo" && test -n "$release"; then
1778 if test "$need_version" = no; then
1785 # Remove version info from name if versioning should be avoided
1786 if test "$avoid_version" = yes && test "$need_version" = no; then
1792 # Check to see if the archive will have undefined symbols.
1793 if test "$allow_undefined" = yes; then
1794 if test "$allow_undefined_flag" = unsupported; then
1795 $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2
1796 build_libtool_libs=no
1800 # Don't allow undefined symbols.
1801 allow_undefined_flag="$no_undefined_flag"
1804 dependency_libs="$deplibs"
1806 *-*-cygwin* | *-*-mingw* | *-*-os2* | *-*-beos*)
1807 # these systems don't actually have a c library (as such)!
1810 # FreeBSD doesn't need this...
1813 # Add libc to deplibs on all other systems.
1814 deplibs="$deplibs -lc"
1819 if test -n "$rpath$xrpath"; then
1820 # If the user specified any rpath flags, then add them.
1821 for libdir in $rpath $xrpath; do
1822 # This is the magic to use -rpath.
1823 case "$compile_rpath " in
1825 *) compile_rpath="$compile_rpath $libdir" ;;
1827 case "$finalize_rpath " in
1829 *) finalize_rpath="$finalize_rpath $libdir" ;;
1834 # Now hardcode the library paths
1837 for libdir in $compile_rpath; do
1838 if test -n "$hardcode_libdir_flag_spec"; then
1839 if test -n "$hardcode_libdir_separator"; then
1840 if test -z "$hardcode_libdirs"; then
1841 hardcode_libdirs="$libdir"
1843 # Just accumulate the unique libdirs.
1844 case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in
1845 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
1848 hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
1853 eval flag=\"$hardcode_libdir_flag_spec\"
1854 rpath="$rpath $flag"
1856 elif test -n "$runpath_var"; then
1857 case "$perm_rpath " in
1859 *) perm_rpath="$perm_rpath $libdir" ;;
1863 # Substitute the hardcoded libdirs into the rpath.
1864 if test -n "$hardcode_libdir_separator" &&
1865 test -n "$hardcode_libdirs"; then
1866 libdir="$hardcode_libdirs"
1867 eval rpath=\" $hardcode_libdir_flag_spec\"
1869 compile_rpath="$rpath"
1873 for libdir in $finalize_rpath; do
1874 if test -n "$hardcode_libdir_flag_spec"; then
1875 if test -n "$hardcode_libdir_separator"; then
1876 if test -z "$hardcode_libdirs"; then
1877 hardcode_libdirs="$libdir"
1879 # Just accumulate the unique libdirs.
1880 case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in
1881 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
1884 hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
1889 eval flag=\"$hardcode_libdir_flag_spec\"
1890 rpath="$rpath $flag"
1892 elif test -n "$runpath_var"; then
1893 case "$finalize_perm_rpath " in
1895 *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
1899 # Substitute the hardcoded libdirs into the rpath.
1900 if test -n "$hardcode_libdir_separator" &&
1901 test -n "$hardcode_libdirs"; then
1902 libdir="$hardcode_libdirs"
1903 eval rpath=\" $hardcode_libdir_flag_spec\"
1905 finalize_rpath="$rpath"
1907 # Create the output directory, or remove our outputs if we need to.
1908 if test -d $output_objdir; then
1909 $show "${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.*"
1910 $run ${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.*
1912 $show "$mkdir $output_objdir"
1913 $run $mkdir $output_objdir
1915 if test $status -ne 0 && test ! -d $output_objdir; then
1920 # Now set the variables for building old libraries.
1921 if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
1922 if test "$release_suffix" = all; then
1923 oldlibs="$oldlibs $output_objdir/$libname$release.$libext"
1925 oldlibs="$oldlibs $output_objdir/$libname.$libext"
1928 # Transform .lo files to .o files.
1929 oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
1932 if test "$build_libtool_libs" = yes; then
1933 # Transform deplibs into only deplibs that can be linked in shared.
1935 libname_save=$libname
1936 release_save=$release
1937 versuffix_save=$versuffix
1939 # I'm not sure if I'm treating the release correctly. I think
1940 # release should show up in the -l (ie -lgmp5) so we don't want to
1941 # add it in twice. Is that correct?
1947 case "$deplibs_check_method" in
1949 # Don't check for shared/static. Everything works.
1950 # This might be a little naive. We might want to check
1951 # whether the library exists or not. But this is on
1952 # osf3 & osf4 and I'm not really sure... Just
1953 # implementing what was already the behaviour.
1957 # This code stresses the "libraries are programs" paradigm to its
1958 # limits. Maybe even breaks it. We compile a program, linking it
1959 # against the deplibs as a proxy for the library. Then we can check
1960 # whether they linked in statically or dynamically with ldd.
1962 cat > conftest.c <<EOF
1963 int main() { return 0; }
1966 $CC -o conftest conftest.c $deplibs
1967 if test $? -eq 0 ; then
1968 ldd_output=`ldd conftest`
1969 for i in $deplibs; do
1970 name="`expr $i : '-l\(.*\)'`"
1971 # If $name is empty we are operating on a -L argument.
1972 if test "$name" != "" ; then
1973 libname=`eval \\$echo \"$libname_spec\"`
1974 deplib_matches=`eval \\$echo \"$library_names_spec\"`
1975 set dummy $deplib_matches
1977 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
1978 newdeplibs="$newdeplibs $i"
1982 echo "*** Warning: This library needs some functionality provided by $i."
1983 echo "*** I have the capability to make that library automatically link in when"
1984 echo "*** you link to this library. But I can only do this if you have a"
1985 echo "*** shared version of the library, which you do not appear to have."
1988 newdeplibs="$newdeplibs $i"
1992 # Error occured in the first compile. Let's try to salvage the situation:
1993 # Compile a seperate program for each library.
1994 for i in $deplibs; do
1995 name="`expr $i : '-l\(.*\)'`"
1996 # If $name is empty we are operating on a -L argument.
1997 if test "$name" != "" ; then
1999 $CC -o conftest conftest.c $i
2001 if test $? -eq 0 ; then
2002 ldd_output=`ldd conftest`
2003 libname=`eval \\$echo \"$libname_spec\"`
2004 deplib_matches=`eval \\$echo \"$library_names_spec\"`
2005 set dummy $deplib_matches
2007 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
2008 newdeplibs="$newdeplibs $i"
2012 echo "*** Warning: This library needs some functionality provided by $i."
2013 echo "*** I have the capability to make that library automatically link in when"
2014 echo "*** you link to this library. But I can only do this if you have a"
2015 echo "*** shared version of the library, which you do not appear to have."
2020 echo "*** Warning! Library $i is needed by this library but I was not able to"
2021 echo "*** make it link in! You will probably need to install it or some"
2022 echo "*** library that it depends on before this library will be fully"
2023 echo "*** functional. Installing it before continuing would be even better."
2026 newdeplibs="$newdeplibs $i"
2032 set dummy $deplibs_check_method
2033 file_magic_regex="`expr \"$deplibs_check_method\" : \"$2 \(.*\)\"`"
2034 for a_deplib in $deplibs; do
2035 name="`expr $a_deplib : '-l\(.*\)'`"
2036 # If $name is empty we are operating on a -L argument.
2037 if test "$name" != "" ; then
2038 libname=`eval \\$echo \"$libname_spec\"`
2039 for i in $lib_search_path; do
2040 potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
2041 for potent_lib in $potential_libs; do
2042 # Follow soft links.
2043 if ls -lLd "$potent_lib" 2>/dev/null \
2044 | grep " -> " >/dev/null; then
2047 # The statement above tries to avoid entering an
2048 # endless loop below, in case of cyclic links.
2049 # We might still enter an endless loop, since a link
2050 # loop can be closed while we follow links,
2052 potlib="$potent_lib"
2053 while test -h "$potlib" 2>/dev/null; do
2054 potliblink=`ls -ld $potlib | sed 's/.* -> //'`
2055 case "$potliblink" in
2056 [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
2057 *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
2060 if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \
2062 | egrep "$file_magic_regex" > /dev/null; then
2063 newdeplibs="$newdeplibs $a_deplib"
2069 if test -n "$a_deplib" ; then
2072 echo "*** Warning: This library needs some functionality provided by $a_deplib."
2073 echo "*** I have the capability to make that library automatically link in when"
2074 echo "*** you link to this library. But I can only do this if you have a"
2075 echo "*** shared version of the library, which you do not appear to have."
2078 # Add a -L argument.
2079 newdeplibs="$newdeplibs $a_deplib"
2081 done # Gone through all deplibs.
2085 if $echo "X $deplibs" | $Xsed -e 's/ -lc$//' \
2086 -e 's/ -[LR][^ ]*//g' -e 's/[ ]//g' |
2087 grep . >/dev/null; then
2089 if test "X$deplibs_check_method" = "Xnone"; then
2090 echo "*** Warning: inter-library dependencies are not supported in this platform."
2092 echo "*** Warning: inter-library dependencies are not known to be supported."
2094 echo "*** All declared inter-library dependencies are being dropped."
2099 versuffix=$versuffix_save
2101 release=$release_save
2102 libname=$libname_save
2105 if test "$droppeddeps" = yes; then
2106 if test "$module" = yes; then
2108 echo "*** Warning: libtool could not satisfy all declared inter-library"
2109 echo "*** dependencies of module $libname. Therefore, libtool will create"
2110 echo "*** a static module, that should work as long as the dlopening"
2111 echo "*** application is linked with the -dlopen flag."
2112 if test -z "$global_symbol_pipe"; then
2114 echo "*** However, this would only work if libtool was able to extract symbol"
2115 echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
2116 echo "*** not find such a program. So, this module is probably useless."
2117 echo "*** \`nm' from GNU binutils and a full rebuild may help."
2119 if test "$build_old_libs" = no; then
2120 if test "$release_suffix" = all; then
2121 oldlibs="$output_objdir/$libname$release.$libext"
2123 oldlibs="$output_objdir/$libname.$libext"
2125 build_libtool_libs=module
2128 build_libtool_libs=no
2131 echo "*** The inter-library dependencies that have been dropped here will be"
2132 echo "*** automatically added whenever a program is linked with this library"
2133 echo "*** or is declared to -dlopen it."
2136 # Done checking deplibs!
2140 # All the library-specific variables (install_libdir is set above).
2145 # Test again, we may have decided not to build it any more
2146 if test "$build_libtool_libs" = yes; then
2147 # Get the real and link names of the library.
2148 eval library_names=\"$library_names_spec\"
2149 set dummy $library_names
2153 if test -n "$soname_spec"; then
2154 eval soname=\"$soname_spec\"
2159 lib="$output_objdir/$realname"
2162 linknames="$linknames $link"
2165 # Ensure that we have .o objects for linkers which dislike .lo
2166 # (e.g. aix) in case we are running --disable-static
2167 for obj in $libobjs; do
2168 xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
2169 if test "X$xdir" = "X$obj"; then
2174 baseobj=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
2175 oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"`
2176 if test ! -f $xdir/$oldobj; then
2177 $show "(cd $xdir && ${LN_S} $baseobj $oldobj)"
2178 $run eval '(cd $xdir && ${LN_S} $baseobj $oldobj)' || exit $?
2182 # Use standard objects if they are pic
2183 test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
2185 # Prepare the list of exported symbols
2186 if test -z "$export_symbols"; then
2187 if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
2188 $show "generating symbol list for \`$libname.la'"
2189 export_symbols="$output_objdir/$libname.exp"
2190 $run $rm $export_symbols
2191 eval cmds=\"$export_symbols_cmds\"
2192 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
2193 for cmd in $cmds; do
2196 $run eval "$cmd" || exit $?
2199 if test -n "$export_symbols_regex"; then
2200 $show "egrep -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\""
2201 $run eval 'egrep -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
2202 $show "$mv \"${export_symbols}T\" \"$export_symbols\""
2203 $run eval '$mv "${export_symbols}T" "$export_symbols"'
2208 if test -n "$export_symbols" && test -n "$include_expsyms"; then
2209 $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"'
2212 if test -n "$convenience"; then
2213 if test -n "$whole_archive_flag_spec"; then
2214 eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
2216 gentop="$output_objdir/${outputname}x"
2217 $show "${rm}r $gentop"
2218 $run ${rm}r "$gentop"
2219 $show "mkdir $gentop"
2220 $run mkdir "$gentop"
2222 if test $status -ne 0 && test ! -d "$gentop"; then
2225 generated="$generated $gentop"
2227 for xlib in $convenience; do
2228 # Extract the objects.
2230 [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
2231 *) xabs=`pwd`"/$xlib" ;;
2233 xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
2234 xdir="$gentop/$xlib"
2236 $show "${rm}r $xdir"
2241 if test $status -ne 0 && test ! -d "$xdir"; then
2244 $show "(cd $xdir && $AR x $xabs)"
2245 $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
2247 libobjs="$libobjs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP`
2252 if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
2253 eval flag=\"$thread_safe_flag_spec\"
2254 linkopts="$linkopts $flag"
2257 # Do each of the archive commands.
2258 if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
2259 eval cmds=\"$archive_expsym_cmds\"
2261 eval cmds=\"$archive_cmds\"
2263 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
2264 for cmd in $cmds; do
2267 $run eval "$cmd" || exit $?
2271 # Create links to the real library.
2272 for linkname in $linknames; do
2273 if test "$realname" != "$linkname"; then
2274 $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)"
2275 $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $?
2279 # If -module or -export-dynamic was specified, set the dlname.
2280 if test "$module" = yes || test "$export_dynamic" = yes; then
2281 # On all known operating systems, these are identical.
2288 if test -n "$link_against_libtool_libs"; then
2289 $echo "$modename: error: cannot link libtool libraries into objects" 1>&2
2293 if test -n "$deplibs"; then
2294 $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2
2297 if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
2298 $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2
2301 if test -n "$rpath"; then
2302 $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2
2305 if test -n "$xrpath"; then
2306 $echo "$modename: warning: \`-R' is ignored for objects" 1>&2
2309 if test -n "$vinfo"; then
2310 $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2
2313 if test -n "$release"; then
2314 $echo "$modename: warning: \`-release' is ignored for objects" 1>&2
2319 if test -n "$objs"; then
2320 $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2
2324 obj=`$echo "X$output" | $Xsed -e "$lo2o"`
2332 # Delete the old objects.
2333 $run $rm $obj $libobj
2335 # Objects from convenience libraries. This assumes
2336 # single-version convenience libraries. Whenever we create
2337 # different ones for PIC/non-PIC, this we'll have to duplicate
2341 # reload_cmds runs $LD directly, so let us get rid of
2342 # -Wl from whole_archive_flag_spec
2345 if test -n "$convenience"; then
2346 if test -n "$whole_archive_flag_spec"; then
2347 eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\"
2349 gentop="$output_objdir/${obj}x"
2350 $show "${rm}r $gentop"
2351 $run ${rm}r "$gentop"
2352 $show "mkdir $gentop"
2353 $run mkdir "$gentop"
2355 if test $status -ne 0 && test ! -d "$gentop"; then
2358 generated="$generated $gentop"
2360 for xlib in $convenience; do
2361 # Extract the objects.
2363 [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
2364 *) xabs=`pwd`"/$xlib" ;;
2366 xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
2367 xdir="$gentop/$xlib"
2369 $show "${rm}r $xdir"
2374 if test $status -ne 0 && test ! -d "$xdir"; then
2377 $show "(cd $xdir && $AR x $xabs)"
2378 $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
2380 reload_conv_objs="$reload_objs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP`
2385 # Create the old-style object.
2386 reload_objs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs"
2389 eval cmds=\"$reload_cmds\"
2390 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
2391 for cmd in $cmds; do
2394 $run eval "$cmd" || exit $?
2398 # Exit if we aren't doing a library object file.
2399 if test -z "$libobj"; then
2400 if test -n "$gentop"; then
2401 $show "${rm}r $gentop"
2408 if test "$build_libtool_libs" != yes; then
2409 if test -n "$gentop"; then
2410 $show "${rm}r $gentop"
2414 # Create an invalid libtool object if no PIC, so that we don't
2415 # accidentally link it into a program.
2416 $show "echo timestamp > $libobj"
2417 $run eval "echo timestamp > $libobj" || exit $?
2421 if test -n "$pic_flag"; then
2422 # Only do commands if we really have different PIC objects.
2423 reload_objs="$libobjs $reload_conv_objs"
2425 eval cmds=\"$reload_cmds\"
2426 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
2427 for cmd in $cmds; do
2430 $run eval "$cmd" || exit $?
2434 # Just create a symlink.
2437 xdir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'`
2438 if test "X$xdir" = "X$libobj"; then
2443 baseobj=`$echo "X$libobj" | $Xsed -e 's%^.*/%%'`
2444 oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"`
2445 $show "(cd $xdir && $LN_S $oldobj $baseobj)"
2446 $run eval '(cd $xdir && $LN_S $oldobj $baseobj)' || exit $?
2449 if test -n "$gentop"; then
2450 $show "${rm}r $gentop"
2457 # Anything else should be a program.
2459 if test -n "$vinfo"; then
2460 $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2
2463 if test -n "$release"; then
2464 $echo "$modename: warning: \`-release' is ignored for programs" 1>&2
2467 if test "$preload" = yes; then
2468 if test "$dlopen" = unknown && test "$dlopen_self" = unknown &&
2469 test "$dlopen_self_static" = unknown; then
2470 $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support."
2474 if test -n "$rpath$xrpath"; then
2475 # If the user specified any rpath flags, then add them.
2476 for libdir in $rpath $xrpath; do
2477 # This is the magic to use -rpath.
2478 case "$compile_rpath " in
2480 *) compile_rpath="$compile_rpath $libdir" ;;
2482 case "$finalize_rpath " in
2484 *) finalize_rpath="$finalize_rpath $libdir" ;;
2489 # Now hardcode the library paths
2492 for libdir in $compile_rpath $finalize_rpath; do
2493 if test -n "$hardcode_libdir_flag_spec"; then
2494 if test -n "$hardcode_libdir_separator"; then
2495 if test -z "$hardcode_libdirs"; then
2496 hardcode_libdirs="$libdir"
2498 # Just accumulate the unique libdirs.
2499 case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in
2500 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
2503 hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
2508 eval flag=\"$hardcode_libdir_flag_spec\"
2509 rpath="$rpath $flag"
2511 elif test -n "$runpath_var"; then
2512 case "$perm_rpath " in
2514 *) perm_rpath="$perm_rpath $libdir" ;;
2518 # Substitute the hardcoded libdirs into the rpath.
2519 if test -n "$hardcode_libdir_separator" &&
2520 test -n "$hardcode_libdirs"; then
2521 libdir="$hardcode_libdirs"
2522 eval rpath=\" $hardcode_libdir_flag_spec\"
2524 compile_rpath="$rpath"
2528 for libdir in $finalize_rpath; do
2529 if test -n "$hardcode_libdir_flag_spec"; then
2530 if test -n "$hardcode_libdir_separator"; then
2531 if test -z "$hardcode_libdirs"; then
2532 hardcode_libdirs="$libdir"
2534 # Just accumulate the unique libdirs.
2535 case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in
2536 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
2539 hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
2544 eval flag=\"$hardcode_libdir_flag_spec\"
2545 rpath="$rpath $flag"
2547 elif test -n "$runpath_var"; then
2548 case "$finalize_perm_rpath " in
2550 *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
2554 # Substitute the hardcoded libdirs into the rpath.
2555 if test -n "$hardcode_libdir_separator" &&
2556 test -n "$hardcode_libdirs"; then
2557 libdir="$hardcode_libdirs"
2558 eval rpath=\" $hardcode_libdir_flag_spec\"
2560 finalize_rpath="$rpath"
2562 output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
2563 if test "X$output_objdir" = "X$output"; then
2564 output_objdir="$objdir"
2566 output_objdir="$output_objdir/$objdir"
2569 # Create the binary in the object directory, then wrap it.
2570 if test ! -d $output_objdir; then
2571 $show "$mkdir $output_objdir"
2572 $run $mkdir $output_objdir
2574 if test $status -ne 0 && test ! -d $output_objdir; then
2579 if test -n "$libobjs" && test "$build_old_libs" = yes; then
2580 # Transform all the library objects into standard objects.
2581 compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
2582 finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
2586 if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
2587 if test -n "$NM" && test -n "$global_symbol_pipe"; then
2588 dlsyms="${outputname}S.c"
2590 $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2
2594 if test -n "$dlsyms"; then
2598 # Discover the nlist of each of the dlfiles.
2599 nlist="$output_objdir/${outputname}.nm"
2601 $show "$rm $nlist ${nlist}S ${nlist}T"
2602 $run $rm "$nlist" "${nlist}S" "${nlist}T"
2604 # Parse the name list into a source file.
2605 $show "creating $output_objdir/$dlsyms"
2607 test -z "$run" && $echo > "$output_objdir/$dlsyms" "\
2608 /* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */
2609 /* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */
2615 /* Prevent the only kind of declaration conflicts we can make. */
2616 #define lt_preloaded_symbols some_other_symbol
2618 /* External symbol declarations for the compiler. */\
2621 if test "$dlself" = yes; then
2622 $show "generating symbol list for \`$output'"
2624 test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist"
2626 # Add our own program objects to the symbol list.
2627 progfiles=`$echo "X$objs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
2628 for arg in $progfiles; do
2629 $show "extracting global C symbols from \`$arg'"
2630 $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
2633 if test -n "$exclude_expsyms"; then
2634 $run eval 'egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
2635 $run eval '$mv "$nlist"T "$nlist"'
2638 if test -n "$export_symbols_regex"; then
2639 $run eval 'egrep -e "$export_symbols_regex" "$nlist" > "$nlist"T'
2640 $run eval '$mv "$nlist"T "$nlist"'
2643 # Prepare the list of exported symbols
2644 if test -z "$export_symbols"; then
2645 export_symbols="$output_objdir/$output.exp"
2646 $run $rm $export_symbols
2647 $run eval "sed -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
2649 $run eval "sed -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"'
2650 $run eval 'grep -f "$output_objdir/$output.exp" < "$nlist" > "$nlist"T'
2651 $run eval 'mv "$nlist"T "$nlist"'
2655 for arg in $dlprefiles; do
2656 $show "extracting global C symbols from \`$arg'"
2657 name=`echo "$arg" | sed -e 's%^.*/%%'`
2658 $run eval 'echo ": $name " >> "$nlist"'
2659 $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
2662 if test -z "$run"; then
2663 # Make sure we have at least an empty file.
2664 test -f "$nlist" || : > "$nlist"
2666 if test -n "$exclude_expsyms"; then
2667 egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
2668 $mv "$nlist"T "$nlist"
2671 # Try sorting and uniquifying the output.
2672 if grep -v "^: " < "$nlist" | sort +2 | uniq > "$nlist"S; then
2675 grep -v "^: " < "$nlist" > "$nlist"S
2678 if test -f "$nlist"S; then
2679 eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"'
2681 echo '/* NONE */' >> "$output_objdir/$dlsyms"
2684 $echo >> "$output_objdir/$dlsyms" "\
2686 #undef lt_preloaded_symbols
2688 #if defined (__STDC__) && __STDC__
2689 # define lt_ptr_t void *
2691 # define lt_ptr_t char *
2695 /* The mapping between symbol names and symbols. */
2700 lt_preloaded_symbols[] =
2704 sed -n -e 's/^: \([^ ]*\) $/ {\"\1\", (lt_ptr_t) 0},/p' \
2705 -e 's/^. \([^ ]*\) \([^ ]*\)$/ {"\2", (lt_ptr_t) \&\2},/p' \
2706 < "$nlist" >> "$output_objdir/$dlsyms"
2708 $echo >> "$output_objdir/$dlsyms" "\
2712 /* This works around a problem in FreeBSD linker */
2713 #ifdef FREEBSD_WORKAROUND
2714 static const void *lt_preloaded_setup() {
2715 return lt_preloaded_symbols;
2725 pic_flag_for_symtable=
2727 # compiling the symbol table file with pic_flag works around
2728 # a FreeBSD bug that causes programs to crash when -lm is
2729 # linked before any other PIC object. But we must not use
2730 # pic_flag when linking with -static. The problem exists in
2731 # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
2732 *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
\r
2733 case "$compile_command " in
2735 *) pic_flag_for_symtable=" $pic_flag -DPIC -DFREEBSD_WORKAROUND";;
2738 case "$compile_command " in
2740 *) pic_flag_for_symtable=" $pic_flag -DPIC";;
2744 # Now compile the dynamic symbol file.
2745 $show "(cd $output_objdir && $CC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")"
2746 $run eval '(cd $output_objdir && $CC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $?
2748 # Clean up the generated files.
2749 $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T"
2750 $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T"
2752 # Transform the symbol file into the correct name.
2753 compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
2754 finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
2757 $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
2762 # We keep going just in case the user didn't refer to
2763 # lt_preloaded_symbols. The linker will fail if global_symbol_pipe
2764 # really was required.
2766 # Nullify the symbol file.
2767 compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
2768 finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
2771 if test -z "$link_against_libtool_libs" || test "$build_libtool_libs" != yes; then
2772 # Replace the output file specification.
2773 compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
2774 link_command="$compile_command$compile_rpath"
2776 # We have no uninstalled library dependencies, so finalize right now.
2777 $show "$link_command"
2778 $run eval "$link_command"
2781 # Delete the generated files.
2782 if test -n "$dlsyms"; then
2783 $show "$rm $output_objdir/${outputname}S.${objext}"
2784 $run $rm "$output_objdir/${outputname}S.${objext}"
2790 if test -n "$shlibpath_var"; then
2791 # We should set the shlibpath_var
2793 for dir in $temp_rpath; do
2795 [\\/]* | [A-Za-z]:[\\/]*)
2800 # Relative path: add a thisdir entry.
2801 rpath="$rpath\$thisdir/$dir:"
2808 if test -n "$compile_shlibpath$finalize_shlibpath"; then
2809 compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
2811 if test -n "$finalize_shlibpath"; then
2812 finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
2817 if test -n "$runpath_var"; then
2818 if test -n "$perm_rpath"; then
2819 # We should set the runpath_var.
2821 for dir in $perm_rpath; do
2824 compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
2826 if test -n "$finalize_perm_rpath"; then
2827 # We should set the runpath_var.
2829 for dir in $finalize_perm_rpath; do
2832 finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
2836 if test "$hardcode_action" = relink; then
2837 # Fast installation is not supported
2838 link_command="$compile_var$compile_command$compile_rpath"
2839 relink_command="$finalize_var$finalize_command$finalize_rpath"
2841 $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2
2842 $echo "$modename: \`$output' will be relinked during installation" 1>&2
2844 if test "$fast_install" != no; then
2845 link_command="$finalize_var$compile_command$finalize_rpath"
2846 if test "$fast_install" = yes; then
2847 relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
2849 # fast_install is set to needless
2853 link_command="$compile_var$compile_command$compile_rpath"
2854 relink_command="$finalize_var$finalize_command$finalize_rpath"
2858 # Replace the output file specification.
2859 link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
2861 # Delete the old output files.
2862 $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname
2864 $show "$link_command"
2865 $run eval "$link_command" || exit $?
2867 # Now create the wrapper script.
2868 $show "creating $output"
2870 # Quote the relink command for shipping.
2871 if test -n "$relink_command"; then
2872 relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
2875 # Quote $echo for shipping.
2876 if test "X$echo" = "X$SHELL $0 --fallback-echo"; then
2878 [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $0 --fallback-echo";;
2879 *) qecho="$SHELL `pwd`/$0 --fallback-echo";;
2881 qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"`
2883 qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"`
2886 # Only actually do things if our run command is non-null.
2887 if test -z "$run"; then
2888 # win32 will think the script is a binary if it has
2889 # a .exe suffix, so we strip it off here.
2891 *.exe) output=`echo $output|sed 's,.exe$,,'` ;;
2894 trap "$rm $output; exit 1" 1 2 15
2899 # $output - temporary wrapper script for $objdir/$outputname
2900 # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
2902 # The $output program cannot be directly executed until all the libtool
2903 # libraries that it depends on are installed.
2905 # This wrapper script should never be moved out of the build directory.
2906 # If it is, it will not operate correctly.
2908 # Sed substitution that helps us do robust quoting. It backslashifies
2909 # metacharacters that are still active within double-quoted strings.
2910 Xsed='sed -e 1s/^X//'
2911 sed_quote_subst='$sed_quote_subst'
2913 # The HP-UX ksh and POSIX shell print the target directory to stdout
2915 if test \"\${CDPATH+set}\" = set; then CDPATH=:; export CDPATH; fi
2917 relink_command=\"$relink_command\"
2919 # This environment variable determines our operation mode.
2920 if test \"\$libtool_install_magic\" = \"$magic\"; then
2921 # install mode needs the following variable:
2922 link_against_libtool_libs='$link_against_libtool_libs'
2924 # When we are sourced in execute mode, \$file and \$echo are already set.
2925 if test \"\$libtool_execute_magic\" != \"$magic\"; then
2928 # Make sure echo works.
2929 if test \"X\$1\" = X--no-reexec; then
2930 # Discard the --no-reexec flag, and continue.
2932 elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then
2933 # Yippee, \$echo works!
2936 # Restart under the correct shell, and then maybe \$echo will work.
2937 exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
2943 # Find the directory that this script lives in.
2944 thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
2945 test \"x\$thisdir\" = \"x\$file\" && thisdir=.
2947 # Follow symbolic links until we get to the real thisdir.
2948 file=\`ls -ld \"\$file\" | sed -n 's/.*-> //p'\`
2949 while test -n \"\$file\"; do
2950 destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
2952 # If there was a directory component, then change thisdir.
2953 if test \"x\$destdir\" != \"x\$file\"; then
2954 case \"\$destdir\" in
2955 [\\/]* | [A-Za-z]:[\\/]*) thisdir=\"\$destdir\" ;;
2956 *) thisdir=\"\$thisdir/\$destdir\" ;;
2960 file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
2961 file=\`ls -ld \"\$thisdir/\$file\" | sed -n 's/.*-> //p'\`
2964 # Try to get the absolute directory name.
2965 absdir=\`cd \"\$thisdir\" && pwd\`
2966 test -n \"\$absdir\" && thisdir=\"\$absdir\"
2969 if test "$fast_install" = yes; then
2971 program=lt-'$outputname'
2972 progdir=\"\$thisdir/$objdir\"
2974 if test ! -f \"\$progdir/\$program\" || \\
2975 { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | sed 1q\`; \\
2976 test \"X\$file\" != \"X\$progdir/\$program\"; }; then
2978 file=\"\$\$-\$program\"
2980 if test ! -d \"\$progdir\"; then
2981 $mkdir \"\$progdir\"
2983 $rm \"\$progdir/\$file\"
2988 # relink executable if necessary
2989 if test -n \"\$relink_command\"; then
2990 if (cd \"\$thisdir\" && eval \$relink_command); then :
2992 $rm \"\$progdir/\$file\"
2997 $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
2998 { $rm \"\$progdir/\$program\";
2999 $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; }
3000 $rm \"\$progdir/\$file\"
3004 program='$outputname'
3005 progdir=\"\$thisdir/$objdir\"
3011 if test -f \"\$progdir/\$program\"; then"
3013 # Export our shlibpath_var if we have one.
3014 if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
3016 # Add our own library path to $shlibpath_var
3017 $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
3019 # Some systems cannot cope with colon-terminated $shlibpath_var
3020 # The second colon is a workaround for a bug in BeOS R4 sed
3021 $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
3023 export $shlibpath_var
3027 # fixup the dll searchpath if we need to.
3028 if test -n "$dllsearchpath"; then
3030 # Add the dll search path components to the executable PATH
3031 PATH=$dllsearchpath:\$PATH
3036 if test \"\$libtool_execute_magic\" != \"$magic\"; then
3037 # Run the actual program with our arguments.
3040 *-*-cygwin* | *-*-mingw | *-*-os2*)
3041 # win32 systems need to use the prog path for dll
3044 exec \$progdir\\\\\$program \${1+\"\$@\"}
3049 # Export the path to the program.
3050 PATH=\"\$progdir:\$PATH\"
3053 exec \$program \${1+\"\$@\"}
3058 \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\"
3062 # The program doesn't exist.
3063 \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2
3064 \$echo \"This script is just a wrapper for \$program.\" 1>&2
3065 echo \"See the $PACKAGE documentation for more information.\" 1>&2
3076 # See if we need to build an old-fashioned archive.
3077 for oldlib in $oldlibs; do
3079 if test "$build_libtool_libs" = convenience; then
3080 oldobjs="$libobjs_save"
3081 addlibs="$convenience"
3082 build_libtool_libs=no
3084 if test "$build_libtool_libs" = module; then
3085 oldobjs="$libobjs_save"
3086 build_libtool_libs=no
3088 oldobjs="$objs "`$echo "X$libobjs_save" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`
3090 addlibs="$old_convenience"
3093 if test -n "$addlibs"; then
3094 gentop="$output_objdir/${outputname}x"
3095 $show "${rm}r $gentop"
3096 $run ${rm}r "$gentop"
3097 $show "mkdir $gentop"
3098 $run mkdir "$gentop"
3100 if test $status -ne 0 && test ! -d "$gentop"; then
3103 generated="$generated $gentop"
3105 # Add in members from convenience archives.
3106 for xlib in $addlibs; do
3107 # Extract the objects.
3109 [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
3110 *) xabs=`pwd`"/$xlib" ;;
3112 xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
3113 xdir="$gentop/$xlib"
3115 $show "${rm}r $xdir"
3120 if test $status -ne 0 && test ! -d "$xdir"; then
3123 $show "(cd $xdir && $AR x $xabs)"
3124 $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
3126 oldobjs="$oldobjs "`find $xdir -name \*.${objext} -print -o -name \*.lo -print | $NL2SP`
3130 # Do each command in the archive commands.
3131 if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
3132 eval cmds=\"$old_archive_from_new_cmds\"
3134 # Ensure that we have .o objects in place in case we decided
3135 # not to build a shared library, and have fallen back to building
3136 # static libs even though --disable-static was passed!
3137 for oldobj in $oldobjs; do
3138 if test ! -f $oldobj; then
3139 xdir=`$echo "X$oldobj" | $Xsed -e 's%/[^/]*$%%'`
3140 if test "X$xdir" = "X$oldobj"; then
3145 baseobj=`$echo "X$oldobj" | $Xsed -e 's%^.*/%%'`
3146 obj=`$echo "X$baseobj" | $Xsed -e "$o2lo"`
3147 $show "(cd $xdir && ${LN_S} $obj $baseobj)"
3148 $run eval '(cd $xdir && ${LN_S} $obj $baseobj)' || exit $?
3152 eval cmds=\"$old_archive_cmds\"
3154 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
3155 for cmd in $cmds; do
3158 $run eval "$cmd" || exit $?
3163 if test -n "$generated"; then
3164 $show "${rm}r$generated"
3165 $run ${rm}r$generated
3168 # Now create the libtool archive.
3172 if test "$release_suffix" = all; then
3173 test "$build_old_libs" = yes && old_library="$libname$release.$libext"
3175 test "$build_old_libs" = yes && old_library="$libname.$libext"
3177 $show "creating $output"
3179 if test -n "$xrpath"; then
3181 for libdir in $xrpath; do
3182 temp_xrpath="$temp_xrpath -R$libdir"
3184 dependency_libs="$temp_xrpath $dependency_libs"
3187 # Only create the output if not a dry run.
3188 if test -z "$run"; then
3189 for installed in no yes; do
3190 if test "$installed" = yes; then
3191 if test -z "$install_libdir"; then
3194 output="$output_objdir/$outputname"i
3198 # $outputname - a libtool library file
3199 # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
3201 # Please DO NOT delete this file!
3202 # It is necessary for linking the library.
3204 # The name that we can dlopen(3).
3207 # Names of this library.
3208 library_names='$library_names'
3210 # The name of the static archive.
3211 old_library='$old_library'
3213 # Libraries that this one depends upon.
3214 dependency_libs='$dependency_libs'
3216 # Version information for $libname.
3221 # Is this an already installed library?
3222 installed=$installed
3224 # Directory that this library needs to be installed in:
3225 libdir='$install_libdir'\
3230 # Do a symbolic link so that the libtool archive can be found in
3231 # LD_LIBRARY_PATH before the program is installed.
3232 $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)"
3233 $run eval "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" || exit $?
3239 # libtool install mode
3241 modename="$modename: install"
3243 # There may be an optional sh(1) argument at the beginning of
3244 # install_prog (especially on Windows NT).
3245 if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh; then
3246 # Aesthetically quote it.
3247 arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
3249 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
3253 install_prog="$arg "
3261 # The real first argument should be the name of the installation program.
3262 # Aesthetically quote it.
3263 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
3265 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
3269 install_prog="$install_prog$arg"
3271 # We need to accept at least all the BSD install flags.
3281 if test -n "$dest"; then
3282 files="$files $dest"
3300 # If the previous option needed an argument, then skip it.
3301 if test -n "$prev"; then
3310 # Aesthetically quote the argument.
3311 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
3313 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
3317 install_prog="$install_prog $arg"
3320 if test -z "$install_prog"; then
3321 $echo "$modename: you must specify an install program" 1>&2
3326 if test -n "$prev"; then
3327 $echo "$modename: the \`$prev' option requires an argument" 1>&2
3332 if test -z "$files"; then
3333 if test -z "$dest"; then
3334 $echo "$modename: no file or destination specified" 1>&2
3336 $echo "$modename: you must specify a destination" 1>&2
3342 # Strip any trailing slash from the destination.
3343 dest=`$echo "X$dest" | $Xsed -e 's%/$%%'`
3345 # Check to see that the destination is a directory.
3346 test -d "$dest" && isdir=yes
3347 if test "$isdir" = yes; then
3351 destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'`
3352 test "X$destdir" = "X$dest" && destdir=.
3353 destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'`
3355 # Not a directory, so check to see that there is only one file specified.
3357 if test $# -gt 2; then
3358 $echo "$modename: \`$dest' is not a directory" 1>&2
3364 [\\/]* | [A-Za-z]:[\\/]*) ;;
3366 for file in $files; do
3370 $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2
3379 # This variable tells wrapper scripts just to set variables rather
3380 # than running their programs.
3381 libtool_install_magic="$magic"
3386 for file in $files; do
3388 # Do each installation.
3391 # Do the static libraries later.
3392 staticlibs="$staticlibs $file"
3396 # Check to see that this really is a libtool archive.
3397 if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
3399 $echo "$modename: \`$file' is not a valid libtool archive" 1>&2
3406 # If there is no directory component, then add one.
3408 */* | *\\*) . $file ;;
3412 # Add the libdir to current_libdirs if it is the destination.
3413 if test "X$destdir" = "X$libdir"; then
3414 case "$current_libdirs " in
3416 *) current_libdirs="$current_libdirs $libdir" ;;
3419 # Note the libdir as a future libdir.
3420 case "$future_libdirs " in
3422 *) future_libdirs="$future_libdirs $libdir" ;;
3426 dir="`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/"
3427 test "X$dir" = "X$file/" && dir=
3430 # See the names of the shared library.
3431 set dummy $library_names
3432 if test -n "$2"; then
3437 # Install the shared library and build the symlinks.
3438 $show "$install_prog $dir/$realname $destdir/$realname"
3439 $run eval "$install_prog $dir/$realname $destdir/$realname" || exit $?
3441 if test $# -gt 0; then
3442 # Delete the old symlinks, and create new ones.
3445 if test "$linkname" != "$realname"; then
3446 $show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
3447 $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
3452 # Do each command in the postinstall commands.
3453 lib="$destdir/$realname"
3454 eval cmds=\"$postinstall_cmds\"
3455 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
3456 for cmd in $cmds; do
3459 $run eval "$cmd" || exit $?
3464 # Install the pseudo-library for information purposes.
3465 if test "$install_ltlibs" = yes; then
3466 name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
3467 instname="$dir/$name"i
3468 $show "$install_prog $instname $destdir/$name"
3469 $run eval "$install_prog $instname $destdir/$name" || exit $?
3472 # Maybe install the static library, too.
3473 test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
3477 # Install (i.e. copy) a libtool object.
3479 # Figure out destination file name, if it wasn't already specified.
3480 if test -n "$destname"; then
3481 destfile="$destdir/$destname"
3483 destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
3484 destfile="$destdir/$destfile"
3487 # Deduce the name of the destination old-style object file.
3490 staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"`
3493 staticdest="$destfile"
3497 $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2
3503 # Install the libtool object if requested.
3504 if test -n "$destfile"; then
3505 $show "$install_prog $file $destfile"
3506 $run eval "$install_prog $file $destfile" || exit $?
3509 # Install the old object if enabled.
3510 if test "$build_old_libs" = yes; then
3511 # Deduce the name of the old-style object file.
3512 staticobj=`$echo "X$file" | $Xsed -e "$lo2o"`
3514 $show "$install_prog $staticobj $staticdest"
3515 $run eval "$install_prog \$staticobj \$staticdest" || exit $?
3521 # Figure out destination file name, if it wasn't already specified.
3522 if test -n "$destname"; then
3523 destfile="$destdir/$destname"
3525 destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
3526 destfile="$destdir/$destfile"
3529 # Do a test to see if this is really a libtool program.
3530 if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
3531 link_against_libtool_libs=
3534 # If there is no directory component, then add one.
3536 */* | *\\*) . $file ;;
3540 # Check the variables that should have been set.
3541 if test -z "$link_against_libtool_libs"; then
3542 $echo "$modename: invalid libtool wrapper script \`$file'" 1>&2
3547 for lib in $link_against_libtool_libs; do
3548 # Check to see that each library is installed.
3550 if test -f "$lib"; then
3551 # If there is no directory component, then add one.
3553 */* | *\\*) . $lib ;;
3557 libfile="$libdir/`$echo "X$lib" | $Xsed -e 's%^.*/%%g'`"
3558 if test -n "$libdir" && test ! -f "$libfile"; then
3564 if test "$fast_install" = no && test -n "$relink_command"; then
3565 if test "$finalize" = yes && test -z "$run"; then
3567 test -n "$TMPDIR" && tmpdir="$TMPDIR"
3568 tmpdir="$tmpdir/libtool-$$"
3569 if $mkdir -p "$tmpdir" && chmod 700 "$tmpdir"; then :
3571 $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2
3574 outputname="$tmpdir/$file"
3575 # Replace the output file specification.
3576 relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
3578 $show "$relink_command"
3579 if $run eval "$relink_command"; then :
3581 $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
3587 $echo "$modename: warning: cannot relink \`$file'" 1>&2
3590 # Install the binary that we compiled earlier.
3591 file=`$echo "X$file" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
3595 $show "$install_prog$stripme $file $destfile"
3596 $run eval "$install_prog\$stripme \$file \$destfile" || exit $?
3597 test -n "$outputname" && ${rm}r "$tmpdir"
3602 for file in $staticlibs; do
3603 name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
3605 # Set up the ranlib parameters.
3606 oldlib="$destdir/$name"
3608 $show "$install_prog $file $oldlib"
3609 $run eval "$install_prog \$file \$oldlib" || exit $?
3611 # Do each command in the postinstall commands.
3612 eval cmds=\"$old_postinstall_cmds\"
3613 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
3614 for cmd in $cmds; do
3617 $run eval "$cmd" || exit $?
3622 if test -n "$future_libdirs"; then
3623 $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2
3626 if test -n "$current_libdirs"; then
3627 # Maybe just do a dry run.
3628 test -n "$run" && current_libdirs=" -n$current_libdirs"
3629 exec $SHELL $0 --finish$current_libdirs
3636 # libtool finish mode
3638 modename="$modename: finish"
3642 if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
3645 libdirs="$libdirs $dir"
3648 for libdir in $libdirs; do
3649 if test -n "$finish_cmds"; then
3650 # Do each command in the finish commands.
3651 eval cmds=\"$finish_cmds\"
3652 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
3653 for cmd in $cmds; do
3656 $run eval "$cmd" || admincmds="$admincmds
3661 if test -n "$finish_eval"; then
3662 # Do the single finish_eval.
3663 eval cmds=\"$finish_eval\"
3664 $run eval "$cmds" || admincmds="$admincmds
3670 # Exit here if they wanted silent mode.
3671 test "$show" = : && exit 0
3673 echo "----------------------------------------------------------------------"
3674 echo "Libraries have been installed in:"
3675 for libdir in $libdirs; do
3679 echo "If you ever happen to want to link against installed libraries"
3680 echo "in a given directory, LIBDIR, you must either use libtool, and"
3681 echo "specify the full pathname of the library, or use \`-LLIBDIR'"
3682 echo "flag during linking and do at least one of the following:"
3683 if test -n "$shlibpath_var"; then
3684 echo " - add LIBDIR to the \`$shlibpath_var' environment variable"
3685 echo " during execution"
3687 if test -n "$runpath_var"; then
3688 echo " - add LIBDIR to the \`$runpath_var' environment variable"
3689 echo " during linking"
3691 if test -n "$hardcode_libdir_flag_spec"; then
3693 eval flag=\"$hardcode_libdir_flag_spec\"
3695 echo " - use the \`$flag' linker flag"
3697 if test -n "$admincmds"; then
3698 echo " - have your system administrator run these commands:$admincmds"
3700 if test -f /etc/ld.so.conf; then
3701 echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
3704 echo "See any operating system documentation about shared libraries for"
3705 echo "more information, such as the ld(1) and ld.so(8) manual pages."
3706 echo "----------------------------------------------------------------------"
3710 # libtool execute mode
3712 modename="$modename: execute"
3714 # The first argument is the command name.
3716 if test -z "$cmd"; then
3717 $echo "$modename: you must specify a COMMAND" 1>&2
3722 # Handle -dlopen flags immediately.
3723 for file in $execute_dlfiles; do
3724 if test ! -f "$file"; then
3725 $echo "$modename: \`$file' is not a file" 1>&2
3733 # Check to see that this really is a libtool archive.
3734 if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
3736 $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
3741 # Read the libtool library.
3745 # If there is no directory component, then add one.
3747 */* | *\\*) . $file ;;
3751 # Skip this library if it cannot be dlopened.
3752 if test -z "$dlname"; then
3753 # Warn if it was a shared library.
3754 test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'"
3758 dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
3759 test "X$dir" = "X$file" && dir=.
3761 if test -f "$dir/$objdir/$dlname"; then
3764 $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
3770 # Just add the directory containing the .lo file.
3771 dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
3772 test "X$dir" = "X$file" && dir=.
3776 $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2
3781 # Get the absolute pathname.
3782 absdir=`cd "$dir" && pwd`
3783 test -n "$absdir" && dir="$absdir"
3785 # Now add the directory to shlibpath_var.
3786 if eval "test -z \"\$$shlibpath_var\""; then
3787 eval "$shlibpath_var=\"\$dir\""
3789 eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
3793 # This variable tells wrapper scripts just to set shlibpath_var
3794 # rather than running their programs.
3795 libtool_execute_magic="$magic"
3797 # Check if any of the arguments is a wrapper script.
3804 # Do a test to see if this is really a libtool program.
3805 if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
3806 # If there is no directory component, then add one.
3808 */* | *\\*) . $file ;;
3812 # Transform arg to wrapped name.
3813 file="$progdir/$program"
3817 # Quote arguments (to preserve shell metacharacters).
3818 file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"`
3819 args="$args \"$file\""
3822 if test -z "$run"; then
3823 if test -n "$shlibpath_var"; then
3824 # Export the shlibpath_var.
3825 eval "export $shlibpath_var"
3828 # Restore saved enviroment variables
3829 if test "${save_LC_ALL+set}" = set; then
3830 LC_ALL="$save_LC_ALL"; export LC_ALL
3832 if test "${save_LANG+set}" = set; then
3833 LANG="$save_LANG"; export LANG
3836 # Now actually exec the command.
3837 eval "exec \$cmd$args"
3839 $echo "$modename: cannot exec \$cmd$args"
3842 # Display what would be done.
3843 if test -n "$shlibpath_var"; then
3844 eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\""
3845 $echo "export $shlibpath_var"
3852 # libtool uninstall mode
3854 modename="$modename: uninstall"
3861 -*) rm="$rm $arg" ;;
3862 *) files="$files $arg" ;;
3866 if test -z "$rm"; then
3867 $echo "$modename: you must specify an RM program" 1>&2
3872 for file in $files; do
3873 dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
3874 test "X$dir" = "X$file" && dir=.
3875 name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
3881 # Possibly a libtool archive, so verify it.
3882 if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
3885 # Delete the libtool libraries and symlinks.
3886 for n in $library_names; do
3887 rmfiles="$rmfiles $dir/$n"
3889 test -n "$old_library" && rmfiles="$rmfiles $dir/$old_library"
3891 $show "$rm $rmfiles"
3894 if test -n "$library_names"; then
3895 # Do each command in the postuninstall commands.
3896 eval cmds=\"$postuninstall_cmds\"
3897 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
3898 for cmd in $cmds; do
3906 if test -n "$old_library"; then
3907 # Do each command in the old_postuninstall commands.
3908 eval cmds=\"$old_postuninstall_cmds\"
3909 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
3910 for cmd in $cmds; do
3918 # FIXME: should reinstall the best remaining shared library.
3923 if test "$build_old_libs" = yes; then
3924 oldobj=`$echo "X$name" | $Xsed -e "$lo2o"`
3925 rmfiles="$rmfiles $dir/$oldobj"
3927 $show "$rm $rmfiles"
3932 $show "$rm $rmfiles"
3941 $echo "$modename: you must specify a MODE" 1>&2
3942 $echo "$generic_help" 1>&2
3947 $echo "$modename: invalid operation mode \`$mode'" 1>&2
3948 $echo "$generic_help" 1>&2
3950 fi # test -z "$show_help"
3952 # We need to display help for each of the modes.
3955 "Usage: $modename [OPTION]... [MODE-ARG]...
3957 Provide generalized library-building support services.
3959 --config show all configuration variables
3960 --debug enable verbose shell tracing
3961 -n, --dry-run display commands without modifying any files
3962 --features display basic configuration information and exit
3963 --finish same as \`--mode=finish'
3964 --help display this help message and exit
3965 --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS]
3966 --quiet same as \`--silent'
3967 --silent don't print informational messages
3968 --version print version information
3970 MODE must be one of the following:
3972 compile compile a source file into a libtool object
3973 execute automatically set library path, then run a program
3974 finish complete the installation of libtool libraries
3975 install install libraries or executables
3976 link create a library or an executable
3977 uninstall remove libraries from an installed directory
3979 MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for
3980 a more detailed description of MODE."
3986 "Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
3988 Compile a source file into a libtool library object.
3990 This mode accepts the following additional options:
3992 -o OUTPUT-FILE set the output file name to OUTPUT-FILE
3993 -static always build a \`.o' file suitable for static linking
3995 COMPILE-COMMAND is a command to be used in creating a \`standard' object file
3996 from the given SOURCEFILE.
3998 The output file name is determined by removing the directory component from
3999 SOURCEFILE, then substituting the C source code suffix \`.c' with the
4000 library object suffix, \`.lo'."
4005 "Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]...
4007 Automatically set library path, then run a program.
4009 This mode accepts the following additional options:
4011 -dlopen FILE add the directory containing FILE to the library path
4013 This mode sets the library path environment variable according to \`-dlopen'
4016 If any of the ARGS are libtool executable wrappers, then they are translated
4017 into their corresponding uninstalled binary, and any of their required library
4018 directories are added to the library path.
4020 Then, COMMAND is executed, with ARGS as arguments."
4025 "Usage: $modename [OPTION]... --mode=finish [LIBDIR]...
4027 Complete the installation of libtool libraries.
4029 Each LIBDIR is a directory that contains libtool libraries.
4031 The commands that this mode executes may require superuser privileges. Use
4032 the \`--dry-run' option if you just want to see what would be executed."
4037 "Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND...
4039 Install executables or libraries.
4041 INSTALL-COMMAND is the installation command. The first component should be
4042 either the \`install' or \`cp' program.
4044 The rest of the components are interpreted as arguments to that command (only
4045 BSD-compatible install options are recognized)."
4050 "Usage: $modename [OPTION]... --mode=link LINK-COMMAND...
4052 Link object files or libraries together to form another library, or to
4053 create an executable program.
4055 LINK-COMMAND is a command using the C compiler that you would use to create
4056 a program from several object files.
4058 The following components of LINK-COMMAND are treated specially:
4060 -all-static do not do any dynamic linking at all
4061 -avoid-version do not add a version suffix if possible
4062 -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime
4063 -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols
4064 -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
4065 -export-symbols SYMFILE
4066 try to export only the symbols listed in SYMFILE
4067 -export-symbols-regex REGEX
4068 try to export only the symbols matching REGEX
4069 -LLIBDIR search LIBDIR for required installed libraries
4070 -lNAME OUTPUT-FILE requires the installed library libNAME
4071 -module build a library that can dlopened
4072 -no-undefined declare that a library does not refer to external symbols
4073 -o OUTPUT-FILE create OUTPUT-FILE from the specified objects
4074 -release RELEASE specify package release information
4075 -rpath LIBDIR the created library will eventually be installed in LIBDIR
4076 -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries
4077 -static do not do any dynamic linking of libtool libraries
4078 -version-info CURRENT[:REVISION[:AGE]]
4079 specify library version info [each variable defaults to 0]
4081 All other options (arguments beginning with \`-') are ignored.
4083 Every other argument is treated as a filename. Files ending in \`.la' are
4084 treated as uninstalled libtool libraries, other files are standard or library
4087 If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
4088 only library objects (\`.lo' files) may be specified, and \`-rpath' is
4089 required, except when creating a convenience library.
4091 If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
4092 using \`ar' and \`ranlib', or on Windows using \`lib'.
4094 If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
4095 is created, otherwise an executable program is created."
4100 "Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
4102 Remove libraries from an installation directory.
4104 RM is the name of the program to use to delete files associated with each FILE
4105 (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
4108 If FILE is a libtool library, all the files associated with it are deleted.
4109 Otherwise, only FILE itself is deleted using RM."
4113 $echo "$modename: invalid operation mode \`$mode'" 1>&2
4120 $echo "Try \`$modename --help' for more information about other modes."