]> sjero.net Git - wget/blobdiff - ltmain.sh
[svn] Libtool updated to 1.5.8.
[wget] / ltmain.sh
index fe83ff4fb744d4df1f566c9b054e692a12026438..fb79d8c247af845bc84b6ab15cdcaf7e723d00e3 100644 (file)
--- a/ltmain.sh
+++ b/ltmain.sh
@@ -1,7 +1,7 @@
 # ltmain.sh - Provide generalized library-building support services.
 # NOTE: Changing this file will not affect anything until you rerun configure.
 #
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004
 # Free Software Foundation, Inc.
 # Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
 #
 # configuration script generated by Autoconf, you may include it under
 # the same distribution terms that you use for the rest of that program.
 
+basename="s,^.*/,,g"
+
+# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
+# is ksh but when the shell is invoked as "sh" and the current value of
+# the _XPG environment variable is not equal to 1 (one), the special
+# positional parameter $0, within a function call, is the name of the
+# function.
+progpath="$0"
+
+# The name of this program:
+progname=`echo "$progpath" | $SED $basename`
+modename="$progname"
+
+# Global variables:
+EXIT_SUCCESS=0
+EXIT_FAILURE=1
+
+PROGRAM=ltmain.sh
+PACKAGE=libtool
+VERSION=1.5.8
+TIMESTAMP=" (1.1220.2.117 2004/08/04 14:12:05)"
+
+# See if we are running on zsh, and set the options which allow our
+# commands through without removal of \ escapes.
+if test -n "${ZSH_VERSION+set}" ; then
+  setopt NO_GLOB_SUBST
+fi
+
 # Check that we have a working $echo.
 if test "X$1" = X--no-reexec; then
   # Discard the --no-reexec flag, and continue.
@@ -36,7 +64,7 @@ elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
   :
 else
   # Restart under the correct shell, and then maybe $echo will work.
-  exec $SHELL "$0" --no-reexec ${1+"$@"}
+  exec $SHELL "$progpath" --no-reexec ${1+"$@"}
 fi
 
 if test "X$1" = X--fallback-echo; then
@@ -45,19 +73,9 @@ if test "X$1" = X--fallback-echo; then
   cat <<EOF
 $*
 EOF
-  exit 0
+  exit $EXIT_SUCCESS
 fi
 
-# The name of this program.
-progname=`$echo "$0" | ${SED} 's%^.*/%%'`
-modename="$progname"
-
-# Constants.
-PROGRAM=ltmain.sh
-PACKAGE=libtool
-VERSION=1.5
-TIMESTAMP=" (1.1220 2003/04/05 19:32:58)"
-
 default_mode=
 help="Try \`$progname --help' for more information."
 magic="%%%MAGIC variable%%%"
@@ -70,8 +88,8 @@ rm="rm -f"
 Xsed="${SED}"' -e 1s/^X//'
 sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
 # test EBCDIC or ASCII
-case `echo A|od -x` in
*[Cc]1*) # EBCDIC based system
+case `echo A|tr A '\301'` in
A) # EBCDIC based system
   SP2NL="tr '\100' '\n'"
   NL2SP="tr '\r\n' '\100\100'"
   ;;
@@ -94,12 +112,13 @@ if test "${LANG+set}" = set; then
 fi
 
 # Make sure IFS has a sensible default
-: ${IFS="      "}
+: ${IFS="      
+"}
 
 if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
   $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
+  exit $EXIT_FAILURE
 fi
 
 # Global variables.
@@ -118,10 +137,13 @@ o2lo="s/\\.${objext}\$/.lo/"
 # Shell function definitions:
 # This seems to be the best place for them
 
+# func_win32_libid arg
+# return the library type of file 'arg'
+#
 # Need a lot of goo to handle *both* DLLs and import libs
 # Has to be a shell function in order to 'eat' the argument
 # that is supplied when $file_magic_command is called.
-win32_libid () {
+func_win32_libid () {
   win32_libid_type="unknown"
   win32_fileres=`file -L $1 2>/dev/null`
   case $win32_fileres in
@@ -130,7 +152,7 @@ win32_libid () {
     ;;
   *ar\ archive*) # could be an import, or static
     if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \
-      grep -E 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
+      $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
       win32_nmres=`eval $NM -f posix -A $1 | \
        sed -n -e '1,100{/ I /{x;/import/!{s/^/import/;h;p;};x;};}'`
       if test "X$win32_nmres" = "Ximport" ; then
@@ -140,7 +162,7 @@ win32_libid () {
       fi
     fi
     ;;
-  *DLL*) 
+  *DLL*)
     win32_libid_type="x86 DLL"
     ;;
   *executable*) # but shell scripts are "executable" too...
@@ -154,9 +176,192 @@ win32_libid () {
   $echo $win32_libid_type
 }
 
+
+# func_infer_tag arg
+# Infer tagged configuration to use if any are available and
+# if one wasn't chosen via the "--tag" command line option.
+# Only attempt this if the compiler in the base compile
+# command doesn't match the default compiler.
+# arg is usually of the form 'gcc ...'
+func_infer_tag () {
+    if test -n "$available_tags" && test -z "$tagname"; then
+      CC_quoted=
+      for arg in $CC; do
+       case $arg in
+         *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+         arg="\"$arg\""
+         ;;
+       esac
+       CC_quoted="$CC_quoted $arg"
+      done
+      case $@ in
+      # Blanks in the command may have been stripped by the calling shell,
+      # but not from the CC environment variable when configure was run.
+      " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;;
+      # Blanks at the start of $base_compile will cause this to fail
+      # if we don't check for them as well.
+      *)
+       for z in $available_tags; do
+         if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
+           # Evaluate the configuration.
+           eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
+           CC_quoted=
+           for arg in $CC; do
+           # Double-quote args containing other shell metacharacters.
+           case $arg in
+             *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \     ]*|*]*|"")
+             arg="\"$arg\""
+             ;;
+           esac
+           CC_quoted="$CC_quoted $arg"
+         done
+           case "$@ " in
+             " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*)
+             # The compiler in the base compile command matches
+             # the one in the tagged configuration.
+             # Assume this is the tagged configuration we want.
+             tagname=$z
+             break
+             ;;
+           esac
+         fi
+       done
+       # If $tagname still isn't set, then no tagged configuration
+       # was found and let the user know that the "--tag" command
+       # line option must be used.
+       if test -z "$tagname"; then
+         $echo "$modename: unable to infer tagged configuration"
+         $echo "$modename: specify a tag with \`--tag'" 1>&2
+         exit $EXIT_FAILURE
+#        else
+#          $echo "$modename: using $tagname tagged configuration"
+       fi
+       ;;
+      esac
+    fi
+}
+
+
+# func_extract_archives gentop oldlib ...
+func_extract_archives () {
+    my_gentop="$1"; shift
+    my_oldlibs=${1+"$@"}
+    my_oldobjs=""
+    my_xlib=""
+    my_xabs=""
+    my_xdir=""
+    my_status=""
+
+    $show "${rm}r $my_gentop"
+    $run ${rm}r "$my_gentop"
+    $show "$mkdir $my_gentop"
+    $run $mkdir "$my_gentop"
+    my_status=$?
+    if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then
+      exit $my_status
+    fi
+
+    for my_xlib in $my_oldlibs; do
+      # Extract the objects.
+      case $my_xlib in
+       [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
+       *) my_xabs=`pwd`"/$my_xlib" ;;
+      esac
+      my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'`
+      my_xdir="$my_gentop/$my_xlib"
+
+      $show "${rm}r $my_xdir"
+      $run ${rm}r "$my_xdir"
+      $show "$mkdir $my_xdir"
+      $run $mkdir "$my_xdir"
+      status=$?
+      if test "$status" -ne 0 && test ! -d "$my_xdir"; then
+       exit $status
+      fi
+      case $host in
+      *-darwin*)
+       $show "Extracting $my_xabs"
+       # Do not bother doing anything if just a dry run
+       if test -z "$run"; then
+         darwin_orig_dir=`pwd`
+         cd $my_xdir || exit $?
+         darwin_archive=$my_xabs
+         darwin_curdir=`pwd`
+         darwin_base_archive=`basename $darwin_archive`
+         darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null`
+         if test -n "$darwin_arches"; then 
+           darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'`
+           darwin_arch=
+           $show "$darwin_base_archive has multiple architectures $darwin_arches"
+           for darwin_arch in  $darwin_arches ; do
+             mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
+             lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
+             # Remove the table of contents from the thin files.
+             $AR -d "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" __.SYMDEF 2>/dev/null || true
+             $AR -d "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" __.SYMDEF\ SORTED 2>/dev/null || true
+             cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
+             $AR -xo "${darwin_base_archive}"
+             rm "${darwin_base_archive}"
+             cd "$darwin_curdir"
+           done # $darwin_arches
+      ## Okay now we have a bunch of thin objects, gotta fatten them up :)
+           darwin_filelist=`find unfat-$$ -type f | xargs basename | sort -u | $NL2SP`
+           darwin_file=
+           darwin_files=
+           for darwin_file in $darwin_filelist; do
+             darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
+             lipo -create -output "$darwin_file" $darwin_files
+           done # $darwin_filelist
+           rm -rf unfat-$$
+           cd "$darwin_orig_dir"
+         else
+           cd $darwin_orig_dir
+           (cd $my_xdir && $AR x $my_xabs) || exit $?
+         fi # $darwin_arches
+       fi # $run
+      ;;
+      *)
+       # We will extract separately just the conflicting names and we will
+       # no longer touch any unique names. It is faster to leave these
+       # extract automatically by $AR in one run.
+       $show "(cd $my_xdir && $AR x $my_xabs)"
+       $run eval "(cd \$my_xdir && $AR x \$my_xabs)" || exit $?
+       if ($AR t "$my_xabs" | sort | sort -uc >/dev/null 2>&1); then
+         :
+       else
+         $echo "$modename: warning: object name conflicts; renaming object files" 1>&2
+         $echo "$modename: warning: to ensure that they will not overwrite" 1>&2
+         $AR t "$my_xabs" | sort | uniq -cd | while read -r count name
+         do
+           i=1
+           while test "$i" -le "$count"
+           do
+             # Put our $i before any first dot (extension)
+             # Never overwrite any file
+             name_to="$name"
+             while test "X$name_to" = "X$name" || test -f "$my_xdir/$name_to"
+             do
+               name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"`
+             done
+             $show "(cd $my_xdir && $AR xN $i $my_xabs '$name' && $mv '$name' '$name_to')"
+             $run eval "(cd \$my_xdir && $AR xN $i \$my_xabs '$name' && $mv '$name' '$name_to')" || exit $?
+             i=`expr $i + 1`
+           done
+         done
+       fi
+       ;;
+      esac
+      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
+    done
+
+    func_extract_archives_result="$my_oldobjs"
+}
 # End of Shell function definitions
 #####################################
 
