]> Pileus Git - ~andy/gtk/blobdiff - ltmain.sh
cur files are binary. Changed to -kb and committed the correct versions,
[~andy/gtk] / ltmain.sh
index 2cf2fb308d708a0964a87f17f86d1317bfb0c0c8..e66e0d88c90c21ce479656e55080d3a9ce6afb2a 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$1" = X--fallback-echo; then
+  # used as fallback echo
+  shift
+  cat <<EOF
+$*
+EOF
+  exit 0
+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 +49,7 @@ modename="$progname"
 # Constants.
 PROGRAM=ltmain.sh
 PACKAGE=libtool
-VERSION=1.1
+VERSION=1.2d
 
 default_mode=
 help="Try \`$progname --help' for more information."
@@ -48,8 +67,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 +96,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
@@ -111,6 +137,16 @@ do
     exit 0
     ;;
 
+  --config)
+    sed -e '1,/^### BEGIN LIBTOOL CONFIG/d' -e '/^### END LIBTOOL CONFIG/,$d' $0
+    exit 0
+    ;;
+
+  --debug)
+    echo "$progname: enabling shell trace mode"
+    set -x
+    ;;
+
   --dry-run | -n)
     run=:
     ;;
@@ -180,7 +216,7 @@ if test -z "$show_help"; then
         esac
       done
       ;;
-    *db | *dbx)
+    *db | *dbx | *strace | *truss)
       mode=execute
       ;;
     *install*|cp|mv)
@@ -226,22 +262,44 @@ if test -z "$show_help"; then
     lastarg=
     srcfile="$nonopt"
     suppress_output=
+    force_static=no
 
+    user_target=no
     for arg
     do
       # Accept any command-line options.
       case "$arg" in
       -o)
-       $echo "$modename: you cannot specify the output filename with \`-o'" 1>&2
-       $echo "$help" 1>&2
-       exit 1
+        if test "$user_target" != "no"; then
+          $echo "$modename: you cannot specify \`-o' more than once" 1>&2
+         exit 1
+        fi
+        user_target=next
        ;;
 
+      -force-static)
+        force_static=yes
+        continue
+        ;;
+       
       -static)
-       build_libtool_libs=no
-       build_old_libs=yes
-       continue
-       ;;
+        build_old_libs=yes
+        continue
+        ;;
+      esac
+
+      case "$user_target" in
+      next)
+        # The next one is the -o target name
+        user_target=yes
+        continue
+        ;;
+      yes)
+        # We got the output file
+        user_target=set
+        libobj="$arg"
+        continue
+        ;;
       esac
 
       # Accept the current argument as the source file.
@@ -260,23 +318,34 @@ if test -z "$show_help"; then
       # sets, so we specify it separately.
       case "$lastarg" in
       *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \    ]*|*]*)
-       lastarg="\"$lastarg\""
-       ;;
+        lastarg="\"$lastarg\""
+        ;;
       esac
 
       # Add the previous argument to base_compile.
       if test -z "$base_compile"; then
-       base_compile="$lastarg"
+        base_compile="$lastarg"
       else
-       base_compile="$base_compile $lastarg"
+        base_compile="$base_compile $lastarg"
       fi
     done
 
-    # Get the name of the library object.
-    libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'`
+    case "$user_target" in
+    set)
+      ;;
+    no)
+      # Get the name of the library object.
+      libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'`
+      ;;
+    *)
+      $echo "$modename: you must specify a target with \`-o'" 1>&2
+      exit 1
+      ;;
+    esac
 
     # Recognize several different file suffixes.
-    xform='[cCFSfms]'
+    # If the user specifies -o file.o, it is replaced with file.lo
+    xform='[cCFSfmso]'
     case "$libobj" in
     *.ada) xform=ada ;;
     *.adb) xform=adb ;;
@@ -293,9 +362,9 @@ 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
+      $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2
       exit 1
       ;;
     esac
@@ -308,11 +377,54 @@ if test -z "$show_help"; then
 
     # Delete any leftover library objects.
     if test "$build_old_libs" = yes; then
-      $run $rm $obj $libobj
-      trap "$run $rm $obj $libobj; exit 1" 1 2 15
+      removelist="$obj $libobj $lockfile"
+    else
+      removelist="$libobj $lockfile"
+    fi
+
+    $run $rm $removelist
+    trap "$run $rm $removelist; exit 1" 1 2 15
+
+    # Calculate the filename of the output object if compiler does
+    # not support -o with -c
+    if test "$compiler_c_o" = no; then
+      output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\..*$%%'`.${objext}
+      lockfile="$output_obj.lock"
+      removelist="$removelist $output_obj $lockfile"
+      trap "$run $rm $removelist; exit 1" 1 2 15
     else
-      $run $rm $libobj
-      trap "$run $rm $libobj; exit 1" 1 2 15
+      need_locks=no
+      lockfile=
+    fi
+
+    # Lock this critical section if it is needed
+    # We use this script file to make the link, it avoids creating a new file
+    if test "$need_locks" = yes; then
+      until ln "$0" "$lockfile" 2>/dev/null; do
+        $show "Waiting for $lockfile to be removed"
+        sleep 2
+      done
+    elif test "$need_locks" = warn; then
+      if test -f "$lockfile"; then
+       echo "\
+*** ERROR, $lockfile exists and contains:
+`cat $lockfile 2>/dev/null`
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+       $run $rm $removelist
+       exit 1
+      fi
+      echo $srcfile > "$lockfile"
+    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.
@@ -321,23 +433,65 @@ if test -z "$show_help"; then
       fbsd_hideous_sh_bug=$base_compile
 
       # All platforms use -DPIC, to notify preprocessed assembler code.
-      $show "$base_compile$pic_flag -DPIC $srcfile"
-      if $run eval "$base_compile\$pic_flag -DPIC \$srcfile"; then :
+      command="$base_compile$pic_flag -DPIC $srcfile"
+      if test "$compiler_o_lo" = yes; then
+        command="$command -o $libobj"
+        output_obj="$libobj"
+      elif test "$compiler_c_o" = yes; then
+        command="$command -o $obj"
+        output_obj="$obj"
+      fi
+
+      $show "$command"
+      if $run eval "$command"; then :
       else
-        test -n "$obj" && $run $rm $obj
+        test -n "$output_obj" && $run $rm $removelist
         exit 1
       fi
 
-      # If we have no pic_flag, then copy the object into place and finish.
-      if test -z "$pic_flag"; then
-        $show "$LN_S $obj $libobj"
-        $run $LN_S $obj $libobj
-        exit $?
+      if test "$need_locks" = warn &&
+        test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then
+       echo "\
+*** ERROR, $lockfile contains:
+`cat $lockfile 2>/dev/null`
+
+but it should contain:
+$srcfile
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+       $run $rm $removelist
+       exit 1
       fi
 
