OSDN Git Service

Various libtool updates from devo, including update to libtool 1.2b
authorlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 8 Oct 1998 23:32:31 +0000 (23:32 +0000)
committerlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 8 Oct 1998 23:32:31 +0000 (23:32 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@22947 138bc75d-0d04-0410-961f-82ee72b054a4

ChangeLog
ltconfig
ltmain.sh

index ff356fd..9f67a40 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -115,6 +115,24 @@ Fri Jul 17 13:30:18 1998  Ian Lance Taylor  <ian@cygnus.com>
         * ylwrap: Don't use a full path name if the source file is in the
         same directory.  From hjl@lucon.org (H.J. Lu).
 
+Tue Jul 14 13:22:18 1998  Ian Lance Taylor  <ian@cygnus.com>
+
+       * ltmain.sh: Add some hacks to make SunOS --enable-shared work
+       when using GNU ld.
+
+Fri Jul 10 13:18:23 1998  Ian Lance Taylor  <ian@cygnus.com>
+
+       * ltmain.sh: Correct install when using a different shell.
+
+Tue Jul  7 15:24:38 1998  Ian Lance Taylor  <ian@cygnus.com>
+
+       * ltconfig, ltmain.sh: Update to libtool 1.2b.
+
+
+Wed Jul  1 16:45:21 1998  Ian Lance Taylor  <ian@cygnus.com>
+
+       * ltconfig: Update to correct AIX handling.
+
 Sat Jun 27 22:46:32 1998  Jeffrey A Law  (law@cygnus.com)
 
        * Makefile.in (BASE_FLAGS_TO_PASS): Add TARGET_SUBDIR.
@@ -175,6 +193,13 @@ Wed Jun 10 11:19:47 1998  Ian Lance Taylor  <ian@cygnus.com>
 
        * missing: Update to version from automake 1.3.
 
+       * ltmain.sh: On installation, don't get confused if the same name
+       appears more than once in the list of library names.
+
+Thu May 28 19:31:13 1998  Ian Lance Taylor  <ian@cygnus.com>
+
+       * ltconfig, ltmain.sh: Bring in Visual C++ support.
+
 Sat May 23 23:44:13 1998  Alexandre Oliva <oliva@dcc.unicamp.br>
 
        * Makefile.in (boostrap2-lean, bootstrap3-lean,
index 4f1a9ce..ef2c23a 100755 (executable)
--- a/ltconfig
+++ b/ltconfig
 
 # Check that we are running under the correct shell.
 SHELL=${CONFIG_SHELL-/bin/sh}
-if test "X$1" = "X--no-reexec"; then
+echo=echo
+if test "X$1" = X--no-reexec; then
   # Discard the --no-reexec flag, and continue.
   shift
-elif test "X$SHELL" != X/bin/sh; then
+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
+  # Yippee, $echo works!
+  :
+else
   # Restart under the correct shell.
   exec "$SHELL" "$0" --no-reexec ${1+"$@"}
 fi
@@ -39,9 +43,7 @@ fi
 # if CDPATH is set.
 if test "${CDPATH+set}" = set; then CDPATH=; export CDPATH; fi
 
-echo=echo
-if test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then :
-else
+if test "X`($echo '\t') 2>/dev/null`" != 'X\t'; then
   # The Solaris, AIX, and Digital Unix default echo programs unquote
   # backslashes.  This makes it impossible to quote backslashes using
   #   echo "$something" | sed 's/\\/\\\\/g'
@@ -61,16 +63,15 @@ else
     if test "X`(print -r '\t') 2>/dev/null`" = 'X\t'; then
       # This shell has a builtin print -r that does the trick.
       echo='print -r'
-#    elif test -f /bin/ksh && test "X$CONFIG_SHELL" != X/bin/ksh; then
-#      # If we have ksh, try running ltconfig again with it.
-#      CONFIG_SHELL=/bin/ksh
-#      export CONFIG_SHELL
-#      exec "$CONFIG_SHELL" "$0" --no-reexec ${1+"$@"}
+    elif test -f /bin/ksh && test "X$CONFIG_SHELL" != X/bin/ksh; then
+      # If we have ksh, try running ltconfig again with it.
+      CONFIG_SHELL=/bin/ksh
+      export CONFIG_SHELL
+      exec "$CONFIG_SHELL" "$0" --no-reexec ${1+"$@"}
     else
       # Try using printf.
       echo='printf %s\n'
-      if test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then :
-      else
+      if test "X`($echo '\t') 2>/dev/null`" != 'X\t'; then
         # Oops.  We lost completely, so just stick with echo.
         echo=echo
       fi
@@ -92,7 +93,7 @@ progname=`$echo "X$0" | $Xsed -e 's%^.*/%%'`
 # Constants:
 PROGRAM=ltconfig
 PACKAGE=libtool
-VERSION=1.2a
+VERSION=1.2b
 ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.c 1>&5'
 ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.c $LIBS 1>&5'
 rm="rm -f"
@@ -116,6 +117,8 @@ ofile="$default_ofile"
 verify_host=yes
 with_gcc=no
 with_gnu_ld=no
+objext=o
+libext=a
 
 old_AR="$AR"
 old_CC="$CC"
@@ -225,8 +228,7 @@ if test -z "$ltmain"; then
   exit 1
 fi
 
-if test -f "$ltmain"; then :
-else
+if test ! -f "$ltmain"; then
   echo "$progname: \`$ltmain' does not exist" 1>&2
   echo "$help" 1>&2
   exit 1
@@ -304,7 +306,7 @@ if test "$verify_host" = yes; then
   ac_config_sub=$ac_aux_dir/config.sub
 
   # Make sure we can run config.sub.
-  if $ac_config_sub sun4 >/dev/null 2>&1; then :
+  if $SHELL $ac_config_sub sun4 >/dev/null 2>&1; then :
   else
     echo "$progname: cannot run $ac_config_sub" 1>&2
     echo "$help" 1>&2
@@ -316,14 +318,14 @@ if test "$verify_host" = yes; then
   host_alias=$host
   case "$host_alias" in
   "")
-    if host_alias=`$ac_config_guess`; then :
+    if host_alias=`$SHELL $ac_config_guess`; then :
     else
       echo "$progname: cannot guess host type; you must specify one" 1>&2
       echo "$help" 1>&2
       exit 1
     fi ;;
   esac
-  host=`$ac_config_sub $host_alias`
+  host=`$SHELL $ac_config_sub $host_alias`
   echo "$ac_t$host" 1>&6
 
   # Make sure the host verified.
@@ -465,7 +467,7 @@ if test "$with_gcc" != yes || test -z "$CC"; then
   # Now see if the compiler is really GCC.
   with_gcc=no
   echo $ac_n "checking whether we are using GNU C... $ac_c" 1>&6
-  echo "$progname:468: checking whether we are using GNU C" >&5
+  echo "$progname:470: checking whether we are using GNU C" >&5
 
   $rm conftest.c
   cat > conftest.c <<EOF
@@ -473,7 +475,7 @@ if test "$with_gcc" != yes || test -z "$CC"; then
   yes;
 #endif
 EOF
-  if { ac_try='${CC-cc} -E conftest.c'; { (eval echo $progname:476: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+  if { ac_try='${CC-cc} -E conftest.c'; { (eval echo $progname:478: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
     with_gcc=yes
   fi
   $rm conftest.c
@@ -484,6 +486,28 @@ fi
 set dummy $CC
 compiler="$2"
 
+echo $ac_n "checking for object suffix... $ac_c" 1>&6
+$rm conftest*
+echo 'int i = 1;' > conftest.c
+echo "$progname:492: checking for object suffix" >& 5
+if { (eval echo $progname:493: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; }; then
+  # Append any warnings to the config.log.
+  cat conftest.err 1>&5
+
+  for ac_file in conftest.*; do
+    case $ac_file in
+    *.c) ;;
+    *) objext=`echo $ac_file | sed -e s/conftest.//` ;;
+    esac
+  done
+else
+  cat conftest.err 1>&5
+  echo "$progname: failed program was:" >&5
+  cat conftest.c >&5
+fi
+$rm conftest*
+echo "$ac_t$objext" 1>&6
+
 echo $ac_n "checking for $compiler option to produce PIC... $ac_c" 1>&6
 pic_flag=
 special_shlib_compile_flags=
@@ -500,7 +524,7 @@ if test "$with_gcc" = yes; then
   aix3* | aix4* | irix5* | irix6* | osf3* | osf4*)
     # PIC is the default for these OSes.
     ;;
-  cygwin32* | os2*)
+  cygwin32* | mingw32* | os2*)
     # We can build DLLs from non-PIC.
     ;;
   amigaos*)
@@ -534,7 +558,7 @@ else
     # PIC (with -KPIC) is the default.
     ;;
 
-  cygwin32* | os2*)
+  cygwin32* | mingw32* | os2*)
     # We can build DLLs from non-PIC.
     ;;
 
