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-1998 Free Software Foundation, Inc.
5 # 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 # The name of this program.
27 progname=`$echo "$0" | sed 's%^.*/%%'`
36 help="Try \`$progname --help' for more information."
37 magic="%%%MAGIC variable%%%"
42 # Sed substitution that helps us do robust quoting. It backslashifies
43 # metacharacters that are still active within double-quoted strings.
45 sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
48 # Only set LANG and LC_ALL to C if already set.
49 # These must not be set unconditionally because not all systems understand
50 # e.g. LANG=C (notably SCO).
51 if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
52 if test "${LANG+set}" = set; then LANG=C; export LANG; fi
54 if test "$LTCONFIG_VERSION" != "$VERSION"; then
55 echo "$modename: ltconfig version \`$LTCONFIG_VERSION' does not match $PROGRAM version \`$VERSION'" 1>&2
56 echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
60 if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
61 echo "$modename: not configured to build any kind of library" 1>&2
62 echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
76 # Parse our command line options once, thoroughly.
83 -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;;
87 # If the previous option needs an argument, assign it.
88 if test -n "$prev"; then
91 eval "$prev=\"\$$prev \$arg\""
103 # Have we seen a non-optional argument yet?
110 echo "$PROGRAM (GNU $PACKAGE) $VERSION"
120 if test "$build_libtool_libs" = yes; then
121 echo "enable shared libraries"
123 echo "disable shared libraries"
125 if test "$build_old_libs" = yes; then
126 echo "enable static libraries"
128 echo "disable static libraries"
133 --finish) mode="finish" ;;
135 --mode) prevopt="--mode" prev=mode ;;
136 --mode=*) mode="$optarg" ;;
148 $echo "$modename: unrecognized option \`$arg'" 1>&2
160 if test -n "$prevopt"; then
161 $echo "$modename: option \`$prevopt' requires an argument" 1>&2
166 if test -z "$show_help"; then
168 # Infer the operation mode.
169 if test -z "$mode"; then
171 *cc | *++ | gcc* | *-gcc*)
193 # If we have no mode, but dlfiles were specified, then do execute mode.
194 test -n "$execute_dlfiles" && mode=execute
196 # Just use the default operation mode.
197 if test -z "$mode"; then
198 if test -n "$nonopt"; then
199 $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2
201 $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2
208 # Only execute mode is allowed to have -dlopen flags.
209 if test -n "$execute_dlfiles" && test "$mode" != execute; then
210 $echo "$modename: unrecognized option \`-dlopen'" 1>&2
215 # Change the help message to a mode-specific one.
217 help="Try \`$modename --help --mode=$mode' for more information."
219 # These modes are in order of execution frequency so that they run quickly.
221 # libtool compile mode
223 modename="$modename: compile"
224 # Get the compilation command and the source file.
232 # Accept any command-line options.
235 $echo "$modename: you cannot specify the output filename with \`-o'" 1>&2
241 build_libtool_libs=no
247 # Accept the current argument as the source file.
251 # Aesthetically quote the previous argument.
253 # Backslashify any backslashes, double quotes, and dollar signs.
254 # These are the only characters that are still specially
255 # interpreted inside of double-quoted scrings.
256 lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"`
258 # Double-quote args containing other shell metacharacters.
259 # Many Bourne shells cannot handle close brackets correctly in scan
260 # sets, so we specify it separately.
262 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
263 lastarg="\"$lastarg\""
267 # Add the previous argument to base_compile.
268 if test -z "$base_compile"; then
269 base_compile="$lastarg"
271 base_compile="$base_compile $lastarg"
275 # Get the name of the library object.
276 libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'`
278 # Recognize several different file suffixes.
293 libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
296 *.lo) obj=`$echo "X$libobj" | $Xsed -e 's/\.lo$/.o/'` ;;
298 $echo "$modename: cannot determine name of library object from \`$srcfile'" 1>&2
303 if test -z "$base_compile"; then
304 $echo "$modename: you must specify a compilation command" 1>&2
309 # Delete any leftover library objects.
310 if test "$build_old_libs" = yes; then
311 $run $rm $obj $libobj
312 trap "$run $rm $obj $libobj; exit 1" 1 2 15
315 trap "$run $rm $libobj; exit 1" 1 2 15
318 # Only build a PIC object if we are building libtool libraries.
319 if test "$build_libtool_libs" = yes; then
320 # Without this assignment, base_compile gets emptied.
321 fbsd_hideous_sh_bug=$base_compile
323 # All platforms use -DPIC, to notify preprocessed assembler code.
324 $show "$base_compile$pic_flag -DPIC $srcfile"
325 if $run eval "$base_compile\$pic_flag -DPIC \$srcfile"; then :
327 test -n "$obj" && $run $rm $obj
331 # If we have no pic_flag, then copy the object into place and finish.
332 if test -z "$pic_flag"; then
333 $show "$LN_S $obj $libobj"
334 $run $LN_S $obj $libobj
338 # Just move the object, then go on to compile the next one
339 $show "$mv $obj $libobj"
340 $run $mv $obj $libobj || exit 1
342 # Allow error messages only from the first compilation.
343 suppress_output=' >/dev/null 2>&1'
346 # Only build a position-dependent object if we build old libraries.
347 if test "$build_old_libs" = yes; then
348 # Suppress compiler output if we already did a PIC compilation.
349 $show "$base_compile $srcfile$suppress_output"
350 if $run eval "$base_compile \$srcfile$suppress_output"; then :
352 $run $rm $obj $libobj
357 # Create an invalid libtool object if no PIC, so that we do not
358 # accidentally link it into a program.
359 if test "$build_libtool_libs" != yes; then
360 $show "echo timestamp > $libobj"
361 $run eval "echo timestamp > \$libobj" || exit $?
369 modename="$modename: link"
372 compile_command="$CC"
373 finalize_command="$CC"
383 link_against_libtool_libs=
395 # We need to know -static, to get the right output filenames.
399 -all-static | -static)
400 if test "X$arg" = "X-all-static" && test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
401 $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2
403 build_libtool_libs=no
410 # See if our shared archives depend on static archives.
411 test -n "$old_archive_from_new_cmds" && build_old_libs=yes
413 # Go through the arguments, transforming them on the way.
416 # If the previous option needs an argument, assign it.
417 if test -n "$prev"; then
420 compile_command="$compile_command @OUTPUT@"
421 finalize_command="$finalize_command @OUTPUT@"
428 *.la | *.lo) ;; # We handle these cases below.
430 dlprefiles="$dlprefiles $arg"
431 test "$prev" = dlfiles && dlfiles="$dlfiles $arg"
447 eval "$prev=\"\$arg\""
458 if test -n "$link_static_flag"; then
459 compile_command="$compile_command $link_static_flag"
460 finalize_command="$finalize_command $link_static_flag"
466 # FIXME: remove this flag sometime in the future.
467 $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2
482 if test "$export_dynamic" != yes; then
484 if test -n "$export_dynamic_flag_spec"; then
485 eval arg=\"$export_dynamic_flag_spec\"
490 # Add the symbol object into the linking commands.
491 compile_command="$compile_command @SYMFILE@"
492 finalize_command="$finalize_command @SYMFILE@"
497 dir=`$echo "X$arg" | $Xsed -e 's%^-L\(.*\)$%\1%'`
500 # Add the corresponding hardcode_libdir_flag, if it is not identical.
503 $echo "$modename: \`-L$dir' cannot specify a relative directory" 1>&2
507 deplibs="$deplibs $arg"
510 -l*) deplibs="$deplibs $arg" ;;
530 # If we have no pic_flag, then this is the same as -all-static.
531 if test -z "$pic_flag" && test -n "$link_static_flag"; then
532 compile_command="$compile_command $link_static_flag"
533 finalize_command="$finalize_command $link_static_flag"
543 # Some other compiler flag.
545 # Unknown arguments in both finalize_command and compile_command need
546 # to be aesthetically quoted because they are evaled later.
547 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
549 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
562 if test "$prev" = dlfiles; then
563 dlfiles="$dlfiles $arg"
564 if test "$build_libtool_libs" = yes; then
568 # If libtool objects are unsupported, then we need to preload.
573 if test "$prev" = dlprefiles; then
574 # Preload the old-style object.
575 dlprefiles="$dlprefiles "`$echo "X$arg" | $Xsed -e 's/\.lo$/\.o/'`
578 libobjs="$libobjs $arg"
579 olibobjs="$olibobjs "`$echo "X$arg" | $Xsed -e 's/\.lo$/\.o/'`
583 # A libtool-controlled library.
590 # Check to see that this really is a libtool archive.
591 if (sed -e '2q' $arg | egrep '^# Generated by ltmain\.sh') >/dev/null 2>&1; then :
593 $echo "$modename: \`$arg' is not a valid libtool archive" 1>&2
597 # If there is no directory component, then add one.
599 */* | *\\*) . $arg ;;
603 if test -z "$libdir"; then
604 $echo "$modename: \`$arg' contains no -rpath information" 1>&2
608 # Get the name of the library we link against.
610 for l in $old_library $library_names; do
614 if test -z "$linklib"; then
615 $echo "$modename: cannot find name of link library for \`$arg'" 1>&2
619 # Find the relevant object directory and library name.
620 name=`$echo "X$arg" | $Xsed -e 's%^.*/%%' -e 's/\.la$//' -e 's/^lib//'`
621 dir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
622 if test "X$dir" = "X$arg"; then
628 # This library was specified with -dlopen.
629 if test "$prev" = dlfiles; then
630 dlfiles="$dlfiles $arg"
631 if test -z "$dlname"; then
632 # If there is no dlname, we need to preload.
635 # We should not create a dependency on this library, but we
636 # may need any libraries it requires.
637 compile_command="$compile_command$dependency_libs"
638 finalize_command="$finalize_command$dependency_libs"
644 # The library was specified with -dlpreopen.
645 if test "$prev" = dlprefiles; then
646 # Prefer using a static library (so that no silly _DYNAMIC symbols
647 # are required to link).
648 if test -n "$old_library"; then
649 dlprefiles="$dlprefiles $dir/$old_library"
651 dlprefiles="$dlprefiles $dir/$linklib"
656 if test "$build_libtool_libs" = yes && test -n "$library_names"; then
657 link_against_libtool_libs="$link_against_libtool_libs $arg"
658 if test -n "$shlibpath_var"; then
659 # Make sure the rpath contains only unique directories.
660 case "$temp_rpath " in
662 *) temp_rpath="$temp_rpath $dir" ;;
666 # This is the magic to use -rpath.
667 if test -n "$hardcode_libdir_flag_spec"; then
668 if test -n "$hardcode_libdir_separator"; then
669 if test -z "$hardcode_libdirs"; then
670 # Put the magic libdir with the hardcode flag.
671 hardcode_libdirs="$libdir"
672 libdir="@HARDCODE_LIBDIRS@"
674 # Just accumulate the unique libdirs.
675 case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in
676 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
679 hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
686 if test -n "$libdir"; then
687 eval flag=\"$hardcode_libdir_flag_spec\"
689 compile_command="$compile_command $flag"
690 finalize_command="$finalize_command $flag"
692 elif test -n "$runpath_var"; then
693 # Do the same for the permanent run path.
694 case "$perm_rpath " in
696 *) perm_rpath="$perm_rpath $libdir" ;;
701 case "$hardcode_action" in
703 if test "$hardcode_direct" = no; then
704 compile_command="$compile_command $dir/$linklib"
705 elif test "$hardcode_minus_L" = no; then
706 compile_command="$compile_command -L$dir -l$name"
707 elif test "$hardcode_shlibpath_var" = no; then
708 compile_shlibpath="$compile_shlibpath$dir:"
709 compile_command="$compile_command -l$name"
714 # We need an absolute path.
716 /* | [A-Za-z]:\\*) ;;
718 absdir=`cd "$dir" && pwd`
719 if test -z "$absdir"; then
720 $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2
727 if test "$hardcode_direct" = yes; then
728 compile_command="$compile_command $dir/$linklib"
729 elif test "$hardcode_minus_L" = yes; then
730 compile_command="$compile_command -L$dir -l$name"
731 elif test "$hardcode_shlibpath_var" = yes; then
732 compile_shlibpath="$compile_shlibpath$dir:"
733 compile_command="$compile_command -l$name"
738 $echo "$modename: \`$hardcode_action' is an unknown hardcode action" 1>&2
743 # Finalize command for both is simple: just hardcode it.
744 if test "$hardcode_direct" = yes; then
745 finalize_command="$finalize_command $libdir/$linklib"
746 elif test "$hardcode_minus_L" = yes; then
747 finalize_command="$finalize_command -L$libdir -l$name"
748 elif test "$hardcode_shlibpath_var" = yes; then
749 finalize_shlibpath="$finalize_shlibpath$libdir:"
750 finalize_command="$finalize_command -l$name"
752 # We cannot seem to hardcode it, guess we'll fake it.
753 finalize_command="$finalize_command -L$libdir -l$name"
756 # Transform directly to old archives if we don't build new libraries.
757 if test -n "$pic_flag" && test -z "$old_library"; then
758 $echo "$modename: cannot find static library for \`$arg'" 1>&2
762 # Here we assume that one of hardcode_direct or hardcode_minus_L
763 # is not unsupported. This is valid on all known static and
765 if test "$hardcode_direct" != unsupported; then
766 test -n "$old_library" && linklib="$old_library"
767 compile_command="$compile_command $dir/$linklib"
768 finalize_command="$finalize_command $dir/$linklib"
770 compile_command="$compile_command -L$dir -l$name"
771 finalize_command="$finalize_command -L$dir -l$name"
775 # Add in any libraries that this one depends upon.
776 compile_command="$compile_command$dependency_libs"
777 finalize_command="$finalize_command$dependency_libs"
781 # Some other compiler argument.
783 # Unknown arguments in both finalize_command and compile_command need
784 # to be aesthetically quoted because they are evaled later.
785 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
787 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
794 # Now actually substitute the argument into the commands.
795 if test -n "$arg"; then
796 compile_command="$compile_command $arg"
797 finalize_command="$finalize_command $arg"
801 if test -n "$prev"; then
802 $echo "$modename: the \`$prevarg' option requires an argument" 1>&2
807 if test -n "$vinfo" && test -n "$release"; then
808 $echo "$modename: you cannot specify both \`-version-info' and \`-release'" 1>&2
817 $echo "$modename: you must specify an output file" 1>&2
823 $echo "$modename: output file \`$output' must have no directory components" 1>&2
828 # Now set the variables for building old libraries.
829 build_libtool_libs=no
837 # Make sure we only generate libraries of the form `libNAME.la'.
841 $echo "$modename: libtool library \`$arg' must begin with \`lib'" 1>&2
847 name=`$echo "X$output" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
848 eval libname=\"$libname_spec\"
850 # All the library-specific variables (install_libdir is set above).
858 if test -n "$objs"; then
859 $echo "$modename: cannot build libtool library \`$output' from non-libtool objects:$objs" 2>&1
863 # How the heck are we supposed to write a wrapper for a shared library?
864 if test -n "$link_against_libtool_libs"; then
865 $echo "$modename: libtool library \`$output' may not depend on uninstalled libraries:$link_against_libtool_libs" 1>&2
869 if test -n "$dlfiles$dlprefiles"; then
870 $echo "$modename: warning: \`-dlopen' is ignored while creating libtool libraries" 1>&2
871 # Nullify the symbol file.
872 compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
873 finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
876 if test -z "$rpath"; then
877 $echo "$modename: you must specify an installation directory with \`-rpath'" 1>&2
883 if test $# -gt 2; then
884 $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2
888 # Parse the version information argument.
889 IFS="${IFS= }"; save_ifs="$IFS"; IFS=':'
893 if test -n "$5"; then
894 $echo "$modename: too many parameters to \`-version-info'" 1>&2
899 test -n "$2" && current="$2"
900 test -n "$3" && revision="$3"
901 test -n "$4" && age="$4"
903 # Check that each of the things are valid numbers.
905 0 | [1-9] | [1-9][0-9]*) ;;
907 $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2
908 $echo "$modename: \`$vinfo' is not valid version information" 1>&2
914 0 | [1-9] | [1-9][0-9]*) ;;
916 $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2
917 $echo "$modename: \`$vinfo' is not valid version information" 1>&2
923 0 | [1-9] | [1-9][0-9]*) ;;
925 $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2
926 $echo "$modename: \`$vinfo' is not valid version information" 1>&2
931 if test $age -gt $current; then
932 $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2
933 $echo "$modename: \`$vinfo' is not valid version information" 1>&2
937 # Calculate the version variables.
938 version_vars="version_type current age revision"
939 case "$version_type" in
943 version_vars="$version_vars major versuffix"
944 major=`expr $current - $age`
945 versuffix="$major.$age.$revision"
949 version_vars="$version_vars versuffix verstring"
950 major=`expr $current - $age`
951 versuffix="$current.$age.$revision"
952 verstring="$versuffix"
954 # Add in all the interfaces that we are compatible with.
956 while test $loop != 0; do
957 iface=`expr $current - $loop`
958 loop=`expr $loop - 1`
959 verstring="$verstring:${iface}.0"
962 # Make executables depend on our current version.
963 verstring="$verstring:${current}.0"
967 version_vars="$version_vars major versuffix"
969 versuffix="$current.$revision"
973 $echo "$modename: unknown library version type \`$version_type'" 1>&2
974 echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
979 # Create the output directory, or remove our outputs if we need to.
980 if test -d $objdir; then
981 $show "$rm $objdir/$output $objdir/$libname.* $objdir/${libname}${release}.*"
982 $run $rm $objdir/$output $objdir/$libname.* $objdir/${libname}${release}.*
984 $show "$mkdir $objdir"
987 if test $status -eq 0 || test -d $objdir; then :
993 # Check to see if the archive will have undefined symbols.
994 if test "$allow_undefined" = yes; then
995 if test "$allow_undefined_flag" = unsupported; then
996 $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2
997 build_libtool_libs=no
1001 # Don't allow undefined symbols.
1002 allow_undefined_flag="$no_undefined_flag"
1005 # Add libc to deplibs on all systems.
1006 dependency_libs="$deplibs"
1007 deplibs="$deplibs -lc"
1009 if test "$build_libtool_libs" = yes; then
1010 # Get the real and link names of the library.
1011 eval library_names=\"$library_names_spec\"
1012 set dummy $library_names
1016 if test -n "$soname_spec"; then
1017 eval soname=\"$soname_spec\"
1022 lib="$objdir/$realname"
1025 linknames="$linknames $link"
1028 # Use standard objects if they are PIC.
1029 test -z "$pic_flag" && libobjs="$olibobjs"
1031 # Do each of the archive commands.
1032 eval cmds=\"$archive_cmds\"
1033 IFS="${IFS= }"; save_ifs="$IFS"; IFS=';'
1034 for cmd in $cmds; do
1037 $run eval "$cmd" || exit $?
1041 # Create links to the real library.
1042 for linkname in $linknames; do
1043 $show "(cd $objdir && $LN_S $realname $linkname)"
1044 $run eval '(cd $objdir && $LN_S $realname $linkname)' || exit $?
1047 # If -export-dynamic was specified, set the dlname.
1048 if test "$export_dynamic" = yes; then
1049 # On all known operating systems, these are identical.
1054 # Now set the variables for building old libraries.
1055 oldlib="$objdir/$libname.a"
1059 if test -n "$link_against_libtool_libs"; then
1060 $echo "$modename: error: cannot link libtool libraries into reloadable objects" 1>&2
1064 if test -n "$deplibs"; then
1065 $echo "$modename: warning: \`-l' and \`-L' are ignored while creating objects" 1>&2
1068 if test -n "$dlfiles$dlprefiles"; then
1069 $echo "$modename: warning: \`-dlopen' is ignored while creating objects" 1>&2
1070 # Nullify the symbol file.
1071 compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
1072 finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
1075 if test -n "$rpath"; then
1076 $echo "$modename: warning: \`-rpath' is ignored while creating objects" 1>&2
1079 if test -n "$vinfo"; then
1080 $echo "$modename: warning: \`-version-info' is ignored while creating objects" 1>&2
1083 if test -n "$release"; then
1084 $echo "$modename: warning: \`-release' is ignored while creating objects" 1>&2
1089 if test -n "$objs"; then
1090 $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2
1094 obj=`$echo "X$output" | $Xsed -e 's/\.lo$/.o/'`
1102 # Delete the old objects.
1103 $run $rm $obj $libobj
1105 # Create the old-style object.
1106 reload_objs="$objs $olibobjs"
1109 eval cmds=\"$reload_cmds\"
1110 IFS="${IFS= }"; save_ifs="$IFS"; IFS=';'
1111 for cmd in $cmds; do
1114 $run eval "$cmd" || exit $?
1118 # Exit if we aren't doing a library object file.
1119 test -z "$libobj" && exit 0
1121 if test "$build_libtool_libs" != yes; then
1122 # Create an invalid libtool object if no PIC, so that we don't
1123 # accidentally link it into a program.
1124 $show "echo timestamp > $libobj"
1125 $run eval "echo timestamp > $libobj" || exit $?
1129 if test -n "$pic_flag"; then
1130 # Only do commands if we really have different PIC objects.
1131 reload_objs="$libobjs"
1133 eval cmds=\"$reload_cmds\"
1134 IFS="${IFS= }"; save_ifs="$IFS"; IFS=';'
1135 for cmd in $cmds; do
1138 $run eval "$cmd" || exit $?
1142 # Just create a symlink.
1143 $show "$LN_S $obj $libobj"
1144 $run $LN_S $obj $libobj || exit 1
1151 if test -n "$vinfo"; then
1152 $echo "$modename: warning: \`-version-info' is ignored while linking programs" 1>&2
1155 if test -n "$release"; then
1156 $echo "$modename: warning: \`-release' is ignored while creating objects" 1>&2
1159 if test -n "$rpath"; then
1160 # If the user specified any rpath flags, then add them.
1161 for libdir in $rpath; do
1162 if test -n "$hardcode_libdir_flag_spec"; then
1163 if test -n "$hardcode_libdir_separator"; then
1164 if test -z "$hardcode_libdirs"; then
1165 # Put the magic libdir with the hardcode flag.
1166 hardcode_libdirs="$libdir"
1167 libdir="@HARDCODE_LIBDIRS@"
1169 # Just accumulate the unique libdirs.
1170 case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in
1171 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
1174 hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
1181 if test -n "$libdir"; then
1182 eval flag=\"$hardcode_libdir_flag_spec\"
1184 compile_command="$compile_command $flag"
1185 finalize_command="$finalize_command $flag"
1187 elif test -n "$runpath_var"; then
1188 case "$perm_rpath " in
1190 *) perm_rpath="$perm_rpath $libdir" ;;
1196 # Substitute the hardcoded libdirs into the compile commands.
1197 if test -n "$hardcode_libdir_separator"; then
1198 compile_command=`$echo "X$compile_command" | $Xsed -e "s%@HARDCODE_LIBDIRS@%$hardcode_libdirs%g"`
1199 finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@HARDCODE_LIBDIRS@%$hardcode_libdirs%g"`
1202 if test -n "$libobjs" && test "$build_old_libs" = yes; then
1203 # Transform all the library objects into standard objects.
1204 compile_command=`$echo "X$compile_command " | $Xsed -e 's/\.lo /.o /g' -e 's/ $//'`
1205 finalize_command=`$echo "X$finalize_command " | $Xsed -e 's/\.lo /.o /g' -e 's/ $//'`
1208 if test "$export_dynamic" = yes && test -n "$NM" && test -n "$global_symbol_pipe"; then
1209 dlsyms="${output}S.c"
1214 if test -n "$dlsyms"; then
1215 # Add our own program objects to the preloaded list.
1216 dlprefiles=`$echo "X$objs$dlprefiles " | $Xsed -e 's/\.lo /.o /g' -e 's/ $//'`
1218 # Discover the nlist of each of the dlfiles.
1219 nlist="$objdir/${output}.nm"
1221 if test -d $objdir; then
1222 $show "$rm $nlist ${nlist}T"
1223 $run $rm "$nlist" "${nlist}T"
1225 $show "$mkdir $objdir"
1228 if test $status -eq 0 || test -d $objdir; then :
1234 for arg in $dlprefiles; do
1235 $show "extracting global C symbols from \`$arg'"
1236 $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
1239 # Parse the name list into a source file.
1240 $show "creating $objdir/$dlsyms"
1241 if test -z "$run"; then
1242 # Make sure we at least have an empty file.
1243 test -f "$nlist" || : > "$nlist"
1245 # Try sorting and uniquifying the output.
1246 if sort "$nlist" | uniq > "$nlist"T; then
1247 mv -f "$nlist"T "$nlist"
1248 wcout=`wc "$nlist" 2>/dev/null`
1249 count=`echo "X$wcout" | $Xsed -e 's/^[ ]*\([0-9][0-9]*\).*$/\1/'`
1250 (test "$count" -ge 0) 2>/dev/null || count=-1
1259 $echo > "$objdir/$dlsyms" "\
1260 /* $dlsyms - symbol resolution table for \`$output' dlsym emulation. */
1261 /* Generated by $PROGRAM - GNU $PACKAGE $VERSION */
1267 /* Prevent the only kind of declaration conflicts we can make. */
1268 #define dld_preloaded_symbol_count some_other_symbol
1269 #define dld_preloaded_symbols some_other_symbol
1271 /* External symbol declarations for the compiler. */\
1274 if test -f "$nlist"; then
1275 sed -e 's/^.* \(.*\)$/extern char \1;/' < "$nlist" >> "$objdir/$dlsyms"
1277 echo '/* NONE */' >> "$objdir/$dlsyms"
1280 $echo >> "$objdir/$dlsyms" "\
1282 #undef dld_preloaded_symbol_count
1283 #undef dld_preloaded_symbols
1285 #if defined (__STDC__) && __STDC__
1286 # define __ptr_t void *
1288 # define __ptr_t char *
1291 /* The number of symbols in dld_preloaded_symbols, -1 if unsorted. */
1292 int dld_preloaded_symbol_count = $count;
1294 /* The mapping between symbol names and symbols. */
1299 dld_preloaded_symbols[] =
1303 if test -f "$nlist"; then
1304 sed 's/^\(.*\) \(.*\)$/ {"\1", (__ptr_t) \&\2},/' < "$nlist" >> "$objdir/$dlsyms"
1307 $echo >> "$objdir/$dlsyms" "\
1318 $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
1324 # Now compile the dynamic symbol file.
1325 $show "(cd $objdir && $CC -c$no_builtin_flag \"$dlsyms\")"
1326 $run eval '(cd $objdir && $CC -c$no_builtin_flag "$dlsyms")' || exit $?
1328 # Transform the symbol file into the correct name.
1329 compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$objdir/${output}S.o%"`
1330 finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$objdir/${output}S.o%"`
1331 elif test "$export_dynamic" != yes; then
1332 test -n "$dlfiles$dlprefiles" && $echo "$modename: warning: \`-dlopen' and \`-dlpreopen' are ignored without \`-export-dynamic'" 1>&2
1334 # We keep going just in case the user didn't refer to
1335 # dld_preloaded_symbols. The linker will fail if global_symbol_pipe
1336 # really was required.
1337 $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2
1339 # Nullify the symbol file.
1340 compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
1341 finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
1344 if test -z "$link_against_libtool_libs" || test "$build_libtool_libs" != yes; then
1345 # Replace the output file specification.
1346 compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
1347 finalize_command=`$echo "X$finalize_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
1349 # We have no uninstalled library dependencies, so finalize right now.
1350 $show "$compile_command"
1351 $run eval "$compile_command"
1355 # Replace the output file specification.
1356 compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$objdir/$output"'%g'`
1357 finalize_command=`$echo "X$finalize_command" | $Xsed -e 's%@OUTPUT@%'"$objdir/$output"'T%g'`
1359 # Create the binary in the object directory, then wrap it.
1360 if test -d $objdir; then :
1362 $show "$mkdir $objdir"
1365 if test $status -eq 0 || test -d $objdir; then :
1371 if test -n "$shlibpath_var"; then
1372 # We should set the shlibpath_var
1374 for dir in $temp_rpath; do
1381 # Relative path: add a thisdir entry.
1382 rpath="$rpath\$thisdir/$dir:"
1389 # Delete the old output file.
1392 if test -n "$compile_shlibpath"; then
1393 compile_command="$shlibpath_var=\"$compile_shlibpath\$$shlibpath_var\" $compile_command"
1395 if test -n "$finalize_shlibpath"; then
1396 finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
1399 if test -n "$runpath_var" && test -n "$perm_rpath"; then
1400 # We should set the runpath_var.
1402 for dir in $perm_rpath; do
1405 compile_command="$runpath_var=\"$rpath\$$runpath_var\" $compile_command"
1406 finalize_command="$runpath_var=\"$rpath\$$runpath_var\" $finalize_command"
1409 case "$hardcode_action" in
1411 # AGH! Flame the AIX and HP-UX people for me, will ya?
1412 $echo "$modename: warning: using a buggy system linker" 1>&2
1413 $echo "$modename: relinking will be required before \`$output' can be installed" 1>&2
1417 $show "$compile_command"
1418 $run eval "$compile_command" || exit $?
1420 # Now create the wrapper script.
1421 $show "creating $output"
1423 # Quote the finalize command for shipping.
1424 finalize_command=`$echo "X$finalize_command" | $Xsed -e "$sed_quote_subst"`
1426 # Quote $echo for shipping.
1427 qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"`
1429 # Only actually do things if our run command is non-null.
1430 if test -z "$run"; then
1432 trap "$rm $output; exit 1" 1 2 15
1437 # $output - temporary wrapper script for $objdir/$output
1438 # Generated by ltmain.sh - GNU $PACKAGE $VERSION
1440 # The $output program cannot be directly executed until all the libtool
1441 # libraries that it depends on are installed.
1443 # This wrapper script should never be moved out of \``pwd`'.
1444 # If it is, it will not operate correctly.
1446 # Sed substitution that helps us do robust quoting. It backslashifies
1447 # metacharacters that are still active within double-quoted strings.
1448 Xsed='sed -e s/^X//'
1449 sed_quote_subst='$sed_quote_subst'
1451 # The HP-UX ksh and POSIX shell print the target directory to stdout
1453 if test \"\${CDPATH+set}\" = set; then CDPATH=; export CDPATH; fi
1455 # This environment variable determines our operation mode.
1456 if test \"\$libtool_install_magic\" = \"$magic\"; then
1457 # install mode needs the following variables:
1458 link_against_libtool_libs='$link_against_libtool_libs'
1459 finalize_command=\"$finalize_command\"
1461 # When we are sourced in execute mode, \$file and \$echo are already set.
1462 if test \"\$libtool_execute_magic\" = \"$magic\"; then :
1470 # Find the directory that this script lives in.
1471 thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
1472 test \"x\$thisdir\" = \"x\$file\" && thisdir=.
1474 # Follow symbolic links until we get to the real thisdir.
1475 file=\`ls -ld \"\$file\" | sed -n 's/.*-> //p'\`
1476 while test -n \"\$file\"; do
1477 destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
1479 # If there was a directory component, then change thisdir.
1480 if test \"x\$destdir\" != \"x\$file\"; then
1481 case \"\$destdir\" in
1482 /* | [A-Za-z]:\\*) thisdir=\"\$destdir\" ;;
1483 *) thisdir=\"\$thisdir/\$destdir\" ;;
1487 file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
1488 file=\`ls -ld \"\$thisdir/\$file\" | sed -n 's/.*-> //p'\`
1491 # Try to get the absolute directory name.
1492 absdir=\`cd \"\$thisdir\" && pwd\`
1493 test -n \"\$absdir\" && thisdir=\"\$absdir\"
1495 progdir=\"\$thisdir/$objdir\"
1498 if test -f \"\$progdir/\$program\"; then"
1500 # Export our shlibpath_var if we have one.
1501 if test -n "$shlibpath_var" && test -n "$temp_rpath"; then
1503 # Add our own library path to $shlibpath_var
1504 $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
1506 # Some systems cannot cope with colon-terminated $shlibpath_var
1507 $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/:*\$//'\`
1509 export $shlibpath_var
1514 if test \"\$libtool_execute_magic\" != \"$magic\"; then
1515 # Run the actual program with our arguments.
1517 # Export the path to the program.
1518 PATH=\"\$progdir:\$PATH\"
1521 exec \$program \${1+\"\$@\"}
1523 \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\"
1527 # The program doesn't exist.
1528 \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2
1529 \$echo \"This script is just a wrapper for \$program.\" 1>&2
1530 echo \"See the $PACKAGE documentation for more information.\" 1>&2
1541 # See if we need to build an old-fashioned archive.
1542 if test "$build_old_libs" = "yes"; then
1543 # Transform .lo files to .o files.
1544 oldobjs="$objs $olibobjs"
1546 # Do each command in the archive commands.
1547 if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
1548 eval cmds=\"$old_archive_from_new_cmds\"
1550 eval cmds=\"$old_archive_cmds\"
1552 IFS="${IFS= }"; save_ifs="$IFS"; IFS=';'
1553 for cmd in $cmds; do
1556 $run eval "$cmd" || exit $?
1561 # Now create the libtool archive.
1565 test "$build_old_libs" = yes && old_library="$libname.a"
1567 $show "creating $output"
1569 # Only create the output if not a dry run.
1570 if test -z "$run"; then
1572 # $output - a libtool library file
1573 # Generated by ltmain.sh - GNU $PACKAGE $VERSION
1575 # The name that we can dlopen(3).
1578 # Names of this library.
1579 library_names='$library_names'
1581 # The name of the static archive.
1582 old_library='$old_library'
1584 # Libraries that this one depends upon.
1585 dependency_libs='$dependency_libs'
1587 # Version information for $libname.
1592 # Directory that this library needs to be installed in:
1593 libdir='$install_libdir'\
1597 # Do a symbolic link so that the libtool archive can be found in
1598 # LD_LIBRARY_PATH before the program is installed.
1599 $show "(cd $objdir && $LN_S ../$output $output)"
1600 $run eval "(cd $objdir && $LN_S ../$output $output)" || exit 1
1606 # libtool install mode
1608 modename="$modename: install"
1610 # There may be an optional /bin/sh argument at the beginning of
1611 # install_prog (especially on Windows NT).
1612 if test "$nonopt" = "$SHELL"; then
1613 # Aesthetically quote it.
1614 arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
1616 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
1620 install_prog="$arg "
1628 # The real first argument should be the name of the installation program.
1629 # Aesthetically quote it.
1630 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
1632 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
1636 install_prog="$install_prog$arg"
1638 # We need to accept at least all the BSD install flags.
1648 if test -n "$dest"; then
1649 files="$files $dest"
1667 # If the previous option needed an argument, then skip it.
1668 if test -n "$prev"; then
1677 # Aesthetically quote the argument.
1678 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
1680 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
1684 install_prog="$install_prog $arg"
1687 if test -z "$install_prog"; then
1688 $echo "$modename: you must specify an install program" 1>&2
1693 if test -n "$prev"; then
1694 $echo "$modename: the \`$prev' option requires an argument" 1>&2
1699 if test -z "$files"; then
1700 if test -z "$dest"; then
1701 $echo "$modename: no file or destination specified" 1>&2
1703 $echo "$modename: you must specify a destination" 1>&2
1709 # Strip any trailing slash from the destination.
1710 dest=`$echo "X$dest" | $Xsed -e 's%/$%%'`
1712 # Check to see that the destination is a directory.
1713 test -d "$dest" && isdir=yes
1714 if test -n "$isdir"; then
1718 destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'`
1719 test "X$destdir" = "X$dest" && destdir=.
1720 destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'`
1722 # Not a directory, so check to see that there is only one file specified.
1724 if test $# -gt 2; then
1725 $echo "$modename: \`$dest' is not a directory" 1>&2
1731 /* | [A-Za-z]:\\*) ;;
1733 for file in $files; do
1737 $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2
1746 # This variable tells wrapper scripts just to set variables rather
1747 # than running their programs.
1748 libtool_install_magic="$magic"
1753 for file in $files; do
1755 # Do each installation.
1758 # Do the static libraries later.
1759 staticlibs="$staticlibs $file"
1763 # Check to see that this really is a libtool archive.
1764 if (sed -e '2q' $file | egrep '^# Generated by ltmain\.sh') >/dev/null 2>&1; then :
1766 $echo "$modename: \`$file' is not a valid libtool archive" 1>&2
1773 # If there is no directory component, then add one.
1775 */* | *\\*) . $file ;;
1779 # Add the libdir to current_libdirs if it is the destination.
1780 if test "X$destdir" = "X$libdir"; then
1781 case "$current_libdirs " in
1783 *) current_libdirs="$current_libdirs $libdir" ;;
1786 # Note the libdir as a future libdir.
1787 case "$future_libdirs " in
1789 *) future_libdirs="$future_libdirs $libdir" ;;
1793 dir="`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/"
1794 test "X$dir" = "X$file/" && dir=
1797 # See the names of the shared library.
1798 set dummy $library_names
1799 if test -n "$2"; then
1804 # Install the shared library and build the symlinks.
1805 $show "$install_prog $dir/$realname $destdir/$realname"
1806 $run eval "$install_prog $dir/$realname $destdir/$realname" || exit $?
1807 test "X$dlname" = "X$realname" && dlname=
1809 if test $# -gt 0; then
1810 # Delete the old symlinks.
1814 rmcmd="$rmcmd $destdir/$linkname"
1819 # ... and create new ones.
1822 test "X$dlname" = "X$linkname" && dlname=
1823 $show "(cd $destdir && $LN_S $realname $linkname)"
1824 $run eval "(cd $destdir && $LN_S $realname $linkname)"
1828 if test -n "$dlname"; then
1829 # Install the dynamically-loadable library.
1830 $show "$install_prog $dir/$dlname $destdir/$dlname"
1831 $run eval "$install_prog $dir/$dlname $destdir/$dlname" || exit $?
1834 # Do each command in the postinstall commands.
1835 lib="$destdir/$realname"
1836 eval cmds=\"$postinstall_cmds\"
1837 IFS="${IFS= }"; save_ifs="$IFS"; IFS=';'
1838 for cmd in $cmds; do
1841 $run eval "$cmd" || exit $?
1846 # Install the pseudo-library for information purposes.
1847 name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
1848 $show "$install_prog $file $destdir/$name"
1849 $run eval "$install_prog $file $destdir/$name" || exit $?
1851 # Maybe install the static library, too.
1852 test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
1856 # Install (i.e. copy) a libtool object.
1858 # Figure out destination file name, if it wasn't already specified.
1859 if test -n "$destname"; then
1860 destfile="$destdir/$destname"
1862 destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
1863 destfile="$destdir/$destfile"
1866 # Deduce the name of the destination old-style object file.
1869 staticdest=`$echo "X$destfile" | $Xsed -e 's/\.lo$/\.o/'`
1872 staticdest="$destfile"
1876 $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2
1882 # Install the libtool object if requested.
1883 if test -n "$destfile"; then
1884 $show "$install_prog $file $destfile"
1885 $run eval "$install_prog $file $destfile" || exit $?
1888 # Install the old object if enabled.
1889 if test "$build_old_libs" = yes; then
1890 # Deduce the name of the old-style object file.
1891 staticobj=`$echo "X$file" | $Xsed -e 's/\.lo$/\.o/'`
1893 $show "$install_prog $staticobj $staticdest"
1894 $run eval "$install_prog \$staticobj \$staticdest" || exit $?
1900 # Do a test to see if this is really a libtool program.
1901 if (sed -e '4q' $file | egrep '^# Generated by ltmain\.sh') >/dev/null 2>&1; then
1902 link_against_libtool_libs=
1905 # If there is no directory component, then add one.
1907 */* | *\\*) . $file ;;
1911 # Check the variables that should have been set.
1912 if test -z "$link_against_libtool_libs" || test -z "$finalize_command"; then
1913 $echo "$modename: invalid libtool wrapper script \`$file'" 1>&2
1918 for lib in $link_against_libtool_libs; do
1919 # Check to see that each library is installed.
1921 if test -f "$lib"; then
1922 # If there is no directory component, then add one.
1924 */* | *\\*) . $lib ;;
1928 libfile="$libdir/`$echo "X$lib" | $Xsed -e 's%^.*/%%g'`"
1929 if test -z "$libdir"; then
1930 $echo "$modename: warning: \`$lib' contains no -rpath information" 1>&2
1931 elif test -f "$libfile"; then :
1933 $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2
1938 if test "$hardcode_action" = relink; then
1939 if test "$finalize" = yes; then
1940 $echo "$modename: warning: relinking \`$file' on behalf of your buggy system linker" 1>&2
1941 $show "$finalize_command"
1942 if $run eval "$finalize_command"; then :
1944 $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
1947 file="$objdir/$file"T
1949 $echo "$modename: warning: cannot relink \`$file' on behalf of your buggy system linker" 1>&2
1952 # Install the binary that we compiled earlier.
1953 file=`$echo "X$file" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
1957 $show "$install_prog$stripme $file $dest"
1958 $run eval "$install_prog\$stripme \$file \$dest" || exit $?
1963 for file in $staticlibs; do
1964 name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
1966 # Set up the ranlib parameters.
1967 oldlib="$destdir/$name"
1969 $show "$install_prog $file $oldlib"
1970 $run eval "$install_prog \$file \$oldlib" || exit $?
1972 # Do each command in the postinstall commands.
1973 eval cmds=\"$old_postinstall_cmds\"
1974 IFS="${IFS= }"; save_ifs="$IFS"; IFS=';'
1975 for cmd in $cmds; do
1978 $run eval "$cmd" || exit $?
1983 if test -n "$future_libdirs"; then
1984 $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2
1987 if test -n "$current_libdirs"; then
1988 # Maybe just do a dry run.
1989 test -n "$run" && current_libdirs=" -n$current_libdirs"
1990 exec $SHELL $0 --finish$current_libdirs
1997 # libtool finish mode
1999 modename="$modename: finish"
2002 if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
2005 libdirs="$libdirs $dir"
2008 for libdir in $libdirs; do
2009 if test -n "$finish_cmds"; then
2010 # Do each command in the finish commands.
2011 eval cmds=\"$finish_cmds\"
2012 IFS="${IFS= }"; save_ifs="$IFS"; IFS=';'
2013 for cmd in $cmds; do
2020 if test -n "$finish_eval"; then
2021 # Do the single finish_eval.
2022 eval cmds=\"$finish_eval\"
2028 echo "------------------------------------------------------------------------------"
2029 echo "Libraries have been installed in:"
2030 for libdir in $libdirs; do
2034 echo "To link against installed libraries in a given directory, LIBDIR,"
2035 echo "you must use the \`-LLIBDIR' flag during linking."
2037 echo " You will also need to do one of the following:"
2038 if test -n "$shlibpath_var"; then
2039 echo " - add LIBDIR to the \`$shlibpath_var' environment variable"
2040 echo " during execution"
2042 if test -n "$runpath_var"; then
2043 echo " - add LIBDIR to the \`$runpath_var' environment variable"
2044 echo " during linking"
2046 if test -n "$hardcode_libdir_flag_spec"; then
2048 eval flag=\"$hardcode_libdir_flag_spec\"
2050 echo " - use the \`$flag' linker flag"
2052 if test -f /etc/ld.so.conf; then
2053 echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
2056 echo "See any operating system documentation about shared libraries for"
2057 echo "more information, such as the ld(1) and ld.so(8) manual pages."
2058 echo "------------------------------------------------------------------------------"
2062 # libtool execute mode
2064 modename="$modename: execute"
2066 # The first argument is the command name.
2068 if test -z "$cmd"; then
2069 $echo "$modename: you must specify a COMMAND" 1>&2
2074 # Handle -dlopen flags immediately.
2075 for file in $execute_dlfiles; do
2076 if test -f "$file"; then :
2078 $echo "$modename: \`$file' is not a file" 1>&2
2086 # Check to see that this really is a libtool archive.
2087 if (sed -e '2q' $file | egrep '^# Generated by ltmain\.sh') >/dev/null 2>&1; then :
2089 $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
2094 # Read the libtool library.
2098 # If there is no directory component, then add one.
2100 */* | *\\*) . $file ;;
2104 # Skip this library if it cannot be dlopened.
2105 if test -z "$dlname"; then
2106 # Warn if it was a shared library.
2107 test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'"
2111 dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
2112 test "X$dir" = "X$file" && dir=.
2114 if test -f "$dir/$objdir/$dlname"; then
2117 $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
2123 # Just add the directory containing the .lo file.
2124 dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
2125 test "X$dir" = "X$file" && dir=.
2129 $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2
2134 # Get the absolute pathname.
2135 absdir=`cd "$dir" && pwd`
2136 test -n "$absdir" && dir="$absdir"
2138 # Now add the directory to shlibpath_var.
2139 if eval "test -z \"\$$shlibpath_var\""; then
2140 eval "$shlibpath_var=\"\$dir\""
2142 eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
2146 # This variable tells wrapper scripts just to set shlibpath_var
2147 # rather than running their programs.
2148 libtool_execute_magic="$magic"
2150 # Check if any of the arguments is a wrapper script.
2157 # Do a test to see if this is really a libtool program.
2158 if (sed -e '4q' $file | egrep '^# Generated by ltmain\.sh') >/dev/null 2>&1; then
2159 # If there is no directory component, then add one.
2161 */* | *\\*) . $file ;;
2165 # Transform arg to wrapped name.
2166 file="$progdir/$program"
2170 # Quote arguments (to preserve shell metacharacters).
2171 file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"`
2172 args="$args \"$file\""
2175 if test -z "$run"; then
2176 # Export the shlibpath_var.
2177 eval "export $shlibpath_var"
2179 # Now actually exec the command.
2180 eval "exec \$cmd$args"
2182 $echo "$modename: cannot exec \$cmd$args"
2185 # Display what would be done.
2186 eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\""
2187 $echo "export $shlibpath_var"
2193 # libtool uninstall mode
2195 modename="$modename: uninstall"
2202 -*) rm="$rm $arg" ;;
2203 *) files="$files $arg" ;;
2207 if test -z "$rm"; then
2208 $echo "$modename: you must specify an RM program" 1>&2
2213 for file in $files; do
2214 dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
2215 test "X$dir" = "X$file" && dir=.
2216 name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
2222 # Possibly a libtool archive, so verify it.
2223 if (sed -e '2q' $file | egrep '^# Generated by ltmain\.sh') >/dev/null 2>&1; then
2226 # Delete the libtool libraries and symlinks.
2227 for n in $library_names; do
2228 rmfiles="$rmfiles $dir/$n"
2229 test "X$n" = "X$dlname" && dlname=
2231 test -n "$dlname" && rmfiles="$rmfiles $dir/$dlname"
2232 test -n "$old_library" && rmfiles="$rmfiles $dir/$old_library"
2234 $show "$rm $rmfiles"
2237 if test -n "$library_names"; then
2238 # Do each command in the postuninstall commands.
2239 eval cmds=\"$postuninstall_cmds\"
2240 IFS="${IFS= }"; save_ifs="$IFS"; IFS=';'
2241 for cmd in $cmds; do
2249 if test -n "$old_library"; then
2250 # Do each command in the old_postuninstall commands.
2251 eval cmds=\"$old_postuninstall_cmds\"
2252 IFS="${IFS= }"; save_ifs="$IFS"; IFS=';'
2253 for cmd in $cmds; do
2261 # FIXME: should reinstall the best remaining shared library.
2266 if test "$build_old_libs" = yes; then
2267 oldobj=`$echo "X$name" | $Xsed -e 's/\.lo$/\.o/'`
2268 rmfiles="$rmfiles $dir/$oldobj"
2270 $show "$rm $rmfiles"
2275 $show "$rm $rmfiles"
2284 $echo "$modename: you must specify a MODE" 1>&2
2285 $echo "$generic_help" 1>&2
2290 $echo "$modename: invalid operation mode \`$mode'" 1>&2
2291 $echo "$generic_help" 1>&2
2293 fi # test -z "$show_help"
2295 # We need to display help for each of the modes.
2298 "Usage: $modename [OPTION]... [MODE-ARG]...
2300 Provide generalized library-building support services.
2302 -n, --dry-run display commands without modifying any files
2303 --features display configuration information and exit
2304 --finish same as \`--mode=finish'
2305 --help display this help message and exit
2306 --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS]
2307 --quiet same as \`--silent'
2308 --silent don't print informational messages
2309 --version print version information
2311 MODE must be one of the following:
2313 compile compile a source file into a libtool object
2314 execute automatically set library path, then run a program
2315 finish complete the installation of libtool libraries
2316 install install libraries or executables
2317 link create a library or an executable
2318 uninstall remove libraries from an installed directory
2320 MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for
2321 a more detailed description of MODE."
2327 "Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
2329 Compile a source file into a libtool library object.
2331 COMPILE-COMMAND is a command to be used in creating a \`standard' object file
2332 from the given SOURCEFILE.
2334 The output file name is determined by removing the directory component from
2335 SOURCEFILE, then substituting the C source code suffix \`.c' with the
2336 library object suffix, \`.lo'."
2341 "Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]...
2343 Automatically set library path, then run a program.
2345 This mode accepts the following additional options:
2347 -dlopen FILE add the directory containing FILE to the library path
2349 This mode sets the library path environment variable according to \`-dlopen'
2352 If any of the ARGS are libtool executable wrappers, then they are translated
2353 into their corresponding uninstalled binary, and any of their required library
2354 directories are added to the library path.
2356 Then, COMMAND is executed, with ARGS as arguments."
2361 "Usage: $modename [OPTION]... --mode=finish [LIBDIR]...
2363 Complete the installation of libtool libraries.
2365 Each LIBDIR is a directory that contains libtool libraries.
2367 The commands that this mode executes may require superuser privileges. Use
2368 the \`--dry-run' option if you just want to see what would be executed."
2373 "Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND...
2375 Install executables or libraries.
2377 INSTALL-COMMAND is the installation command. The first component should be
2378 either the \`install' or \`cp' program.
2380 The rest of the components are interpreted as arguments to that command (only
2381 BSD-compatible install options are recognized)."
2386 "Usage: $modename [OPTION]... --mode=link LINK-COMMAND...
2388 Link object files or libraries together to form another library, or to
2389 create an executable program.
2391 LINK-COMMAND is a command using the C compiler that you would use to create
2392 a program from several object files.
2394 The following components of LINK-COMMAND are treated specially:
2396 -all-static do not do any dynamic linking at all
2397 -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime
2398 -dlpreopen FILE link in FILE and add its symbols to dld_preloaded_symbols
2399 -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
2400 -LLIBDIR search LIBDIR for required installed libraries
2401 -lNAME OUTPUT-FILE requires the installed library libNAME
2402 -no-undefined declare that a library does not refer to external symbols
2403 -o OUTPUT-FILE create OUTPUT-FILE from the specified objects
2404 -release RELEASE specify package release information
2405 -rpath LIBDIR the created library will eventually be installed in LIBDIR
2406 -static do not do any dynamic linking of libtool libraries
2407 -version-info CURRENT[:REVISION[:AGE]]
2408 specify library version info [each variable defaults to 0]
2410 All other options (arguments beginning with \`-') are ignored.
2412 Every other argument is treated as a filename. Files ending in \`.la' are
2413 treated as uninstalled libtool libraries, other files are standard or library
2416 If the OUTPUT-FILE ends in \`.la', then a libtool library is created, only
2417 library objects (\`.lo' files) may be specified, and \`-rpath' is required.
2419 If OUTPUT-FILE ends in \`.a', then a standard library is created using \`ar'
2422 If OUTPUT-FILE ends in \`.lo' or \`.o', then a reloadable object file is
2423 created, otherwise an executable program is created."
2428 "Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
2430 Remove libraries from an installation directory.
2432 RM is the name of the program to use to delete files associated with each FILE
2433 (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
2436 If FILE is a libtool library, all the files associated with it are deleted.
2437 Otherwise, only FILE itself is deleted using RM."
2441 $echo "$modename: invalid operation mode \`$mode'" 1>&2
2448 $echo "Try \`$modename --help' for more information about other modes."