-      # Just move the object, then go on to compile the next one
-      $show "$mv $obj $libobj"
-      $run $mv $obj $libobj || exit 1
+      # Just move the object if needed, then go on to compile the next one
+      if test "$compiler_o_lo" = no && test x"$output_obj" != x"$libobj"; then
+        $show "$mv $output_obj $libobj"
+        if $run $mv $output_obj $libobj; then :
+       else
+         error=$?
+         $run $rm $removelist
+         exit $error
+       fi
+      fi
+
+      # If we have no pic_flag and do not have -force-static, 
+      # then copy the object into place and finish.
+      if test -z "$pic_flag" && test "$force_static" = no; then
+        $show "$LN_S $libobj $obj"
+        if $run $LN_S $libobj $obj; then
+         exit 0
+       else
+          error=$?
+         $run $rm $removelist
+         exit $error
+       fi
+      fi
 
       # Allow error messages only from the first compilation.
       suppress_output=' >/dev/null 2>&1'
@@ -345,13 +499,59 @@ if test -z "$show_help"; then
 
     # Only build a position-dependent object if we build old libraries.
     if test "$build_old_libs" = yes; then
+      command="$base_compile $srcfile"
+      if test "$force_static" = yes; then
+        command="$command -DLIBTOOL_STATIC"
+      fi
+      if test "$compiler_c_o" = yes; then
+        command="$command -o $obj"
+        output_obj="$obj"
+      fi
+
       # Suppress compiler output if we already did a PIC compilation.
-      $show "$base_compile $srcfile$suppress_output"
-      if $run eval "$base_compile \$srcfile$suppress_output"; then :
+      command="$command$suppress_output"
+      $show "$command"
+      if $run eval "$command"; then :
       else
-        $run $rm $obj $libobj
+        $run $rm $removelist
         exit 1
       fi
+
+      if test "$need_locks" = warn &&
+        test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then
+       echo "\
+*** ERROR, $lockfile contains:
+`cat $lockfile 2>/dev/null`
+
+but it should contain:
+$srcfile
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+       $run $rm $removelist
+       exit 1
+      fi
+
+      # Just move the object if needed
+      if test "$compiler_c_o" = no && test x"$output_obj" != x"$obj"; then
+        $show "$mv $output_obj $obj"
+        if $run $mv $output_obj $obj; then :
+       else
+         error=$?
+         $run $rm $removelist
+         exit $error
+       fi
+      fi
+    fi
+
+    # Unlock the critical section if it was locked
+    if test "$need_locks" != no; then
+      $rm "$lockfile"
     fi
 
     # Create an invalid libtool object if no PIC, so that we do not
@@ -367,6 +567,7 @@ if test -z "$show_help"; then
   # libtool link mode
   link)
     modename="$modename: link"
+    C_compiler="$CC" # save it, to compile generated C sources
     CC="$nonopt"
     allow_undefined=yes
     compile_command="$CC"
@@ -374,14 +575,21 @@ if test -z "$show_help"; then
 
     compile_shlibpath=
     finalize_shlibpath=
+    convenience=
+    old_convenience=
     deplibs=
+    eval lib_search_path=\"$sys_lib_search_path\"
+    
     dlfiles=
     dlprefiles=
     export_dynamic=no
+    export_symbols=
+    generated=
     hardcode_libdirs=
     libobjs=
     link_against_libtool_libs=
     ltlibs=
+    module=no
     objs=
     prev=
     prevarg=
@@ -410,8 +618,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
@@ -432,6 +642,14 @@ if test -z "$show_help"; then
             ;;
           esac
           ;;
+       exportsyms)
+         export_symbols="$arg"
+          if test ! -f "$arg"; then
+            $echo "$modename: symbol file \`$arg' does not exist"
+            exit 1
+          fi
+         prev=
+         ;;
        release)
          release="-$arg"
          prev=
@@ -481,7 +699,7 @@ if test -z "$show_help"; then
         if test "$export_dynamic" != yes; then
           export_dynamic=yes
          if test -n "$export_dynamic_flag_spec"; then
-           arg=`eval \\$echo "$export_dynamic_flag_spec"`
+           eval arg=\"$export_dynamic_flag_spec\"
          else
            arg=
          fi
@@ -492,10 +710,19 @@ if test -z "$show_help"; then
         fi
         ;;
 
+      -export-symbols)
+        if test -n "$export_symbols"; then
+          $echo "$modename: cannot have more than one -exported-symbols"
+          exit 1
+        fi
+       prev=exportsyms
+       continue
+        ;;
+
       -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.
           ;;
         *)
@@ -504,10 +731,22 @@ if test -z "$show_help"; then
           ;;
         esac
         deplibs="$deplibs $arg"
+        lib_search_path="$lib_search_path `expr $arg : '-L\(.*\)'`"
         ;;
 
       -l*) deplibs="$deplibs $arg" ;;
 
+      -module)
+        if test "$module" != yes; then
+          module=yes
+         if test -n "$export_dynamic_flag_spec"; then
+           eval arg=\"$export_dynamic_flag_spec\"
+         else
+           arg=
+         fi
+       fi
+        ;;
+       
       -no-undefined)
        allow_undefined=no
        continue
@@ -551,7 +790,7 @@ if test -z "$show_help"; then
        esac
         ;;
 
-      *.o | *.a)
+      *.o | *.obj | *.a | *.lib)
         # A standard object.
         objs="$objs $arg"
         ;;
@@ -571,7 +810,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"
@@ -586,23 +825,22 @@ if test -z "$show_help"; then
         old_library=
 
         # Check to see that this really is a libtool archive.
-        if (sed -e '2q' $arg | egrep '^# Generated by ltmain\.sh') >/dev/null 2>&1; then :
+        if (sed -e '2q' $arg | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
         else
           $echo "$modename: \`$arg' is not a valid libtool archive" 1>&2
           exit 1
         fi
 
+       # If the library was installed with an old release of libtool,
+       # it will not redefine variable installed.
+       installed=yes
+
         # If there is no directory component, then add one.
         case "$arg" in
         */* | *\\*) . $arg ;;
         *) . ./$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
@@ -616,18 +854,34 @@ if test -z "$show_help"; then
 
         # Find the relevant object directory and library name.
         name=`$echo "X$arg" | $Xsed -e 's%^.*/%%' -e 's/\.la$//' -e 's/^lib//'`
-        dir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
-        if test "X$dir" = "X$arg"; then
-          dir="$objdir"
-        else
-          dir="$dir/$objdir"
-        fi
+
+       if test "X$installed" = Xyes; then
+         dir="$libdir"
+       else
+         dir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+         if test "X$dir" = "X$arg"; then
+           dir="$objdir"
+         else
+           dir="$dir/$objdir"
+         fi
+       fi
+
+        if test -z "$libdir"; then
+         # It is a libtool convenience library, so add in its objects.
+         convenience="$convenience $dir/$old_library"
+         old_convenience="$old_convenience $dir/$old_library"
+         deplibs="$deplibs$dependency_libs"
+         compile_command="$compile_command $dir/$old_library$dependency_libs"
+         finalize_command="$finalize_command $dir/$old_library$dependency_libs"
+         continue
+       fi
 
         # This library was specified with -dlopen.
         if test "$prev" = dlfiles; then
           dlfiles="$dlfiles $arg"
-          if test -z "$dlname"; then
-            # If there is no dlname, we need to preload.
+          if test -z "$dlname" || test "$build_libtool_libs" = no; then
+            # If there is no dlname or we're linking statically,
+            # we need to preload.
             prev=dlprefiles
           else
             # We should not create a dependency on this library, but we
@@ -682,7 +936,7 @@ if test -z "$show_help"; then
             fi
 
             if test -n "$libdir"; then
-              flag=`eval \\$echo \"$hardcode_libdir_flag_spec\"`
+              eval flag=\"$hardcode_libdir_flag_spec\"
 
               compile_command="$compile_command $flag"
               finalize_command="$finalize_command $flag"
@@ -696,22 +950,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
@@ -729,15 +991,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
             ;;
 
-          *)
-            $echo "$modename: \`$hardcode_action' is an unknown hardcode action" 1>&2
-            exit 1
-            ;;
+         *)
+           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"
@@ -802,14 +1070,15 @@ 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
+    if test -n "$export_symbols" && test "$module" = yes; then
+      $echo "$modename: \`-export-symbols' is not supported for modules"
       exit 1
     fi