+# Darwin sucks
+eval std_shrext=\"$shrext_cmds\"
+
 # Parse our command line options once, thoroughly.
 while test "$#" -gt 0
 do
@@ -176,12 +381,13 @@ do
       ;;
     tag)
       tagname="$arg"
+      preserve_args="${preserve_args}=$arg"
 
       # Check whether tagname contains only valid characters
       case $tagname in
       *[!-_A-Za-z0-9,/]*)
        $echo "$progname: invalid tag name: $tagname" 1>&2
-       exit 1
+       exit $EXIT_FAILURE
        ;;
       esac
 
@@ -191,10 +397,10 @@ do
        # not specially marked.
        ;;
       *)
-       if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$0" > /dev/null; then
+       if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then
          taglist="$taglist $tagname"
          # Evaluate the configuration.
-         eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $0`"
+         eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`"
        else
          $echo "$progname: ignoring unknown tag $tagname" 1>&2
        fi
@@ -223,21 +429,22 @@ do
     $echo "Copyright (C) 2003  Free Software Foundation, Inc."
     $echo "This is free software; see the source for copying conditions.  There is NO"
     $echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-    exit 0
+    exit $EXIT_SUCCESS
     ;;
 
   --config)
-    ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $0
+    ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath
     # Now print the configurations for the tags.
     for tagname in $taglist; do
-      ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$0"
+      ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath"
     done
-    exit 0
+    exit $EXIT_SUCCESS
     ;;
 
   --debug)
     $echo "$progname: enabling shell trace mode"
     set -x
+    preserve_args="$preserve_args $arg"
     ;;
 
   --dry-run | -n)
@@ -256,7 +463,7 @@ do
     else
       $echo "disable static libraries"
     fi
-    exit 0
+    exit $EXIT_SUCCESS
     ;;
 
   --finish) mode="finish" ;;
@@ -268,6 +475,7 @@ do
 
   --quiet | --silent)
     show=:
+    preserve_args="$preserve_args $arg"
     ;;
 
   --tag) prevopt="--tag" prev=tag ;;
@@ -275,6 +483,7 @@ do
     set tag "$optarg" ${1+"$@"}
     shift
     prev=tag
+    preserve_args="$preserve_args --tag"
     ;;
 
   -dlopen)
@@ -285,7 +494,7 @@ do
   -*)
     $echo "$modename: unrecognized option \`$arg'" 1>&2
     $echo "$help" 1>&2
-    exit 1
+    exit $EXIT_FAILURE
     ;;
 
   *)
@@ -298,7 +507,7 @@ done
 if test -n "$prevopt"; then
   $echo "$modename: option \`$prevopt' requires an argument" 1>&2
   $echo "$help" 1>&2
-  exit 1
+  exit $EXIT_FAILURE
 fi
 
 # If this variable is set in any of the actions, the command in it
@@ -354,7 +563,7 @@ if test -z "$show_help"; then
   if test -n "$execute_dlfiles" && test "$mode" != execute; then
     $echo "$modename: unrecognized option \`-dlopen'" 1>&2
     $echo "$help" 1>&2
-    exit 1
+    exit $EXIT_FAILURE
   fi
 
   # Change the help message to a mode-specific one.
@@ -369,9 +578,11 @@ if test -z "$show_help"; then
     # Get the compilation command and the source file.
     base_compile=
     srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
+    suppress_opt=yes
     suppress_output=
     arg_mode=normal
     libobj=
+    later=
 
     for arg
     do
@@ -394,24 +605,19 @@ if test -z "$show_help"; then
        -o)
          if test -n "$libobj" ; then
            $echo "$modename: you cannot specify \`-o' more than once" 1>&2
-           exit 1
+           exit $EXIT_FAILURE
          fi
          arg_mode=target
          continue
          ;;
 
-       -static)
-         build_old_libs=yes
+       -static | -prefer-pic | -prefer-non-pic)
+         later="$later $arg"
          continue
          ;;
 
-       -prefer-pic)
-         pic_mode=yes
-         continue
-         ;;
-
-       -prefer-non-pic)
-         pic_mode=no
+       -no-suppress)
+         suppress_opt=no
          continue
          ;;
 
@@ -424,7 +630,7 @@ if test -z "$show_help"; then
          args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"`
          lastarg=
          save_ifs="$IFS"; IFS=','
-         for arg in $args; do
+         for arg in $args; do
            IFS="$save_ifs"
 
            # Double-quote args containing other shell metacharacters.
@@ -474,11 +680,11 @@ if test -z "$show_help"; then
     case $arg_mode in
     arg)
       $echo "$modename: you must specify an argument for -Xcompile"
-      exit 1
+      exit $EXIT_FAILURE
       ;;
     target)
       $echo "$modename: you must specify a target with \`-o'" 1>&2
-      exit 1
+      exit $EXIT_FAILURE
       ;;
     *)
       # Get the name of the library object.
@@ -511,50 +717,30 @@ if test -z "$show_help"; then
     *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;;
     *)
       $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2
-      exit 1
+      exit $EXIT_FAILURE
       ;;
     esac
 
