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"
452 eval "$prev=\"\$arg\""
463 if test -n "$link_static_flag"; then
464 compile_command
="$compile_command $link_static_flag"
465 finalize_command
="$finalize_command $link_static_flag"
471 # FIXME: remove this flag sometime in the future.
472 $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2
487 if test "$export_dynamic" != yes; then
489 if test -n "$export_dynamic_flag_spec"; then
490 eval arg
=\"$export_dynamic_flag_spec\"
495 # Add the symbol object into the linking commands.
496 compile_command
="$compile_command @SYMFILE@"
497 finalize_command
="$finalize_command @SYMFILE@"
502 dir
=`$echo "X$arg" | $Xsed -e 's%^-L\(.*\)$%\1%'`
505 # Add the corresponding hardcode_libdir_flag, if it is not identical.
508 $echo "$modename: \`-L$dir' cannot specify a relative directory" 1>&2
512 deplibs
="$deplibs $arg"
515 -l*) deplibs
="$deplibs $arg" ;;
540 # If we have no pic_flag, then this is the same as -all-static.
541 if test -z "$pic_flag" && test -n "$link_static_flag"; then
542 compile_command
="$compile_command $link_static_flag"
543 finalize_command
="$finalize_command $link_static_flag"
553 # Some other compiler flag.
555 # Unknown arguments in both finalize_command and compile_command need
556 # to be aesthetically quoted because they are evaled later.
557 arg
=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
559 *[\
[\~\
#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
572 if test "$prev" = dlfiles
; then
573 dlfiles
="$dlfiles $arg"
574 if test "$build_libtool_libs" = yes; then
578 # If libtool objects are unsupported, then we need to preload.
583 if test "$prev" = dlprefiles
; then
584 # Preload the old-style object.
585 dlprefiles
="$dlprefiles "`$echo "X$arg" | $Xsed -e 's/\.lo$/\.o/'`
588 libobjs
="$libobjs $arg"
592 # A libtool-controlled library.
599 # Check to see that this really is a libtool archive.
600 if (sed -e '2q' $arg |
egrep '^# Generated by ltmain\.sh') >/dev
/null
2>&1; then :
602 $echo "$modename: \`$arg' is not a valid libtool archive" 1>&2
606 # If there is no directory component, then add one.
608 */* |
*\\*) .
$arg ;;
612 if test -z "$libdir"; then
613 $echo "$modename: \`$arg' contains no -rpath information" 1>&2
617 # Get the name of the library we link against.
619 for l
in $old_library $library_names; do
623 if test -z "$linklib"; then
624 $echo "$modename: cannot find name of link library for \`$arg'" 1>&2
628 # Find the relevant object directory and library name.
629 name
=`$echo "X$arg" | $Xsed -e 's%^.*/%%' -e 's/\.la$//' -e 's/^lib//'`
630 dir
=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
631 if test "X$dir" = "X$arg"; then
637 # This library was specified with -dlopen.
638 if test "$prev" = dlfiles
; then
639 dlfiles
="$dlfiles $arg"
640 if test -z "$dlname"; then
641 # If there is no dlname, we need to preload.
644 # We should not create a dependency on this library, but we
645 # may need any libraries it requires.
646 compile_command
="$compile_command$dependency_libs"
647 finalize_command
="$finalize_command$dependency_libs"
653 # The library was specified with -dlpreopen.
654 if test "$prev" = dlprefiles
; then
655 # Prefer using a static library (so that no silly _DYNAMIC symbols
656 # are required to link).
657 if test -n "$old_library"; then
658 dlprefiles
="$dlprefiles $dir/$old_library"
660 dlprefiles
="$dlprefiles $dir/$linklib"
665 if test "$build_libtool_libs" = yes && test -n "$library_names"; then
666 link_against_libtool_libs
="$link_against_libtool_libs $arg"
667 if test -n "$shlibpath_var"; then
668 # Make sure the rpath contains only unique directories.
669 case "$temp_rpath " in
671 *) temp_rpath
="$temp_rpath $dir" ;;
675 # This is the magic to use -rpath.
676 if test -n "$hardcode_libdir_flag_spec"; then
677 if test -n "$hardcode_libdir_separator"; then
678 if test -z "$hardcode_libdirs"; then
679 # Put the magic libdir with the hardcode flag.
680 hardcode_libdirs
="$libdir"
681 libdir
="@HARDCODE_LIBDIRS@"
683 # Just accumulate the unique libdirs.
684 case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in
685 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
688 hardcode_libdirs
="$hardcode_libdirs$hardcode_libdir_separator$libdir"
695 if test -n "$libdir"; then
696 eval flag
=\"$hardcode_libdir_flag_spec\"
698 compile_command
="$compile_command $flag"
699 finalize_command
="$finalize_command $flag"
701 elif test -n "$runpath_var"; then
702 # Do the same for the permanent run path.
703 case "$perm_rpath " in
705 *) perm_rpath
="$perm_rpath $libdir" ;;
710 case "$hardcode_action" in
712 if test "$hardcode_direct" = no
; then
713 compile_command
="$compile_command $dir/$linklib"
714 elif test "$hardcode_minus_L" = no
; then
715 compile_command
="$compile_command -L$dir -l$name"
716 elif test "$hardcode_shlibpath_var" = no
; then
717 compile_shlibpath
="$compile_shlibpath$dir:"
718 compile_command
="$compile_command -l$name"
723 # We need an absolute path.
725 /* |
[A-Za-z
]:\\*) ;;
727 absdir
=`cd "$dir" && pwd`
728 if test -z "$absdir"; then
729 $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2
736 if test "$hardcode_direct" = yes; then
737 compile_command
="$compile_command $dir/$linklib"
738 elif test "$hardcode_minus_L" = yes; then
739 compile_command
="$compile_command -L$dir -l$name"
740 elif test "$hardcode_shlibpath_var" = yes; then
741 compile_shlibpath
="$compile_shlibpath$dir:"
742 compile_command
="$compile_command -l$name"
747 $echo "$modename: \`$hardcode_action' is an unknown hardcode action" 1>&2
752 # Finalize command for both is simple: just hardcode it.
753 if test "$hardcode_direct" = yes; then
754 finalize_command
="$finalize_command $libdir/$linklib"
755 elif test "$hardcode_minus_L" = yes; then
756 finalize_command
="$finalize_command -L$libdir -l$name"
757 elif test "$hardcode_shlibpath_var" = yes; then
758 finalize_shlibpath
="$finalize_shlibpath$libdir:"
759 finalize_command
="$finalize_command -l$name"
761 # We cannot seem to hardcode it, guess we'll fake it.
762 finalize_command
="$finalize_command -L$libdir -l$name"
765 # Transform directly to old archives if we don't build new libraries.
766 if test -n "$pic_flag" && test -z "$old_library"; then
767 $echo "$modename: cannot find static library for \`$arg'" 1>&2
771 # Here we assume that one of hardcode_direct or hardcode_minus_L
772 # is not unsupported. This is valid on all known static and
774 if test "$hardcode_direct" != unsupported
; then
775 test -n "$old_library" && linklib
="$old_library"
776 compile_command
="$compile_command $dir/$linklib"
777 finalize_command
="$finalize_command $dir/$linklib"
779 compile_command
="$compile_command -L$dir -l$name"
780 finalize_command
="$finalize_command -L$dir -l$name"
784 # Add in any libraries that this one depends upon.
785 compile_command
="$compile_command$dependency_libs"
786 finalize_command
="$finalize_command$dependency_libs"
790 # Some other compiler argument.
792 # Unknown arguments in both finalize_command and compile_command need
793 # to be aesthetically quoted because they are evaled later.
794 arg
=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
796 *[\
[\~\
#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
803 # Now actually substitute the argument into the commands.
804 if test -n "$arg"; then
805 compile_command
="$compile_command $arg"
806 finalize_command
="$finalize_command $arg"
810 if test -n "$prev"; then
811 $echo "$modename: the \`$prevarg' option requires an argument" 1>&2
816 if test -n "$vinfo" && test -n "$release"; then
817 $echo "$modename: you cannot specify both \`-version-info' and \`-release'" 1>&2
826 $echo "$modename: you must specify an output file" 1>&2
832 $echo "$modename: output file \`$output' must have no directory components" 1>&2
837 # Now set the variables for building old libraries.
838 build_libtool_libs
=no
846 # Make sure we only generate libraries of the form `libNAME.la'.
850 $echo "$modename: libtool library \`$arg' must begin with \`lib'" 1>&2
856 name
=`$echo "X$output" | $Xsed -e 's/\.la$//' -e 's/^lib//'`$postfix
857 eval libname
=\"$libname_spec\"
859 # All the library-specific variables (install_libdir is set above).
867 if test -n "$objs"; then
868 $echo "$modename: cannot build libtool library \`$output' from non-libtool objects:$objs" 2>&1
872 # How the heck are we supposed to write a wrapper for a shared library?
873 if test -n "$link_against_libtool_libs"; then
874 $echo "$modename: libtool library \`$output' may not depend on uninstalled libraries:$link_against_libtool_libs" 1>&2
878 if test -n "$dlfiles$dlprefiles"; then
879 $echo "$modename: warning: \`-dlopen' is ignored while creating libtool libraries" 1>&2
880 # Nullify the symbol file.
881 compile_command
=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
882 finalize_command
=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
885 if test -z "$rpath"; then
886 $echo "$modename: you must specify an installation directory with \`-rpath'" 1>&2
892 if test $# -gt 2; then
893 $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2
897 # Parse the version information argument.
898 IFS
="${IFS= }"; save_ifs
="$IFS"; IFS
=':'
902 if test -n "$5"; then
903 $echo "$modename: too many parameters to \`-version-info'" 1>&2
908 test -n "$2" && current
="$2"
909 test -n "$3" && revision
="$3"
910 test -n "$4" && age
="$4"
912 # Check that each of the things are valid numbers.
914 0 |
[1-9] |
[1-9][0-9]*) ;;
916 $echo "$modename: CURRENT \`$current' 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: REVISION \`$revision' is not a nonnegative integer" 1>&2
926 $echo "$modename: \`$vinfo' is not valid version information" 1>&2
932 0 |
[1-9] |
[1-9][0-9]*) ;;
934 $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2
935 $echo "$modename: \`$vinfo' is not valid version information" 1>&2
940 if test $age -gt $current; then
941 $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2
942 $echo "$modename: \`$vinfo' is not valid version information" 1>&2
946 # Calculate the version variables.
947 version_vars
="version_type current age revision"
948 case "$version_type" in
952 version_vars
="$version_vars major versuffix"
953 major
=`expr $current - $age`
954 versuffix
="$major.$age.$revision"
958 version_vars
="$version_vars versuffix verstring"
959 major
=`expr $current - $age`
960 versuffix
="$current.$age.$revision"
961 verstring
="$versuffix"
963 # Add in all the interfaces that we are compatible with.
965 while test $loop != 0; do
966 iface
=`expr $current - $loop`
967 loop
=`expr $loop - 1`
968 verstring
="$verstring:${iface}.0"
971 # Make executables depend on our current version.
972 verstring
="$verstring:${current}.0"
976 version_vars
="$version_vars major versuffix"
978 versuffix
="$current.$revision"
982 $echo "$modename: unknown library version type \`$version_type'" 1>&2
983 echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
988 # Create the output directory, or remove our outputs if we need to.
989 if test -d $objdir; then
990 $show "$rm $objdir/$output $objdir/$libname.* $objdir/${libname}${release}.*"
991 $run $rm $objdir/$output $objdir/$libname.
* $objdir/${libname}${release}.
*
993 $show "$mkdir $objdir"
996 if test $status -eq 0 ||
test -d $objdir; then :
1002 # Check to see if the archive will have undefined symbols.
1003 if test "$allow_undefined" = yes; then
1004 if test "$allow_undefined_flag" = unsupported
; then
1005 $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2
1006 build_libtool_libs
=no
1010 # Don't allow undefined symbols.
1011 allow_undefined_flag
="$no_undefined_flag"
1014 # Add libc to deplibs on all systems.
1015 dependency_libs
="$deplibs"
1016 deplibs
="$deplibs -lc"
1018 if test "$build_libtool_libs" = yes; then
1019 # Get the real and link names of the library.
1020 eval library_names
=\"$library_names_spec\"
1021 set dummy
$library_names
1025 if test -n "$soname_spec"; then
1026 eval soname
=\"$soname_spec\"
1031 lib
="$objdir/$realname"
1034 linknames
="$linknames $link"
1037 # Use standard objects if they are PIC.
1038 test -z "$pic_flag" && libobjs
=`$echo "X$libobjs " | $Xsed -e 's/\.lo /.o /g' -e 's/ $//g'`
1040 # Do each of the archive commands.
1041 eval cmds
=\"$archive_cmds\"
1042 IFS
="${IFS= }"; save_ifs
="$IFS"; IFS
=';'
1043 for cmd
in $cmds; do
1046 $run eval "$cmd" ||
exit $?
1050 # Create links to the real library.
1051 for linkname
in $linknames; do
1052 $show "(cd $objdir && $LN_S $realname $linkname)"
1053 $run eval '(cd $objdir && $LN_S $realname $linkname)' ||
exit $?
1056 # If -export-dynamic was specified, set the dlname.
1057 if test "$export_dynamic" = yes; then
1058 # On all known operating systems, these are identical.
1063 # Now set the variables for building old libraries.
1064 oldlib
="$objdir/$libname.a"
1068 if test -n "$link_against_libtool_libs"; then
1069 $echo "$modename: error: cannot link libtool libraries into reloadable objects" 1>&2
1073 if test -n "$deplibs"; then
1074 $echo "$modename: warning: \`-l' and \`-L' are ignored while creating objects" 1>&2
1077 if test -n "$dlfiles$dlprefiles"; then
1078 $echo "$modename: warning: \`-dlopen' is ignored while creating objects" 1>&2
1079 # Nullify the symbol file.
1080 compile_command
=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
1081 finalize_command
=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
1084 if test -n "$rpath"; then
1085 $echo "$modename: warning: \`-rpath' is ignored while creating objects" 1>&2
1088 if test -n "$vinfo"; then
1089 $echo "$modename: warning: \`-version-info' is ignored while creating objects" 1>&2
1092 if test -n "$release"; then
1093 $echo "$modename: warning: \`-release' is ignored while creating objects" 1>&2
1098 if test -n "$objs"; then
1099 $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2
1103 obj
=`$echo "X$output" | $Xsed -e 's/\.lo$/.o/'`
1111 # Delete the old objects.
1112 $run $rm $obj $libobj
1114 # Create the old-style object.
1115 reload_objs
="$objs"`$echo "X$libobjs " | $Xsed -e 's/[^ ]*\.a //g' -e 's/\.lo /.o /g' -e 's/ $//g'`
1118 eval cmds
=\"$reload_cmds\"
1119 IFS
="${IFS= }"; save_ifs
="$IFS"; IFS
=';'
1120 for cmd
in $cmds; do
1123 $run eval "$cmd" ||
exit $?
1127 # Exit if we aren't doing a library object file.
1128 test -z "$libobj" && exit 0
1130 if test "$build_libtool_libs" != yes; then
1131 # Create an invalid libtool object if no PIC, so that we don't
1132 # accidentally link it into a program.
1133 $show "echo timestamp > $libobj"
1134 $run eval "echo timestamp > $libobj" ||
exit $?
1138 if test -n "$pic_flag"; then
1139 # Only do commands if we really have different PIC objects.
1140 reload_objs
="$libobjs"
1142 eval cmds
=\"$reload_cmds\"
1143 IFS
="${IFS= }"; save_ifs
="$IFS"; IFS
=';'
1144 for cmd
in $cmds; do
1147 $run eval "$cmd" ||
exit $?
1151 # Just create a symlink.
1152 $show "$LN_S $obj $libobj"
1153 $run $LN_S $obj $libobj ||
exit 1
1160 if test -n "$vinfo"; then
1161 $echo "$modename: warning: \`-version-info' is ignored while linking programs" 1>&2
1164 if test -n "$release"; then
1165 $echo "$modename: warning: \`-release' is ignored while creating objects" 1>&2
1168 if test -n "$rpath"; then
1169 # If the user specified any rpath flags, then add them.
1170 for libdir
in $rpath; do
1171 if test -n "$hardcode_libdir_flag_spec"; then
1172 if test -n "$hardcode_libdir_separator"; then
1173 if test -z "$hardcode_libdirs"; then
1174 # Put the magic libdir with the hardcode flag.
1175 hardcode_libdirs
="$libdir"
1176 libdir
="@HARDCODE_LIBDIRS@"
1178 # Just accumulate the unique libdirs.
1179 case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in
1180 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
1183 hardcode_libdirs
="$hardcode_libdirs$hardcode_libdir_separator$libdir"
1190 if test -n "$libdir"; then
1191 eval flag
=\"$hardcode_libdir_flag_spec\"
1193 compile_command
="$compile_command $flag"
1194 finalize_command
="$finalize_command $flag"
1196 elif test -n "$runpath_var"; then
1197 case "$perm_rpath " in
1199 *) perm_rpath
="$perm_rpath $libdir" ;;
1205 # Substitute the hardcoded libdirs into the compile commands.
1206 if test -n "$hardcode_libdir_separator"; then
1207 compile_command
=`$echo "X$compile_command" | $Xsed -e "s%@HARDCODE_LIBDIRS@%$hardcode_libdirs%g"`
1208 finalize_command
=`$echo "X$finalize_command" | $Xsed -e "s%@HARDCODE_LIBDIRS@%$hardcode_libdirs%g"`
1211 if test -n "$libobjs" && test "$build_old_libs" = yes; then
1212 # Transform all the library objects into standard objects.
1213 compile_command
=`$echo "X$compile_command " | $Xsed -e 's/\.lo /.o /g' -e 's/ $//'`
1214 finalize_command
=`$echo "X$finalize_command " | $Xsed -e 's/\.lo /.o /g' -e 's/ $//'`
1217 if test "$export_dynamic" = yes && test -n "$NM" && test -n "$global_symbol_pipe"; then
1218 dlsyms
="${output}S.c"
1223 if test -n "$dlsyms"; then
1224 # Add our own program objects to the preloaded list.
1225 dlprefiles
=`$echo "X$objs$dlprefiles " | $Xsed -e 's/\.lo /.o /g' -e 's/ $//'`
1227 # Discover the nlist of each of the dlfiles.
1228 nlist
="$objdir/${output}.nm"
1230 if test -d $objdir; then
1231 $show "$rm $nlist ${nlist}T"
1232 $run $rm "$nlist" "${nlist}T"
1234 $show "$mkdir $objdir"
1237 if test $status -eq 0 ||
test -d $objdir; then :
1243 for arg
in $dlprefiles; do
1244 $show "extracting global C symbols from \`$arg'"
1245 $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
1248 # Parse the name list into a source file.
1249 $show "creating $objdir/$dlsyms"
1250 if test -z "$run"; then
1251 # Make sure we at least have an empty file.
1252 test -f "$nlist" ||
: > "$nlist"
1254 # Try sorting and uniquifying the output.
1255 if sort "$nlist" |
uniq > "$nlist"T
; then
1256 mv -f "$nlist"T
"$nlist"
1257 wcout
=`wc "$nlist" 2>/dev/null`
1258 count
=`echo "X$wcout" | $Xsed -e 's/^[ ]*\([0-9][0-9]*\).*$/\1/'`
1259 (test "$count" -ge 0) 2>/dev
/null || count
=-1
1268 $echo > "$objdir/$dlsyms" "\
1269 /* $dlsyms - symbol resolution table for \`$output' dlsym emulation. */
1270 /* Generated by $PROGRAM - GNU $PACKAGE $VERSION */
1276 /* Prevent the only kind of declaration conflicts we can make. */
1277 #define dld_preloaded_symbol_count some_other_symbol
1278 #define dld_preloaded_symbols some_other_symbol
1280 /* External symbol declarations for the compiler. */\
1283 if test -f "$nlist"; then
1284 sed -e 's/^.* \(.*\)$/extern char \1;/' < "$nlist" >> "$objdir/$dlsyms"
1286 echo '/* NONE */' >> "$objdir/$dlsyms"
1289 $echo >> "$objdir/$dlsyms" "\
1291 #undef dld_preloaded_symbol_count
1292 #undef dld_preloaded_symbols
1294 #if defined (__STDC__) && __STDC__
1295 # define __ptr_t void *
1297 # define __ptr_t char *
1300 /* The number of symbols in dld_preloaded_symbols, -1 if unsorted. */
1301 int dld_preloaded_symbol_count = $count;
1303 /* The mapping between symbol names and symbols. */
1308 dld_preloaded_symbols[] =
1312 if test -f "$nlist"; then
1313 sed 's/^\(.*\) \(.*\)$/ {"\1", (__ptr_t) \&\2},/' < "$nlist" >> "$objdir/$dlsyms"
1316 $echo >> "$objdir/$dlsyms" "\
1327 $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
1333 # Now compile the dynamic symbol file.
1334 $show "(cd $objdir && $CC -c$no_builtin_flag \"$dlsyms\")"
1335 $run eval '(cd $objdir && $CC -c$no_builtin_flag "$dlsyms")' ||
exit $?
1337 # Transform the symbol file into the correct name.
1338 compile_command
=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$objdir/${output}S.o%"`
1339 finalize_command
=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$objdir/${output}S.o%"`
1340 elif test "$export_dynamic" != yes; then
1341 test -n "$dlfiles$dlprefiles" && $echo "$modename: warning: \`-dlopen' and \`-dlpreopen' are ignored without \`-export-dynamic'" 1>&2
1343 # We keep going just in case the user didn't refer to
1344 # dld_preloaded_symbols. The linker will fail if global_symbol_pipe
1345 # really was required.
1346 $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2
1348 # Nullify the symbol file.
1349 compile_command
=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
1350 finalize_command
=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
1353 if test -z "$link_against_libtool_libs" ||
test "$build_libtool_libs" != yes; then
1354 # Replace the output file specification.
1355 compile_command
=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
1356 finalize_command
=`$echo "X$finalize_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
1358 # We have no uninstalled library dependencies, so finalize right now.
1359 $show "$compile_command"
1360 $run eval "$compile_command"
1364 # Replace the output file specification.
1365 compile_command
=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$objdir/$output"'%g'`
1366 finalize_command
=`$echo "X$finalize_command" | $Xsed -e 's%@OUTPUT@%'"$objdir/$output"'T%g'`
1368 # Create the binary in the object directory, then wrap it.
1369 if test -d $objdir; then :
1371 $show "$mkdir $objdir"
1374 if test $status -eq 0 ||
test -d $objdir; then :
1380 if test -n "$shlibpath_var"; then
1381 # We should set the shlibpath_var
1383 for dir
in $temp_rpath; do
1390 # Relative path: add a thisdir entry.
1391 rpath
="$rpath\$thisdir/$dir:"
1398 # Delete the old output file.
1401 if test -n "$compile_shlibpath"; then
1402 compile_command
="$shlibpath_var=\"$compile_shlibpath\$$shlibpath_var\" $compile_command"
1404 if test -n "$finalize_shlibpath"; then
1405 finalize_command
="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
1408 if test -n "$runpath_var" && test -n "$perm_rpath"; then
1409 # We should set the runpath_var.
1411 for dir
in $perm_rpath; do
1414 compile_command
="$runpath_var=\"$rpath\$$runpath_var\" $compile_command"
1415 finalize_command
="$runpath_var=\"$rpath\$$runpath_var\" $finalize_command"
1418 case "$hardcode_action" in
1420 # AGH! Flame the AIX and HP-UX people for me, will ya?
1421 $echo "$modename: warning: using a buggy system linker" 1>&2
1422 $echo "$modename: relinking will be required before \`$output' can be installed" 1>&2
1426 $show "$compile_command"
1427 $run eval "$compile_command" ||
exit $?
1429 # Now create the wrapper script.
1430 $show "creating $output"
1432 # Quote the finalize command for shipping.
1433 finalize_command
=`$echo "X$finalize_command" | $Xsed -e "$sed_quote_subst"`
1435 # Quote $echo for shipping.
1436 qecho
=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"`
1438 # Only actually do things if our run command is non-null.
1439 if test -z "$run"; then
1441 trap "$rm $output; exit 1" 1 2 15
1446 # $output - temporary wrapper script for $objdir/$output
1447 # Generated by ltmain.sh - GNU $PACKAGE $VERSION
1449 # The $output program cannot be directly executed until all the libtool
1450 # libraries that it depends on are installed.
1452 # This wrapper script should never be moved out of \``pwd`'.
1453 # If it is, it will not operate correctly.
1455 # Sed substitution that helps us do robust quoting. It backslashifies
1456 # metacharacters that are still active within double-quoted strings.
1457 Xsed='sed -e s/^X//'
1458 sed_quote_subst='$sed_quote_subst'
1460 # The HP-UX ksh and POSIX shell print the target directory to stdout
1462 if test \"\${CDPATH+set}\" = set; then CDPATH=; export CDPATH; fi
1464 # This environment variable determines our operation mode.
1465 if test \"\$libtool_install_magic\" = \"$magic\"; then
1466 # install mode needs the following variables:
1467 link_against_libtool_libs='$link_against_libtool_libs'
1468 finalize_command=\"$finalize_command\"
1470 # When we are sourced in execute mode, \$file and \$echo are already set.
1471 if test \"\$libtool_execute_magic\" = \"$magic\"; then :
1479 # Find the directory that this script lives in.
1480 thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
1481 test \"x\$thisdir\" = \"x\$file\" && thisdir=.
1483 # Follow symbolic links until we get to the real thisdir.
1484 file=\`ls -ld \"\$file\" | sed -n 's/.*-> //p'\`
1485 while test -n \"\$file\"; do
1486 destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
1488 # If there was a directory component, then change thisdir.
1489 if test \"x\$destdir\" != \"x\$file\"; then
1490 case \"\$destdir\" in
1491 /* | [A-Za-z]:\\*) thisdir=\"\$destdir\" ;;
1492 *) thisdir=\"\$thisdir/\$destdir\" ;;
1496 file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
1497 file=\`ls -ld \"\$thisdir/\$file\" | sed -n 's/.*-> //p'\`
1500 # Try to get the absolute directory name.
1501 absdir=\`cd \"\$thisdir\" && pwd\`
1502 test -n \"\$absdir\" && thisdir=\"\$absdir\"
1504 progdir=\"\$thisdir/$objdir\"
1507 if test -f \"\$progdir/\$program\"; then"
1509 # Export our shlibpath_var if we have one.
1510 if test -n "$shlibpath_var" && test -n "$temp_rpath"; then
1512 # Add our own library path to $shlibpath_var
1513 $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
1515 # Some systems cannot cope with colon-terminated $shlibpath_var
1516 $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/:*\$//'\`
1518 export $shlibpath_var
1523 if test \"\$libtool_execute_magic\" != \"$magic\"; then
1524 # Run the actual program with our arguments.
1526 # Export the path to the program.
1527 PATH=\"\$progdir:\$PATH\"
1530 exec \$program \${1+\"\$@\"}
1532 \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\"
1536 # The program doesn't exist.
1537 \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2
1538 \$echo \"This script is just a wrapper for \$program.\" 1>&2
1539 echo \"See the $PACKAGE documentation for more information.\" 1>&2
1550 # See if we need to build an old-fashioned archive.
1551 if test "$build_old_libs" = "yes"; then
1552 # Transform .lo files to .o files.
1553 oldobjs
="$objs"`$echo "X$libobjs " | $Xsed -e 's/[^ ]*\.a //g' -e 's/\.lo /.o /g' -e 's/ $//g'`
1555 # Do each command in the archive commands.
1556 if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
1557 eval cmds
=\"$old_archive_from_new_cmds\"
1559 eval cmds
=\"$old_archive_cmds\"
1561 IFS
="${IFS= }"; save_ifs
="$IFS"; IFS
=';'
1562 for cmd
in $cmds; do
1565 $run eval "$cmd" ||
exit $?
1570 # Now create the libtool archive.
1574 test "$build_old_libs" = yes && old_library
="$libname.a"
1576 $show "creating $output"
1578 # Only create the output if not a dry run.
1579 if test -z "$run"; then
1581 # $output - a libtool library file
1582 # Generated by ltmain.sh - GNU $PACKAGE $VERSION
1584 # The name that we can dlopen(3).
1587 # Names of this library.
1588 library_names='$library_names'
1590 # The name of the static archive.
1591 old_library='$old_library'
1593 # Libraries that this one depends upon.
1594 dependency_libs='$dependency_libs'
1596 # Version information for $libname.
1601 # Directory that this library needs to be installed in:
1602 libdir='$install_libdir'\
1606 # Do a symbolic link so that the libtool archive can be found in
1607 # LD_LIBRARY_PATH before the program is installed.
1608 $show "(cd $objdir && $LN_S ../$output $output)"
1609 $run eval "(cd $objdir && $LN_S ../$output $output)" ||
exit 1
1615 # libtool install mode
1617 modename
="$modename: install"
1619 # There may be an optional /bin/sh argument at the beginning of
1620 # install_prog (especially on Windows NT).
1621 if test "$nonopt" = "$SHELL"; then
1622 # Aesthetically quote it.
1623 arg
=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
1625 *[\
[\~\
#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
1629 install_prog
="$arg "
1637 # The real first argument should be the name of the installation program.
1638 # Aesthetically quote it.
1639 arg
=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
1641 *[\
[\~\
#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
1645 install_prog
="$install_prog$arg"
1647 # We need to accept at least all the BSD install flags.
1657 if test -n "$dest"; then
1658 files
="$files $dest"
1676 # If the previous option needed an argument, then skip it.
1677 if test -n "$prev"; then
1686 # Aesthetically quote the argument.
1687 arg
=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
1689 *[\
[\~\
#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
1693 install_prog
="$install_prog $arg"
1696 if test -z "$install_prog"; then
1697 $echo "$modename: you must specify an install program" 1>&2
1702 if test -n "$prev"; then
1703 $echo "$modename: the \`$prev' option requires an argument" 1>&2
1708 if test -z "$files"; then
1709 if test -z "$dest"; then
1710 $echo "$modename: no file or destination specified" 1>&2
1712 $echo "$modename: you must specify a destination" 1>&2
1718 # Strip any trailing slash from the destination.
1719 dest
=`$echo "X$dest" | $Xsed -e 's%/$%%'`
1721 # Check to see that the destination is a directory.
1722 test -d "$dest" && isdir
=yes
1723 if test -n "$isdir"; then
1727 destdir
=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'`
1728 test "X$destdir" = "X$dest" && destdir
=.
1729 destname
=`$echo "X$dest" | $Xsed -e 's%^.*/%%'`
1731 # Not a directory, so check to see that there is only one file specified.
1733 if test $# -gt 2; then
1734 $echo "$modename: \`$dest' is not a directory" 1>&2
1740 /* |
[A-Za-z
]:\\*) ;;
1742 for file in $files; do
1746 $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2
1755 # This variable tells wrapper scripts just to set variables rather
1756 # than running their programs.
1757 libtool_install_magic
="$magic"
1762 for file in $files; do
1764 # Do each installation.
1767 # Do the static libraries later.
1768 staticlibs
="$staticlibs $file"
1772 # Check to see that this really is a libtool archive.
1773 if (sed -e '2q' $file |
egrep '^# Generated by ltmain\.sh') >/dev
/null
2>&1; then :
1775 $echo "$modename: \`$file' is not a valid libtool archive" 1>&2
1782 # If there is no directory component, then add one.
1784 */* |
*\\*) .
$file ;;
1788 # Add the libdir to current_libdirs if it is the destination.
1789 if test "X$destdir" = "X$libdir"; then
1790 case "$current_libdirs " in
1792 *) current_libdirs
="$current_libdirs $libdir" ;;
1795 # Note the libdir as a future libdir.
1796 case "$future_libdirs " in
1798 *) future_libdirs
="$future_libdirs $libdir" ;;
1802 dir
="`$echo "X
$file" | $Xsed -e 's%/[^/]*$%%'`/"
1803 test "X$dir" = "X$file/" && dir
=
1806 # See the names of the shared library.
1807 set dummy
$library_names
1808 if test -n "$2"; then
1813 # Install the shared library and build the symlinks.
1814 $show "$install_prog $dir/$realname $destdir/$realname"
1815 $run eval "$install_prog $dir/$realname $destdir/$realname" ||
exit $?
1816 test "X$dlname" = "X$realname" && dlname
=
1818 if test $# -gt 0; then
1819 # Delete the old symlinks.
1823 rmcmd
="$rmcmd $destdir/$linkname"
1828 # ... and create new ones.
1831 test "X$dlname" = "X$linkname" && dlname
=
1832 $show "(cd $destdir && $LN_S $realname $linkname)"
1833 $run eval "(cd $destdir && $LN_S $realname $linkname)"
1837 if test -n "$dlname"; then
1838 # Install the dynamically-loadable library.
1839 $show "$install_prog $dir/$dlname $destdir/$dlname"
1840 $run eval "$install_prog $dir/$dlname $destdir/$dlname" ||
exit $?
1843 # Do each command in the postinstall commands.
1844 lib
="$destdir/$realname"
1845 eval cmds
=\"$postinstall_cmds\"
1846 IFS
="${IFS= }"; save_ifs
="$IFS"; IFS
=';'
1847 for cmd
in $cmds; do
1850 $run eval "$cmd" ||
exit $?
1855 # Install the pseudo-library for information purposes.
1856 name
=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
1857 $show "$install_prog $file $destdir/$name"
1858 $run eval "$install_prog $file $destdir/$name" ||
exit $?
1860 # Maybe install the static library, too.
1861 test -n "$old_library" && staticlibs
="$staticlibs $dir/$old_library"
1865 # Install (i.e. copy) a libtool object.
1867 # Figure out destination file name, if it wasn't already specified.
1868 if test -n "$destname"; then
1869 destfile
="$destdir/$destname"
1871 destfile
=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
1872 destfile
="$destdir/$destfile"
1875 # Deduce the name of the destination old-style object file.
1878 staticdest
=`$echo "X$destfile" | $Xsed -e 's/\.lo$/\.o/'`
1881 staticdest
="$destfile"
1885 $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2
1891 # Install the libtool object if requested.
1892 if test -n "$destfile"; then
1893 $show "$install_prog $file $destfile"
1894 $run eval "$install_prog $file $destfile" ||
exit $?
1897 # Install the old object if enabled.
1898 if test "$build_old_libs" = yes; then
1899 # Deduce the name of the old-style object file.
1900 staticobj
=`$echo "X$file" | $Xsed -e 's/\.lo$/\.o/'`
1902 $show "$install_prog $staticobj $staticdest"
1903 $run eval "$install_prog \$staticobj \$staticdest" ||
exit $?
1909 # Do a test to see if this is really a libtool program.
1910 if (sed -e '4q' $file |
egrep '^# Generated by ltmain\.sh') >/dev
/null
2>&1; then
1911 link_against_libtool_libs
=
1914 # If there is no directory component, then add one.
1916 */* |
*\\*) .
$file ;;
1920 # Check the variables that should have been set.
1921 if test -z "$link_against_libtool_libs" ||
test -z "$finalize_command"; then
1922 $echo "$modename: invalid libtool wrapper script \`$file'" 1>&2
1927 for lib
in $link_against_libtool_libs; do
1928 # Check to see that each library is installed.
1930 if test -f "$lib"; then
1931 # If there is no directory component, then add one.
1933 */* |
*\\*) .
$lib ;;
1937 libfile
="$libdir/`$echo "X
$lib" | $Xsed -e 's%^.*/%%g'`"
1938 if test -z "$libdir"; then
1939 $echo "$modename: warning: \`$lib' contains no -rpath information" 1>&2
1940 elif test -f "$libfile"; then :
1942 $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2
1947 if test "$hardcode_action" = relink
; then
1948 if test "$finalize" = yes; then
1949 $echo "$modename: warning: relinking \`$file' on behalf of your buggy system linker" 1>&2
1950 $show "$finalize_command"
1951 if $run eval "$finalize_command"; then :
1953 $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
1956 file="$objdir/$file"T
1958 $echo "$modename: warning: cannot relink \`$file' on behalf of your buggy system linker" 1>&2
1961 # Install the binary that we compiled earlier.
1962 file=`$echo "X$file" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
1966 $show "$install_prog$stripme $file $dest"
1967 $run eval "$install_prog\$stripme \$file \$dest" ||
exit $?
1972 for file in $staticlibs; do
1973 name
=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
1975 # Set up the ranlib parameters.
1976 oldlib
="$destdir/$name"
1978 $show "$install_prog $file $oldlib"
1979 $run eval "$install_prog \$file \$oldlib" ||
exit $?
1981 # Do each command in the postinstall commands.
1982 eval cmds
=\"$old_postinstall_cmds\"
1983 IFS
="${IFS= }"; save_ifs
="$IFS"; IFS
=';'
1984 for cmd
in $cmds; do
1987 $run eval "$cmd" ||
exit $?
1992 if test -n "$future_libdirs"; then
1993 $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2
1996 if test -n "$current_libdirs"; then
1997 # Maybe just do a dry run.
1998 test -n "$run" && current_libdirs
=" -n$current_libdirs"
1999 exec $SHELL $0 --finish$current_libdirs
2006 # libtool finish mode
2008 modename
="$modename: finish"
2011 if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
2014 libdirs
="$libdirs $dir"
2017 for libdir
in $libdirs; do
2018 if test -n "$finish_cmds"; then
2019 # Do each command in the finish commands.
2020 eval cmds
=\"$finish_cmds\"
2021 IFS
="${IFS= }"; save_ifs
="$IFS"; IFS
=';'
2022 for cmd
in $cmds; do
2029 if test -n "$finish_eval"; then
2030 # Do the single finish_eval.
2031 eval cmds
=\"$finish_eval\"
2037 echo "------------------------------------------------------------------------------"
2038 echo "Libraries have been installed in:"
2039 for libdir
in $libdirs; do
2043 echo "To link against installed libraries in a given directory, LIBDIR,"
2044 echo "you must use the \`-LLIBDIR' flag during linking."
2046 echo " You will also need to do one of the following:"
2047 if test -n "$shlibpath_var"; then
2048 echo " - add LIBDIR to the \`$shlibpath_var' environment variable"
2049 echo " during execution"
2051 if test -n "$runpath_var"; then
2052 echo " - add LIBDIR to the \`$runpath_var' environment variable"
2053 echo " during linking"
2055 if test -n "$hardcode_libdir_flag_spec"; then
2057 eval flag
=\"$hardcode_libdir_flag_spec\"
2059 echo " - use the \`$flag' linker flag"
2061 if test -f /etc
/ld.so.conf
; then
2062 echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
2065 echo "See any operating system documentation about shared libraries for"
2066 echo "more information, such as the ld(1) and ld.so(8) manual pages."
2067 echo "------------------------------------------------------------------------------"
2071 # libtool execute mode
2073 modename
="$modename: execute"
2075 # The first argument is the command name.
2077 if test -z "$cmd"; then
2078 $echo "$modename: you must specify a COMMAND" 1>&2
2083 # Handle -dlopen flags immediately.
2084 for file in $execute_dlfiles; do
2085 if test -f "$file"; then :
2087 $echo "$modename: \`$file' is not a file" 1>&2
2095 # Check to see that this really is a libtool archive.
2096 if (sed -e '2q' $file |
egrep '^# Generated by ltmain\.sh') >/dev
/null
2>&1; then :
2098 $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
2103 # Read the libtool library.
2107 # If there is no directory component, then add one.
2109 */* |
*\\*) .
$file ;;
2113 # Skip this library if it cannot be dlopened.
2114 if test -z "$dlname"; then
2115 # Warn if it was a shared library.
2116 test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'"
2120 dir
=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
2121 test "X$dir" = "X$file" && dir
=.
2123 if test -f "$dir/$objdir/$dlname"; then
2126 $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
2132 # Just add the directory containing the .lo file.
2133 dir
=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
2134 test "X$dir" = "X$file" && dir
=.
2138 $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2
2143 # Get the absolute pathname.
2144 absdir
=`cd "$dir" && pwd`
2145 test -n "$absdir" && dir
="$absdir"
2147 # Now add the directory to shlibpath_var.
2148 if eval "test -z \"\$$shlibpath_var\""; then
2149 eval "$shlibpath_var=\"\$dir\""
2151 eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
2155 # This variable tells wrapper scripts just to set shlibpath_var
2156 # rather than running their programs.
2157 libtool_execute_magic
="$magic"
2159 # Check if any of the arguments is a wrapper script.
2166 # Do a test to see if this is really a libtool program.
2167 if (sed -e '4q' $file |
egrep '^# Generated by ltmain\.sh') >/dev
/null
2>&1; then
2168 # If there is no directory component, then add one.
2170 */* |
*\\*) .
$file ;;
2174 # Transform arg to wrapped name.
2175 file="$progdir/$program"
2179 # Quote arguments (to preserve shell metacharacters).
2180 file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"`
2181 args
="$args \"$file\""
2184 if test -z "$run"; then
2185 # Export the shlibpath_var.
2186 eval "export $shlibpath_var"
2188 # Now actually exec the command.
2189 eval "exec \$cmd$args"
2191 $echo "$modename: cannot exec \$cmd$args"
2194 # Display what would be done.
2195 eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\""
2196 $echo "export $shlibpath_var"
2202 # libtool uninstall mode
2204 modename
="$modename: uninstall"
2211 -*) rm="$rm $arg" ;;
2212 *) files
="$files $arg" ;;
2216 if test -z "$rm"; then
2217 $echo "$modename: you must specify an RM program" 1>&2
2222 for file in $files; do
2223 dir
=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
2224 test "X$dir" = "X$file" && dir
=.
2225 name
=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
2231 # Possibly a libtool archive, so verify it.
2232 if (sed -e '2q' $file |
egrep '^# Generated by ltmain\.sh') >/dev
/null
2>&1; then
2235 # Delete the libtool libraries and symlinks.
2236 for n
in $library_names; do
2237 rmfiles
="$rmfiles $dir/$n"
2238 test "X$n" = "X$dlname" && dlname
=
2240 test -n "$dlname" && rmfiles
="$rmfiles $dir/$dlname"
2241 test -n "$old_library" && rmfiles
="$rmfiles $dir/$old_library"
2243 $show "$rm $rmfiles"
2246 if test -n "$library_names"; then
2247 # Do each command in the postuninstall commands.
2248 eval cmds
=\"$postuninstall_cmds\"
2249 IFS
="${IFS= }"; save_ifs
="$IFS"; IFS
=';'
2250 for cmd
in $cmds; do
2258 if test -n "$old_library"; then
2259 # Do each command in the old_postuninstall commands.
2260 eval cmds
=\"$old_postuninstall_cmds\"
2261 IFS
="${IFS= }"; save_ifs
="$IFS"; IFS
=';'
2262 for cmd
in $cmds; do
2270 # FIXME: should reinstall the best remaining shared library.
2275 if test "$build_old_libs" = yes; then
2276 oldobj
=`$echo "X$name" | $Xsed -e 's/\.lo$/\.o/'`
2277 rmfiles
="$rmfiles $dir/$oldobj"
2279 $show "$rm $rmfiles"
2284 $show "$rm $rmfiles"
2293 $echo "$modename: you must specify a MODE" 1>&2
2294 $echo "$generic_help" 1>&2
2299 $echo "$modename: invalid operation mode \`$mode'" 1>&2
2300 $echo "$generic_help" 1>&2
2302 fi # test -z "$show_help"
2304 # We need to display help for each of the modes.
2307 "Usage: $modename [OPTION]... [MODE-ARG]...
2309 Provide generalized library-building support services.
2311 -n, --dry-run display commands without modifying any files
2312 --features display configuration information and exit
2313 --finish same as \`--mode=finish'
2314 --help display this help message and exit
2315 --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS]
2316 --quiet same as \`--silent'
2317 --silent don't print informational messages
2318 --version print version information
2320 MODE must be one of the following:
2322 compile compile a source file into a libtool object
2323 execute automatically set library path, then run a program
2324 finish complete the installation of libtool libraries
2325 install install libraries or executables
2326 link create a library or an executable
2327 uninstall remove libraries from an installed directory
2329 MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for
2330 a more detailed description of MODE."
2336 "Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
2338 Compile a source file into a libtool library object.
2340 COMPILE-COMMAND is a command to be used in creating a \`standard' object file
2341 from the given SOURCEFILE.
2343 The output file name is determined by removing the directory component from
2344 SOURCEFILE, then substituting the C source code suffix \`.c' with the
2345 library object suffix, \`.lo'."
2350 "Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]...
2352 Automatically set library path, then run a program.
2354 This mode accepts the following additional options:
2356 -dlopen FILE add the directory containing FILE to the library path
2358 This mode sets the library path environment variable according to \`-dlopen'
2361 If any of the ARGS are libtool executable wrappers, then they are translated
2362 into their corresponding uninstalled binary, and any of their required library
2363 directories are added to the library path.
2365 Then, COMMAND is executed, with ARGS as arguments."
2370 "Usage: $modename [OPTION]... --mode=finish [LIBDIR]...
2372 Complete the installation of libtool libraries.
2374 Each LIBDIR is a directory that contains libtool libraries.
2376 The commands that this mode executes may require superuser privileges. Use
2377 the \`--dry-run' option if you just want to see what would be executed."
2382 "Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND...
2384 Install executables or libraries.
2386 INSTALL-COMMAND is the installation command. The first component should be
2387 either the \`install' or \`cp' program.
2389 The rest of the components are interpreted as arguments to that command (only
2390 BSD-compatible install options are recognized)."
2395 "Usage: $modename [OPTION]... --mode=link LINK-COMMAND...
2397 Link object files or libraries together to form another library, or to
2398 create an executable program.
2400 LINK-COMMAND is a command using the C compiler that you would use to create
2401 a program from several object files.
2403 The following components of LINK-COMMAND are treated specially:
2405 -all-static do not do any dynamic linking at all
2406 -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime
2407 -dlpreopen FILE link in FILE and add its symbols to dld_preloaded_symbols
2408 -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
2409 -LLIBDIR search LIBDIR for required installed libraries
2410 -lNAME OUTPUT-FILE requires the installed library libNAME
2411 -no-undefined declare that a library does not refer to external symbols
2412 -o OUTPUT-FILE create OUTPUT-FILE from the specified objects
2413 -release RELEASE specify package release information
2414 -rpath LIBDIR the created library will eventually be installed in LIBDIR
2415 -static do not do any dynamic linking of libtool libraries
2416 -version-info CURRENT[:REVISION[:AGE]]
2417 specify library version info [each variable defaults to 0]
2419 All other options (arguments beginning with \`-') are ignored.
2421 Every other argument is treated as a filename. Files ending in \`.la' are
2422 treated as uninstalled libtool libraries, other files are standard or library
2425 If the OUTPUT-FILE ends in \`.la', then a libtool library is created, only
2426 library objects (\`.lo' files) may be specified, and \`-rpath' is required.
2428 If OUTPUT-FILE ends in \`.a', then a standard library is created using \`ar'
2431 If OUTPUT-FILE ends in \`.lo' or \`.o', then a reloadable object file is
2432 created, otherwise an executable program is created."
2437 "Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
2439 Remove libraries from an installation directory.
2441 RM is the name of the program to use to delete files associated with each FILE
2442 (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
2445 If FILE is a libtool library, all the files associated with it are deleted.
2446 Otherwise, only FILE itself is deleted using RM."
2450 $echo "$modename: invalid operation mode \`$mode'" 1>&2
2457 $echo "Try \`$modename --help' for more information about other modes."