* setf.scm: New file. Adds the new forms `setf!' and `setter'
[bpt/guile.git] / ltmain.sh
index 09bbad6..e9350b3 100644 (file)
--- a/ltmain.sh
+++ b/ltmain.sh
@@ -1,6 +1,7 @@
 # ltmain.sh - Provide generalized library-building support services.
-# Generated automatically from ltmain.sh.in by configure.
-# Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+# NOTE: Changing this file will not affect anything until you rerun ltconfig.
+#
+# Copyright (C) 1996-1998 Free Software Foundation, Inc.
 # Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
 #
 # This program is free software; you can redistribute it and/or modify
 # configuration script generated by Autoconf, you may include it under
 # the same distribution terms that you use for the rest of that program.
 
-echo=echo
-if test X`$echo '\t'` = 'X\t'; then :
-else
-  # The Solaris and AIX default echo program unquotes backslashes.
-  # This makes it impossible to quote backslashes using
-  #   echo "$something" | sed 's/\\/\\\\/g'
-  # So, we emulate echo with printf '%s\n'
-  echo='printf %s\\n'
-  if test X`$echo '\t'` = 'X\t'; then :
-  else
-    # Oops.  We have no working printf.  Try to find a not-so-buggy echo.
-    echo=echo
-    IFS="${IFS=        }"; save_ifs="$IFS"; IFS="${IFS}:"
-    save_PATH="$PATH"
-    PATH="$PATH":/usr/ucb
-    for dir in $PATH; do
-      if test -f $dir/echo && test X`$dir/echo '\t'` = 'X\t'; then
-        echo="$dir/echo"
-        break
-      fi
-    done
-    IFS="$save_ifs"
-    PATH="$save_PATH"
-  fi
-fi
-
 # The name of this program.
 progname=`$echo "$0" | sed 's%^.*/%%'`
+modename="$progname"
 
 # Constants.
 PROGRAM=ltmain.sh
 PACKAGE=libtool
-VERSION=1.0b
+VERSION=1.2
 
 default_mode=
 help="Try \`$progname --help' for more information."
 magic="%%%MAGIC variable%%%"
 mkdir="mkdir"
 mv="mv -f"
-objdir=.libs
 rm="rm -f"
 
 # Sed substitution that helps us do robust quoting.  It backslashifies
 # metacharacters that are still active within double-quoted strings.
-sed_quote_subst='s/\([\\"$]\)/\\\1/g'
+Xsed='sed -e s/^X//'
+sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
 
 # NLS nuisances.
 # Only set LANG and LC_ALL to C if already set.
@@ -76,15 +52,14 @@ 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
 
 if test "$LTCONFIG_VERSION" != "$VERSION"; then
-  $echo "$progname: ltconfig version \`$LTCONFIG_VERSION' does not match $PROGRAM version \`$VERSION'" 1>&2
-  $echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
+  echo "$modename: ltconfig version \`$LTCONFIG_VERSION' does not match $PROGRAM version \`$VERSION'" 1>&2
+  echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
   exit 1
 fi
 
-#
 if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
-  $echo "$progname: not configured to build any kind of library" 1>&2
-  $echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
+  echo "$modename: not configured to build any kind of library" 1>&2
+  echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
   exit 1
 fi
 
@@ -105,7 +80,7 @@ do
   shift
 
   case "$arg" in
-  -*=*) optarg=`$echo "$arg" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
+  -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;;
   *) optarg= ;;
   esac
 
@@ -132,7 +107,7 @@ do
     ;;
 
   --version)
-    $echo "$PROGRAM (GNU $PACKAGE) $VERSION"
+    echo "$PROGRAM (GNU $PACKAGE) $VERSION"
     exit 0
     ;;
 
@@ -141,16 +116,16 @@ do
     ;;
 
   --features)
-    $echo "host: $host"
+    echo "host: $host"
     if test "$build_libtool_libs" = yes; then
-      $echo "enable shared libraries"
+      echo "enable shared libraries"
     else
-      $echo "disable shared libraries"
+      echo "disable shared libraries"
     fi
     if test "$build_old_libs" = yes; then
-      $echo "enable static libraries"
+      echo "enable static libraries"
     else
-      $echo "disable static libraries"
+      echo "disable static libraries"
     fi
     exit 0
     ;;
@@ -170,7 +145,7 @@ do
     ;;
 
   -*)
-    $echo "$progname: unrecognized option \`$arg'" 1>&2
+    $echo "$modename: unrecognized option \`$arg'" 1>&2
     $echo "$help" 1>&2
     exit 1
     ;;
@@ -183,7 +158,7 @@ do
 done
 
 if test -n "$prevopt"; then
-  $echo "$progname: option \`$prevopt' requires an argument" 1>&2
+  $echo "$modename: option \`$prevopt' requires an argument" 1>&2
   $echo "$help" 1>&2
   exit 1
 fi
@@ -193,7 +168,7 @@ if test -z "$show_help"; then
   # Infer the operation mode.
   if test -z "$mode"; then
     case "$nonopt" in
-    *cc)
+    *cc | *++ | gcc* | *-gcc*)
       mode=link
       for arg
       do
@@ -208,7 +183,7 @@ if test -z "$show_help"; then
     *db | *dbx)
       mode=execute
       ;;
-    *install*|cp)
+    *install*|cp|mv)
       mode=install
       ;;
     *rm)
@@ -221,9 +196,9 @@ if test -z "$show_help"; then
       # Just use the default operation mode.
       if test -z "$mode"; then
         if test -n "$nonopt"; then
-          $echo "$progname: warning: cannot infer operation mode from \`$nonopt'" 1>&2
+          $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2
         else
-          $echo "$progname: warning: cannot infer operation mode without MODE-ARGS" 1>&2
+          $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2
         fi
       fi
       ;;
@@ -232,20 +207,20 @@ if test -z "$show_help"; then
 
   # Only execute mode is allowed to have -dlopen flags.
   if test -n "$execute_dlfiles" && test "$mode" != execute; then
-    $echo "$progname: unrecognized option \`-dlopen'" 1>&2
+    $echo "$modename: unrecognized option \`-dlopen'" 1>&2
     $echo "$help" 1>&2
     exit 1
   fi
 
   # Change the help message to a mode-specific one.
   generic_help="$help"
-  help="Try \`$progname --help --mode=$mode' for more information."
+  help="Try \`$modename --help --mode=$mode' for more information."
 
   # These modes are in order of execution frequency so that they run quickly.
   case "$mode" in
   # libtool compile mode
   compile)
-    progname="$progname: compile"
+    modename="$modename: compile"
     # Get the compilation command and the source file.
     base_compile=
     lastarg=
@@ -254,12 +229,20 @@ if test -z "$show_help"; then
 
     for arg
     do
-      # The only flag that cannot be specified is the output filename.
-      if test "X$arg" = "X-o"; then
-       $echo "$progname: you cannot specify the output filename with \`-o'" 1>&2
+      # 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
-      fi
+       ;;
+
+      -static)
+       build_libtool_libs=no
+       build_old_libs=yes
+       continue
+       ;;
+      esac
 
       # Accept the current argument as the source file.
       lastarg="$srcfile"
@@ -270,7 +253,7 @@ if test -z "$show_help"; then
       # Backslashify any backslashes, double quotes, and dollar signs.
       # These are the only characters that are still specially
       # interpreted inside of double-quoted scrings.
-      lastarg=`$echo "$lastarg" | sed "$sed_quote_subst"`
+      lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"`
 
       # Double-quote args containing other shell metacharacters.
       # Many Bourne shells cannot handle close brackets correctly in scan
@@ -290,11 +273,15 @@ if test -z "$show_help"; then
     done
 
     # Get the name of the library object.
-    libobj=`$echo "$srcfile" | sed -e 's%^.*/%%'`
+    libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'`
 
     # Recognize several different file suffixes.
-    xform='[cCFSfm]'
+    xform='[cCFSfms]'
     case "$libobj" in
+    *.ada) xform=ada ;;
+    *.adb) xform=adb ;;
+    *.ads) xform=ads ;;
+    *.asm) xform=asm ;;
     *.c++) xform=c++ ;;
     *.cc) xform=cc ;;
     *.cpp) xform=cpp ;;
@@ -303,18 +290,18 @@ if test -z "$show_help"; then
     *.for) xform=for ;;
     esac
 
-    libobj=`$echo "$libobj" | sed -e "s/\.$xform$/.lo/"`
+    libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
 
     case "$libobj" in
-    *.lo) obj=`$echo "$libobj" | sed -e 's/\.lo$/.o/'` ;;
+    *.lo) obj=`$echo "X$libobj" | $Xsed -e 's/\.lo$/.o/'` ;;
     *)
-      $echo "$progname: cannot determine name of library object from \`$srcfile'" 1>&2
+      $echo "$modename: cannot determine name of library object from \`$srcfile'" 1>&2
       exit 1
       ;;
     esac
 
     if test -z "$base_compile"; then
-      $echo "$progname: you must specify a compilation command" 1>&2
+      $echo "$modename: you must specify a compilation command" 1>&2
       $echo "$help" 1>&2
       exit 1
     fi
@@ -330,6 +317,9 @@ if test -z "$show_help"; then
 
     # 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.
+      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 :
@@ -364,11 +354,11 @@ if test -z "$show_help"; then
       fi
     fi
 
-    # Create an invalid libtool object if no PIC, so that we don't accidentally
-    # link it into a program.
+    # Create an invalid libtool object if no PIC, so that we do not
+    # accidentally link it into a program.
     if test "$build_libtool_libs" != yes; then