-    # Infer tagged configuration to use if any are available and
-    # if one wasn't chosen via the "--tag" command line option.
-    # Only attempt this if the compiler in the base compile
-    # command doesn't match the default compiler.
-    if test -n "$available_tags" && test -z "$tagname"; then
-      case $base_compile in
-      # Blanks in the command may have been stripped by the calling shell,
-      # but not from the CC environment variable when configure was run.
-      " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "*) ;;
-      # Blanks at the start of $base_compile will cause this to fail
-      # if we don't check for them as well.
-      *)
-       for z in $available_tags; do
-         if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$0" > /dev/null; then
-           # Evaluate the configuration.
-           eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $0`"
-           case "$base_compile " in
-           "$CC "* | " $CC "* | "`$echo $CC` "* | " `$echo $CC` "*)
-             # The compiler in the base compile command matches
-             # the one in the tagged configuration.
-             # Assume this is the tagged configuration we want.
-             tagname=$z
-             break
-             ;;
-           esac
-         fi
-       done
-       # If $tagname still isn't set, then no tagged configuration
-       # was found and let the user know that the "--tag" command
-       # line option must be used.
-       if test -z "$tagname"; then
-         $echo "$modename: unable to infer tagged configuration"
-         $echo "$modename: specify a tag with \`--tag'" 1>&2
-         exit 1
-#        else
-#          $echo "$modename: using $tagname tagged configuration"
-       fi
+    func_infer_tag $base_compile
+
+    for arg in $later; do
+      case $arg in
+      -static)
+       build_old_libs=yes
+       continue
+       ;;
+
+      -prefer-pic)
+       pic_mode=yes
+       continue
+       ;;
+
+      -prefer-non-pic)
+       pic_mode=no
+       continue
        ;;
       esac
-    fi
+    done
 
     objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
     xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
@@ -568,7 +754,7 @@ if test -z "$show_help"; then
     if test -z "$base_compile"; then
       $echo "$modename: you must specify a compilation command" 1>&2
       $echo "$help" 1>&2
-      exit 1
+      exit $EXIT_FAILURE
     fi
 
     # Delete any leftover library objects.
@@ -579,7 +765,7 @@ if test -z "$show_help"; then
     fi
 
     $run $rm $removelist
-    trap "$run $rm $removelist; exit 1" 1 2 15
+    trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15
 
     # On Cygwin there's no "real" PIC flag so we must build both object types
     case $host_os in
@@ -598,7 +784,7 @@ if test -z "$show_help"; 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
+      trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15
     else
       output_obj=
       need_locks=no
@@ -608,7 +794,7 @@ if test -z "$show_help"; then
     # 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 $run ln "$0" "$lockfile" 2>/dev/null; do
+      until $run ln "$progpath" "$lockfile" 2>/dev/null; do
        $show "Waiting for $lockfile to be removed"
        sleep 2
       done
@@ -626,7 +812,7 @@ avoid parallel builds (make -j) in this platform, or get a better
 compiler."
 
        $run $rm $removelist
-       exit 1
+       exit $EXIT_FAILURE
       fi
       $echo $srcfile > "$lockfile"
     fi
@@ -681,7 +867,7 @@ EOF
       if $run eval "$command"; then :
       else
        test -n "$output_obj" && $run $rm $removelist
-       exit 1
+       exit $EXIT_FAILURE
       fi
 
       if test "$need_locks" = warn &&
@@ -701,7 +887,7 @@ avoid parallel builds (make -j) in this platform, or get a better
 compiler."
 
        $run $rm $removelist
-       exit 1
+       exit $EXIT_FAILURE
       fi
 
       # Just move the object if needed, then go on to compile the next one
@@ -722,7 +908,9 @@ pic_object='$objdir/$objname'
 EOF
 
       # Allow error messages only from the first compilation.
-      suppress_output=' >/dev/null 2>&1'
+      if test "$suppress_opt" = yes; then
+        suppress_output=' >/dev/null 2>&1'
+      fi
     else
       # No PIC object so indicate it doesn't exist in the libtool
       # object file.
@@ -751,7 +939,7 @@ EOF
       if $run eval "$command"; then :
       else
        $run $rm $removelist
-       exit 1
+       exit $EXIT_FAILURE
       fi
 
       if test "$need_locks" = warn &&
@@ -771,7 +959,7 @@ avoid parallel builds (make -j) in this platform, or get a better
 compiler."
 
        $run $rm $removelist
-       exit 1
+       exit $EXIT_FAILURE
       fi
 
       # Just move the object if needed
@@ -809,7 +997,7 @@ EOF
       $run $rm "$lockfile"
     fi
 
-    exit 0
+    exit $EXIT_SUCCESS
     ;;
 
   # libtool link mode
@@ -835,7 +1023,7 @@ EOF
       ;;
     esac
     libtool_args="$nonopt"
-    base_compile="$nonopt"
+    base_compile="$nonopt $@"
     compile_command="$nonopt"
     finalize_command="$nonopt"
 
@@ -867,6 +1055,7 @@ EOF
     no_install=no
     objs=
     non_pic_objects=
+    precious_files_regex=
     prefer_static_libs=no
     preload=no
     prev=
@@ -880,6 +1069,8 @@ EOF
     vinfo=
     vinfo_number=no
 
+    func_infer_tag $base_compile
+
     # We need to know -static, to get the right output filenames.
     for arg
     do
@@ -911,7 +1102,6 @@ EOF
     # Go through the arguments, transforming them on the way.
     while test "$#" -gt 0; do
       arg="$1"
-      base_compile="$base_compile $arg"
       shift
       case $arg in
       *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \    ]*|*]*|"")
@@ -975,7 +1165,7 @@ EOF
          export_symbols="$arg"
          if test ! -f "$arg"; then
            $echo "$modename: symbol file \`$arg' does not exist"
-           exit 1
+           exit $EXIT_FAILURE
          fi
          prev=
          continue
@@ -990,6 +1180,11 @@ EOF
          prev=
          continue
          ;;
+       precious_regex)
+         precious_files_regex="$arg"
+         prev=
+         continue
+         ;;
        release)
          release="-$arg"
          prev=
@@ -1022,7 +1217,7 @@ EOF
                   test "$pic_object" = none && \
                   test "$non_pic_object" = none; then
                  $echo "$modename: cannot find name of object for \`$arg'" 1>&2
-                 exit 1
+                 exit $EXIT_FAILURE
                fi
 
                # Extract subdirectory from the argument.
@@ -1075,7 +1270,7 @@ EOF
                # Only an error if not doing a dry-run.
                if test -z "$run"; then
                  $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
-                 exit 1
+                 exit $EXIT_FAILURE
                else
                  # Dry-run case.
 
@@ -1096,7 +1291,7 @@ EOF
            done
          else
            $echo "$modename: link input file \`$save_arg' does not exist"
-           exit 1
+           exit $EXIT_FAILURE
          fi
          arg=$save_arg
          prev=
@@ -1108,7 +1303,7 @@ EOF
          [\\/]* | [A-Za-z]:[\\/]*) ;;
          *)
            $echo "$modename: only absolute run-paths are allowed" 1>&2
-           exit 1
+           exit $EXIT_FAILURE
            ;;
          esac
          if test "$prev" = rpath; then
@@ -1148,6 +1343,11 @@ EOF
          finalize_command="$finalize_command $qarg"
          continue
          ;;
+       shrext)
+         shrext_cmds="$arg"
+         prev=
+         continue
+         ;;
        *)
          eval "$prev=\"\$arg\""
          prev=
@@ -1196,7 +1396,7 @@ EOF
       -export-symbols | -export-symbols-regex)
        if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
          $echo "$modename: more than one -exported-symbols argument is not allowed"
-         exit 1
+         exit $EXIT_FAILURE
        fi
        if test "X$arg" = "X-export-symbols"; then
          prev=expsyms
@@ -1232,7 +1432,7 @@ EOF
          absdir=`cd "$dir" && pwd`
          if test -z "$absdir"; then
            $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2
-           exit 1
+           exit $EXIT_FAILURE
          fi
          dir="$absdir"
          ;;
@@ -1287,6 +1487,11 @@ EOF
        continue
        ;;
 
+     -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe)
+       deplibs="$deplibs $arg"
+       continue
+       ;;
+
       -module)
        module=yes
        continue
@@ -1351,6 +1556,11 @@ EOF
 
       -o) prev=output ;;
 
+      -precious-files-regex)
+       prev=precious_regex
+       continue
+       ;;
+
       -release)
        prev=release
        continue
@@ -1373,7 +1583,7 @@ EOF
        [\\/]* | [A-Za-z]:[\\/]*) ;;
        *)
          $echo "$modename: only absolute run-paths are allowed" 1>&2
-         exit 1
+         exit $EXIT_FAILURE
          ;;
        esac
        case "$xrpath " in
@@ -1496,7 +1706,7 @@ EOF
             test "$pic_object" = none && \
             test "$non_pic_object" = none; then
            $echo "$modename: cannot find name of object for \`$arg'" 1>&2
-           exit 1
+           exit $EXIT_FAILURE
          fi
 
          # Extract subdirectory from the argument.
@@ -1549,7 +1759,7 @@ EOF
          # Only an error if not doing a dry-run.
          if test -z "$run"; then
            $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
-           exit 1
+           exit $EXIT_FAILURE
          else
            # Dry-run case.
 
@@ -1616,48 +1826,7 @@ EOF
     if test -n "$prev"; then
       $echo "$modename: the \`$prevarg' option requires an argument" 1>&2
       $echo "$help" 1>&2
-      exit 1
-    fi
-
-    # Infer tagged configuration to use if any are available and
-    # if one wasn't chosen via the "--tag" command line option.
-    # Only attempt this if the compiler in the base link
-    # command doesn't match the default compiler.
-    if test -n "$available_tags" && test -z "$tagname"; then
-      case $base_compile in
-      # Blanks in the command may have been stripped by the calling shell,
-      # but not from the CC environment variable when configure was run.
-      "$CC "* | " $CC "* | "`$echo $CC` "* | " `$echo $CC` "*) ;;
-      # Blanks at the start of $base_compile will cause this to fail
-      # if we don't check for them as well.
-      *)
-       for z in $available_tags; do
-         if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$0" > /dev/null; then
-           # Evaluate the configuration.
-           eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $0`"
-           case $base_compile in
-           "$CC "* | " $CC "* | "`$echo $CC` "* | " `$echo $CC` "*)
-             # The compiler in $compile_command matches
-             # the one in the tagged configuration.
-             # Assume this is the tagged configuration we want.
-             tagname=$z
-             break
-             ;;
-           esac
-         fi
-       done
-       # If $tagname still isn't set, then no tagged configuration
-       # was found and let the user know that the "--tag" command
-       # line option must be used.
-       if test -z "$tagname"; then
-         $echo "$modename: unable to infer tagged configuration"
-         $echo "$modename: specify a tag with \`--tag'" 1>&2
-         exit 1
-#       else
-#         $echo "$modename: using $tagname tagged configuration"
-       fi
-       ;;
-      esac
+      exit $EXIT_FAILURE
     fi
 
     if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
@@ -1701,7 +1870,7 @@ EOF
     "")
       $echo "$modename: you must specify an output file" 1>&2
       $echo "$help" 1>&2
-      exit 1
+      exit $EXIT_FAILURE
       ;;
     *.$libext) linkmode=oldlib ;;
     *.lo | *.$objext) linkmode=obj ;;
@@ -1711,7 +1880,7 @@ EOF
 
     case $host in
     *cygwin* | *mingw* | *pw32*)
-      # don't eliminate duplcations in $postdeps and $predeps
+      # don't eliminate duplications in $postdeps and $predeps
       duplicate_compiler_generated_deps=yes
       ;;
     *)
@@ -1764,7 +1933,7 @@ EOF
          *.la) ;;
          *)
            $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2
-           exit 1
+           exit $EXIT_FAILURE
            ;;
          esac
        done
@@ -1802,6 +1971,15 @@ EOF
        lib=
        found=no
        case $deplib in
