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
=
394 # We need to know -static, to get the right output filenames.
398 -all-static |
-static)
399 if test "X$arg" = "X-all-static" && test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
400 $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2
402 build_libtool_libs
=no
409 # See if our shared archives depend on static archives.
410 test -n "$old_archive_from_new_cmds" && build_old_libs
=yes
412 # Go through the arguments, transforming them on the way.
415 # If the previous option needs an argument, assign it.
416 if test -n "$prev"; then
419 compile_command
="$compile_command @OUTPUT@"
420 finalize_command
="$finalize_command @OUTPUT@"
427 *.la |
*.lo
) ;; # We handle these cases below.
429 dlprefiles
="$dlprefiles $arg"
430 test "$prev" = dlfiles
&& dlfiles
="$dlfiles $arg"
446 eval "$prev=\"\$arg\""
457 if test -n "$link_static_flag"; then
458 compile_command
="$compile_command $link_static_flag"
459 finalize_command
="$finalize_command $link_static_flag"
465 # FIXME: remove this flag sometime in the future.
466 $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2
481 if test "$export_dynamic" != yes; then
483 if test -n "$export_dynamic_flag_spec"; then
484 eval arg
=\"$export_dynamic_flag_spec\"
489 # Add the symbol object into the linking commands.
490 compile_command
="$compile_command @SYMFILE@"
491 finalize_command
="$finalize_command @SYMFILE@"
496 dir
=`$echo "X$arg" | $Xsed -e 's%^-L\(.*\)$%\1%'`
499 # Add the corresponding hardcode_libdir_flag, if it is not identical.
502 $echo "$modename: \`-L$dir' cannot specify a relative directory" 1>&2
506 deplibs
="$deplibs $arg"
509 -l*) deplibs
="$deplibs $arg" ;;
529 # If we have no pic_flag, then this is the same as -all-static.
530 if test -z "$pic_flag" && test -n "$link_static_flag"; then
531 compile_command
="$compile_command $link_static_flag"
532 finalize_command
="$finalize_command $link_static_flag"
542 # Some other compiler flag.
544 # Unknown arguments in both finalize_command and compile_command need
545 # to be aesthetically quoted because they are evaled later.
546 arg
=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
548 *[\
[\~\
#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
561 if test "$prev" = dlfiles
; then
562 dlfiles
="$dlfiles $arg"
563 if test "$build_libtool_libs" = yes; then
567 # If libtool objects are unsupported, then we need to preload.
572 if test "$prev" = dlprefiles
; then
573 # Preload the old-style object.
574 dlprefiles
="$dlprefiles "`$echo "X$arg" | $Xsed -e 's/\.lo$/\.o/'`
577 libobjs
="$libobjs $arg"
581 # A libtool-controlled library.
588 # Check to see that this really is a libtool archive.
589 if (sed -e '2q' $arg |
egrep '^# Generated by ltmain\.sh') >/dev
/null
2>&1; then :
591 $echo "$modename: \`$arg' is not a valid libtool archive" 1>&2
595 # If there is no directory component, then add one.
597 */* |
*\\*) .
$arg ;;
601 if test -z "$libdir"; then
602 $echo "$modename: \`$arg' contains no -rpath information" 1>&2
606 # Get the name of the library we link against.
608 for l
in $old_library $library_names; do
612 if test -z "$linklib"; then
613 $echo "$modename: cannot find name of link library for \`$arg'" 1>&2
617 # Find the relevant object directory and library name.
618 name
=`$echo "X$arg" | $Xsed -e 's%^.*/%%' -e 's/\.la$//' -e 's/^lib//'`
619 dir
=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
620 if test "X$dir" = "X$arg"; then
626 # This library was specified with -dlopen.
627 if test "$prev" = dlfiles
; then
628 dlfiles
="$dlfiles $arg"
629 if test -z "$dlname"; then
630 # If there is no dlname, we need to preload.
633 # We should not create a dependency on this library, but we
634 # may need any libraries it requires.
635 compile_command
="$compile_command$dependency_libs"
636 finalize_command
="$finalize_command$dependency_libs"
642 # The library was specified with -dlpreopen.
643 if test "$prev" = dlprefiles
; then
644 # Prefer using a static library (so that no silly _DYNAMIC symbols
645 # are required to link).
646 if test -n "$old_library"; then
647 dlprefiles
="$dlprefiles $dir/$old_library"
649 dlprefiles
="$dlprefiles $dir/$linklib"
654 if test "$build_libtool_libs" = yes && test -n "$library_names"; then
655 link_against_libtool_libs
="$link_against_libtool_libs $arg"
656 if test -n "$shlibpath_var"; then
657 # Make sure the rpath contains only unique directories.
658 case "$temp_rpath " in
660 *) temp_rpath
="$temp_rpath $dir" ;;
664 # This is the magic to use -rpath.
665 if test -n "$hardcode_libdir_flag_spec"; then
666 if test -n "$hardcode_libdir_separator"; then
667 if test -z "$hardcode_libdirs"; then
668 # Put the magic libdir with the hardcode flag.
669 hardcode_libdirs
="$libdir"
670 libdir
="@HARDCODE_LIBDIRS@"
672 # Just accumulate the unique libdirs.
673 case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in
674 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
677 hardcode_libdirs
="$hardcode_libdirs$hardcode_libdir_separator$libdir"
684 if test -n "$libdir"; then
685 eval flag
=\"$hardcode_libdir_flag_spec\"
687 compile_command
="$compile_command $flag"
688 finalize_command
="$finalize_command $flag"
690 elif test -n "$runpath_var"; then
691 # Do the same for the permanent run path.
692 case "$perm_rpath " in
694 *) perm_rpath
="$perm_rpath $libdir" ;;
699 case "$hardcode_action" in
701 if test "$hardcode_direct" = no
; then
702 compile_command
="$compile_command $dir/$linklib"
703 elif test "$hardcode_minus_L" = no
; then
704 compile_command
="$compile_command -L$dir -l$name"
705 elif test "$hardcode_shlibpath_var" = no
; then
706 compile_shlibpath
="$compile_shlibpath$dir:"
707 compile_command
="$compile_command -l$name"
712 # We need an absolute path.
714 /* |
[A-Za-z
]:\\*) ;;
716 absdir
=`cd "$dir" && pwd`
717 if test -z "$absdir"; then
718 $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2
725 if test "$hardcode_direct" = yes; then
726 compile_command
="$compile_command $dir/$linklib"
727 elif test "$hardcode_minus_L" = yes; then
728 compile_command
="$compile_command -L$dir -l$name"
729 elif test "$hardcode_shlibpath_var" = yes; then
730 compile_shlibpath
="$compile_shlibpath$dir:"
731 compile_command
="$compile_command -l$name"
736 $echo "$modename: \`$hardcode_action' is an unknown hardcode action" 1>&2
741 # Finalize command for both is simple: just hardcode it.
742 if test "$hardcode_direct" = yes; then
743 finalize_command
="$finalize_command $libdir/$linklib"
744 elif test "$hardcode_minus_L" = yes; then
745 finalize_command
="$finalize_command -L$libdir -l$name"
746 elif test "$hardcode_shlibpath_var" = yes; then
747 finalize_shlibpath
="$finalize_shlibpath$libdir:"
748 finalize_command
="$finalize_command -l$name"
750 # We cannot seem to hardcode it, guess we'll fake it.
751 finalize_command
="$finalize_command -L$libdir -l$name"
754 # Transform directly to old archives if we don't build new libraries.
755 if test -n "$pic_flag" && test -z "$old_library"; then
756 $echo "$modename: cannot find static library for \`$arg'" 1>&2
760 # Here we assume that one of hardcode_direct or hardcode_minus_L
761 # is not unsupported. This is valid on all known static and
763 if test "$hardcode_direct" != unsupported
; then
764 test -n "$old_library" && linklib
="$old_library"
765 compile_command
="$compile_command $dir/$linklib"
766 finalize_command
="$finalize_command $dir/$linklib"
768 compile_command
="$compile_command -L$dir -l$name"
769 finalize_command
="$finalize_command -L$dir -l$name"
773 # Add in any libraries that this one depends upon.
774 compile_command
="$compile_command$dependency_libs"
775 finalize_command
="$finalize_command$dependency_libs"
779 # Some other compiler argument.
781 # Unknown arguments in both finalize_command and compile_command need
782 # to be aesthetically quoted because they are evaled later.
783 arg
=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
785 *[\
[\~\
#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
792 # Now actually substitute the argument into the commands.
793 if test -n "$arg"; then
794 compile_command
="$compile_command $arg"
795 finalize_command
="$finalize_command $arg"
799 if test -n "$prev"; then
800 $echo "$modename: the \`$prevarg' option requires an argument" 1>&2
805 if test -n "$vinfo" && test -n "$release"; then
806 $echo "$modename: you cannot specify both \`-version-info' and \`-release'" 1>&2
815 $echo "$modename: you must specify an output file" 1>&2
821 $echo "$modename: output file \`$output' must have no directory components" 1>&2
826 # Now set the variables for building old libraries.
827 build_libtool_libs
=no
835 # Make sure we only generate libraries of the form `libNAME.la'.
839 $echo "$modename: libtool library \`$arg' must begin with \`lib'" 1>&2
845 name
=`$echo "X$output" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
846 eval libname
=\"$libname_spec\"
848 # All the library-specific variables (install_libdir is set above).
856 if test -n "$objs"; then
857 $echo "$modename: cannot build libtool library \`$output' from non-libtool objects:$objs" 2>&1
861 # How the heck are we supposed to write a wrapper for a shared library?
862 if test -n "$link_against_libtool_libs"; then
863 $echo "$modename: libtool library \`$output' may not depend on uninstalled libraries:$link_against_libtool_libs" 1>&2
867 if test -n "$dlfiles$dlprefiles"; then
868 $echo "$modename: warning: \`-dlopen' is ignored while creating libtool libraries" 1>&2
869 # Nullify the symbol file.
870 compile_command
=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
871 finalize_command
=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
874 if test -z "$rpath"; then
875 $echo "$modename: you must specify an installation directory with \`-rpath'" 1>&2
881 if test $# -gt 2; then
882 $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2
886 # Parse the version information argument.
887 IFS
="${IFS= }"; save_ifs
="$IFS"; IFS
=':'
891 if test -n "$5"; then
892 $echo "$modename: too many parameters to \`-version-info'" 1>&2
897 test -n "$2" && current
="$2"
898 test -n "$3" && revision
="$3"
899 test -n "$4" && age
="$4"
901 # Check that each of the things are valid numbers.
903 0 |
[1-9] |
[1-9][0-9]*) ;;
905 $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2
906 $echo "$modename: \`$vinfo' is not valid version information" 1>&2
912 0 |
[1-9] |
[1-9][0-9]*) ;;
914 $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2
915 $echo "$modename: \`$vinfo' is not valid version information" 1>&2
921 0 |
[1-9] |
[1-9][0-9]*) ;;
923 $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2
924 $echo "$modename: \`$vinfo' is not valid version information" 1>&2
929 if test $age -gt $current; then
930 $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2
931 $echo "$modename: \`$vinfo' is not valid version information" 1>&2
935 # Calculate the version variables.
936 version_vars
="version_type current age revision"
937 case "$version_type" in
941 version_vars
="$version_vars major versuffix"
942 major
=`expr $current - $age`
943 versuffix
="$major.$age.$revision"
947 version_vars
="$version_vars versuffix verstring"
948 major
=`expr $current - $age`
949 versuffix
="$current.$age.$revision"
950 verstring
="$versuffix"
952 # Add in all the interfaces that we are compatible with.
954 while test $loop != 0; do
955 iface
=`expr $current - $loop`
956 loop
=`expr $loop - 1`
957 verstring
="$verstring:${iface}.0"
960 # Make executables depend on our current version.
961 verstring
="$verstring:${current}.0"
965 version_vars
="$version_vars major versuffix"
967 versuffix
="$current.$revision"
971 $echo "$modename: unknown library version type \`$version_type'" 1>&2
972 echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
977 # Create the output directory, or remove our outputs if we need to.
978 if test -d $objdir; then
979 $show "$rm $objdir/$output $objdir/$libname.* $objdir/${libname}${release}.*"
980 $run $rm $objdir/$output $objdir/$libname.
* $objdir/${libname}${release}.
*
982 $show "$mkdir $objdir"
985 if test $status -eq 0 ||
test -d $objdir; then :
991 # Check to see if the archive will have undefined symbols.
992 if test "$allow_undefined" = yes; then
993 if test "$allow_undefined_flag" = unsupported
; then
994 $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2
995 build_libtool_libs
=no
999 # Don't allow undefined symbols.
1000 allow_undefined_flag
="$no_undefined_flag"
1003 # Add libc to deplibs on all systems.
1004 dependency_libs
="$deplibs"
1005 deplibs
="$deplibs -lc"
1007 if test "$build_libtool_libs" = yes; then
1008 # Get the real and link names of the library.
1009 eval library_names
=\"$library_names_spec\"
1010 set dummy
$library_names
1014 if test -n "$soname_spec"; then
1015 eval soname
=\"$soname_spec\"
1020 lib
="$objdir/$realname"
1023 linknames
="$linknames $link"
1026 # Use standard objects if they are PIC.
1027 test -z "$pic_flag" && libobjs
=`$echo "X$libobjs " | $Xsed -e 's/\.lo /.o /g' -e 's/ $//g'`
1029 # Do each of the archive commands.
1030 eval cmds
=\"$archive_cmds\"
1031 IFS
="${IFS= }"; save_ifs
="$IFS"; IFS
=';'
1032 for cmd
in $cmds; do
1035 $run eval "$cmd" ||
exit $?
1039 # Create links to the real library.
1040 for linkname
in $linknames; do
1041 $show "(cd $objdir && $LN_S $realname $linkname)"
1042 $run eval '(cd $objdir && $LN_S $realname $linkname)' ||
exit $?
1045 # If -export-dynamic was specified, set the dlname.
1046 if test "$export_dynamic" = yes; then
1047 # On all known operating systems, these are identical.
1052 # Now set the variables for building old libraries.
1053 oldlib
="$objdir/$libname.a"
1057 if test -n "$link_against_libtool_libs"; then
1058 $echo "$modename: error: cannot link libtool libraries into reloadable objects" 1>&2
1062 if test -n "$deplibs"; then
1063 $echo "$modename: warning: \`-l' and \`-L' are ignored while creating objects" 1>&2
1066 if test -n "$dlfiles$dlprefiles"; then
1067 $echo "$modename: warning: \`-dlopen' is ignored while creating objects" 1>&2
1068 # Nullify the symbol file.
1069 compile_command
=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
1070 finalize_command
=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
1073 if test -n "$rpath"; then
1074 $echo "$modename: warning: \`-rpath' is ignored while creating objects" 1>&2
1077 if test -n "$vinfo"; then
1078 $echo "$modename: warning: \`-version-info' is ignored while creating objects" 1>&2
1081 if test -n "$release"; then
1082 $echo "$modename: warning: \`-release' is ignored while creating objects" 1>&2
1087 if test -n "$objs"; then
1088 $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2
1092 obj
=`$echo "X$output" | $Xsed -e 's/\.lo$/.o/'`
1100 # Delete the old objects.
1101 $run $rm $obj $libobj
1103 # Create the old-style object.
1104 reload_objs
="$objs"`$echo "X$libobjs " | $Xsed -e 's/[^ ]*\.a //g' -e 's/\.lo /.o /g' -e 's/ $//g'`
1107 eval cmds
=\"$reload_cmds\"
1108 IFS
="${IFS= }"; save_ifs
="$IFS"; IFS
=';'
1109 for cmd
in $cmds; do
1112 $run eval "$cmd" ||
exit $?
1116 # Exit if we aren't doing a library object file.
1117 test -z "$libobj" && exit 0
1119 if test "$build_libtool_libs" != yes; then
1120 # Create an invalid libtool object if no PIC, so that we don't
1121 # accidentally link it into a program.
1122 $show "echo timestamp > $libobj"
1123 $run eval "echo timestamp > $libobj" ||
exit $?
1127 if test -n "$pic_flag"; then
1128 # Only do commands if we really have different PIC objects.
1129 reload_objs
="$libobjs"
1131 eval cmds
=\"$reload_cmds\"
1132 IFS
="${IFS= }"; save_ifs
="$IFS"; IFS
=';'
1133 for cmd
in $cmds; do
1136 $run eval "$cmd" ||
exit $?
1140 # Just create a symlink.
1141 $show "$LN_S $obj $libobj"
1142 $run $LN_S $obj $libobj ||
exit 1
1149 if test -n "$vinfo"; then
1150 $echo "$modename: warning: \`-version-info' is ignored while linking programs" 1>&2
1153 if test -n "$release"; then
1154 $echo "$modename: warning: \`-release' is ignored while creating objects" 1>&2
1157 if test -n "$rpath"; then
1158 # If the user specified any rpath flags, then add them.
1159 for libdir
in $rpath; do
1160 if test -n "$hardcode_libdir_flag_spec"; then
1161 if test -n "$hardcode_libdir_separator"; then
1162 if test -z "$hardcode_libdirs"; then
1163 # Put the magic libdir with the hardcode flag.
1164 hardcode_libdirs
="$libdir"
1165 libdir
="@HARDCODE_LIBDIRS@"
1167 # Just accumulate the unique libdirs.
1168 case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in
1169 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
1172 hardcode_libdirs
="$hardcode_libdirs$hardcode_libdir_separator$libdir"
1179 if test -n "$libdir"; then
1180 eval flag
=\"$hardcode_libdir_flag_spec\"
1182 compile_command
="$compile_command $flag"
1183 finalize_command
="$finalize_command $flag"
1185 elif test -n "$runpath_var"; then
1186 case "$perm_rpath " in
1188 *) perm_rpath
="$perm_rpath $libdir" ;;
1194 # Substitute the hardcoded libdirs into the compile commands.
1195 if test -n "$hardcode_libdir_separator"; then
1196 compile_command
=`$echo "X$compile_command" | $Xsed -e "s%@HARDCODE_LIBDIRS@%$hardcode_libdirs%g"`
1197 finalize_command
=`$echo "X$finalize_command" | $Xsed -e "s%@HARDCODE_LIBDIRS@%$hardcode_libdirs%g"`
1200 if test -n "$libobjs" && test "$build_old_libs" = yes; then
1201 # Transform all the library objects into standard objects.
1202 compile_command
=`$echo "X$compile_command " | $Xsed -e 's/\.lo /.o /g' -e 's/ $//'`
1203 finalize_command
=`$echo "X$finalize_command " | $Xsed -e 's/\.lo /.o /g' -e 's/ $//'`
1206 if test "$export_dynamic" = yes && test -n "$NM" && test -n "$global_symbol_pipe"; then
1207 dlsyms
="${output}S.c"
1212 if test -n "$dlsyms"; then
1213 # Add our own program objects to the preloaded list.
1214 dlprefiles
=`$echo "X$objs$dlprefiles " | $Xsed -e 's/\.lo /.o /g' -e 's/ $//'`
1216 # Discover the nlist of each of the dlfiles.
1217 nlist
="$objdir/${output}.nm"
1219 if test -d $objdir; then
1220 $show "$rm $nlist ${nlist}T"
1221 $run $rm "$nlist" "${nlist}T"
1223 $show "$mkdir $objdir"
1226 if test $status -eq 0 ||
test -d $objdir; then :
1232 for arg
in $dlprefiles; do
1233 $show "extracting global C symbols from \`$arg'"
1234 $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
1237 # Parse the name list into a source file.
1238 $show "creating $objdir/$dlsyms"
1239 if test -z "$run"; then
1240 # Make sure we at least have an empty file.
1241 test -f "$nlist" ||
: > "$nlist"
1243 # Try sorting and uniquifying the output.
1244 if sort "$nlist" |
uniq > "$nlist"T
; then
1245 mv -f "$nlist"T
"$nlist"
1246 wcout
=`wc "$nlist" 2>/dev/null`
1247 count
=`echo "X$wcout" | $Xsed -e 's/^[ ]*\([0-9][0-9]*\).*$/\1/'`
1248 (test "$count" -ge 0) 2>/dev
/null || count
=-1
1257 $echo > "$objdir/$dlsyms" "\
1258 /* $dlsyms - symbol resolution table for \`$output' dlsym emulation. */
1259 /* Generated by $PROGRAM - GNU $PACKAGE $VERSION */
1265 /* Prevent the only kind of declaration conflicts we can make. */
1266 #define dld_preloaded_symbol_count some_other_symbol
1267 #define dld_preloaded_symbols some_other_symbol
1269 /* External symbol declarations for the compiler. */\
1272 if test -f "$nlist"; then
1273 sed -e 's/^.* \(.*\)$/extern char \1;/' < "$nlist" >> "$objdir/$dlsyms"
1275 echo '/* NONE */' >> "$objdir/$dlsyms"
1278 $echo >> "$objdir/$dlsyms" "\
1280 #undef dld_preloaded_symbol_count
1281 #undef dld_preloaded_symbols
1283 #if defined (__STDC__) && __STDC__
1284 # define __ptr_t void *
1286 # define __ptr_t char *
1289 /* The number of symbols in dld_preloaded_symbols, -1 if unsorted. */
1290 int dld_preloaded_symbol_count = $count;
1292 /* The mapping between symbol names and symbols. */
1297 dld_preloaded_symbols[] =
1301 if test -f "$nlist"; then
1302 sed 's/^\(.*\) \(.*\)$/ {"\1", (__ptr_t) \&\2},/' < "$nlist" >> "$objdir/$dlsyms"
1305 $echo >> "$objdir/$dlsyms" "\
1316 $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
1322 # Now compile the dynamic symbol file.
1323 $show "(cd $objdir && $CC -c$no_builtin_flag \"$dlsyms\")"
1324 $run eval '(cd $objdir && $CC -c$no_builtin_flag "$dlsyms")' ||
exit $?
1326 # Transform the symbol file into the correct name.
1327 compile_command
=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$objdir/${output}S.o%"`
1328 finalize_command
=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$objdir/${output}S.o%"`
1329 elif test "$export_dynamic" != yes; then
1330 test -n "$dlfiles$dlprefiles" && $echo "$modename: warning: \`-dlopen' and \`-dlpreopen' are ignored without \`-export-dynamic'" 1>&2
1332 # We keep going just in case the user didn't refer to
1333 # dld_preloaded_symbols. The linker will fail if global_symbol_pipe
1334 # really was required.
1335 $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2
1337 # Nullify the symbol file.
1338 compile_command
=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
1339 finalize_command
=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
1342 if test -z "$link_against_libtool_libs" ||
test "$build_libtool_libs" != yes; then
1343 # Replace the output file specification.
1344 compile_command
=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
1345 finalize_command
=`$echo "X$finalize_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
1347 # We have no uninstalled library dependencies, so finalize right now.
1348 $show "$compile_command"
1349 $run eval "$compile_command"
1353 # Replace the output file specification.
1354 compile_command
=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$objdir/$output"'%g'`
1355 finalize_command
=`$echo "X$finalize_command" | $Xsed -e 's%@OUTPUT@%'"$objdir/$output"'T%g'`
1357 # Create the binary in the object directory, then wrap it.
1358 if test -d $objdir; then :
1360 $show "$mkdir $objdir"
1363 if test $status -eq 0 ||
test -d $objdir; then :
1369 if test -n "$shlibpath_var"; then
1370 # We should set the shlibpath_var
1372 for dir
in $temp_rpath; do
1379 # Relative path: add a thisdir entry.
1380 rpath
="$rpath\$thisdir/$dir:"
1387 # Delete the old output file.
1390 if test -n "$compile_shlibpath"; then
1391 compile_command
="$shlibpath_var=\"$compile_shlibpath\$$shlibpath_var\" $compile_command"
1393 if test -n "$finalize_shlibpath"; then
1394 finalize_command
="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
1397 if test -n "$runpath_var" && test -n "$perm_rpath"; then
1398 # We should set the runpath_var.
1400 for dir
in $perm_rpath; do
1403 compile_command
="$runpath_var=\"$rpath\$$runpath_var\" $compile_command"
1404 finalize_command
="$runpath_var=\"$rpath\$$runpath_var\" $finalize_command"
1407 case "$hardcode_action" in
1409 # AGH! Flame the AIX and HP-UX people for me, will ya?
1410 $echo "$modename: warning: using a buggy system linker" 1>&2
1411 $echo "$modename: relinking will be required before \`$output' can be installed" 1>&2
1415 $show "$compile_command"
1416 $run eval "$compile_command" ||
exit $?
1418 # Now create the wrapper script.
1419 $show "creating $output"
1421 # Quote the finalize command for shipping.
1422 finalize_command
=`$echo "X$finalize_command" | $Xsed -e "$sed_quote_subst"`
1424 # Quote $echo for shipping.
1425 qecho
=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"`
1427 # Only actually do things if our run command is non-null.
1428 if test -z "$run"; then
1430 trap "$rm $output; exit 1" 1 2 15
1435 # $output - temporary wrapper script for $objdir/$output
1436 # Generated by ltmain.sh - GNU $PACKAGE $VERSION
1438 # The $output program cannot be directly executed until all the libtool
1439 # libraries that it depends on are installed.
1441 # This wrapper script should never be moved out of \``pwd`'.
1442 # If it is, it will not operate correctly.
1444 # Sed substitution that helps us do robust quoting. It backslashifies
1445 # metacharacters that are still active within double-quoted strings.
1446 Xsed='sed -e s/^X//'
1447 sed_quote_subst='$sed_quote_subst'
1449 # The HP-UX ksh and POSIX shell print the target directory to stdout
1451 if test \"\${CDPATH+set}\" = set; then CDPATH=; export CDPATH; fi
1453 # This environment variable determines our operation mode.
1454 if test \"\$libtool_install_magic\" = \"$magic\"; then
1455 # install mode needs the following variables:
1456 link_against_libtool_libs='$link_against_libtool_libs'
1457 finalize_command=\"$finalize_command\"
1459 # When we are sourced in execute mode, \$file and \$echo are already set.
1460 if test \"\$libtool_execute_magic\" = \"$magic\"; then :
1468 # Find the directory that this script lives in.
1469 thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
1470 test \"x\$thisdir\" = \"x\$file\" && thisdir=.
1472 # Follow symbolic links until we get to the real thisdir.
1473 file=\`ls -ld \"\$file\" | sed -n 's/.*-> //p'\`
1474 while test -n \"\$file\"; do
1475 destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
1477 # If there was a directory component, then change thisdir.
1478 if test \"x\$destdir\" != \"x\$file\"; then
1479 case \"\$destdir\" in
1480 /* | [A-Za-z]:\\*) thisdir=\"\$destdir\" ;;
1481 *) thisdir=\"\$thisdir/\$destdir\" ;;
1485 file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
1486 file=\`ls -ld \"\$thisdir/\$file\" | sed -n 's/.*-> //p'\`
1489 # Try to get the absolute directory name.
1490 absdir=\`cd \"\$thisdir\" && pwd\`
1491 test -n \"\$absdir\" && thisdir=\"\$absdir\"
1493 progdir=\"\$thisdir/$objdir\"
1496 if test -f \"\$progdir/\$program\"; then"
1498 # Export our shlibpath_var if we have one.
1499 if test -n "$shlibpath_var" && test -n "$temp_rpath"; then
1501 # Add our own library path to $shlibpath_var
1502 $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
1504 # Some systems cannot cope with colon-terminated $shlibpath_var
1505 $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/:*\$//'\`
1507 export $shlibpath_var
1512 if test \"\$libtool_execute_magic\" != \"$magic\"; then
1513 # Run the actual program with our arguments.
1515 # Export the path to the program.
1516 PATH=\"\$progdir:\$PATH\"
1519 exec \$program \${1+\"\$@\"}
1521 \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\"
1525 # The program doesn't exist.
1526 \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2
1527 \$echo \"This script is just a wrapper for \$program.\" 1>&2
1528 echo \"See the $PACKAGE documentation for more information.\" 1>&2
1539 # See if we need to build an old-fashioned archive.
1540 if test "$build_old_libs" = "yes"; then
1541 # Transform .lo files to .o files.
1542 oldobjs
="$objs"`$echo "X$libobjs " | $Xsed -e 's/[^ ]*\.a //g' -e 's/\.lo /.o /g' -e 's/ $//g'`
1544 # Do each command in the archive commands.
1545 if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
1546 eval cmds
=\"$old_archive_from_new_cmds\"
1548 eval cmds
=\"$old_archive_cmds\"
1550 IFS
="${IFS= }"; save_ifs
="$IFS"; IFS
=';'
1551 for cmd
in $cmds; do
1554 $run eval "$cmd" ||
exit $?
1559 # Now create the libtool archive.
1563 test "$build_old_libs" = yes && old_library
="$libname.a"
1565 $show "creating $output"
1567 # Only create the output if not a dry run.
1568 if test -z "$run"; then
1570 # $output - a libtool library file
1571 # Generated by ltmain.sh - GNU $PACKAGE $VERSION
1573 # The name that we can dlopen(3).
1576 # Names of this library.
1577 library_names='$library_names'
1579 # The name of the static archive.
1580 old_library='$old_library'
1582 # Libraries that this one depends upon.
1583 dependency_libs='$dependency_libs'
1585 # Version information for $libname.
1590 # Directory that this library needs to be installed in:
1591 libdir='$install_libdir'\
1595 # Do a symbolic link so that the libtool archive can be found in
1596 # LD_LIBRARY_PATH before the program is installed.
1597 $show "(cd $objdir && $LN_S ../$output $output)"
1598 $run eval "(cd $objdir && $LN_S ../$output $output)" ||
exit 1
1604 # libtool install mode
1606 modename
="$modename: install"
1608 # There may be an optional /bin/sh argument at the beginning of
1609 # install_prog (especially on Windows NT).
1610 if test "$nonopt" = "$SHELL"; then
1611 # Aesthetically quote it.
1612 arg
=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
1614 *[\
[\~\
#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
1618 install_prog
="$arg "
1626 # The real first argument should be the name of the installation program.
1627 # Aesthetically quote it.
1628 arg
=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
1630 *[\
[\~\
#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
1634 install_prog
="$install_prog$arg"
1636 # We need to accept at least all the BSD install flags.
1646 if test -n "$dest"; then
1647 files
="$files $dest"
1665 # If the previous option needed an argument, then skip it.
1666 if test -n "$prev"; then
1675 # Aesthetically quote the argument.
1676 arg
=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
1678 *[\
[\~\
#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
1682 install_prog
="$install_prog $arg"
1685 if test -z "$install_prog"; then
1686 $echo "$modename: you must specify an install program" 1>&2
1691 if test -n "$prev"; then
1692 $echo "$modename: the \`$prev' option requires an argument" 1>&2
1697 if test -z "$files"; then
1698 if test -z "$dest"; then
1699 $echo "$modename: no file or destination specified" 1>&2
1701 $echo "$modename: you must specify a destination" 1>&2
1707 # Strip any trailing slash from the destination.
1708 dest
=`$echo "X$dest" | $Xsed -e 's%/$%%'`
1710 # Check to see that the destination is a directory.
1711 test -d "$dest" && isdir
=yes
1712 if test -n "$isdir"; then
1716 destdir
=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'`
1717 test "X$destdir" = "X$dest" && destdir
=.
1718 destname
=`$echo "X$dest" | $Xsed -e 's%^.*/%%'`
1720 # Not a directory, so check to see that there is only one file specified.
1722 if test $# -gt 2; then
1723 $echo "$modename: \`$dest' is not a directory" 1>&2
1729 /* |
[A-Za-z
]:\\*) ;;
1731 for file in $files; do
1735 $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2
1744 # This variable tells wrapper scripts just to set variables rather
1745 # than running their programs.
1746 libtool_install_magic
="$magic"
1751 for file in $files; do
1753 # Do each installation.
1756 # Do the static libraries later.
1757 staticlibs
="$staticlibs $file"
1761 # Check to see that this really is a libtool archive.
1762 if (sed -e '2q' $file |
egrep '^# Generated by ltmain\.sh') >/dev
/null
2>&1; then :
1764 $echo "$modename: \`$file' is not a valid libtool archive" 1>&2
1771 # If there is no directory component, then add one.
1773 */* |
*\\*) .
$file ;;
1777 # Add the libdir to current_libdirs if it is the destination.
1778 if test "X$destdir" = "X$libdir"; then
1779 case "$current_libdirs " in
1781 *) current_libdirs
="$current_libdirs $libdir" ;;
1784 # Note the libdir as a future libdir.
1785 case "$future_libdirs " in
1787 *) future_libdirs
="$future_libdirs $libdir" ;;
1791 dir
="`$echo "X
$file" | $Xsed -e 's%/[^/]*$%%'`/"
1792 test "X$dir" = "X$file/" && dir
=
1795 # See the names of the shared library.
1796 set dummy
$library_names
1797 if test -n "$2"; then
1802 # Install the shared library and build the symlinks.
1803 $show "$install_prog $dir/$realname $destdir/$realname"
1804 $run eval "$install_prog $dir/$realname $destdir/$realname" ||
exit $?
1805 test "X$dlname" = "X$realname" && dlname
=
1807 if test $# -gt 0; then
1808 # Delete the old symlinks.
1812 rmcmd
="$rmcmd $destdir/$linkname"
1817 # ... and create new ones.
1820 test "X$dlname" = "X$linkname" && dlname
=
1821 $show "(cd $destdir && $LN_S $realname $linkname)"
1822 $run eval "(cd $destdir && $LN_S $realname $linkname)"
1826 if test -n "$dlname"; then
1827 # Install the dynamically-loadable library.
1828 $show "$install_prog $dir/$dlname $destdir/$dlname"
1829 $run eval "$install_prog $dir/$dlname $destdir/$dlname" ||
exit $?
1832 # Do each command in the postinstall commands.
1833 lib
="$destdir/$realname"
1834 eval cmds
=\"$postinstall_cmds\"
1835 IFS
="${IFS= }"; save_ifs
="$IFS"; IFS
=';'
1836 for cmd
in $cmds; do
1839 $run eval "$cmd" ||
exit $?
1844 # Install the pseudo-library for information purposes.
1845 name
=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
1846 $show "$install_prog $file $destdir/$name"
1847 $run eval "$install_prog $file $destdir/$name" ||
exit $?
1849 # Maybe install the static library, too.
1850 test -n "$old_library" && staticlibs
="$staticlibs $dir/$old_library"
1854 # Install (i.e. copy) a libtool object.
1856 # Figure out destination file name, if it wasn't already specified.
1857 if test -n "$destname"; then
1858 destfile
="$destdir/$destname"
1860 destfile
=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
1861 destfile
="$destdir/$destfile"
1864 # Deduce the name of the destination old-style object file.
1867 staticdest
=`$echo "X$destfile" | $Xsed -e 's/\.lo$/\.o/'`
1870 staticdest
="$destfile"
1874 $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2
1880 # Install the libtool object if requested.
1881 if test -n "$destfile"; then
1882 $show "$install_prog $file $destfile"
1883 $run eval "$install_prog $file $destfile" ||
exit $?
1886 # Install the old object if enabled.
1887 if test "$build_old_libs" = yes; then
1888 # Deduce the name of the old-style object file.
1889 staticobj
=`$echo "X$file" | $Xsed -e 's/\.lo$/\.o/'`
1891 $show "$install_prog $staticobj $staticdest"
1892 $run eval "$install_prog \$staticobj \$staticdest" ||
exit $?
1898 # Do a test to see if this is really a libtool program.
1899 if (sed -e '4q' $file |
egrep '^# Generated by ltmain\.sh') >/dev
/null
2>&1; then
1900 link_against_libtool_libs
=
1903 # If there is no directory component, then add one.
1905 */* |
*\\*) .
$file ;;
1909 # Check the variables that should have been set.
1910 if test -z "$link_against_libtool_libs" ||
test -z "$finalize_command"; then
1911 $echo "$modename: invalid libtool wrapper script \`$file'" 1>&2
1916 for lib
in $link_against_libtool_libs; do
1917 # Check to see that each library is installed.
1919 if test -f "$lib"; then
1920 # If there is no directory component, then add one.
1922 */* |
*\\*) .
$lib ;;
1926 libfile
="$libdir/`$echo "X
$lib" | $Xsed -e 's%^.*/%%g'`"
1927 if test -z "$libdir"; then
1928 $echo "$modename: warning: \`$lib' contains no -rpath information" 1>&2
1929 elif test -f "$libfile"; then :
1931 $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2
1936 if test "$hardcode_action" = relink
; then
1937 if test "$finalize" = yes; then
1938 $echo "$modename: warning: relinking \`$file' on behalf of your buggy system linker" 1>&2
1939 $show "$finalize_command"
1940 if $run eval "$finalize_command"; then :
1942 $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
1945 file="$objdir/$file"T
1947 $echo "$modename: warning: cannot relink \`$file' on behalf of your buggy system linker" 1>&2
1950 # Install the binary that we compiled earlier.
1951 file=`$echo "X$file" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
1955 $show "$install_prog$stripme $file $dest"
1956 $run eval "$install_prog\$stripme \$file \$dest" ||
exit $?
1961 for file in $staticlibs; do
1962 name
=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
1964 # Set up the ranlib parameters.
1965 oldlib
="$destdir/$name"
1967 $show "$install_prog $file $oldlib"
1968 $run eval "$install_prog \$file \$oldlib" ||
exit $?
1970 # Do each command in the postinstall commands.
1971 eval cmds
=\"$old_postinstall_cmds\"
1972 IFS
="${IFS= }"; save_ifs
="$IFS"; IFS
=';'
1973 for cmd
in $cmds; do
1976 $run eval "$cmd" ||
exit $?
1981 if test -n "$future_libdirs"; then
1982 $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2
1985 if test -n "$current_libdirs"; then
1986 # Maybe just do a dry run.
1987 test -n "$run" && current_libdirs
=" -n$current_libdirs"
1988 exec $SHELL $0 --finish$current_libdirs
1995 # libtool finish mode
1997 modename
="$modename: finish"
2000 if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
2003 libdirs
="$libdirs $dir"
2006 for libdir
in $libdirs; do
2007 if test -n "$finish_cmds"; then
2008 # Do each command in the finish commands.
2009 eval cmds
=\"$finish_cmds\"
2010 IFS
="${IFS= }"; save_ifs
="$IFS"; IFS
=';'
2011 for cmd
in $cmds; do
2018 if test -n "$finish_eval"; then
2019 # Do the single finish_eval.
2020 eval cmds
=\"$finish_eval\"
2026 echo "------------------------------------------------------------------------------"
2027 echo "Libraries have been installed in:"
2028 for libdir
in $libdirs; do
2032 echo "To link against installed libraries in a given directory, LIBDIR,"
2033 echo "you must use the \`-LLIBDIR' flag during linking."
2035 echo " You will also need to do one of the following:"
2036 if test -n "$shlibpath_var"; then
2037 echo " - add LIBDIR to the \`$shlibpath_var' environment variable"
2038 echo " during execution"
2040 if test -n "$runpath_var"; then
2041 echo " - add LIBDIR to the \`$runpath_var' environment variable"
2042 echo " during linking"
2044 if test -n "$hardcode_libdir_flag_spec"; then
2046 eval flag
=\"$hardcode_libdir_flag_spec\"
2048 echo " - use the \`$flag' linker flag"
2050 if test -f /etc
/ld.so.conf
; then
2051 echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
2054 echo "See any operating system documentation about shared libraries for"
2055 echo "more information, such as the ld(1) and ld.so(8) manual pages."
2056 echo "------------------------------------------------------------------------------"
2060 # libtool execute mode
2062 modename
="$modename: execute"
2064 # The first argument is the command name.
2066 if test -z "$cmd"; then
2067 $echo "$modename: you must specify a COMMAND" 1>&2
2072 # Handle -dlopen flags immediately.
2073 for file in $execute_dlfiles; do
2074 if test -f "$file"; then :
2076 $echo "$modename: \`$file' is not a file" 1>&2
2084 # Check to see that this really is a libtool archive.
2085 if (sed -e '2q' $file |
egrep '^# Generated by ltmain\.sh') >/dev
/null
2>&1; then :
2087 $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
2092 # Read the libtool library.
2096 # If there is no directory component, then add one.
2098 */* |
*\\*) .
$file ;;
2102 # Skip this library if it cannot be dlopened.
2103 if test -z "$dlname"; then
2104 # Warn if it was a shared library.
2105 test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'"
2109 dir
=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
2110 test "X$dir" = "X$file" && dir
=.
2112 if test -f "$dir/$objdir/$dlname"; then
2115 $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
2121 # Just add the directory containing the .lo file.
2122 dir
=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
2123 test "X$dir" = "X$file" && dir
=.
2127 $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2
2132 # Get the absolute pathname.
2133 absdir
=`cd "$dir" && pwd`
2134 test -n "$absdir" && dir
="$absdir"
2136 # Now add the directory to shlibpath_var.
2137 if eval "test -z \"\$$shlibpath_var\""; then
2138 eval "$shlibpath_var=\"\$dir\""
2140 eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
2144 # This variable tells wrapper scripts just to set shlibpath_var
2145 # rather than running their programs.
2146 libtool_execute_magic
="$magic"
2148 # Check if any of the arguments is a wrapper script.
2155 # Do a test to see if this is really a libtool program.
2156 if (sed -e '4q' $file |
egrep '^# Generated by ltmain\.sh') >/dev
/null
2>&1; then
2157 # If there is no directory component, then add one.
2159 */* |
*\\*) .
$file ;;
2163 # Transform arg to wrapped name.
2164 file="$progdir/$program"
2168 # Quote arguments (to preserve shell metacharacters).
2169 file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"`
2170 args
="$args \"$file\""
2173 if test -z "$run"; then
2174 # Export the shlibpath_var.
2175 eval "export $shlibpath_var"
2177 # Now actually exec the command.
2178 eval "exec \$cmd$args"
2180 $echo "$modename: cannot exec \$cmd$args"
2183 # Display what would be done.
2184 eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\""
2185 $echo "export $shlibpath_var"
2191 # libtool uninstall mode
2193 modename
="$modename: uninstall"
2200 -*) rm="$rm $arg" ;;
2201 *) files
="$files $arg" ;;
2205 if test -z "$rm"; then
2206 $echo "$modename: you must specify an RM program" 1>&2
2211 for file in $files; do
2212 dir
=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
2213 test "X$dir" = "X$file" && dir
=.
2214 name
=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
2220 # Possibly a libtool archive, so verify it.
2221 if (sed -e '2q' $file |
egrep '^# Generated by ltmain\.sh') >/dev
/null
2>&1; then
2224 # Delete the libtool libraries and symlinks.
2225 for n
in $library_names; do
2226 rmfiles
="$rmfiles $dir/$n"
2227 test "X$n" = "X$dlname" && dlname
=
2229 test -n "$dlname" && rmfiles
="$rmfiles $dir/$dlname"
2230 test -n "$old_library" && rmfiles
="$rmfiles $dir/$old_library"
2232 $show "$rm $rmfiles"
2235 if test -n "$library_names"; then
2236 # Do each command in the postuninstall commands.
2237 eval cmds
=\"$postuninstall_cmds\"
2238 IFS
="${IFS= }"; save_ifs
="$IFS"; IFS
=';'
2239 for cmd
in $cmds; do
2247 if test -n "$old_library"; then
2248 # Do each command in the old_postuninstall commands.
2249 eval cmds
=\"$old_postuninstall_cmds\"
2250 IFS
="${IFS= }"; save_ifs
="$IFS"; IFS
=';'
2251 for cmd
in $cmds; do
2259 # FIXME: should reinstall the best remaining shared library.
2264 if test "$build_old_libs" = yes; then
2265 oldobj
=`$echo "X$name" | $Xsed -e 's/\.lo$/\.o/'`
2266 rmfiles
="$rmfiles $dir/$oldobj"
2268 $show "$rm $rmfiles"
2273 $show "$rm $rmfiles"
2282 $echo "$modename: you must specify a MODE" 1>&2
2283 $echo "$generic_help" 1>&2
2288 $echo "$modename: invalid operation mode \`$mode'" 1>&2
2289 $echo "$generic_help" 1>&2
2291 fi # test -z "$show_help"
2293 # We need to display help for each of the modes.
2296 "Usage: $modename [OPTION]... [MODE-ARG]...
2298 Provide generalized library-building support services.
2300 -n, --dry-run display commands without modifying any files
2301 --features display configuration information and exit
2302 --finish same as \`--mode=finish'
2303 --help display this help message and exit
2304 --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS]
2305 --quiet same as \`--silent'
2306 --silent don't print informational messages
2307 --version print version information
2309 MODE must be one of the following:
2311 compile compile a source file into a libtool object
2312 execute automatically set library path, then run a program
2313 finish complete the installation of libtool libraries
2314 install install libraries or executables
2315 link create a library or an executable
2316 uninstall remove libraries from an installed directory
2318 MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for
2319 a more detailed description of MODE."
2325 "Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
2327 Compile a source file into a libtool library object.
2329 COMPILE-COMMAND is a command to be used in creating a \`standard' object file
2330 from the given SOURCEFILE.
2332 The output file name is determined by removing the directory component from
2333 SOURCEFILE, then substituting the C source code suffix \`.c' with the
2334 library object suffix, \`.lo'."
2339 "Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]...
2341 Automatically set library path, then run a program.
2343 This mode accepts the following additional options:
2345 -dlopen FILE add the directory containing FILE to the library path
2347 This mode sets the library path environment variable according to \`-dlopen'
2350 If any of the ARGS are libtool executable wrappers, then they are translated
2351 into their corresponding uninstalled binary, and any of their required library
2352 directories are added to the library path.
2354 Then, COMMAND is executed, with ARGS as arguments."
2359 "Usage: $modename [OPTION]... --mode=finish [LIBDIR]...
2361 Complete the installation of libtool libraries.
2363 Each LIBDIR is a directory that contains libtool libraries.
2365 The commands that this mode executes may require superuser privileges. Use
2366 the \`--dry-run' option if you just want to see what would be executed."
2371 "Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND...
2373 Install executables or libraries.
2375 INSTALL-COMMAND is the installation command. The first component should be
2376 either the \`install' or \`cp' program.
2378 The rest of the components are interpreted as arguments to that command (only
2379 BSD-compatible install options are recognized)."
2384 "Usage: $modename [OPTION]... --mode=link LINK-COMMAND...
2386 Link object files or libraries together to form another library, or to
2387 create an executable program.
2389 LINK-COMMAND is a command using the C compiler that you would use to create
2390 a program from several object files.
2392 The following components of LINK-COMMAND are treated specially:
2394 -all-static do not do any dynamic linking at all
2395 -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime
2396 -dlpreopen FILE link in FILE and add its symbols to dld_preloaded_symbols
2397 -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
2398 -LLIBDIR search LIBDIR for required installed libraries
2399 -lNAME OUTPUT-FILE requires the installed library libNAME
2400 -no-undefined declare that a library does not refer to external symbols
2401 -o OUTPUT-FILE create OUTPUT-FILE from the specified objects
2402 -release RELEASE specify package release information
2403 -rpath LIBDIR the created library will eventually be installed in LIBDIR
2404 -static do not do any dynamic linking of libtool libraries
2405 -version-info CURRENT[:REVISION[:AGE]]
2406 specify library version info [each variable defaults to 0]
2408 All other options (arguments beginning with \`-') are ignored.
2410 Every other argument is treated as a filename. Files ending in \`.la' are
2411 treated as uninstalled libtool libraries, other files are standard or library
2414 If the OUTPUT-FILE ends in \`.la', then a libtool library is created, only
2415 library objects (\`.lo' files) may be specified, and \`-rpath' is required.
2417 If OUTPUT-FILE ends in \`.a', then a standard library is created using \`ar'
2420 If OUTPUT-FILE ends in \`.lo' or \`.o', then a reloadable object file is
2421 created, otherwise an executable program is created."
2426 "Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
2428 Remove libraries from an installation directory.
2430 RM is the name of the program to use to delete files associated with each FILE
2431 (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
2434 If FILE is a libtool library, all the files associated with it are deleted.
2435 Otherwise, only FILE itself is deleted using RM."
2439 $echo "$modename: invalid operation mode \`$mode'" 1>&2
2446 $echo "Try \`$modename --help' for more information about other modes."