-      $show "$echo timestamp > $libobj"
-      $run eval "$echo timestamp > \$libobj" || exit $?
+      $show "echo timestamp > $libobj"
+      $run eval "echo timestamp > \$libobj" || exit $?
     fi
 
     exit 0
@@ -376,9 +366,9 @@ if test -z "$show_help"; then
 
   # libtool link mode
   link)
-    progname="$progname: link"
+    modename="$modename: link"
     CC="$nonopt"
-    allow_undefined=no
+    allow_undefined=yes
     compile_command="$CC"
     finalize_command="$CC"
 
@@ -389,14 +379,14 @@ if test -z "$show_help"; then
     dlprefiles=
     export_dynamic=no
     hardcode_libdirs=
-    install_libdir=
     libobjs=
     link_against_libtool_libs=
-    link_static=
     ltlibs=
     objs=
     prev=
     prevarg=
+    release=
+    rpath=
     perm_rpath=
     temp_rpath=
     vinfo=
@@ -405,20 +395,20 @@ if test -z "$show_help"; then
     for arg
     do
       case "$arg" in
-      -static)
-        if test "$build_libtool_libs" = yes; then
-         if test "$hardcode_direct" = unsupported && test -z "$link_static_flag"; then
-           $echo "$progname: warning: static linking is impossible in this configuration" 1>&2
-         else
-            build_libtool_libs=no
-         fi
+      -all-static | -static)
+        if test "X$arg" = "X-all-static" && test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
+           $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2
         fi
+        build_libtool_libs=no
        build_old_libs=yes
         break
         ;;
       esac
     done
 
+    # See if our shared archives depend on static archives.
+    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
+
     # Go through the arguments, transforming them on the way.
     for arg
     do
@@ -442,6 +432,16 @@ if test -z "$show_help"; then
             ;;
           esac
           ;;
+       release)
+         release="-$arg"
+         prev=
+         continue
+         ;;
+        rpath)
+          rpath="$rpath $arg"
+         prev=
+         continue
+         ;;
         *)
           eval "$prev=\"\$arg\""
           prev=
@@ -453,8 +453,17 @@ if test -z "$show_help"; then
       prevarg="$arg"
 
       case "$arg" in
+      -all-static)
+       if test -n "$link_static_flag"; then
+          compile_command="$compile_command $link_static_flag"
+         finalize_command="$finalize_command $link_static_flag"
+        fi
+        continue
+       ;;
+
       -allow-undefined)
-       allow_undefined=yes
+       # FIXME: remove this flag sometime in the future.
+       $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2
        continue
        ;;
 
@@ -471,7 +480,11 @@ if test -z "$show_help"; then
       -export-dynamic)
         if test "$export_dynamic" != yes; then
           export_dynamic=yes
-         arg=`eval $echo "$export_dynamic_flag_spec"`
+         if test -n "$export_dynamic_flag_spec"; then
+           eval arg=\"$export_dynamic_flag_spec\"
+         else
+           arg=
+         fi
 
           # Add the symbol object into the linking commands.
          compile_command="$compile_command @SYMFILE@"
@@ -480,12 +493,13 @@ if test -z "$show_help"; then
         ;;
 
       -L*)
-        dir=`$echo "$arg" | sed 's%^-L\(.*\)$%\1%'`
+        dir=`$echo "X$arg" | $Xsed -e 's%^-L\(.*\)$%\1%'`
         case "$dir" in
-        /*)
+        /* | [A-Za-z]:\\*)
+         # Add the corresponding hardcode_libdir_flag, if it is not identical.
           ;;
         *)
-          $echo "$progname: \`-L$dir' cannot specify a relative directory" 1>&2
+          $echo "$modename: \`-L$dir' cannot specify a relative directory" 1>&2
           exit 1
           ;;
         esac
@@ -494,19 +508,31 @@ if test -z "$show_help"; then
 
       -l*) deplibs="$deplibs $arg" ;;
 
+      -no-undefined)
+       allow_undefined=no
+       continue
+       ;;
+
       -o) prev=output ;;
 
+      -release)
+       prev=release
+       continue
+       ;;
+
       -rpath)
-        prev=install_libdir
+        prev=rpath
         continue
         ;;
 
       -static)
-        link_static="$link_static_flag"
-       compile_command="$compile_command $link_static"
-       finalize_command="$finalize_command $link_static"
+       # If we have no pic_flag, then this is the same as -all-static.
+       if test -z "$pic_flag" && test -n "$link_static_flag"; then
+          compile_command="$compile_command $link_static_flag"
+         finalize_command="$finalize_command $link_static_flag"
+        fi
        continue
-        ;;
+       ;;
 
       -version-info)
         prev=vinfo
@@ -514,10 +540,10 @@ if test -z "$show_help"; then
         ;;
 
       # Some other compiler flag.
-      -*)
+      -* | +*)
        # Unknown arguments in both finalize_command and compile_command need
        # to be aesthetically quoted because they are evaled later.
-       arg=`$echo "$arg" | sed "$sed_quote_subst"`
+       arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
        case "$arg" in
        *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \   ]*|*]*)
          arg="\"$arg\""
@@ -545,7 +571,7 @@ if test -z "$show_help"; then
 
        if test "$prev" = dlprefiles; then
          # Preload the old-style object.
-         dlprefiles="$dlprefiles "`$echo "$arg" | sed 's/\.lo$/\.o/'`
+         dlprefiles="$dlprefiles "`$echo "X$arg" | $Xsed -e 's/\.lo$/\.o/'`
          prev=
        fi
        libobjs="$libobjs $arg"
@@ -560,20 +586,20 @@ if test -z "$show_help"; then
         old_library=
 
         # Check to see that this really is a libtool archive.
-        if egrep "^# Generated by ltmain.sh" $arg >/dev/null 2>&1; then :
+        if (sed -e '2q' $arg | egrep '^# Generated by ltmain\.sh') >/dev/null 2>&1; then :
         else
-          $echo "$progname: \`$arg' is not a valid libtool archive" 1>&2
+          $echo "$modename: \`$arg' is not a valid libtool archive" 1>&2
           exit 1
         fi
 
         # If there is no directory component, then add one.
         case "$arg" in
-        */*) . $arg ;;
+        */* | *\\*) . $arg ;;
         *) . ./$arg ;;
         esac
 
         if test -z "$libdir"; then
-          $echo "$progname: \`$arg' contains no -rpath information" 1>&2
+          $echo "$modename: \`$arg' contains no -rpath information" 1>&2
           exit 1
         fi
 
@@ -584,13 +610,13 @@ if test -z "$show_help"; then
         done
 
         if test -z "$linklib"; then
-          $echo "$progname: cannot find name of link library for \`$arg'" 1>&2
+          $echo "$modename: cannot find name of link library for \`$arg'" 1>&2
           exit 1
         fi
 
         # Find the relevant object directory and library name.
-        name=`$echo "$arg" | sed -e 's%^.*/%%' -e 's/\.la$//' -e 's/^lib//'`
-        dir=`$echo "$arg" | sed 's%/[^/]*$%%'`
+        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
@@ -604,7 +630,10 @@ if test -z "$show_help"; then
             # If there is no dlname, we need to preload.
             prev=dlprefiles
           else
-            # We should not create a dependency on this library.
+            # We should not create a dependency on this library, but we
+           # may need any libraries it requires.
+           compile_command="$compile_command$dependency_libs"
+           finalize_command="$finalize_command$dependency_libs"
             prev=
             continue
           fi
@@ -627,12 +656,12 @@ if test -z "$show_help"; then
           if test -n "$shlibpath_var"; then
             # Make sure the rpath contains only unique directories.
             case "$temp_rpath " in
-            "* $dir *") ;;
+            *" $dir "*) ;;
             *) temp_rpath="$temp_rpath $dir" ;;
             esac
           fi
 
-
+         # This is the magic to use -rpath.
           if test -n "$hardcode_libdir_flag_spec"; then
             if test -n "$hardcode_libdir_separator"; then
               if test -z "$hardcode_libdirs"; then
@@ -640,22 +669,28 @@ if test -z "$show_help"; then
                 hardcode_libdirs="$libdir"
                 libdir="@HARDCODE_LIBDIRS@"
               else
-                # Just accumulate the libdirs.
-                hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+                # Just accumulate the unique libdirs.
+               case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in
+               *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+                 ;;
+               *)
+                 hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+                 ;;
+               esac
                 libdir=
               fi
             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"
             fi
-          elif test "$hardcode_runpath_var" = yes; then
+          elif test -n "$runpath_var"; then
             # Do the same for the permanent run path.
             case "$perm_rpath " in
-            "* $libdir *") ;;
+            *" $libdir "*) ;;
             *) perm_rpath="$perm_rpath $libdir" ;;
             esac
           fi
@@ -676,11 +711,11 @@ if test -z "$show_help"; then
           relink)
             # We need an absolute path.
             case "$dir" in