+       -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe)
+         if test "$linkmode,$pass" = "prog,link"; then
+           compile_deplibs="$deplib $compile_deplibs"
+           finalize_deplibs="$deplib $finalize_deplibs"
+         else
+           deplibs="$deplib $deplibs"
+         fi
+         continue
+         ;;
        -l*)
          if test "$linkmode" != lib && test "$linkmode" != prog; then
            $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2
@@ -1813,12 +1991,18 @@ EOF
          fi
          name=`$echo "X$deplib" | $Xsed -e 's/^-l//'`
          for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do
-           # Search the libtool library
-           lib="$searchdir/lib${name}.la"
-           if test -f "$lib"; then
-             found=yes
-             break
-           fi
+           for search_ext in .la $std_shrext .so .a; do
+             # Search the libtool library
+             lib="$searchdir/lib${name}${search_ext}"
+             if test -f "$lib"; then
+               if test "$search_ext" = ".la"; then
+                 found=yes
+               else
+                 found=no
+               fi
+               break 2
+             fi
+           done
          done
          if test "$found" != yes; then
            # deplib doesn't seem to be a libtool library
@@ -1883,11 +2067,11 @@ EOF
            fi
            if test "$pass" = scan; then
              deplibs="$deplib $deplibs"
-             newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
            else
              compile_deplibs="$deplib $compile_deplibs"
              finalize_deplibs="$deplib $finalize_deplibs"
            fi
+           newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
            ;;
          *)
            $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2
@@ -1915,7 +2099,22 @@ EOF
          fi
          case $linkmode in
          lib)
-           if test "$deplibs_check_method" != pass_all; then
+           valid_a_lib=no
+           case $deplibs_check_method in
+             match_pattern*)
+               set dummy $deplibs_check_method
+               match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+               if eval $echo \"$deplib\" 2>/dev/null \
+                   | $SED 10q \
+                   | $EGREP "$match_pattern_regex" > /dev/null; then
+                 valid_a_lib=yes
+               fi
+               ;;
+             pass_all)
+               valid_a_lib=yes
+               ;;
+            esac
+           if test "$valid_a_lib" != yes; then
              $echo
              $echo "*** Warning: Trying to link with static lib archive $deplib."
              $echo "*** I have the capability to make that library automatically link in when"
@@ -1966,14 +2165,14 @@ EOF
        if test "$found" = yes || test -f "$lib"; then :
        else
          $echo "$modename: cannot find the library \`$lib'" 1>&2
-         exit 1
+         exit $EXIT_FAILURE
        fi
 
        # Check to see that this really is a libtool archive.
        if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
        else
          $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
-         exit 1
+         exit $EXIT_FAILURE
        fi
 
        ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
@@ -2009,7 +2208,7 @@ EOF
          if test -z "$libdir"; then
            if test -z "$old_library"; then
              $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
-             exit 1
+             exit $EXIT_FAILURE
            fi
            # It is a libtool convenience library, so add in its objects.
            convenience="$convenience $ladir/$objdir/$old_library"
@@ -2026,12 +2225,12 @@ EOF
            done
          elif test "$linkmode" != prog && test "$linkmode" != lib; then
            $echo "$modename: \`$lib' is not a convenience library" 1>&2
-           exit 1
+           exit $EXIT_FAILURE
          fi
          continue
        fi # $pass = conv
 
-    
+
        # Get the name of the library we link against.
        linklib=
        for l in $old_library $library_names; do
@@ -2039,16 +2238,18 @@ EOF
        done
        if test -z "$linklib"; then
          $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
-         exit 1
+         exit $EXIT_FAILURE
        fi
 
        # This library was specified with -dlopen.
        if test "$pass" = dlopen; then
          if test -z "$libdir"; then
            $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2
-           exit 1
+           exit $EXIT_FAILURE
          fi
-         if test -z "$dlname" || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
+         if test -z "$dlname" ||
+            test "$dlopen_support" != yes ||
+            test "$build_libtool_libs" = no; then
            # If there is no dlname, no dlopen support or we're linking
            # statically, we need to preload.  We also need to preload any
            # dependent libraries so libltdl's deplib preloader doesn't
@@ -2086,10 +2287,17 @@ EOF
            absdir="$libdir"
          fi
        else
-         dir="$ladir/$objdir"
-         absdir="$abs_ladir/$objdir"
-         # Remove this search path later
-         notinst_path="$notinst_path $abs_ladir"
+         if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+           dir="$ladir"
+           absdir="$abs_ladir"
+           # Remove this search path later
+           notinst_path="$notinst_path $abs_ladir"
+         else
+           dir="$ladir/$objdir"
+           absdir="$abs_ladir/$objdir"
+           # Remove this search path later
+           notinst_path="$notinst_path $abs_ladir"
+         fi
        fi # $installed = yes
        name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
 
@@ -2097,7 +2305,7 @@ EOF
        if test "$pass" = dlpreopen; then
          if test -z "$libdir"; then
            $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2
-           exit 1
+           exit $EXIT_FAILURE
          fi
          # Prefer using a static library (so that no silly _DYNAMIC symbols
          # are required to link).
@@ -2124,7 +2332,7 @@ EOF
          continue
        fi
 
-    
+
        if test "$linkmode" = prog && test "$pass" != link; then
          newlib_search_path="$newlib_search_path $ladir"
          deplibs="$lib $deplibs"
@@ -2211,17 +2419,18 @@ EOF
            need_relink=yes
          fi
          # This is a shared library
-       
-      # Warn about portability, can't link against -module's on some systems (darwin)
-      if test "$shouldnotlink" = yes && test "$pass" = link ; then
+
+         # Warn about portability, can't link against -module's on
+         # some systems (darwin)
+         if test "$shouldnotlink" = yes && test "$pass" = link ; then
            $echo
            if test "$linkmode" = prog; then
              $echo "*** Warning: Linking the executable $output against the loadable module"
            else
              $echo "*** Warning: Linking the shared library $output against the loadable module"
            fi
-           $echo "*** $linklib is not portable!"    
-      fi         
+           $echo "*** $linklib is not portable!"
+         fi
          if test "$linkmode" = lib &&
             test "$hardcode_into_libs" = yes; then
            # Hardcode the library path.
@@ -2279,9 +2488,10 @@ EOF
            else
              $show "extracting exported symbol list from \`$soname'"
              save_ifs="$IFS"; IFS='~'
-             eval cmds=\"$extract_expsyms_cmds\"
+             cmds=$extract_expsyms_cmds
              for cmd in $cmds; do
                IFS="$save_ifs"
+               eval cmd=\"$cmd\"
                $show "$cmd"
                $run eval "$cmd" || exit $?
              done
@@ -2292,9 +2502,10 @@ EOF
            if test -f "$output_objdir/$newlib"; then :; else
              $show "generating import library for \`$soname'"
              save_ifs="$IFS"; IFS='~'
-             eval cmds=\"$old_archive_from_expsyms_cmds\"
+             cmds=$old_archive_from_expsyms_cmds
              for cmd in $cmds; do
                IFS="$save_ifs"
+               eval cmd=\"$cmd\"
                $show "$cmd"
                $run eval "$cmd" || exit $?
              done
@@ -2317,9 +2528,9 @@ EOF
                case $host in
                  *-*-sco3.2v5* ) add_dir="-L$dir" ;;
                  *-*-darwin* )
-                   # if the lib is a module then we can not link against it, someone
-                   # is ignoring the new warnings I added
-                   if /usr/bin/file -L $add 2> /dev/null | grep "bundle" >/dev/null ; then
+                   # if the lib is a module then we can not link against
+                   # it, someone is ignoring the new warnings I added
+                   if /usr/bin/file -L $add 2> /dev/null | $EGREP "bundle" >/dev/null ; then
                      $echo "** Warning, lib $linklib is a module, not a shared library"
                      if test -z "$old_library" ; then
                        $echo
@@ -2327,7 +2538,7 @@ EOF
                        $echo "** The link will probably fail, sorry"
                      else
                        add="$dir/$old_library"
-                     fi 
+                     fi
                    fi
                esac
              elif test "$hardcode_minus_L" = no; then
@@ -2352,7 +2563,7 @@ EOF
                if test -n "$inst_prefix_dir"; then
                  case "$libdir" in
                    [\\/]*)
-                     add_dir="-L$inst_prefix_dir$libdir $add_dir"
+                     add_dir="$add_dir -L$inst_prefix_dir$libdir"
                      ;;
                  esac
                fi
@@ -2369,7 +2580,7 @@ EOF
 
            if test "$lib_linked" != yes; then
              $echo "$modename: configuration error: unsupported hardcode properties"
-             exit 1
+             exit $EXIT_FAILURE
            fi
 
            if test -n "$add_shlibpath"; then
@@ -2412,7 +2623,8 @@ EOF
              esac
              add="-l$name"
            elif test "$hardcode_automatic" = yes; then
-             if test -n "$inst_prefix_dir" && test -f "$inst_prefix_dir$libdir/$linklib" ; then
+             if test -n "$inst_prefix_dir" &&
+                test -f "$inst_prefix_dir$libdir/$linklib" ; then
                add="$inst_prefix_dir$libdir/$linklib"
              else
                add="$libdir/$linklib"
@@ -2424,7 +2636,7 @@ EOF
              if test -n "$inst_prefix_dir"; then
                case "$libdir" in
                  [\\/]*)
-                   add_dir="-L$inst_prefix_dir$libdir $add_dir"
+                   add_dir="$add_dir -L$inst_prefix_dir$libdir"
                    ;;
                esac
              fi
