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
75 lo2o
="s/\\.lo\$/.${objext}/"
76 los2o
="s/\\.lo /.${objext} /g"
78 # Parse our command line options once, thoroughly.
85 -*=*) optarg
=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;;
89 # If the previous option needs an argument, assign it.
90 if test -n "$prev"; then
93 eval "$prev=\"\$$prev \$arg\""
105 # Have we seen a non-optional argument yet?
112 echo "$PROGRAM (GNU $PACKAGE) $VERSION"
117 sed -e '1,/^### BEGIN LIBTOOL CONFIG/d' -e '/^### END LIBTOOL CONFIG/,$d' $0
122 echo "$progname: enabling shell trace mode"
132 if test "$build_libtool_libs" = yes; then
133 echo "enable shared libraries"
135 echo "disable shared libraries"
137 if test "$build_old_libs" = yes; then
138 echo "enable static libraries"
140 echo "disable static libraries"
145 --finish) mode
="finish" ;;
147 --mode) prevopt
="--mode" prev
=mode
;;
148 --mode=*) mode
="$optarg" ;;
160 $echo "$modename: unrecognized option \`$arg'" 1>&2
172 if test -n "$prevopt"; then
173 $echo "$modename: option \`$prevopt' requires an argument" 1>&2
178 if test -z "$show_help"; then
180 # Infer the operation mode.
181 if test -z "$mode"; then
183 *cc |
*++ | gcc
* |
*-gcc*)
205 # If we have no mode, but dlfiles were specified, then do execute mode.
206 test -n "$execute_dlfiles" && mode
=execute
208 # Just use the default operation mode.
209 if test -z "$mode"; then
210 if test -n "$nonopt"; then
211 $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2
213 $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2
220 # Only execute mode is allowed to have -dlopen flags.
221 if test -n "$execute_dlfiles" && test "$mode" != execute
; then
222 $echo "$modename: unrecognized option \`-dlopen'" 1>&2
227 # Change the help message to a mode-specific one.
229 help="Try \`$modename --help --mode=$mode' for more information."
231 # These modes are in order of execution frequency so that they run quickly.
233 # libtool compile mode
235 modename
="$modename: compile"
236 # Get the compilation command and the source file.
244 # Accept any command-line options.
247 $echo "$modename: you cannot specify the output filename with \`-o'" 1>&2
253 build_libtool_libs
=no
259 # Accept the current argument as the source file.
263 # Aesthetically quote the previous argument.
265 # Backslashify any backslashes, double quotes, and dollar signs.
266 # These are the only characters that are still specially
267 # interpreted inside of double-quoted scrings.
268 lastarg
=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"`
270 # Double-quote args containing other shell metacharacters.
271 # Many Bourne shells cannot handle close brackets correctly in scan
272 # sets, so we specify it separately.
274 *[\
[\~\
#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
275 lastarg
="\"$lastarg\""
279 # Add the previous argument to base_compile.
280 if test -z "$base_compile"; then
281 base_compile
="$lastarg"
283 base_compile
="$base_compile $lastarg"
287 # Get the name of the library object.
288 libobj
=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'`
290 # Recognize several different file suffixes.
305 libobj
=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
308 *.lo
) obj
=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;;
310 $echo "$modename: cannot determine name of library object from \`$srcfile'" 1>&2
315 if test -z "$base_compile"; then
316 $echo "$modename: you must specify a compilation command" 1>&2
321 # Delete any leftover library objects.
322 if test "$build_old_libs" = yes; then
323 $run $rm $obj $libobj
324 trap "$run $rm $obj $libobj; exit 1" 1 2 15
327 trap "$run $rm $libobj; exit 1" 1 2 15
330 if test -n "$fix_srcfile_path"; then
331 eval srcfile
=\"$fix_srcfile_path\"
334 # Only build a PIC object if we are building libtool libraries.
335 if test "$build_libtool_libs" = yes; then
336 # Without this assignment, base_compile gets emptied.
337 fbsd_hideous_sh_bug
=$base_compile
339 # All platforms use -DPIC, to notify preprocessed assembler code.
340 $show "$base_compile$pic_flag -DPIC $srcfile"
341 if $run eval "$base_compile\$pic_flag -DPIC \$srcfile"; then :
343 test -n "$obj" && $run $rm $obj
347 # If we have no pic_flag, then copy the object into place and finish.
348 if test -z "$pic_flag"; then
349 $show "$LN_S $obj $libobj"
350 $run $LN_S $obj $libobj
354 # Just move the object, then go on to compile the next one
355 $show "$mv $obj $libobj"
356 $run $mv $obj $libobj ||
exit 1
358 # Allow error messages only from the first compilation.
359 suppress_output
=' >/dev/null 2>&1'
362 # Only build a position-dependent object if we build old libraries.
363 if test "$build_old_libs" = yes; then
364 # Suppress compiler output if we already did a PIC compilation.
365 $show "$base_compile $srcfile$suppress_output"
366 if $run eval "$base_compile \$srcfile$suppress_output"; then :
368 $run $rm $obj $libobj
373 # Create an invalid libtool object if no PIC, so that we do not
374 # accidentally link it into a program.
375 if test "$build_libtool_libs" != yes; then
376 $show "echo timestamp > $libobj"
377 $run eval "echo timestamp > \$libobj" ||
exit $?
385 modename
="$modename: link"
388 compile_command
="$CC"
389 finalize_command
="$CC"
399 link_against_libtool_libs
=
410 # We need to know -static, to get the right output filenames.
414 -all-static |
-static)
415 if test "X$arg" = "X-all-static" && test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
416 $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2
418 build_libtool_libs
=no
425 # See if our shared archives depend on static archives.
426 test -n "$old_archive_from_new_cmds" && build_old_libs
=yes
428 # Go through the arguments, transforming them on the way.
431 # If the previous option needs an argument, assign it.
432 if test -n "$prev"; then
435 compile_command
="$compile_command @OUTPUT@"
436 finalize_command
="$finalize_command @OUTPUT@"
443 *.la |
*.lo
) ;; # We handle these cases below.
445 dlprefiles
="$dlprefiles $arg"
446 test "$prev" = dlfiles
&& dlfiles
="$dlfiles $arg"
462 eval "$prev=\"\$arg\""
473 if test -n "$link_static_flag"; then
474 compile_command
="$compile_command $link_static_flag"
475 finalize_command
="$finalize_command $link_static_flag"
481 # FIXME: remove this flag sometime in the future.
482 $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2
497 if test "$export_dynamic" != yes; then
499 if test -n "$export_dynamic_flag_spec"; then
500 eval arg
=\"$export_dynamic_flag_spec\"
505 # Add the symbol object into the linking commands.
506 compile_command
="$compile_command @SYMFILE@"
507 finalize_command
="$finalize_command @SYMFILE@"
512 dir
=`$echo "X$arg" | $Xsed -e 's%^-L\(.*\)$%\1%'`
515 # Add the corresponding hardcode_libdir_flag, if it is not identical.
518 $echo "$modename: \`-L$dir' cannot specify a relative directory" 1>&2
522 deplibs
="$deplibs $arg"
525 -l*) deplibs
="$deplibs $arg" ;;
545 # If we have no pic_flag, then this is the same as -all-static.
546 if test -z "$pic_flag" && test -n "$link_static_flag"; then
547 compile_command
="$compile_command $link_static_flag"
548 finalize_command
="$finalize_command $link_static_flag"
558 # Some other compiler flag.
560 # Unknown arguments in both finalize_command and compile_command need
561 # to be aesthetically quoted because they are evaled later.
562 arg
=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
564 *[\
[\~\
#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
570 *.o |
*.obj |
*.a |
*.lib
)
577 if test "$prev" = dlfiles
; then
578 dlfiles
="$dlfiles $arg"
579 if test "$build_libtool_libs" = yes; then
583 # If libtool objects are unsupported, then we need to preload.
588 if test "$prev" = dlprefiles
; then
589 # Preload the old-style object.
590 dlprefiles
="$dlprefiles "`$echo "X$arg" | $Xsed -e "$lo2o"`
593 libobjs
="$libobjs $arg"
597 # A libtool-controlled library.
604 # Check to see that this really is a libtool archive.
605 if (sed -e '2q' $arg |
egrep "^# Generated by .*$PACKAGE") >/dev
/null
2>&1; then :
607 $echo "$modename: \`$arg' is not a valid libtool archive" 1>&2
611 # If there is no directory component, then add one.
613 */* |
*\\*) .
$arg ;;
617 if test -z "$libdir"; then
618 $echo "$modename: \`$arg' contains no -rpath information" 1>&2
622 # Get the name of the library we link against.
624 for l
in $old_library $library_names; do
628 if test -z "$linklib"; then
629 $echo "$modename: cannot find name of link library for \`$arg'" 1>&2
633 # Find the relevant object directory and library name.
634 name
=`$echo "X$arg" | $Xsed -e 's%^.*/%%' -e 's/\.la$//' -e 's/^lib//'`
635 dir
=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
636 if test "X$dir" = "X$arg"; then
642 # This library was specified with -dlopen.
643 if test "$prev" = dlfiles
; then
644 dlfiles
="$dlfiles $arg"
645 if test -z "$dlname"; then
646 # If there is no dlname, we need to preload.
649 # We should not create a dependency on this library, but we
650 # may need any libraries it requires.
651 compile_command
="$compile_command$dependency_libs"
652 finalize_command
="$finalize_command$dependency_libs"
658 # The library was specified with -dlpreopen.
659 if test "$prev" = dlprefiles
; then
660 # Prefer using a static library (so that no silly _DYNAMIC symbols
661 # are required to link).
662 if test -n "$old_library"; then
663 dlprefiles
="$dlprefiles $dir/$old_library"
665 dlprefiles
="$dlprefiles $dir/$linklib"
670 if test "$build_libtool_libs" = yes && test -n "$library_names"; then
671 link_against_libtool_libs
="$link_against_libtool_libs $arg"
672 if test -n "$shlibpath_var"; then
673 # Make sure the rpath contains only unique directories.
674 case "$temp_rpath " in
676 *) temp_rpath
="$temp_rpath $dir" ;;
680 # This is the magic to use -rpath.
681 if test -n "$hardcode_libdir_flag_spec"; then
682 if test -n "$hardcode_libdir_separator"; then
683 if test -z "$hardcode_libdirs"; then
684 # Put the magic libdir with the hardcode flag.
685 hardcode_libdirs
="$libdir"
686 libdir
="@HARDCODE_LIBDIRS@"
688 # Just accumulate the unique libdirs.
689 case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in
690 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
693 hardcode_libdirs
="$hardcode_libdirs$hardcode_libdir_separator$libdir"
700 if test -n "$libdir"; then
701 eval flag
=\"$hardcode_libdir_flag_spec\"
703 compile_command
="$compile_command $flag"
704 finalize_command
="$finalize_command $flag"
706 elif test -n "$runpath_var"; then
707 # Do the same for the permanent run path.
708 case "$perm_rpath " in
710 *) perm_rpath
="$perm_rpath $libdir" ;;
715 case "$hardcode_action" in
717 if test "$hardcode_direct" = no
; then
718 compile_command
="$compile_command $dir/$linklib"
719 elif test "$hardcode_minus_L" = no
; then
720 compile_command
="$compile_command -L$dir -l$name"
721 elif test "$hardcode_shlibpath_var" = no
; then
722 compile_shlibpath
="$compile_shlibpath$dir:"
723 compile_command
="$compile_command -l$name"
728 # We need an absolute path.
730 /* |
[A-Za-z
]:\\*) ;;
732 absdir
=`cd "$dir" && pwd`
733 if test -z "$absdir"; then
734 $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2
741 if test "$hardcode_direct" = yes; then
742 compile_command
="$compile_command $dir/$linklib"
743 elif test "$hardcode_minus_L" = yes; then
744 compile_command
="$compile_command -L$dir -l$name"
745 elif test "$hardcode_shlibpath_var" = yes; then
746 compile_shlibpath
="$compile_shlibpath$dir:"
747 compile_command
="$compile_command -l$name"
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//'`
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 if test -n "$vinfo"; then
899 # Parse the version information argument.
900 IFS
="${IFS= }"; save_ifs
="$IFS"; IFS
=':'
904 if test -n "$5"; then
905 $echo "$modename: too many parameters to \`-version-info'" 1>&2
910 test -n "$2" && current
="$2"
911 test -n "$3" && revision
="$3"
912 test -n "$4" && age
="$4"
914 # Check that each of the things are valid numbers.
916 0 |
[1-9] |
[1-9][0-9]*) ;;
918 $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2
919 $echo "$modename: \`$vinfo' is not valid version information" 1>&2
925 0 |
[1-9] |
[1-9][0-9]*) ;;
927 $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2
928 $echo "$modename: \`$vinfo' is not valid version information" 1>&2
934 0 |
[1-9] |
[1-9][0-9]*) ;;
936 $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2
937 $echo "$modename: \`$vinfo' is not valid version information" 1>&2
942 if test $age -gt $current; then
943 $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2
944 $echo "$modename: \`$vinfo' is not valid version information" 1>&2
948 # Calculate the version variables.
949 version_vars
="version_type current age revision"
950 case "$version_type" in
954 version_vars
="$version_vars major versuffix"
955 major
=.
`expr $current - $age`
956 versuffix
=".$major.$age.$revision"
960 version_vars
="$version_vars versuffix verstring"
961 major
=.
`expr $current - $age`
962 versuffix
=.
"$current.$age.$revision"
963 verstring
="$current.$age.$revision"
965 # Add in all the interfaces that we are compatible with.
967 while test $loop != 0; do
968 iface
=`expr $current - $loop`
969 loop
=`expr $loop - 1`
970 verstring
="$verstring:${iface}.0"
973 # Make executables depend on our current version.
974 verstring
="$verstring:${current}.0"
978 version_vars
="$version_vars major versuffix"
980 versuffix
=.
"$current.$revision"
984 # Like Linux, but with '-' rather than '.', since we only
985 # want one extension on Windows 95.
986 version_vars
="$version_vars major versuffix"
987 major
=`expr $current - $age`
988 versuffix
="-$major-$age-$revision"
992 $echo "$modename: unknown library version type \`$version_type'" 1>&2
993 echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
999 # No version information.
1002 case "$version_type" in
1006 version_vars
="$version_vars versuffix major"
1012 version_vars
="$version_vars versuffix verstring"
1019 version_vars
="$version_vars major versuffix"
1025 # Like Linux, but with '-' rather than '.', and with a leading
1026 # '-', since we only want one extension on Windows 95.
1027 version_vars
="$version_vars major versuffix"
1033 $echo "$modename: unknown library version type \`$version_type'" 1>&2
1034 echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
1040 # Create the output directory, or remove our outputs if we need to.
1041 if test -d $objdir; then
1042 $show "$rm $objdir/$output $objdir/$libname.* $objdir/${libname}${release}.*"
1043 $run $rm $objdir/$output $objdir/$libname.
* $objdir/${libname}${release}.
*
1045 $show "$mkdir $objdir"
1048 if test $status -eq 0 ||
test -d $objdir; then :
1054 # Check to see if the archive will have undefined symbols.
1055 if test "$allow_undefined" = yes; then
1056 if test "$allow_undefined_flag" = unsupported
; then
1057 $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2
1058 build_libtool_libs
=no
1062 # Don't allow undefined symbols.
1063 allow_undefined_flag
="$no_undefined_flag"
1066 # Add libc to deplibs on all systems.
1067 dependency_libs
="$deplibs"
1068 deplibs
="$deplibs -lc"
1070 if test "$build_libtool_libs" = yes; then
1071 # Get the real and link names of the library.
1072 eval library_names
=\"$library_names_spec\"
1073 set dummy
$library_names
1077 if test -n "$soname_spec"; then
1078 eval soname
=\"$soname_spec\"
1083 lib
="$objdir/$realname"
1086 linknames
="$linknames $link"
1089 # Use standard objects if they are PIC.
1090 test -z "$pic_flag" && libobjs
=`$echo "X$libobjs " | $Xsed -e "$los2o" -e 's/ $//g'`
1092 # Do each of the archive commands.
1093 eval cmds
=\"$archive_cmds\"
1094 IFS
="${IFS= }"; save_ifs
="$IFS"; IFS
=';'
1095 for cmd
in $cmds; do
1098 $run eval "$cmd" ||
exit $?
1102 # Create links to the real library.
1103 for linkname
in $linknames; do
1104 if test "$realname" != "$linkname"; then
1105 $show "(cd $objdir && $LN_S $realname $linkname)"
1106 $run eval '(cd $objdir && $LN_S $realname $linkname)' ||
exit $?
1110 # If -export-dynamic was specified, set the dlname.
1111 if test "$export_dynamic" = yes; then
1112 # On all known operating systems, these are identical.
1117 # Now set the variables for building old libraries.
1118 oldlib
="$objdir/$libname.$libext"
1122 if test -n "$link_against_libtool_libs"; then
1123 $echo "$modename: error: cannot link libtool libraries into reloadable objects" 1>&2
1127 if test -n "$deplibs"; then
1128 $echo "$modename: warning: \`-l' and \`-L' are ignored while creating objects" 1>&2
1131 if test -n "$dlfiles$dlprefiles"; then
1132 $echo "$modename: warning: \`-dlopen' is ignored while creating objects" 1>&2
1133 # Nullify the symbol file.
1134 compile_command
=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
1135 finalize_command
=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
1138 if test -n "$rpath"; then
1139 $echo "$modename: warning: \`-rpath' is ignored while creating objects" 1>&2
1142 if test -n "$vinfo"; then
1143 $echo "$modename: warning: \`-version-info' is ignored while creating objects" 1>&2
1146 if test -n "$release"; then
1147 $echo "$modename: warning: \`-release' is ignored while creating objects" 1>&2
1152 if test -n "$objs"; then
1153 $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2
1157 obj
=`$echo "X$output" | $Xsed -e "$lo2o"`
1165 # Delete the old objects.
1166 $run $rm $obj $libobj
1168 # Create the old-style object.
1169 reload_objs
="$objs"`$echo "X$libobjs " | $Xsed -e 's/[^ ]*\.a //g' -e 's/[^ ]*\.lib //g' -e "$los2o" -e 's/ $//g'`
1172 eval cmds
=\"$reload_cmds\"
1173 IFS
="${IFS= }"; save_ifs
="$IFS"; IFS
=';'
1174 for cmd
in $cmds; do
1177 $run eval "$cmd" ||
exit $?
1181 # Exit if we aren't doing a library object file.
1182 test -z "$libobj" && exit 0
1184 if test "$build_libtool_libs" != yes; then
1185 # Create an invalid libtool object if no PIC, so that we don't
1186 # accidentally link it into a program.
1187 $show "echo timestamp > $libobj"
1188 $run eval "echo timestamp > $libobj" ||
exit $?
1192 if test -n "$pic_flag"; then
1193 # Only do commands if we really have different PIC objects.
1194 reload_objs
="$libobjs"
1196 eval cmds
=\"$reload_cmds\"
1197 IFS
="${IFS= }"; save_ifs
="$IFS"; IFS
=';'
1198 for cmd
in $cmds; do
1201 $run eval "$cmd" ||
exit $?
1205 # Just create a symlink.
1206 $show "$LN_S $obj $libobj"
1207 $run $LN_S $obj $libobj ||
exit 1
1214 if test -n "$vinfo"; then
1215 $echo "$modename: warning: \`-version-info' is ignored while linking programs" 1>&2
1218 if test -n "$release"; then
1219 $echo "$modename: warning: \`-release' is ignored while creating objects" 1>&2
1222 if test -n "$rpath"; then
1223 # If the user specified any rpath flags, then add them.
1224 for libdir
in $rpath; do
1225 if test -n "$hardcode_libdir_flag_spec"; then
1226 if test -n "$hardcode_libdir_separator"; then
1227 if test -z "$hardcode_libdirs"; then
1228 # Put the magic libdir with the hardcode flag.
1229 hardcode_libdirs
="$libdir"
1230 libdir
="@HARDCODE_LIBDIRS@"
1232 # Just accumulate the unique libdirs.
1233 case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in
1234 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
1237 hardcode_libdirs
="$hardcode_libdirs$hardcode_libdir_separator$libdir"
1244 if test -n "$libdir"; then
1245 eval flag
=\"$hardcode_libdir_flag_spec\"
1247 compile_command
="$compile_command $flag"
1248 finalize_command
="$finalize_command $flag"
1250 elif test -n "$runpath_var"; then
1251 case "$perm_rpath " in
1253 *) perm_rpath
="$perm_rpath $libdir" ;;
1259 # Substitute the hardcoded libdirs into the compile commands.
1260 if test -n "$hardcode_libdir_separator"; then
1261 compile_command
=`$echo "X$compile_command" | $Xsed -e "s%@HARDCODE_LIBDIRS@%$hardcode_libdirs%g"`
1262 finalize_command
=`$echo "X$finalize_command" | $Xsed -e "s%@HARDCODE_LIBDIRS@%$hardcode_libdirs%g"`
1265 if test -n "$libobjs" && test "$build_old_libs" = yes; then
1266 # Transform all the library objects into standard objects.
1267 compile_command
=`$echo "X$compile_command " | $Xsed -e "$los2o" -e 's/ $//'`
1268 finalize_command
=`$echo "X$finalize_command " | $Xsed -e "$los2o" -e 's/ $//'`
1271 if test "$export_dynamic" = yes && test -n "$NM" && test -n "$global_symbol_pipe"; then
1272 dlsyms
="${output}S.c"
1277 if test -n "$dlsyms"; then
1278 # Add our own program objects to the preloaded list.
1279 dlprefiles
=`$echo "X$objs$dlprefiles " | $Xsed -e "$los2o" -e 's/ $//'`
1281 # Discover the nlist of each of the dlfiles.
1282 nlist
="$objdir/${output}.nm"
1284 if test -d $objdir; then
1285 $show "$rm $nlist ${nlist}T"
1286 $run $rm "$nlist" "${nlist}T"
1288 $show "$mkdir $objdir"
1291 if test $status -eq 0 ||
test -d $objdir; then :
1297 for arg
in $dlprefiles; do
1298 $show "extracting global C symbols from \`$arg'"
1299 $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
1302 # Parse the name list into a source file.
1303 $show "creating $objdir/$dlsyms"
1304 if test -z "$run"; then
1305 # Make sure we at least have an empty file.
1306 test -f "$nlist" ||
: > "$nlist"
1308 # Try sorting and uniquifying the output.
1309 if sort "$nlist" |
uniq > "$nlist"T
; then
1310 mv -f "$nlist"T
"$nlist"
1311 wcout
=`wc "$nlist" 2>/dev/null`
1312 count
=`echo "X$wcout" | $Xsed -e 's/^[ ]*\([0-9][0-9]*\).*$/\1/'`
1313 (test "$count" -ge 0) 2>/dev
/null || count
=-1
1322 $echo > "$objdir/$dlsyms" "\
1323 /* $dlsyms - symbol resolution table for \`$output' dlsym emulation. */
1324 /* Generated by $PROGRAM - GNU $PACKAGE $VERSION */
1330 /* Prevent the only kind of declaration conflicts we can make. */
1331 #define dld_preloaded_symbol_count some_other_symbol
1332 #define dld_preloaded_symbols some_other_symbol
1334 /* External symbol declarations for the compiler. */\
1337 if test -f "$nlist"; then
1338 sed -e 's/^.* \(.*\)$/extern char \1;/' < "$nlist" >> "$objdir/$dlsyms"
1340 echo '/* NONE */' >> "$objdir/$dlsyms"
1343 $echo >> "$objdir/$dlsyms" "\
1345 #undef dld_preloaded_symbol_count
1346 #undef dld_preloaded_symbols
1348 #if defined (__STDC__) && __STDC__
1349 # define __ptr_t void *
1351 # define __ptr_t char *
1354 /* The number of symbols in dld_preloaded_symbols, -1 if unsorted. */
1355 int dld_preloaded_symbol_count = $count;
1357 /* The mapping between symbol names and symbols. */
1362 dld_preloaded_symbols[] =
1366 if test -f "$nlist"; then
1367 sed 's/^\(.*\) \(.*\)$/ {"\1", (__ptr_t) \&\2},/' < "$nlist" >> "$objdir/$dlsyms"
1370 $echo >> "$objdir/$dlsyms" "\
1381 $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
1387 # Now compile the dynamic symbol file.
1388 $show "(cd $objdir && $CC -c$no_builtin_flag \"$dlsyms\")"
1389 $run eval '(cd $objdir && $CC -c$no_builtin_flag "$dlsyms")' ||
exit $?
1391 # Transform the symbol file into the correct name.
1392 compile_command
=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$objdir/${output}S.${objext}%"`
1393 finalize_command
=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$objdir/${output}S.${objext}%"`
1394 elif test "$export_dynamic" != yes; then
1395 test -n "$dlfiles$dlprefiles" && $echo "$modename: warning: \`-dlopen' and \`-dlpreopen' are ignored without \`-export-dynamic'" 1>&2
1397 # We keep going just in case the user didn't refer to
1398 # dld_preloaded_symbols. The linker will fail if global_symbol_pipe
1399 # really was required.
1400 $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2
1402 # Nullify the symbol file.
1403 compile_command
=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
1404 finalize_command
=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
1407 if test -z "$link_against_libtool_libs" ||
test "$build_libtool_libs" != yes; then
1408 # Replace the output file specification.
1409 compile_command
=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
1410 finalize_command
=`$echo "X$finalize_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
1412 # We have no uninstalled library dependencies, so finalize right now.
1413 $show "$compile_command"
1414 $run eval "$compile_command"
1418 # Replace the output file specification.
1419 compile_command
=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$objdir/$output"'%g'`
1420 finalize_command
=`$echo "X$finalize_command" | $Xsed -e 's%@OUTPUT@%'"$objdir/$output"'T%g'`
1422 # Create the binary in the object directory, then wrap it.
1423 if test -d $objdir; then :
1425 $show "$mkdir $objdir"
1428 if test $status -eq 0 ||
test -d $objdir; then :
1434 if test -n "$shlibpath_var"; then
1435 # We should set the shlibpath_var
1437 for dir
in $temp_rpath; do
1444 # Relative path: add a thisdir entry.
1445 rpath
="$rpath\$thisdir/$dir:"
1452 # Delete the old output file.
1455 if test -n "$compile_shlibpath"; then
1456 compile_command
="$shlibpath_var=\"$compile_shlibpath\$$shlibpath_var\" $compile_command"
1458 if test -n "$finalize_shlibpath"; then
1459 finalize_command
="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
1462 if test -n "$runpath_var" && test -n "$perm_rpath"; then
1463 # We should set the runpath_var.
1465 for dir
in $perm_rpath; do
1468 compile_command
="$runpath_var=\"$rpath\$$runpath_var\" $compile_command"
1469 finalize_command
="$runpath_var=\"$rpath\$$runpath_var\" $finalize_command"
1472 if test "$hardcode_action" = relink
; then
1473 # AGH! Flame the AIX and HP-UX people for me, will ya?
1474 $echo "$modename: warning: using a buggy system linker" 1>&2
1475 $echo "$modename: relinking will be required before \`$output' can be installed" 1>&2
1478 $show "$compile_command"
1479 $run eval "$compile_command" ||
exit $?
1481 # Now create the wrapper script.
1482 $show "creating $output"
1484 # Quote the finalize command for shipping.
1485 finalize_command
=`$echo "X$finalize_command" | $Xsed -e "$sed_quote_subst"`
1487 # Quote $echo for shipping.
1488 qecho
=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"`
1490 # Only actually do things if our run command is non-null.
1491 if test -z "$run"; then
1493 trap "$rm $output; exit 1" 1 2 15
1498 # $output - temporary wrapper script for $objdir/$output
1499 # Generated by $PROGRAM - GNU $PACKAGE $VERSION
1501 # The $output program cannot be directly executed until all the libtool
1502 # libraries that it depends on are installed.
1504 # This wrapper script should never be moved out of \``pwd`'.
1505 # If it is, it will not operate correctly.
1507 # Sed substitution that helps us do robust quoting. It backslashifies
1508 # metacharacters that are still active within double-quoted strings.
1509 Xsed='sed -e s/^X//'
1510 sed_quote_subst='$sed_quote_subst'
1512 # The HP-UX ksh and POSIX shell print the target directory to stdout
1514 if test \"\${CDPATH+set}\" = set; then CDPATH=; export CDPATH; fi
1516 # This environment variable determines our operation mode.
1517 if test \"\$libtool_install_magic\" = \"$magic\"; then
1518 # install mode needs the following variables:
1519 link_against_libtool_libs='$link_against_libtool_libs'
1520 finalize_command=\"$finalize_command\"
1522 # When we are sourced in execute mode, \$file and \$echo are already set.
1523 if test \"\$libtool_execute_magic\" = \"$magic\"; then :
1531 # Find the directory that this script lives in.
1532 thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
1533 test \"x\$thisdir\" = \"x\$file\" && thisdir=.
1535 # Follow symbolic links until we get to the real thisdir.
1536 file=\`ls -ld \"\$file\" | sed -n 's/.*-> //p'\`
1537 while test -n \"\$file\"; do
1538 destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
1540 # If there was a directory component, then change thisdir.
1541 if test \"x\$destdir\" != \"x\$file\"; then
1542 case \"\$destdir\" in
1543 /* | [A-Za-z]:\\*) thisdir=\"\$destdir\" ;;
1544 *) thisdir=\"\$thisdir/\$destdir\" ;;
1548 file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
1549 file=\`ls -ld \"\$thisdir/\$file\" | sed -n 's/.*-> //p'\`
1552 # Try to get the absolute directory name.
1553 absdir=\`cd \"\$thisdir\" && pwd\`
1554 test -n \"\$absdir\" && thisdir=\"\$absdir\"
1556 progdir=\"\$thisdir/$objdir\"
1559 if test -f \"\$progdir/\$program\"; then"
1561 # Export our shlibpath_var if we have one.
1562 if test -n "$shlibpath_var" && test -n "$temp_rpath"; then
1564 # Add our own library path to $shlibpath_var
1565 $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
1567 # Some systems cannot cope with colon-terminated $shlibpath_var
1568 $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/:*\$//'\`
1570 export $shlibpath_var
1575 if test \"\$libtool_execute_magic\" != \"$magic\"; then
1576 # Run the actual program with our arguments.
1578 # Export the path to the program.
1579 PATH=\"\$progdir:\$PATH\"
1582 exec \$program \${1+\"\$@\"}
1584 \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\"
1588 # The program doesn't exist.
1589 \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2
1590 \$echo \"This script is just a wrapper for \$program.\" 1>&2
1591 echo \"See the $PACKAGE documentation for more information.\" 1>&2
1602 # See if we need to build an old-fashioned archive.
1603 if test "$build_old_libs" = "yes"; then
1604 # Transform .lo files to .o files.
1605 oldobjs
="$objs"`$echo "X$libobjs " | $Xsed -e 's/[^ ]*\.a //g' -e 's/[^ ]*\.lib //g' -e "$los2o" -e 's/ $//g'`
1607 # Do each command in the archive commands.
1608 if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
1609 eval cmds
=\"$old_archive_from_new_cmds\"
1611 eval cmds
=\"$old_archive_cmds\"
1613 IFS
="${IFS= }"; save_ifs
="$IFS"; IFS
=';'
1614 for cmd
in $cmds; do
1617 $run eval "$cmd" ||
exit $?
1622 # Now create the libtool archive.
1626 test "$build_old_libs" = yes && old_library
="$libname.$libext"
1628 $show "creating $output"
1630 # Only create the output if not a dry run.
1631 if test -z "$run"; then
1633 # $output - a libtool library file
1634 # Generated by $PROGRAM - GNU $PACKAGE $VERSION
1636 # The name that we can dlopen(3).
1639 # Names of this library.
1640 library_names='$library_names'
1642 # The name of the static archive.
1643 old_library='$old_library'
1645 # Libraries that this one depends upon.
1646 dependency_libs='$dependency_libs'
1648 # Version information for $libname.
1653 # Directory that this library needs to be installed in:
1654 libdir='$install_libdir'\
1658 # Do a symbolic link so that the libtool archive can be found in
1659 # LD_LIBRARY_PATH before the program is installed.
1660 $show "(cd $objdir && $LN_S ../$output $output)"
1661 $run eval "(cd $objdir && $LN_S ../$output $output)" ||
exit 1
1667 # libtool install mode
1669 modename
="$modename: install"
1671 # There may be an optional sh(1) argument at the beginning of
1672 # install_prog (especially on Windows NT).
1673 if test "$nonopt" = "$SHELL"; then
1674 # Aesthetically quote it.
1675 arg
=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
1677 *[\
[\~\
#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
1681 install_prog
="$arg "
1689 # The real first argument should be the name of the installation program.
1690 # Aesthetically quote it.
1691 arg
=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
1693 *[\
[\~\
#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
1697 install_prog
="$install_prog$arg"
1699 # We need to accept at least all the BSD install flags.
1709 if test -n "$dest"; then
1710 files
="$files $dest"
1728 # If the previous option needed an argument, then skip it.
1729 if test -n "$prev"; then
1738 # Aesthetically quote the argument.
1739 arg
=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
1741 *[\
[\~\
#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
1745 install_prog
="$install_prog $arg"
1748 if test -z "$install_prog"; then
1749 $echo "$modename: you must specify an install program" 1>&2
1754 if test -n "$prev"; then
1755 $echo "$modename: the \`$prev' option requires an argument" 1>&2
1760 if test -z "$files"; then
1761 if test -z "$dest"; then
1762 $echo "$modename: no file or destination specified" 1>&2
1764 $echo "$modename: you must specify a destination" 1>&2
1770 # Strip any trailing slash from the destination.
1771 dest
=`$echo "X$dest" | $Xsed -e 's%/$%%'`
1773 # Check to see that the destination is a directory.
1774 test -d "$dest" && isdir
=yes
1775 if test "$isdir" = yes; then
1779 destdir
=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'`
1780 test "X$destdir" = "X$dest" && destdir
=.
1781 destname
=`$echo "X$dest" | $Xsed -e 's%^.*/%%'`
1783 # Not a directory, so check to see that there is only one file specified.
1785 if test $# -gt 2; then
1786 $echo "$modename: \`$dest' is not a directory" 1>&2
1792 /* |
[A-Za-z
]:\\*) ;;
1794 for file in $files; do
1798 $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2
1807 # This variable tells wrapper scripts just to set variables rather
1808 # than running their programs.
1809 libtool_install_magic
="$magic"
1814 for file in $files; do
1816 # Do each installation.
1819 # Do the static libraries later.
1820 staticlibs
="$staticlibs $file"
1824 # Check to see that this really is a libtool archive.
1825 if (sed -e '2q' $file |
egrep "^# Generated by .*$PACKAGE") >/dev
/null
2>&1; then :
1827 $echo "$modename: \`$file' is not a valid libtool archive" 1>&2
1834 # If there is no directory component, then add one.
1836 */* |
*\\*) .
$file ;;
1840 # Add the libdir to current_libdirs if it is the destination.
1841 if test "X$destdir" = "X$libdir"; then
1842 case "$current_libdirs " in
1844 *) current_libdirs
="$current_libdirs $libdir" ;;
1847 # Note the libdir as a future libdir.
1848 case "$future_libdirs " in
1850 *) future_libdirs
="$future_libdirs $libdir" ;;
1854 dir
="`$echo "X
$file" | $Xsed -e 's%/[^/]*$%%'`/"
1855 test "X$dir" = "X$file/" && dir
=
1858 # See the names of the shared library.
1859 set dummy
$library_names
1860 if test -n "$2"; then
1865 # Install the shared library and build the symlinks.
1866 $show "$install_prog $dir/$realname $destdir/$realname"
1867 $run eval "$install_prog $dir/$realname $destdir/$realname" ||
exit $?
1868 test "X$dlname" = "X$realname" && dlname
=
1870 if test $# -gt 0; then
1871 # Delete the old symlinks.
1875 rmcmd
="$rmcmd $destdir/$linkname"
1880 # ... and create new ones.
1883 test "X$dlname" = "X$linkname" && dlname
=
1884 $show "(cd $destdir && $LN_S $realname $linkname)"
1885 $run eval "(cd $destdir && $LN_S $realname $linkname)"
1889 if test -n "$dlname"; then
1890 # Install the dynamically-loadable library.
1891 $show "$install_prog $dir/$dlname $destdir/$dlname"
1892 $run eval "$install_prog $dir/$dlname $destdir/$dlname" ||
exit $?
1895 # Do each command in the postinstall commands.
1896 lib
="$destdir/$realname"
1897 eval cmds
=\"$postinstall_cmds\"
1898 IFS
="${IFS= }"; save_ifs
="$IFS"; IFS
=';'
1899 for cmd
in $cmds; do
1902 $run eval "$cmd" ||
exit $?
1907 # Install the pseudo-library for information purposes.
1908 name
=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
1909 $show "$install_prog $file $destdir/$name"
1910 $run eval "$install_prog $file $destdir/$name" ||
exit $?
1912 # Maybe install the static library, too.
1913 test -n "$old_library" && staticlibs
="$staticlibs $dir/$old_library"
1917 # Install (i.e. copy) a libtool object.
1919 # Figure out destination file name, if it wasn't already specified.
1920 if test -n "$destname"; then
1921 destfile
="$destdir/$destname"
1923 destfile
=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
1924 destfile
="$destdir/$destfile"
1927 # Deduce the name of the destination old-style object file.
1930 staticdest
=`$echo "X$destfile" | $Xsed -e "$lo2o"`
1933 staticdest
="$destfile"
1937 $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2
1943 # Install the libtool object if requested.
1944 if test -n "$destfile"; then
1945 $show "$install_prog $file $destfile"
1946 $run eval "$install_prog $file $destfile" ||
exit $?
1949 # Install the old object if enabled.
1950 if test "$build_old_libs" = yes; then
1951 # Deduce the name of the old-style object file.
1952 staticobj
=`$echo "X$file" | $Xsed -e "$lo2o"`
1954 $show "$install_prog $staticobj $staticdest"
1955 $run eval "$install_prog \$staticobj \$staticdest" ||
exit $?
1961 # Figure out destination file name, if it wasn't already specified.
1962 if test -n "$destname"; then
1963 destfile
="$destdir/$destname"
1965 destfile
=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
1966 destfile
="$destdir/$destfile"
1969 # Do a test to see if this is really a libtool program.
1970 if (sed -e '4q' $file |
egrep "^# Generated by .*$PACKAGE") >/dev
/null
2>&1; then
1971 link_against_libtool_libs
=
1974 # If there is no directory component, then add one.
1976 */* |
*\\*) .
$file ;;
1980 # Check the variables that should have been set.
1981 if test -z "$link_against_libtool_libs" ||
test -z "$finalize_command"; then
1982 $echo "$modename: invalid libtool wrapper script \`$file'" 1>&2
1987 for lib
in $link_against_libtool_libs; do
1988 # Check to see that each library is installed.
1990 if test -f "$lib"; then
1991 # If there is no directory component, then add one.
1993 */* |
*\\*) .
$lib ;;
1997 libfile
="$libdir/`$echo "X
$lib" | $Xsed -e 's%^.*/%%g'`"
1998 if test -z "$libdir"; then
1999 $echo "$modename: warning: \`$lib' contains no -rpath information" 1>&2
2000 elif test -f "$libfile"; then :
2002 $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2
2007 if test "$hardcode_action" = relink
; then
2008 if test "$finalize" = yes; then
2009 $echo "$modename: warning: relinking \`$file' on behalf of your buggy system linker" 1>&2
2010 $show "$finalize_command"
2011 if $run eval "$finalize_command"; then :
2013 $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
2016 file="$objdir/$file"T
2018 $echo "$modename: warning: cannot relink \`$file' on behalf of your buggy system linker" 1>&2
2021 # Install the binary that we compiled earlier.
2022 file=`$echo "X$file" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
2026 $show "$install_prog$stripme $file $destfile"
2027 $run eval "$install_prog\$stripme \$file \$destfile" ||
exit $?
2032 for file in $staticlibs; do
2033 name
=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
2035 # Set up the ranlib parameters.
2036 oldlib
="$destdir/$name"
2038 $show "$install_prog $file $oldlib"
2039 $run eval "$install_prog \$file \$oldlib" ||
exit $?
2041 # Do each command in the postinstall commands.
2042 eval cmds
=\"$old_postinstall_cmds\"
2043 IFS
="${IFS= }"; save_ifs
="$IFS"; IFS
=';'
2044 for cmd
in $cmds; do
2047 $run eval "$cmd" ||
exit $?
2052 if test -n "$future_libdirs"; then
2053 $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2
2056 if test -n "$current_libdirs"; then
2057 # Maybe just do a dry run.
2058 test -n "$run" && current_libdirs
=" -n$current_libdirs"
2059 exec $SHELL $0 --finish$current_libdirs
2066 # libtool finish mode
2068 modename
="$modename: finish"
2072 if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
2075 libdirs
="$libdirs $dir"
2078 for libdir
in $libdirs; do
2079 if test -n "$finish_cmds"; then
2080 # Do each command in the finish commands.
2081 eval cmds
=\"$finish_cmds\"
2082 IFS
="${IFS= }"; save_ifs
="$IFS"; IFS
=';'
2083 for cmd
in $cmds; do
2086 $run eval "$cmd" || admincmds
="$admincmds
2091 if test -n "$finish_eval"; then
2092 # Do the single finish_eval.
2093 eval cmds
=\"$finish_eval\"
2094 $run eval "$cmds" || admincmds
="$admincmds
2100 echo "----------------------------------------------------------------------"
2101 echo "Libraries have been installed in:"
2102 for libdir
in $libdirs; do
2106 echo "To link against installed libraries in a given directory, LIBDIR,"
2107 echo "you must use the \`-LLIBDIR' flag during linking."
2109 echo " You will also need to do at least one of the following:"
2110 if test -n "$shlibpath_var"; then
2111 echo " - add LIBDIR to the \`$shlibpath_var' environment variable"
2112 echo " during execution"
2114 if test -n "$runpath_var"; then
2115 echo " - add LIBDIR to the \`$runpath_var' environment variable"
2116 echo " during linking"
2118 if test -n "$hardcode_libdir_flag_spec"; then
2120 eval flag
=\"$hardcode_libdir_flag_spec\"
2122 echo " - use the \`$flag' linker flag"
2124 if test -n "$admincmds"; then
2125 echo " - have your system administrator run these commands:$admincmds"
2127 if test -f /etc
/ld.so.conf
; then
2128 echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
2131 echo "See any operating system documentation about shared libraries for"
2132 echo "more information, such as the ld(1) and ld.so(8) manual pages."
2133 echo "----------------------------------------------------------------------"
2137 # libtool execute mode
2139 modename
="$modename: execute"
2141 # The first argument is the command name.
2143 if test -z "$cmd"; then
2144 $echo "$modename: you must specify a COMMAND" 1>&2
2149 # Handle -dlopen flags immediately.
2150 for file in $execute_dlfiles; do
2151 if test -f "$file"; then :
2153 $echo "$modename: \`$file' is not a file" 1>&2
2161 # Check to see that this really is a libtool archive.
2162 if (sed -e '2q' $file |
egrep "^# Generated by .*$PACKAGE") >/dev
/null
2>&1; then :
2164 $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
2169 # Read the libtool library.
2173 # If there is no directory component, then add one.
2175 */* |
*\\*) .
$file ;;
2179 # Skip this library if it cannot be dlopened.
2180 if test -z "$dlname"; then
2181 # Warn if it was a shared library.
2182 test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'"
2186 dir
=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
2187 test "X$dir" = "X$file" && dir
=.
2189 if test -f "$dir/$objdir/$dlname"; then
2192 $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
2198 # Just add the directory containing the .lo file.
2199 dir
=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
2200 test "X$dir" = "X$file" && dir
=.
2204 $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2
2209 # Get the absolute pathname.
2210 absdir
=`cd "$dir" && pwd`
2211 test -n "$absdir" && dir
="$absdir"
2213 # Now add the directory to shlibpath_var.
2214 if eval "test -z \"\$$shlibpath_var\""; then
2215 eval "$shlibpath_var=\"\$dir\""
2217 eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
2221 # This variable tells wrapper scripts just to set shlibpath_var
2222 # rather than running their programs.
2223 libtool_execute_magic
="$magic"
2225 # Check if any of the arguments is a wrapper script.
2232 # Do a test to see if this is really a libtool program.
2233 if (sed -e '4q' $file |
egrep "^# Generated by .*$PACKAGE") >/dev
/null
2>&1; then
2234 # If there is no directory component, then add one.
2236 */* |
*\\*) .
$file ;;
2240 # Transform arg to wrapped name.
2241 file="$progdir/$program"
2245 # Quote arguments (to preserve shell metacharacters).
2246 file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"`
2247 args
="$args \"$file\""
2250 if test -z "$run"; then
2251 # Export the shlibpath_var.
2252 eval "export $shlibpath_var"
2254 # Now actually exec the command.
2255 eval "exec \$cmd$args"
2257 $echo "$modename: cannot exec \$cmd$args"
2260 # Display what would be done.
2261 eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\""
2262 $echo "export $shlibpath_var"
2268 # libtool uninstall mode
2270 modename
="$modename: uninstall"
2277 -*) rm="$rm $arg" ;;
2278 *) files
="$files $arg" ;;
2282 if test -z "$rm"; then
2283 $echo "$modename: you must specify an RM program" 1>&2
2288 for file in $files; do
2289 dir
=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
2290 test "X$dir" = "X$file" && dir
=.
2291 name
=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
2297 # Possibly a libtool archive, so verify it.
2298 if (sed -e '2q' $file |
egrep "^# Generated by .*$PACKAGE") >/dev
/null
2>&1; then
2301 # Delete the libtool libraries and symlinks.
2302 for n
in $library_names; do
2303 rmfiles
="$rmfiles $dir/$n"
2304 test "X$n" = "X$dlname" && dlname
=
2306 test -n "$dlname" && rmfiles
="$rmfiles $dir/$dlname"
2307 test -n "$old_library" && rmfiles
="$rmfiles $dir/$old_library"
2309 $show "$rm $rmfiles"
2312 if test -n "$library_names"; then
2313 # Do each command in the postuninstall commands.
2314 eval cmds
=\"$postuninstall_cmds\"
2315 IFS
="${IFS= }"; save_ifs
="$IFS"; IFS
=';'
2316 for cmd
in $cmds; do
2324 if test -n "$old_library"; then
2325 # Do each command in the old_postuninstall commands.
2326 eval cmds
=\"$old_postuninstall_cmds\"
2327 IFS
="${IFS= }"; save_ifs
="$IFS"; IFS
=';'
2328 for cmd
in $cmds; do
2336 # FIXME: should reinstall the best remaining shared library.
2341 if test "$build_old_libs" = yes; then
2342 oldobj
=`$echo "X$name" | $Xsed -e "$lo2o"`
2343 rmfiles
="$rmfiles $dir/$oldobj"
2345 $show "$rm $rmfiles"
2350 $show "$rm $rmfiles"
2359 $echo "$modename: you must specify a MODE" 1>&2
2360 $echo "$generic_help" 1>&2
2365 $echo "$modename: invalid operation mode \`$mode'" 1>&2
2366 $echo "$generic_help" 1>&2
2368 fi # test -z "$show_help"
2370 # We need to display help for each of the modes.
2373 "Usage: $modename [OPTION]... [MODE-ARG]...
2375 Provide generalized library-building support services.
2377 --config show all configuration variables
2378 --debug enable verbose shell tracing
2379 -n, --dry-run display commands without modifying any files
2380 --features display basic configuration information and exit
2381 --finish same as \`--mode=finish'
2382 --help display this help message and exit
2383 --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS]
2384 --quiet same as \`--silent'
2385 --silent don't print informational messages
2386 --version print version information
2388 MODE must be one of the following:
2390 compile compile a source file into a libtool object
2391 execute automatically set library path, then run a program
2392 finish complete the installation of libtool libraries
2393 install install libraries or executables
2394 link create a library or an executable
2395 uninstall remove libraries from an installed directory
2397 MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for
2398 a more detailed description of MODE."
2404 "Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
2406 Compile a source file into a libtool library object.
2408 COMPILE-COMMAND is a command to be used in creating a \`standard' object file
2409 from the given SOURCEFILE.
2411 The output file name is determined by removing the directory component from
2412 SOURCEFILE, then substituting the C source code suffix \`.c' with the
2413 library object suffix, \`.lo'."
2418 "Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]...
2420 Automatically set library path, then run a program.
2422 This mode accepts the following additional options:
2424 -dlopen FILE add the directory containing FILE to the library path
2426 This mode sets the library path environment variable according to \`-dlopen'
2429 If any of the ARGS are libtool executable wrappers, then they are translated
2430 into their corresponding uninstalled binary, and any of their required library
2431 directories are added to the library path.
2433 Then, COMMAND is executed, with ARGS as arguments."
2438 "Usage: $modename [OPTION]... --mode=finish [LIBDIR]...
2440 Complete the installation of libtool libraries.
2442 Each LIBDIR is a directory that contains libtool libraries.
2444 The commands that this mode executes may require superuser privileges. Use
2445 the \`--dry-run' option if you just want to see what would be executed."
2450 "Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND...
2452 Install executables or libraries.
2454 INSTALL-COMMAND is the installation command. The first component should be
2455 either the \`install' or \`cp' program.
2457 The rest of the components are interpreted as arguments to that command (only
2458 BSD-compatible install options are recognized)."
2463 "Usage: $modename [OPTION]... --mode=link LINK-COMMAND...
2465 Link object files or libraries together to form another library, or to
2466 create an executable program.
2468 LINK-COMMAND is a command using the C compiler that you would use to create
2469 a program from several object files.
2471 The following components of LINK-COMMAND are treated specially:
2473 -all-static do not do any dynamic linking at all
2474 -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime
2475 -dlpreopen FILE link in FILE and add its symbols to dld_preloaded_symbols
2476 -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
2477 -LLIBDIR search LIBDIR for required installed libraries
2478 -lNAME OUTPUT-FILE requires the installed library libNAME
2479 -no-undefined declare that a library does not refer to external symbols
2480 -o OUTPUT-FILE create OUTPUT-FILE from the specified objects
2481 -release RELEASE specify package release information
2482 -rpath LIBDIR the created library will eventually be installed in LIBDIR
2483 -static do not do any dynamic linking of libtool libraries
2484 -version-info CURRENT[:REVISION[:AGE]]
2485 specify library version info [each variable defaults to 0]
2487 All other options (arguments beginning with \`-') are ignored.
2489 Every other argument is treated as a filename. Files ending in \`.la' are
2490 treated as uninstalled libtool libraries, other files are standard or library
2493 If the OUTPUT-FILE ends in \`.la', then a libtool library is created, only
2494 library objects (\`.lo' files) may be specified, and \`-rpath' is required.
2496 If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
2497 using \`ar' and \`ranlib', or on WIndows using \`lib'.
2499 If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
2500 is created, otherwise an executable program is created."
2505 "Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
2507 Remove libraries from an installation directory.
2509 RM is the name of the program to use to delete files associated with each FILE
2510 (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
2513 If FILE is a libtool library, all the files associated with it are deleted.
2514 Otherwise, only FILE itself is deleted using RM."
2518 $echo "$modename: invalid operation mode \`$mode'" 1>&2
2525 $echo "Try \`$modename --help' for more information about other modes."