-            /*) ;;
+            /* | [A-Za-z]:\\*) ;;
             *)
               absdir=`cd "$dir" && pwd`
               if test -z "$absdir"; then
-                $echo "$progname: cannot determine absolute directory name of \`$dir'" 1>&2
+                $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2
                 exit 1
               fi
               dir="$absdir"
@@ -698,7 +733,7 @@ if test -z "$show_help"; then
             ;;
 
           *)
-            $echo "$progname: \`$hardcode_action' is an unknown hardcode action" 1>&2
+            $echo "$modename: \`$hardcode_action' is an unknown hardcode action" 1>&2
             exit 1
             ;;
           esac
@@ -712,70 +747,103 @@ if test -z "$show_help"; then
             finalize_shlibpath="$finalize_shlibpath$libdir:"
             finalize_command="$finalize_command -l$name"
           else
-            # We can't seem to hardcode it, guess we'll fake it.
+            # We cannot seem to hardcode it, guess we'll fake it.
             finalize_command="$finalize_command -L$libdir -l$name"
           fi
         else
           # Transform directly to old archives if we don't build new libraries.
           if test -n "$pic_flag" && test -z "$old_library"; then
-            $echo "$progname: cannot find static library for \`$arg'" 1>&2
+            $echo "$modename: cannot find static library for \`$arg'" 1>&2
             exit 1
           fi
 
+         # Here we assume that one of hardcode_direct or hardcode_minus_L
+         # is not unsupported.  This is valid on all known static and
+         # shared platforms.
          if test "$hardcode_direct" != unsupported; then
            test -n "$old_library" && linklib="$old_library"
            compile_command="$compile_command $dir/$linklib"
            finalize_command="$finalize_command $dir/$linklib"
          else
-           # Here we assume that "$hardcode_minusL" != unsupported.
-           # This is valid on all known static and shared platforms.
            compile_command="$compile_command -L$dir -l$name"
            finalize_command="$finalize_command -L$dir -l$name"
          fi
         fi
+
+       # Add in any libraries that this one depends upon.
+       compile_command="$compile_command$dependency_libs"
+       finalize_command="$finalize_command$dependency_libs"
        continue
         ;;
 
+      # Some other compiler argument.
       *)
-        $echo "$progname: unknown file suffix for \`$arg'" 1>&2
-        $echo "$help" 1>&2
-        exit 1
+       # Unknown arguments in both finalize_command and compile_command need
+       # to be aesthetically quoted because they are evaled later.
+       arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+       case "$arg" in
+       *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \   ]*|*]*)
+         arg="\"$arg\""
+         ;;
+       esac
         ;;
       esac
 
       # Now actually substitute the argument into the commands.
-      compile_command="$compile_command $arg"
-      finalize_command="$finalize_command $arg"
+      if test -n "$arg"; then
+       compile_command="$compile_command $arg"
+       finalize_command="$finalize_command $arg"
+      fi
     done
 
     if test -n "$prev"; then
-      $echo "$progname: the \`$prevarg' option requires an argument" 1>&2
+      $echo "$modename: the \`$prevarg' option requires an argument" 1>&2
       $echo "$help" 1>&2
       exit 1
     fi
 
-    # Substitute the hardcoded libdirs into the compile commands.
-    if test -n "$hardcode_libdir_separator"; then
-      compile_command=`$echo "$compile_command" | sed "s%@HARDCODE_LIBDIRS@%$hardcode_libdirs%g"`
-      finalize_command=`$echo "$finalize_command" | sed "s%@HARDCODE_LIBDIRS@%$hardcode_libdirs%g"`
+    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=
     case "$output" in
     "")
-      $echo "$progname: you must specify an output file" 1>&2
+      $echo "$modename: you must specify an output file" 1>&2
       $echo "$help" 1>&2
       exit 1
       ;;
 
-    */*)
-      $echo "$progname: output file \`$output' must have no directory components" 1>&2
+    */* | *\\*)
+      $echo "$modename: output file \`$output' must have no directory components" 1>&2
       exit 1
       ;;
 
+    *.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
+      ;;
+
     *.la)
-      libname=`$echo "$output" | sed 's/\.la$//'`
+      # Make sure we only generate libraries of the form `libNAME.la'.
+      case "$output" in
+      lib*) ;;
+      *)
+       $echo "$modename: libtool library \`$arg' must begin with \`lib'" 1>&2
+       $echo "$help" 1>&2
+       exit 1
+       ;;
+      esac
+
+      name=`$echo "X$output" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
+      eval libname=\"$libname_spec\"
 
       # All the library-specific variables (install_libdir is set above).
       library_names=
@@ -786,35 +854,42 @@ if test -z "$show_help"; then
       age=0
 
       if test -n "$objs"; then
-        $echo "$progname: cannot build libtool library \`$output' from non-libtool objects:$objs" 2>&1
+        $echo "$modename: cannot build libtool library \`$output' from non-libtool objects:$objs" 2>&1
         exit 1
       fi
 
       # How the heck are we supposed to write a wrapper for a shared library?
       if test -n "$link_against_libtool_libs"; then
-        $echo "$progname: libtool library \`$output' may not depend on uninstalled libraries:$link_against_libtool_libs" 1>&2
+        $echo "$modename: libtool library \`$output' may not depend on uninstalled libraries:$link_against_libtool_libs" 1>&2
         exit 1
       fi
 
       if test -n "$dlfiles$dlprefiles"; then
-        $echo "$progname: warning: \`-dlopen' is ignored while creating libtool libraries" 1>&2
+        $echo "$modename: warning: \`-dlopen' is ignored while creating libtool libraries" 1>&2
         # Nullify the symbol file.
-        compile_command=`$echo "$compile_command" | sed "s% @SYMFILE@%%"`
-        finalize_command=`$echo "$finalize_command" | sed "s% @SYMFILE@%%"`
+        compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
+        finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
       fi
 
-      if test -z "$install_libdir"; then
-        $echo "$progname: you must specify an installation directory with \`-rpath'" 1>&2
+      if test -z "$rpath"; then
+        $echo "$modename: you must specify an installation directory with \`-rpath'" 1>&2
+       $echo "$help" 1>&2
         exit 1
       fi
 
+      set dummy $rpath
+      if test $# -gt 2; then
+       $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2
+      fi
+      install_libdir="$2"
+
       # Parse the version information argument.
       IFS="${IFS=      }"; save_ifs="$IFS"; IFS=':'
       set dummy $vinfo
       IFS="$save_ifs"
 
       if test -n "$5"; then
-        $echo "$progname: too many parameters to \`-version-info'" 1>&2
+        $echo "$modename: too many parameters to \`-version-info'" 1>&2
         $echo "$help" 1>&2
         exit 1
       fi
@@ -827,8 +902,8 @@ if test -z "$show_help"; then
       case "$current" in
       0 | [1-9] | [1-9][0-9]*) ;;
       *)
-        $echo "$progname: CURRENT \`$current' is not a nonnegative integer" 1>&2
-        $echo "$progname: \`$vinfo' is not valid version information" 1>&2
+        $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2
+        $echo "$modename: \`$vinfo' is not valid version information" 1>&2
         exit 1
         ;;
       esac
@@ -836,8 +911,8 @@ if test -z "$show_help"; then
       case "$revision" in
       0 | [1-9] | [1-9][0-9]*) ;;
       *)
-        $echo "$progname: REVISION \`$revision' is not a nonnegative integer" 1>&2
-        $echo "$progname: \`$vinfo' is not valid version information" 1>&2
+        $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2
+        $echo "$modename: \`$vinfo' is not valid version information" 1>&2
         exit 1
         ;;
       esac
@@ -845,15 +920,15 @@ if test -z "$show_help"; then
       case "$age" in
       0 | [1-9] | [1-9][0-9]*) ;;
       *)
-        $echo "$progname: AGE \`$age' is not a nonnegative integer" 1>&2
-        $echo "$progname: \`$vinfo' is not valid version information" 1>&2
+        $echo "$modename: AGE \`$age' 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 "$progname: AGE \`$age' is greater than the current interface number \`$current'" 1>&2
-        $echo "$progname: \`$vinfo' is not valid version information" 1>&2
+        $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
 
@@ -893,58 +968,66 @@ if test -z "$show_help"; then
         ;;
 
       *)
-        $echo "$progname: unknown library version type \`$version_type'" 1>&2
-        $echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
+        $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
 
       # Create the output directory, or remove our outputs if we need to.
       if test -d $objdir; then
-        $show "$rm $objdir/$libname.*"
-        $run $rm $objdir/$libname.*
+        $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 || exit $?
+        $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 "$progname: warning: undefined symbols not allowed in $host shared libraries" 1>&2
+          $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2
           build_libtool_libs=no
          build_old_libs=yes
         fi
       else
-        # Clear the flag.
-        allow_undefined_flag=
+        # 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.
-        library_names=`eval $echo \"$library_names_spec\"`
+        eval library_names=\"$library_names_spec\"
         set dummy $library_names
         realname="$2"
         shift; shift
 
         if test -n "$soname_spec"; then
-          soname=`eval $echo \"$soname_spec\"`
+          eval soname=\"$soname_spec\"
         else
           soname="$realname"
         fi
 
         lib="$objdir/$realname"
-        linknames=
-        for link
-        do
-          linknames="$linknames $link"
-        done
+       for link
+       do
+         linknames="$linknames $link"
+       done
 
         # Use standard objects if they are PIC.
-        test -z "$pic_flag" && libobjs=`$echo "$libobjs " | sed -e 's/\.lo /.o /g' -e 's/ $//g'`
+        test -z "$pic_flag" && libobjs=`$echo "X$libobjs " | $Xsed -e 's/\.lo /.o /g' -e 's/ $//g'`
 
         # Do each of the archive commands.
-        cmds=`eval $echo \"$archive_cmds\"`
+        eval cmds=\"$archive_cmds\"
         IFS="${IFS=    }"; save_ifs="$IFS"; IFS=';'
         for cmd in $cmds; do
           IFS="$save_ifs"
@@ -954,9 +1037,9 @@ if test -z "$show_help"; then
         IFS="$save_ifs"
 
         # Create links to the real library.
-        for link in $linknames; do
-          $show "(cd $objdir && $LN_S $realname $link)"
-          $run eval '(cd $objdir && $LN_S $realname $link)' || exit $?
+        for linkname in $linknames; do
+          $show "(cd $objdir && $LN_S $realname $linkname)"
+          $run eval '(cd $objdir && $LN_S $realname $linkname)' || exit $?
         done
 
         # If -export-dynamic was specified, set the dlname.
@@ -965,41 +1048,48 @@ if test -z "$show_help"; then
           dlname="$soname"
         fi
       fi
+
+      # Now set the variables for building old libraries.
+      oldlib="$objdir/$libname.a"
       ;;
 
     *.lo | *.o)
       if test -n "$link_against_libtool_libs"; then
-        $echo "$progname: error: cannot link libtool libraries into reloadable objects" 1>&2
+        $echo "$modename: error: cannot link libtool libraries into reloadable objects" 1>&2
         exit 1
       fi
 
       if test -n "$deplibs"; then
-        $echo "$progname: warning: \`-l' and \`-L' are ignored while creating objects" 1>&2
+        $echo "$modename: warning: \`-l' and \`-L' are ignored while creating objects" 1>&2
       fi
 
       if test -n "$dlfiles$dlprefiles"; then
-        $echo "$progname: warning: \`-dlopen' is ignored while creating objects" 1>&2
+        $echo "$modename: warning: \`-dlopen' is ignored while creating objects" 1>&2
         # Nullify the symbol file.
-        compile_command=`$echo "$compile_command" | sed "s% @SYMFILE@%%"`
-        finalize_command=`$echo "$finalize_command" | sed "s% @SYMFILE@%%"`
+        compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
+        finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
       fi
 
-      if test -n "$install_libdir"; then
-        $echo "$progname: warning: \`-rpath' is ignored while creating objects" 1>&2
+      if test -n "$rpath"; then
+        $echo "$modename: warning: \`-rpath' is ignored while creating objects" 1>&2
       fi
 
       if test -n "$vinfo"; then
-        $echo "$progname: warning: \`-version-info' is ignored while creating objects" 1>&2
+        $echo "$modename: warning: \`-version-info' is ignored while creating objects" 1>&2
+      fi
+
+      if test -n "$release"; then
+        $echo "$modename: warning: \`-release' is ignored while creating objects" 1>&2
       fi
 
       case "$output" in
       *.lo)
         if test -n "$objs"; then
-          $echo "$progname: cannot build library object \`$output' from non-libtool objects" 1>&2
+          $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2
           exit 1
         fi
         libobj="$output"
-        obj=`$echo "$output" | sed 's/\.lo$/.o/'`
+        obj=`$echo "X$output" | $Xsed -e 's/\.lo$/.o/'`
         ;;
       *)
         libobj=
@@ -1011,10 +1101,10 @@ if test -z "$show_help"; then
       $run $rm $obj $libobj
 
       # Create the old-style object.
-      reload_objs="$objs"`$echo "$libobjs " | sed -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/\.lo /.o /g' -e 's/ $//g'`
 
       output="$obj"
-      cmds=`eval $echo \"$reload_cmds\"`
+      eval cmds=\"$reload_cmds\"
       IFS="${IFS=      }"; save_ifs="$IFS"; IFS=';'
       for cmd in $cmds; do
         IFS="$save_ifs"
@@ -1029,8 +1119,8 @@ if test -z "$show_help"; then
       if test "$build_libtool_libs" != yes; then
         # Create an invalid libtool object if no PIC, so that we don't
         # accidentally link it into a program.
-        $show "$echo timestamp > $libobj"
-        $run eval "$echo timestamp > $libobj" || exit $?
+        $show "echo timestamp > $libobj"
+        $run eval "echo timestamp > $libobj" || exit $?
         exit 0
       fi
 
@@ -1038,7 +1128,7 @@ 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\"`
+        eval cmds=\"$reload_cmds\"
         IFS="${IFS=    }"; save_ifs="$IFS"; IFS=';'
         for cmd in $cmds; do
           IFS="$save_ifs"
@@ -1056,65 +1146,136 @@ if test -z "$show_help"; then
       ;;
 
     *)
-      if test -n "$install_libdir"; then
-        $echo "$progname: warning: \`-rpath' is ignored while linking programs" 1>&2
+      if test -n "$vinfo"; then
+        $echo "$modename: warning: \`-version-info' is ignored while linking programs" 1>&2
       fi
 
-      if test -n "$vinfo"; then
-        $echo "$progname: warning: \`-version-info' is ignored while linking programs" 1>&2
+      if test -n "$release"; then
+        $echo "$modename: warning: \`-release' is ignored while creating objects" 1>&2
       fi
 
-      if test -n "$libobjs"; then
+      if test -n "$rpath"; then
+       # If the user specified any rpath flags, then add them.
+       for libdir in $rpath; do
+          if test -n "$hardcode_libdir_flag_spec"; then
+            if test -n "$hardcode_libdir_separator"; then
+              if test -z "$hardcode_libdirs"; then
+                # Put the magic libdir with the hardcode flag.
+                hardcode_libdirs="$libdir"
+                libdir="@HARDCODE_LIBDIRS@"
+              else
+                # Just accumulate the unique libdirs.
+               case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in
+               *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+                 ;;
+               *)
+                 hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+                 ;;
+               esac
+                libdir=
+              fi
+            fi
+
+            if test -n "$libdir"; then
+              eval flag=\"$hardcode_libdir_flag_spec\"
+
+              compile_command="$compile_command $flag"
+              finalize_command="$finalize_command $flag"
+            fi
+          elif test -n "$runpath_var"; then
+            case "$perm_rpath " in
+            *" $libdir "*) ;;
+            *) perm_rpath="$perm_rpath $libdir" ;;
+            esac
+          fi
+       done
+      fi
+
+      # Substitute the hardcoded libdirs into the compile commands.
+      if test -n "$hardcode_libdir_separator"; then
+       compile_command=`$echo "X$compile_command" | $Xsed -e "s%@HARDCODE_LIBDIRS@%$hardcode_libdirs%g"`
+       finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@HARDCODE_LIBDIRS@%$hardcode_libdirs%g"`
+      fi
+
+      if test -n "$libobjs" && test "$build_old_libs" = yes; then
         # Transform all the library objects into standard objects.
-        compile_command=`$echo "$compile_command " | sed -e 's/\.lo /.o /g' -e 's/ $//'`
-        finalize_command=`$echo "$finalize_command " | sed -e 's/\.lo /.o /g' -e 's/ $//'`
+        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/ $//'`
+      fi
+
+      if test "$export_dynamic" = yes && test -n "$NM" && test -n "$global_symbol_pipe"; then
+        dlsyms="${output}S.c"
+      else
+        dlsyms=
       fi
 
-      if test "$export_dynamic" = yes && test -n "$global_symbol_pipe" && test -n "$NM"; then
+      if test -n "$dlsyms"; then
         # Add our own program objects to the preloaded list.
-        dlprefiles=`$echo "$objs$dlprefiles " | sed -e 's/\.lo /.o /g' -e 's/ $//'`
+        dlprefiles=`$echo "X$objs$dlprefiles " | $Xsed -e 's/\.lo /.o /g' -e 's/ $//'`
 
-        # Discover the nlist of each of the dlfiles.
-        dlsyms="$objdir/${output}S.c"
+       # Discover the nlist of each of the dlfiles.
         nlist="$objdir/${output}.nm"
 
-        $run rm -f "$nlist" "$nlist"T
+       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 :
+         else
+           exit $status
+         fi
+       fi
+
         for arg in $dlprefiles; do
-          $echo "extracting global symbols from \`$arg'"
-          $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
+         $show "extracting global C symbols from \`$arg'"
+         $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
         done
 
-        # Parse the name list into a C file.
-        $echo "creating $dlsyms"
+        # 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 "$wcout" | sed 's/^[   ]*\([0-9][0-9]*\).*$/\1/'`
-           test "$wcout" = "$count" && count=-1
+           count=`echo "X$wcout" | $Xsed -e 's/^[      ]*\([0-9][0-9]*\).*$/\1/'`
+           (test "$count" -ge 0) 2>/dev/null || count=-1
          else
-           rm -f "$nlist"T
+           $rm "$nlist"T
            count=-1
          fi
 
-          cat <<EOF > "$dlsyms"
+         case "$dlsyms" in
+         "") ;;
+         *.c)
+           $echo > "$objdir/$dlsyms" "\
 /* $dlsyms - symbol resolution table for \`$output' dlsym emulation. */
 /* Generated by $PROGRAM - GNU $PACKAGE $VERSION */
 