+    
+    oldlibs=
+    # calculate the name of the file, without its directory
+    outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'`
 
-    oldlib=
-    oldobjs=
     case "$output" in
     "")
       $echo "$modename: you must specify an output file" 1>&2
@@ -817,41 +1086,66 @@ if test -z "$show_help"; then
       exit 1
       ;;
 
-    */* | *\\*)
-      $echo "$modename: output file \`$output' must have no directory components" 1>&2
-      exit 1
-      ;;
+    *.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
+
+      if test -n "$export_symbols"; then
+        $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2
+      fi
 
-    *.a)
       # 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)
       # Make sure we only generate libraries of the form `libNAME.la'.
-      case "$output" in
+      case "$outputname" 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
        ;;
       esac
 
-      name=`$echo "X$output" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
-      libname=`eval \\$echo \"$libname_spec\"`
+      name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
+      eval libname=\"$libname_spec\"
+
+      output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
+      if test "X$output_objdir" = "X$output"; then
+        output_objdir="$objdir"
+      else
+        output_objdir="$output_objdir/$objdir"
+      fi
 
       # All the library-specific variables (install_libdir is set above).
       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
@@ -860,21 +1154,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
@@ -883,203 +1168,445 @@ if test -z "$show_help"; then
       fi
       install_libdir="$2"
 
-      # Parse the version information argument.
-      IFS="${IFS=      }"; save_ifs="$IFS"; IFS=':'
-      set dummy $vinfo
-      IFS="$save_ifs"
+      oldlibs=
+      if test -z "$rpath"; then
+       # Building a libtool convenience library.
+        libext=al
+       oldlibs="$output_objdir/$libname.$libext $oldlibs"
+       build_libtool_libs=convenience
+       dependency_libs="$deplibs"
+
+       if test -n "$vinfo"; then
+         $echo "$modename: warning: \`-version-info' is ignored for convenience libraries" 1>&2
+       fi
 
-      if test -n "$5"; then
-        $echo "$modename: too many parameters to \`-version-info'" 1>&2
-        $echo "$help" 1>&2
-        exit 1
-      fi
+       if test -n "$release"; then
+         $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2
+       fi
+      else
 
-      test -n "$2" && current="$2"
-      test -n "$3" && revision="$3"
-      test -n "$4" && age="$4"
+       # Parse the version information argument.
+       IFS="${IFS=     }"; save_ifs="$IFS"; IFS=':'
+       set dummy $vinfo 0 0 0
+       IFS="$save_ifs"
 
-      # Check that each of the things are valid numbers.
-      case "$current" in
-      0 | [1-9] | [1-9][0-9]*) ;;
-      *)
-        $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2
-        $echo "$modename: \`$vinfo' is not valid version information" 1>&2
-        exit 1
-        ;;
-      esac
+       if test -n "$8"; then
+         $echo "$modename: too many parameters to \`-version-info'" 1>&2
+         $echo "$help" 1>&2
+         exit 1
+       fi
 
-      case "$revision" in
-      0 | [1-9] | [1-9][0-9]*) ;;
-      *)
-        $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2
-        $echo "$modename: \`$vinfo' is not valid version information" 1>&2
-        exit 1
-        ;;
-      esac
+       current="$2"
+       revision="$3"
+       age="$4"
 
-      case "$age" in
-      0 | [1-9] | [1-9][0-9]*) ;;
-      *)
-        $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2
-        $echo "$modename: \`$vinfo' is not valid version information" 1>&2
-        exit 1
-        ;;
-      esac
+       # Check that each of the things are valid numbers.
+       case "$current" in
+       0 | [1-9] | [1-9][0-9]*) ;;
+       *)
+         $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2
+         $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+         exit 1
+         ;;
+       esac
 
-      if test $age -gt $current; then
-        $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2
-        $echo "$modename: \`$vinfo' is not valid version information" 1>&2
-        exit 1
-      fi
+       case "$revision" in
+       0 | [1-9] | [1-9][0-9]*) ;;
+       *)
+         $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2
+         $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+         exit 1
+         ;;
+       esac
 
-      # Calculate the version variables.
-      version_vars="version_type current age revision"
-      case "$version_type" in
-      none) ;;
+       case "$age" in
+       0 | [1-9] | [1-9][0-9]*) ;;
+       *)
+         $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2
+         $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+         exit 1
+         ;;
+       esac
 
-      linux)
-        version_vars="$version_vars major versuffix"
-        major=`expr $current - $age`
-        versuffix="$major.$age.$revision"
-        ;;
+       if test $age -gt $current; then
+         $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2
+         $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+         exit 1
+       fi
 
-      osf)
-        version_vars="$version_vars versuffix verstring"
-        major=`expr $current - $age`
-        versuffix="$current.$age.$revision"
-        verstring="$versuffix"
-
-        # Add in all the interfaces that we are compatible with.
-        loop=$age
-        while test $loop != 0; do
-          iface=`expr $current - $loop`
-          loop=`expr $loop - 1`
-          verstring="$verstring:${iface}.0"
-        done
+       # Calculate the version variables.
+       major=
+       versuffix=
+       verstring=
+       case "$version_type" in
+       none) ;;
 
-        # Make executables depend on our current version.
-        verstring="$verstring:${current}.0"
-        ;;
+       linux)
+         major=.`expr $current - $age`
+         versuffix="$major.$age.$revision"
+         ;;
 
-      sunos)
-        version_vars="$version_vars major versuffix"
-        major="$current"
-        versuffix="$current.$revision"
-        ;;
+       osf)
+         major=`expr $current - $age`
+         versuffix=".$current.$age.$revision"
+         verstring="$current.$age.$revision"
+
+         # Add in all the interfaces that we are compatible with.
+         loop=$age
+         while test $loop != 0; do
+           iface=`expr $current - $loop`
+           loop=`expr $loop - 1`
+           verstring="$verstring:${iface}.0"
+         done
+
+         # Make executables depend on our current version.
+         verstring="$verstring:${current}.0"
+         ;;
 
-      *)
-        $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
+       sunos)
+         major=".$current"
+         versuffix=".$current.$revision"
+         ;;
 
-      # 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}.*
-      else
-        $show "$mkdir $objdir"
-        $run $mkdir $objdir
-       status=$?
-       if test $status -eq 0 || test -d $objdir; then :
+       freebsd-aout)
+         major=".$current"
+         versuffix=".$current.$revision";
+         ;;
+
+       freebsd-elf)
+         major=".$current"
+         versuffix=".$current";
+         ;;
+
+       windows)
+         # Like Linux, but with '-' rather than '.', since we only
+         # want one extension on Windows 95.
+         major=`expr $current - $age`
+         versuffix="-$major-$age-$revision"
+         ;;
+
+       *)
+         $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
+
+       # 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
+
+       # 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
-         exit $status
+         # 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"
       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
-        fi
+      # Create the output directory, or remove our outputs if we need to.
+      if test -d $output_objdir; then
+        $show "${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.*"
+       $run ${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.*
       else
-        # Don't allow undefined symbols.
-        allow_undefined_flag="$no_undefined_flag"
+        $show "$mkdir $output_objdir"
+        $run $mkdir $output_objdir
+        status=$?
+        if test $status -ne 0 && test ! -d $output_objdir; then
+          exit $status
+        fi
       fi
 
-      # Add libc to deplibs on all systems.
-      dependency_libs="$deplibs"
-      deplibs="$deplibs -lc"
+      # Now set the variables for building old libraries.
+      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
+       oldlibs="$oldlibs $output_objdir/$libname.$libext"
+
+       # Transform .lo files to .o files.
+       oldobjs="$objs"`$echo "X$libobjs " | $Xsed -e 's/[^   ]*\.'${libext}' //g' -e "$los2o" -e 's/ $//g'`
+      fi
 
       if test "$build_libtool_libs" = yes; then
-        # Get the real and link names of the library.
-        library_names=`eval \\$echo \"$library_names_spec\"`
-        set dummy $library_names
-        realname="$2"
-        shift; shift
-
-        if test -n "$soname_spec"; then
-          soname=`eval \\$echo \"$soname_spec\"`
-        else
-          soname="$realname"
-        fi
+        # Transform deplibs into only deplibs that can be linked in shared.
+        ## Gordon: Do you check for the existence of the libraries in deplibs
+        ## on the system?  That should maybe be merged in here someplace....
+        ## Actually: I think test_compile and file_magic do this... file_regex
+        ## sorta does this. Only pas_all needs to be changed.  -Toshio
+        name_save=$name
+        libname_save=$libname
+        release_save=$release
+        versuffix_save=$versuffix
+        major_save=$major
+        # I'm not sure if I'm treating the release correctly.  I think
+        # release should show up in the -l (ie -lgmp5) so we don't want to
+        # add it in twice.  Is that correct?
+        release=""
+        versuffix=""
+        major=""
+        newdeplibs=
+        case "$check_shared_deplibs_method" in
+        pass_all)  
+          newdeplibs=$deplibs 
+                    ;; # Don't check for shared/static.  Everything works.
+                       # This might be a little naive.  We might want to check
+                       # whether the library exists or not.  But this is on
+                       # osf3 & osf4 and I'm not really sure... Just
+                       # implementing what was already the behaviour.
+        test_compile)
+          # This code stresses the "libraries are programs" paradigm to its
+          # limits. Maybe even breaks it.  We compile a program, linking it
+          # against the deplibs as a proxy for the library.  Then we can check
+          # whether they linked in statically or dynamically with ldd.
+          $rm conftest.c
+          cat > conftest.c <<EOF
+          int main() { return 0; }
+EOF
+          $rm a.out
+          $C_compiler conftest.c $deplibs
+          if test $? -eq 0 ; then
+            ldd_output=`ldd a.out`
+            for i in $deplibs; do
+              name="`expr $i : '-l\(.*\)'`"
+              # If $name is empty we are operating on a -L argument.
+              if test "$name" != "" ; then
+                libname=`eval \\$echo \"$libname_spec\"`
+                deplib_matches=`eval \\$echo \"$library_names_spec\"`
+                set dummy $deplib_matches
+                deplib_match=$2
+                if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+                  newdeplibs="$newdeplibs $i"
+                else
+                  echo
+                  echo "*** Warning: This library needs some functionality provided by $i."
+                  echo "*** I have the capability to make that library automatically link in when"
+                  echo "*** you link to this library.  But I can only do this if you have a"
+                  echo "*** shared version of the library, which you do not appear to have."
+                fi
+              else
+                newdeplibs="$newdeplibs $i"
+              fi
+            done
+          else
+            # Error occured in the first compile.  Let's try to salvage the situation:
+            # Compile a seperate program for each library.
+            for i in $deplibs; do
+              name="`expr $i : '-l\(.*\)'`"
+             # If $name is empty we are operating on a -L argument.
+              if test "$name" != "" ; then
+                $rm a.out
+                $C_compiler conftest.c $i
+                # Did it work?
+                if test $? -eq 0 ; then
+                  ldd_output=`ldd a.out`
+                    libname=`eval \\$echo \"$libname_spec\"`
+                    deplib_matches=`eval \\$echo \"$library_names_spec\"`
+                    set dummy $deplib_matches
+                    deplib_match=$2
+                    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+                      newdeplibs="$newdeplibs $i"
+                    else
+                      echo
+                      echo "*** Warning: This library needs some functionality provided by $i."
+                      echo "*** I have the capability to make that library automatically link in when"
+                      echo "*** you link to this library.  But I can only do this if you have a"
+                      echo "*** shared version of the library, which you do not appear to have."
+                    fi
+                else
+                  echo
+                  echo "*** Warning!  Library $i is needed by this library but I was not able to"
+                  echo "***  make it link in!  You will probably need to install it or some"
+                  echo "*** library that it depends on before this library will be fully"
+                  echo "*** functional.  Installing it before continuing would be even better."
+                fi
+              else
+                newdeplibs="$newdeplibs $i"
+              fi
+            done
+          fi
+          deplibs=$newdeplibs
+          ;;
+        file_magic* | file_regex)
+          set dummy $check_shared_deplibs_method
+          file_magic_regex="`expr \"$check_shared_deplibs_method\" : \"$2\(.*\)\"`"
+          for a_deplib in $deplibs; do
+            name="`expr $a_deplib : '-l\(.*\)'`"
+            # If $name is empty we are operating on a -L argument.
+            if test "$name" != "" ; then
+              libname=`eval \\$echo \"$libname_spec\"`
+              case "$check_shared_deplibs_method" in
+                file_magic*)
+                  for i in $lib_search_path; do
+                   # This needs to be more general than file_regex in order to
+                   # catch things like glibc on linux.  Maybe file_regex
+                   # should be more general as well, but maybe not.  Since
+                   # library names are supposed to conform to
+                   # library_name_spec, I think file_regex should remain
+                   # strict.  What do you think Gordon?
+                    potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
+                    for potent_lib in $potential_libs; do
+
+                      if (file "$potent_lib" | sed '11,$d' | egrep "$file_magic_regex") > /dev/null ; then
+                        newdeplibs="$newdeplibs $a_deplib"
+                        a_deplib=""
+                        break 2
+                      fi
+                    done
+                  done
+                  ;;
+                file_regex)
+                  deplib_matches=`eval \\$echo \"$library_names_spec\"`
+                  set dummy $deplib_matches
+                  deplib_match=$2
+                  for i in $lib_search_path; do
+                    potential_libs=`ls $i/$deplib_match* 2>/dev/null`
+                    if test "$potential_libs" != "" ; then
+                      newdeplibs="$newdeplibs $a_deplib"
+                      a_deplib=""
+                      break
+                    fi
+                  done
+                  ;;
+              esac
+              if test "$a_deplib" != "" ; then
+                echo
+                echo "*** Warning: This library needs some functionality provided by $a_deplib."
+                echo "*** I have the capability to make that library automatically link in when"
+                echo "*** you link to this library.  But I can only do this if you have a"
+                echo "*** shared version of the library, which you do not appear to have."
+              fi
+            else
+              # Add a -L argument.
+              newdeplibs="$newdeplibs $a_deplib"
+            fi
+          done # Gone through all deplibs.
+          ;;
+        none | *)  deplibs="" ;;
+        esac
+        versuffix=$versuffix_save
+        major=$major_save
+        release=$release_save
+        libname=$libname_save
+        name=$name_save
+        deplibs=$newdeplibs
+        # Done checking deplibs!
+       # 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="$output_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.
-        cmds=`eval \\$echo \"$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"
+       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 $?
 
-        # Create links to the real library.
-        for linkname in $linknames; do
-          $show "(cd $objdir && $LN_S $realname $linkname)"
-          $run eval '(cd $objdir && $LN_S $realname $linkname)' || exit $?
-        done
+           libobjs="$libobjs `echo $xdir/*`"
+         done
+       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
+       # Do each of the archive commands.
+       if test -n "$export_symbols" && test -n "$archive_sym_cmds"; then
+         eval cmds=\"$archive_sym_cmds\"
+       else
+         eval cmds=\"$archive_cmds\"
+       fi
+       IFS="${IFS=     }"; save_ifs="$IFS"; IFS='~'
+       for cmd in $cmds; do
+         IFS="$save_ifs"
+         $show "$cmd"
+         $run eval "$cmd" || exit $?
+       done
+       IFS="$save_ifs"
 
-      # Now set the variables for building old libraries.
-      oldlib="$objdir/$libname.a"
+       # Create links to the real library.
+       for linkname in $linknames; do
+         if test "$realname" != "$linkname"; then
+           $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)"
+           $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $?
+         fi
+       done
+
+       # If -module or -export-dynamic was specified, set the dlname.
+       if test "$module" = yes || test "$export_dynamic" = yes; then
+         # On all known operating systems, these are identical.
+         dlname="$soname"
+       fi
+      fi
       ;;
 
-    *.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
@@ -1089,7 +1616,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=
@@ -1101,11 +1628,11 @@ 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/[^       ]*\.'${libext}' //g' -e 's/[^       ]*\.lib //g' -e "$los2o" -e 's/ $//g'`
 
       output="$obj"
-      cmds=`eval \\$echo \"$reload_cmds\"`
-      IFS="${IFS=      }"; save_ifs="$IFS"; IFS=';'
+      eval cmds=\"$reload_cmds\"
+      IFS="${IFS=      }"; save_ifs="$IFS"; IFS='~'
       for cmd in $cmds; do
         IFS="$save_ifs"
         $show "$cmd"
@@ -1128,8 +1655,8 @@ if test -z "$show_help"; then
         # Only do commands if we really have different PIC objects.
         reload_objs="$libobjs"
         output="$libobj"
-        cmds=`eval \\$echo \"$reload_cmds\"`
-        IFS="${IFS=    }"; save_ifs="$IFS"; IFS=';'
+        eval cmds=\"$reload_cmds\"
+        IFS="${IFS=    }"; save_ifs="$IFS"; IFS='~'
         for cmd in $cmds; do
           IFS="$save_ifs"
           $show "$cmd"
@@ -1139,19 +1666,20 @@ 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
       ;;
 
+    # Anything else should be a program.
     *)
       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
@@ -1177,7 +1705,7 @@ if test -z "$show_help"; then
             fi
 
             if test -n "$libdir"; then
-              flag=`eval \\$echo \"$hardcode_libdir_flag_spec\"`
+              eval flag=\"$hardcode_libdir_flag_spec\"
 
               compile_command="$compile_command $flag"
               finalize_command="$finalize_command $flag"
@@ -1197,65 +1725,54 @@ if test -z "$show_help"; then
        finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@HARDCODE_LIBDIRS@%$hardcode_libdirs%g"`
       fi
 
+      output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
+      if test "X$output_objdir" = "X$output"; then
+        output_objdir="$objdir"
+      else
+        output_objdir="$output_objdir/$objdir"
+      fi
+
       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
-        dlsyms="${output}S.c"
+        dlsyms="${outputname}S.c"
       else
         dlsyms=
       fi
 
       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/ $//'`
+        case "$dlsyms" in
+        "") ;;
+        *.c)
+          if test -z "$export_symbols"; then
+            # Add our own program objects to the preloaded list.
+            dlprefiles=`$echo "X$objs$dlprefiles " | $Xsed -e "$los2o" -e 's/ $//'`
+          fi
 
-       # Discover the nlist of each of the dlfiles.
-        nlist="$objdir/${output}.nm"
+          # Discover the nlist of each of the dlfiles.
+          nlist="$objdir/${output}.nm"
 
-       if test -d $objdir; then
-         $show "$rm $nlist ${nlist}T"
-         $run $rm "$nlist" "${nlist}T"
-       else
-         $show "$mkdir $objdir"
-         $run $mkdir $objdir
-         status=$?
-         if test $status -eq 0 || test -d $objdir; then :
+         if test -d $objdir; then
+           $show "$rm $nlist ${nlist}T"
+           $run $rm "$nlist" "${nlist}T"
          else
-           exit $status
+           $show "$mkdir $objdir"
+           $run $mkdir $objdir
+           status=$?
+           if test $status -ne 0 && test ! -d $objdir; then
+             exit $status
+           fi
          fi
-       fi
-
-        for arg in $dlprefiles; do
-         $show "extracting global C symbols from \`$arg'"
-         $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
-        done
 
-        # Parse the name list into a source file.
-        $show "creating $objdir/$dlsyms"
-        if test -z "$run"; then
-         # Make sure we at least have an empty file.
-         test -f "$nlist" || : > "$nlist"
-
-         # Try sorting and uniquifying the output.
-         if sort "$nlist" | uniq > "$nlist"T; then
-           mv -f "$nlist"T "$nlist"
-           wcout=`wc "$nlist" 2>/dev/null`
-           count=`echo "X$wcout" | $Xsed -e 's/^[      ]*\([0-9][0-9]*\).*$/\1/'`
-           (test "$count" -ge 0) 2>/dev/null || count=-1
-         else
-           $rm "$nlist"T
-           count=-1
-         fi
+          # Parse the name list into a source file.
+          $show "creating $objdir/$dlsyms"
 
-         case "$dlsyms" in
-         "") ;;
-         *.c)
-           $echo > "$objdir/$dlsyms" \
-"/* $dlsyms - symbol resolution table for \`$output' dlsym emulation. */
+          $echo > "$objdir/$dlsyms" "\
+/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */
 /* Generated by $PROGRAM - GNU $PACKAGE $VERSION */
 
 #ifdef __cplusplus
