OSSP CVS Repository

ossp - Difference in ossp-pkg/pcre/ltmain.sh versions 1.3 and 1.4
Not logged in
[Honeypot]  [Browse]  [Home]  [Login]  [Reports
[Search]  [Ticket]  [Timeline
  [History

ossp-pkg/pcre/ltmain.sh 1.3 -> 1.4

--- ltmain.sh    2000/07/07 06:18:50     1.3
+++ ltmain.sh    2001/08/16 10:08:07     1.4
@@ -1,7 +1,8 @@
 # ltmain.sh - Provide generalized library-building support services.
-# NOTE: Changing this file will not affect anything until you rerun ltconfig.
+# NOTE: Changing this file will not affect anything until you rerun configure.
 #
-# Copyright (C) 1996-1999 Free Software Foundation, Inc.
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001
+# Free Software Foundation, Inc.
 # Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
 #
 # This program is free software; you can redistribute it and/or modify
@@ -54,8 +55,8 @@
 # Constants.
 PROGRAM=ltmain.sh
 PACKAGE=libtool
-VERSION=1.3.5
-TIMESTAMP=" (1.385.2.206 2000/05/27 11:12:27)"
+VERSION=1.4
+TIMESTAMP=" (1.920 2001/04/24 23:26:18)"
 
 default_mode=
 help="Try \`$progname --help' for more information."
@@ -83,12 +84,6 @@
   save_LANG="$LANG"; LANG=C; export LANG
 fi
 
-if test "$LTCONFIG_VERSION" != "$VERSION"; then
-  echo "$modename: ltconfig version \`$LTCONFIG_VERSION' does not match $PROGRAM version \`$VERSION'" 1>&2
-  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 "$modename: not configured to build any kind of library" 1>&2
   echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
@@ -113,16 +108,16 @@
   arg="$1"
   shift
 
-  case "$arg" in
+  case $arg in
   -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;;
   *) optarg= ;;
   esac
 
   # If the previous option needs an argument, assign it.
   if test -n "$prev"; then
-    case "$prev" in
+    case $prev in
     execute_dlfiles)
-      eval "$prev=\"\$$prev \$arg\""
+      execute_dlfiles="$execute_dlfiles $arg"
       ;;
     *)
       eval "$prev=\$arg"
@@ -135,7 +130,7 @@
   fi
 
   # Have we seen a non-optional argument yet?
-  case "$arg" in
+  case $arg in
   --help)
     show_help=yes
     ;;
@@ -146,7 +141,7 @@
     ;;
 
   --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' $0
     exit 0
     ;;
 
@@ -211,12 +206,12 @@
 
   # Infer the operation mode.
   if test -z "$mode"; then
-    case "$nonopt" in
+    case $nonopt in
     *cc | *++ | gcc* | *-gcc*)
       mode=link
       for arg
       do
-        case "$arg" in
+        case $arg in
         -c)
            mode=compile
            break
@@ -261,12 +256,13 @@
   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
+  case $mode in
   # libtool compile mode
   compile)
     modename="$modename: compile"
     # Get the compilation command and the source file.
     base_compile=
+    prev=
     lastarg=
     srcfile="$nonopt"
     suppress_output=
@@ -274,8 +270,34 @@
     user_target=no
     for arg
     do
+      case $prev in
+      "") ;;
+      xcompiler)
+        # Aesthetically quote the previous argument.
+        prev=
+        lastarg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+
+        case $arg in
+        # Double-quote args containing other shell metacharacters.
+        # Many Bourne shells cannot handle close brackets correctly
+        # in scan sets, so we specify it separately.
+        *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \   ]*|*]*|"")
+          arg="\"$arg\""
+          ;;
+        esac
+
+        # Add the previous argument to base_compile.
+        if test -z "$base_compile"; then
+          base_compile="$lastarg"
+        else
+          base_compile="$base_compile $lastarg"
+        fi
+        continue
+        ;;
+      esac
+
       # Accept any command-line options.
-      case "$arg" in
+      case $arg in
       -o)
         if test "$user_target" != "no"; then
           $echo "$modename: you cannot specify \`-o' more than once" 1>&2
@@ -288,9 +310,53 @@
         build_old_libs=yes
         continue
         ;;
+
+      -prefer-pic)
+        pic_mode=yes
+        continue
+        ;;
+
+      -prefer-non-pic)
+        pic_mode=no
+        continue
+        ;;
+
+      -Xcompiler)
+        prev=xcompiler
+        continue
+        ;;
+
+      -Wc,*)
+        args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"`
+        lastarg=
+        IFS="${IFS=     }"; save_ifs="$IFS"; IFS=','
+        for arg in $args; do
+          IFS="$save_ifs"
+
+          # Double-quote args containing other shell metacharacters.
+          # Many Bourne shells cannot handle close brackets correctly
+          # in scan sets, so we specify it separately.
+          case $arg in
+            *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \       ]*|*]*|"")
+            arg="\"$arg\""
+            ;;
+          esac
+          lastarg="$lastarg $arg"
+        done
+        IFS="$save_ifs"
+        lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"`
+
+        # Add the arguments to base_compile.
+        if test -z "$base_compile"; then
+          base_compile="$lastarg"
+        else
+          base_compile="$base_compile $lastarg"
+        fi
+        continue
+        ;;
       esac
 
-      case "$user_target" in
+      case $user_target in
       next)
         # The next one is the -o target name
         user_target=yes
@@ -316,10 +382,10 @@
       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
-      # sets, so we specify it separately.
-      case "$lastarg" in
-      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \     ]*|*]*)
+      # Many Bourne shells cannot handle close brackets correctly
+      # in scan sets, so we specify it separately.
+      case $lastarg in
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \     ]*|*]*|"")
         lastarg="\"$lastarg\""
         ;;
       esac
@@ -332,7 +398,7 @@
       fi
     done
 
-    case "$user_target" in
+    case $user_target in
     set)
       ;;
     no)
@@ -348,7 +414,7 @@
     # Recognize several different file suffixes.
     # If the user specifies -o file.o, it is replaced with file.lo
     xform='[cCFSfmso]'
-    case "$libobj" in
+    case $libobj in
     *.ada) xform=ada ;;
     *.adb) xform=adb ;;
     *.ads) xform=ads ;;
@@ -363,7 +429,7 @@
 
     libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
 
-    case "$libobj" in
+    case $libobj in
     *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;;
     *)
       $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2
@@ -387,10 +453,21 @@
     $run $rm $removelist
     trap "$run $rm $removelist; exit 1" 1 2 15
 
+    # On Cygwin there's no "real" PIC flag so we must build both object types
+    case $host_os in
+    cygwin* | mingw* | pw32* | os2*)
+      pic_mode=default
+      ;;
+    esac
+    if test $pic_mode = no && test "$deplibs_check_method" != pass_all; then
+      # non-PIC code in shared libraries is not supported
+      pic_mode=default
+    fi
+
     # Calculate the filename of the output object if compiler does
     # not support -o with -c
     if test "$compiler_c_o" = no; then
-      output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\..*$%%'`.${objext}
+      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
@@ -402,7 +479,7 @@
     # Lock this critical section if it is needed
     # We use this script file to make the link, it avoids creating a new file
     if test "$need_locks" = yes; then
-      until ln "$0" "$lockfile" 2>/dev/null; do
+      until $run ln "$0" "$lockfile" 2>/dev/null; do
         $show "Waiting for $lockfile to be removed"
         sleep 2
       done
@@ -434,8 +511,13 @@
       # Without this assignment, base_compile gets emptied.
       fbsd_hideous_sh_bug=$base_compile
 
-      # All platforms use -DPIC, to notify preprocessed assembler code.
-      command="$base_compile $srcfile $pic_flag -DPIC"
+      if test "$pic_mode" != no; then
+        # All platforms use -DPIC, to notify preprocessed assembler code.
+        command="$base_compile $srcfile $pic_flag -DPIC"
+      else
+        # Don't build PIC code
+        command="$base_compile $srcfile"
+      fi
       if test "$build_old_libs" = yes; then
         lo_libobj="$libobj"
         dir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'`
@@ -506,7 +588,8 @@
       fi
 
       # If we have no pic_flag, then copy the object into place and finish.
-      if test -z "$pic_flag" && test "$build_old_libs" = yes; then
+      if (test -z "$pic_flag" || test "$pic_mode" != default) &&
+         test "$build_old_libs" = yes; then
         # Rename the .lo from within objdir to obj
         if test -f $obj; then
           $show $rm $obj
@@ -546,7 +629,13 @@
 
     # Only build a position-dependent object if we build old libraries.
     if test "$build_old_libs" = yes; then
-      command="$base_compile $srcfile"
+      if test "$pic_mode" != yes; then
+        # Don't build PIC code
+        command="$base_compile $srcfile"
+      else
+        # All platforms use -DPIC, to notify preprocessed assembler code.
+        command="$base_compile $srcfile $pic_flag -DPIC"
+      fi
       if test "$compiler_c_o" = yes; then
         command="$command -o $obj"
         output_obj="$obj"
@@ -612,17 +701,17 @@
 
     # Unlock the critical section if it was locked
     if test "$need_locks" != no; then
-      $rm "$lockfile"
+      $run $rm "$lockfile"
     fi
 
     exit 0
     ;;
 
   # libtool link mode
-  link)
+  link | relink)
     modename="$modename: link"
-    case "$host" in
-    *-*-cygwin* | *-*-mingw* | *-*-os2*)
+    case $host in
+    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
       # It is impossible to link a dll without this setting, and
       # we shouldn't force the makefile maintainer to figure out
       # which system we are compiling for in order to pass an extra
@@ -635,179 +724,12 @@
       # -no-undefined on the libtool link line when we can be certain
       # that all symbols are satisfied, otherwise we get a static library.
       allow_undefined=yes
-
-      # This is a source program that is used to create dlls on Windows
-      # Don't remove nor modify the starting and closing comments
-# /* ltdll.c starts here */
-# #define WIN32_LEAN_AND_MEAN
-# #include <windows.h>
-# #undef WIN32_LEAN_AND_MEAN
-# #include <stdio.h>
-#
-# #ifndef __CYGWIN__
-# #  ifdef __CYGWIN32__
-# #    define __CYGWIN__ __CYGWIN32__
-# #  endif
-# #endif
-#
-# #ifdef __cplusplus
-# extern "C" {
-# #endif
-# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved);
-# #ifdef __cplusplus
-# }
-# #endif
-#
-# #ifdef __CYGWIN__
-# #include <cygwin/cygwin_dll.h>
-# DECLARE_CYGWIN_DLL( DllMain );
-# #endif
-# HINSTANCE __hDllInstance_base;
-#
-# BOOL APIENTRY
-# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved)
-# {
-#   __hDllInstance_base = hInst;
-#   return TRUE;
-# }
-# /* ltdll.c ends here */
-      # This is a source program that is used to create import libraries
-      # on Windows for dlls which lack them. Don't remove nor modify the
-      # starting and closing comments
-# /* impgen.c starts here */
-# /*   Copyright (C) 1999 Free Software Foundation, Inc.
-# 
-#  This file is part of GNU libtool.
-# 
-#  This program is free software; you can redistribute it and/or modify
-#  it under the terms of the GNU General Public License as published by
-#  the Free Software Foundation; either version 2 of the License, or
-#  (at your option) any later version.
-# 
-#  This program is distributed in the hope that it will be useful,
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#  GNU General Public License for more details.
-# 
-#  You should have received a copy of the GNU General Public License
-#  along with this program; if not, write to the Free Software
-#  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-#  */
-# 
-#  #include <stdio.h>           /* for printf() */
-#  #include <unistd.h>          /* for open(), lseek(), read() */
-#  #include <fcntl.h>           /* for O_RDONLY, O_BINARY */
-#  #include <string.h>          /* for strdup() */
-# 
-#  static unsigned int
-#  pe_get16 (fd, offset)
-#       int fd;
-#       int offset;
-#  {
-#    unsigned char b[2];
-#    lseek (fd, offset, SEEK_SET);
-#    read (fd, b, 2);
-#    return b[0] + (b[1]<<8);
-#  }
-# 
-#  static unsigned int
-#  pe_get32 (fd, offset)
-#      int fd;
-#      int offset;
-#  {
-#    unsigned char b[4];
-#    lseek (fd, offset, SEEK_SET);
-#    read (fd, b, 4);
-#    return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24);
-#  }
-# 
-#  static unsigned int
-#  pe_as32 (ptr)
-#       void *ptr;
-#  {
-#    unsigned char *b = ptr;
-#    return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24);
-#  }
-# 
-#  int
-#  main (argc, argv)
-#      int argc;
-#      char *argv[];
-#  {
-#      int dll;
-#      unsigned long pe_header_offset, opthdr_ofs, num_entries, i;
-#      unsigned long export_rva, export_size, nsections, secptr, expptr;
-#      unsigned long name_rvas, nexp;
-#      unsigned char *expdata, *erva;
-#      char *filename, *dll_name;
-# 
-#      filename = argv[1];
-# 
-#      dll = open(filename, O_RDONLY|O_BINARY);
-#      if (!dll)
-#       return 1;
-# 
-#      dll_name = filename;
-#    
-#      for (i=0; filename[i]; i++)
-#       if (filename[i] == '/' || filename[i] == '\\'  || filename[i] == ':')
-#           dll_name = filename + i +1;
-# 
-#      pe_header_offset = pe_get32 (dll, 0x3c);
-#      opthdr_ofs = pe_header_offset + 4 + 20;
-#      num_entries = pe_get32 (dll, opthdr_ofs + 92);
-# 
-#      if (num_entries < 1) /* no exports */
-#       return 1;
-# 
-#      export_rva = pe_get32 (dll, opthdr_ofs + 96);
-#      export_size = pe_get32 (dll, opthdr_ofs + 100);
-#      nsections = pe_get16 (dll, pe_header_offset + 4 +2);
-#      secptr = (pe_header_offset + 4 + 20 +
-#             pe_get16 (dll, pe_header_offset + 4 + 16));
-# 
-#      expptr = 0;
-#      for (i = 0; i < nsections; i++)
-#      {
-#       char sname[8];
-#       unsigned long secptr1 = secptr + 40 * i;
-#       unsigned long vaddr = pe_get32 (dll, secptr1 + 12);
-#       unsigned long vsize = pe_get32 (dll, secptr1 + 16);
-#       unsigned long fptr = pe_get32 (dll, secptr1 + 20);
-#       lseek(dll, secptr1, SEEK_SET);
-#       read(dll, sname, 8);
-#       if (vaddr <= export_rva && vaddr+vsize > export_rva)
-#       {
-#           expptr = fptr + (export_rva - vaddr);
-#           if (export_rva + export_size > vaddr + vsize)
-#               export_size = vsize - (export_rva - vaddr);
-#           break;
-#       }
-#      }
-# 
-#      expdata = (unsigned char*)malloc(export_size);
-#      lseek (dll, expptr, SEEK_SET);
-#      read (dll, expdata, export_size);
-#      erva = expdata - export_rva;
-# 
-#      nexp = pe_as32 (expdata+24);
-#      name_rvas = pe_as32 (expdata+32);
-# 
-#      printf ("EXPORTS\n");
-#      for (i = 0; i<nexp; i++)
-#      {
-#       unsigned long name_rva = pe_as32 (erva+name_rvas+i*4);
-#       printf ("\t%s @ %ld ;\n", erva+name_rva, 1+ i);
-#      }
-# 
-#      return 0;
-#  }
-# /* impgen.c ends here */
       ;;
     *)
       allow_undefined=yes
       ;;
     esac