-/* Prevent the only kind of circular reference mistakes we can make. */
+#ifdef __cplusplus
+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. */
-EOF
-          if test -f "$nlist"; then
-            sed -e 's/^.* \(.*\)$/extern char \1;/' < "$nlist" >> "$dlsyms"
-          else
-            $echo "/* NONE */" >> "$dlsyms"
-          fi
+/* External symbol declarations for the compiler. */\
+"
+
+           if test -f "$nlist"; then
+             sed -e 's/^.* \(.*\)$/extern char \1;/' < "$nlist" >> "$objdir/$dlsyms"
+           else
+             echo '/* NONE */' >> "$objdir/$dlsyms"
+           fi
 
-          cat <<EOF >> "$dlsyms"
+           $echo >> "$objdir/$dlsyms" "\
 
 #undef dld_preloaded_symbol_count
 #undef dld_preloaded_symbols
@@ -1134,70 +1295,75 @@ struct {
   __ptr_t address;
 }
 dld_preloaded_symbols[] =
-{
-EOF
+{\
+"
 
-          if test -f "$nlist"; then
-            sed 's/^\(.*\) \(.*\)$/  {"\1", \&\2},/' < "$nlist" >> "$dlsyms"
-          fi
+           if test -f "$nlist"; then
+             sed 's/^\(.*\) \(.*\)$/  {"\1", (__ptr_t) \&\2},/' < "$nlist" >> "$objdir/$dlsyms"
+           fi
 
-          cat <<\EOF >> "$dlsyms"
-  {0},
+           $echo >> "$objdir/$dlsyms" "\
+  {0, (__ptr_t) 0}
 };
-EOF
+
+#ifdef __cplusplus
+}
+#endif\
+"
+           ;;
+
+         *)
+           $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
+           exit 1
+           ;;
+         esac
         fi
