summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xltconfig39
-rw-r--r--ltmain.sh88
2 files changed, 120 insertions, 7 deletions
diff --git a/ltconfig b/ltconfig
index 68429b6ae..bb1135bce 100755
--- a/ltconfig
+++ b/ltconfig
@@ -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
diff --git a/ltmain.sh b/ltmain.sh
index 15e30ef6c..95e72ff37 100644
--- a/ltmain.sh
+++ b/ltmain.sh
@@ -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"