@@ -1263,21 +1780,39 @@ extern \"C\" {
 #endif
 
 /* Prevent the only kind of declaration conflicts we can make. */
-#define dld_preloaded_symbol_count some_other_symbol
 #define dld_preloaded_symbols some_other_symbol
 
-/* External symbol declarations for the compiler. */"
+/* External symbol declarations for the compiler. */\
+"
 
-           if test -f "$nlist"; then
-             sed -e 's/^.* \(.*\)$/extern char \1;/' < "$nlist" >> "$objdir/$dlsyms"
+          if test -n "$export_symbols"; then
+           sed -e 's/^\(.*\)/\1 \1/' < "$export_symbols" > "$nlist"
+          fi
+
+          for arg in $dlprefiles; do
+           $show "extracting global C symbols from \`$arg'"
+           $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
+          done
+
+          if test -z "$run"; then
+           # Make sure we at least have an empty file.
+           test -f "$nlist" || : > "$nlist"
+
+           # Try sorting and uniquifying the output.
+           if sort "$nlist" | uniq > "$nlist"T; then
+             mv -f "$nlist"T "$nlist"
            else
-             echo '/* NONE */' >> "$objdir/$dlsyms"
-EOF
+             $rm "$nlist"T
            fi
 
-           $echo >> "$objdir/$dlsyms" \
-"
-#undef dld_preloaded_symbol_count
+           if test -f "$nlist"; then
+             sed -e 's/^.* \(.*\)$/extern char \1;/' < "$nlist" >> "$output_objdir/$dlsyms"
+           else
+             echo '/* NONE */' >> "$output_objdir/$dlsyms"
+           fi
+
+           $echo >> "$output_objdir/$dlsyms" "\
+
 #undef dld_preloaded_symbols
 
 #if defined (__STDC__) && __STDC__