@@ -588,8 +612,8 @@ if test -n "$pic_flag"; then
   echo "int some_variable = 0;" > conftest.c
   save_CFLAGS="$CFLAGS"
   CFLAGS="$CFLAGS $pic_flag -DPIC"
-  echo "$progname:591: checking if $compiler PIC flag $pic_flag works" >&5
-  if { (eval echo $progname:592: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.o; then
+  echo "$progname:615: checking if $compiler PIC flag $pic_flag works" >&5
+  if { (eval echo $progname:616: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.$objext; then
     # Append any warnings to the config.log.
     cat conftest.err 1>&5
 
@@ -632,8 +656,8 @@ $rm conftest*
 echo 'main(){return(0);}' > conftest.c
 save_LDFLAGS="$LDFLAGS"
 LDFLAGS="$LDFLAGS $link_static_flag"
-echo "$progname:635: checking if $compiler static flag $link_static_flag works" >&5
-if { (eval echo $progname:636: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+echo "$progname:659: checking if $compiler static flag $link_static_flag works" >&5
+if { (eval echo $progname:660: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   echo "$ac_t$link_static_flag" 1>&6
 else
   echo "$ac_t"none 1>&6
@@ -665,11 +689,11 @@ if test -z "$LD"; then
   if test "$with_gcc" = yes; then
     # Check if gcc -print-prog-name=ld gives a path.
     echo $ac_n "checking for ld used by GCC... $ac_c" 1>&6
-    echo "$progname:668: checking for ld used by GCC" >&5
+    echo "$progname:692: checking for ld used by GCC" >&5
     ac_prog=`($CC -print-prog-name=ld) 2>&5`
     case "$ac_prog" in
     # Accept absolute paths.
-    /* | [A-Za-z]:\\*)
+    /* | [A-Za-z]:[/\\]*)
       test -z "$LD" && LD="$ac_prog"
       ;;
     "")
@@ -683,10 +707,10 @@ if test -z "$LD"; then
     esac
   elif test "$with_gnu_ld" = yes; then
     echo $ac_n "checking for GNU ld... $ac_c" 1>&6
-    echo "$progname:686: checking for GNU ld" >&5
+    echo "$progname:710: checking for GNU ld" >&5
   else
     echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6
-    echo "$progname:689: checking for non-GNU ld" >&5
+    echo "$progname:713: checking for non-GNU ld" >&5
   fi
 
   if test -z "$LD"; then
@@ -738,12 +762,21 @@ no_undefined_flag=
 archive_cmds=
 old_archive_from_new_cmds=
 export_dynamic_flag_spec=
+whole_archive_flag_spec=
 hardcode_libdir_flag_spec=
 hardcode_libdir_separator=
 hardcode_direct=no
 hardcode_minus_L=no
 hardcode_shlibpath_var=unsupported
 runpath_var=
+fix_srcfile_path=
+
+case "$host_os" in
+aix3* | aix4*)
+  # On AIX, the GNU linker works like the native linker.
+  with_gnu_ld=no
+  ;;
+esac
 
 ld_shlibs=yes
 if test "$with_gnu_ld" = yes; then
@@ -758,15 +791,22 @@ if test "$with_gnu_ld" = yes; then
 
   sunos4*)
     archive_cmds='$LD -assert pure-text -Bstatic -o $lib$libobjs'
+    hardcode_direct=yes
+    # The GNU linker will only hardcode -L options if -rpath is not
+    # used, but we will be using -rpath because we set
+    # hardcode_libdir_flag_spec below.
+    hardcode_minus_L=no
+    hardcode_shlibpath_var=no
     ;;
 
-  cygwin32*)
-    # hardcode_libdir_flag_spec is actually meaningless, as there is
-    # no search path for DLLs.
-    hardcode_libdir_flag_spec='-L$libdir'
-    allow_undefined_flag=unsupported
-    # Very, very bogus.
-    echo '
+  cygwin32* | mingw32*)
+    if test "$with_gcc" = yes; then
+      # hardcode_libdir_flag_spec is actually meaningless, as there is
+      # no search path for DLLs.
+      hardcode_libdir_flag_spec='-L$libdir'
+      allow_undefined_flag=unsupported
+      # Very, very bogus.
+      echo '
 #include <windows.h>
 
 struct _reent *_impure_ptr;
@@ -777,8 +817,26 @@ __dll_entry (HINSTANCE hinst, DWORD reason, LPVOID reserved)
   _impure_ptr = __imp_reent_data;
 }
 ' > libtool.c
-    archive_cmds='$CC -c '"`pwd`"'/libtool.c;echo EXPORTS > $soname-def;$NM$libobjs | $global_symbol_pipe | sed '\''s/.* //'\'' >> $soname-def;$LD -s --base-file $soname-base --dll -e ___dll_entry@12 -o $lib libtool.o$libobjs$deplibs;$DLLTOOL --as=$AS --dllname $soname --def $soname-def --base-file $soname-base --output-exp $soname-exp;$LD -s --base-file $soname-base $soname-exp --dll -e ___dll_entry@12 -o $lib libtool.o$libobjs$deplibs;$DLLTOOL --as=$AS --dllname $soname --def $soname-def --base-file $soname-base --output-exp $soname-exp;$LD $soname-exp --dll -e ___dll_entry@12 -o $lib libtool.o$libobjs$deplibs;$rm libtool.o $soname-base $soname-exp'
-    old_archive_from_new_cmds='$DLLTOOL --as=$AS --dllname $soname --def $soname-def --output-lib $objdir/$libname.a;$rm $soname-def'
+      archive_cmds='$CC -c '"`pwd`"'/libtool.c;echo EXPORTS > $soname-def;$NM$libobjs | $global_symbol_pipe | sed '\''s/.* //'\'' >> $soname-def;$LD -s --base-file $soname-base --dll -e ___dll_entry@12 -o $lib libtool.$objext$libobjs$deplibs;$DLLTOOL --as=$AS --dllname $soname --def $soname-def --base-file $soname-base --output-exp $soname-exp;$LD -s --base-file $soname-base $soname-exp --dll -e ___dll_entry@12 -o $lib libtool.$objext$libobjs$deplibs;$DLLTOOL --as=$AS --dllname $soname --def $soname-def --base-file $soname-base --output-exp $soname-exp;$LD $soname-exp --dll -e ___dll_entry@12 -o $lib libtool.$objext$libobjs$deplibs;$rm libtool.$objext $soname-base $soname-exp'
+      old_archive_from_new_cmds='$DLLTOOL --as=$AS --dllname $soname --def $soname-def --output-lib $objdir/$libname.a;$rm $soname-def'
+    else
+      # When not using gcc, we currently assume that we are using
+      # Microsoft Visual C++.
+      with_gnu_ld=no
+      # hardcode_libdir_flag_spec is actually meaningless, as there is
+      # no search path for DLLs.
+      hardcode_libdir_flag_spec=' '
+      allow_undefined_flag=unsupported
+      # Tell ltmain to make .lib files, not .a files.
+      libext=lib
+      # FIXME: Setting linknames here is a bad hack.
+      archive_cmds='$CC -o $lib$libobjs`echo "$deplibs" | sed -e '\''s/ -lc$//'\''` -link -dll;linknames='
+      # The linker will automatically build a .lib file if we build a DLL.
+      old_archive_from_new_cmds='true'
+      # FIXME: Should let the user specify the lib program.
+      old_archive_cmds='lib /OUT:$oldlib$oldobjs'
+      fix_srcfile_path='`cygpath -w $srcfile`'
+    fi
     ;;
 
   *)
@@ -790,10 +848,11 @@ __dll_entry (HINSTANCE hinst, DWORD reason, LPVOID reserved)
     ;;
   esac
 
-  if test "$ld_shlibs" = yes; then
+  if test "$ld_shlibs" = yes && test "$with_gnu_ld" = yes; then
     runpath_var=LD_RUN_PATH
     hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir'
     export_dynamic_flag_spec='${wl}--export-dynamic'
+    whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
   fi
 else
   # PORTME fill in a description of your system's linker (not GNU ld)
@@ -824,13 +883,14 @@ else
     hardcode_minus_L=yes
     ;;
 
-  cygwin32*)
-    # hardcode_libdir_flag_spec is actually meaningless, as there is
-    # no search path for DLLs.
-    hardcode_libdir_flag_spec='-L$libdir'
-    allow_undefined_flag=unsupported
-    # Very, very bogus.
-    echo '
+  cygwin32* | mingw32*)
+    if test "$with_gcc" = yes; then
+      # hardcode_libdir_flag_spec is actually meaningless, as there is
+      # no search path for DLLs.
+      hardcode_libdir_flag_spec='-L$libdir'
+      allow_undefined_flag=unsupported
+      # Very, very bogus.
+      echo '
 #include <windows.h>
 
 struct _reent *_impure_ptr;
@@ -841,8 +901,25 @@ __dll_entry (HINSTANCE hinst, DWORD reason, LPVOID reserved)
   _impure_ptr = __imp_reent_data;
 }
 ' > libtool.c
-    archive_cmds='$CC -c '"`pwd`"'/libtool.c;echo EXPORTS > $soname-def;$NM$libobjs | $global_symbol_pipe | sed '\''s/.* //'\'' >> $soname-def;$LD -s --base-file $soname-base --dll -e ___dll_entry@12 -o $lib libtool.o$libobjs$deplibs;$DLLTOOL --as=$AS --dllname $soname --def $soname-def --base-file $soname-base --output-exp $soname-exp;$LD -s --base-file $soname-base $soname-exp --dll -e ___dll_entry@12 -o $lib libtool.o$libobjs$deplibs;$DLLTOOL --as=$AS --dllname $soname --def $soname-def --base-file $soname-base --output-exp $soname-exp;$LD $soname-exp --dll -e ___dll_entry@12 -o $lib libtool.o$libobjs$deplibs;$rm libtool.o $soname-base $soname-exp'
-    old_archive_from_new_cmds='$DLLTOOL --as=$AS --dllname $soname --def $soname-def --output-lib $objdir/$libname.a;$rm $soname-def'
+      archive_cmds='$CC -c '"`pwd`"'/libtool.c;echo EXPORTS > $soname-def;$NM$libobjs | $global_symbol_pipe | sed '\''s/.* //'\'' >> $soname-def;$LD -s --base-file $soname-base --dll -e ___dll_entry@12 -o $lib libtool.$objext$libobjs$deplibs;$DLLTOOL --as=$AS --dllname $soname --def $soname-def --base-file $soname-base --output-exp $soname-exp;$LD -s --base-file $soname-base $soname-exp --dll -e ___dll_entry@12 -o $lib libtool.$objext$libobjs$deplibs;$DLLTOOL --as=$AS --dllname $soname --def $soname-def --base-file $soname-base --output-exp $soname-exp;$LD $soname-exp --dll -e ___dll_entry@12 -o $lib libtool.$objext$libobjs$deplibs;$rm libtool.$objext $soname-base $soname-exp'
+      old_archive_from_new_cmds='$DLLTOOL --as=$AS --dllname $soname --def $soname-def --output-lib $objdir/$libname.a;$rm $soname-def'
+    else
+      # When not using gcc, we currently assume that we are using
+      # Microsoft Visual C++.
+      # hardcode_libdir_flag_spec is actually meaningless, as there is
+      # no search path for DLLs.
+      hardcode_libdir_flag_spec=' '
+      allow_undefined_flag=unsupported
+      # Tell ltmain to make .lib files, not .a files.
+      libext=lib
+      # FIXME: Setting linknames here is a bad hack.
+      archive_cmds='$CC -o $lib$libobjs`echo "$deplibs" | sed -e '\''s/ -lc$//'\''` -link -dll;linknames='
+      # The linker will automatically build a .lib file if we build a DLL.
+      old_archive_from_new_cmds='true'
+      # FIXME: Should let the user specify the lib program.
+      old_archive_cmds='lib /OUT:$oldlib$oldobjs'
+      fix_srcfile_path='`cygpath -w $srcfile`'
+    fi
     ;;
 
   # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
@@ -870,7 +947,7 @@ __dll_entry (HINSTANCE hinst, DWORD reason, LPVOID reserved)
     archive_cmds='$CC -shared -o $lib$libobjs'
     hardcode_libdir_flag_spec='-R$libdir'
     hardcode_direct=yes
-    hardcode_minus_L=yes
+    hardcode_minus_L=no
     hardcode_shlibpath_var=no
     ;;
 
@@ -975,7 +1052,7 @@ echo "$ac_t$ld_shlibs" 1>&6
 if test -z "$NM"; then
   echo $ac_n "checking for BSD-compatible nm... $ac_c" 1>&6
   case "$NM" in
-  /* | [A-Za-z]:\\*) ;; # Let the user override the test with a path.
+  /* | [A-Za-z]:[/\\]*) ;; # Let the user override the test with a path.
   *)
     IFS="${IFS=        }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
     for ac_dir in /usr/ucb /usr/ccs/bin $PATH /bin; do
@@ -1021,7 +1098,7 @@ case "$host_os" in
 aix*)
   symcode='[BCDTU]'
   ;;
-cygwin32*)
+cygwin32* | mingw32*)
   sympat='_\([_A-Za-z][_A-Za-z0-9]*\)'
   symxfrm='_\1 \1'
   ;;
@@ -1040,7 +1117,7 @@ if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then
 fi
 
 case "$host_os" in
-cygwin32*)
+cygwin32* | mingw32*)
   # We do not want undefined symbols on cygwin32.  The user must
   # arrange to define them via -l arguments.
   symcode='[ABCDGISTW]'
@@ -1065,11 +1142,11 @@ void nm_test_func(){}
 main(){nm_test_var='a';nm_test_func();return(0);}
 EOF
 
-echo "$progname:1068: checking if global_symbol_pipe works" >&5
-if { (eval echo $progname:1069: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; } && test -s conftest.o; then
+echo "$progname:1145: checking if global_symbol_pipe works" >&5
+if { (eval echo $progname:1146: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; } && test -s conftest.$objext; then
   # Now try to grab the symbols.
   nlist=conftest.nm
-  if { echo "$progname:1072: eval \"$NM conftest.o | $global_symbol_pipe > $nlist\"" >&5; eval "$NM conftest.o | $global_symbol_pipe > $nlist 2>&5"; } && test -s "$nlist"; then
+  if { echo "$progname:1149: eval \"$NM conftest.$objext | $global_symbol_pipe > $nlist\"" >&5; eval "$NM conftest.$objext | $global_symbol_pipe > $nlist 2>&5"; } && test -s "$nlist"; then
 
     # Try sorting and uniquifying the output.
     if sort "$nlist" | uniq > "$nlist"T; then
@@ -1122,12 +1199,12 @@ EOF
 #endif
 EOF
         # Now try linking the two files.
-        mv conftest.o conftestm.o
+        mv conftest.$objext conftestm.$objext
        save_LIBS="$LIBS"
        save_CFLAGS="$CFLAGS"
-        LIBS='conftestm.o'
+        LIBS="conftestm.$objext"
        CFLAGS="$CFLAGS$no_builtin_flag"
-        if { (eval echo $progname:1130: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+        if { (eval echo $progname:1207: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
           pipe_works=yes
         else
           echo "$progname: failed program was:" >&5
@@ -1215,9 +1292,13 @@ amigaos*)
   finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done'
   ;;
 
-cygwin32*)
+cygwin32* | mingw32*)
   version_type=windows
-  library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.a'
+  if test "$with_gcc" = yes; then
+    library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.a'
+  else
+    library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.lib'
+  fi
   dynamic_linker='Win32 ld.exe'
   shlibpath_var=PATH
   ;;
@@ -1230,8 +1311,8 @@ freebsd2* | freebsd3*)
   ;;
 
 gnu*)
-  version_type=sunos
-  library_names_spec='${libname}${release}.so$versuffix'
+  version_type=linux
+  library_names_spec='${libname}${release}.so$versuffix ${libname}.so'
   shlibpath_var=LD_LIBRARY_PATH
   ;;
 
@@ -1311,11 +1392,13 @@ solaris2*)
   library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
   soname_spec='${libname}${release}.so$major'
   shlibpath_var=LD_LIBRARY_PATH
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
   ;;
 
 sunos4*)
   version_type=sunos
-  library_names_spec='${libname}${release}.so$versuffix'
+  library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
   finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
   shlibpath_var=LD_LIBRARY_PATH
   ;;
@@ -1386,11 +1469,12 @@ ltecho="$echo"
 for var in ltecho old_CC old_CFLAGS old_CPPFLAGS old_LD old_NM old_RANLIB \
   old_LN_S old_DLLTOOL old_AS AR CC LD LN_S NM DLLTOOL AS reload_flag \
   reload_cmds wl pic_flag link_static_flag no_builtin_flag \
-  export_dynamic_flag_spec libname_spec library_names_spec soname_spec RANLIB \
+  export_dynamic_flag_spec whole_archive_flag_spec libname_spec \
+  library_names_spec soname_spec RANLIB \
   old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \
   old_postuninstall_cmds archive_cmds postinstall_cmds postuninstall_cmds \
-  allow_undefined_flag no_undefined_flag \
-  finish_cmds finish_eval global_symbol_pipe \
+  allow_undefined_flag no_undefined_flag objext libext \
+  finish_cmds finish_eval global_symbol_pipe fix_srcfile_path \
   hardcode_libdir_flag_spec hardcode_libdir_separator; do
 
   case "$var" in
@@ -1506,6 +1590,12 @@ reload_cmds="$reload_cmds"
 # How to pass a linker flag through the compiler.
 wl="$wl"
 
+# Object file suffix (normally "o").
+objext="$objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
 # Additional compiler flags for building library objects.
 pic_flag="$pic_flag"
 
@@ -1518,6 +1608,9 @@ no_builtin_flag="$no_builtin_flag"
 # Compiler flag to allow reflexive dlopens.
 export_dynamic_flag_spec="$export_dynamic_flag_spec"
 
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec="$whole_archive_flag_spec"
+
 # Library versioning type.
 version_type=$version_type
 
@@ -1587,6 +1680,9 @@ hardcode_minus_L=$hardcode_minus_L
 # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
 # the resulting binary.
 hardcode_shlibpath_var=$hardcode_shlibpath_var
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path"
 EOF
 
 case "$host_os" in
index 1893b01..eee5763 100644 (file)
--- a/ltmain.sh
+++ b/ltmain.sh
 # 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)