-        $run rm -f "$nlist" "$nlist"T
 
         # Now compile the dynamic symbol file.
-        $show "(cd $objdir && $CC -c$no_builtin_flag \"${output}S.c\")"
-        $run eval '(cd $objdir && $CC -c$no_builtin_flag "${output}S.c")' || exit $?
+        $show "(cd $objdir && $CC -c$no_builtin_flag \"$dlsyms\")"
+        $run eval '(cd $objdir && $CC -c$no_builtin_flag "$dlsyms")' || exit $?
 
         # Transform the symbol file into the correct name.
-        compile_command=`$echo "$compile_command" | sed "s%@SYMFILE@%$objdir/${output}S.o%"`
-        finalize_command=`$echo "$finalize_command" | sed "s%@SYMFILE@%$objdir/${output}S.o%"`
+        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%"`
       elif test "$export_dynamic" != yes; then
-        test -n "$dlfiles$dlprefiles" && $echo "$progname: warning: \`-dlopen' and \`-dlpreopen' are ignored without \`-export-dynamic'" 1>&2
+        test -n "$dlfiles$dlprefiles" && $echo "$modename: warning: \`-dlopen' and \`-dlpreopen' are ignored without \`-export-dynamic'" 1>&2
       else
         # We keep going just in case the user didn't refer to
         # dld_preloaded_symbols.  The linker will fail if global_symbol_pipe
         # really was required.
-        $echo "$progname: not configured to extract global symbols from dlpreopened files" 1>&2
+        $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2
 
         # Nullify the symbol file.
-        compile_command=`$echo "$compile_command" | sed "s% @SYMFILE@%%"`
-        finalize_command=`$echo "$finalize_command" | sed "s% @SYMFILE@%%"`
+        compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
+        finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
       fi
 
       if test -z "$link_against_libtool_libs" || test "$build_libtool_libs" != yes; then
         # Replace the output file specification.
-        compile_command=`$echo "$compile_command" | sed 's%@OUTPUT@%'"$output"'%g'`
-        finalize_command=`$echo "$finalize_command" | sed 's%@OUTPUT@%'"$output"'%g'`
+        compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+        finalize_command=`$echo "X$finalize_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
 
         # We have no uninstalled library dependencies, so finalize right now.
         $show "$compile_command"
         $run eval "$compile_command"
-        status=$?
-
-        # If we failed to link statically, then try again.
-        if test $status -ne 0 && test -n "$link_static"; then
-          $echo "$progname: cannot link \`$output' statically; retrying semi-dynamically" 1>&2
-          compile_command=`$echo "$compile_command " | sed -e "s% $link_static % %" -e 's/ $//'`
-          $show "$compile_command"
-          $run eval "$compile_command"
-          status=$?
-        fi
-        exit $status
+        exit $?
       fi
 
       # Replace the output file specification.
-      compile_command=`$echo "$compile_command" | sed 's%@OUTPUT@%'"$objdir/$output"'%g'`
-      finalize_command=`$echo "$finalize_command" | sed 's%@OUTPUT@%'"$objdir/$output"'T%g'`
+      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'`
 
       # Create the binary in the object directory, then wrap it.
       if test -d $objdir; then :
       else
         $show "$mkdir $objdir"
-        $run $mkdir $objdir || exit $?
+       $run $mkdir $objdir
+       status=$?
+       if test $status -eq 0 || test -d $objdir; then :
+       else
+         exit $status
+       fi
       fi
 
       if test -n "$shlibpath_var"; then
@@ -1205,7 +1371,7 @@ EOF
         rpath=
         for dir in $temp_rpath; do
           case "$dir" in