@@ -1286,44 +1821,62 @@ EOF
 # define __ptr_t char *
 #endif
 
-/* The number of symbols in dld_preloaded_symbols, -1 if unsorted. */
-int dld_preloaded_symbol_count = $count;
-
 /* The mapping between symbol names and symbols. */
 struct {
   char *name;
   __ptr_t address;
 }
 dld_preloaded_symbols[] =
-{"
+{\
+"
+
+            if test -n "$export_symbols"; then
+              echo >> "$objdir/$dlsyms" "\
+  {\"${output}\", (__ptr_t) 0},"
+             sed 's/^\(.*\)/  {"\1", (__ptr_t) \&\1},/' < "$export_symbols" >> "$objdir/$dlsyms"
+            fi
+
+            for arg in $dlprefiles; do
+             name=`echo "$arg" | sed -e 's%^.*/%%'`
+              echo >> "$objdir/$dlsyms" "\
+  {\"$name\", (__ptr_t) 0},"
+             eval "$NM $arg | $global_symbol_pipe > '$nlist'"
+
+             if test -f "$nlist"; then
+               sed 's/^\(.*\) \(.*\)$/  {"\1", (__ptr_t) \&\2},/' < "$nlist" >> "$objdir/$dlsyms"
+             else
+               echo '/* NONE */' >> "$output_objdir/$dlsyms"
+             fi
+
+            done
 
            if test -f "$nlist"; then
-             sed 's/^\(.*\) \(.*\)$/  {"\1", (__ptr_t) \&\2},/' < "$nlist" >> "$objdir/$dlsyms"
+             sed 's/^\(.*\) \(.*\)$/  {"\1", (__ptr_t) \&\2},/' < "$nlist" >> "$output_objdir/$dlsyms"
            fi
 
-           $echo >> "$objdir/$dlsyms" \
-"  {0, (__ptr_t) 0}
+           $echo >> "$output_objdir/$dlsyms" "\
+  {0, (__ptr_t) 0}
 };
 
 #ifdef __cplusplus
 }