+    libtool_args="$nonopt"
     compile_command="$nonopt"
     finalize_command="$nonopt"
 
@@ -818,18 +740,12 @@
     convenience=
     old_convenience=
     deplibs=
-    linkopts=
+    old_deplibs=
+    compiler_flags=
+    linker_flags=
+    dllsearchpath=
+    lib_search_path=`pwd`
 
-    if test -n "$shlibpath_var"; then
-      # get the directories listed in $shlibpath_var
-      eval lib_search_path=\`\$echo \"X \${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
-    else
-      lib_search_path=
-    fi
-    # now prepend the system-specific ones
-    eval lib_search_path=\"$sys_lib_search_path_spec\$lib_search_path\"
-    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
-    
     avoid_version=no
     dlfiles=
     dlprefiles=
@@ -839,9 +755,9 @@
     export_symbols_regex=
     generated=
     libobjs=
-    link_against_libtool_libs=
     ltlibs=
     module=no
+    no_install=no
     objs=
     prefer_static_libs=no
     preload=no
@@ -858,7 +774,7 @@
     # We need to know -static, to get the right output filenames.
     for arg
     do
-      case "$arg" in
+      case $arg in
       -all-static | -static)
         if test "X$arg" = "X-all-static"; then
           if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
@@ -887,17 +803,24 @@
     while test $# -gt 0; do
       arg="$1"
       shift
+      case $arg in
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \     ]*|*]*|"")
+        qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test
+        ;;
+      *) qarg=$arg ;;
+      esac
+      libtool_args="$libtool_args $qarg"
 
       # If the previous option needs an argument, assign it.
       if test -n "$prev"; then
-        case "$prev" in
+        case $prev in
         output)
           compile_command="$compile_command @OUTPUT@"
           finalize_command="$finalize_command @OUTPUT@"
           ;;
         esac
 
-        case "$prev" in
+        case $prev in
         dlfiles|dlprefiles)
           if test "$preload" = no; then
             # Add the symbol object into the linking commands.
@@ -905,7 +828,7 @@
             finalize_command="$finalize_command @SYMFILE@"
             preload=yes
           fi
-          case "$arg" in
+          case $arg in
           *.la | *.lo) ;;  # We handle these cases below.
           force)
             if test "$dlself" = no; then
@@ -934,6 +857,7 @@
               dlprefiles="$dlprefiles $arg"
             fi
             prev=
+            continue
             ;;
           esac
           ;;
@@ -958,7 +882,7 @@
           ;;
         rpath | xrpath)
           # We need an absolute path.
-          case "$arg" in
+          case $arg in
           [\\/]* | [A-Za-z]:[\\/]*) ;;
           *)
             $echo "$modename: only absolute run-paths are allowed" 1>&2
@@ -979,17 +903,32 @@
           prev=
           continue
           ;;
+        xcompiler)
+          compiler_flags="$compiler_flags $qarg"
+          prev=
+          compile_command="$compile_command $qarg"
+          finalize_command="$finalize_command $qarg"
+          continue
+          ;;
+        xlinker)
+          linker_flags="$linker_flags $qarg"
+          compiler_flags="$compiler_flags $wl$qarg"
+          prev=
+          compile_command="$compile_command $wl$qarg"
+          finalize_command="$finalize_command $wl$qarg"
+          continue
+          ;;
         *)
           eval "$prev=\"\$arg\""
           prev=
           continue
           ;;
         esac
-      fi
+      fi # test -n $prev
 
       prevarg="$arg"
 
-      case "$arg" in
+      case $arg in
       -all-static)
         if test -n "$link_static_flag"; then
           compile_command="$compile_command $link_static_flag"
@@ -1026,7 +965,7 @@
 
       -export-symbols | -export-symbols-regex)
         if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
-          $echo "$modename: not more than one -exported-symbols argument allowed"
+          $echo "$modename: more than one -exported-symbols argument is not allowed"
           exit 1
         fi
         if test "X$arg" = "X-export-symbols"; then
@@ -1037,58 +976,65 @@
         continue
         ;;
 
+      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
+      # so, if we see these flags be careful not to treat them like -L
+      -L[A-Z][A-Z]*:*)
+        case $with_gcc/$host in
+        no/*-*-irix*)
+          compile_command="$compile_command $arg"
+          finalize_command="$finalize_command $arg"
+          ;;
+        esac
+        continue
+        ;;
+
       -L*)
         dir=`$echo "X$arg" | $Xsed -e 's/^-L//'`
         # We need an absolute path.
-        case "$dir" in
+        case $dir in
         [\\/]* | [A-Za-z]:[\\/]*) ;;
         *)
           absdir=`cd "$dir" && pwd`
           if test -z "$absdir"; then
-            $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2
-            $echo "$modename: passing it literally to the linker, although it might fail" 1>&2
-            absdir="$dir"
+            $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2
+            exit 1
           fi
           dir="$absdir"
           ;;
         esac
-        case " $deplibs " in
-        *" $arg "*) ;;
-        *) deplibs="$deplibs $arg";;
-        esac
-        case " $lib_search_path " in
-        *" $dir "*) ;;
-        *) lib_search_path="$lib_search_path $dir";;
+        case "$deplibs " in
+        *" -L$dir "*) ;;
+        *)
+          deplibs="$deplibs -L$dir"
+          lib_search_path="$lib_search_path $dir"
+          ;;
         esac
-        case "$host" in
-        *-*-cygwin* | *-*-mingw* | *-*-os2*)
-          dllsearchdir=`cd "$dir" && pwd || echo "$dir"`
-          case ":$dllsearchpath:" in
-          ::) dllsearchpath="$dllsearchdir";;
-          *":$dllsearchdir:"*) ;;
-          *) dllsearchpath="$dllsearchpath:$dllsearchdir";;
+        case $host in
+        *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+          case :$dllsearchpath: in
+          *":$dir:"*) ;;
+          *) dllsearchpath="$dllsearchpath:$dir";;
           esac
           ;;
         esac
+        continue
         ;;
 
       -l*)
-        if test "$arg" = "-lc"; then
-          case "$host" in
-          *-*-cygwin* | *-*-mingw* | *-*-os2* | *-*-beos*)
-            # These systems don't actually have c library (as such)
+        if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
+          case $host in
+          *-*-cygwin* | *-*-pw32* | *-*-beos*)
+            # These systems don't actually have a C or math library (as such)
             continue
             ;;
-          esac
-        elif test "$arg" = "-lm"; then
-          case "$host" in
-          *-*-cygwin* | *-*-beos*)
-            # These systems don't actually have math library (as such)
-            continue
+          *-*-mingw* | *-*-os2*)
+            # These systems don't actually have a C library (as such)
+            test "X$arg" = "X-lc" && continue
             ;;
           esac
         fi
         deplibs="$deplibs $arg"
+        continue
         ;;
 
       -module)
@@ -1096,6 +1042,25 @@
         continue
         ;;
 
+      -no-fast-install)
+        fast_install=no
+        continue
+        ;;
+
+      -no-install)
+        case $host in
+        *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+          # The PATH hackery in wrapper scripts is required on Windows
+          # in order for the loader to find any dlls it needs.
+          $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2
+          $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2
+          fast_install=no
+          ;;
+        *) no_install=yes ;;
+        esac
+        continue
+        ;;
+
       -no-undefined)
         allow_undefined=no
         continue
@@ -1121,7 +1086,7 @@
       -R*)
         dir=`$echo "X$arg" | $Xsed -e 's/^-R//'`
         # We need an absolute path.
-        case "$dir" in
+        case $dir in
         [\\/]* | [A-Za-z]:[\\/]*) ;;
         *)
           $echo "$modename: only absolute run-paths are allowed" 1>&2
@@ -1136,11 +1101,11 @@
         ;;
 
       -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
+        # The effects of -static are defined in a previous loop.
+        # We used to do the same as -all-static on platforms that
+        # didn't have a PIC flag, but the assumption that the effects
+        # would be equivalent was wrong.  It would break on at least
+        # Digital Unix and AIX.
         continue
         ;;
 
@@ -1154,28 +1119,71 @@
         continue
         ;;
 
+      -Wc,*)
+        args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'`
+        arg=
+        IFS="${IFS=     }"; save_ifs="$IFS"; IFS=','
+        for flag in $args; do
+          IFS="$save_ifs"
+          case $flag in
+            *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \       ]*|*]*|"")
+            flag="\"$flag\""
+            ;;
+          esac
+          arg="$arg $wl$flag"
+          compiler_flags="$compiler_flags $flag"
+        done
+        IFS="$save_ifs"
+        arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
+        ;;
+
+      -Wl,*)
+        args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'`
+        arg=
+        IFS="${IFS=     }"; save_ifs="$IFS"; IFS=','
+        for flag in $args; do
+          IFS="$save_ifs"
+          case $flag in
+            *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \       ]*|*]*|"")
+            flag="\"$flag\""
+            ;;
+          esac
+          arg="$arg $wl$flag"
+          compiler_flags="$compiler_flags $wl$flag"
+          linker_flags="$linker_flags $flag"
+        done
+        IFS="$save_ifs"
+        arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
+        ;;
+
+      -Xcompiler)
+        prev=xcompiler
+        continue
+        ;;
+
+      -Xlinker)
+        prev=xlinker
+        continue
+        ;;
+
       # 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 "X$arg" | $Xsed -e "$sed_quote_subst"`
-        case "$arg" in
-        *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \   ]*|*]*)
+        case $arg in
+        *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \   ]*|*]*|"")
           arg="\"$arg\""
           ;;
         esac
         ;;
 
-      *.o | *.obj | *.a | *.lib)
-        # A standard object.
-        objs="$objs $arg"
-        ;;
-
-      *.lo)
-        # A library object.
+      *.lo | *.$objext)
+        # A library or standard object.
         if test "$prev" = dlfiles; then
-          dlfiles="$dlfiles $arg"
-          if test "$build_libtool_libs" = yes && test "$dlopen" = yes; then
+          # This file was specified with -dlopen.
+          if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+            dlfiles="$dlfiles $arg"
             prev=
             continue
           else
@@ -1188,357 +1196,890 @@
           # Preload the old-style object.
           dlprefiles="$dlprefiles "`$echo "X$arg" | $Xsed -e "$lo2o"`
           prev=
+        else
+          case $arg in
+          *.lo) libobjs="$libobjs $arg" ;;
+          *) objs="$objs $arg" ;;
+          esac
         fi
-        libobjs="$libobjs $arg"
+        ;;
+
+      *.$libext)
+        # An archive.
+        deplibs="$deplibs $arg"
+        old_deplibs="$old_deplibs $arg"
+        continue
         ;;
 
       *.la)
         # A libtool-controlled library.
 