@@ -2492,7 +2704,8 @@ EOF
 
        if test "$linkmode" = lib; then
          if test -n "$dependency_libs" &&
-            { test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes ||
+            { test "$hardcode_into_libs" != yes ||
+              test "$build_old_libs" = yes ||
               test "$link_static" = yes; }; then
            # Extract -R from dependency_libs
            temp_deplibs=
@@ -2549,7 +2762,7 @@ EOF
                  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
                  if test -z "$libdir"; then
                    $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
-                   exit 1
+                   exit $EXIT_FAILURE
                  fi
                  if test "$absdir" != "$libdir"; then
                    $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2
@@ -2559,7 +2772,8 @@ EOF
                depdepl=
                case $host in
                *-*-darwin*)
-                 # we do not want to link against static libs, but need to link against shared
+                 # we do not want to link against static libs,
+                 # but need to link against shared
                  eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
                  if test -n "$deplibrary_names" ; then
                    for tmp in $deplibrary_names ; do
@@ -2567,39 +2781,42 @@ EOF
                    done
                    if test -f "$path/$depdepl" ; then
                      depdepl="$path/$depdepl"
-                  fi
-                   newlib_search_path="$newlib_search_path $path"
-                   path=""
+                   fi
+                   # do not add paths which are already there
+                   case " $newlib_search_path " in
+                   *" $path "*) ;;
+                   *) newlib_search_path="$newlib_search_path $path";;
+                   esac
                  fi
+                 path=""
                  ;;
                *)
-               path="-L$path"
-               ;;
-               esac 
-               
+                 path="-L$path"
+                 ;;
+               esac
                ;;
-                 -l*)
+             -l*)
                case $host in
                *-*-darwin*)
-                # Again, we only want to link against shared libraries
-                eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"`
-                for tmp in $newlib_search_path ; do
-                    if test -f "$tmp/lib$tmp_libs.dylib" ; then
-                      eval depdepl="$tmp/lib$tmp_libs.dylib"
-                      break
-                    fi  
-         done
-         path=""
+                 # Again, we only want to link against shared libraries
+                 eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"`
+                 for tmp in $newlib_search_path ; do
+                   if test -f "$tmp/lib$tmp_libs.dylib" ; then
+                     eval depdepl="$tmp/lib$tmp_libs.dylib"
+                     break
+                   fi
+                 done
+                 path=""
                  ;;
                *) continue ;;
-               esac              
+               esac
                ;;
              *) continue ;;
              esac
              case " $deplibs " in
              *" $depdepl "*) ;;
-             *) deplibs="$deplibs $depdepl" ;;
-             esac            
+             *) deplibs="$depdepl $deplibs" ;;
+             esac
              case " $deplibs " in
              *" $path "*) ;;
              *) deplibs="$deplibs $path" ;;
@@ -2689,7 +2906,8 @@ EOF
          eval $var=\"$tmp_libs\"
        done # for var
       fi
-      # Last step: remove runtime libs from dependency_libs (they stay in deplibs)
+      # Last step: remove runtime libs from dependency_libs
+      # (they stay in deplibs)
       tmp_libs=
       for i in $dependency_libs ; do
        case " $predeps $postdeps $compiler_lib_search_path " in
@@ -2749,19 +2967,19 @@ EOF
       case $outputname in
       lib*)
        name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
-       eval shared_ext=\"$shrext\"
+       eval shared_ext=\"$shrext_cmds\"
        eval libname=\"$libname_spec\"
        ;;
       *)
        if test "$module" = no; then
          $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2
          $echo "$help" 1>&2
-         exit 1
+         exit $EXIT_FAILURE
        fi
        if test "$need_lib_prefix" != no; then
          # Add the "lib" prefix for modules if required
          name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
-         eval shared_ext=\"$shrext\"
+         eval shared_ext=\"$shrext_cmds\"
          eval libname=\"$libname_spec\"
        else
          libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
@@ -2772,7 +2990,7 @@ EOF
       if test -n "$objs"; then
        if test "$deplibs_check_method" != pass_all; then
          $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1
-         exit 1
+         exit $EXIT_FAILURE
        else
          $echo
          $echo "*** Warning: Linking the shared library $output against the non-libtool"
@@ -2820,13 +3038,13 @@ EOF
        if test -n "$8"; then
          $echo "$modename: too many parameters to \`-version-info'" 1>&2
          $echo "$help" 1>&2
-         exit 1
+         exit $EXIT_FAILURE
        fi
 
        # convert absolute version numbers to libtool ages
        # this retains compatibility with .la files and attempts
        # to make the code below a bit more comprehensible
-       
+
        case $vinfo_number in
        yes)
          number_major="$2"
@@ -2870,7 +3088,7 @@ EOF
        *)
          $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2
          $echo "$modename: \`$vinfo' is not valid version information" 1>&2
-         exit 1
+         exit $EXIT_FAILURE
          ;;
        esac
 
@@ -2879,7 +3097,7 @@ EOF
        *)
          $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2
          $echo "$modename: \`$vinfo' is not valid version information" 1>&2
-         exit 1
+         exit $EXIT_FAILURE
          ;;
        esac
 
@@ -2888,14 +3106,14 @@ EOF
        *)
          $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2
          $echo "$modename: \`$vinfo' is not valid version information" 1>&2
-         exit 1
+         exit $EXIT_FAILURE
          ;;
        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
+         exit $EXIT_FAILURE
        fi
 
        # Calculate the version variables.
@@ -2912,7 +3130,7 @@ EOF
          versuffix="$major.$age.$revision"
          # Darwin ld doesn't like 0 for these options...
          minor_current=`expr $current + 1`
-         verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
+         verstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
          ;;
 
        freebsd-aout)
@@ -2984,7 +3202,7 @@ EOF
        *)
          $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
+         exit $EXIT_FAILURE
          ;;
        esac
 
@@ -3038,6 +3256,12 @@ EOF
            *.$objext)
               ;;
            $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
+              if test "X$precious_files_regex" != "X"; then
+                if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
+                then
+                  continue
+                fi
+              fi
               removelist="$removelist $p"
               ;;
            *) ;;
@@ -3517,7 +3741,7 @@ EOF
        fi
 
        # Get the real and link names of the library.
-       eval shared_ext=\"$shrext\"
+       eval shared_ext=\"$shrext_cmds\"
        eval library_names=\"$library_names_spec\"
        set dummy $library_names
        realname="$2"
@@ -3547,10 +3771,11 @@ EOF
            $show "generating symbol list for \`$libname.la'"
            export_symbols="$output_objdir/$libname.exp"
            $run $rm $export_symbols
-           eval cmds=\"$export_symbols_cmds\"
+           cmds=$export_symbols_cmds
            save_ifs="$IFS"; IFS='~'
            for cmd in $cmds; do
              IFS="$save_ifs"
+             eval cmd=\"$cmd\"
              if len=`expr "X$cmd" : ".*"` &&
               test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
                $show "$cmd"
@@ -3580,12 +3805,12 @@ EOF
        for test_deplib in $deplibs; do
                case " $convenience " in
                *" $test_deplib "*) ;;
-               *) 
+               *)
                        tmp_deplibs="$tmp_deplibs $test_deplib"
                        ;;
                esac
        done
-       deplibs="$tmp_deplibs" 
+       deplibs="$tmp_deplibs"
 
        if test -n "$convenience"; then
          if test -n "$whole_archive_flag_spec"; then
@@ -3593,67 +3818,13 @@ EOF
            eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
          else
            gentop="$output_objdir/${outputname}x"
-           $show "${rm}r $gentop"
-           $run ${rm}r "$gentop"
-           $show "$mkdir $gentop"
-           $run $mkdir "$gentop"
-           status=$?
-           if test "$status" -ne 0 && test ! -d "$gentop"; then
-             exit $status
-           fi
            generated="$generated $gentop"
 