-#endif"
-           ;;
-
-         *)
-           $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
-           exit 1
-           ;;
-         esac
-        fi
+#endif\
+"
+          fi
 
-        # Now compile the dynamic symbol file.
-        $show "(cd $objdir && $CC -c$no_builtin_flag \"$dlsyms\")"
-        $run eval '(cd $objdir && $CC -c$no_builtin_flag "$dlsyms")' || exit $?
+          # Now compile the dynamic symbol file.
+          $show "(cd $objdir && $C_compiler -c$no_builtin_flag \"$dlsyms\")"
+          $run eval '(cd $objdir && $C_compiler -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%"`
+          # Transform the symbol file into the correct name.
+          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}%"`
+         ;;
+        *)
+          $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
+          exit 1
+          ;;
+        esac
       elif test "$export_dynamic" != yes; then
         test -n "$dlfiles$dlprefiles" && $echo "$modename: warning: \`-dlopen' and \`-dlpreopen' are ignored without \`-export-dynamic'" 1>&2
       else
@@ -1349,17 +1902,15 @@ dld_preloaded_symbols[] =
       fi
 
       # Replace the output file specification.
-      compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$objdir/$output"'%g'`
-      finalize_command=`$echo "X$finalize_command" | $Xsed -e 's%@OUTPUT@%'"$objdir/$output"'T%g'`
+      compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
+      finalize_command=`$echo "X$finalize_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'T%g'`
 
       # Create the binary in the object directory, then wrap it.
-      if test -d $objdir; then :
-      else
-        $show "$mkdir $objdir"
-       $run $mkdir $objdir
+      if test ! -d $output_objdir; then
+        $show "$mkdir $output_objdir"
+       $run $mkdir $output_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
@@ -1369,7 +1920,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:"
             ;;
@@ -1402,13 +1953,11 @@ dld_preloaded_symbols[] =
         finalize_command="$runpath_var=\"$rpath\$$runpath_var\" $finalize_command"
       fi
 
-      case "$hardcode_action" in
-      relink)
+      if test "$hardcode_action" = relink; then
         # AGH! Flame the AIX and HP-UX people for me, will ya?
-        $echo "$modename: warning: using a buggy system linker" 1>&2
-        $echo "$modename: relinking will be required before \`$output' can be installed" 1>&2
-        ;;
-      esac
+        $echo "$modename: warning: this platform doesn\'t like uninstalled shared libraries" 1>&2
+        $echo "$modename: \`$output' will be relinked during installation" 1>&2
+      fi
 
       $show "$compile_command"
       $run eval "$compile_command" || exit $?
@@ -1420,23 +1969,31 @@ dld_preloaded_symbols[] =
       finalize_command=`$echo "X$finalize_command" | $Xsed -e "$sed_quote_subst"`
 
       # Quote $echo for shipping.