-        dlname=
-        libdir=
-        library_names=
-        old_library=
+        if test "$prev" = dlfiles; then
+          # This library was specified with -dlopen.
+          dlfiles="$dlfiles $arg"
+          prev=
+        elif test "$prev" = dlprefiles; then
+          # The library was specified with -dlpreopen.
+          dlprefiles="$dlprefiles $arg"
+          prev=
+        else
+          deplibs="$deplibs $arg"
+        fi
+        continue
+        ;;
+
+      # Some other compiler argument.
+      *)
+        # 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 # arg
+
+      # Now actually substitute the argument into the commands.
+      if test -n "$arg"; then
+        compile_command="$compile_command $arg"
+        finalize_command="$finalize_command $arg"
+      fi
+    done # argument parsing loop
+
+    if test -n "$prev"; then
+      $echo "$modename: the \`$prevarg' option requires an argument" 1>&2
+      $echo "$help" 1>&2
+      exit 1
+    fi
+
+    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
+      eval arg=\"$export_dynamic_flag_spec\"
+      compile_command="$compile_command $arg"
+      finalize_command="$finalize_command $arg"
+    fi
+
+    # calculate the name of the file, without its directory
+    outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'`
+    libobjs_save="$libobjs"
+
+    if test -n "$shlibpath_var"; then
+      # get the directories listed in $shlibpath_var
+      eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
+    else
+      shlib_search_path=
+    fi
+    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
+    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
+
+    output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
+    if test "X$output_objdir" = "X$output"; then
+      output_objdir="$objdir"
+    else
+      output_objdir="$output_objdir/$objdir"
+    fi
+    # Create the object directory.
+    if test ! -d $output_objdir; then
+      $show "$mkdir $output_objdir"
+      $run $mkdir $output_objdir
+      status=$?
+      if test $status -ne 0 && test ! -d $output_objdir; then
+        exit $status
+      fi
+    fi
+
+    # Determine the type of output
+    case $output in
+    "")
+      $echo "$modename: you must specify an output file" 1>&2
+      $echo "$help" 1>&2
+      exit 1
+      ;;
+    *.$libext) linkmode=oldlib ;;
+    *.lo | *.$objext) linkmode=obj ;;
+    *.la) linkmode=lib ;;
+    *) linkmode=prog ;; # Anything else should be a program.
+    esac
+
+    specialdeplibs=
+    libs=
+    # Find all interdependent deplibs by searching for libraries
+    # that are linked more than once (e.g. -la -lb -la)
+    for deplib in $deplibs; do
+      case "$libs " in
+      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+      esac
+      libs="$libs $deplib"
+    done
+    deplibs=
+    newdependency_libs=
+    newlib_search_path=
+    need_relink=no # whether we're linking any uninstalled libtool libraries
+    notinst_deplibs= # not-installed libtool libraries
+    notinst_path= # paths that contain not-installed libtool libraries
+    case $linkmode in
+    lib)
+        passes="conv link"
+        for file in $dlfiles $dlprefiles; do
+          case $file in
+          *.la) ;;
+          *)
+            $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2
+            exit 1
+            ;;
+          esac
+        done
+        ;;
+    prog)
+        compile_deplibs=
+        finalize_deplibs=
+        alldeplibs=no
+        newdlfiles=
+        newdlprefiles=
+        passes="conv scan dlopen dlpreopen link"
+        ;;
+    *)  passes="conv"
+        ;;
+    esac
+    for pass in $passes; do
+      if test $linkmode = prog; then
+        # Determine which files to process
+        case $pass in
+        dlopen)
+          libs="$dlfiles"
+          save_deplibs="$deplibs" # Collect dlpreopened libraries
+          deplibs=
+          ;;
+        dlpreopen) libs="$dlprefiles" ;;
+        link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
+        esac
+      fi
+      for deplib in $libs; do
+        lib=
+        found=no
+        case $deplib in
+        -l*)
+          if test $linkmode = oldlib && test $linkmode = obj; then
+            $echo "$modename: warning: \`-l' is ignored for archives/objects: $deplib" 1>&2
+            continue
+          fi
+          if test $pass = conv; then
+            deplibs="$deplib $deplibs"
+            continue
+          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
+          done
+          if test "$found" != yes; then
+            # deplib doesn't seem to be a libtool library
+            if test "$linkmode,$pass" = "prog,link"; then
+              compile_deplibs="$deplib $compile_deplibs"
+              finalize_deplibs="$deplib $finalize_deplibs"
+            else
+              deplibs="$deplib $deplibs"
+              test $linkmode = lib && newdependency_libs="$deplib $newdependency_libs"
+            fi
+            continue
+          fi
+          ;; # -l
+        -L*)
+          case $linkmode in
+          lib)
+            deplibs="$deplib $deplibs"
+            test $pass = conv && continue
+            newdependency_libs="$deplib $newdependency_libs"
+            newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
+            ;;
+          prog)
+            if test $pass = conv; then
+              deplibs="$deplib $deplibs"
+              continue
+            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
+            ;;
+          *)
+            $echo "$modename: warning: \`-L' is ignored for archives/objects: $deplib" 1>&2
+            ;;
+          esac # linkmode
+          continue
+          ;; # -L
+        -R*)
+          if test $pass = link; then
+            dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'`
+            # Make sure the xrpath contains only unique directories.
+            case "$xrpath " in
+            *" $dir "*) ;;
+            *) xrpath="$xrpath $dir" ;;
+            esac
+          fi
+          deplibs="$deplib $deplibs"
+          continue
+          ;;
+        *.la) lib="$deplib" ;;
+        *.$libext)
+          if test $pass = conv; then
+            deplibs="$deplib $deplibs"
+            continue
+          fi
+          case $linkmode in
+          lib)
+            if test "$deplibs_check_method" != pass_all; then
+              echo
+              echo "*** Warning: This library needs some functionality provided by $deplib."
+              echo "*** I have the capability to make that library automatically link in when"
+              echo "*** you link to this library.  But I can only do this if you have a"
+              echo "*** shared version of the library, which you do not appear to have."
+            else
+              echo
+              echo "*** Warning: Linking the shared library $output against the"
+              echo "*** static library $deplib is not portable!"
+              deplibs="$deplib $deplibs"
+            fi
+            continue
+            ;;
+          prog)
+            if test $pass != link; then
+              deplibs="$deplib $deplibs"
+            else
+              compile_deplibs="$deplib $compile_deplibs"
+              finalize_deplibs="$deplib $finalize_deplibs"
+            fi
+            continue
+            ;;
+          esac # linkmode
+          ;; # *.$libext
+        *.lo | *.$objext)
+          if test $pass = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
+            # If there is no dlopen support or we're linking statically,
+            # we need to preload.
+            newdlprefiles="$newdlprefiles $deplib"
+            compile_deplibs="$deplib $compile_deplibs"
+            finalize_deplibs="$deplib $finalize_deplibs"
+          else
+            newdlfiles="$newdlfiles $deplib"
+          fi
+          continue
+          ;;
+        %DEPLIBS%)
+          alldeplibs=yes
+          continue
+          ;;
+        esac # case $deplib
+        if test $found = yes || test -f "$lib"; then :
+        else
+          $echo "$modename: cannot find the library \`$lib'" 1>&2
+          exit 1
+        fi
 
         # Check to see that this really is a libtool archive.
-        if (sed -e '2q' $arg | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+        if (sed -e '2q' $lib | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
         else
-          $echo "$modename: \`$arg' is not a valid libtool archive" 1>&2
+          $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
           exit 1
         fi
 
+        ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
+        test "X$ladir" = "X$lib" && ladir="."
+
+        dlname=
+        dlopen=
+        dlpreopen=
+        libdir=
+        library_names=
+        old_library=
         # If the library was installed with an old release of libtool,
         # it will not redefine variable installed.
         installed=yes
 
         # Read the .la file
-        # If there is no directory component, then add one.
-        case "$arg" in
-        */* | *\\*) . $arg ;;
-        *) . ./$arg ;;
+        case $lib in
+        */* | *\\*) . $lib ;;
+        *) . ./$lib ;;
         esac
 
+        if test "$linkmode,$pass" = "lib,link" ||
+           test "$linkmode,$pass" = "prog,scan" ||
+           { test $linkmode = oldlib && test $linkmode = obj; }; then
+           # Add dl[pre]opened files of deplib
+          test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
+          test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
+        fi
+
+        if test $pass = conv; then
+          # Only check for convenience libraries
+          deplibs="$lib $deplibs"
+          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
+            fi
+            # It is a libtool convenience library, so add in its objects.
+            convenience="$convenience $ladir/$objdir/$old_library"
+            old_convenience="$old_convenience $ladir/$objdir/$old_library"
+            tmp_libs=
+            for deplib in $dependency_libs; do
+              deplibs="$deplib $deplibs"
+              case "$tmp_libs " in
+              *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+              esac
+              tmp_libs="$tmp_libs $deplib"
+            done
+          elif test $linkmode != prog && test $linkmode != lib; then
+            $echo "$modename: \`$lib' is not a convenience library" 1>&2
+            exit 1
+          fi
+          continue
+        fi # $pass = conv
+
         # Get the name of the library we link against.
         linklib=
         for l in $old_library $library_names; do
           linklib="$l"
         done
-
         if test -z "$linklib"; then
-          $echo "$modename: cannot find name of link library for \`$arg'" 1>&2
+          $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
           exit 1
         fi
 
-        # Find the relevant object directory and library name.
-        name=`$echo "X$arg" | $Xsed -e 's%^.*/%%' -e 's/\.la$//' -e 's/^lib//'`
-
-        if test "X$installed" = Xyes; then
-          dir="$libdir"
-        else
-          dir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
-          if test "X$dir" = "X$arg"; then
-            dir="$objdir"
+        # 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
+          fi
+          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.
+            dlprefiles="$dlprefiles $lib"
           else
-            dir="$dir/$objdir"
+            newdlfiles="$newdlfiles $lib"
           fi
-        fi
-
-        if test -n "$dependency_libs"; then
-          # Extract -R and -L from dependency_libs
-          temp_deplibs=
-          for deplib in $dependency_libs; do
-            case "$deplib" in
-            -R*) temp_xrpath=`$echo "X$deplib" | $Xsed -e 's/^-R//'`
-                 case " $rpath $xrpath " in
-                 *" $temp_xrpath "*) ;;
-                 *) xrpath="$xrpath $temp_xrpath";;
-                 esac;;
-            -L*) case "$compile_command $temp_deplibs " in
-                 *" $deplib "*) ;;
-                 *) temp_deplibs="$temp_deplibs $deplib";;
-                 esac
-                 temp_dir=`$echo "X$deplib" | $Xsed -e 's/^-L//'`
-                 case " $lib_search_path " in
-                 *" $temp_dir "*) ;;
-                 *) lib_search_path="$lib_search_path $temp_dir";;
-                 esac
-                 ;;
-            *) temp_deplibs="$temp_deplibs $deplib";;
-            esac
-          done
-          dependency_libs="$temp_deplibs"
-        fi
-
-        if test -z "$libdir"; then
-          # It is a libtool convenience library, so add in its objects.
-          convenience="$convenience $dir/$old_library"
-          old_convenience="$old_convenience $dir/$old_library"
-          deplibs="$deplibs$dependency_libs"
-          compile_command="$compile_command $dir/$old_library$dependency_libs"
-          finalize_command="$finalize_command $dir/$old_library$dependency_libs"
           continue
-        fi
+        fi # $pass = dlopen
 
-        # This library was specified with -dlopen.
-        if test "$prev" = dlfiles; then
-          dlfiles="$dlfiles $arg"
-          if test -z "$dlname" || test "$dlopen" != yes || test "$build_libtool_libs" = no; then
-            # If there is no dlname, no dlopen support or we're linking statically,
-            # we need to preload.
-            prev=dlprefiles
-          else
-            # 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
+        # We need an absolute path.
+        case $ladir in
+        [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
+        *)
+          abs_ladir=`cd "$ladir" && pwd`
+          if test -z "$abs_ladir"; then
+            $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2
+            $echo "$modename: passing it literally to the linker, although it might fail" 1>&2
+            abs_ladir="$ladir"
           fi
-        fi
+          ;;
+        esac
+        laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
 
-        # The library was specified with -dlpreopen.
-        if test "$prev" = dlprefiles; then
+        # Find the relevant object directory and library name.
+        if test "X$installed" = Xyes; then
+          if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+            $echo "$modename: warning: library \`$lib' was moved." 1>&2
+            dir="$ladir"
+            absdir="$abs_ladir"
+            libdir="$abs_ladir"
+          else
+            dir="$libdir"
+            absdir="$libdir"
+          fi
+        else
+          dir="$ladir/$objdir"
+          absdir="$abs_ladir/$objdir"
+          # Remove this search path later
+          notinst_path="$notinst_path $abs_ladir"
+        fi # $installed = yes
+        name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
+
+        # This library was specified with -dlpreopen.
+        if test $pass = dlpreopen; then
+          if test -z "$libdir"; then
+            $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2
+            exit 1
+          fi
           # Prefer using a static library (so that no silly _DYNAMIC symbols
           # are required to link).
           if test -n "$old_library"; then