-           for xlib in $convenience; do
-             # Extract the objects.
-             case $xlib in
-             [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
-             *) xabs=`pwd`"/$xlib" ;;
-             esac
-             xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
-             xdir="$gentop/$xlib"
-
-             $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
-             # We will extract separately just the conflicting names and we will no
-             # longer touch any unique names. It is faster to leave these extract
-             # automatically by $AR in one run.
-             $show "(cd $xdir && $AR x $xabs)"
-             $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
-             if ($AR t "$xabs" | sort | sort -uc >/dev/null 2>&1); then
-               :
-             else
-               $echo "$modename: warning: object name conflicts; renaming object files" 1>&2
-               $echo "$modename: warning: to ensure that they will not overwrite" 1>&2
-               $AR t "$xabs" | sort | uniq -cd | while read -r count name
-               do
-                 i=1
-                 while test "$i" -le "$count"
-                 do
-                  # Put our $i before any first dot (extension)
-                  # Never overwrite any file
-                  name_to="$name"
-                  while test "X$name_to" = "X$name" || test -f "$xdir/$name_to"
-                  do
-                    name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"`
-                  done
-                  $show "(cd $xdir && $AR xN $i $xabs '$name' && $mv '$name' '$name_to')"
-                  $run eval "(cd \$xdir && $AR xN $i \$xabs '$name' && $mv '$name' '$name_to')" || exit $?
-                  i=`expr $i + 1`
-                 done
-               done
-             fi
-
-             libobjs="$libobjs "`find $xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
-           done
+           func_extract_archives $gentop $convenience
+           libobjs="$libobjs $func_extract_archives_result"
          fi
        fi
-
+       
        if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
          eval flag=\"$thread_safe_flag_spec\"
          linker_flags="$linker_flags $flag"
@@ -3667,19 +3838,23 @@ EOF
        # Do each of the archive commands.
        if test "$module" = yes && test -n "$module_cmds" ; then
          if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
-           eval cmds=\"$module_expsym_cmds\"
+           eval test_cmds=\"$module_expsym_cmds\"
+           cmds=$module_expsym_cmds
          else
-           eval cmds=\"$module_cmds\"
+           eval test_cmds=\"$module_cmds\"
+           cmds=$module_cmds
          fi
        else
        if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
-         eval cmds=\"$archive_expsym_cmds\"
+         eval test_cmds=\"$archive_expsym_cmds\"
+         cmds=$archive_expsym_cmds
        else
-         eval cmds=\"$archive_cmds\"
+         eval test_cmds=\"$archive_cmds\"
+         cmds=$archive_cmds
          fi
        fi
 
-       if test "X$skipped_export" != "X:" && len=`expr "X$cmds" : ".*"` &&
+       if test "X$skipped_export" != "X:" && len=`expr "X$test_cmds" : ".*"` &&
           test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
          :
        else
@@ -3780,19 +3955,28 @@ EOF
          # value of $libobjs for piecewise linking.
 
          # Do each of the archive commands.
+         if test "$module" = yes && test -n "$module_cmds" ; then
+           if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
+             cmds=$module_expsym_cmds
+           else
+             cmds=$module_cmds
+           fi
+         else
          if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
-           eval cmds=\"$archive_expsym_cmds\"
+           cmds=$archive_expsym_cmds
          else
-           eval cmds=\"$archive_cmds\"
+           cmds=$archive_cmds
+           fi
          fi
 
          # Append the command to remove the reloadable object files
          # to the just-reset $cmds.
-         eval cmds=\"\$cmds~$rm $delfiles\"
+         eval cmds=\"\$cmds~\$rm $delfiles\"
        fi
        save_ifs="$IFS"; IFS='~'
        for cmd in $cmds; do
          IFS="$save_ifs"
+         eval cmd=\"$cmd\"
          $show "$cmd"
          $run eval "$cmd" || exit $?
        done
@@ -3801,7 +3985,7 @@ EOF
        # Restore the uninstalled library and exit
        if test "$mode" = relink; then
          $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $?
-         exit 0
+         exit $EXIT_SUCCESS
        fi
 
        # Create links to the real library.
@@ -3849,7 +4033,7 @@ EOF
       *.lo)
        if test -n "$objs$old_deplibs"; then
          $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2
-         exit 1
+         exit $EXIT_FAILURE
        fi
        libobj="$output"
        obj=`$echo "X$output" | $Xsed -e "$lo2o"`
@@ -3878,64 +4062,10 @@ EOF
          eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\"
        else
          gentop="$output_objdir/${obj}x"
-         $show "${rm}r $gentop"
-         $run ${rm}r "$gentop"
-         $show "$mkdir $gentop"
-         $run $mkdir "$gentop"
-         status=$?
-         if test "$status" -ne 0 && test ! -d "$gentop"; then
-           exit $status
-         fi
          generated="$generated $gentop"
 
-         for xlib in $convenience; do
-           # Extract the objects.
-           case $xlib in
-           [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
-           *) xabs=`pwd`"/$xlib" ;;
-           esac
-           xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
-           xdir="$gentop/$xlib"
-
-           $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
-           # We will extract separately just the conflicting names and we will no
-           # longer touch any unique names. It is faster to leave these extract
-           # automatically by $AR in one run.
-           $show "(cd $xdir && $AR x $xabs)"
-           $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
-           if ($AR t "$xabs" | sort | sort -uc >/dev/null 2>&1); then
-             :
-           else
-             $echo "$modename: warning: object name conflicts; renaming object files" 1>&2
-             $echo "$modename: warning: to ensure that they will not overwrite" 1>&2
-             $AR t "$xabs" | sort | uniq -cd | while read -r count name
-             do
-               i=1
-               while test "$i" -le "$count"
-               do
-                # Put our $i before any first dot (extension)
-                # Never overwrite any file
-                name_to="$name"
-                while test "X$name_to" = "X$name" || test -f "$xdir/$name_to"
-                do
-                  name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"`
-                done
-                $show "(cd $xdir && $AR xN $i $xabs '$name' && $mv '$name' '$name_to')"
-                $run eval "(cd \$xdir && $AR xN $i \$xabs '$name' && $mv '$name' '$name_to')" || exit $?
-                i=`expr $i + 1`
-               done
-             done
-           fi
-
-           reload_conv_objs="$reload_objs "`find $xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
-         done
+         func_extract_archives $gentop $convenience
+         reload_conv_objs="$reload_objs $func_extract_archives_result"
        fi
       fi
 
@@ -3943,10 +4073,11 @@ EOF
       reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
 
       output="$obj"
-      eval cmds=\"$reload_cmds\"
+      cmds=$reload_cmds
       save_ifs="$IFS"; IFS='~'
       for cmd in $cmds; do
        IFS="$save_ifs"
+       eval cmd=\"$cmd\"
        $show "$cmd"
        $run eval "$cmd" || exit $?
       done
@@ -3959,7 +4090,7 @@ EOF
          $run ${rm}r $gentop
        fi
 
-       exit 0
+       exit $EXIT_SUCCESS
       fi
 
       if test "$build_libtool_libs" != yes; then
@@ -3972,17 +4103,18 @@ EOF
        # accidentally link it into a program.
        # $show "echo timestamp > $libobj"
        # $run eval "echo timestamp > $libobj" || exit $?
-       exit 0
+       exit $EXIT_SUCCESS
       fi
 
       if test -n "$pic_flag" || test "$pic_mode" != default; then
        # Only do commands if we really have different PIC objects.
        reload_objs="$libobjs $reload_conv_objs"
        output="$libobj"
-       eval cmds=\"$reload_cmds\"
+       cmds=$reload_cmds
        save_ifs="$IFS"; IFS='~'
        for cmd in $cmds; do
          IFS="$save_ifs"
+         eval cmd=\"$cmd\"
          $show "$cmd"
          $run eval "$cmd" || exit $?
        done
@@ -3994,7 +4126,7 @@ EOF
        $run ${rm}r $gentop
       fi
 
-      exit 0
+      exit $EXIT_SUCCESS
       ;;
 
     prog)
@@ -4312,7 +4444,7 @@ static const void *lt_preloaded_setup() {
          ;;
        *)
          $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
-         exit 1
+         exit $EXIT_FAILURE
          ;;
        esac
       else
@@ -4400,7 +4532,7 @@ static const void *lt_preloaded_setup() {
        # Link the executable and exit
        $show "$link_command"
        $run eval "$link_command" || exit $?
-       exit 0
+       exit $EXIT_SUCCESS
       fi
 
       if test "$hardcode_action" = relink; then
@@ -4455,10 +4587,10 @@ static const void *lt_preloaded_setup() {
       fi
 
       # Quote $echo for shipping.
-      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";;
+      if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then
+       case $progpath in
+       [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
+       *) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
        esac
        qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"`
       else