-      qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"`
+      if test "X$echo" = "X$SHELL $0 --fallback-echo"; then
+       case "$0" in
+       /* | [A-Za-z]:[/\\]*) qecho="$SHELL $0 --fallback-echo";;
+       *) qecho="$SHELL `pwd`/$0 --fallback-echo";;
+       esac
+       qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"`
+      else
+        qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"`
+      fi
 
       # Only actually do things if our run command is non-null.
       if test -z "$run"; then
         $rm $output
         trap "$rm $output; exit 1" 1 2 15
 
-        $echo > $output \
-"#! /bin/sh
+        $echo > $output "\
+#! $SHELL
 
-# $output - temporary wrapper script for $objdir/$output
-# Generated by ltmain.sh - GNU $PACKAGE $VERSION
+# $output - temporary wrapper script for $objdir/$outputname
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION
 #
 # The $output program cannot be directly executed until all the libtool
 # libraries that it depends on are installed.
 #
-# This wrapper script should never be moved out of \``pwd`'.
+# This wrapper script should never be moved out of the build directory.
 # If it is, it will not operate correctly.
 
 # Sed substitution that helps us do robust quoting.  It backslashifies
@@ -1452,14 +2009,26 @@ if test \"\${CDPATH+set}\" = set; then CDPATH=; export CDPATH; fi
 if test \"\$libtool_install_magic\" = \"$magic\"; then
   # install mode needs the following variables:
   link_against_libtool_libs='$link_against_libtool_libs'
-  finalize_command=\"$finalize_command\"
+  finalize_command=\"cd `pwd | sed -e $sed_quote_subst`; $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\"
-  fi
+    # 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 "\
 
   # Find the directory that this script lives in.
   thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
@@ -1473,7 +2042,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
@@ -1487,14 +2056,14 @@ else
   test -n \"\$absdir\" && thisdir=\"\$absdir\"
 
   progdir=\"\$thisdir/$objdir\"
-  program='$output'
+  program='$outputname'
 
   if test -f \"\$progdir/\$program\"; then"
 
         # Export our shlibpath_var if we have one.
         if test -n "$shlibpath_var" && test -n "$temp_rpath"; then
-          $echo >> $output \
-"    # Add our own library path to $shlibpath_var
+          $echo >> $output "\
+    # Add our own library path to $shlibpath_var
     $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
 
     # Some systems cannot cope with colon-terminated $shlibpath_var
@@ -1504,24 +2073,17 @@ else
 "
         fi
 
-        echo >> $output \
-"    if test \"\$libtool_execute_magic\" != \"$magic\"; then
+        $echo >> $output "\
+    if test \"\$libtool_execute_magic\" != \"$magic\"; then
       # Run the actual program with our arguments.
-      args=
-      for arg
-      do
-        # Quote arguments (to preserve shell metacharacters).
-       arg=\`\$echo \"X\$arg\" | \$Xsed -e \"\$sed_quote_subst\"\`
-        args=\"\$args \\\"\$arg\\\"\"
-      done
 
       # Export the path to the program.
       PATH=\"\$progdir:\$PATH\"
       export PATH
 
-      eval \"exec \$program \$args\"
+      exec \$program \${1+\"\$@\"}
 
-      \$echo \"\$0: cannot exec \$program \$args\"
+      \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\"
       exit 1
     fi
   else
@@ -1531,7 +2093,8 @@ else
     echo \"See the $PACKAGE documentation for more information.\" 1>&2
     exit 1
   fi
-fi"
+fi\
+"
         chmod +x $output
       fi
       exit 0
@@ -1539,38 +2102,70 @@ 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/[^   ]*\.'${libext}' //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
-       cmds=`eval \\$echo \"$old_archive_from_new_cmds\"`
+       eval cmds=\"$old_archive_from_new_cmds\"
       else
-       cmds=`eval \\$echo \"$old_archive_cmds\"`
+       eval cmds=\"$old_archive_cmds\"
       fi
-      IFS="${IFS=      }"; save_ifs="$IFS"; IFS=';'
+      IFS="${IFS=      }"; save_ifs="$IFS"; IFS='~'
       for cmd in $cmds; do
         IFS="$save_ifs"
         $show "$cmd"
         $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.
       if test -z "$run"; then
-        echo > $output \
-"# $output - a libtool library file
-# Generated by ltmain.sh - GNU $PACKAGE $VERSION
+        $echo > $output "\
+# $output - a libtool library file
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION
 
 # The name that we can dlopen(3).
 dlname='$dlname'
@@ -1589,14 +2184,18 @@ current=$current
 age=$age
 revision=$revision
 
+# Is this an already installed library?
+installed=no
+
 # Directory that this library needs to be installed in:
-libdir='$install_libdir'"
+libdir='$install_libdir'\
+"
       fi
 
       # 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
+      $show "(cd $output_objdir && $LN_S ../$outputname $outputname)"
+      $run eval "(cd $output_objdir && $LN_S ../$outputname $outputname)" || exit $?
       ;;
     esac
     exit 0
@@ -1606,9 +2205,9 @@ libdir='$install_libdir'"
   install)
     modename="$modename: install"
 
-    # There may be an optional /bin/sh argument at the beginning of
+    # 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
@@ -1640,7 +2239,7 @@ libdir='$install_libdir'"
     opts=
     prev=
     install_type=
-    isdir=
+    isdir=no
     stripme=
     for arg
     do
@@ -1710,7 +2309,7 @@ libdir='$install_libdir'"
 
     # Check to see that the destination is a directory.
     test -d "$dest" && isdir=yes
-    if test -n "$isdir"; then
+    if test "$isdir" = yes; then
       destdir="$dest"
       destname=
     else
@@ -1727,7 +2326,7 @@ libdir='$install_libdir'"
       fi
     fi
     case "$destdir" in
-    /* | [A-Za-z]:\\*) ;;
+    /* | [A-Za-z]:[/\\]*) ;;
     *)
       for file in $files; do
         case "$file" in
@@ -1753,14 +2352,14 @@ libdir='$install_libdir'"
 
       # Do each installation.
       case "$file" in
-      *.a)
+      *.a | *.lib)
         # Do the static libraries later.
         staticlibs="$staticlibs $file"
         ;;
 
       *.la)
         # Check to see that this really is a libtool archive.
-        if (sed -e '2q' $file | egrep '^# Generated by ltmain\.sh') >/dev/null 2>&1; then :
+        if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
         else
           $echo "$modename: \`$file' is not a valid libtool archive" 1>&2
           $echo "$help" 1>&2
@@ -1806,21 +2405,14 @@ libdir='$install_libdir'"
           test "X$dlname" = "X$realname" && dlname=
 
           if test $# -gt 0; then
-            # Delete the old symlinks.
-            rmcmd="$rm"
-            for linkname
-            do
-              rmcmd="$rmcmd $destdir/$linkname"
-            done
-            $show "$rmcmd"
-            $run $rmcmd
-
-            # ... and create new ones.
+            # Delete the old symlinks, 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 "$linkname" != "$realname"; then
+               $show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
+               $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
+             fi
             done
           fi
 
@@ -1832,8 +2424,8 @@ libdir='$install_libdir'"
 
           # Do each command in the postinstall commands.
           lib="$destdir/$realname"
-          cmds=`eval \\$echo \"$postinstall_cmds\"`
-          IFS="${IFS=  }"; save_ifs="$IFS"; IFS=';'
+          eval cmds=\"$postinstall_cmds\"
+          IFS="${IFS=  }"; save_ifs="$IFS"; IFS='~'
           for cmd in $cmds; do
             IFS="$save_ifs"
             $show "$cmd"
@@ -1844,8 +2436,14 @@ libdir='$install_libdir'"
 
         # Install the pseudo-library for information purposes.
         name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
-        $show "$install_prog $file $destdir/$name"
-        $run eval "$install_prog $file $destdir/$name" || exit $?
+       instname="$dir/$name"i
+       $show "Creating $instname"
+       $rm "$instname"
+       sed 's/^installed=no$/installed=yes/' "$file" > "$instname"
+        $show "$install_prog $instname $destdir/$name"
+        $run eval "$install_prog $instname $destdir/$name" || exit $?
+       $show "$rm $instname"
+       $rm "$instname"
 
         # Maybe install the static library, too.
         test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
@@ -1865,9 +2463,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=
           ;;
@@ -1887,7 +2485,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 $?
@@ -1896,8 +2494,16 @@ libdir='$install_libdir'"
         ;;
 
       *)
+        # Figure out destination file name, if it wasn't already specified.
+        if test -n "$destname"; then
+          destfile="$destdir/$destname"
+        else
+          destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+          destfile="$destdir/$destfile"
+        fi
+
         # Do a test to see if this is really a libtool program.
-        if (sed -e '4q' $file | egrep '^# Generated by ltmain\.sh') >/dev/null 2>&1; then
+        if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
           link_against_libtool_libs=
           finalize_command=
 
@@ -1925,10 +2531,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
@@ -1953,8 +2556,8 @@ libdir='$install_libdir'"
           fi
         fi
 
-        $show "$install_prog$stripme $file $dest"
-        $run eval "$install_prog\$stripme \$file \$dest" || exit $?
+        $show "$install_prog$stripme $file $destfile"
+        $run eval "$install_prog\$stripme \$file \$destfile" || exit $?
         ;;
       esac
     done
@@ -1969,8 +2572,8 @@ libdir='$install_libdir'"
       $run eval "$install_prog \$file \$oldlib" || exit $?
 
       # Do each command in the postinstall commands.
-      cmds=`eval \\$echo \"$old_postinstall_cmds\"`
-      IFS="${IFS=      }"; save_ifs="$IFS"; IFS=';'
+      eval cmds=\"$old_postinstall_cmds\"
+      IFS="${IFS=      }"; save_ifs="$IFS"; IFS='~'
       for cmd in $cmds; do
         IFS="$save_ifs"
         $show "$cmd"
@@ -1997,6 +2600,7 @@ libdir='$install_libdir'"
   finish)
     modename="$modename: finish"
     libdirs="$nonopt"
+    admincmds=
 
     if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
       for dir
@@ -2007,24 +2611,29 @@ libdir='$install_libdir'"
       for libdir in $libdirs; do
        if test -n "$finish_cmds"; then
          # Do each command in the finish commands.
-         cmds=`eval \\$echo \"$finish_cmds\"`
-          IFS="${IFS=  }"; save_ifs="$IFS"; IFS=';'
+         eval cmds=\"$finish_cmds\"
+          IFS="${IFS=  }"; save_ifs="$IFS"; IFS='~'
           for cmd in $cmds; do
             IFS="$save_ifs"
             $show "$cmd"
-            $run eval "$cmd"
+            $run eval "$cmd" || admincmds="$admincmds
+       $cmd"
           done
           IFS="$save_ifs"
        fi
        if test -n "$finish_eval"; then
          # Do the single finish_eval.
-         cmds=`eval \\$echo \"$finish_eval\"`
-         $run eval "$cmds"
+         eval cmds=\"$finish_eval\"
+         $run eval "$cmds" || admincmds="$admincmds
+       $cmds"
        fi
       done
     fi
 
-    echo "------------------------------------------------------------------------------"
+    # Exit here if they wanted silent mode.
+    test "$show" = : && exit 0
+
+    echo "----------------------------------------------------------------------"
     echo "Libraries have been installed in:"
     for libdir in $libdirs; do
       echo "   $libdir"
@@ -2033,7 +2642,7 @@ libdir='$install_libdir'"
     echo "To link against installed libraries in a given directory, LIBDIR,"
     echo "you must use the \`-LLIBDIR' flag during linking."
     echo
-    echo " You will also need to do one of the following:"
+    echo " You will also need to do at least one of the following:"
     if test -n "$shlibpath_var"; then
       echo "   - add LIBDIR to the \`$shlibpath_var' environment variable"
       echo "     during execution"
@@ -2044,17 +2653,20 @@ libdir='$install_libdir'"
     fi
     if test -n "$hardcode_libdir_flag_spec"; then
       libdir=LIBDIR
-      flag=`eval \\$echo \"$hardcode_libdir_flag_spec\"`
+      eval flag=\"$hardcode_libdir_flag_spec\"
 
       echo "   - use the \`$flag' linker flag"
     fi
+    if test -n "$admincmds"; then
+      echo "   - have your system administrator run these commands:$admincmds"
+    fi
     if test -f /etc/ld.so.conf; then
       echo "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
     fi
     echo
     echo "See any operating system documentation about shared libraries for"
     echo "more information, such as the ld(1) and ld.so(8) manual pages."
-    echo "------------------------------------------------------------------------------"
+    echo "----------------------------------------------------------------------"
     exit 0
     ;;
 
@@ -2072,8 +2684,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
@@ -2083,7 +2694,7 @@ libdir='$install_libdir'"
       case "$file" in
       *.la)
         # Check to see that this really is a libtool archive.
-        if (sed -e '2q' $file | egrep '^# Generated by ltmain\.sh') >/dev/null 2>&1; then :
+        if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
         else
           $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
           $echo "$help" 1>&2
@@ -2154,7 +2765,7 @@ libdir='$install_libdir'"
       -*) ;;
       *)
         # Do a test to see if this is really a libtool program.
-        if (sed -e '4q' $file | egrep '^# Generated by ltmain\.sh') >/dev/null 2>&1; then
+        if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
          # If there is no directory component, then add one.
          case "$file" in
          */* | *\\*) . $file ;;