-            dlprefiles="$dlprefiles $dir/$old_library"
+            newdlprefiles="$newdlprefiles $dir/$old_library"
+          # Otherwise, use the dlname, so that lt_dlopen finds it.
+          elif test -n "$dlname"; then
+            newdlprefiles="$newdlprefiles $dir/$dlname"
           else
-            dlprefiles="$dlprefiles $dir/$linklib"
+            newdlprefiles="$newdlprefiles $dir/$linklib"
           fi
-          prev=
+        fi # $pass = dlpreopen
+
+        if test -z "$libdir"; then
+          # Link the convenience library
+          if test $linkmode = lib; then
+            deplibs="$dir/$old_library $deplibs"
+          elif test "$linkmode,$pass" = "prog,link"; then
+            compile_deplibs="$dir/$old_library $compile_deplibs"
+            finalize_deplibs="$dir/$old_library $finalize_deplibs"
+          else
+            deplibs="$lib $deplibs"
+          fi
+          continue
         fi
 
-        if test -n "$library_names" &&
-           { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
-          link_against_libtool_libs="$link_against_libtool_libs $arg"
-          if test -n "$shlibpath_var"; then
-            # Make sure the rpath contains only unique directories.
-            case "$temp_rpath " in
-            *" $dir "*) ;;
-            *) temp_rpath="$temp_rpath $dir" ;;
-            esac
+        if test $linkmode = prog && test $pass != link; then
+          newlib_search_path="$newlib_search_path $ladir"
+          deplibs="$lib $deplibs"
+
+          linkalldeplibs=no
+          if test "$link_all_deplibs" != no || test -z "$library_names" ||
+             test "$build_libtool_libs" = no; then
+            linkalldeplibs=yes
           fi
 
-          # We need an absolute path.
-          case "$dir" in
-          [\\/] | [A-Za-z]:[\\/]*) absdir="$dir" ;;
-          *)
-            absdir=`cd "$dir" && pwd`
-            if test -z "$absdir"; then
-              $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2
-              $echo "$modename: passing it literally to the linker, although it might fail" 1>&2
-              absdir="$dir"
+          tmp_libs=
+          for deplib in $dependency_libs; do
+            case $deplib in
+            -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test
+            esac
+            # Need to link against all dependency_libs?
+            if test $linkalldeplibs = yes; then
+              deplibs="$deplib $deplibs"
+            else
+              # Need to hardcode shared library paths
+              # or/and link against static libraries
+              newdependency_libs="$deplib $newdependency_libs"
             fi
-            ;;
-          esac
-          
-          # This is the magic to use -rpath.
-          # Skip directories that are in the system default run-time
-          # search path, unless they have been requested with -R.
-          case " $sys_lib_dlsearch_path " in
-          *" $absdir "*) ;;
-          *)
-            case "$compile_rpath " in
-            *" $absdir "*) ;;
-            *) compile_rpath="$compile_rpath $absdir" 
+            case "$tmp_libs " in
+            *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
             esac
-            ;;
-          esac
+            tmp_libs="$tmp_libs $deplib"
+          done # for deplib
+          continue
+        fi # $linkmode = prog...
 
-          case " $sys_lib_dlsearch_path " in
-          *" $libdir "*) ;;
-          *)
-            case "$finalize_rpath " in
+        link_static=no # Whether the deplib will be linked statically
+        if test -n "$library_names" &&
+           { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
+          # Link against this shared library
+
+          if test "$linkmode,$pass" = "prog,link" ||
+           { test $linkmode = lib && test $hardcode_into_libs = yes; }; then
+            # Hardcode the library path.
+            # Skip directories that are in the system default run-time
+            # search path.
+            case " $sys_lib_dlsearch_path " in
+            *" $absdir "*) ;;
+            *)
+              case "$compile_rpath " in
+              *" $absdir "*) ;;
+              *) compile_rpath="$compile_rpath $absdir"
+              esac
+              ;;
+            esac
+            case " $sys_lib_dlsearch_path " in
             *" $libdir "*) ;;
-            *) finalize_rpath="$finalize_rpath $libdir"
+            *)
+              case "$finalize_rpath " in
+              *" $libdir "*) ;;
+              *) finalize_rpath="$finalize_rpath $libdir"
+              esac
+              ;;
             esac
-            ;;
-          esac
+            if test $linkmode = prog; then
+              # We need to hardcode the library path
+              if test -n "$shlibpath_var"; then
+                # Make sure the rpath contains only unique directories.
+                case "$temp_rpath " in
+                *" $dir "*) ;;
+                *" $absdir "*) ;;
+                *) temp_rpath="$temp_rpath $dir" ;;
+                esac
+              fi
+            fi
+          fi # $linkmode,$pass = prog,link...
 
-          lib_linked=yes
-          case "$hardcode_action" in
-          immediate | unsupported)
-            if test "$hardcode_direct" = no; then
-              compile_command="$compile_command $dir/$linklib"
-              deplibs="$deplibs $dir/$linklib"
-              case "$host" in
-              *-*-cygwin* | *-*-mingw* | *-*-os2*)
-                dllsearchdir=`cd "$dir" && pwd || echo "$dir"`
-                if test -n "$dllsearchpath"; then
-                  dllsearchpath="$dllsearchpath:$dllsearchdir"
-                else
-                  dllsearchpath="$dllsearchdir"
-                fi
-                ;;
-              esac
-            elif test "$hardcode_minus_L" = no; then
-              case "$host" in
-              *-*-sunos*)
-                compile_shlibpath="$compile_shlibpath$dir:"
+          if test "$alldeplibs" = yes &&
+             { test "$deplibs_check_method" = pass_all ||
+               { test "$build_libtool_libs" = yes &&
+                 test -n "$library_names"; }; }; then
+            # We only need to search for static libraries
+            continue
+          fi
+
+          if test "$installed" = no; then
+            notinst_deplibs="$notinst_deplibs $lib"
+            need_relink=yes
+          fi
+
+          if test -n "$old_archive_from_expsyms_cmds"; then
+            # figure out the soname
+            set dummy $library_names
+            realname="$2"
+            shift; shift
+            libname=`eval \\$echo \"$libname_spec\"`
+            # use dlname if we got it. it's perfectly good, no?
+            if test -n "$dlname"; then
+              soname="$dlname"
+            elif test -n "$soname_spec"; then
+              # bleh windows
+              case $host in
+              *cygwin*)
+                major=`expr $current - $age`
+                versuffix="-$major"
                 ;;
               esac
-              case "$compile_command " in
-              *" -L$dir "*) ;;
-              *) compile_command="$compile_command -L$dir";;
-              esac
-              compile_command="$compile_command -l$name"
-              deplibs="$deplibs -L$dir -l$name"
-            elif test "$hardcode_shlibpath_var" = no; then
-              case ":$compile_shlibpath:" in
-              *":$dir:"*) ;;
-              *) compile_shlibpath="$compile_shlibpath$dir:";;
+              eval soname=\"$soname_spec\"
+            else
+              soname="$realname"
+            fi
+
+            # Make a new name for the extract_expsyms_cmds to use
+            soroot="$soname"
+            soname=`echo $soroot | sed -e 's/^.*\///'`
+            newlib="libimp-`echo $soname | sed 's/^lib//;s/\.dll$//'`.a"
+
+            # If the library has no export list, then create one now
+            if test -f "$output_objdir/$soname-def"; then :
+            else
+              $show "extracting exported symbol list from \`$soname'"
+              IFS="${IFS=       }"; save_ifs="$IFS"; IFS='~'
+              eval cmds=\"$extract_expsyms_cmds\"
+              for cmd in $cmds; do
+                IFS="$save_ifs"
+                $show "$cmd"
+                $run eval "$cmd" || exit $?
+              done
+              IFS="$save_ifs"
+            fi
+
+            # Create $newlib
+            if test -f "$output_objdir/$newlib"; then :; else
+              $show "generating import library for \`$soname'"
+              IFS="${IFS=       }"; save_ifs="$IFS"; IFS='~'
+              eval cmds=\"$old_archive_from_expsyms_cmds\"
+              for cmd in $cmds; do
+                IFS="$save_ifs"
+                $show "$cmd"
+                $run eval "$cmd" || exit $?
+              done
+              IFS="$save_ifs"
+            fi
+            # make sure the library variables are pointing to the new library
+            dir=$output_objdir
+            linklib=$newlib
+          fi # test -n $old_archive_from_expsyms_cmds
+
+          if test $linkmode = prog || test "$mode" != relink; then
+            add_shlibpath=
+            add_dir=
+            add=
+            lib_linked=yes
+            case $hardcode_action in
+            immediate | unsupported)
+              if test "$hardcode_direct" = no; then
+                add="$dir/$linklib"
+              elif test "$hardcode_minus_L" = no; then
+                case $host in
+                *-*-sunos*) add_shlibpath="$dir" ;;
+                esac
+                add_dir="-L$dir"
+                add="-l$name"
+              elif test "$hardcode_shlibpath_var" = no; then
+                add_shlibpath="$dir"
+                add="-l$name"
+              else
+                lib_linked=no
+              fi
+              ;;
+            relink)
+              if test "$hardcode_direct" = yes; then
+                add="$dir/$linklib"
+              elif test "$hardcode_minus_L" = yes; then
+                add_dir="-L$dir"
+                add="-l$name"
+              elif test "$hardcode_shlibpath_var" = yes; then
+                add_shlibpath="$dir"
+                add="-l$name"
+              else
+                lib_linked=no
+              fi
+              ;;
+            *) lib_linked=no ;;
+            esac
+
+            if test "$lib_linked" != yes; then
+              $echo "$modename: configuration error: unsupported hardcode properties"
+              exit 1
+            fi
+
+            if test -n "$add_shlibpath"; then
+              case :$compile_shlibpath: in
+              *":$add_shlibpath:"*) ;;
+              *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
               esac
-              compile_command="$compile_command -l$name"
-              deplibs="$deplibs -l$name"
+            fi
+            if test $linkmode = prog; then
+              test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
+              test -n "$add" && compile_deplibs="$add $compile_deplibs"
             else
-              lib_linked=no
+              test -n "$add_dir" && deplibs="$add_dir $deplibs"
+              test -n "$add" && deplibs="$add $deplibs"
+              if test "$hardcode_direct" != yes && \
+                 test "$hardcode_minus_L" != yes && \
+                 test "$hardcode_shlibpath_var" = yes; then
+                case :$finalize_shlibpath: in
+                *":$libdir:"*) ;;
+                *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
+                esac
+              fi
             fi
-            ;;
+          fi
 
-          relink)
+          if test $linkmode = prog || test "$mode" = relink; then
+            add_shlibpath=
+            add_dir=
+            add=
+            # Finalize command for both is simple: just hardcode it.
             if test "$hardcode_direct" = yes; then
-              compile_command="$compile_command $absdir/$linklib"
-              deplibs="$deplibs $absdir/$linklib"
+              add="$libdir/$linklib"
             elif test "$hardcode_minus_L" = yes; then
-              case "$compile_command " in
-              *" -L$absdir "*) ;;
-              *) compile_command="$compile_command -L$absdir";;
-              esac
-              compile_command="$compile_command -l$name"
-              deplibs="$deplibs -L$absdir -l$name"
+              add_dir="-L$libdir"
+              add="-l$name"
             elif test "$hardcode_shlibpath_var" = yes; then
-              case ":$compile_shlibpath:" in
-              *":$absdir:"*) ;;
-              *) compile_shlibpath="$compile_shlibpath$absdir:";;
+              case :$finalize_shlibpath: in
+              *":$libdir:"*) ;;
+              *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
               esac
-              compile_command="$compile_command -l$name"
-              deplibs="$deplibs -l$name"
+              add="-l$name"
             else
-              lib_linked=no
+              # We cannot seem to hardcode it, guess we'll fake it.
+              add_dir="-L$libdir"
+              add="-l$name"
             fi
-            ;;
-
-          *)
-            lib_linked=no
-            ;;
-          esac
 
-          if test "$lib_linked" != yes; then
-            $echo "$modename: configuration error: unsupported hardcode properties"
-            exit 1
-          fi
-
-          # Finalize command for both is simple: just hardcode it.
-          if test "$hardcode_direct" = yes; then
-            finalize_command="$finalize_command $libdir/$linklib"
-          elif test "$hardcode_minus_L" = yes; then
-            case "$finalize_command " in
-            *" -L$libdir "*) ;;
-            *) finalize_command="$finalize_command -L$libdir";;
-            esac
-            finalize_command="$finalize_command -l$name"
-          elif test "$hardcode_shlibpath_var" = yes; then
-            case ":$finalize_shlibpath:" in
-            *":$libdir:"*) ;;
-            *) finalize_shlibpath="$finalize_shlibpath$libdir:";;
-            esac
-            finalize_command="$finalize_command -l$name"
-          else
-            # We cannot seem to hardcode it, guess we'll fake it.
-            case "$finalize_command " in
-            *" -L$dir "*) ;;
-            *) finalize_command="$finalize_command -L$libdir";;
-            esac
-            finalize_command="$finalize_command -l$name"
+            if test $linkmode = prog; then
+              test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
+              test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
+            else
+              test -n "$add_dir" && deplibs="$add_dir $deplibs"
+              test -n "$add" && deplibs="$add $deplibs"
+            fi
           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 "$modename: cannot find static library for \`$arg'" 1>&2