-          /*)
+          /* | [A-Za-z]:\\*)
             # Absolute path.
             rpath="$rpath$dir:"
             ;;
@@ -1228,7 +1394,7 @@ EOF
         finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
       fi
 
-      if test -n "$perm_rpath"; then
+      if test -n "$runpath_var" && test -n "$perm_rpath"; then
         # We should set the runpath_var.
         rpath=
         for dir in $perm_rpath; do
@@ -1241,8 +1407,8 @@ EOF
       case "$hardcode_action" in
       relink)
         # AGH! Flame the AIX and HP-UX people for me, will ya?
-        $echo "$progname: warning: using a buggy system linker" 1>&2
-        $echo "$progname: relinking will be required before \`$output' can be installed" 1>&2
+        $echo "$modename: warning: using a buggy system linker" 1>&2
+        $echo "$modename: relinking will be required before \`$output' can be installed" 1>&2
         ;;
       esac
 
@@ -1250,17 +1416,20 @@ EOF
       $run eval "$compile_command" || exit $?
 
       # Now create the wrapper script.
-      $echo "creating $output"
+      $show "creating $output"
 
       # Quote the finalize command for shipping.
-      finalize_command=`$echo "$finalize_command" | sed "$sed_quote_subst"`
+      finalize_command=`$echo "X$finalize_command" | $Xsed -e "$sed_quote_subst"`
+
+      # Quote $echo for shipping.
+      qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"`
 
       # 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
 
-        cat > $output <<EOF
+        $echo > $output "\
 #! /bin/sh
 
 # $output - temporary wrapper script for $objdir/$output
@@ -1272,106 +1441,112 @@ EOF
 # This wrapper script should never be moved out of \``pwd`'.
 # If it is, it will not operate correctly.
 
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed='sed -e s/^X//'
+sed_quote_subst='$sed_quote_subst'
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+if test \"\${CDPATH+set}\" = set; then CDPATH=; export CDPATH; fi
+
 # This environment variable determines our operation mode.
-if test "\$libtool_install_magic" = "$magic"; then
+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=\"$finalize_command\"
 else
-  # When we are sourced in execute mode, \$file is already set.
-  test "\$libtool_execute_magic" = "$magic" || file="\$0"
+  # When we are sourced in execute mode, \$file and \$echo are already set.
+  if test \"\$libtool_execute_magic\" = \"$magic\"; then :
+  else
+    echo=\"$qecho\"
+    file=\"\$0\"
+  fi\
+"
+        $echo >> $output "\
 
   # Find the directory that this script lives in.
-  thisdir=\`$echo "\$file" | sed 's%/[^/]*$%%'\`
-  test "x\$thisdir" = "x\$file" && thisdir=.
+  thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
+  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
+
+  # Follow symbolic links until we get to the real thisdir.
+  file=\`ls -ld \"\$file\" | sed -n 's/.*-> //p'\`
+  while test -n \"\$file\"; do
+    destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
+
+    # If there was a directory component, then change thisdir.
+    if test \"x\$destdir\" != \"x\$file\"; then
+      case \"\$destdir\" in
+      /* | [A-Za-z]:\\*) thisdir=\"\$destdir\" ;;
+      *) thisdir=\"\$thisdir/\$destdir\" ;;
+      esac
+    fi
+
+    file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
+    file=\`ls -ld \"\$thisdir/\$file\" | sed -n 's/.*-> //p'\`
+  done
 
   # Try to get the absolute directory name.
-  absdir=\`cd "\$thisdir" && pwd\`
-  test -n "\$absdir" && thisdir="\$absdir"
+  absdir=\`cd \"\$thisdir\" && pwd\`
+  test -n \"\$absdir\" && thisdir=\"\$absdir\"
 
-  progdir="\$thisdir/$objdir"
+  progdir=\"\$thisdir/$objdir\"
   program='$output'
 
-  # If the \$file dir failed (maybe due to symlink), try a hardcoded dir.
-  oprogdir="\$progdir"
-  if test -f "\$progdir/\$program"; then :
-  else
-    thisdir='`pwd`'
-    progdir="\$thisdir/$objdir"
-  fi
-
-  if test -f "\$progdir/\$program"; then
-EOF
+  if test -f \"\$progdir/\$program\"; then"
 
         # Export our shlibpath_var if we have one.
         if test -n "$shlibpath_var" && test -n "$temp_rpath"; then
-          cat >> $output <<EOF
+          $echo >> $output "\
     # Add our own library path to $shlibpath_var
-    $shlibpath_var="$temp_rpath\$$shlibpath_var"
+    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
 
     # Some systems cannot cope with colon-terminated $shlibpath_var
-    $shlibpath_var=\`$echo \$$shlibpath_var | sed -e 's/:*\$//'\`
+    $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/:*\$//'\`
 
     export $shlibpath_var
-
-EOF
+"
         fi
 
-        cat >> $output <<EOF
-    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).
-       sed_quote_subst='$sed_quote_subst'
-       arg=\`$echo "\$arg" | sed "\$sed_quote_subst"\`
-        args="\$args \\"\$arg\\""
-      done
 
       # Export the path to the program.
-      PATH="\$progdir:\$PATH"
+      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
     # The program doesn't exist.
-    $echo "\$0: error: neither \$oprogdir/\$program nor \$progdir/\$program exists" 1>&2
-    $echo "This script is just a wrapper for \$program." 1>&2
-    $echo "See the $PACKAGE documentation for more information." 1>&2
+    \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2
+    \$echo \"This script is just a wrapper for \$program.\" 1>&2
+    echo \"See the $PACKAGE documentation for more information.\" 1>&2
     exit 1
   fi
-fi
-EOF
+fi\
+"
         chmod +x $output
       fi
       exit 0
       ;;
     esac
 
-
     # See if we need to build an old-fashioned archive.
     if test "$build_old_libs" = "yes"; then
-      # Now set the variables for building old libraries.
-      oldlib="$objdir/$libname.a"
-
       # Transform .lo files to .o files.
-      oldobjs="$objs"`$echo "$libobjs " | sed -e 's/[^   ]*\.a //g' -e 's/\.lo /.o /g' -e 's/ $//g'`
+      oldobjs="$objs"`$echo "X$libobjs " | $Xsed -e 's/[^   ]*\.a //g' -e 's/\.lo /.o /g' -e 's/ $//g'`
 
-      if test -d "$objdir"; then
-        $show "$rm $oldlib"
-        $run $rm $oldlib
+      # Do each command in the archive commands.
+      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
+       eval cmds=\"$old_archive_from_new_cmds\"
       else
-        $show "$mkdir $objdir"
-        $run $mkdir $objdir
+       eval cmds=\"$old_archive_cmds\"
       fi
-
-      # Do each command in the archive commands.
-      cmds=`eval $echo \"$old_archive_cmds\"`
       IFS="${IFS=      }"; save_ifs="$IFS"; IFS=';'
       for cmd in $cmds; do
         IFS="$save_ifs"
@@ -1387,11 +1562,11 @@ EOF
       old_library=
       test "$build_old_libs" = yes && old_library="$libname.a"
 
-      $echo "creating $output"
+      $show "creating $output"
 
       # Only create the output if not a dry run.
       if test -z "$run"; then
-        cat > $output <<EOF
+        $echo > $output "\
 # $output - a libtool library file
 # Generated by ltmain.sh - GNU $PACKAGE $VERSION
 
@@ -1404,14 +1579,17 @@ library_names='$library_names'
 # The name of the static archive.
 old_library='$old_library'
 
+# Libraries that this one depends upon.
+dependency_libs='$dependency_libs'
+
 # Version information for $libname.
 current=$current
 age=$age
 revision=$revision
 
 # Directory that this library needs to be installed in:
-libdir='$install_libdir'
-EOF
+libdir='$install_libdir'\
+"
       fi
 
       # Do a symbolic link so that the libtool archive can be found in
@@ -1425,17 +1603,35 @@ EOF
 
   # libtool install mode
   install)
-    progname="$progname: install"
+    modename="$modename: install"
 
-    # The first argument is the name of the installation program.
+    # There may be an optional /bin/sh argument at the beginning of
+    # install_prog (especially on Windows NT).
+    if test "$nonopt" = "$SHELL"; then
+      # Aesthetically quote it.
+      arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
+      case "$arg" in
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \    ]*|*]*)
+       arg="\"$arg\""
+       ;;
+      esac
+      install_prog="$arg "
+      arg="$1"
+      shift
+    else
+      install_prog=
+      arg="$nonopt"
+    fi
+
+    # The real first argument should be the name of the installation program.
     # Aesthetically quote it.
-    arg=`$echo "$nonopt" | sed "$sed_quote_subst"`
+    arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
     case "$arg" in
     *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \      ]*|*]*)
       arg="\"$arg\""
       ;;
     esac
-    install_prog="$arg"
+    install_prog="$install_prog$arg"
 
     # We need to accept at least all the BSD install flags.
     dest=
@@ -1477,7 +1673,7 @@ EOF
       esac
 
       # Aesthetically quote the argument.
-      arg=`$echo "$arg" | sed "$sed_quote_subst"`
+      arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
       case "$arg" in
       *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \    ]*|*]*)
        arg="\"$arg\""
@@ -1487,29 +1683,29 @@ EOF
     done
 
     if test -z "$install_prog"; then
-      $echo "$progname: you must specify an install program" 1>&2
+      $echo "$modename: you must specify an install program" 1>&2
       $echo "$help" 1>&2
       exit 1
     fi
 
     if test -n "$prev"; then
-      $echo "$progname: the \`$prev' option requires an argument" 1>&2
+      $echo "$modename: the \`$prev' option requires an argument" 1>&2
       $echo "$help" 1>&2
       exit 1
     fi
 
     if test -z "$files"; then
       if test -z "$dest"; then
-        $echo "$progname: no file or destination specified" 1>&2
+        $echo "$modename: no file or destination specified" 1>&2
       else
-        $echo "$progname: you must specify a destination" 1>&2
+        $echo "$modename: you must specify a destination" 1>&2
       fi
       $echo "$help" 1>&2
       exit 1
     fi
 
     # Strip any trailing slash from the destination.
-    dest=`$echo "$dest" | sed 's%/$%%'`
+    dest=`$echo "X$dest" | $Xsed -e 's%/$%%'`
 
     # Check to see that the destination is a directory.
     test -d "$dest" && isdir=yes
@@ -1517,26 +1713,26 @@ EOF
       destdir="$dest"
       destname=
     else
-      destdir=`$echo "$dest" | sed 's%/[^/]*$%%'`
+      destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'`
       test "X$destdir" = "X$dest" && destdir=.
-      destname=`$echo "$dest" | sed 's%^.*/%%'`
+      destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'`
 
       # Not a directory, so check to see that there is only one file specified.
       set dummy $files
       if test $# -gt 2; then
-        $echo "$progname: \`$dest' is not a directory" 1>&2
+        $echo "$modename: \`$dest' is not a directory" 1>&2
         $echo "$help" 1>&2
         exit 1
       fi
     fi
     case "$destdir" in
-    /*) ;;
+    /* | [A-Za-z]:\\*) ;;
     *)
       for file in $files; do
         case "$file" in
         *.lo) ;;
         *)
-          $echo "$progname: \`$destdir' must be an absolute directory name" 1>&2
+          $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2
           $echo "$help" 1>&2
           exit 1
           ;;
@@ -1563,9 +1759,9 @@ EOF
 
       *.la)
         # Check to see that this really is a libtool archive.
-        if egrep "^# Generated by ltmain.sh" $file >/dev/null 2>&1; then :
+        if (sed -e '2q' $file | egrep '^# Generated by ltmain\.sh') >/dev/null 2>&1; then :
         else
-          $echo "$progname: \`$file' is not a valid libtool archive" 1>&2
+          $echo "$modename: \`$file' is not a valid libtool archive" 1>&2
           $echo "$help" 1>&2
           exit 1
         fi
@@ -1574,25 +1770,25 @@ EOF
         old_library=
         # If there is no directory component, then add one.
         case "$file" in
-        */*) . $file ;;
+        */* | *\\*) . $file ;;
         *) . ./$file ;;
         esac
 
         # Add the libdir to current_libdirs if it is the destination.
         if test "X$destdir" = "X$libdir"; then
           case "$current_libdirs " in
-          "* $libdir *") ;;
+          *" $libdir "*) ;;
           *) current_libdirs="$current_libdirs $libdir" ;;
           esac
         else
           # Note the libdir as a future libdir.
           case "$future_libdirs " in
-          "* $libdir *") ;;
+          *" $libdir "*) ;;
           *) future_libdirs="$future_libdirs $libdir" ;;
           esac
         fi
 
-        dir="`$echo "$file" | sed 's%/[^/]*$%%'`/"
+        dir="`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/"
         test "X$dir" = "X$file/" && dir=
         dir="$dir$objdir"
 
@@ -1608,16 +1804,6 @@ EOF
           $run eval "$install_prog $dir/$realname $destdir/$realname" || exit $?
           test "X$dlname" = "X$realname" && dlname=
 
-          # Support stripping libraries.
-          if test -n "$stripme"; then
-            if test -n "$striplib"; then
-              $show "$striplib $destdir/$realname"
-              $run $striplib $destdir/$realname || exit $?
-            else
-              $echo "$progname: warning: no library stripping program" 1>&2
-            fi
-          fi
-
           if test $# -gt 0; then
             # Delete the old symlinks.
             rmcmd="$rm"
@@ -1645,7 +1831,7 @@ EOF
 
           # Do each command in the postinstall commands.
           lib="$destdir/$realname"
-          cmds=`eval $echo \"$postinstall_cmds\"`
+          eval cmds=\"$postinstall_cmds\"
           IFS="${IFS=  }"; save_ifs="$IFS"; IFS=';'
           for cmd in $cmds; do
             IFS="$save_ifs"
@@ -1656,7 +1842,7 @@ EOF
         fi
 
         # Install the pseudo-library for information purposes.
-        name=`$echo "$file" | sed 's%^.*/%%'`
+        name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
         $show "$install_prog $file $destdir/$name"
         $run eval "$install_prog $file $destdir/$name" || exit $?
 
@@ -1671,21 +1857,21 @@ EOF
         if test -n "$destname"; then
           destfile="$destdir/$destname"
         else
-          destfile=`$echo "$file" | sed 's%^.*/%%'`
+          destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
           destfile="$destdir/$destfile"
         fi
 
         # Deduce the name of the destination old-style object file.
         case "$destfile" in
         *.lo)