@@ -4484,7 +4616,7 @@ static const void *lt_preloaded_setup() {
            cwrappersource=`$echo ${objdir}/lt-${output}.c`
            cwrapper=`$echo ${output}.exe`
            $rm $cwrappersource $cwrapper
-           trap "$rm $cwrappersource $cwrapper; exit 1" 1 2 15
+           trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
 
            cat > $cwrappersource <<EOF
 
@@ -4493,7 +4625,7 @@ static const void *lt_preloaded_setup() {
 
    The $output program cannot be directly executed until all the libtool
    libraries that it depends on are installed.
-   
+
    This wrapper executable should never be moved out of the build directory.
    If it is, it will not operate correctly.
 
@@ -4525,7 +4657,7 @@ EOF
 #if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
   defined (__OS2__)
 #define HAVE_DOS_BASED_FILE_SYSTEM
-#ifndef DIR_SEPARATOR_2 
+#ifndef DIR_SEPARATOR_2
 #define DIR_SEPARATOR_2 '\\'
 #endif
 #endif
@@ -4556,7 +4688,7 @@ main (int argc, char *argv[])
 {
   char **newargz;
   int i;
-  
+
   program_name = (char *) xstrdup ((char *) basename (argv[0]));
   newargz = XMALLOC(char *, argc+2);
 EOF
@@ -4569,7 +4701,7 @@ EOF
   newargz[1] = fnqualify(argv[0]);
   /* we know the script has the same name, without the .exe */
   /* so make sure newargz[1] doesn't end in .exe */
-  strendzap(newargz[1],".exe"); 
+  strendzap(newargz[1],".exe");
   for (i = 1; i < argc; i++)
     newargz[i+1] = xstrdup(argv[i]);
   newargz[argc+1] = NULL;
@@ -4592,7 +4724,7 @@ xmalloc (size_t num)
   return p;
 }
 
-char * 
+char *
 xstrdup (const char *string)
 {
   return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL
@@ -4606,7 +4738,7 @@ basename (const char *name)
 
 #if defined (HAVE_DOS_BASED_FILE_SYSTEM)
   /* Skip over the disk name in MSDOS pathnames. */
-  if (isalpha (name[0]) && name[1] == ':') 
+  if (isalpha (name[0]) && name[1] == ':')
     name += 2;
 #endif
 
@@ -4616,7 +4748,7 @@ basename (const char *name)
   return (char *) base;
 }
 
-char * 
+char *
 fnqualify(const char *path)
 {
   size_t size;
@@ -4644,7 +4776,7 @@ fnqualify(const char *path)
 }
 
 char *
-strendzap(char *str, const char *pat) 
+strendzap(char *str, const char *pat)
 {
   size_t len, patlen;
 
@@ -4664,7 +4796,7 @@ strendzap(char *str, const char *pat)
 }
 
 static void
-lt_error_core (int exit_status, const char * mode, 
+lt_error_core (int exit_status, const char * mode,
           const char * message, va_list ap)
 {
   fprintf (stderr, "%s: %s: ", program_name, mode);
@@ -4693,7 +4825,7 @@ EOF
          ;;
        esac
        $rm $output
-       trap "$rm $output; exit 1" 1 2 15
+       trap "$rm $output; exit $EXIT_FAILURE" 1 2 15
 
        $echo > $output "\
 #! $SHELL
@@ -4714,7 +4846,7 @@ 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
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
 
 relink_command=\"$relink_command\"
 
@@ -4793,7 +4925,7 @@ else
       else
        $echo \"\$relink_command_output\" >&2
        $rm \"\$progdir/\$file\"
-       exit 1
+       exit $EXIT_FAILURE
       fi
     fi
 
@@ -4855,20 +4987,20 @@ else
        esac
        $echo >> $output "\
       \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\"
-      exit 1
+      exit $EXIT_FAILURE
     fi
   else
     # The program doesn't exist.
     \$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
+    exit $EXIT_FAILURE
   fi
 fi\
 "
        chmod +x $output
       fi
-      exit 0
+      exit $EXIT_SUCCESS
       ;;
     esac
 
@@ -4891,76 +5023,21 @@ fi\
 
       if test -n "$addlibs"; then
        gentop="$output_objdir/${outputname}x"
-       $show "${rm}r $gentop"
-       $run ${rm}r "$gentop"
-       $show "$mkdir $gentop"
-       $run $mkdir "$gentop"
-       status=$?
-       if test "$status" -ne 0 && test ! -d "$gentop"; then
-         exit $status
-       fi
        generated="$generated $gentop"
 
-       # Add in members from convenience archives.
-       for xlib in $addlibs; do
-         # Extract the objects.
-         case $xlib in
-         [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
-         *) xabs=`pwd`"/$xlib" ;;
-         esac
-         xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
-         xdir="$gentop/$xlib"
-
-         $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
-         # We will extract separately just the conflicting names and we will no
-         # longer touch any unique names. It is faster to leave these extract
-         # automatically by $AR in one run.
-         $show "(cd $xdir && $AR x $xabs)"
-         $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
-         if ($AR t "$xabs" | sort | sort -uc >/dev/null 2>&1); then
-           :
-         else
-           $echo "$modename: warning: object name conflicts; renaming object files" 1>&2
-           $echo "$modename: warning: to ensure that they will not overwrite" 1>&2
-           $AR t "$xabs" | sort | uniq -cd | while read -r count name
-           do
-             i=1
-             while test "$i" -le "$count"
-             do
-              # Put our $i before any first dot (extension)
-              # Never overwrite any file
-              name_to="$name"
-              while test "X$name_to" = "X$name" || test -f "$xdir/$name_to"
-              do
-                name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"`
-              done
-              $show "(cd $xdir && $AR xN $i $xabs '$name' && $mv '$name' '$name_to')"
-              $run eval "(cd \$xdir && $AR xN $i \$xabs '$name' && $mv '$name' '$name_to')" || exit $?
-              i=`expr $i + 1`
-             done
-           done
-         fi
-
-         oldobjs="$oldobjs "`find $xdir -name \*.${objext} -print -o -name \*.lo -print | $NL2SP`
-       done
+       func_extract_archives $gentop $addlibs
+       oldobjs="$oldobjs $func_extract_archives_result"
       fi
 
       # 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\"
+       cmds=$old_archive_from_new_cmds
       else
        eval cmds=\"$old_archive_cmds\"
 
        if len=`expr "X$cmds" : ".*"` &&
             test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
-         :
+         cmds=$old_archive_cmds
        else
          # the command line is too long to link in one step, link in parts
          $echo "using piecewise archive linking..."
@@ -4987,7 +5064,7 @@ fi\
          for obj in $save_oldobjs
          do
            last_oldobj=$obj
-         done  
+         done
          for obj in $save_oldobjs
          do
            oldobjs="$objlist $obj"
@@ -5001,7 +5078,7 @@ fi\
              oldobjs=$objlist
              if test "$obj" = "$last_oldobj" ; then
                RANLIB=$save_RANLIB
-             fi  
+             fi
              test -z "$concat_cmds" || concat_cmds=$concat_cmds~
              eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
              objlist=
@@ -5012,12 +5089,13 @@ fi\
          if test "X$oldobjs" = "X" ; then
            eval cmds=\"\$concat_cmds\"
          else
-           eval cmds=\"\$concat_cmds~$old_archive_cmds\"
+           eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
          fi
        fi
       fi
       save_ifs="$IFS"; IFS='~'
       for cmd in $cmds; do
+        eval cmd=\"$cmd\"
        IFS="$save_ifs"
        $show "$cmd"
        $run eval "$cmd" || exit $?
@@ -5049,8 +5127,12 @@ fi\
        fi
       done
       # Quote the link command for shipping.
-      relink_command="(cd `pwd`; $SHELL $0 --mode=relink $libtool_args @inst_prefix_dir@)"
+      relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
       relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
+      if test "$hardcode_automatic" = yes ; then
+       relink_command=
+      fi
+
 
       # Only create the output if not a dry run.
       if test -z "$run"; then
@@ -5069,7 +5151,7 @@ fi\
                eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
                if test -z "$libdir"; then
                  $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
-                 exit 1
+                 exit $EXIT_FAILURE
                fi
                newdependency_libs="$newdependency_libs $libdir/$name"
                ;;
@@ -5083,7 +5165,7 @@ fi\
              eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
              if test -z "$libdir"; then
                $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
-               exit 1
+               exit $EXIT_FAILURE
              fi
              newdlfiles="$newdlfiles $libdir/$name"
            done
@@ -5094,11 +5176,30 @@ fi\
              eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
              if test -z "$libdir"; then
                $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
-               exit 1
+               exit $EXIT_FAILURE
              fi
              newdlprefiles="$newdlprefiles $libdir/$name"
            done
            dlprefiles="$newdlprefiles"
+         else
+           newdlfiles=
+           for lib in $dlfiles; do
+             case $lib in
+               [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+               *) abs=`pwd`"/$lib" ;;
+             esac
+             newdlfiles="$newdlfiles $abs"
+           done
+           dlfiles="$newdlfiles"
+           newdlprefiles=
+           for lib in $dlprefiles; do
+             case $lib in
+               [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+               *) abs=`pwd`"/$lib" ;;
+             esac
+             newdlprefiles="$newdlprefiles $abs"
+           done
+           dlprefiles="$newdlprefiles"
          fi
          $rm $output
          # place dlname in correct position for cygwin
@@ -5155,7 +5256,7 @@ relink_command=\"$relink_command\""
       $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $?
       ;;
     esac
-    exit 0
+    exit $EXIT_SUCCESS
     ;;
 
   # libtool install mode
@@ -5244,13 +5345,13 @@ relink_command=\"$relink_command\""
     if test -z "$install_prog"; then
       $echo "$modename: you must specify an install program" 1>&2
       $echo "$help" 1>&2
-      exit 1
+      exit $EXIT_FAILURE
     fi
 
     if test -n "$prev"; then
       $echo "$modename: the \`$prev' option requires an argument" 1>&2
       $echo "$help" 1>&2
-      exit 1
+      exit $EXIT_FAILURE
     fi
 
     if test -z "$files"; then
@@ -5260,7 +5361,7 @@ relink_command=\"$relink_command\""
        $echo "$modename: you must specify a destination" 1>&2
       fi
       $echo "$help" 1>&2
-      exit 1
+      exit $EXIT_FAILURE
     fi
 
     # Strip any trailing slash from the destination.
@@ -5281,7 +5382,7 @@ relink_command=\"$relink_command\""
       if test "$#" -gt 2; then
        $echo "$modename: \`$dest' is not a directory" 1>&2
        $echo "$help" 1>&2
-       exit 1
+       exit $EXIT_FAILURE
       fi
     fi
     case $destdir in
@@ -5293,7 +5394,7 @@ relink_command=\"$relink_command\""
        *)
          $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2
          $echo "$help" 1>&2
-         exit 1
+         exit $EXIT_FAILURE
          ;;
        esac
       done
@@ -5322,7 +5423,7 @@ relink_command=\"$relink_command\""
        else
          $echo "$modename: \`$file' is not a valid libtool archive" 1>&2
          $echo "$help" 1>&2
-         exit 1
+         exit $EXIT_FAILURE
        fi
 
        library_names=
@@ -5364,7 +5465,7 @@ relink_command=\"$relink_command\""
          # but it's something to keep an eye on.
          if test "$inst_prefix_dir" = "$destdir"; then
            $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2
-           exit 1
+           exit $EXIT_FAILURE
          fi
 
          if test -n "$inst_prefix_dir"; then
@@ -5379,7 +5480,7 @@ relink_command=\"$relink_command\""
          if $run eval "$relink_command"; then :
          else
            $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
-           exit 1
+           exit $EXIT_FAILURE
          fi
        fi
 
@@ -5414,10 +5515,11 @@ relink_command=\"$relink_command\""
 
          # Do each command in the postinstall commands.
          lib="$destdir/$realname"
-         eval cmds=\"$postinstall_cmds\"
+         cmds=$postinstall_cmds
          save_ifs="$IFS"; IFS='~'
          for cmd in $cmds; do
            IFS="$save_ifs"
+           eval cmd=\"$cmd\"
            $show "$cmd"
            $run eval "$cmd" || exit $?
          done
@@ -5457,7 +5559,7 @@ relink_command=\"$relink_command\""
        *)
          $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2
          $echo "$help" 1>&2
-         exit 1
+         exit $EXIT_FAILURE
          ;;
        esac
 
@@ -5475,7 +5577,7 @@ relink_command=\"$relink_command\""
          $show "$install_prog $staticobj $staticdest"
          $run eval "$install_prog \$staticobj \$staticdest" || exit $?
        fi
-       exit 0
+       exit $EXIT_SUCCESS
        ;;
 
       *)
@@ -5529,7 +5631,7 @@ relink_command=\"$relink_command\""
          # Check the variables that should have been set.
          if test -z "$notinst_deplibs"; then
            $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2
-           exit 1
+           exit $EXIT_FAILURE
          fi
 
          finalize=yes
@@ -5570,8 +5672,12 @@ relink_command=\"$relink_command\""
              tmpdir="/tmp"
              test -n "$TMPDIR" && tmpdir="$TMPDIR"
              tmpdir="$tmpdir/libtool-$$"
-             if $mkdir -p "$tmpdir" && chmod 700 "$tmpdir"; then :
+             save_umask=`umask`
+             umask 0077
+             if $mkdir "$tmpdir"; then
+               umask $save_umask
              else
+               umask $save_umask
                $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2
                continue
              fi
@@ -5630,16 +5736,17 @@ relink_command=\"$relink_command\""
       $show "$install_prog $file $oldlib"
       $run eval "$install_prog \$file \$oldlib" || exit $?
 
-      if test -n "$stripme" && test -n "$striplib"; then
+      if test -n "$stripme" && test -n "$old_striplib"; then
        $show "$old_striplib $oldlib"
        $run eval "$old_striplib $oldlib" || exit $?
       fi
 
       # Do each command in the postinstall commands.
-      eval cmds=\"$old_postinstall_cmds\"
+      cmds=$old_postinstall_cmds
       save_ifs="$IFS"; IFS='~'
       for cmd in $cmds; do
        IFS="$save_ifs"
+       eval cmd=\"$cmd\"
        $show "$cmd"
        $run eval "$cmd" || exit $?
       done
@@ -5653,9 +5760,9 @@ relink_command=\"$relink_command\""
     if test -n "$current_libdirs"; then
       # Maybe just do a dry run.
       test -n "$run" && current_libdirs=" -n$current_libdirs"
-      exec_cmd='$SHELL $0 --finish$current_libdirs'
+      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
     else
-      exit 0
+      exit $EXIT_SUCCESS
     fi
     ;;
 
@@ -5674,10 +5781,11 @@ relink_command=\"$relink_command\""
       for libdir in $libdirs; do
        if test -n "$finish_cmds"; then
          # Do each command in the finish commands.
-         eval cmds=\"$finish_cmds\"
+         cmds=$finish_cmds
          save_ifs="$IFS"; IFS='~'
          for cmd in $cmds; do
            IFS="$save_ifs"
+           eval cmd=\"$cmd\"
            $show "$cmd"
            $run eval "$cmd" || admincmds="$admincmds
        $cmd"
@@ -5694,7 +5802,7 @@ relink_command=\"$relink_command\""
     fi
 
     # Exit here if they wanted silent mode.
-    test "$show" = : && exit 0
+    test "$show" = : && exit $EXIT_SUCCESS
 
     $echo "----------------------------------------------------------------------"
     $echo "Libraries have been installed in:"
@@ -5730,7 +5838,7 @@ relink_command=\"$relink_command\""
     $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
+    exit $EXIT_SUCCESS
     ;;
 
   # libtool execute mode
@@ -5742,7 +5850,7 @@ relink_command=\"$relink_command\""
     if test -z "$cmd"; then
       $echo "$modename: you must specify a COMMAND" 1>&2
       $echo "$help"
-      exit 1
+      exit $EXIT_FAILURE
     fi
 
     # Handle -dlopen flags immediately.
@@ -5750,7 +5858,7 @@ relink_command=\"$relink_command\""
       if test ! -f "$file"; then
        $echo "$modename: \`$file' is not a file" 1>&2
        $echo "$help" 1>&2
-       exit 1
+       exit $EXIT_FAILURE
       fi
 
       dir=
@@ -5761,7 +5869,7 @@ relink_command=\"$relink_command\""
        else
          $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
          $echo "$help" 1>&2
-         exit 1
+         exit $EXIT_FAILURE
        fi
 
        # Read the libtool library.
@@ -5788,7 +5896,7 @@ relink_command=\"$relink_command\""
          dir="$dir/$objdir"
        else
          $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
-         exit 1
+         exit $EXIT_FAILURE
        fi
        ;;
 
@@ -5868,7 +5976,7 @@ relink_command=\"$relink_command\""
        $echo "export $shlibpath_var"
       fi
       $echo "$cmd$args"
-      exit 0
+      exit $EXIT_SUCCESS
     fi
     ;;
 
@@ -5896,7 +6004,7 @@ relink_command=\"$relink_command\""
     if test -z "$rm"; then
       $echo "$modename: you must specify an RM program" 1>&2
       $echo "$help" 1>&2
-      exit 1
+      exit $EXIT_FAILURE
     fi
 
     rmdirs=
@@ -5951,10 +6059,11 @@ relink_command=\"$relink_command\""
          if test "$mode" = uninstall; then
            if test -n "$library_names"; then
              # Do each command in the postuninstall commands.
-             eval cmds=\"$postuninstall_cmds\"
+             cmds=$postuninstall_cmds
              save_ifs="$IFS"; IFS='~'
              for cmd in $cmds; do
                IFS="$save_ifs"
+               eval cmd=\"$cmd\"
                $show "$cmd"
                $run eval "$cmd"
                if test "$?" -ne 0 && test "$rmforce" != yes; then
@@ -5966,10 +6075,11 @@ relink_command=\"$relink_command\""
 
            if test -n "$old_library"; then
              # Do each command in the old_postuninstall commands.
-             eval cmds=\"$old_postuninstall_cmds\"
+             cmds=$old_postuninstall_cmds
              save_ifs="$IFS"; IFS='~'
              for cmd in $cmds; do
                IFS="$save_ifs"
+               eval cmd=\"$cmd\"
                $show "$cmd"
                $run eval "$cmd"
                if test "$?" -ne 0 && test "$rmforce" != yes; then
@@ -6008,7 +6118,7 @@ relink_command=\"$relink_command\""
        if test "$mode" = clean ; then
          noexename=$name
          case $file in
-         *.exe) 
+         *.exe)
            file=`$echo $file|${SED} 's,.exe$,,'`
            noexename=`$echo $name|${SED} 's,.exe$,,'`
            # $file with .exe has already been added to rmfiles,