-            exit 1
+        elif test $linkmode = prog; then
+          if test "$alldeplibs" = yes &&
+             { test "$deplibs_check_method" = pass_all ||
+               { test "$build_libtool_libs" = yes &&
+                 test -n "$library_names"; }; }; then
+            # We only need to search for static libraries
+            continue
           fi
 
+          # Try to link the static library
           # 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"
+            compile_deplibs="$dir/$linklib $compile_deplibs"
+            finalize_deplibs="$dir/$linklib $finalize_deplibs"
           else
-            case "$compile_command " in
-            *" -L$dir "*) ;;
-            *) compile_command="$compile_command -L$dir";;
-            esac
-            compile_command="$compile_command -l$name"
-            case "$finalize_command " in
-            *" -L$dir "*) ;;
-            *) finalize_command="$finalize_command -L$dir";;
-            esac
-            finalize_command="$finalize_command -l$name"
+            compile_deplibs="-l$name -L$dir $compile_deplibs"
+            finalize_deplibs="-l$name -L$dir $finalize_deplibs"
           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.
-      *)
-        # 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.
-      if test -n "$arg"; then
-        compile_command="$compile_command $arg"
-        finalize_command="$finalize_command $arg"
-      fi
-    done
-
-    if test -n "$prev"; then
-      $echo "$modename: the \`$prevarg' option requires an argument" 1>&2
-      $echo "$help" 1>&2
-      exit 1
-    fi
+        elif test "$build_libtool_libs" = yes; then
+          # Not a shared library
+          if test "$deplibs_check_method" != pass_all; then
+            # We're trying link a shared library against a static one
+            # but the system doesn't support it.
 
-    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
-      eval arg=\"$export_dynamic_flag_spec\"
-      compile_command="$compile_command $arg"
-      finalize_command="$finalize_command $arg"
-    fi
-
-    oldlibs=
-    # calculate the name of the file, without its directory
-    outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'`
-    libobjs_save="$libobjs"
+            # Just print a warning and add the library to dependency_libs so
+            # that the program can be linked against the static library.
+            echo
+            echo "*** Warning: This library needs some functionality provided by $lib."
+            echo "*** I have the capability to make that library automatically link in when"
+            echo "*** you link to this library.  But I can only do this if you have a"
+            echo "*** shared version of the library, which you do not appear to have."
+            if test "$module" = yes; then
+              echo "*** Therefore, libtool will create a static module, that should work "
+              echo "*** as long as the dlopening application is linked with the -dlopen flag."
+              if test -z "$global_symbol_pipe"; then
+                echo
+                echo "*** However, this would only work if libtool was able to extract symbol"
+                echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
+                echo "*** not find such a program.  So, this module is probably useless."
+                echo "*** \`nm' from GNU binutils and a full rebuild may help."
+              fi
+              if test "$build_old_libs" = no; then
+                build_libtool_libs=module
+                build_old_libs=yes
+              else
+                build_libtool_libs=no
+              fi
+            fi
+          else
+            convenience="$convenience $dir/$old_library"
+            old_convenience="$old_convenience $dir/$old_library"
+            deplibs="$dir/$old_library $deplibs"
+            link_static=yes
+          fi
+        fi # link shared/static library?
+
+        if test $linkmode = lib; then
+          if test -n "$dependency_libs" &&
+             { test $hardcode_into_libs != yes || test $build_old_libs = yes ||
+               test $link_static = yes; }; then
+            # Extract -R from dependency_libs
+            temp_deplibs=
+            for libdir in $dependency_libs; do
+              case $libdir in
+              -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'`
+                   case " $xrpath " in
+                   *" $temp_xrpath "*) ;;
+                   *) xrpath="$xrpath $temp_xrpath";;
+                   esac;;
+              *) temp_deplibs="$temp_deplibs $libdir";;
+              esac
+            done
+            dependency_libs="$temp_deplibs"
+          fi
 
-    case "$output" in
-    "")
-      $echo "$modename: you must specify an output file" 1>&2
-      $echo "$help" 1>&2
-      exit 1
-      ;;
+          newlib_search_path="$newlib_search_path $absdir"
+          # Link against this library
+          test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
+          # ... and its dependency_libs
+          tmp_libs=
+          for deplib in $dependency_libs; do
+            newdependency_libs="$deplib $newdependency_libs"
+            case "$tmp_libs " in
+            *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+            esac
+            tmp_libs="$tmp_libs $deplib"
+          done
 
-    *.a | *.lib)
-      if test -n "$link_against_libtool_libs"; then
-        $echo "$modename: error: cannot link libtool libraries into archives" 1>&2
-        exit 1
+          if test $link_all_deplibs != no; then
+            # Add the search paths of all dependency libraries
+            for deplib in $dependency_libs; do
+              case $deplib in
+              -L*) path="$deplib" ;;
+              *.la)
+                dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'`
+                test "X$dir" = "X$deplib" && dir="."
+                # We need an absolute path.
+                case $dir in
+                [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
+                *)
+                  absdir=`cd "$dir" && pwd`
+                  if test -z "$absdir"; then
+                    $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2
+                    absdir="$dir"
+                  fi
+                  ;;
+                esac
+                if grep "^installed=no" $deplib > /dev/null; then
+                  path="-L$absdir/$objdir"
+                else
+                  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
+                  fi
+                  if test "$absdir" != "$libdir"; then
+                    $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2
+                  fi
+                  path="-L$absdir"
+                fi
+                ;;
+              *) continue ;;
+              esac
+              case " $deplibs " in
+              *" $path "*) ;;
+              *) deplibs="$deplibs $path" ;;
+              esac
+            done
+          fi # link_all_deplibs != no
+        fi # linkmode = lib
+      done # for deplib in $libs
+      if test $pass = dlpreopen; then
+        # Link the dlpreopened libraries before other libraries
+        for deplib in $save_deplibs; do
+          deplibs="$deplib $deplibs"
+        done
       fi
+      if test $pass != dlopen; then
+        test $pass != scan && dependency_libs="$newdependency_libs"
+        if test $pass != conv; then
+          # Make sure lib_search_path contains only unique directories.
+          lib_search_path=
+          for dir in $newlib_search_path; do
+            case "$lib_search_path " in
+            *" $dir "*) ;;
+            *) lib_search_path="$lib_search_path $dir" ;;
+            esac
+          done
+          newlib_search_path=
+        fi
 
-      if test -n "$deplibs"; then
-        $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2
+        if test "$linkmode,$pass" != "prog,link"; then
+          vars="deplibs"
+        else
+          vars="compile_deplibs finalize_deplibs"
+        fi
+        for var in $vars dependency_libs; do
+          # Add libraries to $var in reverse order
+          eval tmp_libs=\"\$$var\"
+          new_libs=
+          for deplib in $tmp_libs; do
+            case $deplib in
+            -L*) new_libs="$deplib $new_libs" ;;
+            *)
+              case " $specialdeplibs " in
+              *" $deplib "*) new_libs="$deplib $new_libs" ;;
+              *)
+                case " $new_libs " in
+                *" $deplib "*) ;;
+                *) new_libs="$deplib $new_libs" ;;
+                esac
+                ;;
+              esac
+              ;;
+            esac
+          done
+          tmp_libs=
+          for deplib in $new_libs; do
+            case $deplib in
+            -L*)
+              case " $tmp_libs " in
+              *" $deplib "*) ;;
+              *) tmp_libs="$tmp_libs $deplib" ;;
+              esac
+              ;;
+            *) tmp_libs="$tmp_libs $deplib" ;;
+            esac
+          done
+          eval $var=\"$tmp_libs\"
+        done # for var
       fi
+      if test "$pass" = "conv" &&
+       { test "$linkmode" = "lib" || test "$linkmode" = "prog"; }; then
+        libs="$deplibs" # reset libs
+        deplibs=
+      fi
+    done # for pass
+    if test $linkmode = prog; then
+      dlfiles="$newdlfiles"
+      dlprefiles="$newdlprefiles"
+    fi
 
+    case $linkmode in
+    oldlib)
       if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
         $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2
       fi
@@ -1566,11 +2107,12 @@
       # Now set the variables for building old libraries.
       build_libtool_libs=no
       oldlibs="$output"
+      objs="$objs$old_deplibs"
       ;;
 
-    *.la)
+    lib)
       # Make sure we only generate libraries of the form `libNAME.la'.
-      case "$outputname" in
+      case $outputname in
       lib*)
         name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
         eval libname=\"$libname_spec\"
@@ -1591,26 +2133,20 @@
         ;;
       esac
 
-      output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
-      if test "X$output_objdir" = "X$output"; then
-        output_objdir="$objdir"
-      else
-        output_objdir="$output_objdir/$objdir"
-      fi
-
       if test -n "$objs"; then
-        $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 "$modename: error: cannot link shared libraries into libtool libraries" 1>&2
-         exit 1
+        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
+        else
+          echo
+          echo "*** Warning: Linking the shared library $output against the non-libtool"
+          echo "*** objects $objs is not portable!"
+          libobjs="$libobjs $objs"
+        fi
       fi
 
-      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
-        $echo "$modename: warning: \`-dlopen' is ignored for libtool libraries" 1>&2
+      if test "$dlself" != no; then
+        $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2
       fi
 
       set dummy $rpath
@@ -1628,7 +2164,6 @@
           build_libtool_libs=convenience
           build_old_libs=yes
         fi
-        dependency_libs="$deplibs"
 
         if test -n "$vinfo"; then
           $echo "$modename: warning: \`-version-info' is ignored for convenience libraries" 1>&2
@@ -1655,8 +2190,8 @@
         age="$4"
 
         # Check that each of the things are valid numbers.
-        case "$current" in
-        0 | [1-9] | [1-9][0-9]*) ;;
+        case $current in
+        0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;;
         *)
           $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2
           $echo "$modename: \`$vinfo' is not valid version information" 1>&2
@@ -1664,8 +2199,8 @@
           ;;
         esac
 
-        case "$revision" in
-        0 | [1-9] | [1-9][0-9]*) ;;
+        case $revision in
+        0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;;
         *)
           $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2
           $echo "$modename: \`$vinfo' is not valid version information" 1>&2
@@ -1673,8 +2208,8 @@
           ;;
         esac
 
-        case "$age" in
-        0 | [1-9] | [1-9][0-9]*) ;;
+        case $age in
+        0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;;
         *)
           $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2
           $echo "$modename: \`$vinfo' is not valid version information" 1>&2
@@ -1692,12 +2227,31 @@
         major=
         versuffix=
         verstring=
-        case "$version_type" in
+        case $version_type in
         none) ;;
 
+        darwin)
+          # Like Linux, but with the current version available in
+          # verstring for coding it into the library header
+          major=.`expr $current - $age`
+          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"
+          ;;
+
+        freebsd-aout)
+          major=".$current"
+          versuffix=".$current.$revision";
+          ;;
+
+        freebsd-elf)
+          major=".$current"
+          versuffix=".$current";
+          ;;
+
         irix)
           major=`expr $current - $age + 1`
-          versuffix="$major.$revision"
           verstring="sgi$major.$revision"
 
           # Add in all the interfaces that we are compatible with.
@@ -1707,6 +2261,10 @@
             loop=`expr $loop - 1`
             verstring="sgi$major.$iface:$verstring"
           done
+
+          # Before this point, $major must not contain `.'.
+          major=.$major
+          versuffix="$major.$revision"
           ;;
 
         linux)
@@ -1736,21 +2294,11 @@
           versuffix=".$current.$revision"
           ;;
 
-        freebsd-aout)
-          major=".$current"
-          versuffix=".$current.$revision";
-          ;;
-
-        freebsd-elf)
-          major=".$current"
-          versuffix=".$current";
-          ;;
-
         windows)
-          # Like Linux, but with '-' rather than '.', since we only
-          # want one extension on Windows 95.
+          # Use '-' rather than '.', since we only want one
+          # extension on DOS 8.3 filesystems.
           major=`expr $current - $age`
-          versuffix="-$major-$age-$revision"
+          versuffix="-$major"
           ;;
 
         *)
@@ -1777,7 +2325,7 @@
           versuffix=
           verstring=""
         fi
-        
+
         # Check to see if the archive will have undefined symbols.
         if test "$allow_undefined" = yes; then
           if test "$allow_undefined_flag" = unsupported; then
@@ -1789,34 +2337,12 @@
           # Don't allow undefined symbols.
           allow_undefined_flag="$no_undefined_flag"
         fi
-
-        dependency_libs="$deplibs"
-        case "$host" in
-        *-*-cygwin* | *-*-mingw* | *-*-os2* | *-*-beos*)
-          # these systems don't actually have a c library (as such)!
-          ;;
-        *-*-rhapsody*)
-          # rhapsody is a little odd...
-          deplibs="$deplibs -framework System"
-          ;;
-        *)
-          # Add libc to deplibs on all other systems.
-          deplibs="$deplibs -lc"
-          ;;
-        esac
       fi
 