-          staticdest=`$echo "$destfile" | sed 's/\.lo$/\.o/'`
+          staticdest=`$echo "X$destfile" | $Xsed -e 's/\.lo$/\.o/'`
           ;;
         *.o)
           staticdest="$destfile"
           destfile=
           ;;
         *)
-          $echo "$progname: cannot copy a libtool object to \`$destfile'" 1>&2
+          $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2
           $echo "$help" 1>&2
           exit 1
           ;;
@@ -1700,7 +1886,7 @@ EOF
         # Install the old object if enabled.
         if test "$build_old_libs" = yes; then
           # Deduce the name of the old-style object file.
-          staticobj=`$echo "$file" | sed 's/\.lo$/\.o/'`
+          staticobj=`$echo "X$file" | $Xsed -e 's/\.lo$/\.o/'`
 
           $show "$install_prog $staticobj $staticdest"
           $run eval "$install_prog \$staticobj \$staticdest" || exit $?
@@ -1710,19 +1896,19 @@ EOF
 
       *)
         # Do a test to see if this is really a libtool program.
-        if egrep '^# Generated by ltmain.sh' $file >/dev/null 2>&1; then
+        if (sed -e '4q' $file | egrep '^# Generated by ltmain\.sh') >/dev/null 2>&1; then
           link_against_libtool_libs=
           finalize_command=
 
           # If there is no directory component, then add one.
           case "$file" in
-          */*) . $file ;;
+          */* | *\\*) . $file ;;
           *) . ./$file ;;
           esac
 
           # Check the variables that should have been set.
           if test -z "$link_against_libtool_libs" || test -z "$finalize_command"; then
-            $echo "$progname: invalid libtool wrapper script \`$file'" 1>&2
+            $echo "$modename: invalid libtool wrapper script \`$file'" 1>&2
             exit 1
           fi
 
@@ -1733,36 +1919,36 @@ EOF
             if test -f "$lib"; then
               # If there is no directory component, then add one.
               case "$lib" in
-              */*) . $lib ;;
+              */* | *\\*) . $lib ;;
               *) . ./$lib ;;
               esac
             fi
-            libfile="$libdir/`$echo "$lib" | sed 's%^.*/%%g'`"
+            libfile="$libdir/`$echo "X$lib" | $Xsed -e 's%^.*/%%g'`"
             if test -z "$libdir"; then
-              $echo "$progname: warning: \`$lib' contains no -rpath information" 1>&2
+              $echo "$modename: warning: \`$lib' contains no -rpath information" 1>&2
             elif test -f "$libfile"; then :
             else
-              $echo "$progname: warning: \`$lib' has not been installed in \`$libdir'" 1>&2
+              $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2
               finalize=no
             fi
           done
 
           if test "$hardcode_action" = relink; then
             if test "$finalize" = yes; then
-              $echo "$progname: warning: relinking \`$file' on behalf of your buggy system linker" 1>&2
+              $echo "$modename: warning: relinking \`$file' on behalf of your buggy system linker" 1>&2
               $show "$finalize_command"
               if $run eval "$finalize_command"; then :
               else
-                $echo "$progname: error: relink \`$file' with the above command before installing it" 1>&2
+                $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
                 continue
               fi
               file="$objdir/$file"T
             else
-              $echo "$progname: warning: cannot relink \`$file' on behalf of your buggy system linker" 1>&2
+              $echo "$modename: warning: cannot relink \`$file' on behalf of your buggy system linker" 1>&2
             fi
           else
             # Install the binary that we compiled earlier.
-           file=`$echo "$file" | sed "s%\([^/]*\)$%$objdir/\1%"`
+           file=`$echo "X$file" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
           fi
         fi
 
@@ -1773,7 +1959,7 @@ EOF
     done
 
     for file in $staticlibs; do
-      name=`$echo "$file" | sed 's%^.*/%%'`
+      name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
 
       # Set up the ranlib parameters.
       oldlib="$destdir/$name"
@@ -1781,18 +1967,8 @@ EOF
       $show "$install_prog $file $oldlib"
       $run eval "$install_prog \$file \$oldlib" || exit $?
 
-      # Support stripping libraries.
-      if test -n "$stripme"; then
-        if test -n "$old_striplib"; then
-          $show "$old_striplib $oldlib"
-          $run $old_striplib $oldlib || exit $?
-        else
-          $echo "$progname: warning: no static library stripping program" 1>&2
-        fi
-      fi
-
       # Do each command in the postinstall commands.
-      cmds=`eval $echo \"$old_postinstall_cmds\"`
+      eval cmds=\"$old_postinstall_cmds\"
       IFS="${IFS=      }"; save_ifs="$IFS"; IFS=';'
       for cmd in $cmds; do
         IFS="$save_ifs"
@@ -1803,13 +1979,13 @@ EOF
     done
 
     if test -n "$future_libdirs"; then
-      $echo "$progname: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2
+      $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2
     fi
 
     if test -n "$current_libdirs"; then
       # Maybe just do a dry run.
       test -n "$run" && current_libdirs=" -n$current_libdirs"
-      exec $0 --finish$current_libdirs
+      exec $SHELL $0 --finish$current_libdirs
       exit 1
     fi
 
@@ -1818,44 +1994,77 @@ EOF
 
   # libtool finish mode
   finish)
-    progname="$progname: finish"
+    modename="$modename: finish"
     libdirs="$nonopt"
 
-    if test -n "$finish_cmds" && test -n "$libdirs"; then
+    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
       for dir
       do
         libdirs="$libdirs $dir"
       done
 
       for libdir in $libdirs; do
-        # Do each command in the postinstall commands.
-        cmds=`eval $echo \"$finish_cmds\"`
-        IFS="${IFS=    }"; save_ifs="$IFS"; IFS=';'
-        for cmd in $cmds; do
+       if test -n "$finish_cmds"; then
+         # Do each command in the finish commands.
+         eval cmds=\"$finish_cmds\"
+          IFS="${IFS=  }"; save_ifs="$IFS"; IFS=';'
+          for cmd in $cmds; do
+            IFS="$save_ifs"
+            $show "$cmd"
+            $run eval "$cmd"
+          done
           IFS="$save_ifs"
-          $show "$cmd"
-          $run eval "$cmd"
-        done
-        IFS="$save_ifs"
+       fi
+       if test -n "$finish_eval"; then
+         # Do the single finish_eval.
+         eval cmds=\"$finish_eval\"
+         $run eval "$cmds"
+       fi
       done
     fi
 
-    $echo "To link against installed libraries in LIBDIR, users may have to:"
+    echo "------------------------------------------------------------------------------"
+    echo "Libraries have been installed in:"
+    for libdir in $libdirs; do
+      echo "   $libdir"
+    done
+    echo
+    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:"
     if test -n "$shlibpath_var"; then
-      $echo "   - add LIBDIR to their \`$shlibpath_var' environment variable"
+      echo "   - add LIBDIR to the \`$shlibpath_var' environment variable"
+      echo "     during execution"
+    fi
+    if test -n "$runpath_var"; then
+      echo "   - add LIBDIR to the \`$runpath_var' environment variable"
+      echo "     during linking"
     fi
-    $echo "   - use the \`-LLIBDIR' linker flag"
+    if test -n "$hardcode_libdir_flag_spec"; then
+      libdir=LIBDIR
+      eval flag=\"$hardcode_libdir_flag_spec\"
+
+      echo "   - use the \`$flag' linker flag"
+    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 "------------------------------------------------------------------------------"
     exit 0
     ;;
 
   # libtool execute mode
   execute)
-    progname="$progname: execute"
+    modename="$modename: execute"
 
     # The first argument is the command name.
     cmd="$nonopt"
     if test -z "$cmd"; then
-      $echo "$progname: you must specify a COMMAND" 1>&2
+      $echo "$modename: you must specify a COMMAND" 1>&2
       $echo "$help"
       exit 1
     fi
@@ -1864,7 +2073,7 @@ EOF
     for file in $execute_dlfiles; do
       if test -f "$file"; then :
       else
-       $echo "$progname: \`$file' is not a file" 1>&2
+       $echo "$modename: \`$file' is not a file" 1>&2
        $echo "$help" 1>&2
        exit 1
       fi
@@ -1873,9 +2082,9 @@ EOF
       case "$file" in
       *.la)
         # Check to see that this really is a libtool archive.
-        if egrep "^# Generated by ltmain.sh" $file >/dev/null 2>&1; then :
+        if (sed -e '2q' $file | egrep '^# Generated by ltmain\.sh') >/dev/null 2>&1; then :
         else
-          $echo "$progname: \`$lib' is not a valid libtool archive" 1>&2
+          $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
           $echo "$help" 1>&2
           exit 1
         fi
@@ -1886,36 +2095,36 @@ EOF
 
         # If there is no directory component, then add one.
        case "$file" in
-       */*) . $file ;;
+       */* | *\\*) . $file ;;
         *) . ./$file ;;
        esac
 
        # Skip this library if it cannot be dlopened.
        if test -z "$dlname"; then
          # Warn if it was a shared library.
-         test -n "$library_names" && $echo "$progname: warning: \`$file' was not linked with \`-export-dynamic'"
+         test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'"
          continue
        fi
 
-       dir=`$echo "$file" | sed 's%/[^/]*$%%'`
+       dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
        test "X$dir" = "X$file" && dir=.
 
        if test -f "$dir/$objdir/$dlname"; then
          dir="$dir/$objdir"
        else
-         $echo "$progname: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
+         $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
          exit 1
        fi
        ;;
 
       *.lo)
        # Just add the directory containing the .lo file.
-       dir=`$echo "$file" | sed 's%/[^/]*$%%'`
+       dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
        test "X$dir" = "X$file" && dir=.
        ;;
 
       *)
