diff options
author | Ian Lance Taylor <ian@cygnus.com> | 1998-10-08 23:32:31 +0000 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 1998-10-08 17:32:31 -0600 |
commit | fbd836fca07f327a8a9a96d6a07fce77a1266d9f (patch) | |
tree | f0003a1d26ef1ee9ee657a00c8394b216eb56a7e /ltmain.sh | |
parent | 8af142753690529708d7da54d2a5a371ecd6d406 (diff) | |
download | gcc-fbd836fca07f327a8a9a96d6a07fce77a1266d9f.tar.gz |
Various libtool updates from devo, including update to libtool 1.2b
From-SVN: r22947
Diffstat (limited to 'ltmain.sh')
-rw-r--r-- | ltmain.sh | 540 |
1 files changed, 325 insertions, 215 deletions
diff --git a/ltmain.sh b/ltmain.sh index 1893b011a6d..eee5763387b 100644 --- a/ltmain.sh +++ b/ltmain.sh @@ -23,6 +23,18 @@ # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. +# Check that we have a working $echo. +if test "X$1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then + # Yippee, $echo works! + : +else + # Restart under the correct shell, and then maybe $echo will work. + exec $SHELL "$0" --no-reexec ${1+"$@"} +fi + # The name of this program. progname=`$echo "$0" | sed 's%^.*/%%'` modename="$progname" @@ -30,7 +42,7 @@ modename="$progname" # Constants. PROGRAM=ltmain.sh PACKAGE=libtool -VERSION=1.2a +VERSION=1.2b default_mode= help="Try \`$progname --help' for more information." @@ -48,8 +60,13 @@ sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g' # Only set LANG and LC_ALL to C if already set. # These must not be set unconditionally because not all systems understand # e.g. LANG=C (notably SCO). -if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi -if test "${LANG+set}" = set; then LANG=C; export LANG; fi +# We save the old values to restore during execute mode. +if test "${LC_ALL+set}" = set; then + save_LC_ALL="$LC_ALL"; LC_ALL=C; export LC_ALL +fi +if test "${LANG+set}" = set; then + save_LANG="$LANG"; LANG=C; export LANG +fi if test "$LTCONFIG_VERSION" != "$VERSION"; then echo "$modename: ltconfig version \`$LTCONFIG_VERSION' does not match $PROGRAM version \`$VERSION'" 1>&2 @@ -72,6 +89,8 @@ run= show="$echo" show_help= execute_dlfiles= +lo2o="s/\\.lo\$/.${objext}/" +los2o="s/\\.lo /.${objext} /g" # Parse our command line options once, thoroughly. while test $# -gt 0 @@ -190,7 +209,7 @@ if test -z "$show_help"; then esac done ;; - *db | *dbx) + *db | *dbx | *strace | *truss) mode=execute ;; *install*|cp|mv) @@ -248,7 +267,6 @@ if test -z "$show_help"; then ;; -static) - build_libtool_libs=no build_old_libs=yes continue ;; @@ -303,7 +321,7 @@ if test -z "$show_help"; then libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` case "$libobj" in - *.lo) obj=`$echo "X$libobj" | $Xsed -e 's/\.lo$/.o/'` ;; + *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; *) $echo "$modename: cannot determine name of library object from \`$srcfile'" 1>&2 exit 1 @@ -325,6 +343,10 @@ if test -z "$show_help"; then trap "$run $rm $libobj; exit 1" 1 2 15 fi + if test -n "$fix_srcfile_path"; then + eval srcfile=\"$fix_srcfile_path\" + fi + # Only build a PIC object if we are building libtool libraries. if test "$build_libtool_libs" = yes; then # Without this assignment, base_compile gets emptied. @@ -347,7 +369,7 @@ if test -z "$show_help"; then # Just move the object, then go on to compile the next one $show "$mv $obj $libobj" - $run $mv $obj $libobj || exit 1 + $run $mv $obj $libobj || exit $? # Allow error messages only from the first compilation. suppress_output=' >/dev/null 2>&1' @@ -384,10 +406,13 @@ if test -z "$show_help"; then compile_shlibpath= finalize_shlibpath= + convenience= + old_convenience= deplibs= dlfiles= dlprefiles= export_dynamic=no + generated= hardcode_libdirs= libobjs= link_against_libtool_libs= @@ -420,8 +445,10 @@ if test -z "$show_help"; then test -n "$old_archive_from_new_cmds" && build_old_libs=yes # Go through the arguments, transforming them on the way. - for arg - do + while test $# -gt 0; do + arg="$1" + shift + # If the previous option needs an argument, assign it. if test -n "$prev"; then case "$prev" in @@ -505,7 +532,7 @@ if test -z "$show_help"; then -L*) dir=`$echo "X$arg" | $Xsed -e 's%^-L\(.*\)$%\1%'` case "$dir" in - /* | [A-Za-z]:\\*) + /* | [A-Za-z]:[/\\]*) # Add the corresponding hardcode_libdir_flag, if it is not identical. ;; *) @@ -561,7 +588,7 @@ if test -z "$show_help"; then esac ;; - *.o | *.a) + *.o | *.obj | *.a | *.lib) # A standard object. objs="$objs $arg" ;; @@ -581,7 +608,7 @@ if test -z "$show_help"; then if test "$prev" = dlprefiles; then # Preload the old-style object. - dlprefiles="$dlprefiles "`$echo "X$arg" | $Xsed -e 's/\.lo$/.o/'` + dlprefiles="$dlprefiles "`$echo "X$arg" | $Xsed -e "$lo2o"` prev= fi libobjs="$libobjs $arg" @@ -608,11 +635,6 @@ if test -z "$show_help"; then *) . ./$arg ;; esac - if test -z "$libdir"; then - $echo "$modename: \`$arg' contains no -rpath information" 1>&2 - exit 1 - fi - # Get the name of the library we link against. linklib= for l in $old_library $library_names; do @@ -633,6 +655,15 @@ if test -z "$show_help"; then dir="$dir/$objdir" fi + if test -z "$libdir"; then + # It is a libtool convenience library, so add in its objects. + convenience="$convenience $dir/$old_library"l + old_convenience="$old_convenience $dir/$old_library" + compile_command="$compile_command $dir/$old_library" + finalize_command="$finalize_command $dir/$old_library" + continue + fi + # This library was specified with -dlopen. if test "$prev" = dlfiles; then dlfiles="$dlfiles $arg" @@ -706,22 +737,30 @@ if test -z "$show_help"; then fi + lib_linked=yes case "$hardcode_action" in - immediate) + immediate | unsupported) if test "$hardcode_direct" = no; then compile_command="$compile_command $dir/$linklib" elif test "$hardcode_minus_L" = no; then + case "$host" in + *-*-sunos*) + compile_shlibpath="$compile_shlibpath$dir:" + ;; + esac compile_command="$compile_command -L$dir -l$name" elif test "$hardcode_shlibpath_var" = no; then compile_shlibpath="$compile_shlibpath$dir:" compile_command="$compile_command -l$name" + else + lib_linked=no fi ;; relink) # We need an absolute path. case "$dir" in - /* | [A-Za-z]:\\*) ;; + /* | [A-Za-z]:[/\\]*) ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then @@ -739,10 +778,21 @@ if test -z "$show_help"; then elif test "$hardcode_shlibpath_var" = yes; then compile_shlibpath="$compile_shlibpath$dir:" compile_command="$compile_command -l$name" + else + lib_linked=no fi ;; + + *) + lib_linked=no + ;; esac + if test "$lib_linked" != yes; then + $echo "$modename: configuration error: unsupported hardcode properties" + exit 1 + fi + # Finalize command for both is simple: just hardcode it. if test "$hardcode_direct" = yes; then finalize_command="$finalize_command $libdir/$linklib" @@ -807,14 +857,7 @@ if test -z "$show_help"; then exit 1 fi - if test -n "$vinfo" && test -n "$release"; then - $echo "$modename: you cannot specify both \`-version-info' and \`-release'" 1>&2 - $echo "$help" 1>&2 - exit 1 - fi - - oldlib= - oldobjs= + oldlibs= case "$output" in "") $echo "$modename: you must specify an output file" 1>&2 @@ -824,16 +867,39 @@ if test -z "$show_help"; then */* | *\\*) $echo "$modename: output file \`$output' must have no directory components" 1>&2 + $echo "$help" 1>&2 exit 1 ;; - *.a) + *.a | *.lib) + if test -n "$link_against_libtool_libs"; then + $echo "$modename: error: cannot link libtool libraries into archives" 1>&2 + exit 1 + fi + + if test -n "$deplibs"; then + $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 + fi + + if test -n "$dlfiles$dlprefiles"; then + $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 + fi + + if test -n "$rpath"; then + $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 + fi + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info' is ignored for archives" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 + fi + # Now set the variables for building old libraries. build_libtool_libs=no - build_old_libs=yes - oldlib="$output" - $show "$rm $oldlib" - $run $rm $oldlib + oldlibs="$output" ;; *.la) @@ -841,7 +907,7 @@ if test -z "$show_help"; then case "$output" in lib*) ;; *) - $echo "$modename: libtool library \`$arg' must begin with \`lib'" 1>&2 + $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 $echo "$help" 1>&2 exit 1 ;; @@ -854,9 +920,6 @@ if test -z "$show_help"; then library_names= old_library= dlname= - current=0 - revision=0 - age=0 if test -n "$objs"; then $echo "$modename: cannot build libtool library \`$output' from non-libtool objects:$objs" 2>&1 @@ -865,21 +928,12 @@ if test -z "$show_help"; then # How the heck are we supposed to write a wrapper for a shared library? if test -n "$link_against_libtool_libs"; then - $echo "$modename: libtool library \`$output' may not depend on uninstalled libraries:$link_against_libtool_libs" 1>&2 + $echo "$modename: error: cannot link shared libraries into libtool libraries" 1>&2 exit 1 fi if test -n "$dlfiles$dlprefiles"; then - $echo "$modename: warning: \`-dlopen' is ignored while creating libtool libraries" 1>&2 - # Nullify the symbol file. - compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` - finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` - fi - - if test -z "$rpath"; then - $echo "$modename: you must specify an installation directory with \`-rpath'" 1>&2 - $echo "$help" 1>&2 - exit 1 + $echo "$modename: warning: \`-dlopen' is ignored for libtool libraries" 1>&2 fi set dummy $rpath @@ -888,22 +942,36 @@ if test -z "$show_help"; then fi install_libdir="$2" - if test -n "$vinfo"; then + # Now set the variables for building old libraries. + oldlibs="$objdir/$libname.$libext" + if test -z "$rpath"; then + # Building a libtool convenience library. + oldlibs="$objdir/$libname.al $oldlibs" + build_libtool_libs=convenience + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info' is ignored for convenience libraries" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2 + fi + else # Parse the version information argument. IFS="${IFS= }"; save_ifs="$IFS"; IFS=':' - set dummy $vinfo + set dummy $vinfo 0 0 0 IFS="$save_ifs" - if test -n "$5"; then + if test -n "$8"; then $echo "$modename: too many parameters to \`-version-info'" 1>&2 $echo "$help" 1>&2 exit 1 fi - test -n "$2" && current="$2" - test -n "$3" && revision="$3" - test -n "$4" && age="$4" + current="$2" + revision="$3" + age="$4" # Check that each of the things are valid numbers. case "$current" in @@ -940,20 +1008,20 @@ if test -z "$show_help"; then fi # Calculate the version variables. - version_vars="version_type current age revision" + major= + versuffix= + verstring= case "$version_type" in none) ;; linux) - version_vars="$version_vars major versuffix" major=.`expr $current - $age` - versuffix=".$major.$age.$revision" + versuffix="$major.$age.$revision" ;; osf) - version_vars="$version_vars versuffix verstring" - major=.`expr $current - $age` - versuffix=."$current.$age.$revision" + major=`expr $current - $age` + versuffix=".$current.$age.$revision" verstring="$current.$age.$revision" # Add in all the interfaces that we are compatible with. @@ -969,15 +1037,13 @@ if test -z "$show_help"; then ;; sunos) - version_vars="$version_vars major versuffix" - major=."$current" - versuffix=."$current.$revision" + major=".$current" + versuffix=".$current.$revision" ;; windows) # Like Linux, but with '-' rather than '.', since we only # want one extension on Windows 95. - version_vars="$version_vars major versuffix" major=`expr $current - $age` versuffix="-$major-$age-$revision" ;; @@ -988,157 +1054,150 @@ if test -z "$show_help"; then exit 1 ;; esac - else - - # No version information. - version_vars= - - case "$version_type" in - none) ;; - linux) - version_vars="$version_vars versuffix major" - major= - versuffix= - ;; - - osf) - version_vars="$version_vars versuffix verstring" - major= - versuffix= - verstring=":0.0" - ;; - - sunos) - version_vars="$version_vars major versuffix" + # Clear the version info if we defaulted, and they specified a release. + if test -z "$vinfo" && test -n "$release"; then major= versuffix= - ;; + verstring="0.0" + case "$host" in + *-*-sunos*) + versuffix=".0.0" + ;; + esac + fi - windows) - # Like Linux, but with '-' rather than '.', and with a leading - # '-', since we only want one extension on Windows 95. - version_vars="$version_vars major versuffix" - major= - versuffix= - ;; + # Check to see if the archive will have undefined symbols. + if test "$allow_undefined" = yes; then + if test "$allow_undefined_flag" = unsupported; then + $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 + build_libtool_libs=no + build_old_libs=yes + fi + else + # Don't allow undefined symbols. + allow_undefined_flag="$no_undefined_flag" + fi - *) - $echo "$modename: unknown library version type \`$version_type'" 1>&2 - echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 - exit 1 - ;; - esac + # Add libc to deplibs on all systems. + dependency_libs="$deplibs" + deplibs="$deplibs -lc" fi # Create the output directory, or remove our outputs if we need to. if test -d $objdir; then - $show "$rm $objdir/$output $objdir/$libname.* $objdir/${libname}${release}.*" - $run $rm $objdir/$output $objdir/$libname.* $objdir/${libname}${release}.* + $show "${rm}r $objdir/$output $objdir/$libname.* $objdir/${libname}${release}.*" + $run ${rm}r $objdir/$output $objdir/$libname.* $objdir/${libname}${release}.* else $show "$mkdir $objdir" $run $mkdir $objdir - status=$? - if test $status -eq 0 || test -d $objdir; then : - else - exit $status - fi - fi - - # Check to see if the archive will have undefined symbols. - if test "$allow_undefined" = yes; then - if test "$allow_undefined_flag" = unsupported; then - $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 - build_libtool_libs=no - build_old_libs=yes + status=$? + if test $status -ne 0 && test ! -d $objdir; then + exit $status fi - else - # Don't allow undefined symbols. - allow_undefined_flag="$no_undefined_flag" fi - # Add libc to deplibs on all systems. - dependency_libs="$deplibs" - deplibs="$deplibs -lc" - if test "$build_libtool_libs" = yes; then - # Get the real and link names of the library. - eval library_names=\"$library_names_spec\" - set dummy $library_names - realname="$2" - shift; shift - - if test -n "$soname_spec"; then - eval soname=\"$soname_spec\" - else - soname="$realname" - fi + # Get the real and link names of the library. + eval library_names=\"$library_names_spec\" + set dummy $library_names + realname="$2" + shift; shift + + if test -n "$soname_spec"; then + eval soname=\"$soname_spec\" + else + soname="$realname" + fi - lib="$objdir/$realname" + lib="$objdir/$realname" for link do linknames="$linknames $link" done - # Use standard objects if they are PIC. - test -z "$pic_flag" && libobjs=`$echo "X$libobjs " | $Xsed -e 's/\.lo /.o /g' -e 's/ $//g'` + # Use standard objects if they are PIC. + test -z "$pic_flag" && libobjs=`$echo "X$libobjs " | $Xsed -e "$los2o" -e 's/ $//g'` - # Do each of the archive commands. - eval cmds=\"$archive_cmds\" - IFS="${IFS= }"; save_ifs="$IFS"; IFS=';' - for cmd in $cmds; do - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" + # Transform .lo files to .o files. + test "$build_old_libs" = yes && oldobjs="$objs"`$echo "X$libobjs " | $Xsed -e 's/[^ ]*\.a //g' -e 's/[^ ]*\.lib //g' -e "$los2o" -e 's/ $//g'` - # Create links to the real library. - for linkname in $linknames; do + if test -n "$whole_archive_flag_spec"; then + if test -n "$convenience"; then + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + fi + else + for xlib in $convenience; do + # Extract the objects. + xdir="$xlib"x + generated="$generated $xdir" + xlib=`echo "$xlib" | $Xsed -e 's%^.*/%%'` + + $show "${rm}r $xdir" + $run ${rm}r "$xdir" + $show "mkdir $xdir" + $run mkdir "$xdir" + status=$? + if test $status -ne 0 && test ! -d "$xdir"; then + exit $status + fi + $show "(cd $xdir && $AR x ../$xlib)" + $run eval "(cd \$xdir && $AR x ../\$xlib)" || exit $? + + libobjs="$libobjs `echo $xdir/*`" + done + fi + + # Do each of the archive commands. + eval cmds=\"$archive_cmds\" + IFS="${IFS= }"; save_ifs="$IFS"; IFS=';' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + + # Create links to the real library. + for linkname in $linknames; do if test "$realname" != "$linkname"; then - $show "(cd $objdir && $LN_S $realname $linkname)" - $run eval '(cd $objdir && $LN_S $realname $linkname)' || exit $? - fi - done + $show "(cd $objdir && $LN_S $realname $linkname)" + $run eval '(cd $objdir && $LN_S $realname $linkname)' || exit $? + fi + done - # If -export-dynamic was specified, set the dlname. - if test "$export_dynamic" = yes; then - # On all known operating systems, these are identical. - dlname="$soname" - fi + # If -export-dynamic was specified, set the dlname. + if test "$export_dynamic" = yes; then + # On all known operating systems, these are identical. + dlname="$soname" + fi fi - - # Now set the variables for building old libraries. - oldlib="$objdir/$libname.a" ;; - *.lo | *.o) + *.lo | *.o | *.obj) if test -n "$link_against_libtool_libs"; then - $echo "$modename: error: cannot link libtool libraries into reloadable objects" 1>&2 + $echo "$modename: error: cannot link libtool libraries into objects" 1>&2 exit 1 fi if test -n "$deplibs"; then - $echo "$modename: warning: \`-l' and \`-L' are ignored while creating objects" 1>&2 + $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 fi if test -n "$dlfiles$dlprefiles"; then - $echo "$modename: warning: \`-dlopen' is ignored while creating objects" 1>&2 - # Nullify the symbol file. - compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` - finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` + $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 fi if test -n "$rpath"; then - $echo "$modename: warning: \`-rpath' is ignored while creating objects" 1>&2 + $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 fi if test -n "$vinfo"; then - $echo "$modename: warning: \`-version-info' is ignored while creating objects" 1>&2 + $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 fi if test -n "$release"; then - $echo "$modename: warning: \`-release' is ignored while creating objects" 1>&2 + $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 fi case "$output" in @@ -1148,7 +1207,7 @@ if test -z "$show_help"; then exit 1 fi libobj="$output" - obj=`$echo "X$output" | $Xsed -e 's/\.lo$/.o/'` + obj=`$echo "X$output" | $Xsed -e "$lo2o"` ;; *) libobj= @@ -1160,7 +1219,7 @@ if test -z "$show_help"; then $run $rm $obj $libobj # Create the old-style object. - reload_objs="$objs"`$echo "X$libobjs " | $Xsed -e 's/[^ ]*\.a //g' -e 's/\.lo /.o /g' -e 's/ $//g'` + reload_objs="$objs"`$echo "X$libobjs " | $Xsed -e 's/[^ ]*\.a //g' -e 's/[^ ]*\.lib //g' -e "$los2o" -e 's/ $//g'` output="$obj" eval cmds=\"$reload_cmds\" @@ -1198,7 +1257,7 @@ if test -z "$show_help"; then else # Just create a symlink. $show "$LN_S $obj $libobj" - $run $LN_S $obj $libobj || exit 1 + $run $LN_S $obj $libobj || exit $? fi exit 0 @@ -1206,11 +1265,11 @@ if test -z "$show_help"; then *) if test -n "$vinfo"; then - $echo "$modename: warning: \`-version-info' is ignored while linking programs" 1>&2 + $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 fi if test -n "$release"; then - $echo "$modename: warning: \`-release' is ignored while creating objects" 1>&2 + $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 fi if test -n "$rpath"; then @@ -1258,8 +1317,8 @@ if test -z "$show_help"; then if test -n "$libobjs" && test "$build_old_libs" = yes; then # Transform all the library objects into standard objects. - compile_command=`$echo "X$compile_command " | $Xsed -e 's/\.lo /.o /g' -e 's/ $//'` - finalize_command=`$echo "X$finalize_command " | $Xsed -e 's/\.lo /.o /g' -e 's/ $//'` + compile_command=`$echo "X$compile_command " | $Xsed -e "$los2o" -e 's/ $//'` + finalize_command=`$echo "X$finalize_command " | $Xsed -e "$los2o" -e 's/ $//'` fi if test "$export_dynamic" = yes && test -n "$NM" && test -n "$global_symbol_pipe"; then @@ -1270,7 +1329,7 @@ if test -z "$show_help"; then if test -n "$dlsyms"; then # Add our own program objects to the preloaded list. - dlprefiles=`$echo "X$objs$dlprefiles " | $Xsed -e 's/\.lo /.o /g' -e 's/ $//'` + dlprefiles=`$echo "X$objs$dlprefiles " | $Xsed -e "$los2o" -e 's/ $//'` # Discover the nlist of each of the dlfiles. nlist="$objdir/${output}.nm" @@ -1282,8 +1341,7 @@ if test -z "$show_help"; then $show "$mkdir $objdir" $run $mkdir $objdir status=$? - if test $status -eq 0 || test -d $objdir; then : - else + if test $status -ne 0 && test ! -d $objdir; then exit $status fi fi @@ -1383,8 +1441,8 @@ dld_preloaded_symbols[] = $run eval '(cd $objdir && $CC -c$no_builtin_flag "$dlsyms")' || exit $? # Transform the symbol file into the correct name. - compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$objdir/${output}S.o%"` - finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$objdir/${output}S.o%"` + compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$objdir/${output}S.${objext}%"` + finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$objdir/${output}S.${objext}%"` elif test "$export_dynamic" != yes; then test -n "$dlfiles$dlprefiles" && $echo "$modename: warning: \`-dlopen' and \`-dlpreopen' are ignored without \`-export-dynamic'" 1>&2 else @@ -1414,13 +1472,11 @@ dld_preloaded_symbols[] = finalize_command=`$echo "X$finalize_command" | $Xsed -e 's%@OUTPUT@%'"$objdir/$output"'T%g'` # Create the binary in the object directory, then wrap it. - if test -d $objdir; then : - else + if test ! -d $objdir; then $show "$mkdir $objdir" $run $mkdir $objdir status=$? - if test $status -eq 0 || test -d $objdir; then : - else + if test $status -ne 0 && test ! -d $objdir; then exit $status fi fi @@ -1430,7 +1486,7 @@ dld_preloaded_symbols[] = rpath= for dir in $temp_rpath; do case "$dir" in - /* | [A-Za-z]:\\*) + /* | [A-Za-z]:[/\\]*) # Absolute path. rpath="$rpath$dir:" ;; @@ -1514,10 +1570,20 @@ if test \"\$libtool_install_magic\" = \"$magic\"; then finalize_command=\"$finalize_command\" else # When we are sourced in execute mode, \$file and \$echo are already set. - if test \"\$libtool_execute_magic\" = \"$magic\"; then : - else + if test \"\$libtool_execute_magic\" != \"$magic\"; then echo=\"$qecho\" file=\"\$0\" + # Make sure echo works. + if test \"X\$1\" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift + elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then + # Yippee, \$echo works! + : + else + # Restart under the correct shell, and then maybe \$echo will work. + exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} + fi fi\ " $echo >> $output "\ @@ -1534,7 +1600,7 @@ else # If there was a directory component, then change thisdir. if test \"x\$destdir\" != \"x\$file\"; then case \"\$destdir\" in - /* | [A-Za-z]:\\*) thisdir=\"\$destdir\" ;; + /* | [A-Za-z]:[/\\]*) thisdir=\"\$destdir\" ;; *) thisdir=\"\$thisdir/\$destdir\" ;; esac fi @@ -1594,9 +1660,37 @@ fi\ esac # See if we need to build an old-fashioned archive. - if test "$build_old_libs" = "yes"; then - # Transform .lo files to .o files. - oldobjs="$objs"`$echo "X$libobjs " | $Xsed -e 's/[^ ]*\.a //g' -e 's/\.lo /.o /g' -e 's/ $//g'` + for oldlib in $oldlibs; do + + if test "$build_libtool_libs" = convenience; then + oldobjs="$libobjs" + addlibs="$convenience" + build_libtool_libs=no + else + oldobjs="$objs"`$echo "X$libobjs " | $Xsed -e 's/[^ ]*\.a //g' -e 's/[^ ]*\.lib //g' -e "$los2o" -e 's/ $//g'` + addlibs="$old_convenience" + fi + + # Add in members from convenience archives. + for xlib in $addlibs; do + # Extract the objects. + xdir="$xlib"x + generated="$generated $xdir" + xlib=`echo "$xlib" | $Xsed -e 's%^.*/%%'` + + $show "${rm}r $xdir" + $run ${rm}r "$xdir" + $show "mkdir $xdir" + $run mkdir "$xdir" + status=$? + if test $status -ne 0 && test ! -d "$xdir"; then + exit $status + fi + $show "(cd $xdir && $AR x ../$xlib)" + $run eval "(cd \$xdir && $AR x ../\$xlib)" || exit $? + + oldobjs="$oldobjs `echo $xdir/*`" + done # Do each command in the archive commands. if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then @@ -1611,14 +1705,18 @@ fi\ $run eval "$cmd" || exit $? done IFS="$save_ifs" + done + + if test -n "$generated"; then + $show "${rm}r$generated" + $run ${rm}r$generated fi # Now create the libtool archive. case "$output" in *.la) old_library= - test "$build_old_libs" = yes && old_library="$libname.a" - + test "$build_old_libs" = yes && old_library="$libname.$libext" $show "creating $output" # Only create the output if not a dry run. @@ -1652,7 +1750,7 @@ libdir='$install_libdir'\ # Do a symbolic link so that the libtool archive can be found in # LD_LIBRARY_PATH before the program is installed. $show "(cd $objdir && $LN_S ../$output $output)" - $run eval "(cd $objdir && $LN_S ../$output $output)" || exit 1 + $run eval "(cd $objdir && $LN_S ../$output $output)" || exit $? ;; esac exit 0 @@ -1664,7 +1762,7 @@ libdir='$install_libdir'\ # There may be an optional sh(1) argument at the beginning of # install_prog (especially on Windows NT). - if test "$nonopt" = "$SHELL"; then + if test "$nonopt" = "$SHELL" || test "$nonopt" = "/bin/sh"; then # Aesthetically quote it. arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` case "$arg" in @@ -1783,7 +1881,7 @@ libdir='$install_libdir'\ fi fi case "$destdir" in - /* | [A-Za-z]:\\*) ;; + /* | [A-Za-z]:[/\\]*) ;; *) for file in $files; do case "$file" in @@ -1809,7 +1907,7 @@ libdir='$install_libdir'\ # Do each installation. case "$file" in - *.a) + *.a | *.lib) # Do the static libraries later. staticlibs="$staticlibs $file" ;; @@ -1866,7 +1964,9 @@ libdir='$install_libdir'\ rmcmd="$rm" for linkname do - rmcmd="$rmcmd $destdir/$linkname" + if test "X$linkname" != "X$realname"; then + rmcmd="$rmcmd $destdir/$linkname" + fi done $show "$rmcmd" $run $rmcmd @@ -1874,9 +1974,11 @@ libdir='$install_libdir'\ # ... and create new ones. for linkname do - test "X$dlname" = "X$linkname" && dlname= - $show "(cd $destdir && $LN_S $realname $linkname)" - $run eval "(cd $destdir && $LN_S $realname $linkname)" + if test "X$linkname" != "X$realname"; then + test "X$dlname" = "X$linkname" && dlname= + $show "(cd $destdir && $LN_S $realname $linkname)" + $run eval "(cd $destdir && $LN_S $realname $linkname)" + fi done fi @@ -1921,9 +2023,9 @@ libdir='$install_libdir'\ # Deduce the name of the destination old-style object file. case "$destfile" in *.lo) - staticdest=`$echo "X$destfile" | $Xsed -e 's/\.lo$/.o/'` + staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` ;; - *.o) + *.o | *.obj) staticdest="$destfile" destfile= ;; @@ -1943,7 +2045,7 @@ libdir='$install_libdir'\ # Install the old object if enabled. if test "$build_old_libs" = yes; then # Deduce the name of the old-style object file. - staticobj=`$echo "X$file" | $Xsed -e 's/\.lo$/.o/'` + staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` $show "$install_prog $staticobj $staticdest" $run eval "$install_prog \$staticobj \$staticdest" || exit $? @@ -1989,10 +2091,7 @@ libdir='$install_libdir'\ esac fi libfile="$libdir/`$echo "X$lib" | $Xsed -e 's%^.*/%%g'`" - if test -z "$libdir"; then - $echo "$modename: warning: \`$lib' contains no -rpath information" 1>&2 - elif test -f "$libfile"; then : - else + if test -n "$libdir" && test ! -f "$libfile"; then $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 finalize=no fi @@ -2142,8 +2241,7 @@ libdir='$install_libdir'\ # Handle -dlopen flags immediately. for file in $execute_dlfiles; do - if test -f "$file"; then : - else + if test ! -f "$file"; then $echo "$modename: \`$file' is not a file" 1>&2 $echo "$help" 1>&2 exit 1 @@ -2245,6 +2343,14 @@ libdir='$install_libdir'\ # Export the shlibpath_var. eval "export $shlibpath_var" + # Restore saved enviroment variables + if test "${save_LC_ALL+set}" = set; then + LC_ALL="$save_LC_ALL"; export LC_ALL + fi + if test "${save_LANG+set}" = set; then + LANG="$save_LANG"; export LANG + fi + # Now actually exec the command. eval "exec \$cmd$args" @@ -2333,7 +2439,7 @@ libdir='$install_libdir'\ *.lo) if test "$build_old_libs" = yes; then - oldobj=`$echo "X$name" | $Xsed -e 's/\.lo$/.o/'` + oldobj=`$echo "X$name" | $Xsed -e "$lo2o"` rmfiles="$rmfiles $dir/$oldobj" fi $show "$rm $rmfiles" @@ -2399,6 +2505,10 @@ compile) Compile a source file into a libtool library object. +This mode accepts the following additional options: + + -static always build a \`.o' file suitable for static linking + COMPILE-COMMAND is a command to be used in creating a \`standard' object file from the given SOURCEFILE. @@ -2487,11 +2597,11 @@ object files. If the OUTPUT-FILE ends in \`.la', then a libtool library is created, only library objects (\`.lo' files) may be specified, and \`-rpath' is required. -If OUTPUT-FILE ends in \`.a', then a standard library is created using \`ar' -and \`ranlib'. +If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created +using \`ar' and \`ranlib', or on WIndows using \`lib'. -If OUTPUT-FILE ends in \`.lo' or \`.o', then a reloadable object file is -created, otherwise an executable program is created." +If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file +is created, otherwise an executable program is created." ;; uninstall) |