-      # Create the output directory, or remove our outputs if we need to.
-      if test -d $output_objdir; then
+      if test "$mode" != relink; then
+        # Remove our outputs.
         $show "${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.*"
         $run ${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.*
-      else
-        $show "$mkdir $output_objdir"
-        $run $mkdir $output_objdir
-        status=$?
-        if test $status -ne 0 && test ! -d $output_objdir; then
-          exit $status
-        fi
       fi
 
       # Now set the variables for building old libraries.
@@ -1827,7 +2353,70 @@
         oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
       fi
 
+      # Eliminate all temporary directories.
+      for path in $notinst_path; do
+        lib_search_path=`echo "$lib_search_path " | sed -e 's% $path % %g'`
+        deplibs=`echo "$deplibs " | sed -e 's% -L$path % %g'`
+        dependency_libs=`echo "$dependency_libs " | sed -e 's% -L$path % %g'`
+      done
+
+      if test -n "$xrpath"; then
+        # If the user specified any rpath flags, then add them.
+        temp_xrpath=
+        for libdir in $xrpath; do
+          temp_xrpath="$temp_xrpath -R$libdir"
+          case "$finalize_rpath " in
+          *" $libdir "*) ;;
+          *) finalize_rpath="$finalize_rpath $libdir" ;;
+          esac
+        done
+        if test $hardcode_into_libs != yes || test $build_old_libs = yes; then
+          dependency_libs="$temp_xrpath $dependency_libs"
+        fi
+      fi
+
+      # Make sure dlfiles contains only unique files that won't be dlpreopened
+      old_dlfiles="$dlfiles"
+      dlfiles=
+      for lib in $old_dlfiles; do
+        case " $dlprefiles $dlfiles " in
+        *" $lib "*) ;;
+        *) dlfiles="$dlfiles $lib" ;;
+        esac
+      done
+
+      # Make sure dlprefiles contains only unique files
+      old_dlprefiles="$dlprefiles"
+      dlprefiles=
+      for lib in $old_dlprefiles; do
+        case "$dlprefiles " in
+        *" $lib "*) ;;
+        *) dlprefiles="$dlprefiles $lib" ;;
+        esac
+      done
+
       if test "$build_libtool_libs" = yes; then
+        if test -n "$rpath"; then
+          case $host in
+          *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*)
+            # these systems don't actually have a c library (as such)!
+            ;;
+          *-*-rhapsody* | *-*-darwin1.[012])
+            # Rhapsody C library is in the System framework
+            deplibs="$deplibs -framework System"
+            ;;
+          *-*-netbsd*)
+            # Don't link with libc until the a.out ld.so is fixed.
+            ;;
+          *)
+            # Add libc to deplibs on all other systems if necessary.
+            if test $build_libtool_need_lc = "yes"; then
+              deplibs="$deplibs -lc"
+            fi
+            ;;
+          esac
+        fi
+
         # Transform deplibs into only deplibs that can be linked in shared.
         name_save=$name
         libname_save=$libname
@@ -1842,7 +2431,7 @@
         major=""
         newdeplibs=
         droppeddeps=no
-        case "$deplibs_check_method" in
+        case $deplibs_check_method in
         pass_all)
           # Don't check for shared/static.  Everything works.
           # This might be a little naive.  We might want to check
@@ -1867,7 +2456,7 @@
             for i in $deplibs; do
               name="`expr $i : '-l\(.*\)'`"
               # If $name is empty we are operating on a -L argument.
-              if test "$name" != "" ; then
+              if test -n "$name" && test "$name" != "0"; then
                 libname=`eval \\$echo \"$libname_spec\"`
                 deplib_matches=`eval \\$echo \"$library_names_spec\"`
                 set dummy $deplib_matches
@@ -1892,7 +2481,7 @@
             for i in $deplibs; do
               name="`expr $i : '-l\(.*\)'`"
              # If $name is empty we are operating on a -L argument.
-              if test "$name" != "" ; then
+              if test -n "$name" && test "$name" != "0"; then
                 $rm conftest
                 $CC -o conftest conftest.c $i
                 # Did it work?
@@ -1928,19 +2517,19 @@
           ;;
         file_magic*)
           set dummy $deplibs_check_method
-          file_magic_regex="`expr \"$deplibs_check_method\" : \"$2 \(.*\)\"`"
+          file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
           for a_deplib in $deplibs; do
             name="`expr $a_deplib : '-l\(.*\)'`"
             # If $name is empty we are operating on a -L argument.
-            if test "$name" != "" ; then
+            if test -n "$name" && test "$name" != "0"; then
               libname=`eval \\$echo \"$libname_spec\"`
-              for i in $lib_search_path; do
+              for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
                     potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
                     for potent_lib in $potential_libs; do
                       # Follow soft links.
                       if ls -lLd "$potent_lib" 2>/dev/null \
                          | grep " -> " >/dev/null; then
-                        continue 
+                        continue
                       fi
                       # The statement above tries to avoid entering an
                       # endless loop below, in case of cyclic links.
@@ -1950,7 +2539,7 @@
                       potlib="$potent_lib"
                       while test -h "$potlib" 2>/dev/null; do
                         potliblink=`ls -ld $potlib | sed 's/.* -> //'`
-                        case "$potliblink" in
+                        case $potliblink in
                         [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
                         *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
                         esac
@@ -1978,6 +2567,40 @@
             fi
           done # Gone through all deplibs.
           ;;
+        match_pattern*)
+          set dummy $deplibs_check_method
+          match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+          for a_deplib in $deplibs; do
+            name="`expr $a_deplib : '-l\(.*\)'`"
+            # If $name is empty we are operating on a -L argument.
+            if test -n "$name" && test "$name" != "0"; then
+              libname=`eval \\$echo \"$libname_spec\"`
+              for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+                potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
+                for potent_lib in $potential_libs; do
+                  if eval echo \"$potent_lib\" 2>/dev/null \
+                      | sed 10q \
+                      | egrep "$match_pattern_regex" > /dev/null; then
+                    newdeplibs="$newdeplibs $a_deplib"
+                    a_deplib=""
+                    break 2
+                  fi
+                done
+              done
+              if test -n "$a_deplib" ; then
+                droppeddeps=yes
+                echo
+                echo "*** Warning: This library needs some functionality provided by $a_deplib."
+                echo "*** I have the capability to make that library automatically link in when"
+                echo "*** you link to this library.  But I can only do this if you have a"
+                echo "*** shared version of the library, which you do not appear to have."
+              fi
+            else
+              # Add a -L argument.
+              newdeplibs="$newdeplibs $a_deplib"
+            fi
+          done # Gone through all deplibs.
+          ;;
         none | unknown | *)
           newdeplibs=""
           if $echo "X $deplibs" | $Xsed -e 's/ -lc$//' \
@@ -2000,6 +2623,13 @@
         libname=$libname_save
         name=$name_save
 
+        case $host in
+        *-*-rhapsody* | *-*-darwin1.[012])
+          # On Rhapsody replace the C library is the System framework
+          newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'`
+          ;;
+        esac
+
         if test "$droppeddeps" = yes; then
           if test "$module" = yes; then
             echo
@@ -2025,6 +2655,21 @@
             echo "*** The inter-library dependencies that have been dropped here will be"
             echo "*** automatically added whenever a program is linked with this library"
             echo "*** or is declared to -dlopen it."
+
+            if test $allow_undefined = no; then
+              echo
+              echo "*** Since this library must not contain undefined symbols,"
+              echo "*** because either the platform does not support them or"
+              echo "*** it was explicitly requested with -no-undefined,"
+              echo "*** libtool will only create a static version of it."
+              if test "$build_old_libs" = no; then
+                oldlibs="$output_objdir/$libname.$libext"
+                build_libtool_libs=module
+                build_old_libs=yes
+              else
+                build_libtool_libs=no
+              fi
+            fi
           fi
         fi
         # Done checking deplibs!
@@ -2035,9 +2680,64 @@
       library_names=
       old_library=
       dlname=
-      
+
       # Test again, we may have decided not to build it any more
       if test "$build_libtool_libs" = yes; then
+        if test $hardcode_into_libs = yes; then
+          # Hardcode the library paths
+          hardcode_libdirs=
+          dep_rpath=
+          rpath="$finalize_rpath"
+          test "$mode" != relink && rpath="$compile_rpath$rpath"
+          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
+                  hardcode_libdirs="$libdir"
+                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
+                fi
+              else
+                eval flag=\"$hardcode_libdir_flag_spec\"
+                dep_rpath="$dep_rpath $flag"
+              fi
+            elif test -n "$runpath_var"; then
+              case "$perm_rpath " in
+              *" $libdir "*) ;;
+              *) perm_rpath="$perm_rpath $libdir" ;;
+              esac
+            fi
+          done
+          # Substitute the hardcoded libdirs into the rpath.
+          if test -n "$hardcode_libdir_separator" &&
+             test -n "$hardcode_libdirs"; then
+            libdir="$hardcode_libdirs"
+            eval dep_rpath=\"$hardcode_libdir_flag_spec\"
+          fi
+          if test -n "$runpath_var" && test -n "$perm_rpath"; then
+            # We should set the runpath_var.
+            rpath=
+            for dir in $perm_rpath; do
+              rpath="$rpath$dir:"
+            done
+            eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
+          fi
+          test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
+        fi
+
+        shlibpath="$finalize_shlibpath"
+        test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
+        if test -n "$shlibpath"; then
+          eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
+        fi
+
         # Get the real and link names of the library.
         eval library_names=\"$library_names_spec\"
         set dummy $library_names
@@ -2049,6 +2749,7 @@
         else
           soname="$realname"
         fi
+        test -z "$dlname" && dlname=$soname
 
         lib="$output_objdir/$realname"
         for link
@@ -2120,7 +2821,7 @@
 
             for xlib in $convenience; do
               # Extract the objects.
-              case "$xlib" in
+              case $xlib in
               [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
               *) xabs=`pwd`"/$xlib" ;;
               esac
@@ -2145,7 +2846,12 @@
 
         if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
           eval flag=\"$thread_safe_flag_spec\"
-          linkopts="$linkopts $flag"
+          linker_flags="$linker_flags $flag"
+        fi
+
+        # Make a backup of the uninstalled library when relinking
+        if test "$mode" = relink; then
+          $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $?
         fi
 
         # Do each of the archive commands.
@@ -2162,6 +2868,12 @@
         done
         IFS="$save_ifs"
 
+        # 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
+        fi
+
         # Create links to the real library.
         for linkname in $linknames; do
           if test "$realname" != "$linkname"; then
@@ -2178,12 +2890,7 @@
       fi
       ;;
 
-    *.lo | *.o | *.obj)
-      if test -n "$link_against_libtool_libs"; then
-        $echo "$modename: error: cannot link libtool libraries into objects" 1>&2
-        exit 1
-      fi
-
+    obj)
       if test -n "$deplibs"; then
         $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2
       fi
@@ -2208,9 +2915,9 @@
         $echo "$modename: warning: \`-release' is ignored for objects" 1>&2
       fi
 
-      case "$output" in
+      case $output in
       *.lo)
-        if test -n "$objs"; then
+        if test -n "$objs$old_deplibs"; then
           $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2
           exit 1
         fi
@@ -2234,7 +2941,7 @@
       gentop=
       # reload_cmds runs $LD directly, so let us get rid of
       # -Wl from whole_archive_flag_spec
-      wl= 
+      wl=
 
       if test -n "$convenience"; then
         if test -n "$whole_archive_flag_spec"; then
@@ -2253,7 +2960,7 @@
 
           for xlib in $convenience; do
             # Extract the objects.
-            case "$xlib" in
+            case $xlib in
             [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
             *) xabs=`pwd`"/$xlib" ;;
             esac
@@ -2277,7 +2984,7 @@
       fi
 
       # Create the old-style object.
-      reload_objs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs"
+      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\"
@@ -2312,7 +3019,7 @@
         exit 0
       fi
 
-      if test -n "$pic_flag"; then
+      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"
@@ -2348,8 +3055,10 @@
       exit 0
       ;;
 
-    # Anything else should be a program.
-    *)
+    prog)
+      case $host in
+        *cygwin*) output=`echo $output | sed -e 's,.exe$,,;s,$,.exe,'` ;;
+      esac
       if test -n "$vinfo"; then
         $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2
       fi
@@ -2359,20 +3068,27 @@
       fi
 
       if test "$preload" = yes; then
-        if test "$dlopen" = unknown && test "$dlopen_self" = unknown &&
+        if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown &&
            test "$dlopen_self_static" = unknown; then
           $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support."
-        fi 
+        fi
       fi
-    
+
+      case $host in
+      *-*-rhapsody* | *-*-darwin1.[012])
+        # On Rhapsody replace the C library is the System framework
+        compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
+        finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
+        ;;
+      esac
+
+      compile_command="$compile_command $compile_deplibs"
+      finalize_command="$finalize_command $finalize_deplibs"
+
       if test -n "$rpath$xrpath"; then
         # If the user specified any rpath flags, then add them.
         for libdir in $rpath $xrpath; do
           # This is the magic to use -rpath.
-          case "$compile_rpath " in
-          *" $libdir "*) ;;
-          *) compile_rpath="$compile_rpath $libdir" ;;
-          esac
           case "$finalize_rpath " in
           *" $libdir "*) ;;
           *) finalize_rpath="$finalize_rpath $libdir" ;;