-       $echo "$progname: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2
+       $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2
         continue
        ;;
       esac
@@ -1943,10 +2152,11 @@ EOF
       case "$file" in
       -*) ;;
       *)
-       if egrep '^# Generated by ltmain.sh' $file >/dev/null 2>&1; then
+        # 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 there is no directory component, then add one.
          case "$file" in
-         */*) . $file ;;
+         */* | *\\*) . $file ;;
          *) . ./$file ;;
          esac
 
@@ -1956,7 +2166,7 @@ EOF
         ;;
       esac
       # Quote arguments (to preserve shell metacharacters).
-      file=`$echo "$file" | sed "$sed_quote_subst"`
+      file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"`
       args="$args \"$file\""
     done
 
@@ -1967,11 +2177,11 @@ EOF
       # Now actually exec the command.
       eval "exec \$cmd$args"
 
-      $echo "$progname: cannot exec \$cmd$args"
+      $echo "$modename: cannot exec \$cmd$args"
       exit 1
     else
       # Display what would be done.
-      eval "$echo \"\$shlibpath_var=\$$shlibpath_var\""
+      eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\""
       $echo "export $shlibpath_var"
       $echo "$cmd$args"
       exit 0
@@ -1980,7 +2190,7 @@ EOF
 
   # libtool uninstall mode
   uninstall)
-    progname="$progname: uninstall"
+    modename="$modename: uninstall"
     rm="$nonopt"
     files=
 
@@ -1993,22 +2203,22 @@ EOF
     done
 
     if test -z "$rm"; then
-      $echo "$progname: you must specify an RM program" 1>&2
+      $echo "$modename: you must specify an RM program" 1>&2
       $echo "$help" 1>&2
       exit 1
     fi
 
     for file in $files; do
-      dir=`$echo "$file" | sed -e 's%/[^/]*$%%'`
+      dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
       test "X$dir" = "X$file" && dir=.
-      name=`$echo "$file" | sed -e 's%^.*/%%'`
+      name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
 
       rmfiles="$file"
 
       case "$name" in
       *.la)
         # Possibly a libtool archive, so verify it.
-        if egrep "^# Generated by ltmain.sh" $file >/dev/null 2>&1; then
+        if (sed -e '2q' $file | egrep '^# Generated by ltmain\.sh') >/dev/null 2>&1; then
           . $dir/$name
 
           # Delete the libtool libraries and symlinks.
@@ -2019,40 +2229,71 @@ EOF
           test -n "$dlname" && rmfiles="$rmfiles $dir/$dlname"
           test -n "$old_library" && rmfiles="$rmfiles $dir/$old_library"
 
+         $show "$rm $rmfiles"
+         $run $rm $rmfiles
+
+         if test -n "$library_names"; then
+           # Do each command in the postuninstall commands.
+           eval cmds=\"$postuninstall_cmds\"
+           IFS="${IFS=         }"; save_ifs="$IFS"; IFS=';'
+           for cmd in $cmds; do
+             IFS="$save_ifs"
+             $show "$cmd"
+             $run eval "$cmd"
+           done
+           IFS="$save_ifs"
+         fi
+
+          if test -n "$old_library"; then
+           # Do each command in the old_postuninstall commands.
+           eval cmds=\"$old_postuninstall_cmds\"
+           IFS="${IFS=         }"; save_ifs="$IFS"; IFS=';'
+           for cmd in $cmds; do
+             IFS="$save_ifs"
+             $show "$cmd"
+             $run eval "$cmd"
+           done
+           IFS="$save_ifs"
+         fi
+
           # FIXME: should reinstall the best remaining shared library.
         fi
         ;;
 
       *.lo)
         if test "$build_old_libs" = yes; then
-          oldobj=`$echo "$name" | sed 's/\.lo$/\.o/'`
+          oldobj=`$echo "X$name" | $Xsed -e 's/\.lo$/\.o/'`
           rmfiles="$rmfiles $dir/$oldobj"
         fi
+       $show "$rm $rmfiles"
+       $run $rm $rmfiles
         ;;
-      esac
 
-      $show "$rm $rmfiles"
-      $run $rm $rmfiles
+      *)
+       $show "$rm $rmfiles"
+       $run $rm $rmfiles
+       ;;
+      esac
     done
     exit 0
     ;;
 
   "")
-    $echo "$progname: you must specify a MODE" 1>&2
+    $echo "$modename: you must specify a MODE" 1>&2
     $echo "$generic_help" 1>&2
     exit 1
     ;;
   esac
 
-  $echo "$progname: invalid operation mode \`$mode'" 1>&2
+  $echo "$modename: invalid operation mode \`$mode'" 1>&2
   $echo "$generic_help" 1>&2
   exit 1
 fi # test -z "$show_help"
 
 # We need to display help for each of the modes.
 case "$mode" in
-"") cat <<EOF
-Usage: $progname [OPTION]... [MODE-ARG]...
+"") $echo \
+"Usage: $modename [OPTION]... [MODE-ARG]...
 
 Provide generalized library-building support services.
 
@@ -2074,14 +2315,14 @@ MODE must be one of the following:
       link            create a library or an executable
       uninstall       remove libraries from an installed directory
 
-MODE-ARGS vary depending on the MODE.  Try \`$progname --help --mode=MODE' for
-a more detailed description of MODE.
-EOF
+MODE-ARGS vary depending on the MODE.  Try \`$modename --help --mode=MODE' for
+a more detailed description of MODE."
+  exit 0
   ;;
 
 compile)
-  cat <<EOF
-Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
+  $echo \
+"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
 
 Compile a source file into a libtool library object.
 
@@ -2090,13 +2331,12 @@ from the given SOURCEFILE.
 
 The output file name is determined by removing the directory component from
 SOURCEFILE, then substituting the C source code suffix \`.c' with the
-library object suffix, \`.lo'.
-EOF
+library object suffix, \`.lo'."
   ;;
 
 execute)
-  cat <<EOF
-Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
+  $echo \
+"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]...
 
 Automatically set library path, then run a program.
 
@@ -2111,26 +2351,24 @@ If any of the ARGS are libtool executable wrappers, then they are translated
 into their corresponding uninstalled binary, and any of their required library
 directories are added to the library path.
 
-Then, COMMAND is executed, with ARGS as arguments.
-EOF
+Then, COMMAND is executed, with ARGS as arguments."
   ;;
 
 finish)
-  cat <<EOF
-Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
+  $echo \
+"Usage: $modename [OPTION]... --mode=finish [LIBDIR]...
 
 Complete the installation of libtool libraries.
 
 Each LIBDIR is a directory that contains libtool libraries.
 
 The commands that this mode executes may require superuser privileges.  Use
-the \`--dry-run' option if you just want to see what would be executed.
-EOF
+the \`--dry-run' option if you just want to see what would be executed."
   ;;
 
 install)
-  cat <<EOF
-Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
+  $echo \
+"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND...
 
 Install executables or libraries.
 
@@ -2138,13 +2376,12 @@ INSTALL-COMMAND is the installation command.  The first component should be
 either the \`install' or \`cp' program.
 
 The rest of the components are interpreted as arguments to that command (only
-BSD-compatible install options are recognized).
-EOF
+BSD-compatible install options are recognized)."
   ;;
 
 link)
-  cat <<EOF
-Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
+  $echo \
+"Usage: $modename [OPTION]... --mode=link LINK-COMMAND...
 
 Link object files or libraries together to form another library, or to
 create an executable program.
@@ -2154,15 +2391,17 @@ a program from several object files.
 
 The following components of LINK-COMMAND are treated specially:
 
-  -allow-undefined  allow a libtool library to reference undefined symbols
+  -all-static       do not do any dynamic linking at all
   -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
   -dlpreopen FILE   link in FILE and add its symbols to dld_preloaded_symbols
   -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
   -LLIBDIR          search LIBDIR for required installed libraries
   -lNAME            OUTPUT-FILE requires the installed library libNAME
+  -no-undefined     declare that a library does not refer to external symbols
   -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
+  -release RELEASE  specify package release information
   -rpath LIBDIR     the created library will eventually be installed in LIBDIR
-  -static           do not do any dynamic linking or shared library creation
+  -static           do not do any dynamic linking of libtool libraries
   -version-info CURRENT[:REVISION[:AGE]]
                     specify library version info [each variable defaults to 0]
 
@@ -2179,13 +2418,12 @@ If OUTPUT-FILE ends in \`.a', then a standard library is created using \`ar'
 and \`ranlib'.
 
 If OUTPUT-FILE ends in \`.lo' or \`.o', then a reloadable object file is
-created, otherwise an executable program is created.
-EOF
+created, otherwise an executable program is created."
   ;;
 
 uninstall)
-  cat <<EOF
-Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
+  $echo
+"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
 
 Remove libraries from an installation directory.
 
@@ -2194,19 +2432,18 @@ RM is the name of the program to use to delete files associated with each FILE
 to RM.
 
 If FILE is a libtool library, all the files associated with it are deleted.
-Otherwise, only FILE itself is deleted using RM.
-EOF
+Otherwise, only FILE itself is deleted using RM."
   ;;
 
 *)
-  $echo "$progname: invalid operation mode \`$mode'" 1>&2
+  $echo "$modename: invalid operation mode \`$mode'" 1>&2
   $echo "$help" 1>&2
   exit 1
   ;;
 esac
 
-$echo
-$echo "Try \`$progname --help' for more information about other modes."
+echo
+$echo "Try \`$modename --help' for more information about other modes."
 
 exit 0