@@ -2175,6 +2786,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"
 
@@ -2219,7 +2838,7 @@ libdir='$install_libdir'"
       case "$name" in
       *.la)
         # Possibly a libtool archive, so verify it.
-        if (sed -e '2q' $file | egrep '^# Generated by ltmain\.sh') >/dev/null 2>&1; then
+        if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
           . $dir/$name
 
           # Delete the libtool libraries and symlinks.
@@ -2235,8 +2854,8 @@ libdir='$install_libdir'"
 
          if test -n "$library_names"; then
            # Do each command in the postuninstall commands.
-           cmds=`eval \\$echo \"$postuninstall_cmds\"`
-           IFS="${IFS=         }"; save_ifs="$IFS"; IFS=';'
+           eval cmds=\"$postuninstall_cmds\"
+           IFS="${IFS=         }"; save_ifs="$IFS"; IFS='~'
            for cmd in $cmds; do
              IFS="$save_ifs"
              $show "$cmd"
@@ -2247,8 +2866,8 @@ libdir='$install_libdir'"
 
           if test -n "$old_library"; then
            # Do each command in the old_postuninstall commands.
-           cmds=`eval \\$echo \"$old_postuninstall_cmds\"`
-           IFS="${IFS=         }"; save_ifs="$IFS"; IFS=';'
+           eval cmds=\"$old_postuninstall_cmds\"
+           IFS="${IFS=         }"; save_ifs="$IFS"; IFS='~'
            for cmd in $cmds; do
              IFS="$save_ifs"
              $show "$cmd"
@@ -2263,7 +2882,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"
@@ -2298,8 +2917,10 @@ case "$mode" in
 
 Provide generalized library-building support services.
 
+    --config          show all configuration variables
+    --debug           enable verbose shell tracing
 -n, --dry-run         display commands without modifying any files
-    --features        display configuration information and exit
+    --features        display basic configuration information and exit
     --finish          same as \`--mode=finish'
     --help            display this help message and exit
     --mode=MODE       use operation mode MODE [default=inferred from MODE-ARGS]
@@ -2327,6 +2948,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.
 
@@ -2415,11 +3040,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)