@@ -2390,7 +3106,7 @@
               hardcode_libdirs="$libdir"
             else
               # Just accumulate the unique libdirs.
-              case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in
+              case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
               *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
                 ;;
               *)
@@ -2408,6 +3124,14 @@
           *) perm_rpath="$perm_rpath $libdir" ;;
           esac
         fi
+        case $host in
+        *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+          case :$dllsearchpath: in
+          *":$libdir:"*) ;;
+          *) dllsearchpath="$dllsearchpath:$libdir";;
+          esac
+          ;;
+        esac
       done
       # Substitute the hardcoded libdirs into the rpath.
       if test -n "$hardcode_libdir_separator" &&
@@ -2426,7 +3150,7 @@
               hardcode_libdirs="$libdir"
             else
               # Just accumulate the unique libdirs.
-              case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in
+              case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
               *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
                 ;;
               *)
@@ -2453,23 +3177,6 @@
       fi
       finalize_rpath="$rpath"
 
-      output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
-      if test "X$output_objdir" = "X$output"; then
-        output_objdir="$objdir"
-      else
-        output_objdir="$output_objdir/$objdir"
-      fi
-
-      # Create the binary in the object directory, then wrap it.
-      if test ! -d $output_objdir; then
-        $show "$mkdir $output_objdir"
-        $run $mkdir $output_objdir
-        status=$?
-        if test $status -ne 0 && test ! -d $output_objdir; then
-          exit $status
-        fi
-      fi
-
       if test -n "$libobjs" && test "$build_old_libs" = yes; then
         # Transform all the library objects into standard objects.
         compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
@@ -2486,7 +3193,7 @@
       fi
 
       if test -n "$dlsyms"; then
-        case "$dlsyms" in
+        case $dlsyms in
         "") ;;
         *.c)
           # Discover the nlist of each of the dlfiles.
@@ -2518,7 +3225,7 @@
             test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist"
 
             # Add our own program objects to the symbol list.
-            progfiles=`$echo "X$objs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+            progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
             for arg in $progfiles; do
               $show "extracting global C symbols from \`$arg'"
               $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
@@ -2528,7 +3235,7 @@
               $run eval 'egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
               $run eval '$mv "$nlist"T "$nlist"'
             fi
-            
+
             if test -n "$export_symbols_regex"; then
               $run eval 'egrep -e "$export_symbols_regex" "$nlist" > "$nlist"T'
               $run eval '$mv "$nlist"T "$nlist"'
@@ -2617,13 +3324,13 @@
           fi
 
           pic_flag_for_symtable=
-          case "$host" in
+          case $host in
           # compiling the symbol table file with pic_flag works around
           # a FreeBSD bug that causes programs to crash when -lm is
           # linked before any other PIC object.  But we must not use
           # pic_flag when linking with -static.  The problem exists in
           # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
-          *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)

+          *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
             case "$compile_command " in
             *" -static "*) ;;
             *) pic_flag_for_symtable=" $pic_flag -DPIC -DFREEBSD_WORKAROUND";;
@@ -2662,7 +3369,7 @@
         finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
       fi
 
-      if test -z "$link_against_libtool_libs" || test "$build_libtool_libs" != yes; then
+      if test $need_relink = no || test "$build_libtool_libs" != yes; then
         # Replace the output file specification.
         compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
         link_command="$compile_command$compile_rpath"
@@ -2671,7 +3378,7 @@
         $show "$link_command"
         $run eval "$link_command"
         status=$?
-        
+
         # Delete the generated files.
         if test -n "$dlsyms"; then
           $show "$rm $output_objdir/${outputname}S.${objext}"
@@ -2685,7 +3392,7 @@
         # We should set the shlibpath_var
         rpath=
         for dir in $temp_rpath; do
-          case "$dir" in
+          case $dir in
           [\\/]* | [A-Za-z]:[\\/]*)
             # Absolute path.
             rpath="$rpath$dir:"
@@ -2727,11 +3434,24 @@
         fi
       fi
 
+      if test "$no_install" = yes; then
+        # We don't need to create a wrapper script.
+        link_command="$compile_var$compile_command$compile_rpath"
+        # Replace the output file specification.
+        link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+        # Delete the old output file.
+        $run $rm $output
+        # Link the executable and exit
+        $show "$link_command"
+        $run eval "$link_command" || exit $?
+        exit 0
+      fi
+
       if test "$hardcode_action" = relink; then
         # Fast installation is not supported
         link_command="$compile_var$compile_command$compile_rpath"
         relink_command="$finalize_var$finalize_command$finalize_rpath"
-        
+
         $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2
         $echo "$modename: \`$output' will be relinked during installation" 1>&2
       else
@@ -2751,7 +3471,7 @@
 
       # Replace the output file specification.
       link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
-      
+
       # Delete the old output files.
       $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname
 
@@ -2763,12 +3483,24 @@
 
       # Quote the relink command for shipping.
       if test -n "$relink_command"; then
+        # Preserve any variables that may affect compiler behavior
+        for var in $variables_saved_for_relink; do
+          if eval test -z \"\${$var+set}\"; then
+            relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
+          elif eval var_value=\$$var; test -z "$var_value"; then
+            relink_command="$var=; export $var; $relink_command"
+          else
+            var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
+            relink_command="$var=\"$var_value\"; export $var; $relink_command"
+          fi
+        done
+        relink_command="cd `pwd`; $relink_command"
         relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
       fi
 
       # Quote $echo for shipping.
       if test "X$echo" = "X$SHELL $0 --fallback-echo"; then
-        case "$0" in
+        case $0 in
         [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $0 --fallback-echo";;
         *) qecho="$SHELL `pwd`/$0 --fallback-echo";;
         esac
@@ -2784,6 +3516,11 @@
         case $output in
           *.exe) output=`echo $output|sed 's,.exe$,,'` ;;
         esac
+        # test for cygwin because mv fails w/o .exe extensions
+        case $host in
+          *cygwin*) exeext=.exe ;;
+          *) exeext= ;;
+        esac
         $rm $output
         trap "$rm $output; exit 1" 1 2 15
 
@@ -2813,7 +3550,7 @@
 # This environment variable determines our operation mode.
 if test \"\$libtool_install_magic\" = \"$magic\"; then
   # install mode needs the following variable:
-  link_against_libtool_libs='$link_against_libtool_libs'
+  notinst_deplibs='$notinst_deplibs'
 else
   # When we are sourced in execute mode, \$file and \$echo are already set.
   if test \"\$libtool_execute_magic\" != \"$magic\"; then
@@ -2846,7 +3583,7 @@
     # If there was a directory component, then change thisdir.
     if test \"x\$destdir\" != \"x\$file\"; then
       case \"\$destdir\" in
-      [\\/]* | [A-Za-z]:[\\/]*) thisdir=\"\$destdir\" ;;
+      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
       *) thisdir=\"\$thisdir/\$destdir\" ;;
       esac
     fi
@@ -2862,9 +3599,9 @@
 
         if test "$fast_install" = yes; then
           echo >> $output "\
-  program=lt-'$outputname'
+  program=lt-'$outputname'$exeext
   progdir=\"\$thisdir/$objdir\"
-  
+
   if test ! -f \"\$progdir/\$program\" || \\
      { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | sed 1q\`; \\
        test \"X\$file\" != \"X\$progdir/\$program\"; }; then
@@ -2881,7 +3618,7 @@
 
     # relink executable if necessary
     if test -n \"\$relink_command\"; then
-      if (cd \"\$thisdir\" && eval \$relink_command); then :
+      if (eval \$relink_command); then :
       else
         $rm \"\$progdir/\$file\"
         exit 1
@@ -2931,9 +3668,9 @@
       # Run the actual program with our arguments.
 "
         case $host in
-          # win32 systems need to use the prog path for dll
-          # lookup to work
-        *-*-cygwin*)
+        # win32 systems need to use the prog path for dll
+        # lookup to work
+        *-*-cygwin* | *-*-pw32*)
           $echo >> $output "\
       exec \$progdir/\$program \${1+\"\$@\"}
 "
@@ -2987,7 +3724,7 @@
           oldobjs="$libobjs_save"
           build_libtool_libs=no
         else
-          oldobjs="$objs "`$echo "X$libobjs_save" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`
+          oldobjs="$objs$old_deplibs "`$echo "X$libobjs_save" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`
         fi
         addlibs="$old_convenience"
       fi
@@ -3003,11 +3740,11 @@
           exit $status
         fi
         generated="$generated $gentop"
-          
+
         # Add in members from convenience archives.
         for xlib in $addlibs; do
           # Extract the objects.
-          case "$xlib" in
+          case $xlib in
           [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
           *) xabs=`pwd`"/$xlib" ;;
           esac
@@ -3068,19 +3805,26 @@
     fi
 
     # Now create the libtool archive.
-    case "$output" in
+    case $output in
     *.la)
       old_library=
       test "$build_old_libs" = yes && old_library="$libname.$libext"
       $show "creating $output"
 
-      if test -n "$xrpath"; then
-        temp_xrpath=
-        for libdir in $xrpath; do
-          temp_xrpath="$temp_xrpath -R$libdir"
-        done
-        dependency_libs="$temp_xrpath $dependency_libs"
-      fi
+      # Preserve any variables that may affect compiler behavior
+      for var in $variables_saved_for_relink; do
+        if eval test -z \"\${$var+set}\"; then
+          relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
+        elif eval var_value=\$$var; test -z "$var_value"; then
+          relink_command="$var=; export $var; $relink_command"
+        else
+          var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
+          relink_command="$var=\"$var_value\"; export $var; $relink_command"
+        fi
+      done
+      # Quote the link command for shipping.
+      relink_command="cd `pwd`; $SHELL $0 --mode=relink $libtool_args"
+      relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
 
       # Only create the output if not a dry run.
       if test -z "$run"; then
@@ -3090,8 +3834,52 @@
               break
             fi
             output="$output_objdir/$outputname"i
+            # Replace all uninstalled libtool libraries with the installed ones
+            newdependency_libs=
+            for deplib in $dependency_libs; do
+              case $deplib in
+              *.la)
+                name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'`
+                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
+                fi
+                newdependency_libs="$newdependency_libs $libdir/$name"
+                ;;
+              *) newdependency_libs="$newdependency_libs $deplib" ;;
+              esac
+            done
+            dependency_libs="$newdependency_libs"
+            newdlfiles=
+            for lib in $dlfiles; do
+              name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+              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
+              fi
+              newdlfiles="$newdlfiles $libdir/$name"
+            done
+            dlfiles="$newdlfiles"
+            newdlprefiles=
+            for lib in $dlprefiles; do
+              name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+              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
+              fi
+              newdlprefiles="$newdlprefiles $libdir/$name"
+            done
+            dlprefiles="$newdlprefiles"
           fi
           $rm $output
+          # place dlname in correct position for cygwin
+          tdlname=$dlname
+          case $host,$output,$installed,$module,$dlname in
+            *cygwin*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
+          esac
           $echo > $output "\
 # $outputname - a libtool library file
 # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
@@ -3100,7 +3888,7 @@
 # It is necessary for linking the library.
 
 # The name that we can dlopen(3).
-dlname='$dlname'
+dlname='$tdlname'
 
 # Names of this library.
 library_names='$library_names'
@@ -3119,16 +3907,23 @@
 # Is this an already installed library?
 installed=$installed
 
+# Files to dlopen/dlpreopen
+dlopen='$dlfiles'
+dlpreopen='$dlprefiles'
+
 # Directory that this library needs to be installed in:
-libdir='$install_libdir'\
-"
+libdir='$install_libdir'"
+          if test "$installed" = no && test $need_relink = yes; then
+            $echo >> $output "\
+relink_command=\"$relink_command\""
+          fi
         done
       fi
 
       # Do a symbolic link so that the libtool archive can be found in
       # LD_LIBRARY_PATH before the program is installed.
       $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)"
-      $run eval "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" || exit $?
+      $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $?
       ;;
     esac
     exit 0
@@ -3140,10 +3935,12 @@
 
     # There may be an optional sh(1) argument at the beginning of
     # install_prog (especially on Windows NT).
-    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || test "$nonopt" = ./shtool;then
+    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
+       # Allow the use of GNU shtool's install command.
+       $echo "X$nonopt" | $Xsed | grep shtool > /dev/null; then
       # Aesthetically quote it.
       arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
-      case "$arg" in
+      case $arg in
       *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \     ]*|*]*)
         arg="\"$arg\""
         ;;
@@ -3159,7 +3956,7 @@
     # The real first argument should be the name of the installation program.
     # Aesthetically quote it.
     arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
-    case "$arg" in
+    case $arg in
     *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \       ]*|*]*)
       arg="\"$arg\""
       ;;
@@ -3182,7 +3979,7 @@
         continue
       fi
 
-      case "$arg" in
+      case $arg in
       -d) isdir=yes ;;
       -f) prev="-f" ;;
       -g) prev="-g" ;;
@@ -3207,7 +4004,7 @@
 
       # Aesthetically quote the argument.
       arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
-      case "$arg" in
+      case $arg in
       *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \     ]*|*]*)
         arg="\"$arg\""
         ;;
