diff options
-rwxr-xr-x | ltconfig | 39 | ||||
-rw-r--r-- | ltmain.sh | 88 |
2 files changed, 120 insertions, 7 deletions
@@ -33,7 +33,7 @@ progname=`echo "$0" | sed 's%^.*/%%'` # Constants: PROGRAM=ltconfig PACKAGE=libtool -VERSION=0.9g +VERSION=0.9h ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.c 1>&5' rm="rm -f" @@ -434,6 +434,7 @@ else solaris2*) pic_flag='-KPIC' link_static_flag='-Bstatic' + wl='-Wl,' ;; sunos4*) @@ -496,8 +497,42 @@ else echo $ac_t none 1>&6 fi +if test -z "$LD"; then + # Find the linker that we think the C compiler uses. + echo $ac_n "checking for ld used by $compiler... $ac_c" 1>&6 + + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/ld"; then + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some GNU ld's only accept -v. + if "$ac_dir/ld" -v 2>&1 < /dev/null | egrep '(GNU ld|with BFD)' > /dev/null; then + # If it was GNU ld, only accept it if we're using GCC. + LD="$ac_dir/ld" + test "$with_gcc" = yes && break + else + # If it was not GNU ld, and we are not using GCC, then accept it. + LD="$ac_dir/ld" + break + fi + fi + done + IFS="$ac_save_ifs" + + if test -n "$CC"; then + echo "$ac_t""$LD" 1>&6 + else + echo "$ac_t""no" 1>&6 + fi + + if test -z "$LD"; then + echo "$progname: error: no acceptable ld found in \$PATH" 1>&2 + exit 1 + fi +fi + # See if we're really using GNU ld. -test -z "$LD" && LD="ld" with_gnu_ld=no # Allow LD to be a program name with arguments. set dummy $LD @@ -28,7 +28,7 @@ progname=`echo "$0" | sed 's%^.*/%%'` # Constants. PROGRAM=ltmain.sh PACKAGE=libtool -VERSION=0.9g +VERSION=0.9h default_mode=NONE help="Try \`$progname --help' for more information." @@ -826,7 +826,15 @@ if test -z "$show_help"; then # Exit if we aren't doing a library object file. test -z "$libobj" && exit 0 - if test "$build_libtool_libs" = yes && test -n "$pic_flag"; then + if test "$build_libtool_libs" != yes; then + # Create an invalid libtool object if no PIC, so that we don't + # accidentally link it into a program. + $show "echo timestamp > $libobj" + eval "$run echo timestamp > $libobj" || exit $? + exit 0 + fi + + if test -n "$pic_flag"; then # Only do commands if we really have different PIC objects. reload_objs="$libobjs" output="$libobj" @@ -1172,15 +1180,34 @@ EOF test -d "$dest" && isdir=yes if test -n "$isdir"; then destdir="$dest" + destname= else destdir=`echo "$dest" | sed 's%/[^/]*$%%'` + test "$destdir" = "$dest" && destdir=. + destname=`echo "$dest" | sed 's%^.*/%%'` + + # Not a directory, so check to see that there is only one file specified. + set dummy $files + if test $# -gt 2; then + echo "$progname: \`$dest' is not a directory" 1>&2 + echo "$help" 1>&2 + exit 1 + fi fi case "$destdir" in /*) ;; *) - echo "$progname: $destdir must be an absolute directory name" 1>&2 - echo "$help" 1>&2 - exit 1 + for file in $files; do + case "$file" in + *.lo) ;; + *) + echo "$progname: \`$destdir' must be an absolute directory name" 1>&2 + echo "$help" 1>&2 + exit 1 + ;; + esac + done + ;; esac staticlibs= @@ -1298,6 +1325,50 @@ EOF test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" ;; + *.lo) + # Install (i.e. copy) a libtool object. + + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + destfile=`echo "$file" | sed 's%^.*/%%;'` + destfile="$destdir/$destfile" + fi + + # Deduce the name of the destination old-style object file. + case "$destfile" in + *.lo) + staticdest=`echo "$destfile" | sed 's/\.lo$/\.o/;'` + ;; + *.o) + staticdest="$destfile" + destfile= + ;; + *) + echo "$progname: cannot copy a libtool object to \`$destfile'" 1>&2 + echo "$help" 1>&2 + exit 1 + ;; + esac + + # Install the libtool object if requested. + if test -n "$destfile"; then + $show "$install_prog $file $destfile" + $run $install_prog $file $destfile || exit $? + fi + + # Install the old object if enabled. + if test "$build_old_libs" = yes; then + # Deduce the name of the old-style object file. + staticobj=`echo "$file" | sed 's/\.lo$/\.o/;'` + + $show "$install_prog $staticobj $staticdest" + $run $install_prog $staticobj $staticdest || exit $? + fi + exit 0 + ;; + *) # Do a test to see if this is really a libtool program. if egrep "^# Generated by $PROGRAM" $file >/dev/null 2>&1; then @@ -1542,6 +1613,13 @@ EOF # FIXME: should reinstall the best remaining shared library. fi ;; + + *.lo) + if test "$build_old_libs" = yes; then + oldobj=`echo "$name" | sed 's/\.lo$/\.o/'` + rmfiles="$rmfiles $dir/$oldobj" + fi + ;; esac $show "$rm $rmfiles" |