@@ -6053,20 +6163,20 @@ relink_command=\"$relink_command\""
   "")
     $echo "$modename: you must specify a MODE" 1>&2
     $echo "$generic_help" 1>&2
-    exit 1
+    exit $EXIT_FAILURE
     ;;
   esac
 
   if test -z "$exec_cmd"; then
     $echo "$modename: invalid operation mode \`$mode'" 1>&2
     $echo "$generic_help" 1>&2
-    exit 1
+    exit $EXIT_FAILURE
   fi
 fi # test -z "$show_help"
 
 if test -n "$exec_cmd"; then
   eval exec $exec_cmd
-  exit 1
+  exit $EXIT_FAILURE
 fi
 
 # We need to display help for each of the modes.
@@ -6102,7 +6212,7 @@ MODE-ARGS vary depending on the MODE.  Try \`$modename --help --mode=MODE' for
 a more detailed description of MODE.
 
 Report bugs to <bug-libtool@gnu.org>."
-  exit 0
+  exit $EXIT_SUCCESS
   ;;
 
 clean)
@@ -6214,6 +6324,8 @@ The following components of LINK-COMMAND are treated specially:
   -no-undefined     declare that a library does not refer to external symbols
   -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
   -objectlist FILE  Use a list of object files found in FILE to specify objects
+  -precious-files-regex REGEX
+                    don't remove output files matching REGEX
   -release RELEASE  specify package release information
   -rpath LIBDIR     the created library will eventually be installed in LIBDIR
   -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
@@ -6255,14 +6367,14 @@ Otherwise, only FILE itself is deleted using RM."
 *)
   $echo "$modename: invalid operation mode \`$mode'" 1>&2
   $echo "$help" 1>&2
-  exit 1
+  exit $EXIT_FAILURE
   ;;
 esac
 
 $echo
 $echo "Try \`$modename --help' for more information about other modes."
 
-exit 0
+exit $EXIT_SUCCESS
 
 # The TAGs below are defined such that we never get into a situation
 # in which we disable both kinds of libraries.  Given conflicting