@@ -3258,11 +4055,11 @@
         exit 1
       fi
     fi
-    case "$destdir" in
+    case $destdir in
     [\\/]* | [A-Za-z]:[\\/]*) ;;
     *)
       for file in $files; do
-        case "$file" in
+        case $file in
         *.lo) ;;
         *)
           $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2
@@ -3284,8 +4081,8 @@
     for file in $files; do
 
       # Do each installation.
-      case "$file" in
-      *.a | *.lib)
+      case $file in
+      *.$libext)
         # Do the static libraries later.
         staticlibs="$staticlibs $file"
         ;;
@@ -3301,8 +4098,9 @@
 
         library_names=
         old_library=
+        relink_command=
         # If there is no directory component, then add one.
-        case "$file" in
+        case $file in
         */* | *\\*) . $file ;;
         *) . ./$file ;;
         esac
@@ -3321,10 +4119,20 @@
           esac
         fi
 
-        dir="`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/"
+        dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/
         test "X$dir" = "X$file/" && dir=
         dir="$dir$objdir"
 
+        if test -n "$relink_command"; then
+          $echo "$modename: warning: relinking \`$file'" 1>&2
+          $show "$relink_command"
+          if $run eval "$relink_command"; then :
+          else
+            $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
+            continue
+          fi
+        fi
+
         # See the names of the shared library.
         set dummy $library_names
         if test -n "$2"; then
@@ -3332,9 +4140,16 @@
           shift
           shift
 
+          srcname="$realname"
+          test -n "$relink_command" && srcname="$realname"T
+
           # Install the shared library and build the symlinks.
-          $show "$install_prog $dir/$realname $destdir/$realname"
-          $run eval "$install_prog $dir/$realname $destdir/$realname" || exit $?
+          $show "$install_prog $dir/$srcname $destdir/$realname"
+          $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $?
+          if test -n "$stripme" && test -n "$striplib"; then
+            $show "$striplib $destdir/$realname"
+            $run eval "$striplib $destdir/$realname" || exit $?
+          fi
 
           if test $# -gt 0; then
             # Delete the old symlinks, and create new ones.
@@ -3381,11 +4196,11 @@
         fi
 
         # Deduce the name of the destination old-style object file.
-        case "$destfile" in
+        case $destfile in
         *.lo)
           staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"`
           ;;
-        *.o | *.obj)
+        *.$objext)
           staticdest="$destfile"
           destfile=
           ;;
@@ -3424,39 +4239,46 @@
 
         # Do a test to see if this is really a libtool program.
         if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
-          link_against_libtool_libs=
+          notinst_deplibs=
           relink_command=
 
           # If there is no directory component, then add one.
-          case "$file" in
+          case $file in
           */* | *\\*) . $file ;;
           *) . ./$file ;;
           esac
 
           # Check the variables that should have been set.
-          if test -z "$link_against_libtool_libs"; then
+          if test -z "$notinst_deplibs"; then
             $echo "$modename: invalid libtool wrapper script \`$file'" 1>&2
             exit 1
           fi
 
           finalize=yes
-          for lib in $link_against_libtool_libs; do
+          for lib in $notinst_deplibs; do
             # Check to see that each library is installed.
             libdir=
             if test -f "$lib"; then
               # If there is no directory component, then add one.
-              case "$lib" in
+              case $lib in
               */* | *\\*) . $lib ;;
               *) . ./$lib ;;
               esac
             fi
-            libfile="$libdir/`$echo "X$lib" | $Xsed -e 's%^.*/%%g'`"
+            libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
             if test -n "$libdir" && test ! -f "$libfile"; then
               $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2
               finalize=no
             fi
           done
 
+          relink_command=
+          # If there is no directory component, then add one.
+          case $file in
+          */* | *\\*) . $file ;;
+          *) . ./$file ;;
+          esac
+
           outputname=
           if test "$fast_install" = no && test -n "$relink_command"; then
             if test "$finalize" = yes && test -z "$run"; then
@@ -3468,6 +4290,7 @@
                 $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2
                 continue
               fi
+              file=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
               outputname="$tmpdir/$file"
               # Replace the output file specification.
               relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
@@ -3489,6 +4312,23 @@
           fi
         fi
 
+        # remove .exe since cygwin /usr/bin/install will append another
+        # one anyways
+        case $install_prog,$host in
+        /usr/bin/install*,*cygwin*)
+          case $file:$destfile in
+          *.exe:*.exe)
+            # this is ok
+            ;;
+          *.exe:*)
+            destfile=$destfile.exe
+            ;;
+          *:*.exe)
+            destfile=`echo $destfile | sed -e 's,.exe$,,'`
+            ;;
+          esac
+          ;;
+        esac
         $show "$install_prog$stripme $file $destfile"
         $run eval "$install_prog\$stripme \$file \$destfile" || exit $?
         test -n "$outputname" && ${rm}r "$tmpdir"
@@ -3505,6 +4345,11 @@
       $show "$install_prog $file $oldlib"
       $run eval "$install_prog \$file \$oldlib" || exit $?
 
+      if test -n "$stripme" && test -n "$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\"
       IFS="${IFS=       }"; save_ifs="$IFS"; IFS='~'
@@ -3523,7 +4368,7 @@
     if test -n "$current_libdirs"; then
       # Maybe just do a dry run.
       test -n "$run" && current_libdirs=" -n$current_libdirs"
-      exit 0 #$current_libdirs
+      exec $SHELL $0 --finish$current_libdirs
       exit 1
     fi
 
@@ -3565,7 +4410,7 @@
     fi
 
     # Exit here if they wanted silent mode.
-    test "$show" = : && exit 0
+    test "$show" = ":" && exit 0
 
     echo "----------------------------------------------------------------------"
     echo "Libraries have been installed in:"
@@ -3575,7 +4420,7 @@
     echo
     echo "If you ever happen to want to link against installed libraries"
     echo "in a given directory, LIBDIR, you must either use libtool, and"
-    echo "specify the full pathname of the library, or use \`-LLIBDIR'"
+    echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
     echo "flag during linking and do at least one of the following:"
     if test -n "$shlibpath_var"; then
       echo "   - add LIBDIR to the \`$shlibpath_var' environment variable"
@@ -3625,7 +4470,7 @@
       fi
 
       dir=
-      case "$file" in
+      case $file in
       *.la)
         # Check to see that this really is a libtool archive.
         if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
@@ -3640,7 +4485,7 @@
         library_names=
 
         # If there is no directory component, then add one.
-        case "$file" in
+        case $file in
         */* | *\\*) . $file ;;
         *) . ./$file ;;
         esac
@@ -3695,13 +4540,13 @@
     args=
     for file
     do
-      case "$file" in
+      case $file in
       -*) ;;
       *)
         # Do a test to see if this is really a libtool program.
         if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
           # If there is no directory component, then add one.
-          case "$file" in
+          case $file in
           */* | *\\*) . $file ;;
           *) . ./$file ;;
           esac
@@ -3718,8 +4563,8 @@
 
     if test -z "$run"; then
       if test -n "$shlibpath_var"; then
-        # Export the shlibpath_var.
-        eval "export $shlibpath_var"
+        # Export the shlibpath_var.
+        eval "export $shlibpath_var"
       fi
 
       # Restore saved enviroment variables
@@ -3738,23 +4583,30 @@
     else
       # Display what would be done.
       if test -n "$shlibpath_var"; then
-        eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\""
-        $echo "export $shlibpath_var"
+        eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\""
+        $echo "export $shlibpath_var"
       fi
       $echo "$cmd$args"
       exit 0
     fi
     ;;
 
-  # libtool uninstall mode
-  uninstall)
-    modename="$modename: uninstall"
+  # libtool clean and uninstall mode
+  clean | uninstall)
+    modename="$modename: $mode"
     rm="$nonopt"
     files=
+    rmforce=
+    exit_status=0
+
+    # This variable tells wrapper scripts just to set variables rather
+    # than running their programs.
+    libtool_install_magic="$magic"
 
     for arg
     do
-      case "$arg" in
+      case $arg in
+      -f) rm="$rm $arg"; rmforce=yes ;;
       -*) rm="$rm $arg" ;;
       *) files="$files $arg" ;;
       esac
@@ -3766,14 +4618,42 @@
       exit 1
     fi
 
+    rmdirs=
+
     for file in $files; do
       dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
-      test "X$dir" = "X$file" && dir=.
+      if test "X$dir" = "X$file"; then
+        dir=.
+        objdir="$objdir"
+      else
+        objdir="$dir/$objdir"
+      fi
       name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+      test $mode = uninstall && objdir="$dir"
+
+      # Remember objdir for removal later, being careful to avoid duplicates
+      if test $mode = clean; then
+        case " $rmdirs " in
+          *" $objdir "*) ;;
+          *) rmdirs="$rmdirs $objdir" ;;
+        esac
+      fi
+
+      # Don't error if the file doesn't exist and rm -f was used.
+      if (test -L "$file") >/dev/null 2>&1 \
+        || (test -h "$file") >/dev/null 2>&1 \
+        || test -f "$file"; then
+        :
+      elif test -d "$file"; then
+        exit_status=1
+        continue
+      elif test "$rmforce" = yes; then
+        continue
+      fi
 
       rmfiles="$file"
 
-      case "$name" in
+      case $name in
       *.la)
         # Possibly a libtool archive, so verify it.
         if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
@@ -3781,38 +4661,43 @@
 
           # Delete the libtool libraries and symlinks.
           for n in $library_names; do
-            rmfiles="$rmfiles $dir/$n"
+            rmfiles="$rmfiles $objdir/$n"
           done
-          test -n "$old_library" && rmfiles="$rmfiles $dir/$old_library"
-
-          $show "$rm $rmfiles"
-          $run $rm $rmfiles
+          test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
+          test $mode = clean && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
 
-          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
+          if test $mode = uninstall; then
+            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"
+                if test $? != 0 && test "$rmforce" != yes; then
+                  exit_status=1
+                fi
+              done
               IFS="$save_ifs"
-              $show "$cmd"
-              $run eval "$cmd"
-            done
-            IFS="$save_ifs"
-          fi
+            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
+            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"
+                if test $? != 0 && test "$rmforce" != yes; then
+                  exit_status=1
+                fi
+              done
               IFS="$save_ifs"
-              $show "$cmd"
-              $run eval "$cmd"
-            done
-            IFS="$save_ifs"
+            fi
+            # FIXME: should reinstall the best remaining shared library.
           fi
-
-          # FIXME: should reinstall the best remaining shared library.
         fi
         ;;
 
@@ -3821,17 +4706,35 @@
           oldobj=`$echo "X$name" | $Xsed -e "$lo2o"`
           rmfiles="$rmfiles $dir/$oldobj"
         fi
-        $show "$rm $rmfiles"
-        $run $rm $rmfiles
         ;;
 
       *)
-        $show "$rm $rmfiles"
-        $run $rm $rmfiles
+        # Do a test to see if this is a libtool program.
+        if test $mode = clean &&
+           (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+          relink_command=
+          . $dir/$file
+
+          rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
+          if test "$fast_install" = yes && test -n "$relink_command"; then
+            rmfiles="$rmfiles $objdir/lt-$name"
+          fi
+        fi
         ;;
       esac
+      $show "$rm $rmfiles"
+      $run $rm $rmfiles || exit_status=1
     done
-    exit 0
+
+    # Try to remove the ${objdir}s in the directories where we deleted files
+    for dir in $rmdirs; do
+      if test -d "$dir"; then
+        $show "rmdir $dir"
+        $run rmdir $dir >/dev/null 2>&1
+      fi
+    done
+
+    exit $exit_status
     ;;
 
   "")
@@ -3847,7 +4750,7 @@
 fi # test -z "$show_help"
 
 # We need to display help for each of the modes.
-case "$mode" in
+case $mode in
 "") $echo \
 "Usage: $modename [OPTION]... [MODE-ARG]...
 
@@ -3866,6 +4769,7 @@
 
 MODE must be one of the following:
 
+      clean           remove files from the build directory
       compile         compile a source file into a libtool object
       execute         automatically set library path, then run a program
       finish          complete the installation of libtool libraries
@@ -3878,6 +4782,20 @@
   exit 0
   ;;
 
+clean)
+  $echo \
+"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
+
+Remove files from the build directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
+to RM.
+
+If FILE is a libtool library, object or program, all the files associated
+with it are deleted. Otherwise, only FILE itself is deleted using RM."
+  ;;
+
 compile)
   $echo \
 "Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
@@ -3887,6 +4805,8 @@
 This mode accepts the following additional options:
 
   -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
+  -prefer-pic       try to building PIC objects only
+  -prefer-non-pic   try to building non-PIC objects only
   -static           always build a \`.o' file suitable for static linking
 
 COMPILE-COMMAND is a command to be used in creating a \`standard' object file
@@ -3966,6 +4886,8 @@
   -LLIBDIR          search LIBDIR for required installed libraries
   -lNAME            OUTPUT-FILE requires the installed library libNAME
   -module           build a library that can dlopened
+  -no-fast-install  disable the fast-install mode
+  -no-install       link a not-installable executable
   -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

CVSTrac 2.0.1