github.com/jlmucb/cloudproxy@v0.0.0-20170830161738-b5aa0b619bc4/src/third_party/google-glog/ltmain.sh (about)

     1  
     2  # libtool (GNU libtool) 2.4.2
     3  # Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
     4  
     5  # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
     6  # 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
     7  # This is free software; see the source for copying conditions.  There is NO
     8  # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
     9  
    10  # GNU Libtool is free software; you can redistribute it and/or modify
    11  # it under the terms of the GNU General Public License as published by
    12  # the Free Software Foundation; either version 2 of the License, or
    13  # (at your option) any later version.
    14  #
    15  # As a special exception to the GNU General Public License,
    16  # if you distribute this file as part of a program or library that
    17  # is built using GNU Libtool, you may include this file under the
    18  # same distribution terms that you use for the rest of that program.
    19  #
    20  # GNU Libtool is distributed in the hope that it will be useful, but
    21  # WITHOUT ANY WARRANTY; without even the implied warranty of
    22  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    23  # General Public License for more details.
    24  #
    25  # You should have received a copy of the GNU General Public License
    26  # along with GNU Libtool; see the file COPYING.  If not, a copy
    27  # can be downloaded from http://www.gnu.org/licenses/gpl.html,
    28  # or obtained by writing to the Free Software Foundation, Inc.,
    29  # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    30  
    31  # Usage: $progname [OPTION]... [MODE-ARG]...
    32  #
    33  # Provide generalized library-building support services.
    34  #
    35  #       --config             show all configuration variables
    36  #       --debug              enable verbose shell tracing
    37  #   -n, --dry-run            display commands without modifying any files
    38  #       --features           display basic configuration information and exit
    39  #       --mode=MODE          use operation mode MODE
    40  #       --preserve-dup-deps  don't remove duplicate dependency libraries
    41  #       --quiet, --silent    don't print informational messages
    42  #       --no-quiet, --no-silent
    43  #                            print informational messages (default)
    44  #       --no-warn            don't display warning messages
    45  #       --tag=TAG            use configuration variables from tag TAG
    46  #   -v, --verbose            print more informational messages than default
    47  #       --no-verbose         don't print the extra informational messages
    48  #       --version            print version information
    49  #   -h, --help, --help-all   print short, long, or detailed help message
    50  #
    51  # MODE must be one of the following:
    52  #
    53  #         clean              remove files from the build directory
    54  #         compile            compile a source file into a libtool object
    55  #         execute            automatically set library path, then run a program
    56  #         finish             complete the installation of libtool libraries
    57  #         install            install libraries or executables
    58  #         link               create a library or an executable
    59  #         uninstall          remove libraries from an installed directory
    60  #
    61  # MODE-ARGS vary depending on the MODE.  When passed as first option,
    62  # `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that.
    63  # Try `$progname --help --mode=MODE' for a more detailed description of MODE.
    64  #
    65  # When reporting a bug, please describe a test case to reproduce it and
    66  # include the following information:
    67  #
    68  #         host-triplet:	$host
    69  #         shell:		$SHELL
    70  #         compiler:		$LTCC
    71  #         compiler flags:		$LTCFLAGS
    72  #         linker:		$LD (gnu? $with_gnu_ld)
    73  #         $progname:	(GNU libtool) 2.4.2 Debian-2.4.2-1ubuntu1
    74  #         automake:	$automake_version
    75  #         autoconf:	$autoconf_version
    76  #
    77  # Report bugs to <bug-libtool@gnu.org>.
    78  # GNU libtool home page: <http://www.gnu.org/software/libtool/>.
    79  # General help using GNU software: <http://www.gnu.org/gethelp/>.
    80  
    81  PROGRAM=libtool
    82  PACKAGE=libtool
    83  VERSION="2.4.2 Debian-2.4.2-1ubuntu1"
    84  TIMESTAMP=""
    85  package_revision=1.3337
    86  
    87  # Be Bourne compatible
    88  if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
    89    emulate sh
    90    NULLCMD=:
    91    # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
    92    # is contrary to our usage.  Disable this feature.
    93    alias -g '${1+"$@"}'='"$@"'
    94    setopt NO_GLOB_SUBST
    95  else
    96    case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
    97  fi
    98  BIN_SH=xpg4; export BIN_SH # for Tru64
    99  DUALCASE=1; export DUALCASE # for MKS sh
   100  
   101  # A function that is used when there is no print builtin or printf.
   102  func_fallback_echo ()
   103  {
   104    eval 'cat <<_LTECHO_EOF
   105  $1
   106  _LTECHO_EOF'
   107  }
   108  
   109  # NLS nuisances: We save the old values to restore during execute mode.
   110  lt_user_locale=
   111  lt_safe_locale=
   112  for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
   113  do
   114    eval "if test \"\${$lt_var+set}\" = set; then
   115            save_$lt_var=\$$lt_var
   116            $lt_var=C
   117  	  export $lt_var
   118  	  lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
   119  	  lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
   120  	fi"
   121  done
   122  LC_ALL=C
   123  LANGUAGE=C
   124  export LANGUAGE LC_ALL
   125  
   126  $lt_unset CDPATH
   127  
   128  
   129  # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
   130  # is ksh but when the shell is invoked as "sh" and the current value of
   131  # the _XPG environment variable is not equal to 1 (one), the special
   132  # positional parameter $0, within a function call, is the name of the
   133  # function.
   134  progpath="$0"
   135  
   136  
   137  
   138  : ${CP="cp -f"}
   139  test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
   140  : ${MAKE="make"}
   141  : ${MKDIR="mkdir"}
   142  : ${MV="mv -f"}
   143  : ${RM="rm -f"}
   144  : ${SHELL="${CONFIG_SHELL-/bin/sh}"}
   145  : ${Xsed="$SED -e 1s/^X//"}
   146  
   147  # Global variables:
   148  EXIT_SUCCESS=0
   149  EXIT_FAILURE=1
   150  EXIT_MISMATCH=63  # $? = 63 is used to indicate version mismatch to missing.
   151  EXIT_SKIP=77	  # $? = 77 is used to indicate a skipped test to automake.
   152  
   153  exit_status=$EXIT_SUCCESS
   154  
   155  # Make sure IFS has a sensible default
   156  lt_nl='
   157  '
   158  IFS=" 	$lt_nl"
   159  
   160  dirname="s,/[^/]*$,,"
   161  basename="s,^.*/,,"
   162  
   163  # func_dirname file append nondir_replacement
   164  # Compute the dirname of FILE.  If nonempty, add APPEND to the result,
   165  # otherwise set result to NONDIR_REPLACEMENT.
   166  func_dirname ()
   167  {
   168      func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
   169      if test "X$func_dirname_result" = "X${1}"; then
   170        func_dirname_result="${3}"
   171      else
   172        func_dirname_result="$func_dirname_result${2}"
   173      fi
   174  } # func_dirname may be replaced by extended shell implementation
   175  
   176  
   177  # func_basename file
   178  func_basename ()
   179  {
   180      func_basename_result=`$ECHO "${1}" | $SED "$basename"`
   181  } # func_basename may be replaced by extended shell implementation
   182  
   183  
   184  # func_dirname_and_basename file append nondir_replacement
   185  # perform func_basename and func_dirname in a single function
   186  # call:
   187  #   dirname:  Compute the dirname of FILE.  If nonempty,
   188  #             add APPEND to the result, otherwise set result
   189  #             to NONDIR_REPLACEMENT.
   190  #             value returned in "$func_dirname_result"
   191  #   basename: Compute filename of FILE.
   192  #             value retuned in "$func_basename_result"
   193  # Implementation must be kept synchronized with func_dirname
   194  # and func_basename. For efficiency, we do not delegate to
   195  # those functions but instead duplicate the functionality here.
   196  func_dirname_and_basename ()
   197  {
   198      # Extract subdirectory from the argument.
   199      func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"`
   200      if test "X$func_dirname_result" = "X${1}"; then
   201        func_dirname_result="${3}"
   202      else
   203        func_dirname_result="$func_dirname_result${2}"
   204      fi
   205      func_basename_result=`$ECHO "${1}" | $SED -e "$basename"`
   206  } # func_dirname_and_basename may be replaced by extended shell implementation
   207  
   208  
   209  # func_stripname prefix suffix name
   210  # strip PREFIX and SUFFIX off of NAME.
   211  # PREFIX and SUFFIX must not contain globbing or regex special
   212  # characters, hashes, percent signs, but SUFFIX may contain a leading
   213  # dot (in which case that matches only a dot).
   214  # func_strip_suffix prefix name
   215  func_stripname ()
   216  {
   217      case ${2} in
   218        .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
   219        *)  func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
   220      esac
   221  } # func_stripname may be replaced by extended shell implementation
   222  
   223  
   224  # These SED scripts presuppose an absolute path with a trailing slash.
   225  pathcar='s,^/\([^/]*\).*$,\1,'
   226  pathcdr='s,^/[^/]*,,'
   227  removedotparts=':dotsl
   228  		s@/\./@/@g
   229  		t dotsl
   230  		s,/\.$,/,'
   231  collapseslashes='s@/\{1,\}@/@g'
   232  finalslash='s,/*$,/,'
   233  
   234  # func_normal_abspath PATH
   235  # Remove doubled-up and trailing slashes, "." path components,
   236  # and cancel out any ".." path components in PATH after making
   237  # it an absolute path.
   238  #             value returned in "$func_normal_abspath_result"
   239  func_normal_abspath ()
   240  {
   241    # Start from root dir and reassemble the path.
   242    func_normal_abspath_result=
   243    func_normal_abspath_tpath=$1
   244    func_normal_abspath_altnamespace=
   245    case $func_normal_abspath_tpath in
   246      "")
   247        # Empty path, that just means $cwd.
   248        func_stripname '' '/' "`pwd`"
   249        func_normal_abspath_result=$func_stripname_result
   250        return
   251      ;;
   252      # The next three entries are used to spot a run of precisely
   253      # two leading slashes without using negated character classes;
   254      # we take advantage of case's first-match behaviour.
   255      ///*)
   256        # Unusual form of absolute path, do nothing.
   257      ;;
   258      //*)
   259        # Not necessarily an ordinary path; POSIX reserves leading '//'
   260        # and for example Cygwin uses it to access remote file shares
   261        # over CIFS/SMB, so we conserve a leading double slash if found.
   262        func_normal_abspath_altnamespace=/
   263      ;;
   264      /*)
   265        # Absolute path, do nothing.
   266      ;;
   267      *)
   268        # Relative path, prepend $cwd.
   269        func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath
   270      ;;
   271    esac
   272    # Cancel out all the simple stuff to save iterations.  We also want
   273    # the path to end with a slash for ease of parsing, so make sure
   274    # there is one (and only one) here.
   275    func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
   276          -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"`
   277    while :; do
   278      # Processed it all yet?
   279      if test "$func_normal_abspath_tpath" = / ; then
   280        # If we ascended to the root using ".." the result may be empty now.
   281        if test -z "$func_normal_abspath_result" ; then
   282          func_normal_abspath_result=/
   283        fi
   284        break
   285      fi
   286      func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \
   287          -e "$pathcar"`
   288      func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
   289          -e "$pathcdr"`
   290      # Figure out what to do with it
   291      case $func_normal_abspath_tcomponent in
   292        "")
   293          # Trailing empty path component, ignore it.
   294        ;;
   295        ..)
   296          # Parent dir; strip last assembled component from result.
   297          func_dirname "$func_normal_abspath_result"
   298          func_normal_abspath_result=$func_dirname_result
   299        ;;
   300        *)
   301          # Actual path component, append it.
   302          func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent
   303        ;;
   304      esac
   305    done
   306    # Restore leading double-slash if one was found on entry.
   307    func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result
   308  }
   309  
   310  # func_relative_path SRCDIR DSTDIR
   311  # generates a relative path from SRCDIR to DSTDIR, with a trailing
   312  # slash if non-empty, suitable for immediately appending a filename
   313  # without needing to append a separator.
   314  #             value returned in "$func_relative_path_result"
   315  func_relative_path ()
   316  {
   317    func_relative_path_result=
   318    func_normal_abspath "$1"
   319    func_relative_path_tlibdir=$func_normal_abspath_result
   320    func_normal_abspath "$2"
   321    func_relative_path_tbindir=$func_normal_abspath_result
   322  
   323    # Ascend the tree starting from libdir
   324    while :; do
   325      # check if we have found a prefix of bindir
   326      case $func_relative_path_tbindir in
   327        $func_relative_path_tlibdir)
   328          # found an exact match
   329          func_relative_path_tcancelled=
   330          break
   331          ;;
   332        $func_relative_path_tlibdir*)
   333          # found a matching prefix
   334          func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir"
   335          func_relative_path_tcancelled=$func_stripname_result
   336          if test -z "$func_relative_path_result"; then
   337            func_relative_path_result=.
   338          fi
   339          break
   340          ;;
   341        *)
   342          func_dirname $func_relative_path_tlibdir
   343          func_relative_path_tlibdir=${func_dirname_result}
   344          if test "x$func_relative_path_tlibdir" = x ; then
   345            # Have to descend all the way to the root!
   346            func_relative_path_result=../$func_relative_path_result
   347            func_relative_path_tcancelled=$func_relative_path_tbindir
   348            break
   349          fi
   350          func_relative_path_result=../$func_relative_path_result
   351          ;;
   352      esac
   353    done
   354  
   355    # Now calculate path; take care to avoid doubling-up slashes.
   356    func_stripname '' '/' "$func_relative_path_result"
   357    func_relative_path_result=$func_stripname_result
   358    func_stripname '/' '/' "$func_relative_path_tcancelled"
   359    if test "x$func_stripname_result" != x ; then
   360      func_relative_path_result=${func_relative_path_result}/${func_stripname_result}
   361    fi
   362  
   363    # Normalisation. If bindir is libdir, return empty string,
   364    # else relative path ending with a slash; either way, target
   365    # file name can be directly appended.
   366    if test ! -z "$func_relative_path_result"; then
   367      func_stripname './' '' "$func_relative_path_result/"
   368      func_relative_path_result=$func_stripname_result
   369    fi
   370  }
   371  
   372  # The name of this program:
   373  func_dirname_and_basename "$progpath"
   374  progname=$func_basename_result
   375  
   376  # Make sure we have an absolute path for reexecution:
   377  case $progpath in
   378    [\\/]*|[A-Za-z]:\\*) ;;
   379    *[\\/]*)
   380       progdir=$func_dirname_result
   381       progdir=`cd "$progdir" && pwd`
   382       progpath="$progdir/$progname"
   383       ;;
   384    *)
   385       save_IFS="$IFS"
   386       IFS=${PATH_SEPARATOR-:}
   387       for progdir in $PATH; do
   388         IFS="$save_IFS"
   389         test -x "$progdir/$progname" && break
   390       done
   391       IFS="$save_IFS"
   392       test -n "$progdir" || progdir=`pwd`
   393       progpath="$progdir/$progname"
   394       ;;
   395  esac
   396  
   397  # Sed substitution that helps us do robust quoting.  It backslashifies
   398  # metacharacters that are still active within double-quoted strings.
   399  Xsed="${SED}"' -e 1s/^X//'
   400  sed_quote_subst='s/\([`"$\\]\)/\\\1/g'
   401  
   402  # Same as above, but do not quote variable references.
   403  double_quote_subst='s/\(["`\\]\)/\\\1/g'
   404  
   405  # Sed substitution that turns a string into a regex matching for the
   406  # string literally.
   407  sed_make_literal_regex='s,[].[^$\\*\/],\\&,g'
   408  
   409  # Sed substitution that converts a w32 file name or path
   410  # which contains forward slashes, into one that contains
   411  # (escaped) backslashes.  A very naive implementation.
   412  lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
   413  
   414  # Re-`\' parameter expansions in output of double_quote_subst that were
   415  # `\'-ed in input to the same.  If an odd number of `\' preceded a '$'
   416  # in input to double_quote_subst, that '$' was protected from expansion.
   417  # Since each input `\' is now two `\'s, look for any number of runs of
   418  # four `\'s followed by two `\'s and then a '$'.  `\' that '$'.
   419  bs='\\'
   420  bs2='\\\\'
   421  bs4='\\\\\\\\'
   422  dollar='\$'
   423  sed_double_backslash="\
   424    s/$bs4/&\\
   425  /g
   426    s/^$bs2$dollar/$bs&/
   427    s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
   428    s/\n//g"
   429  
   430  # Standard options:
   431  opt_dry_run=false
   432  opt_help=false
   433  opt_quiet=false
   434  opt_verbose=false
   435  opt_warning=:
   436  
   437  # func_echo arg...
   438  # Echo program name prefixed message, along with the current mode
   439  # name if it has been set yet.
   440  func_echo ()
   441  {
   442      $ECHO "$progname: ${opt_mode+$opt_mode: }$*"
   443  }
   444  
   445  # func_verbose arg...
   446  # Echo program name prefixed message in verbose mode only.
   447  func_verbose ()
   448  {
   449      $opt_verbose && func_echo ${1+"$@"}
   450  
   451      # A bug in bash halts the script if the last line of a function
   452      # fails when set -e is in force, so we need another command to
   453      # work around that:
   454      :
   455  }
   456  
   457  # func_echo_all arg...
   458  # Invoke $ECHO with all args, space-separated.
   459  func_echo_all ()
   460  {
   461      $ECHO "$*"
   462  }
   463  
   464  # func_error arg...
   465  # Echo program name prefixed message to standard error.
   466  func_error ()
   467  {
   468      $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2
   469  }
   470  
   471  # func_warning arg...
   472  # Echo program name prefixed warning message to standard error.
   473  func_warning ()
   474  {
   475      $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2
   476  
   477      # bash bug again:
   478      :
   479  }
   480  
   481  # func_fatal_error arg...
   482  # Echo program name prefixed message to standard error, and exit.
   483  func_fatal_error ()
   484  {
   485      func_error ${1+"$@"}
   486      exit $EXIT_FAILURE
   487  }
   488  
   489  # func_fatal_help arg...
   490  # Echo program name prefixed message to standard error, followed by
   491  # a help hint, and exit.
   492  func_fatal_help ()
   493  {
   494      func_error ${1+"$@"}
   495      func_fatal_error "$help"
   496  }
   497  help="Try \`$progname --help' for more information."  ## default
   498  
   499  
   500  # func_grep expression filename
   501  # Check whether EXPRESSION matches any line of FILENAME, without output.
   502  func_grep ()
   503  {
   504      $GREP "$1" "$2" >/dev/null 2>&1
   505  }
   506  
   507  
   508  # func_mkdir_p directory-path
   509  # Make sure the entire path to DIRECTORY-PATH is available.
   510  func_mkdir_p ()
   511  {
   512      my_directory_path="$1"
   513      my_dir_list=
   514  
   515      if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
   516  
   517        # Protect directory names starting with `-'
   518        case $my_directory_path in
   519          -*) my_directory_path="./$my_directory_path" ;;
   520        esac
   521  
   522        # While some portion of DIR does not yet exist...
   523        while test ! -d "$my_directory_path"; do
   524          # ...make a list in topmost first order.  Use a colon delimited
   525  	# list incase some portion of path contains whitespace.
   526          my_dir_list="$my_directory_path:$my_dir_list"
   527  
   528          # If the last portion added has no slash in it, the list is done
   529          case $my_directory_path in */*) ;; *) break ;; esac
   530  
   531          # ...otherwise throw away the child directory and loop
   532          my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"`
   533        done
   534        my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'`
   535  
   536        save_mkdir_p_IFS="$IFS"; IFS=':'
   537        for my_dir in $my_dir_list; do
   538  	IFS="$save_mkdir_p_IFS"
   539          # mkdir can fail with a `File exist' error if two processes
   540          # try to create one of the directories concurrently.  Don't
   541          # stop in that case!
   542          $MKDIR "$my_dir" 2>/dev/null || :
   543        done
   544        IFS="$save_mkdir_p_IFS"
   545  
   546        # Bail out if we (or some other process) failed to create a directory.
   547        test -d "$my_directory_path" || \
   548          func_fatal_error "Failed to create \`$1'"
   549      fi
   550  }
   551  
   552  
   553  # func_mktempdir [string]
   554  # Make a temporary directory that won't clash with other running
   555  # libtool processes, and avoids race conditions if possible.  If
   556  # given, STRING is the basename for that directory.
   557  func_mktempdir ()
   558  {
   559      my_template="${TMPDIR-/tmp}/${1-$progname}"
   560  
   561      if test "$opt_dry_run" = ":"; then
   562        # Return a directory name, but don't create it in dry-run mode
   563        my_tmpdir="${my_template}-$$"
   564      else
   565  
   566        # If mktemp works, use that first and foremost
   567        my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
   568  
   569        if test ! -d "$my_tmpdir"; then
   570          # Failing that, at least try and use $RANDOM to avoid a race
   571          my_tmpdir="${my_template}-${RANDOM-0}$$"
   572  
   573          save_mktempdir_umask=`umask`
   574          umask 0077
   575          $MKDIR "$my_tmpdir"
   576          umask $save_mktempdir_umask
   577        fi
   578  
   579        # If we're not in dry-run mode, bomb out on failure
   580        test -d "$my_tmpdir" || \
   581          func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
   582      fi
   583  
   584      $ECHO "$my_tmpdir"
   585  }
   586  
   587  
   588  # func_quote_for_eval arg
   589  # Aesthetically quote ARG to be evaled later.
   590  # This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
   591  # is double-quoted, suitable for a subsequent eval, whereas
   592  # FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
   593  # which are still active within double quotes backslashified.
   594  func_quote_for_eval ()
   595  {
   596      case $1 in
   597        *[\\\`\"\$]*)
   598  	func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;;
   599        *)
   600          func_quote_for_eval_unquoted_result="$1" ;;
   601      esac
   602  
   603      case $func_quote_for_eval_unquoted_result in
   604        # Double-quote args containing shell metacharacters to delay
   605        # word splitting, command substitution and and variable
   606        # expansion for a subsequent eval.
   607        # Many Bourne shells cannot handle close brackets correctly
   608        # in scan sets, so we specify it separately.
   609        *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
   610          func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
   611          ;;
   612        *)
   613          func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
   614      esac
   615  }
   616  
   617  
   618  # func_quote_for_expand arg
   619  # Aesthetically quote ARG to be evaled later; same as above,
   620  # but do not quote variable references.
   621  func_quote_for_expand ()
   622  {
   623      case $1 in
   624        *[\\\`\"]*)
   625  	my_arg=`$ECHO "$1" | $SED \
   626  	    -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
   627        *)
   628          my_arg="$1" ;;
   629      esac
   630  
   631      case $my_arg in
   632        # Double-quote args containing shell metacharacters to delay
   633        # word splitting and command substitution for a subsequent eval.
   634        # Many Bourne shells cannot handle close brackets correctly
   635        # in scan sets, so we specify it separately.
   636        *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
   637          my_arg="\"$my_arg\""
   638          ;;
   639      esac
   640  
   641      func_quote_for_expand_result="$my_arg"
   642  }
   643  
   644  
   645  # func_show_eval cmd [fail_exp]
   646  # Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
   647  # not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
   648  # is given, then evaluate it.
   649  func_show_eval ()
   650  {
   651      my_cmd="$1"
   652      my_fail_exp="${2-:}"
   653  
   654      ${opt_silent-false} || {
   655        func_quote_for_expand "$my_cmd"
   656        eval "func_echo $func_quote_for_expand_result"
   657      }
   658  
   659      if ${opt_dry_run-false}; then :; else
   660        eval "$my_cmd"
   661        my_status=$?
   662        if test "$my_status" -eq 0; then :; else
   663  	eval "(exit $my_status); $my_fail_exp"
   664        fi
   665      fi
   666  }
   667  
   668  
   669  # func_show_eval_locale cmd [fail_exp]
   670  # Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
   671  # not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
   672  # is given, then evaluate it.  Use the saved locale for evaluation.
   673  func_show_eval_locale ()
   674  {
   675      my_cmd="$1"
   676      my_fail_exp="${2-:}"
   677  
   678      ${opt_silent-false} || {
   679        func_quote_for_expand "$my_cmd"
   680        eval "func_echo $func_quote_for_expand_result"
   681      }
   682  
   683      if ${opt_dry_run-false}; then :; else
   684        eval "$lt_user_locale
   685  	    $my_cmd"
   686        my_status=$?
   687        eval "$lt_safe_locale"
   688        if test "$my_status" -eq 0; then :; else
   689  	eval "(exit $my_status); $my_fail_exp"
   690        fi
   691      fi
   692  }
   693  
   694  # func_tr_sh
   695  # Turn $1 into a string suitable for a shell variable name.
   696  # Result is stored in $func_tr_sh_result.  All characters
   697  # not in the set a-zA-Z0-9_ are replaced with '_'. Further,
   698  # if $1 begins with a digit, a '_' is prepended as well.
   699  func_tr_sh ()
   700  {
   701    case $1 in
   702    [0-9]* | *[!a-zA-Z0-9_]*)
   703      func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'`
   704      ;;
   705    * )
   706      func_tr_sh_result=$1
   707      ;;
   708    esac
   709  }
   710  
   711  
   712  # func_version
   713  # Echo version message to standard output and exit.
   714  func_version ()
   715  {
   716      $opt_debug
   717  
   718      $SED -n '/(C)/!b go
   719  	:more
   720  	/\./!{
   721  	  N
   722  	  s/\n# / /
   723  	  b more
   724  	}
   725  	:go
   726  	/^# '$PROGRAM' (GNU /,/# warranty; / {
   727          s/^# //
   728  	s/^# *$//
   729          s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
   730          p
   731       }' < "$progpath"
   732       exit $?
   733  }
   734  
   735  # func_usage
   736  # Echo short help message to standard output and exit.
   737  func_usage ()
   738  {
   739      $opt_debug
   740  
   741      $SED -n '/^# Usage:/,/^#  *.*--help/ {
   742          s/^# //
   743  	s/^# *$//
   744  	s/\$progname/'$progname'/
   745  	p
   746      }' < "$progpath"
   747      echo
   748      $ECHO "run \`$progname --help | more' for full usage"
   749      exit $?
   750  }
   751  
   752  # func_help [NOEXIT]
   753  # Echo long help message to standard output and exit,
   754  # unless 'noexit' is passed as argument.
   755  func_help ()
   756  {
   757      $opt_debug
   758  
   759      $SED -n '/^# Usage:/,/# Report bugs to/ {
   760  	:print
   761          s/^# //
   762  	s/^# *$//
   763  	s*\$progname*'$progname'*
   764  	s*\$host*'"$host"'*
   765  	s*\$SHELL*'"$SHELL"'*
   766  	s*\$LTCC*'"$LTCC"'*
   767  	s*\$LTCFLAGS*'"$LTCFLAGS"'*
   768  	s*\$LD*'"$LD"'*
   769  	s/\$with_gnu_ld/'"$with_gnu_ld"'/
   770  	s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/
   771  	s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/
   772  	p
   773  	d
   774       }
   775       /^# .* home page:/b print
   776       /^# General help using/b print
   777       ' < "$progpath"
   778      ret=$?
   779      if test -z "$1"; then
   780        exit $ret
   781      fi
   782  }
   783  
   784  # func_missing_arg argname
   785  # Echo program name prefixed message to standard error and set global
   786  # exit_cmd.
   787  func_missing_arg ()
   788  {
   789      $opt_debug
   790  
   791      func_error "missing argument for $1."
   792      exit_cmd=exit
   793  }
   794  
   795  
   796  # func_split_short_opt shortopt
   797  # Set func_split_short_opt_name and func_split_short_opt_arg shell
   798  # variables after splitting SHORTOPT after the 2nd character.
   799  func_split_short_opt ()
   800  {
   801      my_sed_short_opt='1s/^\(..\).*$/\1/;q'
   802      my_sed_short_rest='1s/^..\(.*\)$/\1/;q'
   803  
   804      func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"`
   805      func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"`
   806  } # func_split_short_opt may be replaced by extended shell implementation
   807  
   808  
   809  # func_split_long_opt longopt
   810  # Set func_split_long_opt_name and func_split_long_opt_arg shell
   811  # variables after splitting LONGOPT at the `=' sign.
   812  func_split_long_opt ()
   813  {
   814      my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q'
   815      my_sed_long_arg='1s/^--[^=]*=//'
   816  
   817      func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"`
   818      func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"`
   819  } # func_split_long_opt may be replaced by extended shell implementation
   820  
   821  exit_cmd=:
   822  
   823  
   824  
   825  
   826  
   827  magic="%%%MAGIC variable%%%"
   828  magic_exe="%%%MAGIC EXE variable%%%"
   829  
   830  # Global variables.
   831  nonopt=
   832  preserve_args=
   833  lo2o="s/\\.lo\$/.${objext}/"
   834  o2lo="s/\\.${objext}\$/.lo/"
   835  extracted_archives=
   836  extracted_serial=0
   837  
   838  # If this variable is set in any of the actions, the command in it
   839  # will be execed at the end.  This prevents here-documents from being
   840  # left over by shells.
   841  exec_cmd=
   842  
   843  # func_append var value
   844  # Append VALUE to the end of shell variable VAR.
   845  func_append ()
   846  {
   847      eval "${1}=\$${1}\${2}"
   848  } # func_append may be replaced by extended shell implementation
   849  
   850  # func_append_quoted var value
   851  # Quote VALUE and append to the end of shell variable VAR, separated
   852  # by a space.
   853  func_append_quoted ()
   854  {
   855      func_quote_for_eval "${2}"
   856      eval "${1}=\$${1}\\ \$func_quote_for_eval_result"
   857  } # func_append_quoted may be replaced by extended shell implementation
   858  
   859  
   860  # func_arith arithmetic-term...
   861  func_arith ()
   862  {
   863      func_arith_result=`expr "${@}"`
   864  } # func_arith may be replaced by extended shell implementation
   865  
   866  
   867  # func_len string
   868  # STRING may not start with a hyphen.
   869  func_len ()
   870  {
   871      func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len`
   872  } # func_len may be replaced by extended shell implementation
   873  
   874  
   875  # func_lo2o object
   876  func_lo2o ()
   877  {
   878      func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
   879  } # func_lo2o may be replaced by extended shell implementation
   880  
   881  
   882  # func_xform libobj-or-source
   883  func_xform ()
   884  {
   885      func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
   886  } # func_xform may be replaced by extended shell implementation
   887  
   888  
   889  # func_fatal_configuration arg...
   890  # Echo program name prefixed message to standard error, followed by
   891  # a configuration failure hint, and exit.
   892  func_fatal_configuration ()
   893  {
   894      func_error ${1+"$@"}
   895      func_error "See the $PACKAGE documentation for more information."
   896      func_fatal_error "Fatal configuration error."
   897  }
   898  
   899  
   900  # func_config
   901  # Display the configuration for all the tags in this script.
   902  func_config ()
   903  {
   904      re_begincf='^# ### BEGIN LIBTOOL'
   905      re_endcf='^# ### END LIBTOOL'
   906  
   907      # Default configuration.
   908      $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
   909  
   910      # Now print the configurations for the tags.
   911      for tagname in $taglist; do
   912        $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
   913      done
   914  
   915      exit $?
   916  }
   917  
   918  # func_features
   919  # Display the features supported by this script.
   920  func_features ()
   921  {
   922      echo "host: $host"
   923      if test "$build_libtool_libs" = yes; then
   924        echo "enable shared libraries"
   925      else
   926        echo "disable shared libraries"
   927      fi
   928      if test "$build_old_libs" = yes; then
   929        echo "enable static libraries"
   930      else
   931        echo "disable static libraries"
   932      fi
   933  
   934      exit $?
   935  }
   936  
   937  # func_enable_tag tagname
   938  # Verify that TAGNAME is valid, and either flag an error and exit, or
   939  # enable the TAGNAME tag.  We also add TAGNAME to the global $taglist
   940  # variable here.
   941  func_enable_tag ()
   942  {
   943    # Global variable:
   944    tagname="$1"
   945  
   946    re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
   947    re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
   948    sed_extractcf="/$re_begincf/,/$re_endcf/p"
   949  
   950    # Validate tagname.
   951    case $tagname in
   952      *[!-_A-Za-z0-9,/]*)
   953        func_fatal_error "invalid tag name: $tagname"
   954        ;;
   955    esac
   956  
   957    # Don't test for the "default" C tag, as we know it's
   958    # there but not specially marked.
   959    case $tagname in
   960      CC) ;;
   961      *)
   962        if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
   963  	taglist="$taglist $tagname"
   964  
   965  	# Evaluate the configuration.  Be careful to quote the path
   966  	# and the sed script, to avoid splitting on whitespace, but
   967  	# also don't use non-portable quotes within backquotes within
   968  	# quotes we have to do it in 2 steps:
   969  	extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
   970  	eval "$extractedcf"
   971        else
   972  	func_error "ignoring unknown tag $tagname"
   973        fi
   974        ;;
   975    esac
   976  }
   977  
   978  # func_check_version_match
   979  # Ensure that we are using m4 macros, and libtool script from the same
   980  # release of libtool.
   981  func_check_version_match ()
   982  {
   983    if test "$package_revision" != "$macro_revision"; then
   984      if test "$VERSION" != "$macro_version"; then
   985        if test -z "$macro_version"; then
   986          cat >&2 <<_LT_EOF
   987  $progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
   988  $progname: definition of this LT_INIT comes from an older release.
   989  $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
   990  $progname: and run autoconf again.
   991  _LT_EOF
   992        else
   993          cat >&2 <<_LT_EOF
   994  $progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
   995  $progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
   996  $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
   997  $progname: and run autoconf again.
   998  _LT_EOF
   999        fi
  1000      else
  1001        cat >&2 <<_LT_EOF
  1002  $progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision,
  1003  $progname: but the definition of this LT_INIT comes from revision $macro_revision.
  1004  $progname: You should recreate aclocal.m4 with macros from revision $package_revision
  1005  $progname: of $PACKAGE $VERSION and run autoconf again.
  1006  _LT_EOF
  1007      fi
  1008  
  1009      exit $EXIT_MISMATCH
  1010    fi
  1011  }
  1012  
  1013  
  1014  # Shorthand for --mode=foo, only valid as the first argument
  1015  case $1 in
  1016  clean|clea|cle|cl)
  1017    shift; set dummy --mode clean ${1+"$@"}; shift
  1018    ;;
  1019  compile|compil|compi|comp|com|co|c)
  1020    shift; set dummy --mode compile ${1+"$@"}; shift
  1021    ;;
  1022  execute|execut|execu|exec|exe|ex|e)
  1023    shift; set dummy --mode execute ${1+"$@"}; shift
  1024    ;;
  1025  finish|finis|fini|fin|fi|f)
  1026    shift; set dummy --mode finish ${1+"$@"}; shift
  1027    ;;
  1028  install|instal|insta|inst|ins|in|i)
  1029    shift; set dummy --mode install ${1+"$@"}; shift
  1030    ;;
  1031  link|lin|li|l)
  1032    shift; set dummy --mode link ${1+"$@"}; shift
  1033    ;;
  1034  uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
  1035    shift; set dummy --mode uninstall ${1+"$@"}; shift
  1036    ;;
  1037  esac
  1038  
  1039  
  1040  
  1041  # Option defaults:
  1042  opt_debug=:
  1043  opt_dry_run=false
  1044  opt_config=false
  1045  opt_preserve_dup_deps=false
  1046  opt_features=false
  1047  opt_finish=false
  1048  opt_help=false
  1049  opt_help_all=false
  1050  opt_silent=:
  1051  opt_warning=:
  1052  opt_verbose=:
  1053  opt_silent=false
  1054  opt_verbose=false
  1055  
  1056  
  1057  # Parse options once, thoroughly.  This comes as soon as possible in the
  1058  # script to make things like `--version' happen as quickly as we can.
  1059  {
  1060    # this just eases exit handling
  1061    while test $# -gt 0; do
  1062      opt="$1"
  1063      shift
  1064      case $opt in
  1065        --debug|-x)	opt_debug='set -x'
  1066  			func_echo "enabling shell trace mode"
  1067  			$opt_debug
  1068  			;;
  1069        --dry-run|--dryrun|-n)
  1070  			opt_dry_run=:
  1071  			;;
  1072        --config)
  1073  			opt_config=:
  1074  func_config
  1075  			;;
  1076        --dlopen|-dlopen)
  1077  			optarg="$1"
  1078  			opt_dlopen="${opt_dlopen+$opt_dlopen
  1079  }$optarg"
  1080  			shift
  1081  			;;
  1082        --preserve-dup-deps)
  1083  			opt_preserve_dup_deps=:
  1084  			;;
  1085        --features)
  1086  			opt_features=:
  1087  func_features
  1088  			;;
  1089        --finish)
  1090  			opt_finish=:
  1091  set dummy --mode finish ${1+"$@"}; shift
  1092  			;;
  1093        --help)
  1094  			opt_help=:
  1095  			;;
  1096        --help-all)
  1097  			opt_help_all=:
  1098  opt_help=': help-all'
  1099  			;;
  1100        --mode)
  1101  			test $# = 0 && func_missing_arg $opt && break
  1102  			optarg="$1"
  1103  			opt_mode="$optarg"
  1104  case $optarg in
  1105    # Valid mode arguments:
  1106    clean|compile|execute|finish|install|link|relink|uninstall) ;;
  1107  
  1108    # Catch anything else as an error
  1109    *) func_error "invalid argument for $opt"
  1110       exit_cmd=exit
  1111       break
  1112       ;;
  1113  esac
  1114  			shift
  1115  			;;
  1116        --no-silent|--no-quiet)
  1117  			opt_silent=false
  1118  func_append preserve_args " $opt"
  1119  			;;
  1120        --no-warning|--no-warn)
  1121  			opt_warning=false
  1122  func_append preserve_args " $opt"
  1123  			;;
  1124        --no-verbose)
  1125  			opt_verbose=false
  1126  func_append preserve_args " $opt"
  1127  			;;
  1128        --silent|--quiet)
  1129  			opt_silent=:
  1130  func_append preserve_args " $opt"
  1131          opt_verbose=false
  1132  			;;
  1133        --verbose|-v)
  1134  			opt_verbose=:
  1135  func_append preserve_args " $opt"
  1136  opt_silent=false
  1137  			;;
  1138        --tag)
  1139  			test $# = 0 && func_missing_arg $opt && break
  1140  			optarg="$1"
  1141  			opt_tag="$optarg"
  1142  func_append preserve_args " $opt $optarg"
  1143  func_enable_tag "$optarg"
  1144  			shift
  1145  			;;
  1146  
  1147        -\?|-h)		func_usage				;;
  1148        --help)		func_help				;;
  1149        --version)	func_version				;;
  1150  
  1151        # Separate optargs to long options:
  1152        --*=*)
  1153  			func_split_long_opt "$opt"
  1154  			set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"}
  1155  			shift
  1156  			;;
  1157  
  1158        # Separate non-argument short options:
  1159        -\?*|-h*|-n*|-v*)
  1160  			func_split_short_opt "$opt"
  1161  			set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"}
  1162  			shift
  1163  			;;
  1164  
  1165        --)		break					;;
  1166        -*)		func_fatal_help "unrecognized option \`$opt'" ;;
  1167        *)		set dummy "$opt" ${1+"$@"};	shift; break  ;;
  1168      esac
  1169    done
  1170  
  1171    # Validate options:
  1172  
  1173    # save first non-option argument
  1174    if test "$#" -gt 0; then
  1175      nonopt="$opt"
  1176      shift
  1177    fi
  1178  
  1179    # preserve --debug
  1180    test "$opt_debug" = : || func_append preserve_args " --debug"
  1181  
  1182    case $host in
  1183      *cygwin* | *mingw* | *pw32* | *cegcc*)
  1184        # don't eliminate duplications in $postdeps and $predeps
  1185        opt_duplicate_compiler_generated_deps=:
  1186        ;;
  1187      *)
  1188        opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps
  1189        ;;
  1190    esac
  1191  
  1192    $opt_help || {
  1193      # Sanity checks first:
  1194      func_check_version_match
  1195  
  1196      if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
  1197        func_fatal_configuration "not configured to build any kind of library"
  1198      fi
  1199  
  1200      # Darwin sucks
  1201      eval std_shrext=\"$shrext_cmds\"
  1202  
  1203      # Only execute mode is allowed to have -dlopen flags.
  1204      if test -n "$opt_dlopen" && test "$opt_mode" != execute; then
  1205        func_error "unrecognized option \`-dlopen'"
  1206        $ECHO "$help" 1>&2
  1207        exit $EXIT_FAILURE
  1208      fi
  1209  
  1210      # Change the help message to a mode-specific one.
  1211      generic_help="$help"
  1212      help="Try \`$progname --help --mode=$opt_mode' for more information."
  1213    }
  1214  
  1215  
  1216    # Bail if the options were screwed
  1217    $exit_cmd $EXIT_FAILURE
  1218  }
  1219  
  1220  
  1221  
  1222  
  1223  ## ----------- ##
  1224  ##    Main.    ##
  1225  ## ----------- ##
  1226  
  1227  # func_lalib_p file
  1228  # True iff FILE is a libtool `.la' library or `.lo' object file.
  1229  # This function is only a basic sanity check; it will hardly flush out
  1230  # determined imposters.
  1231  func_lalib_p ()
  1232  {
  1233      test -f "$1" &&
  1234        $SED -e 4q "$1" 2>/dev/null \
  1235          | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
  1236  }
  1237  
  1238  # func_lalib_unsafe_p file
  1239  # True iff FILE is a libtool `.la' library or `.lo' object file.
  1240  # This function implements the same check as func_lalib_p without
  1241  # resorting to external programs.  To this end, it redirects stdin and
  1242  # closes it afterwards, without saving the original file descriptor.
  1243  # As a safety measure, use it only where a negative result would be
  1244  # fatal anyway.  Works if `file' does not exist.
  1245  func_lalib_unsafe_p ()
  1246  {
  1247      lalib_p=no
  1248      if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
  1249  	for lalib_p_l in 1 2 3 4
  1250  	do
  1251  	    read lalib_p_line
  1252  	    case "$lalib_p_line" in
  1253  		\#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
  1254  	    esac
  1255  	done
  1256  	exec 0<&5 5<&-
  1257      fi
  1258      test "$lalib_p" = yes
  1259  }
  1260  
  1261  # func_ltwrapper_script_p file
  1262  # True iff FILE is a libtool wrapper script
  1263  # This function is only a basic sanity check; it will hardly flush out
  1264  # determined imposters.
  1265  func_ltwrapper_script_p ()
  1266  {
  1267      func_lalib_p "$1"
  1268  }
  1269  
  1270  # func_ltwrapper_executable_p file
  1271  # True iff FILE is a libtool wrapper executable
  1272  # This function is only a basic sanity check; it will hardly flush out
  1273  # determined imposters.
  1274  func_ltwrapper_executable_p ()
  1275  {
  1276      func_ltwrapper_exec_suffix=
  1277      case $1 in
  1278      *.exe) ;;
  1279      *) func_ltwrapper_exec_suffix=.exe ;;
  1280      esac
  1281      $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
  1282  }
  1283  
  1284  # func_ltwrapper_scriptname file
  1285  # Assumes file is an ltwrapper_executable
  1286  # uses $file to determine the appropriate filename for a
  1287  # temporary ltwrapper_script.
  1288  func_ltwrapper_scriptname ()
  1289  {
  1290      func_dirname_and_basename "$1" "" "."
  1291      func_stripname '' '.exe' "$func_basename_result"
  1292      func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
  1293  }
  1294  
  1295  # func_ltwrapper_p file
  1296  # True iff FILE is a libtool wrapper script or wrapper executable
  1297  # This function is only a basic sanity check; it will hardly flush out
  1298  # determined imposters.
  1299  func_ltwrapper_p ()
  1300  {
  1301      func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
  1302  }
  1303  
  1304  
  1305  # func_execute_cmds commands fail_cmd
  1306  # Execute tilde-delimited COMMANDS.
  1307  # If FAIL_CMD is given, eval that upon failure.
  1308  # FAIL_CMD may read-access the current command in variable CMD!
  1309  func_execute_cmds ()
  1310  {
  1311      $opt_debug
  1312      save_ifs=$IFS; IFS='~'
  1313      for cmd in $1; do
  1314        IFS=$save_ifs
  1315        eval cmd=\"$cmd\"
  1316        func_show_eval "$cmd" "${2-:}"
  1317      done
  1318      IFS=$save_ifs
  1319  }
  1320  
  1321  
  1322  # func_source file
  1323  # Source FILE, adding directory component if necessary.
  1324  # Note that it is not necessary on cygwin/mingw to append a dot to
  1325  # FILE even if both FILE and FILE.exe exist: automatic-append-.exe
  1326  # behavior happens only for exec(3), not for open(2)!  Also, sourcing
  1327  # `FILE.' does not work on cygwin managed mounts.
  1328  func_source ()
  1329  {
  1330      $opt_debug
  1331      case $1 in
  1332      */* | *\\*)	. "$1" ;;
  1333      *)		. "./$1" ;;
  1334      esac
  1335  }
  1336  
  1337  
  1338  # func_resolve_sysroot PATH
  1339  # Replace a leading = in PATH with a sysroot.  Store the result into
  1340  # func_resolve_sysroot_result
  1341  func_resolve_sysroot ()
  1342  {
  1343    func_resolve_sysroot_result=$1
  1344    case $func_resolve_sysroot_result in
  1345    =*)
  1346      func_stripname '=' '' "$func_resolve_sysroot_result"
  1347      func_resolve_sysroot_result=$lt_sysroot$func_stripname_result
  1348      ;;
  1349    esac
  1350  }
  1351  
  1352  # func_replace_sysroot PATH
  1353  # If PATH begins with the sysroot, replace it with = and
  1354  # store the result into func_replace_sysroot_result.
  1355  func_replace_sysroot ()
  1356  {
  1357    case "$lt_sysroot:$1" in
  1358    ?*:"$lt_sysroot"*)
  1359      func_stripname "$lt_sysroot" '' "$1"
  1360      func_replace_sysroot_result="=$func_stripname_result"
  1361      ;;
  1362    *)
  1363      # Including no sysroot.
  1364      func_replace_sysroot_result=$1
  1365      ;;
  1366    esac
  1367  }
  1368  
  1369  # func_infer_tag arg
  1370  # Infer tagged configuration to use if any are available and
  1371  # if one wasn't chosen via the "--tag" command line option.
  1372  # Only attempt this if the compiler in the base compile
  1373  # command doesn't match the default compiler.
  1374  # arg is usually of the form 'gcc ...'
  1375  func_infer_tag ()
  1376  {
  1377      $opt_debug
  1378      if test -n "$available_tags" && test -z "$tagname"; then
  1379        CC_quoted=
  1380        for arg in $CC; do
  1381  	func_append_quoted CC_quoted "$arg"
  1382        done
  1383        CC_expanded=`func_echo_all $CC`
  1384        CC_quoted_expanded=`func_echo_all $CC_quoted`
  1385        case $@ in
  1386        # Blanks in the command may have been stripped by the calling shell,
  1387        # but not from the CC environment variable when configure was run.
  1388        " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
  1389        " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;;
  1390        # Blanks at the start of $base_compile will cause this to fail
  1391        # if we don't check for them as well.
  1392        *)
  1393  	for z in $available_tags; do
  1394  	  if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
  1395  	    # Evaluate the configuration.
  1396  	    eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
  1397  	    CC_quoted=
  1398  	    for arg in $CC; do
  1399  	      # Double-quote args containing other shell metacharacters.
  1400  	      func_append_quoted CC_quoted "$arg"
  1401  	    done
  1402  	    CC_expanded=`func_echo_all $CC`
  1403  	    CC_quoted_expanded=`func_echo_all $CC_quoted`
  1404  	    case "$@ " in
  1405  	    " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
  1406  	    " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*)
  1407  	      # The compiler in the base compile command matches
  1408  	      # the one in the tagged configuration.
  1409  	      # Assume this is the tagged configuration we want.
  1410  	      tagname=$z
  1411  	      break
  1412  	      ;;
  1413  	    esac
  1414  	  fi
  1415  	done
  1416  	# If $tagname still isn't set, then no tagged configuration
  1417  	# was found and let the user know that the "--tag" command
  1418  	# line option must be used.
  1419  	if test -z "$tagname"; then
  1420  	  func_echo "unable to infer tagged configuration"
  1421  	  func_fatal_error "specify a tag with \`--tag'"
  1422  #	else
  1423  #	  func_verbose "using $tagname tagged configuration"
  1424  	fi
  1425  	;;
  1426        esac
  1427      fi
  1428  }
  1429  
  1430  
  1431  
  1432  # func_write_libtool_object output_name pic_name nonpic_name
  1433  # Create a libtool object file (analogous to a ".la" file),
  1434  # but don't create it if we're doing a dry run.
  1435  func_write_libtool_object ()
  1436  {
  1437      write_libobj=${1}
  1438      if test "$build_libtool_libs" = yes; then
  1439        write_lobj=\'${2}\'
  1440      else
  1441        write_lobj=none
  1442      fi
  1443  
  1444      if test "$build_old_libs" = yes; then
  1445        write_oldobj=\'${3}\'
  1446      else
  1447        write_oldobj=none
  1448      fi
  1449  
  1450      $opt_dry_run || {
  1451        cat >${write_libobj}T <<EOF
  1452  # $write_libobj - a libtool object file
  1453  # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
  1454  #
  1455  # Please DO NOT delete this file!
  1456  # It is necessary for linking the library.
  1457  
  1458  # Name of the PIC object.
  1459  pic_object=$write_lobj
  1460  
  1461  # Name of the non-PIC object
  1462  non_pic_object=$write_oldobj
  1463  
  1464  EOF
  1465        $MV "${write_libobj}T" "${write_libobj}"
  1466      }
  1467  }
  1468  
  1469  
  1470  ##################################################
  1471  # FILE NAME AND PATH CONVERSION HELPER FUNCTIONS #
  1472  ##################################################
  1473  
  1474  # func_convert_core_file_wine_to_w32 ARG
  1475  # Helper function used by file name conversion functions when $build is *nix,
  1476  # and $host is mingw, cygwin, or some other w32 environment. Relies on a
  1477  # correctly configured wine environment available, with the winepath program
  1478  # in $build's $PATH.
  1479  #
  1480  # ARG is the $build file name to be converted to w32 format.
  1481  # Result is available in $func_convert_core_file_wine_to_w32_result, and will
  1482  # be empty on error (or when ARG is empty)
  1483  func_convert_core_file_wine_to_w32 ()
  1484  {
  1485    $opt_debug
  1486    func_convert_core_file_wine_to_w32_result="$1"
  1487    if test -n "$1"; then
  1488      # Unfortunately, winepath does not exit with a non-zero error code, so we
  1489      # are forced to check the contents of stdout. On the other hand, if the
  1490      # command is not found, the shell will set an exit code of 127 and print
  1491      # *an error message* to stdout. So we must check for both error code of
  1492      # zero AND non-empty stdout, which explains the odd construction:
  1493      func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null`
  1494      if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then
  1495        func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" |
  1496          $SED -e "$lt_sed_naive_backslashify"`
  1497      else
  1498        func_convert_core_file_wine_to_w32_result=
  1499      fi
  1500    fi
  1501  }
  1502  # end: func_convert_core_file_wine_to_w32
  1503  
  1504  
  1505  # func_convert_core_path_wine_to_w32 ARG
  1506  # Helper function used by path conversion functions when $build is *nix, and
  1507  # $host is mingw, cygwin, or some other w32 environment. Relies on a correctly
  1508  # configured wine environment available, with the winepath program in $build's
  1509  # $PATH. Assumes ARG has no leading or trailing path separator characters.
  1510  #
  1511  # ARG is path to be converted from $build format to win32.
  1512  # Result is available in $func_convert_core_path_wine_to_w32_result.
  1513  # Unconvertible file (directory) names in ARG are skipped; if no directory names
  1514  # are convertible, then the result may be empty.
  1515  func_convert_core_path_wine_to_w32 ()
  1516  {
  1517    $opt_debug
  1518    # unfortunately, winepath doesn't convert paths, only file names
  1519    func_convert_core_path_wine_to_w32_result=""
  1520    if test -n "$1"; then
  1521      oldIFS=$IFS
  1522      IFS=:
  1523      for func_convert_core_path_wine_to_w32_f in $1; do
  1524        IFS=$oldIFS
  1525        func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f"
  1526        if test -n "$func_convert_core_file_wine_to_w32_result" ; then
  1527          if test -z "$func_convert_core_path_wine_to_w32_result"; then
  1528            func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result"
  1529          else
  1530            func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result"
  1531          fi
  1532        fi
  1533      done
  1534      IFS=$oldIFS
  1535    fi
  1536  }
  1537  # end: func_convert_core_path_wine_to_w32
  1538  
  1539  
  1540  # func_cygpath ARGS...
  1541  # Wrapper around calling the cygpath program via LT_CYGPATH. This is used when
  1542  # when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2)
  1543  # $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or
  1544  # (2), returns the Cygwin file name or path in func_cygpath_result (input
  1545  # file name or path is assumed to be in w32 format, as previously converted
  1546  # from $build's *nix or MSYS format). In case (3), returns the w32 file name
  1547  # or path in func_cygpath_result (input file name or path is assumed to be in
  1548  # Cygwin format). Returns an empty string on error.
  1549  #
  1550  # ARGS are passed to cygpath, with the last one being the file name or path to
  1551  # be converted.
  1552  #
  1553  # Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH
  1554  # environment variable; do not put it in $PATH.
  1555  func_cygpath ()
  1556  {
  1557    $opt_debug
  1558    if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then
  1559      func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null`
  1560      if test "$?" -ne 0; then
  1561        # on failure, ensure result is empty
  1562        func_cygpath_result=
  1563      fi
  1564    else
  1565      func_cygpath_result=
  1566      func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'"
  1567    fi
  1568  }
  1569  #end: func_cygpath
  1570  
  1571  
  1572  # func_convert_core_msys_to_w32 ARG
  1573  # Convert file name or path ARG from MSYS format to w32 format.  Return
  1574  # result in func_convert_core_msys_to_w32_result.
  1575  func_convert_core_msys_to_w32 ()
  1576  {
  1577    $opt_debug
  1578    # awkward: cmd appends spaces to result
  1579    func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null |
  1580      $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"`
  1581  }
  1582  #end: func_convert_core_msys_to_w32
  1583  
  1584  
  1585  # func_convert_file_check ARG1 ARG2
  1586  # Verify that ARG1 (a file name in $build format) was converted to $host
  1587  # format in ARG2. Otherwise, emit an error message, but continue (resetting
  1588  # func_to_host_file_result to ARG1).
  1589  func_convert_file_check ()
  1590  {
  1591    $opt_debug
  1592    if test -z "$2" && test -n "$1" ; then
  1593      func_error "Could not determine host file name corresponding to"
  1594      func_error "  \`$1'"
  1595      func_error "Continuing, but uninstalled executables may not work."
  1596      # Fallback:
  1597      func_to_host_file_result="$1"
  1598    fi
  1599  }
  1600  # end func_convert_file_check
  1601  
  1602  
  1603  # func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH
  1604  # Verify that FROM_PATH (a path in $build format) was converted to $host
  1605  # format in TO_PATH. Otherwise, emit an error message, but continue, resetting
  1606  # func_to_host_file_result to a simplistic fallback value (see below).
  1607  func_convert_path_check ()
  1608  {
  1609    $opt_debug
  1610    if test -z "$4" && test -n "$3"; then
  1611      func_error "Could not determine the host path corresponding to"
  1612      func_error "  \`$3'"
  1613      func_error "Continuing, but uninstalled executables may not work."
  1614      # Fallback.  This is a deliberately simplistic "conversion" and
  1615      # should not be "improved".  See libtool.info.
  1616      if test "x$1" != "x$2"; then
  1617        lt_replace_pathsep_chars="s|$1|$2|g"
  1618        func_to_host_path_result=`echo "$3" |
  1619          $SED -e "$lt_replace_pathsep_chars"`
  1620      else
  1621        func_to_host_path_result="$3"
  1622      fi
  1623    fi
  1624  }
  1625  # end func_convert_path_check
  1626  
  1627  
  1628  # func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG
  1629  # Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT
  1630  # and appending REPL if ORIG matches BACKPAT.
  1631  func_convert_path_front_back_pathsep ()
  1632  {
  1633    $opt_debug
  1634    case $4 in
  1635    $1 ) func_to_host_path_result="$3$func_to_host_path_result"
  1636      ;;
  1637    esac
  1638    case $4 in
  1639    $2 ) func_append func_to_host_path_result "$3"
  1640      ;;
  1641    esac
  1642  }
  1643  # end func_convert_path_front_back_pathsep
  1644  
  1645  
  1646  ##################################################
  1647  # $build to $host FILE NAME CONVERSION FUNCTIONS #
  1648  ##################################################
  1649  # invoked via `$to_host_file_cmd ARG'
  1650  #
  1651  # In each case, ARG is the path to be converted from $build to $host format.
  1652  # Result will be available in $func_to_host_file_result.
  1653  
  1654  
  1655  # func_to_host_file ARG
  1656  # Converts the file name ARG from $build format to $host format. Return result
  1657  # in func_to_host_file_result.
  1658  func_to_host_file ()
  1659  {
  1660    $opt_debug
  1661    $to_host_file_cmd "$1"
  1662  }
  1663  # end func_to_host_file
  1664  
  1665  
  1666  # func_to_tool_file ARG LAZY
  1667  # converts the file name ARG from $build format to toolchain format. Return
  1668  # result in func_to_tool_file_result.  If the conversion in use is listed
  1669  # in (the comma separated) LAZY, no conversion takes place.
  1670  func_to_tool_file ()
  1671  {
  1672    $opt_debug
  1673    case ,$2, in
  1674      *,"$to_tool_file_cmd",*)
  1675        func_to_tool_file_result=$1
  1676        ;;
  1677      *)
  1678        $to_tool_file_cmd "$1"
  1679        func_to_tool_file_result=$func_to_host_file_result
  1680        ;;
  1681    esac
  1682  }
  1683  # end func_to_tool_file
  1684  
  1685  
  1686  # func_convert_file_noop ARG
  1687  # Copy ARG to func_to_host_file_result.
  1688  func_convert_file_noop ()
  1689  {
  1690    func_to_host_file_result="$1"
  1691  }
  1692  # end func_convert_file_noop
  1693  
  1694  
  1695  # func_convert_file_msys_to_w32 ARG
  1696  # Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic
  1697  # conversion to w32 is not available inside the cwrapper.  Returns result in
  1698  # func_to_host_file_result.
  1699  func_convert_file_msys_to_w32 ()
  1700  {
  1701    $opt_debug
  1702    func_to_host_file_result="$1"
  1703    if test -n "$1"; then
  1704      func_convert_core_msys_to_w32 "$1"
  1705      func_to_host_file_result="$func_convert_core_msys_to_w32_result"
  1706    fi
  1707    func_convert_file_check "$1" "$func_to_host_file_result"
  1708  }
  1709  # end func_convert_file_msys_to_w32
  1710  
  1711  
  1712  # func_convert_file_cygwin_to_w32 ARG
  1713  # Convert file name ARG from Cygwin to w32 format.  Returns result in
  1714  # func_to_host_file_result.
  1715  func_convert_file_cygwin_to_w32 ()
  1716  {
  1717    $opt_debug
  1718    func_to_host_file_result="$1"
  1719    if test -n "$1"; then
  1720      # because $build is cygwin, we call "the" cygpath in $PATH; no need to use
  1721      # LT_CYGPATH in this case.
  1722      func_to_host_file_result=`cygpath -m "$1"`
  1723    fi
  1724    func_convert_file_check "$1" "$func_to_host_file_result"
  1725  }
  1726  # end func_convert_file_cygwin_to_w32
  1727  
  1728  
  1729  # func_convert_file_nix_to_w32 ARG
  1730  # Convert file name ARG from *nix to w32 format.  Requires a wine environment
  1731  # and a working winepath. Returns result in func_to_host_file_result.
  1732  func_convert_file_nix_to_w32 ()
  1733  {
  1734    $opt_debug
  1735    func_to_host_file_result="$1"
  1736    if test -n "$1"; then
  1737      func_convert_core_file_wine_to_w32 "$1"
  1738      func_to_host_file_result="$func_convert_core_file_wine_to_w32_result"
  1739    fi
  1740    func_convert_file_check "$1" "$func_to_host_file_result"
  1741  }
  1742  # end func_convert_file_nix_to_w32
  1743  
  1744  
  1745  # func_convert_file_msys_to_cygwin ARG
  1746  # Convert file name ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
  1747  # Returns result in func_to_host_file_result.
  1748  func_convert_file_msys_to_cygwin ()
  1749  {
  1750    $opt_debug
  1751    func_to_host_file_result="$1"
  1752    if test -n "$1"; then
  1753      func_convert_core_msys_to_w32 "$1"
  1754      func_cygpath -u "$func_convert_core_msys_to_w32_result"
  1755      func_to_host_file_result="$func_cygpath_result"
  1756    fi
  1757    func_convert_file_check "$1" "$func_to_host_file_result"
  1758  }
  1759  # end func_convert_file_msys_to_cygwin
  1760  
  1761  
  1762  # func_convert_file_nix_to_cygwin ARG
  1763  # Convert file name ARG from *nix to Cygwin format.  Requires Cygwin installed
  1764  # in a wine environment, working winepath, and LT_CYGPATH set.  Returns result
  1765  # in func_to_host_file_result.
  1766  func_convert_file_nix_to_cygwin ()
  1767  {
  1768    $opt_debug
  1769    func_to_host_file_result="$1"
  1770    if test -n "$1"; then
  1771      # convert from *nix to w32, then use cygpath to convert from w32 to cygwin.
  1772      func_convert_core_file_wine_to_w32 "$1"
  1773      func_cygpath -u "$func_convert_core_file_wine_to_w32_result"
  1774      func_to_host_file_result="$func_cygpath_result"
  1775    fi
  1776    func_convert_file_check "$1" "$func_to_host_file_result"
  1777  }
  1778  # end func_convert_file_nix_to_cygwin
  1779  
  1780  
  1781  #############################################
  1782  # $build to $host PATH CONVERSION FUNCTIONS #
  1783  #############################################
  1784  # invoked via `$to_host_path_cmd ARG'
  1785  #
  1786  # In each case, ARG is the path to be converted from $build to $host format.
  1787  # The result will be available in $func_to_host_path_result.
  1788  #
  1789  # Path separators are also converted from $build format to $host format.  If
  1790  # ARG begins or ends with a path separator character, it is preserved (but
  1791  # converted to $host format) on output.
  1792  #
  1793  # All path conversion functions are named using the following convention:
  1794  #   file name conversion function    : func_convert_file_X_to_Y ()
  1795  #   path conversion function         : func_convert_path_X_to_Y ()
  1796  # where, for any given $build/$host combination the 'X_to_Y' value is the
  1797  # same.  If conversion functions are added for new $build/$host combinations,
  1798  # the two new functions must follow this pattern, or func_init_to_host_path_cmd
  1799  # will break.
  1800  
  1801  
  1802  # func_init_to_host_path_cmd
  1803  # Ensures that function "pointer" variable $to_host_path_cmd is set to the
  1804  # appropriate value, based on the value of $to_host_file_cmd.
  1805  to_host_path_cmd=
  1806  func_init_to_host_path_cmd ()
  1807  {
  1808    $opt_debug
  1809    if test -z "$to_host_path_cmd"; then
  1810      func_stripname 'func_convert_file_' '' "$to_host_file_cmd"
  1811      to_host_path_cmd="func_convert_path_${func_stripname_result}"
  1812    fi
  1813  }
  1814  
  1815  
  1816  # func_to_host_path ARG
  1817  # Converts the path ARG from $build format to $host format. Return result
  1818  # in func_to_host_path_result.
  1819  func_to_host_path ()
  1820  {
  1821    $opt_debug
  1822    func_init_to_host_path_cmd
  1823    $to_host_path_cmd "$1"
  1824  }
  1825  # end func_to_host_path
  1826  
  1827  
  1828  # func_convert_path_noop ARG
  1829  # Copy ARG to func_to_host_path_result.
  1830  func_convert_path_noop ()
  1831  {
  1832    func_to_host_path_result="$1"
  1833  }
  1834  # end func_convert_path_noop
  1835  
  1836  
  1837  # func_convert_path_msys_to_w32 ARG
  1838  # Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic
  1839  # conversion to w32 is not available inside the cwrapper.  Returns result in
  1840  # func_to_host_path_result.
  1841  func_convert_path_msys_to_w32 ()
  1842  {
  1843    $opt_debug
  1844    func_to_host_path_result="$1"
  1845    if test -n "$1"; then
  1846      # Remove leading and trailing path separator characters from ARG.  MSYS
  1847      # behavior is inconsistent here; cygpath turns them into '.;' and ';.';
  1848      # and winepath ignores them completely.
  1849      func_stripname : : "$1"
  1850      func_to_host_path_tmp1=$func_stripname_result
  1851      func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
  1852      func_to_host_path_result="$func_convert_core_msys_to_w32_result"
  1853      func_convert_path_check : ";" \
  1854        "$func_to_host_path_tmp1" "$func_to_host_path_result"
  1855      func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
  1856    fi
  1857  }
  1858  # end func_convert_path_msys_to_w32
  1859  
  1860  
  1861  # func_convert_path_cygwin_to_w32 ARG
  1862  # Convert path ARG from Cygwin to w32 format.  Returns result in
  1863  # func_to_host_file_result.
  1864  func_convert_path_cygwin_to_w32 ()
  1865  {
  1866    $opt_debug
  1867    func_to_host_path_result="$1"
  1868    if test -n "$1"; then
  1869      # See func_convert_path_msys_to_w32:
  1870      func_stripname : : "$1"
  1871      func_to_host_path_tmp1=$func_stripname_result
  1872      func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"`
  1873      func_convert_path_check : ";" \
  1874        "$func_to_host_path_tmp1" "$func_to_host_path_result"
  1875      func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
  1876    fi
  1877  }
  1878  # end func_convert_path_cygwin_to_w32
  1879  
  1880  
  1881  # func_convert_path_nix_to_w32 ARG
  1882  # Convert path ARG from *nix to w32 format.  Requires a wine environment and
  1883  # a working winepath.  Returns result in func_to_host_file_result.
  1884  func_convert_path_nix_to_w32 ()
  1885  {
  1886    $opt_debug
  1887    func_to_host_path_result="$1"
  1888    if test -n "$1"; then
  1889      # See func_convert_path_msys_to_w32:
  1890      func_stripname : : "$1"
  1891      func_to_host_path_tmp1=$func_stripname_result
  1892      func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
  1893      func_to_host_path_result="$func_convert_core_path_wine_to_w32_result"
  1894      func_convert_path_check : ";" \
  1895        "$func_to_host_path_tmp1" "$func_to_host_path_result"
  1896      func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
  1897    fi
  1898  }
  1899  # end func_convert_path_nix_to_w32
  1900  
  1901  
  1902  # func_convert_path_msys_to_cygwin ARG
  1903  # Convert path ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
  1904  # Returns result in func_to_host_file_result.
  1905  func_convert_path_msys_to_cygwin ()
  1906  {
  1907    $opt_debug
  1908    func_to_host_path_result="$1"
  1909    if test -n "$1"; then
  1910      # See func_convert_path_msys_to_w32:
  1911      func_stripname : : "$1"
  1912      func_to_host_path_tmp1=$func_stripname_result
  1913      func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
  1914      func_cygpath -u -p "$func_convert_core_msys_to_w32_result"
  1915      func_to_host_path_result="$func_cygpath_result"
  1916      func_convert_path_check : : \
  1917        "$func_to_host_path_tmp1" "$func_to_host_path_result"
  1918      func_convert_path_front_back_pathsep ":*" "*:" : "$1"
  1919    fi
  1920  }
  1921  # end func_convert_path_msys_to_cygwin
  1922  
  1923  
  1924  # func_convert_path_nix_to_cygwin ARG
  1925  # Convert path ARG from *nix to Cygwin format.  Requires Cygwin installed in a
  1926  # a wine environment, working winepath, and LT_CYGPATH set.  Returns result in
  1927  # func_to_host_file_result.
  1928  func_convert_path_nix_to_cygwin ()
  1929  {
  1930    $opt_debug
  1931    func_to_host_path_result="$1"
  1932    if test -n "$1"; then
  1933      # Remove leading and trailing path separator characters from
  1934      # ARG. msys behavior is inconsistent here, cygpath turns them
  1935      # into '.;' and ';.', and winepath ignores them completely.
  1936      func_stripname : : "$1"
  1937      func_to_host_path_tmp1=$func_stripname_result
  1938      func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
  1939      func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result"
  1940      func_to_host_path_result="$func_cygpath_result"
  1941      func_convert_path_check : : \
  1942        "$func_to_host_path_tmp1" "$func_to_host_path_result"
  1943      func_convert_path_front_back_pathsep ":*" "*:" : "$1"
  1944    fi
  1945  }
  1946  # end func_convert_path_nix_to_cygwin
  1947  
  1948  
  1949  # func_mode_compile arg...
  1950  func_mode_compile ()
  1951  {
  1952      $opt_debug
  1953      # Get the compilation command and the source file.
  1954      base_compile=
  1955      srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
  1956      suppress_opt=yes
  1957      suppress_output=
  1958      arg_mode=normal
  1959      libobj=
  1960      later=
  1961      pie_flag=
  1962  
  1963      for arg
  1964      do
  1965        case $arg_mode in
  1966        arg  )
  1967  	# do not "continue".  Instead, add this to base_compile
  1968  	lastarg="$arg"
  1969  	arg_mode=normal
  1970  	;;
  1971  
  1972        target )
  1973  	libobj="$arg"
  1974  	arg_mode=normal
  1975  	continue
  1976  	;;
  1977  
  1978        normal )
  1979  	# Accept any command-line options.
  1980  	case $arg in
  1981  	-o)
  1982  	  test -n "$libobj" && \
  1983  	    func_fatal_error "you cannot specify \`-o' more than once"
  1984  	  arg_mode=target
  1985  	  continue
  1986  	  ;;
  1987  
  1988  	-pie | -fpie | -fPIE)
  1989            func_append pie_flag " $arg"
  1990  	  continue
  1991  	  ;;
  1992  
  1993  	-shared | -static | -prefer-pic | -prefer-non-pic)
  1994  	  func_append later " $arg"
  1995  	  continue
  1996  	  ;;
  1997  
  1998  	-no-suppress)
  1999  	  suppress_opt=no
  2000  	  continue
  2001  	  ;;
  2002  
  2003  	-Xcompiler)
  2004  	  arg_mode=arg  #  the next one goes into the "base_compile" arg list
  2005  	  continue      #  The current "srcfile" will either be retained or
  2006  	  ;;            #  replaced later.  I would guess that would be a bug.
  2007  
  2008  	-Wc,*)
  2009  	  func_stripname '-Wc,' '' "$arg"
  2010  	  args=$func_stripname_result
  2011  	  lastarg=
  2012  	  save_ifs="$IFS"; IFS=','
  2013  	  for arg in $args; do
  2014  	    IFS="$save_ifs"
  2015  	    func_append_quoted lastarg "$arg"
  2016  	  done
  2017  	  IFS="$save_ifs"
  2018  	  func_stripname ' ' '' "$lastarg"
  2019  	  lastarg=$func_stripname_result
  2020  
  2021  	  # Add the arguments to base_compile.
  2022  	  func_append base_compile " $lastarg"
  2023  	  continue
  2024  	  ;;
  2025  
  2026  	*)
  2027  	  # Accept the current argument as the source file.
  2028  	  # The previous "srcfile" becomes the current argument.
  2029  	  #
  2030  	  lastarg="$srcfile"
  2031  	  srcfile="$arg"
  2032  	  ;;
  2033  	esac  #  case $arg
  2034  	;;
  2035        esac    #  case $arg_mode
  2036  
  2037        # Aesthetically quote the previous argument.
  2038        func_append_quoted base_compile "$lastarg"
  2039      done # for arg
  2040  
  2041      case $arg_mode in
  2042      arg)
  2043        func_fatal_error "you must specify an argument for -Xcompile"
  2044        ;;
  2045      target)
  2046        func_fatal_error "you must specify a target with \`-o'"
  2047        ;;
  2048      *)
  2049        # Get the name of the library object.
  2050        test -z "$libobj" && {
  2051  	func_basename "$srcfile"
  2052  	libobj="$func_basename_result"
  2053        }
  2054        ;;
  2055      esac
  2056  
  2057      # Recognize several different file suffixes.
  2058      # If the user specifies -o file.o, it is replaced with file.lo
  2059      case $libobj in
  2060      *.[cCFSifmso] | \
  2061      *.ada | *.adb | *.ads | *.asm | \
  2062      *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
  2063      *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup)
  2064        func_xform "$libobj"
  2065        libobj=$func_xform_result
  2066        ;;
  2067      esac
  2068  
  2069      case $libobj in
  2070      *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
  2071      *)
  2072        func_fatal_error "cannot determine name of library object from \`$libobj'"
  2073        ;;
  2074      esac
  2075  
  2076      func_infer_tag $base_compile
  2077  
  2078      for arg in $later; do
  2079        case $arg in
  2080        -shared)
  2081  	test "$build_libtool_libs" != yes && \
  2082  	  func_fatal_configuration "can not build a shared library"
  2083  	build_old_libs=no
  2084  	continue
  2085  	;;
  2086  
  2087        -static)
  2088  	build_libtool_libs=no
  2089  	build_old_libs=yes
  2090  	continue
  2091  	;;
  2092  
  2093        -prefer-pic)
  2094  	pic_mode=yes
  2095  	continue
  2096  	;;
  2097  
  2098        -prefer-non-pic)
  2099  	pic_mode=no
  2100  	continue
  2101  	;;
  2102        esac
  2103      done
  2104  
  2105      func_quote_for_eval "$libobj"
  2106      test "X$libobj" != "X$func_quote_for_eval_result" \
  2107        && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"'	 &()|`$[]' \
  2108        && func_warning "libobj name \`$libobj' may not contain shell special characters."
  2109      func_dirname_and_basename "$obj" "/" ""
  2110      objname="$func_basename_result"
  2111      xdir="$func_dirname_result"
  2112      lobj=${xdir}$objdir/$objname
  2113  
  2114      test -z "$base_compile" && \
  2115        func_fatal_help "you must specify a compilation command"
  2116  
  2117      # Delete any leftover library objects.
  2118      if test "$build_old_libs" = yes; then
  2119        removelist="$obj $lobj $libobj ${libobj}T"
  2120      else
  2121        removelist="$lobj $libobj ${libobj}T"
  2122      fi
  2123  
  2124      # On Cygwin there's no "real" PIC flag so we must build both object types
  2125      case $host_os in
  2126      cygwin* | mingw* | pw32* | os2* | cegcc*)
  2127        pic_mode=default
  2128        ;;
  2129      esac
  2130      if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
  2131        # non-PIC code in shared libraries is not supported
  2132        pic_mode=default
  2133      fi
  2134  
  2135      # Calculate the filename of the output object if compiler does
  2136      # not support -o with -c
  2137      if test "$compiler_c_o" = no; then
  2138        output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext}
  2139        lockfile="$output_obj.lock"
  2140      else
  2141        output_obj=
  2142        need_locks=no
  2143        lockfile=
  2144      fi
  2145  
  2146      # Lock this critical section if it is needed
  2147      # We use this script file to make the link, it avoids creating a new file
  2148      if test "$need_locks" = yes; then
  2149        until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
  2150  	func_echo "Waiting for $lockfile to be removed"
  2151  	sleep 2
  2152        done
  2153      elif test "$need_locks" = warn; then
  2154        if test -f "$lockfile"; then
  2155  	$ECHO "\
  2156  *** ERROR, $lockfile exists and contains:
  2157  `cat $lockfile 2>/dev/null`
  2158  
  2159  This indicates that another process is trying to use the same
  2160  temporary object file, and libtool could not work around it because
  2161  your compiler does not support \`-c' and \`-o' together.  If you
  2162  repeat this compilation, it may succeed, by chance, but you had better
  2163  avoid parallel builds (make -j) in this platform, or get a better
  2164  compiler."
  2165  
  2166  	$opt_dry_run || $RM $removelist
  2167  	exit $EXIT_FAILURE
  2168        fi
  2169        func_append removelist " $output_obj"
  2170        $ECHO "$srcfile" > "$lockfile"
  2171      fi
  2172  
  2173      $opt_dry_run || $RM $removelist
  2174      func_append removelist " $lockfile"
  2175      trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
  2176  
  2177      func_to_tool_file "$srcfile" func_convert_file_msys_to_w32
  2178      srcfile=$func_to_tool_file_result
  2179      func_quote_for_eval "$srcfile"
  2180      qsrcfile=$func_quote_for_eval_result
  2181  
  2182      # Only build a PIC object if we are building libtool libraries.
  2183      if test "$build_libtool_libs" = yes; then
  2184        # Without this assignment, base_compile gets emptied.
  2185        fbsd_hideous_sh_bug=$base_compile
  2186  
  2187        if test "$pic_mode" != no; then
  2188  	command="$base_compile $qsrcfile $pic_flag"
  2189        else
  2190  	# Don't build PIC code
  2191  	command="$base_compile $qsrcfile"
  2192        fi
  2193  
  2194        func_mkdir_p "$xdir$objdir"
  2195  
  2196        if test -z "$output_obj"; then
  2197  	# Place PIC objects in $objdir
  2198  	func_append command " -o $lobj"
  2199        fi
  2200  
  2201        func_show_eval_locale "$command"	\
  2202            'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
  2203  
  2204        if test "$need_locks" = warn &&
  2205  	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
  2206  	$ECHO "\
  2207  *** ERROR, $lockfile contains:
  2208  `cat $lockfile 2>/dev/null`
  2209  
  2210  but it should contain:
  2211  $srcfile
  2212  
  2213  This indicates that another process is trying to use the same
  2214  temporary object file, and libtool could not work around it because
  2215  your compiler does not support \`-c' and \`-o' together.  If you
  2216  repeat this compilation, it may succeed, by chance, but you had better
  2217  avoid parallel builds (make -j) in this platform, or get a better
  2218  compiler."
  2219  
  2220  	$opt_dry_run || $RM $removelist
  2221  	exit $EXIT_FAILURE
  2222        fi
  2223  
  2224        # Just move the object if needed, then go on to compile the next one
  2225        if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
  2226  	func_show_eval '$MV "$output_obj" "$lobj"' \
  2227  	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
  2228        fi
  2229  
  2230        # Allow error messages only from the first compilation.
  2231        if test "$suppress_opt" = yes; then
  2232  	suppress_output=' >/dev/null 2>&1'
  2233        fi
  2234      fi
  2235  
  2236      # Only build a position-dependent object if we build old libraries.
  2237      if test "$build_old_libs" = yes; then
  2238        if test "$pic_mode" != yes; then
  2239  	# Don't build PIC code
  2240  	command="$base_compile $qsrcfile$pie_flag"
  2241        else
  2242  	command="$base_compile $qsrcfile $pic_flag"
  2243        fi
  2244        if test "$compiler_c_o" = yes; then
  2245  	func_append command " -o $obj"
  2246        fi
  2247  
  2248        # Suppress compiler output if we already did a PIC compilation.
  2249        func_append command "$suppress_output"
  2250        func_show_eval_locale "$command" \
  2251          '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
  2252  
  2253        if test "$need_locks" = warn &&
  2254  	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
  2255  	$ECHO "\
  2256  *** ERROR, $lockfile contains:
  2257  `cat $lockfile 2>/dev/null`
  2258  
  2259  but it should contain:
  2260  $srcfile
  2261  
  2262  This indicates that another process is trying to use the same
  2263  temporary object file, and libtool could not work around it because
  2264  your compiler does not support \`-c' and \`-o' together.  If you
  2265  repeat this compilation, it may succeed, by chance, but you had better
  2266  avoid parallel builds (make -j) in this platform, or get a better
  2267  compiler."
  2268  
  2269  	$opt_dry_run || $RM $removelist
  2270  	exit $EXIT_FAILURE
  2271        fi
  2272  
  2273        # Just move the object if needed
  2274        if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
  2275  	func_show_eval '$MV "$output_obj" "$obj"' \
  2276  	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
  2277        fi
  2278      fi
  2279  
  2280      $opt_dry_run || {
  2281        func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
  2282  
  2283        # Unlock the critical section if it was locked
  2284        if test "$need_locks" != no; then
  2285  	removelist=$lockfile
  2286          $RM "$lockfile"
  2287        fi
  2288      }
  2289  
  2290      exit $EXIT_SUCCESS
  2291  }
  2292  
  2293  $opt_help || {
  2294    test "$opt_mode" = compile && func_mode_compile ${1+"$@"}
  2295  }
  2296  
  2297  func_mode_help ()
  2298  {
  2299      # We need to display help for each of the modes.
  2300      case $opt_mode in
  2301        "")
  2302          # Generic help is extracted from the usage comments
  2303          # at the start of this file.
  2304          func_help
  2305          ;;
  2306  
  2307        clean)
  2308          $ECHO \
  2309  "Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
  2310  
  2311  Remove files from the build directory.
  2312  
  2313  RM is the name of the program to use to delete files associated with each FILE
  2314  (typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
  2315  to RM.
  2316  
  2317  If FILE is a libtool library, object or program, all the files associated
  2318  with it are deleted. Otherwise, only FILE itself is deleted using RM."
  2319          ;;
  2320  
  2321        compile)
  2322        $ECHO \
  2323  "Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
  2324  
  2325  Compile a source file into a libtool library object.
  2326  
  2327  This mode accepts the following additional options:
  2328  
  2329    -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
  2330    -no-suppress      do not suppress compiler output for multiple passes
  2331    -prefer-pic       try to build PIC objects only
  2332    -prefer-non-pic   try to build non-PIC objects only
  2333    -shared           do not build a \`.o' file suitable for static linking
  2334    -static           only build a \`.o' file suitable for static linking
  2335    -Wc,FLAG          pass FLAG directly to the compiler
  2336  
  2337  COMPILE-COMMAND is a command to be used in creating a \`standard' object file
  2338  from the given SOURCEFILE.
  2339  
  2340  The output file name is determined by removing the directory component from
  2341  SOURCEFILE, then substituting the C source code suffix \`.c' with the
  2342  library object suffix, \`.lo'."
  2343          ;;
  2344  
  2345        execute)
  2346          $ECHO \
  2347  "Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
  2348  
  2349  Automatically set library path, then run a program.
  2350  
  2351  This mode accepts the following additional options:
  2352  
  2353    -dlopen FILE      add the directory containing FILE to the library path
  2354  
  2355  This mode sets the library path environment variable according to \`-dlopen'
  2356  flags.
  2357  
  2358  If any of the ARGS are libtool executable wrappers, then they are translated
  2359  into their corresponding uninstalled binary, and any of their required library
  2360  directories are added to the library path.
  2361  
  2362  Then, COMMAND is executed, with ARGS as arguments."
  2363          ;;
  2364  
  2365        finish)
  2366          $ECHO \
  2367  "Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
  2368  
  2369  Complete the installation of libtool libraries.
  2370  
  2371  Each LIBDIR is a directory that contains libtool libraries.
  2372  
  2373  The commands that this mode executes may require superuser privileges.  Use
  2374  the \`--dry-run' option if you just want to see what would be executed."
  2375          ;;
  2376  
  2377        install)
  2378          $ECHO \
  2379  "Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
  2380  
  2381  Install executables or libraries.
  2382  
  2383  INSTALL-COMMAND is the installation command.  The first component should be
  2384  either the \`install' or \`cp' program.
  2385  
  2386  The following components of INSTALL-COMMAND are treated specially:
  2387  
  2388    -inst-prefix-dir PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
  2389  
  2390  The rest of the components are interpreted as arguments to that command (only
  2391  BSD-compatible install options are recognized)."
  2392          ;;
  2393  
  2394        link)
  2395          $ECHO \
  2396  "Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
  2397  
  2398  Link object files or libraries together to form another library, or to
  2399  create an executable program.
  2400  
  2401  LINK-COMMAND is a command using the C compiler that you would use to create
  2402  a program from several object files.
  2403  
  2404  The following components of LINK-COMMAND are treated specially:
  2405  
  2406    -all-static       do not do any dynamic linking at all
  2407    -avoid-version    do not add a version suffix if possible
  2408    -bindir BINDIR    specify path to binaries directory (for systems where
  2409                      libraries must be found in the PATH setting at runtime)
  2410    -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
  2411    -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
  2412    -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
  2413    -export-symbols SYMFILE
  2414                      try to export only the symbols listed in SYMFILE
  2415    -export-symbols-regex REGEX
  2416                      try to export only the symbols matching REGEX
  2417    -LLIBDIR          search LIBDIR for required installed libraries
  2418    -lNAME            OUTPUT-FILE requires the installed library libNAME
  2419    -module           build a library that can dlopened
  2420    -no-fast-install  disable the fast-install mode
  2421    -no-install       link a not-installable executable
  2422    -no-undefined     declare that a library does not refer to external symbols
  2423    -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
  2424    -objectlist FILE  Use a list of object files found in FILE to specify objects
  2425    -precious-files-regex REGEX
  2426                      don't remove output files matching REGEX
  2427    -release RELEASE  specify package release information
  2428    -rpath LIBDIR     the created library will eventually be installed in LIBDIR
  2429    -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
  2430    -shared           only do dynamic linking of libtool libraries
  2431    -shrext SUFFIX    override the standard shared library file extension
  2432    -static           do not do any dynamic linking of uninstalled libtool libraries
  2433    -static-libtool-libs
  2434                      do not do any dynamic linking of libtool libraries
  2435    -version-info CURRENT[:REVISION[:AGE]]
  2436                      specify library version info [each variable defaults to 0]
  2437    -weak LIBNAME     declare that the target provides the LIBNAME interface
  2438    -Wc,FLAG
  2439    -Xcompiler FLAG   pass linker-specific FLAG directly to the compiler
  2440    -Wl,FLAG
  2441    -Xlinker FLAG     pass linker-specific FLAG directly to the linker
  2442    -XCClinker FLAG   pass link-specific FLAG to the compiler driver (CC)
  2443  
  2444  All other options (arguments beginning with \`-') are ignored.
  2445  
  2446  Every other argument is treated as a filename.  Files ending in \`.la' are
  2447  treated as uninstalled libtool libraries, other files are standard or library
  2448  object files.
  2449  
  2450  If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
  2451  only library objects (\`.lo' files) may be specified, and \`-rpath' is
  2452  required, except when creating a convenience library.
  2453  
  2454  If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
  2455  using \`ar' and \`ranlib', or on Windows using \`lib'.
  2456  
  2457  If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
  2458  is created, otherwise an executable program is created."
  2459          ;;
  2460  
  2461        uninstall)
  2462          $ECHO \
  2463  "Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
  2464  
  2465  Remove libraries from an installation directory.
  2466  
  2467  RM is the name of the program to use to delete files associated with each FILE
  2468  (typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
  2469  to RM.
  2470  
  2471  If FILE is a libtool library, all the files associated with it are deleted.
  2472  Otherwise, only FILE itself is deleted using RM."
  2473          ;;
  2474  
  2475        *)
  2476          func_fatal_help "invalid operation mode \`$opt_mode'"
  2477          ;;
  2478      esac
  2479  
  2480      echo
  2481      $ECHO "Try \`$progname --help' for more information about other modes."
  2482  }
  2483  
  2484  # Now that we've collected a possible --mode arg, show help if necessary
  2485  if $opt_help; then
  2486    if test "$opt_help" = :; then
  2487      func_mode_help
  2488    else
  2489      {
  2490        func_help noexit
  2491        for opt_mode in compile link execute install finish uninstall clean; do
  2492  	func_mode_help
  2493        done
  2494      } | sed -n '1p; 2,$s/^Usage:/  or: /p'
  2495      {
  2496        func_help noexit
  2497        for opt_mode in compile link execute install finish uninstall clean; do
  2498  	echo
  2499  	func_mode_help
  2500        done
  2501      } |
  2502      sed '1d
  2503        /^When reporting/,/^Report/{
  2504  	H
  2505  	d
  2506        }
  2507        $x
  2508        /information about other modes/d
  2509        /more detailed .*MODE/d
  2510        s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/'
  2511    fi
  2512    exit $?
  2513  fi
  2514  
  2515  
  2516  # func_mode_execute arg...
  2517  func_mode_execute ()
  2518  {
  2519      $opt_debug
  2520      # The first argument is the command name.
  2521      cmd="$nonopt"
  2522      test -z "$cmd" && \
  2523        func_fatal_help "you must specify a COMMAND"
  2524  
  2525      # Handle -dlopen flags immediately.
  2526      for file in $opt_dlopen; do
  2527        test -f "$file" \
  2528  	|| func_fatal_help "\`$file' is not a file"
  2529  
  2530        dir=
  2531        case $file in
  2532        *.la)
  2533  	func_resolve_sysroot "$file"
  2534  	file=$func_resolve_sysroot_result
  2535  
  2536  	# Check to see that this really is a libtool archive.
  2537  	func_lalib_unsafe_p "$file" \
  2538  	  || func_fatal_help "\`$lib' is not a valid libtool archive"
  2539  
  2540  	# Read the libtool library.
  2541  	dlname=
  2542  	library_names=
  2543  	func_source "$file"
  2544  
  2545  	# Skip this library if it cannot be dlopened.
  2546  	if test -z "$dlname"; then
  2547  	  # Warn if it was a shared library.
  2548  	  test -n "$library_names" && \
  2549  	    func_warning "\`$file' was not linked with \`-export-dynamic'"
  2550  	  continue
  2551  	fi
  2552  
  2553  	func_dirname "$file" "" "."
  2554  	dir="$func_dirname_result"
  2555  
  2556  	if test -f "$dir/$objdir/$dlname"; then
  2557  	  func_append dir "/$objdir"
  2558  	else
  2559  	  if test ! -f "$dir/$dlname"; then
  2560  	    func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
  2561  	  fi
  2562  	fi
  2563  	;;
  2564  
  2565        *.lo)
  2566  	# Just add the directory containing the .lo file.
  2567  	func_dirname "$file" "" "."
  2568  	dir="$func_dirname_result"
  2569  	;;
  2570  
  2571        *)
  2572  	func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
  2573  	continue
  2574  	;;
  2575        esac
  2576  
  2577        # Get the absolute pathname.
  2578        absdir=`cd "$dir" && pwd`
  2579        test -n "$absdir" && dir="$absdir"
  2580  
  2581        # Now add the directory to shlibpath_var.
  2582        if eval "test -z \"\$$shlibpath_var\""; then
  2583  	eval "$shlibpath_var=\"\$dir\""
  2584        else
  2585  	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
  2586        fi
  2587      done
  2588  
  2589      # This variable tells wrapper scripts just to set shlibpath_var
  2590      # rather than running their programs.
  2591      libtool_execute_magic="$magic"
  2592  
  2593      # Check if any of the arguments is a wrapper script.
  2594      args=
  2595      for file
  2596      do
  2597        case $file in
  2598        -* | *.la | *.lo ) ;;
  2599        *)
  2600  	# Do a test to see if this is really a libtool program.
  2601  	if func_ltwrapper_script_p "$file"; then
  2602  	  func_source "$file"
  2603  	  # Transform arg to wrapped name.
  2604  	  file="$progdir/$program"
  2605  	elif func_ltwrapper_executable_p "$file"; then
  2606  	  func_ltwrapper_scriptname "$file"
  2607  	  func_source "$func_ltwrapper_scriptname_result"
  2608  	  # Transform arg to wrapped name.
  2609  	  file="$progdir/$program"
  2610  	fi
  2611  	;;
  2612        esac
  2613        # Quote arguments (to preserve shell metacharacters).
  2614        func_append_quoted args "$file"
  2615      done
  2616  
  2617      if test "X$opt_dry_run" = Xfalse; then
  2618        if test -n "$shlibpath_var"; then
  2619  	# Export the shlibpath_var.
  2620  	eval "export $shlibpath_var"
  2621        fi
  2622  
  2623        # Restore saved environment variables
  2624        for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
  2625        do
  2626  	eval "if test \"\${save_$lt_var+set}\" = set; then
  2627                  $lt_var=\$save_$lt_var; export $lt_var
  2628  	      else
  2629  		$lt_unset $lt_var
  2630  	      fi"
  2631        done
  2632  
  2633        # Now prepare to actually exec the command.
  2634        exec_cmd="\$cmd$args"
  2635      else
  2636        # Display what would be done.
  2637        if test -n "$shlibpath_var"; then
  2638  	eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
  2639  	echo "export $shlibpath_var"
  2640        fi
  2641        $ECHO "$cmd$args"
  2642        exit $EXIT_SUCCESS
  2643      fi
  2644  }
  2645  
  2646  test "$opt_mode" = execute && func_mode_execute ${1+"$@"}
  2647  
  2648  
  2649  # func_mode_finish arg...
  2650  func_mode_finish ()
  2651  {
  2652      $opt_debug
  2653      libs=
  2654      libdirs=
  2655      admincmds=
  2656  
  2657      for opt in "$nonopt" ${1+"$@"}
  2658      do
  2659        if test -d "$opt"; then
  2660  	func_append libdirs " $opt"
  2661  
  2662        elif test -f "$opt"; then
  2663  	if func_lalib_unsafe_p "$opt"; then
  2664  	  func_append libs " $opt"
  2665  	else
  2666  	  func_warning "\`$opt' is not a valid libtool archive"
  2667  	fi
  2668  
  2669        else
  2670  	func_fatal_error "invalid argument \`$opt'"
  2671        fi
  2672      done
  2673  
  2674      if test -n "$libs"; then
  2675        if test -n "$lt_sysroot"; then
  2676          sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"`
  2677          sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;"
  2678        else
  2679          sysroot_cmd=
  2680        fi
  2681  
  2682        # Remove sysroot references
  2683        if $opt_dry_run; then
  2684          for lib in $libs; do
  2685            echo "removing references to $lt_sysroot and \`=' prefixes from $lib"
  2686          done
  2687        else
  2688          tmpdir=`func_mktempdir`
  2689          for lib in $libs; do
  2690  	  sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \
  2691  	    > $tmpdir/tmp-la
  2692  	  mv -f $tmpdir/tmp-la $lib
  2693  	done
  2694          ${RM}r "$tmpdir"
  2695        fi
  2696      fi
  2697  
  2698      if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
  2699        for libdir in $libdirs; do
  2700  	if test -n "$finish_cmds"; then
  2701  	  # Do each command in the finish commands.
  2702  	  func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
  2703  '"$cmd"'"'
  2704  	fi
  2705  	if test -n "$finish_eval"; then
  2706  	  # Do the single finish_eval.
  2707  	  eval cmds=\"$finish_eval\"
  2708  	  $opt_dry_run || eval "$cmds" || func_append admincmds "
  2709         $cmds"
  2710  	fi
  2711        done
  2712      fi
  2713  
  2714      # Exit here if they wanted silent mode.
  2715      $opt_silent && exit $EXIT_SUCCESS
  2716  
  2717      if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
  2718        echo "----------------------------------------------------------------------"
  2719        echo "Libraries have been installed in:"
  2720        for libdir in $libdirs; do
  2721  	$ECHO "   $libdir"
  2722        done
  2723        echo
  2724        echo "If you ever happen to want to link against installed libraries"
  2725        echo "in a given directory, LIBDIR, you must either use libtool, and"
  2726        echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
  2727        echo "flag during linking and do at least one of the following:"
  2728        if test -n "$shlibpath_var"; then
  2729  	echo "   - add LIBDIR to the \`$shlibpath_var' environment variable"
  2730  	echo "     during execution"
  2731        fi
  2732        if test -n "$runpath_var"; then
  2733  	echo "   - add LIBDIR to the \`$runpath_var' environment variable"
  2734  	echo "     during linking"
  2735        fi
  2736        if test -n "$hardcode_libdir_flag_spec"; then
  2737  	libdir=LIBDIR
  2738  	eval flag=\"$hardcode_libdir_flag_spec\"
  2739  
  2740  	$ECHO "   - use the \`$flag' linker flag"
  2741        fi
  2742        if test -n "$admincmds"; then
  2743  	$ECHO "   - have your system administrator run these commands:$admincmds"
  2744        fi
  2745        if test -f /etc/ld.so.conf; then
  2746  	echo "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
  2747        fi
  2748        echo
  2749  
  2750        echo "See any operating system documentation about shared libraries for"
  2751        case $host in
  2752  	solaris2.[6789]|solaris2.1[0-9])
  2753  	  echo "more information, such as the ld(1), crle(1) and ld.so(8) manual"
  2754  	  echo "pages."
  2755  	  ;;
  2756  	*)
  2757  	  echo "more information, such as the ld(1) and ld.so(8) manual pages."
  2758  	  ;;
  2759        esac
  2760        echo "----------------------------------------------------------------------"
  2761      fi
  2762      exit $EXIT_SUCCESS
  2763  }
  2764  
  2765  test "$opt_mode" = finish && func_mode_finish ${1+"$@"}
  2766  
  2767  
  2768  # func_mode_install arg...
  2769  func_mode_install ()
  2770  {
  2771      $opt_debug
  2772      # There may be an optional sh(1) argument at the beginning of
  2773      # install_prog (especially on Windows NT).
  2774      if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
  2775         # Allow the use of GNU shtool's install command.
  2776         case $nonopt in *shtool*) :;; *) false;; esac; then
  2777        # Aesthetically quote it.
  2778        func_quote_for_eval "$nonopt"
  2779        install_prog="$func_quote_for_eval_result "
  2780        arg=$1
  2781        shift
  2782      else
  2783        install_prog=
  2784        arg=$nonopt
  2785      fi
  2786  
  2787      # The real first argument should be the name of the installation program.
  2788      # Aesthetically quote it.
  2789      func_quote_for_eval "$arg"
  2790      func_append install_prog "$func_quote_for_eval_result"
  2791      install_shared_prog=$install_prog
  2792      case " $install_prog " in
  2793        *[\\\ /]cp\ *) install_cp=: ;;
  2794        *) install_cp=false ;;
  2795      esac
  2796  
  2797      # We need to accept at least all the BSD install flags.
  2798      dest=
  2799      files=
  2800      opts=
  2801      prev=
  2802      install_type=
  2803      isdir=no
  2804      stripme=
  2805      no_mode=:
  2806      for arg
  2807      do
  2808        arg2=
  2809        if test -n "$dest"; then
  2810  	func_append files " $dest"
  2811  	dest=$arg
  2812  	continue
  2813        fi
  2814  
  2815        case $arg in
  2816        -d) isdir=yes ;;
  2817        -f)
  2818  	if $install_cp; then :; else
  2819  	  prev=$arg
  2820  	fi
  2821  	;;
  2822        -g | -m | -o)
  2823  	prev=$arg
  2824  	;;
  2825        -s)
  2826  	stripme=" -s"
  2827  	continue
  2828  	;;
  2829        -*)
  2830  	;;
  2831        *)
  2832  	# If the previous option needed an argument, then skip it.
  2833  	if test -n "$prev"; then
  2834  	  if test "x$prev" = x-m && test -n "$install_override_mode"; then
  2835  	    arg2=$install_override_mode
  2836  	    no_mode=false
  2837  	  fi
  2838  	  prev=
  2839  	else
  2840  	  dest=$arg
  2841  	  continue
  2842  	fi
  2843  	;;
  2844        esac
  2845  
  2846        # Aesthetically quote the argument.
  2847        func_quote_for_eval "$arg"
  2848        func_append install_prog " $func_quote_for_eval_result"
  2849        if test -n "$arg2"; then
  2850  	func_quote_for_eval "$arg2"
  2851        fi
  2852        func_append install_shared_prog " $func_quote_for_eval_result"
  2853      done
  2854  
  2855      test -z "$install_prog" && \
  2856        func_fatal_help "you must specify an install program"
  2857  
  2858      test -n "$prev" && \
  2859        func_fatal_help "the \`$prev' option requires an argument"
  2860  
  2861      if test -n "$install_override_mode" && $no_mode; then
  2862        if $install_cp; then :; else
  2863  	func_quote_for_eval "$install_override_mode"
  2864  	func_append install_shared_prog " -m $func_quote_for_eval_result"
  2865        fi
  2866      fi
  2867  
  2868      if test -z "$files"; then
  2869        if test -z "$dest"; then
  2870  	func_fatal_help "no file or destination specified"
  2871        else
  2872  	func_fatal_help "you must specify a destination"
  2873        fi
  2874      fi
  2875  
  2876      # Strip any trailing slash from the destination.
  2877      func_stripname '' '/' "$dest"
  2878      dest=$func_stripname_result
  2879  
  2880      # Check to see that the destination is a directory.
  2881      test -d "$dest" && isdir=yes
  2882      if test "$isdir" = yes; then
  2883        destdir="$dest"
  2884        destname=
  2885      else
  2886        func_dirname_and_basename "$dest" "" "."
  2887        destdir="$func_dirname_result"
  2888        destname="$func_basename_result"
  2889  
  2890        # Not a directory, so check to see that there is only one file specified.
  2891        set dummy $files; shift
  2892        test "$#" -gt 1 && \
  2893  	func_fatal_help "\`$dest' is not a directory"
  2894      fi
  2895      case $destdir in
  2896      [\\/]* | [A-Za-z]:[\\/]*) ;;
  2897      *)
  2898        for file in $files; do
  2899  	case $file in
  2900  	*.lo) ;;
  2901  	*)
  2902  	  func_fatal_help "\`$destdir' must be an absolute directory name"
  2903  	  ;;
  2904  	esac
  2905        done
  2906        ;;
  2907      esac
  2908  
  2909      # This variable tells wrapper scripts just to set variables rather
  2910      # than running their programs.
  2911      libtool_install_magic="$magic"
  2912  
  2913      staticlibs=
  2914      future_libdirs=
  2915      current_libdirs=
  2916      for file in $files; do
  2917  
  2918        # Do each installation.
  2919        case $file in
  2920        *.$libext)
  2921  	# Do the static libraries later.
  2922  	func_append staticlibs " $file"
  2923  	;;
  2924  
  2925        *.la)
  2926  	func_resolve_sysroot "$file"
  2927  	file=$func_resolve_sysroot_result
  2928  
  2929  	# Check to see that this really is a libtool archive.
  2930  	func_lalib_unsafe_p "$file" \
  2931  	  || func_fatal_help "\`$file' is not a valid libtool archive"
  2932  
  2933  	library_names=
  2934  	old_library=
  2935  	relink_command=
  2936  	func_source "$file"
  2937  
  2938  	# Add the libdir to current_libdirs if it is the destination.
  2939  	if test "X$destdir" = "X$libdir"; then
  2940  	  case "$current_libdirs " in
  2941  	  *" $libdir "*) ;;
  2942  	  *) func_append current_libdirs " $libdir" ;;
  2943  	  esac
  2944  	else
  2945  	  # Note the libdir as a future libdir.
  2946  	  case "$future_libdirs " in
  2947  	  *" $libdir "*) ;;
  2948  	  *) func_append future_libdirs " $libdir" ;;
  2949  	  esac
  2950  	fi
  2951  
  2952  	func_dirname "$file" "/" ""
  2953  	dir="$func_dirname_result"
  2954  	func_append dir "$objdir"
  2955  
  2956  	if test -n "$relink_command"; then
  2957  	  # Determine the prefix the user has applied to our future dir.
  2958  	  inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"`
  2959  
  2960  	  # Don't allow the user to place us outside of our expected
  2961  	  # location b/c this prevents finding dependent libraries that
  2962  	  # are installed to the same prefix.
  2963  	  # At present, this check doesn't affect windows .dll's that
  2964  	  # are installed into $libdir/../bin (currently, that works fine)
  2965  	  # but it's something to keep an eye on.
  2966  	  test "$inst_prefix_dir" = "$destdir" && \
  2967  	    func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
  2968  
  2969  	  if test -n "$inst_prefix_dir"; then
  2970  	    # Stick the inst_prefix_dir data into the link command.
  2971  	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
  2972  	  else
  2973  	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
  2974  	  fi
  2975  
  2976  	  func_warning "relinking \`$file'"
  2977  	  func_show_eval "$relink_command" \
  2978  	    'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
  2979  	fi
  2980  
  2981  	# See the names of the shared library.
  2982  	set dummy $library_names; shift
  2983  	if test -n "$1"; then
  2984  	  realname="$1"
  2985  	  shift
  2986  
  2987  	  srcname="$realname"
  2988  	  test -n "$relink_command" && srcname="$realname"T
  2989  
  2990  	  # Install the shared library and build the symlinks.
  2991  	  func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \
  2992  	      'exit $?'
  2993  	  tstripme="$stripme"
  2994  	  case $host_os in
  2995  	  cygwin* | mingw* | pw32* | cegcc*)
  2996  	    case $realname in
  2997  	    *.dll.a)
  2998  	      tstripme=""
  2999  	      ;;
  3000  	    esac
  3001  	    ;;
  3002  	  esac
  3003  	  if test -n "$tstripme" && test -n "$striplib"; then
  3004  	    func_show_eval "$striplib $destdir/$realname" 'exit $?'
  3005  	  fi
  3006  
  3007  	  if test "$#" -gt 0; then
  3008  	    # Delete the old symlinks, and create new ones.
  3009  	    # Try `ln -sf' first, because the `ln' binary might depend on
  3010  	    # the symlink we replace!  Solaris /bin/ln does not understand -f,
  3011  	    # so we also need to try rm && ln -s.
  3012  	    for linkname
  3013  	    do
  3014  	      test "$linkname" != "$realname" \
  3015  		&& func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
  3016  	    done
  3017  	  fi
  3018  
  3019  	  # Do each command in the postinstall commands.
  3020  	  lib="$destdir/$realname"
  3021  	  func_execute_cmds "$postinstall_cmds" 'exit $?'
  3022  	fi
  3023  
  3024  	# Install the pseudo-library for information purposes.
  3025  	func_basename "$file"
  3026  	name="$func_basename_result"
  3027  	instname="$dir/$name"i
  3028  	func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
  3029  
  3030  	# Maybe install the static library, too.
  3031  	test -n "$old_library" && func_append staticlibs " $dir/$old_library"
  3032  	;;
  3033  
  3034        *.lo)
  3035  	# Install (i.e. copy) a libtool object.
  3036  
  3037  	# Figure out destination file name, if it wasn't already specified.
  3038  	if test -n "$destname"; then
  3039  	  destfile="$destdir/$destname"
  3040  	else
  3041  	  func_basename "$file"
  3042  	  destfile="$func_basename_result"
  3043  	  destfile="$destdir/$destfile"
  3044  	fi
  3045  
  3046  	# Deduce the name of the destination old-style object file.
  3047  	case $destfile in
  3048  	*.lo)
  3049  	  func_lo2o "$destfile"
  3050  	  staticdest=$func_lo2o_result
  3051  	  ;;
  3052  	*.$objext)
  3053  	  staticdest="$destfile"
  3054  	  destfile=
  3055  	  ;;
  3056  	*)
  3057  	  func_fatal_help "cannot copy a libtool object to \`$destfile'"
  3058  	  ;;
  3059  	esac
  3060  
  3061  	# Install the libtool object if requested.
  3062  	test -n "$destfile" && \
  3063  	  func_show_eval "$install_prog $file $destfile" 'exit $?'
  3064  
  3065  	# Install the old object if enabled.
  3066  	if test "$build_old_libs" = yes; then
  3067  	  # Deduce the name of the old-style object file.
  3068  	  func_lo2o "$file"
  3069  	  staticobj=$func_lo2o_result
  3070  	  func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
  3071  	fi
  3072  	exit $EXIT_SUCCESS
  3073  	;;
  3074  
  3075        *)
  3076  	# Figure out destination file name, if it wasn't already specified.
  3077  	if test -n "$destname"; then
  3078  	  destfile="$destdir/$destname"
  3079  	else
  3080  	  func_basename "$file"
  3081  	  destfile="$func_basename_result"
  3082  	  destfile="$destdir/$destfile"
  3083  	fi
  3084  
  3085  	# If the file is missing, and there is a .exe on the end, strip it
  3086  	# because it is most likely a libtool script we actually want to
  3087  	# install
  3088  	stripped_ext=""
  3089  	case $file in
  3090  	  *.exe)
  3091  	    if test ! -f "$file"; then
  3092  	      func_stripname '' '.exe' "$file"
  3093  	      file=$func_stripname_result
  3094  	      stripped_ext=".exe"
  3095  	    fi
  3096  	    ;;
  3097  	esac
  3098  
  3099  	# Do a test to see if this is really a libtool program.
  3100  	case $host in
  3101  	*cygwin* | *mingw*)
  3102  	    if func_ltwrapper_executable_p "$file"; then
  3103  	      func_ltwrapper_scriptname "$file"
  3104  	      wrapper=$func_ltwrapper_scriptname_result
  3105  	    else
  3106  	      func_stripname '' '.exe' "$file"
  3107  	      wrapper=$func_stripname_result
  3108  	    fi
  3109  	    ;;
  3110  	*)
  3111  	    wrapper=$file
  3112  	    ;;
  3113  	esac
  3114  	if func_ltwrapper_script_p "$wrapper"; then
  3115  	  notinst_deplibs=
  3116  	  relink_command=
  3117  
  3118  	  func_source "$wrapper"
  3119  
  3120  	  # Check the variables that should have been set.
  3121  	  test -z "$generated_by_libtool_version" && \
  3122  	    func_fatal_error "invalid libtool wrapper script \`$wrapper'"
  3123  
  3124  	  finalize=yes
  3125  	  for lib in $notinst_deplibs; do
  3126  	    # Check to see that each library is installed.
  3127  	    libdir=
  3128  	    if test -f "$lib"; then
  3129  	      func_source "$lib"
  3130  	    fi
  3131  	    libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test
  3132  	    if test -n "$libdir" && test ! -f "$libfile"; then
  3133  	      func_warning "\`$lib' has not been installed in \`$libdir'"
  3134  	      finalize=no
  3135  	    fi
  3136  	  done
  3137  
  3138  	  relink_command=
  3139  	  func_source "$wrapper"
  3140  
  3141  	  outputname=
  3142  	  if test "$fast_install" = no && test -n "$relink_command"; then
  3143  	    $opt_dry_run || {
  3144  	      if test "$finalize" = yes; then
  3145  	        tmpdir=`func_mktempdir`
  3146  		func_basename "$file$stripped_ext"
  3147  		file="$func_basename_result"
  3148  	        outputname="$tmpdir/$file"
  3149  	        # Replace the output file specification.
  3150  	        relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'`
  3151  
  3152  	        $opt_silent || {
  3153  	          func_quote_for_expand "$relink_command"
  3154  		  eval "func_echo $func_quote_for_expand_result"
  3155  	        }
  3156  	        if eval "$relink_command"; then :
  3157  	          else
  3158  		  func_error "error: relink \`$file' with the above command before installing it"
  3159  		  $opt_dry_run || ${RM}r "$tmpdir"
  3160  		  continue
  3161  	        fi
  3162  	        file="$outputname"
  3163  	      else
  3164  	        func_warning "cannot relink \`$file'"
  3165  	      fi
  3166  	    }
  3167  	  else
  3168  	    # Install the binary that we compiled earlier.
  3169  	    file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"`
  3170  	  fi
  3171  	fi
  3172  
  3173  	# remove .exe since cygwin /usr/bin/install will append another
  3174  	# one anyway
  3175  	case $install_prog,$host in
  3176  	*/usr/bin/install*,*cygwin*)
  3177  	  case $file:$destfile in
  3178  	  *.exe:*.exe)
  3179  	    # this is ok
  3180  	    ;;
  3181  	  *.exe:*)
  3182  	    destfile=$destfile.exe
  3183  	    ;;
  3184  	  *:*.exe)
  3185  	    func_stripname '' '.exe' "$destfile"
  3186  	    destfile=$func_stripname_result
  3187  	    ;;
  3188  	  esac
  3189  	  ;;
  3190  	esac
  3191  	func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
  3192  	$opt_dry_run || if test -n "$outputname"; then
  3193  	  ${RM}r "$tmpdir"
  3194  	fi
  3195  	;;
  3196        esac
  3197      done
  3198  
  3199      for file in $staticlibs; do
  3200        func_basename "$file"
  3201        name="$func_basename_result"
  3202  
  3203        # Set up the ranlib parameters.
  3204        oldlib="$destdir/$name"
  3205        func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
  3206        tool_oldlib=$func_to_tool_file_result
  3207  
  3208        func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
  3209  
  3210        if test -n "$stripme" && test -n "$old_striplib"; then
  3211  	func_show_eval "$old_striplib $tool_oldlib" 'exit $?'
  3212        fi
  3213  
  3214        # Do each command in the postinstall commands.
  3215        func_execute_cmds "$old_postinstall_cmds" 'exit $?'
  3216      done
  3217  
  3218      test -n "$future_libdirs" && \
  3219        func_warning "remember to run \`$progname --finish$future_libdirs'"
  3220  
  3221      if test -n "$current_libdirs"; then
  3222        # Maybe just do a dry run.
  3223        $opt_dry_run && current_libdirs=" -n$current_libdirs"
  3224        exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
  3225      else
  3226        exit $EXIT_SUCCESS
  3227      fi
  3228  }
  3229  
  3230  test "$opt_mode" = install && func_mode_install ${1+"$@"}
  3231  
  3232  
  3233  # func_generate_dlsyms outputname originator pic_p
  3234  # Extract symbols from dlprefiles and create ${outputname}S.o with
  3235  # a dlpreopen symbol table.
  3236  func_generate_dlsyms ()
  3237  {
  3238      $opt_debug
  3239      my_outputname="$1"
  3240      my_originator="$2"
  3241      my_pic_p="${3-no}"
  3242      my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
  3243      my_dlsyms=
  3244  
  3245      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
  3246        if test -n "$NM" && test -n "$global_symbol_pipe"; then
  3247  	my_dlsyms="${my_outputname}S.c"
  3248        else
  3249  	func_error "not configured to extract global symbols from dlpreopened files"
  3250        fi
  3251      fi
  3252  
  3253      if test -n "$my_dlsyms"; then
  3254        case $my_dlsyms in
  3255        "") ;;
  3256        *.c)
  3257  	# Discover the nlist of each of the dlfiles.
  3258  	nlist="$output_objdir/${my_outputname}.nm"
  3259  
  3260  	func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
  3261  
  3262  	# Parse the name list into a source file.
  3263  	func_verbose "creating $output_objdir/$my_dlsyms"
  3264  
  3265  	$opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
  3266  /* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
  3267  /* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
  3268  
  3269  #ifdef __cplusplus
  3270  extern \"C\" {
  3271  #endif
  3272  
  3273  #if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4))
  3274  #pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
  3275  #endif
  3276  
  3277  /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
  3278  #if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
  3279  /* DATA imports from DLLs on WIN32 con't be const, because runtime
  3280     relocations are performed -- see ld's documentation on pseudo-relocs.  */
  3281  # define LT_DLSYM_CONST
  3282  #elif defined(__osf__)
  3283  /* This system does not cope well with relocations in const data.  */
  3284  # define LT_DLSYM_CONST
  3285  #else
  3286  # define LT_DLSYM_CONST const
  3287  #endif
  3288  
  3289  /* External symbol declarations for the compiler. */\
  3290  "
  3291  
  3292  	if test "$dlself" = yes; then
  3293  	  func_verbose "generating symbol list for \`$output'"
  3294  
  3295  	  $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
  3296  
  3297  	  # Add our own program objects to the symbol list.
  3298  	  progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP`
  3299  	  for progfile in $progfiles; do
  3300  	    func_to_tool_file "$progfile" func_convert_file_msys_to_w32
  3301  	    func_verbose "extracting global C symbols from \`$func_to_tool_file_result'"
  3302  	    $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'"
  3303  	  done
  3304  
  3305  	  if test -n "$exclude_expsyms"; then
  3306  	    $opt_dry_run || {
  3307  	      eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
  3308  	      eval '$MV "$nlist"T "$nlist"'
  3309  	    }
  3310  	  fi
  3311  
  3312  	  if test -n "$export_symbols_regex"; then
  3313  	    $opt_dry_run || {
  3314  	      eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
  3315  	      eval '$MV "$nlist"T "$nlist"'
  3316  	    }
  3317  	  fi
  3318  
  3319  	  # Prepare the list of exported symbols
  3320  	  if test -z "$export_symbols"; then
  3321  	    export_symbols="$output_objdir/$outputname.exp"
  3322  	    $opt_dry_run || {
  3323  	      $RM $export_symbols
  3324  	      eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
  3325  	      case $host in
  3326  	      *cygwin* | *mingw* | *cegcc* )
  3327                  eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
  3328                  eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
  3329  	        ;;
  3330  	      esac
  3331  	    }
  3332  	  else
  3333  	    $opt_dry_run || {
  3334  	      eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
  3335  	      eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
  3336  	      eval '$MV "$nlist"T "$nlist"'
  3337  	      case $host in
  3338  	        *cygwin* | *mingw* | *cegcc* )
  3339  	          eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
  3340  	          eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
  3341  	          ;;
  3342  	      esac
  3343  	    }
  3344  	  fi
  3345  	fi
  3346  
  3347  	for dlprefile in $dlprefiles; do
  3348  	  func_verbose "extracting global C symbols from \`$dlprefile'"
  3349  	  func_basename "$dlprefile"
  3350  	  name="$func_basename_result"
  3351            case $host in
  3352  	    *cygwin* | *mingw* | *cegcc* )
  3353  	      # if an import library, we need to obtain dlname
  3354  	      if func_win32_import_lib_p "$dlprefile"; then
  3355  	        func_tr_sh "$dlprefile"
  3356  	        eval "curr_lafile=\$libfile_$func_tr_sh_result"
  3357  	        dlprefile_dlbasename=""
  3358  	        if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then
  3359  	          # Use subshell, to avoid clobbering current variable values
  3360  	          dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"`
  3361  	          if test -n "$dlprefile_dlname" ; then
  3362  	            func_basename "$dlprefile_dlname"
  3363  	            dlprefile_dlbasename="$func_basename_result"
  3364  	          else
  3365  	            # no lafile. user explicitly requested -dlpreopen <import library>.
  3366  	            $sharedlib_from_linklib_cmd "$dlprefile"
  3367  	            dlprefile_dlbasename=$sharedlib_from_linklib_result
  3368  	          fi
  3369  	        fi
  3370  	        $opt_dry_run || {
  3371  	          if test -n "$dlprefile_dlbasename" ; then
  3372  	            eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"'
  3373  	          else
  3374  	            func_warning "Could not compute DLL name from $name"
  3375  	            eval '$ECHO ": $name " >> "$nlist"'
  3376  	          fi
  3377  	          func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
  3378  	          eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe |
  3379  	            $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'"
  3380  	        }
  3381  	      else # not an import lib
  3382  	        $opt_dry_run || {
  3383  	          eval '$ECHO ": $name " >> "$nlist"'
  3384  	          func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
  3385  	          eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
  3386  	        }
  3387  	      fi
  3388  	    ;;
  3389  	    *)
  3390  	      $opt_dry_run || {
  3391  	        eval '$ECHO ": $name " >> "$nlist"'
  3392  	        func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
  3393  	        eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
  3394  	      }
  3395  	    ;;
  3396            esac
  3397  	done
  3398  
  3399  	$opt_dry_run || {
  3400  	  # Make sure we have at least an empty file.
  3401  	  test -f "$nlist" || : > "$nlist"
  3402  
  3403  	  if test -n "$exclude_expsyms"; then
  3404  	    $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
  3405  	    $MV "$nlist"T "$nlist"
  3406  	  fi
  3407  
  3408  	  # Try sorting and uniquifying the output.
  3409  	  if $GREP -v "^: " < "$nlist" |
  3410  	      if sort -k 3 </dev/null >/dev/null 2>&1; then
  3411  		sort -k 3
  3412  	      else
  3413  		sort +2
  3414  	      fi |
  3415  	      uniq > "$nlist"S; then
  3416  	    :
  3417  	  else
  3418  	    $GREP -v "^: " < "$nlist" > "$nlist"S
  3419  	  fi
  3420  
  3421  	  if test -f "$nlist"S; then
  3422  	    eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
  3423  	  else
  3424  	    echo '/* NONE */' >> "$output_objdir/$my_dlsyms"
  3425  	  fi
  3426  
  3427  	  echo >> "$output_objdir/$my_dlsyms" "\
  3428  
  3429  /* The mapping between symbol names and symbols.  */
  3430  typedef struct {
  3431    const char *name;
  3432    void *address;
  3433  } lt_dlsymlist;
  3434  extern LT_DLSYM_CONST lt_dlsymlist
  3435  lt_${my_prefix}_LTX_preloaded_symbols[];
  3436  LT_DLSYM_CONST lt_dlsymlist
  3437  lt_${my_prefix}_LTX_preloaded_symbols[] =
  3438  {\
  3439    { \"$my_originator\", (void *) 0 },"
  3440  
  3441  	  case $need_lib_prefix in
  3442  	  no)
  3443  	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
  3444  	    ;;
  3445  	  *)
  3446  	    eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
  3447  	    ;;
  3448  	  esac
  3449  	  echo >> "$output_objdir/$my_dlsyms" "\
  3450    {0, (void *) 0}
  3451  };
  3452  
  3453  /* This works around a problem in FreeBSD linker */
  3454  #ifdef FREEBSD_WORKAROUND
  3455  static const void *lt_preloaded_setup() {
  3456    return lt_${my_prefix}_LTX_preloaded_symbols;
  3457  }
  3458  #endif
  3459  
  3460  #ifdef __cplusplus
  3461  }
  3462  #endif\
  3463  "
  3464  	} # !$opt_dry_run
  3465  
  3466  	pic_flag_for_symtable=
  3467  	case "$compile_command " in
  3468  	*" -static "*) ;;
  3469  	*)
  3470  	  case $host in
  3471  	  # compiling the symbol table file with pic_flag works around
  3472  	  # a FreeBSD bug that causes programs to crash when -lm is
  3473  	  # linked before any other PIC object.  But we must not use
  3474  	  # pic_flag when linking with -static.  The problem exists in
  3475  	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
  3476  	  *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
  3477  	    pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
  3478  	  *-*-hpux*)
  3479  	    pic_flag_for_symtable=" $pic_flag"  ;;
  3480  	  *)
  3481  	    if test "X$my_pic_p" != Xno; then
  3482  	      pic_flag_for_symtable=" $pic_flag"
  3483  	    fi
  3484  	    ;;
  3485  	  esac
  3486  	  ;;
  3487  	esac
  3488  	symtab_cflags=
  3489  	for arg in $LTCFLAGS; do
  3490  	  case $arg in
  3491  	  -pie | -fpie | -fPIE) ;;
  3492  	  *) func_append symtab_cflags " $arg" ;;
  3493  	  esac
  3494  	done
  3495  
  3496  	# Now compile the dynamic symbol file.
  3497  	func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
  3498  
  3499  	# Clean up the generated files.
  3500  	func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
  3501  
  3502  	# Transform the symbol file into the correct name.
  3503  	symfileobj="$output_objdir/${my_outputname}S.$objext"
  3504  	case $host in
  3505  	*cygwin* | *mingw* | *cegcc* )
  3506  	  if test -f "$output_objdir/$my_outputname.def"; then
  3507  	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
  3508  	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
  3509  	  else
  3510  	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
  3511  	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
  3512  	  fi
  3513  	  ;;
  3514  	*)
  3515  	  compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
  3516  	  finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
  3517  	  ;;
  3518  	esac
  3519  	;;
  3520        *)
  3521  	func_fatal_error "unknown suffix for \`$my_dlsyms'"
  3522  	;;
  3523        esac
  3524      else
  3525        # We keep going just in case the user didn't refer to
  3526        # lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
  3527        # really was required.
  3528  
  3529        # Nullify the symbol file.
  3530        compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"`
  3531        finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"`
  3532      fi
  3533  }
  3534  
  3535  # func_win32_libid arg
  3536  # return the library type of file 'arg'
  3537  #
  3538  # Need a lot of goo to handle *both* DLLs and import libs
  3539  # Has to be a shell function in order to 'eat' the argument
  3540  # that is supplied when $file_magic_command is called.
  3541  # Despite the name, also deal with 64 bit binaries.
  3542  func_win32_libid ()
  3543  {
  3544    $opt_debug
  3545    win32_libid_type="unknown"
  3546    win32_fileres=`file -L $1 2>/dev/null`
  3547    case $win32_fileres in
  3548    *ar\ archive\ import\ library*) # definitely import
  3549      win32_libid_type="x86 archive import"
  3550      ;;
  3551    *ar\ archive*) # could be an import, or static
  3552      # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD.
  3553      if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
  3554         $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then
  3555        func_to_tool_file "$1" func_convert_file_msys_to_w32
  3556        win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" |
  3557  	$SED -n -e '
  3558  	    1,100{
  3559  		/ I /{
  3560  		    s,.*,import,
  3561  		    p
  3562  		    q
  3563  		}
  3564  	    }'`
  3565        case $win32_nmres in
  3566        import*)  win32_libid_type="x86 archive import";;
  3567        *)        win32_libid_type="x86 archive static";;
  3568        esac
  3569      fi
  3570      ;;
  3571    *DLL*)
  3572      win32_libid_type="x86 DLL"
  3573      ;;
  3574    *executable*) # but shell scripts are "executable" too...
  3575      case $win32_fileres in
  3576      *MS\ Windows\ PE\ Intel*)
  3577        win32_libid_type="x86 DLL"
  3578        ;;
  3579      esac
  3580      ;;
  3581    esac
  3582    $ECHO "$win32_libid_type"
  3583  }
  3584  
  3585  # func_cygming_dll_for_implib ARG
  3586  #
  3587  # Platform-specific function to extract the
  3588  # name of the DLL associated with the specified
  3589  # import library ARG.
  3590  # Invoked by eval'ing the libtool variable
  3591  #    $sharedlib_from_linklib_cmd
  3592  # Result is available in the variable
  3593  #    $sharedlib_from_linklib_result
  3594  func_cygming_dll_for_implib ()
  3595  {
  3596    $opt_debug
  3597    sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"`
  3598  }
  3599  
  3600  # func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs
  3601  #
  3602  # The is the core of a fallback implementation of a
  3603  # platform-specific function to extract the name of the
  3604  # DLL associated with the specified import library LIBNAME.
  3605  #
  3606  # SECTION_NAME is either .idata$6 or .idata$7, depending
  3607  # on the platform and compiler that created the implib.
  3608  #
  3609  # Echos the name of the DLL associated with the
  3610  # specified import library.
  3611  func_cygming_dll_for_implib_fallback_core ()
  3612  {
  3613    $opt_debug
  3614    match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"`
  3615    $OBJDUMP -s --section "$1" "$2" 2>/dev/null |
  3616      $SED '/^Contents of section '"$match_literal"':/{
  3617        # Place marker at beginning of archive member dllname section
  3618        s/.*/====MARK====/
  3619        p
  3620        d
  3621      }
  3622      # These lines can sometimes be longer than 43 characters, but
  3623      # are always uninteresting
  3624      /:[	 ]*file format pe[i]\{,1\}-/d
  3625      /^In archive [^:]*:/d
  3626      # Ensure marker is printed
  3627      /^====MARK====/p
  3628      # Remove all lines with less than 43 characters
  3629      /^.\{43\}/!d
  3630      # From remaining lines, remove first 43 characters
  3631      s/^.\{43\}//' |
  3632      $SED -n '
  3633        # Join marker and all lines until next marker into a single line
  3634        /^====MARK====/ b para
  3635        H
  3636        $ b para
  3637        b
  3638        :para
  3639        x
  3640        s/\n//g
  3641        # Remove the marker
  3642        s/^====MARK====//
  3643        # Remove trailing dots and whitespace
  3644        s/[\. \t]*$//
  3645        # Print
  3646        /./p' |
  3647      # we now have a list, one entry per line, of the stringified
  3648      # contents of the appropriate section of all members of the
  3649      # archive which possess that section. Heuristic: eliminate
  3650      # all those which have a first or second character that is
  3651      # a '.' (that is, objdump's representation of an unprintable
  3652      # character.) This should work for all archives with less than
  3653      # 0x302f exports -- but will fail for DLLs whose name actually
  3654      # begins with a literal '.' or a single character followed by
  3655      # a '.'.
  3656      #
  3657      # Of those that remain, print the first one.
  3658      $SED -e '/^\./d;/^.\./d;q'
  3659  }
  3660  
  3661  # func_cygming_gnu_implib_p ARG
  3662  # This predicate returns with zero status (TRUE) if
  3663  # ARG is a GNU/binutils-style import library. Returns
  3664  # with nonzero status (FALSE) otherwise.
  3665  func_cygming_gnu_implib_p ()
  3666  {
  3667    $opt_debug
  3668    func_to_tool_file "$1" func_convert_file_msys_to_w32
  3669    func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'`
  3670    test -n "$func_cygming_gnu_implib_tmp"
  3671  }
  3672  
  3673  # func_cygming_ms_implib_p ARG
  3674  # This predicate returns with zero status (TRUE) if
  3675  # ARG is an MS-style import library. Returns
  3676  # with nonzero status (FALSE) otherwise.
  3677  func_cygming_ms_implib_p ()
  3678  {
  3679    $opt_debug
  3680    func_to_tool_file "$1" func_convert_file_msys_to_w32
  3681    func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'`
  3682    test -n "$func_cygming_ms_implib_tmp"
  3683  }
  3684  
  3685  # func_cygming_dll_for_implib_fallback ARG
  3686  # Platform-specific function to extract the
  3687  # name of the DLL associated with the specified
  3688  # import library ARG.
  3689  #
  3690  # This fallback implementation is for use when $DLLTOOL
  3691  # does not support the --identify-strict option.
  3692  # Invoked by eval'ing the libtool variable
  3693  #    $sharedlib_from_linklib_cmd
  3694  # Result is available in the variable
  3695  #    $sharedlib_from_linklib_result
  3696  func_cygming_dll_for_implib_fallback ()
  3697  {
  3698    $opt_debug
  3699    if func_cygming_gnu_implib_p "$1" ; then
  3700      # binutils import library
  3701      sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"`
  3702    elif func_cygming_ms_implib_p "$1" ; then
  3703      # ms-generated import library
  3704      sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"`
  3705    else
  3706      # unknown
  3707      sharedlib_from_linklib_result=""
  3708    fi
  3709  }
  3710  
  3711  
  3712  # func_extract_an_archive dir oldlib
  3713  func_extract_an_archive ()
  3714  {
  3715      $opt_debug
  3716      f_ex_an_ar_dir="$1"; shift
  3717      f_ex_an_ar_oldlib="$1"
  3718      if test "$lock_old_archive_extraction" = yes; then
  3719        lockfile=$f_ex_an_ar_oldlib.lock
  3720        until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
  3721  	func_echo "Waiting for $lockfile to be removed"
  3722  	sleep 2
  3723        done
  3724      fi
  3725      func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \
  3726  		   'stat=$?; rm -f "$lockfile"; exit $stat'
  3727      if test "$lock_old_archive_extraction" = yes; then
  3728        $opt_dry_run || rm -f "$lockfile"
  3729      fi
  3730      if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
  3731       :
  3732      else
  3733        func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
  3734      fi
  3735  }
  3736  
  3737  
  3738  # func_extract_archives gentop oldlib ...
  3739  func_extract_archives ()
  3740  {
  3741      $opt_debug
  3742      my_gentop="$1"; shift
  3743      my_oldlibs=${1+"$@"}
  3744      my_oldobjs=""
  3745      my_xlib=""
  3746      my_xabs=""
  3747      my_xdir=""
  3748  
  3749      for my_xlib in $my_oldlibs; do
  3750        # Extract the objects.
  3751        case $my_xlib in
  3752  	[\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
  3753  	*) my_xabs=`pwd`"/$my_xlib" ;;
  3754        esac
  3755        func_basename "$my_xlib"
  3756        my_xlib="$func_basename_result"
  3757        my_xlib_u=$my_xlib
  3758        while :; do
  3759          case " $extracted_archives " in
  3760  	*" $my_xlib_u "*)
  3761  	  func_arith $extracted_serial + 1
  3762  	  extracted_serial=$func_arith_result
  3763  	  my_xlib_u=lt$extracted_serial-$my_xlib ;;
  3764  	*) break ;;
  3765  	esac
  3766        done
  3767        extracted_archives="$extracted_archives $my_xlib_u"
  3768        my_xdir="$my_gentop/$my_xlib_u"
  3769  
  3770        func_mkdir_p "$my_xdir"
  3771  
  3772        case $host in
  3773        *-darwin*)
  3774  	func_verbose "Extracting $my_xabs"
  3775  	# Do not bother doing anything if just a dry run
  3776  	$opt_dry_run || {
  3777  	  darwin_orig_dir=`pwd`
  3778  	  cd $my_xdir || exit $?
  3779  	  darwin_archive=$my_xabs
  3780  	  darwin_curdir=`pwd`
  3781  	  darwin_base_archive=`basename "$darwin_archive"`
  3782  	  darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
  3783  	  if test -n "$darwin_arches"; then
  3784  	    darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
  3785  	    darwin_arch=
  3786  	    func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
  3787  	    for darwin_arch in  $darwin_arches ; do
  3788  	      func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
  3789  	      $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
  3790  	      cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
  3791  	      func_extract_an_archive "`pwd`" "${darwin_base_archive}"
  3792  	      cd "$darwin_curdir"
  3793  	      $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
  3794  	    done # $darwin_arches
  3795              ## Okay now we've a bunch of thin objects, gotta fatten them up :)
  3796  	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
  3797  	    darwin_file=
  3798  	    darwin_files=
  3799  	    for darwin_file in $darwin_filelist; do
  3800  	      darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP`
  3801  	      $LIPO -create -output "$darwin_file" $darwin_files
  3802  	    done # $darwin_filelist
  3803  	    $RM -rf unfat-$$
  3804  	    cd "$darwin_orig_dir"
  3805  	  else
  3806  	    cd $darwin_orig_dir
  3807  	    func_extract_an_archive "$my_xdir" "$my_xabs"
  3808  	  fi # $darwin_arches
  3809  	} # !$opt_dry_run
  3810  	;;
  3811        *)
  3812          func_extract_an_archive "$my_xdir" "$my_xabs"
  3813  	;;
  3814        esac
  3815        my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP`
  3816      done
  3817  
  3818      func_extract_archives_result="$my_oldobjs"
  3819  }
  3820  
  3821  
  3822  # func_emit_wrapper [arg=no]
  3823  #
  3824  # Emit a libtool wrapper script on stdout.
  3825  # Don't directly open a file because we may want to
  3826  # incorporate the script contents within a cygwin/mingw
  3827  # wrapper executable.  Must ONLY be called from within
  3828  # func_mode_link because it depends on a number of variables
  3829  # set therein.
  3830  #
  3831  # ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
  3832  # variable will take.  If 'yes', then the emitted script
  3833  # will assume that the directory in which it is stored is
  3834  # the $objdir directory.  This is a cygwin/mingw-specific
  3835  # behavior.
  3836  func_emit_wrapper ()
  3837  {
  3838  	func_emit_wrapper_arg1=${1-no}
  3839  
  3840  	$ECHO "\
  3841  #! $SHELL
  3842  
  3843  # $output - temporary wrapper script for $objdir/$outputname
  3844  # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
  3845  #
  3846  # The $output program cannot be directly executed until all the libtool
  3847  # libraries that it depends on are installed.
  3848  #
  3849  # This wrapper script should never be moved out of the build directory.
  3850  # If it is, it will not operate correctly.
  3851  
  3852  # Sed substitution that helps us do robust quoting.  It backslashifies
  3853  # metacharacters that are still active within double-quoted strings.
  3854  sed_quote_subst='$sed_quote_subst'
  3855  
  3856  # Be Bourne compatible
  3857  if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
  3858    emulate sh
  3859    NULLCMD=:
  3860    # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
  3861    # is contrary to our usage.  Disable this feature.
  3862    alias -g '\${1+\"\$@\"}'='\"\$@\"'
  3863    setopt NO_GLOB_SUBST
  3864  else
  3865    case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
  3866  fi
  3867  BIN_SH=xpg4; export BIN_SH # for Tru64
  3868  DUALCASE=1; export DUALCASE # for MKS sh
  3869  
  3870  # The HP-UX ksh and POSIX shell print the target directory to stdout
  3871  # if CDPATH is set.
  3872  (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
  3873  
  3874  relink_command=\"$relink_command\"
  3875  
  3876  # This environment variable determines our operation mode.
  3877  if test \"\$libtool_install_magic\" = \"$magic\"; then
  3878    # install mode needs the following variables:
  3879    generated_by_libtool_version='$macro_version'
  3880    notinst_deplibs='$notinst_deplibs'
  3881  else
  3882    # When we are sourced in execute mode, \$file and \$ECHO are already set.
  3883    if test \"\$libtool_execute_magic\" != \"$magic\"; then
  3884      file=\"\$0\""
  3885  
  3886      qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"`
  3887      $ECHO "\
  3888  
  3889  # A function that is used when there is no print builtin or printf.
  3890  func_fallback_echo ()
  3891  {
  3892    eval 'cat <<_LTECHO_EOF
  3893  \$1
  3894  _LTECHO_EOF'
  3895  }
  3896      ECHO=\"$qECHO\"
  3897    fi
  3898  
  3899  # Very basic option parsing. These options are (a) specific to
  3900  # the libtool wrapper, (b) are identical between the wrapper
  3901  # /script/ and the wrapper /executable/ which is used only on
  3902  # windows platforms, and (c) all begin with the string "--lt-"
  3903  # (application programs are unlikely to have options which match
  3904  # this pattern).
  3905  #
  3906  # There are only two supported options: --lt-debug and
  3907  # --lt-dump-script. There is, deliberately, no --lt-help.
  3908  #
  3909  # The first argument to this parsing function should be the
  3910  # script's $0 value, followed by "$@".
  3911  lt_option_debug=
  3912  func_parse_lt_options ()
  3913  {
  3914    lt_script_arg0=\$0
  3915    shift
  3916    for lt_opt
  3917    do
  3918      case \"\$lt_opt\" in
  3919      --lt-debug) lt_option_debug=1 ;;
  3920      --lt-dump-script)
  3921          lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\`
  3922          test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=.
  3923          lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\`
  3924          cat \"\$lt_dump_D/\$lt_dump_F\"
  3925          exit 0
  3926        ;;
  3927      --lt-*)
  3928          \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2
  3929          exit 1
  3930        ;;
  3931      esac
  3932    done
  3933  
  3934    # Print the debug banner immediately:
  3935    if test -n \"\$lt_option_debug\"; then
  3936      echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2
  3937    fi
  3938  }
  3939  
  3940  # Used when --lt-debug. Prints its arguments to stdout
  3941  # (redirection is the responsibility of the caller)
  3942  func_lt_dump_args ()
  3943  {
  3944    lt_dump_args_N=1;
  3945    for lt_arg
  3946    do
  3947      \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\"
  3948      lt_dump_args_N=\`expr \$lt_dump_args_N + 1\`
  3949    done
  3950  }
  3951  
  3952  # Core function for launching the target application
  3953  func_exec_program_core ()
  3954  {
  3955  "
  3956    case $host in
  3957    # Backslashes separate directories on plain windows
  3958    *-*-mingw | *-*-os2* | *-cegcc*)
  3959      $ECHO "\
  3960        if test -n \"\$lt_option_debug\"; then
  3961          \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2
  3962          func_lt_dump_args \${1+\"\$@\"} 1>&2
  3963        fi
  3964        exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
  3965  "
  3966      ;;
  3967  
  3968    *)
  3969      $ECHO "\
  3970        if test -n \"\$lt_option_debug\"; then
  3971          \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2
  3972          func_lt_dump_args \${1+\"\$@\"} 1>&2
  3973        fi
  3974        exec \"\$progdir/\$program\" \${1+\"\$@\"}
  3975  "
  3976      ;;
  3977    esac
  3978    $ECHO "\
  3979        \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
  3980        exit 1
  3981  }
  3982  
  3983  # A function to encapsulate launching the target application
  3984  # Strips options in the --lt-* namespace from \$@ and
  3985  # launches target application with the remaining arguments.
  3986  func_exec_program ()
  3987  {
  3988    case \" \$* \" in
  3989    *\\ --lt-*)
  3990      for lt_wr_arg
  3991      do
  3992        case \$lt_wr_arg in
  3993        --lt-*) ;;
  3994        *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
  3995        esac
  3996        shift
  3997      done ;;
  3998    esac
  3999    func_exec_program_core \${1+\"\$@\"}
  4000  }
  4001  
  4002    # Parse options
  4003    func_parse_lt_options \"\$0\" \${1+\"\$@\"}
  4004  
  4005    # Find the directory that this script lives in.
  4006    thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\`
  4007    test \"x\$thisdir\" = \"x\$file\" && thisdir=.
  4008  
  4009    # Follow symbolic links until we get to the real thisdir.
  4010    file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\`
  4011    while test -n \"\$file\"; do
  4012      destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\`
  4013  
  4014      # If there was a directory component, then change thisdir.
  4015      if test \"x\$destdir\" != \"x\$file\"; then
  4016        case \"\$destdir\" in
  4017        [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
  4018        *) thisdir=\"\$thisdir/\$destdir\" ;;
  4019        esac
  4020      fi
  4021  
  4022      file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\`
  4023      file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\`
  4024    done
  4025  
  4026    # Usually 'no', except on cygwin/mingw when embedded into
  4027    # the cwrapper.
  4028    WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1
  4029    if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
  4030      # special case for '.'
  4031      if test \"\$thisdir\" = \".\"; then
  4032        thisdir=\`pwd\`
  4033      fi
  4034      # remove .libs from thisdir
  4035      case \"\$thisdir\" in
  4036      *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;;
  4037      $objdir )   thisdir=. ;;
  4038      esac
  4039    fi
  4040  
  4041    # Try to get the absolute directory name.
  4042    absdir=\`cd \"\$thisdir\" && pwd\`
  4043    test -n \"\$absdir\" && thisdir=\"\$absdir\"
  4044  "
  4045  
  4046  	if test "$fast_install" = yes; then
  4047  	  $ECHO "\
  4048    program=lt-'$outputname'$exeext
  4049    progdir=\"\$thisdir/$objdir\"
  4050  
  4051    if test ! -f \"\$progdir/\$program\" ||
  4052       { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
  4053         test \"X\$file\" != \"X\$progdir/\$program\"; }; then
  4054  
  4055      file=\"\$\$-\$program\"
  4056  
  4057      if test ! -d \"\$progdir\"; then
  4058        $MKDIR \"\$progdir\"
  4059      else
  4060        $RM \"\$progdir/\$file\"
  4061      fi"
  4062  
  4063  	  $ECHO "\
  4064  
  4065      # relink executable if necessary
  4066      if test -n \"\$relink_command\"; then
  4067        if relink_command_output=\`eval \$relink_command 2>&1\`; then :
  4068        else
  4069  	$ECHO \"\$relink_command_output\" >&2
  4070  	$RM \"\$progdir/\$file\"
  4071  	exit 1
  4072        fi
  4073      fi
  4074  
  4075      $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
  4076      { $RM \"\$progdir/\$program\";
  4077        $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
  4078      $RM \"\$progdir/\$file\"
  4079    fi"
  4080  	else
  4081  	  $ECHO "\
  4082    program='$outputname'
  4083    progdir=\"\$thisdir/$objdir\"
  4084  "
  4085  	fi
  4086  
  4087  	$ECHO "\
  4088  
  4089    if test -f \"\$progdir/\$program\"; then"
  4090  
  4091  	# fixup the dll searchpath if we need to.
  4092  	#
  4093  	# Fix the DLL searchpath if we need to.  Do this before prepending
  4094  	# to shlibpath, because on Windows, both are PATH and uninstalled
  4095  	# libraries must come first.
  4096  	if test -n "$dllsearchpath"; then
  4097  	  $ECHO "\
  4098      # Add the dll search path components to the executable PATH
  4099      PATH=$dllsearchpath:\$PATH
  4100  "
  4101  	fi
  4102  
  4103  	# Export our shlibpath_var if we have one.
  4104  	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
  4105  	  $ECHO "\
  4106      # Add our own library path to $shlibpath_var
  4107      $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
  4108  
  4109      # Some systems cannot cope with colon-terminated $shlibpath_var
  4110      # The second colon is a workaround for a bug in BeOS R4 sed
  4111      $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\`
  4112  
  4113      export $shlibpath_var
  4114  "
  4115  	fi
  4116  
  4117  	$ECHO "\
  4118      if test \"\$libtool_execute_magic\" != \"$magic\"; then
  4119        # Run the actual program with our arguments.
  4120        func_exec_program \${1+\"\$@\"}
  4121      fi
  4122    else
  4123      # The program doesn't exist.
  4124      \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
  4125      \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
  4126      \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
  4127      exit 1
  4128    fi
  4129  fi\
  4130  "
  4131  }
  4132  
  4133  
  4134  # func_emit_cwrapperexe_src
  4135  # emit the source code for a wrapper executable on stdout
  4136  # Must ONLY be called from within func_mode_link because
  4137  # it depends on a number of variable set therein.
  4138  func_emit_cwrapperexe_src ()
  4139  {
  4140  	cat <<EOF
  4141  
  4142  /* $cwrappersource - temporary wrapper executable for $objdir/$outputname
  4143     Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
  4144  
  4145     The $output program cannot be directly executed until all the libtool
  4146     libraries that it depends on are installed.
  4147  
  4148     This wrapper executable should never be moved out of the build directory.
  4149     If it is, it will not operate correctly.
  4150  */
  4151  EOF
  4152  	    cat <<"EOF"
  4153  #ifdef _MSC_VER
  4154  # define _CRT_SECURE_NO_DEPRECATE 1
  4155  #endif
  4156  #include <stdio.h>
  4157  #include <stdlib.h>
  4158  #ifdef _MSC_VER
  4159  # include <direct.h>
  4160  # include <process.h>
  4161  # include <io.h>
  4162  #else
  4163  # include <unistd.h>
  4164  # include <stdint.h>
  4165  # ifdef __CYGWIN__
  4166  #  include <io.h>
  4167  # endif
  4168  #endif
  4169  #include <malloc.h>
  4170  #include <stdarg.h>
  4171  #include <assert.h>
  4172  #include <string.h>
  4173  #include <ctype.h>
  4174  #include <errno.h>
  4175  #include <fcntl.h>
  4176  #include <sys/stat.h>
  4177  
  4178  /* declarations of non-ANSI functions */
  4179  #if defined(__MINGW32__)
  4180  # ifdef __STRICT_ANSI__
  4181  int _putenv (const char *);
  4182  # endif
  4183  #elif defined(__CYGWIN__)
  4184  # ifdef __STRICT_ANSI__
  4185  char *realpath (const char *, char *);
  4186  int putenv (char *);
  4187  int setenv (const char *, const char *, int);
  4188  # endif
  4189  /* #elif defined (other platforms) ... */
  4190  #endif
  4191  
  4192  /* portability defines, excluding path handling macros */
  4193  #if defined(_MSC_VER)
  4194  # define setmode _setmode
  4195  # define stat    _stat
  4196  # define chmod   _chmod
  4197  # define getcwd  _getcwd
  4198  # define putenv  _putenv
  4199  # define S_IXUSR _S_IEXEC
  4200  # ifndef _INTPTR_T_DEFINED
  4201  #  define _INTPTR_T_DEFINED
  4202  #  define intptr_t int
  4203  # endif
  4204  #elif defined(__MINGW32__)
  4205  # define setmode _setmode
  4206  # define stat    _stat
  4207  # define chmod   _chmod
  4208  # define getcwd  _getcwd
  4209  # define putenv  _putenv
  4210  #elif defined(__CYGWIN__)
  4211  # define HAVE_SETENV
  4212  # define FOPEN_WB "wb"
  4213  /* #elif defined (other platforms) ... */
  4214  #endif
  4215  
  4216  #if defined(PATH_MAX)
  4217  # define LT_PATHMAX PATH_MAX
  4218  #elif defined(MAXPATHLEN)
  4219  # define LT_PATHMAX MAXPATHLEN
  4220  #else
  4221  # define LT_PATHMAX 1024
  4222  #endif
  4223  
  4224  #ifndef S_IXOTH
  4225  # define S_IXOTH 0
  4226  #endif
  4227  #ifndef S_IXGRP
  4228  # define S_IXGRP 0
  4229  #endif
  4230  
  4231  /* path handling portability macros */
  4232  #ifndef DIR_SEPARATOR
  4233  # define DIR_SEPARATOR '/'
  4234  # define PATH_SEPARATOR ':'
  4235  #endif
  4236  
  4237  #if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
  4238    defined (__OS2__)
  4239  # define HAVE_DOS_BASED_FILE_SYSTEM
  4240  # define FOPEN_WB "wb"
  4241  # ifndef DIR_SEPARATOR_2
  4242  #  define DIR_SEPARATOR_2 '\\'
  4243  # endif
  4244  # ifndef PATH_SEPARATOR_2
  4245  #  define PATH_SEPARATOR_2 ';'
  4246  # endif
  4247  #endif
  4248  
  4249  #ifndef DIR_SEPARATOR_2
  4250  # define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
  4251  #else /* DIR_SEPARATOR_2 */
  4252  # define IS_DIR_SEPARATOR(ch) \
  4253  	(((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
  4254  #endif /* DIR_SEPARATOR_2 */
  4255  
  4256  #ifndef PATH_SEPARATOR_2
  4257  # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
  4258  #else /* PATH_SEPARATOR_2 */
  4259  # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
  4260  #endif /* PATH_SEPARATOR_2 */
  4261  
  4262  #ifndef FOPEN_WB
  4263  # define FOPEN_WB "w"
  4264  #endif
  4265  #ifndef _O_BINARY
  4266  # define _O_BINARY 0
  4267  #endif
  4268  
  4269  #define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
  4270  #define XFREE(stale) do { \
  4271    if (stale) { free ((void *) stale); stale = 0; } \
  4272  } while (0)
  4273  
  4274  #if defined(LT_DEBUGWRAPPER)
  4275  static int lt_debug = 1;
  4276  #else
  4277  static int lt_debug = 0;
  4278  #endif
  4279  
  4280  const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */
  4281  
  4282  void *xmalloc (size_t num);
  4283  char *xstrdup (const char *string);
  4284  const char *base_name (const char *name);
  4285  char *find_executable (const char *wrapper);
  4286  char *chase_symlinks (const char *pathspec);
  4287  int make_executable (const char *path);
  4288  int check_executable (const char *path);
  4289  char *strendzap (char *str, const char *pat);
  4290  void lt_debugprintf (const char *file, int line, const char *fmt, ...);
  4291  void lt_fatal (const char *file, int line, const char *message, ...);
  4292  static const char *nonnull (const char *s);
  4293  static const char *nonempty (const char *s);
  4294  void lt_setenv (const char *name, const char *value);
  4295  char *lt_extend_str (const char *orig_value, const char *add, int to_end);
  4296  void lt_update_exe_path (const char *name, const char *value);
  4297  void lt_update_lib_path (const char *name, const char *value);
  4298  char **prepare_spawn (char **argv);
  4299  void lt_dump_script (FILE *f);
  4300  EOF
  4301  
  4302  	    cat <<EOF
  4303  volatile const char * MAGIC_EXE = "$magic_exe";
  4304  const char * LIB_PATH_VARNAME = "$shlibpath_var";
  4305  EOF
  4306  
  4307  	    if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
  4308                func_to_host_path "$temp_rpath"
  4309  	      cat <<EOF
  4310  const char * LIB_PATH_VALUE   = "$func_to_host_path_result";
  4311  EOF
  4312  	    else
  4313  	      cat <<"EOF"
  4314  const char * LIB_PATH_VALUE   = "";
  4315  EOF
  4316  	    fi
  4317  
  4318  	    if test -n "$dllsearchpath"; then
  4319                func_to_host_path "$dllsearchpath:"
  4320  	      cat <<EOF
  4321  const char * EXE_PATH_VARNAME = "PATH";
  4322  const char * EXE_PATH_VALUE   = "$func_to_host_path_result";
  4323  EOF
  4324  	    else
  4325  	      cat <<"EOF"
  4326  const char * EXE_PATH_VARNAME = "";
  4327  const char * EXE_PATH_VALUE   = "";
  4328  EOF
  4329  	    fi
  4330  
  4331  	    if test "$fast_install" = yes; then
  4332  	      cat <<EOF
  4333  const char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
  4334  EOF
  4335  	    else
  4336  	      cat <<EOF
  4337  const char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
  4338  EOF
  4339  	    fi
  4340  
  4341  
  4342  	    cat <<"EOF"
  4343  
  4344  #define LTWRAPPER_OPTION_PREFIX         "--lt-"
  4345  
  4346  static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
  4347  static const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX "dump-script";
  4348  static const char *debug_opt            = LTWRAPPER_OPTION_PREFIX "debug";
  4349  
  4350  int
  4351  main (int argc, char *argv[])
  4352  {
  4353    char **newargz;
  4354    int  newargc;
  4355    char *tmp_pathspec;
  4356    char *actual_cwrapper_path;
  4357    char *actual_cwrapper_name;
  4358    char *target_name;
  4359    char *lt_argv_zero;
  4360    intptr_t rval = 127;
  4361  
  4362    int i;
  4363  
  4364    program_name = (char *) xstrdup (base_name (argv[0]));
  4365    newargz = XMALLOC (char *, argc + 1);
  4366  
  4367    /* very simple arg parsing; don't want to rely on getopt
  4368     * also, copy all non cwrapper options to newargz, except
  4369     * argz[0], which is handled differently
  4370     */
  4371    newargc=0;
  4372    for (i = 1; i < argc; i++)
  4373      {
  4374        if (strcmp (argv[i], dumpscript_opt) == 0)
  4375  	{
  4376  EOF
  4377  	    case "$host" in
  4378  	      *mingw* | *cygwin* )
  4379  		# make stdout use "unix" line endings
  4380  		echo "          setmode(1,_O_BINARY);"
  4381  		;;
  4382  	      esac
  4383  
  4384  	    cat <<"EOF"
  4385  	  lt_dump_script (stdout);
  4386  	  return 0;
  4387  	}
  4388        if (strcmp (argv[i], debug_opt) == 0)
  4389  	{
  4390            lt_debug = 1;
  4391            continue;
  4392  	}
  4393        if (strcmp (argv[i], ltwrapper_option_prefix) == 0)
  4394          {
  4395            /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
  4396               namespace, but it is not one of the ones we know about and
  4397               have already dealt with, above (inluding dump-script), then
  4398               report an error. Otherwise, targets might begin to believe
  4399               they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
  4400               namespace. The first time any user complains about this, we'll
  4401               need to make LTWRAPPER_OPTION_PREFIX a configure-time option
  4402               or a configure.ac-settable value.
  4403             */
  4404            lt_fatal (__FILE__, __LINE__,
  4405  		    "unrecognized %s option: '%s'",
  4406                      ltwrapper_option_prefix, argv[i]);
  4407          }
  4408        /* otherwise ... */
  4409        newargz[++newargc] = xstrdup (argv[i]);
  4410      }
  4411    newargz[++newargc] = NULL;
  4412  
  4413  EOF
  4414  	    cat <<EOF
  4415    /* The GNU banner must be the first non-error debug message */
  4416    lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n");
  4417  EOF
  4418  	    cat <<"EOF"
  4419    lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]);
  4420    lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name);
  4421  
  4422    tmp_pathspec = find_executable (argv[0]);
  4423    if (tmp_pathspec == NULL)
  4424      lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]);
  4425    lt_debugprintf (__FILE__, __LINE__,
  4426                    "(main) found exe (before symlink chase) at: %s\n",
  4427  		  tmp_pathspec);
  4428  
  4429    actual_cwrapper_path = chase_symlinks (tmp_pathspec);
  4430    lt_debugprintf (__FILE__, __LINE__,
  4431                    "(main) found exe (after symlink chase) at: %s\n",
  4432  		  actual_cwrapper_path);
  4433    XFREE (tmp_pathspec);
  4434  
  4435    actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path));
  4436    strendzap (actual_cwrapper_path, actual_cwrapper_name);
  4437  
  4438    /* wrapper name transforms */
  4439    strendzap (actual_cwrapper_name, ".exe");
  4440    tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
  4441    XFREE (actual_cwrapper_name);
  4442    actual_cwrapper_name = tmp_pathspec;
  4443    tmp_pathspec = 0;
  4444  
  4445    /* target_name transforms -- use actual target program name; might have lt- prefix */
  4446    target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
  4447    strendzap (target_name, ".exe");
  4448    tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
  4449    XFREE (target_name);
  4450    target_name = tmp_pathspec;
  4451    tmp_pathspec = 0;
  4452  
  4453    lt_debugprintf (__FILE__, __LINE__,
  4454  		  "(main) libtool target name: %s\n",
  4455  		  target_name);
  4456  EOF
  4457  
  4458  	    cat <<EOF
  4459    newargz[0] =
  4460      XMALLOC (char, (strlen (actual_cwrapper_path) +
  4461  		    strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
  4462    strcpy (newargz[0], actual_cwrapper_path);
  4463    strcat (newargz[0], "$objdir");
  4464    strcat (newargz[0], "/");
  4465  EOF
  4466  
  4467  	    cat <<"EOF"
  4468    /* stop here, and copy so we don't have to do this twice */
  4469    tmp_pathspec = xstrdup (newargz[0]);
  4470  
  4471    /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
  4472    strcat (newargz[0], actual_cwrapper_name);
  4473  
  4474    /* DO want the lt- prefix here if it exists, so use target_name */
  4475    lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
  4476    XFREE (tmp_pathspec);
  4477    tmp_pathspec = NULL;
  4478  EOF
  4479  
  4480  	    case $host_os in
  4481  	      mingw*)
  4482  	    cat <<"EOF"
  4483    {
  4484      char* p;
  4485      while ((p = strchr (newargz[0], '\\')) != NULL)
  4486        {
  4487  	*p = '/';
  4488        }
  4489      while ((p = strchr (lt_argv_zero, '\\')) != NULL)
  4490        {
  4491  	*p = '/';
  4492        }
  4493    }
  4494  EOF
  4495  	    ;;
  4496  	    esac
  4497  
  4498  	    cat <<"EOF"
  4499    XFREE (target_name);
  4500    XFREE (actual_cwrapper_path);
  4501    XFREE (actual_cwrapper_name);
  4502  
  4503    lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
  4504    lt_setenv ("DUALCASE", "1");  /* for MSK sh */
  4505    /* Update the DLL searchpath.  EXE_PATH_VALUE ($dllsearchpath) must
  4506       be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath)
  4507       because on Windows, both *_VARNAMEs are PATH but uninstalled
  4508       libraries must come first. */
  4509    lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
  4510    lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
  4511  
  4512    lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n",
  4513  		  nonnull (lt_argv_zero));
  4514    for (i = 0; i < newargc; i++)
  4515      {
  4516        lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n",
  4517  		      i, nonnull (newargz[i]));
  4518      }
  4519  
  4520  EOF
  4521  
  4522  	    case $host_os in
  4523  	      mingw*)
  4524  		cat <<"EOF"
  4525    /* execv doesn't actually work on mingw as expected on unix */
  4526    newargz = prepare_spawn (newargz);
  4527    rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
  4528    if (rval == -1)
  4529      {
  4530        /* failed to start process */
  4531        lt_debugprintf (__FILE__, __LINE__,
  4532  		      "(main) failed to launch target \"%s\": %s\n",
  4533  		      lt_argv_zero, nonnull (strerror (errno)));
  4534        return 127;
  4535      }
  4536    return rval;
  4537  EOF
  4538  		;;
  4539  	      *)
  4540  		cat <<"EOF"
  4541    execv (lt_argv_zero, newargz);
  4542    return rval; /* =127, but avoids unused variable warning */
  4543  EOF
  4544  		;;
  4545  	    esac
  4546  
  4547  	    cat <<"EOF"
  4548  }
  4549  
  4550  void *
  4551  xmalloc (size_t num)
  4552  {
  4553    void *p = (void *) malloc (num);
  4554    if (!p)
  4555      lt_fatal (__FILE__, __LINE__, "memory exhausted");
  4556  
  4557    return p;
  4558  }
  4559  
  4560  char *
  4561  xstrdup (const char *string)
  4562  {
  4563    return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
  4564  			  string) : NULL;
  4565  }
  4566  
  4567  const char *
  4568  base_name (const char *name)
  4569  {
  4570    const char *base;
  4571  
  4572  #if defined (HAVE_DOS_BASED_FILE_SYSTEM)
  4573    /* Skip over the disk name in MSDOS pathnames. */
  4574    if (isalpha ((unsigned char) name[0]) && name[1] == ':')
  4575      name += 2;
  4576  #endif
  4577  
  4578    for (base = name; *name; name++)
  4579      if (IS_DIR_SEPARATOR (*name))
  4580        base = name + 1;
  4581    return base;
  4582  }
  4583  
  4584  int
  4585  check_executable (const char *path)
  4586  {
  4587    struct stat st;
  4588  
  4589    lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n",
  4590                    nonempty (path));
  4591    if ((!path) || (!*path))
  4592      return 0;
  4593  
  4594    if ((stat (path, &st) >= 0)
  4595        && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
  4596      return 1;
  4597    else
  4598      return 0;
  4599  }
  4600  
  4601  int
  4602  make_executable (const char *path)
  4603  {
  4604    int rval = 0;
  4605    struct stat st;
  4606  
  4607    lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n",
  4608                    nonempty (path));
  4609    if ((!path) || (!*path))
  4610      return 0;
  4611  
  4612    if (stat (path, &st) >= 0)
  4613      {
  4614        rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
  4615      }
  4616    return rval;
  4617  }
  4618  
  4619  /* Searches for the full path of the wrapper.  Returns
  4620     newly allocated full path name if found, NULL otherwise
  4621     Does not chase symlinks, even on platforms that support them.
  4622  */
  4623  char *
  4624  find_executable (const char *wrapper)
  4625  {
  4626    int has_slash = 0;
  4627    const char *p;
  4628    const char *p_next;
  4629    /* static buffer for getcwd */
  4630    char tmp[LT_PATHMAX + 1];
  4631    int tmp_len;
  4632    char *concat_name;
  4633  
  4634    lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n",
  4635                    nonempty (wrapper));
  4636  
  4637    if ((wrapper == NULL) || (*wrapper == '\0'))
  4638      return NULL;
  4639  
  4640    /* Absolute path? */
  4641  #if defined (HAVE_DOS_BASED_FILE_SYSTEM)
  4642    if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
  4643      {
  4644        concat_name = xstrdup (wrapper);
  4645        if (check_executable (concat_name))
  4646  	return concat_name;
  4647        XFREE (concat_name);
  4648      }
  4649    else
  4650      {
  4651  #endif
  4652        if (IS_DIR_SEPARATOR (wrapper[0]))
  4653  	{
  4654  	  concat_name = xstrdup (wrapper);
  4655  	  if (check_executable (concat_name))
  4656  	    return concat_name;
  4657  	  XFREE (concat_name);
  4658  	}
  4659  #if defined (HAVE_DOS_BASED_FILE_SYSTEM)
  4660      }
  4661  #endif
  4662  
  4663    for (p = wrapper; *p; p++)
  4664      if (*p == '/')
  4665        {
  4666  	has_slash = 1;
  4667  	break;
  4668        }
  4669    if (!has_slash)
  4670      {
  4671        /* no slashes; search PATH */
  4672        const char *path = getenv ("PATH");
  4673        if (path != NULL)
  4674  	{
  4675  	  for (p = path; *p; p = p_next)
  4676  	    {
  4677  	      const char *q;
  4678  	      size_t p_len;
  4679  	      for (q = p; *q; q++)
  4680  		if (IS_PATH_SEPARATOR (*q))
  4681  		  break;
  4682  	      p_len = q - p;
  4683  	      p_next = (*q == '\0' ? q : q + 1);
  4684  	      if (p_len == 0)
  4685  		{
  4686  		  /* empty path: current directory */
  4687  		  if (getcwd (tmp, LT_PATHMAX) == NULL)
  4688  		    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
  4689                                nonnull (strerror (errno)));
  4690  		  tmp_len = strlen (tmp);
  4691  		  concat_name =
  4692  		    XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
  4693  		  memcpy (concat_name, tmp, tmp_len);
  4694  		  concat_name[tmp_len] = '/';
  4695  		  strcpy (concat_name + tmp_len + 1, wrapper);
  4696  		}
  4697  	      else
  4698  		{
  4699  		  concat_name =
  4700  		    XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
  4701  		  memcpy (concat_name, p, p_len);
  4702  		  concat_name[p_len] = '/';
  4703  		  strcpy (concat_name + p_len + 1, wrapper);
  4704  		}
  4705  	      if (check_executable (concat_name))
  4706  		return concat_name;
  4707  	      XFREE (concat_name);
  4708  	    }
  4709  	}
  4710        /* not found in PATH; assume curdir */
  4711      }
  4712    /* Relative path | not found in path: prepend cwd */
  4713    if (getcwd (tmp, LT_PATHMAX) == NULL)
  4714      lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
  4715                nonnull (strerror (errno)));
  4716    tmp_len = strlen (tmp);
  4717    concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
  4718    memcpy (concat_name, tmp, tmp_len);
  4719    concat_name[tmp_len] = '/';
  4720    strcpy (concat_name + tmp_len + 1, wrapper);
  4721  
  4722    if (check_executable (concat_name))
  4723      return concat_name;
  4724    XFREE (concat_name);
  4725    return NULL;
  4726  }
  4727  
  4728  char *
  4729  chase_symlinks (const char *pathspec)
  4730  {
  4731  #ifndef S_ISLNK
  4732    return xstrdup (pathspec);
  4733  #else
  4734    char buf[LT_PATHMAX];
  4735    struct stat s;
  4736    char *tmp_pathspec = xstrdup (pathspec);
  4737    char *p;
  4738    int has_symlinks = 0;
  4739    while (strlen (tmp_pathspec) && !has_symlinks)
  4740      {
  4741        lt_debugprintf (__FILE__, __LINE__,
  4742  		      "checking path component for symlinks: %s\n",
  4743  		      tmp_pathspec);
  4744        if (lstat (tmp_pathspec, &s) == 0)
  4745  	{
  4746  	  if (S_ISLNK (s.st_mode) != 0)
  4747  	    {
  4748  	      has_symlinks = 1;
  4749  	      break;
  4750  	    }
  4751  
  4752  	  /* search backwards for last DIR_SEPARATOR */
  4753  	  p = tmp_pathspec + strlen (tmp_pathspec) - 1;
  4754  	  while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
  4755  	    p--;
  4756  	  if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
  4757  	    {
  4758  	      /* no more DIR_SEPARATORS left */
  4759  	      break;
  4760  	    }
  4761  	  *p = '\0';
  4762  	}
  4763        else
  4764  	{
  4765  	  lt_fatal (__FILE__, __LINE__,
  4766  		    "error accessing file \"%s\": %s",
  4767  		    tmp_pathspec, nonnull (strerror (errno)));
  4768  	}
  4769      }
  4770    XFREE (tmp_pathspec);
  4771  
  4772    if (!has_symlinks)
  4773      {
  4774        return xstrdup (pathspec);
  4775      }
  4776  
  4777    tmp_pathspec = realpath (pathspec, buf);
  4778    if (tmp_pathspec == 0)
  4779      {
  4780        lt_fatal (__FILE__, __LINE__,
  4781  		"could not follow symlinks for %s", pathspec);
  4782      }
  4783    return xstrdup (tmp_pathspec);
  4784  #endif
  4785  }
  4786  
  4787  char *
  4788  strendzap (char *str, const char *pat)
  4789  {
  4790    size_t len, patlen;
  4791  
  4792    assert (str != NULL);
  4793    assert (pat != NULL);
  4794  
  4795    len = strlen (str);
  4796    patlen = strlen (pat);
  4797  
  4798    if (patlen <= len)
  4799      {
  4800        str += len - patlen;
  4801        if (strcmp (str, pat) == 0)
  4802  	*str = '\0';
  4803      }
  4804    return str;
  4805  }
  4806  
  4807  void
  4808  lt_debugprintf (const char *file, int line, const char *fmt, ...)
  4809  {
  4810    va_list args;
  4811    if (lt_debug)
  4812      {
  4813        (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line);
  4814        va_start (args, fmt);
  4815        (void) vfprintf (stderr, fmt, args);
  4816        va_end (args);
  4817      }
  4818  }
  4819  
  4820  static void
  4821  lt_error_core (int exit_status, const char *file,
  4822  	       int line, const char *mode,
  4823  	       const char *message, va_list ap)
  4824  {
  4825    fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode);
  4826    vfprintf (stderr, message, ap);
  4827    fprintf (stderr, ".\n");
  4828  
  4829    if (exit_status >= 0)
  4830      exit (exit_status);
  4831  }
  4832  
  4833  void
  4834  lt_fatal (const char *file, int line, const char *message, ...)
  4835  {
  4836    va_list ap;
  4837    va_start (ap, message);
  4838    lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap);
  4839    va_end (ap);
  4840  }
  4841  
  4842  static const char *
  4843  nonnull (const char *s)
  4844  {
  4845    return s ? s : "(null)";
  4846  }
  4847  
  4848  static const char *
  4849  nonempty (const char *s)
  4850  {
  4851    return (s && !*s) ? "(empty)" : nonnull (s);
  4852  }
  4853  
  4854  void
  4855  lt_setenv (const char *name, const char *value)
  4856  {
  4857    lt_debugprintf (__FILE__, __LINE__,
  4858  		  "(lt_setenv) setting '%s' to '%s'\n",
  4859                    nonnull (name), nonnull (value));
  4860    {
  4861  #ifdef HAVE_SETENV
  4862      /* always make a copy, for consistency with !HAVE_SETENV */
  4863      char *str = xstrdup (value);
  4864      setenv (name, str, 1);
  4865  #else
  4866      int len = strlen (name) + 1 + strlen (value) + 1;
  4867      char *str = XMALLOC (char, len);
  4868      sprintf (str, "%s=%s", name, value);
  4869      if (putenv (str) != EXIT_SUCCESS)
  4870        {
  4871          XFREE (str);
  4872        }
  4873  #endif
  4874    }
  4875  }
  4876  
  4877  char *
  4878  lt_extend_str (const char *orig_value, const char *add, int to_end)
  4879  {
  4880    char *new_value;
  4881    if (orig_value && *orig_value)
  4882      {
  4883        int orig_value_len = strlen (orig_value);
  4884        int add_len = strlen (add);
  4885        new_value = XMALLOC (char, add_len + orig_value_len + 1);
  4886        if (to_end)
  4887          {
  4888            strcpy (new_value, orig_value);
  4889            strcpy (new_value + orig_value_len, add);
  4890          }
  4891        else
  4892          {
  4893            strcpy (new_value, add);
  4894            strcpy (new_value + add_len, orig_value);
  4895          }
  4896      }
  4897    else
  4898      {
  4899        new_value = xstrdup (add);
  4900      }
  4901    return new_value;
  4902  }
  4903  
  4904  void
  4905  lt_update_exe_path (const char *name, const char *value)
  4906  {
  4907    lt_debugprintf (__FILE__, __LINE__,
  4908  		  "(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
  4909                    nonnull (name), nonnull (value));
  4910  
  4911    if (name && *name && value && *value)
  4912      {
  4913        char *new_value = lt_extend_str (getenv (name), value, 0);
  4914        /* some systems can't cope with a ':'-terminated path #' */
  4915        int len = strlen (new_value);
  4916        while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
  4917          {
  4918            new_value[len-1] = '\0';
  4919          }
  4920        lt_setenv (name, new_value);
  4921        XFREE (new_value);
  4922      }
  4923  }
  4924  
  4925  void
  4926  lt_update_lib_path (const char *name, const char *value)
  4927  {
  4928    lt_debugprintf (__FILE__, __LINE__,
  4929  		  "(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
  4930                    nonnull (name), nonnull (value));
  4931  
  4932    if (name && *name && value && *value)
  4933      {
  4934        char *new_value = lt_extend_str (getenv (name), value, 0);
  4935        lt_setenv (name, new_value);
  4936        XFREE (new_value);
  4937      }
  4938  }
  4939  
  4940  EOF
  4941  	    case $host_os in
  4942  	      mingw*)
  4943  		cat <<"EOF"
  4944  
  4945  /* Prepares an argument vector before calling spawn().
  4946     Note that spawn() does not by itself call the command interpreter
  4947       (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") :
  4948        ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
  4949           GetVersionEx(&v);
  4950           v.dwPlatformId == VER_PLATFORM_WIN32_NT;
  4951        }) ? "cmd.exe" : "command.com").
  4952     Instead it simply concatenates the arguments, separated by ' ', and calls
  4953     CreateProcess().  We must quote the arguments since Win32 CreateProcess()
  4954     interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a
  4955     special way:
  4956     - Space and tab are interpreted as delimiters. They are not treated as
  4957       delimiters if they are surrounded by double quotes: "...".
  4958     - Unescaped double quotes are removed from the input. Their only effect is
  4959       that within double quotes, space and tab are treated like normal
  4960       characters.
  4961     - Backslashes not followed by double quotes are not special.
  4962     - But 2*n+1 backslashes followed by a double quote become
  4963       n backslashes followed by a double quote (n >= 0):
  4964         \" -> "
  4965         \\\" -> \"
  4966         \\\\\" -> \\"
  4967   */
  4968  #define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
  4969  #define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
  4970  char **
  4971  prepare_spawn (char **argv)
  4972  {
  4973    size_t argc;
  4974    char **new_argv;
  4975    size_t i;
  4976  
  4977    /* Count number of arguments.  */
  4978    for (argc = 0; argv[argc] != NULL; argc++)
  4979      ;
  4980  
  4981    /* Allocate new argument vector.  */
  4982    new_argv = XMALLOC (char *, argc + 1);
  4983  
  4984    /* Put quoted arguments into the new argument vector.  */
  4985    for (i = 0; i < argc; i++)
  4986      {
  4987        const char *string = argv[i];
  4988  
  4989        if (string[0] == '\0')
  4990  	new_argv[i] = xstrdup ("\"\"");
  4991        else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL)
  4992  	{
  4993  	  int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL);
  4994  	  size_t length;
  4995  	  unsigned int backslashes;
  4996  	  const char *s;
  4997  	  char *quoted_string;
  4998  	  char *p;
  4999  
  5000  	  length = 0;
  5001  	  backslashes = 0;
  5002  	  if (quote_around)
  5003  	    length++;
  5004  	  for (s = string; *s != '\0'; s++)
  5005  	    {
  5006  	      char c = *s;
  5007  	      if (c == '"')
  5008  		length += backslashes + 1;
  5009  	      length++;
  5010  	      if (c == '\\')
  5011  		backslashes++;
  5012  	      else
  5013  		backslashes = 0;
  5014  	    }
  5015  	  if (quote_around)
  5016  	    length += backslashes + 1;
  5017  
  5018  	  quoted_string = XMALLOC (char, length + 1);
  5019  
  5020  	  p = quoted_string;
  5021  	  backslashes = 0;
  5022  	  if (quote_around)
  5023  	    *p++ = '"';
  5024  	  for (s = string; *s != '\0'; s++)
  5025  	    {
  5026  	      char c = *s;
  5027  	      if (c == '"')
  5028  		{
  5029  		  unsigned int j;
  5030  		  for (j = backslashes + 1; j > 0; j--)
  5031  		    *p++ = '\\';
  5032  		}
  5033  	      *p++ = c;
  5034  	      if (c == '\\')
  5035  		backslashes++;
  5036  	      else
  5037  		backslashes = 0;
  5038  	    }
  5039  	  if (quote_around)
  5040  	    {
  5041  	      unsigned int j;
  5042  	      for (j = backslashes; j > 0; j--)
  5043  		*p++ = '\\';
  5044  	      *p++ = '"';
  5045  	    }
  5046  	  *p = '\0';
  5047  
  5048  	  new_argv[i] = quoted_string;
  5049  	}
  5050        else
  5051  	new_argv[i] = (char *) string;
  5052      }
  5053    new_argv[argc] = NULL;
  5054  
  5055    return new_argv;
  5056  }
  5057  EOF
  5058  		;;
  5059  	    esac
  5060  
  5061              cat <<"EOF"
  5062  void lt_dump_script (FILE* f)
  5063  {
  5064  EOF
  5065  	    func_emit_wrapper yes |
  5066  	      $SED -n -e '
  5067  s/^\(.\{79\}\)\(..*\)/\1\
  5068  \2/
  5069  h
  5070  s/\([\\"]\)/\\\1/g
  5071  s/$/\\n/
  5072  s/\([^\n]*\).*/  fputs ("\1", f);/p
  5073  g
  5074  D'
  5075              cat <<"EOF"
  5076  }
  5077  EOF
  5078  }
  5079  # end: func_emit_cwrapperexe_src
  5080  
  5081  # func_win32_import_lib_p ARG
  5082  # True if ARG is an import lib, as indicated by $file_magic_cmd
  5083  func_win32_import_lib_p ()
  5084  {
  5085      $opt_debug
  5086      case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in
  5087      *import*) : ;;
  5088      *) false ;;
  5089      esac
  5090  }
  5091  
  5092  # func_mode_link arg...
  5093  func_mode_link ()
  5094  {
  5095      $opt_debug
  5096      case $host in
  5097      *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
  5098        # It is impossible to link a dll without this setting, and
  5099        # we shouldn't force the makefile maintainer to figure out
  5100        # which system we are compiling for in order to pass an extra
  5101        # flag for every libtool invocation.
  5102        # allow_undefined=no
  5103  
  5104        # FIXME: Unfortunately, there are problems with the above when trying
  5105        # to make a dll which has undefined symbols, in which case not
  5106        # even a static library is built.  For now, we need to specify
  5107        # -no-undefined on the libtool link line when we can be certain
  5108        # that all symbols are satisfied, otherwise we get a static library.
  5109        allow_undefined=yes
  5110        ;;
  5111      *)
  5112        allow_undefined=yes
  5113        ;;
  5114      esac
  5115      libtool_args=$nonopt
  5116      base_compile="$nonopt $@"
  5117      compile_command=$nonopt
  5118      finalize_command=$nonopt
  5119  
  5120      compile_rpath=
  5121      finalize_rpath=
  5122      compile_shlibpath=
  5123      finalize_shlibpath=
  5124      convenience=
  5125      old_convenience=
  5126      deplibs=
  5127      old_deplibs=
  5128      compiler_flags=
  5129      linker_flags=
  5130      dllsearchpath=
  5131      lib_search_path=`pwd`
  5132      inst_prefix_dir=
  5133      new_inherited_linker_flags=
  5134  
  5135      avoid_version=no
  5136      bindir=
  5137      dlfiles=
  5138      dlprefiles=
  5139      dlself=no
  5140      export_dynamic=no
  5141      export_symbols=
  5142      export_symbols_regex=
  5143      generated=
  5144      libobjs=
  5145      ltlibs=
  5146      module=no
  5147      no_install=no
  5148      objs=
  5149      non_pic_objects=
  5150      precious_files_regex=
  5151      prefer_static_libs=no
  5152      preload=no
  5153      prev=
  5154      prevarg=
  5155      release=
  5156      rpath=
  5157      xrpath=
  5158      perm_rpath=
  5159      temp_rpath=
  5160      thread_safe=no
  5161      vinfo=
  5162      vinfo_number=no
  5163      weak_libs=
  5164      single_module="${wl}-single_module"
  5165      func_infer_tag $base_compile
  5166  
  5167      # We need to know -static, to get the right output filenames.
  5168      for arg
  5169      do
  5170        case $arg in
  5171        -shared)
  5172  	test "$build_libtool_libs" != yes && \
  5173  	  func_fatal_configuration "can not build a shared library"
  5174  	build_old_libs=no
  5175  	break
  5176  	;;
  5177        -all-static | -static | -static-libtool-libs)
  5178  	case $arg in
  5179  	-all-static)
  5180  	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
  5181  	    func_warning "complete static linking is impossible in this configuration"
  5182  	  fi
  5183  	  if test -n "$link_static_flag"; then
  5184  	    dlopen_self=$dlopen_self_static
  5185  	  fi
  5186  	  prefer_static_libs=yes
  5187  	  ;;
  5188  	-static)
  5189  	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
  5190  	    dlopen_self=$dlopen_self_static
  5191  	  fi
  5192  	  prefer_static_libs=built
  5193  	  ;;
  5194  	-static-libtool-libs)
  5195  	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
  5196  	    dlopen_self=$dlopen_self_static
  5197  	  fi
  5198  	  prefer_static_libs=yes
  5199  	  ;;
  5200  	esac
  5201  	build_libtool_libs=no
  5202  	build_old_libs=yes
  5203  	break
  5204  	;;
  5205        esac
  5206      done
  5207  
  5208      # See if our shared archives depend on static archives.
  5209      test -n "$old_archive_from_new_cmds" && build_old_libs=yes
  5210  
  5211      # Go through the arguments, transforming them on the way.
  5212      while test "$#" -gt 0; do
  5213        arg="$1"
  5214        shift
  5215        func_quote_for_eval "$arg"
  5216        qarg=$func_quote_for_eval_unquoted_result
  5217        func_append libtool_args " $func_quote_for_eval_result"
  5218  
  5219        # If the previous option needs an argument, assign it.
  5220        if test -n "$prev"; then
  5221  	case $prev in
  5222  	output)
  5223  	  func_append compile_command " @OUTPUT@"
  5224  	  func_append finalize_command " @OUTPUT@"
  5225  	  ;;
  5226  	esac
  5227  
  5228  	case $prev in
  5229  	bindir)
  5230  	  bindir="$arg"
  5231  	  prev=
  5232  	  continue
  5233  	  ;;
  5234  	dlfiles|dlprefiles)
  5235  	  if test "$preload" = no; then
  5236  	    # Add the symbol object into the linking commands.
  5237  	    func_append compile_command " @SYMFILE@"
  5238  	    func_append finalize_command " @SYMFILE@"
  5239  	    preload=yes
  5240  	  fi
  5241  	  case $arg in
  5242  	  *.la | *.lo) ;;  # We handle these cases below.
  5243  	  force)
  5244  	    if test "$dlself" = no; then
  5245  	      dlself=needless
  5246  	      export_dynamic=yes
  5247  	    fi
  5248  	    prev=
  5249  	    continue
  5250  	    ;;
  5251  	  self)
  5252  	    if test "$prev" = dlprefiles; then
  5253  	      dlself=yes
  5254  	    elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
  5255  	      dlself=yes
  5256  	    else
  5257  	      dlself=needless
  5258  	      export_dynamic=yes
  5259  	    fi
  5260  	    prev=
  5261  	    continue
  5262  	    ;;
  5263  	  *)
  5264  	    if test "$prev" = dlfiles; then
  5265  	      func_append dlfiles " $arg"
  5266  	    else
  5267  	      func_append dlprefiles " $arg"
  5268  	    fi
  5269  	    prev=
  5270  	    continue
  5271  	    ;;
  5272  	  esac
  5273  	  ;;
  5274  	expsyms)
  5275  	  export_symbols="$arg"
  5276  	  test -f "$arg" \
  5277  	    || func_fatal_error "symbol file \`$arg' does not exist"
  5278  	  prev=
  5279  	  continue
  5280  	  ;;
  5281  	expsyms_regex)
  5282  	  export_symbols_regex="$arg"
  5283  	  prev=
  5284  	  continue
  5285  	  ;;
  5286  	framework)
  5287  	  case $host in
  5288  	    *-*-darwin*)
  5289  	      case "$deplibs " in
  5290  		*" $qarg.ltframework "*) ;;
  5291  		*) func_append deplibs " $qarg.ltframework" # this is fixed later
  5292  		   ;;
  5293  	      esac
  5294  	      ;;
  5295  	  esac
  5296  	  prev=
  5297  	  continue
  5298  	  ;;
  5299  	inst_prefix)
  5300  	  inst_prefix_dir="$arg"
  5301  	  prev=
  5302  	  continue
  5303  	  ;;
  5304  	objectlist)
  5305  	  if test -f "$arg"; then
  5306  	    save_arg=$arg
  5307  	    moreargs=
  5308  	    for fil in `cat "$save_arg"`
  5309  	    do
  5310  #	      func_append moreargs " $fil"
  5311  	      arg=$fil
  5312  	      # A libtool-controlled object.
  5313  
  5314  	      # Check to see that this really is a libtool object.
  5315  	      if func_lalib_unsafe_p "$arg"; then
  5316  		pic_object=
  5317  		non_pic_object=
  5318  
  5319  		# Read the .lo file
  5320  		func_source "$arg"
  5321  
  5322  		if test -z "$pic_object" ||
  5323  		   test -z "$non_pic_object" ||
  5324  		   test "$pic_object" = none &&
  5325  		   test "$non_pic_object" = none; then
  5326  		  func_fatal_error "cannot find name of object for \`$arg'"
  5327  		fi
  5328  
  5329  		# Extract subdirectory from the argument.
  5330  		func_dirname "$arg" "/" ""
  5331  		xdir="$func_dirname_result"
  5332  
  5333  		if test "$pic_object" != none; then
  5334  		  # Prepend the subdirectory the object is found in.
  5335  		  pic_object="$xdir$pic_object"
  5336  
  5337  		  if test "$prev" = dlfiles; then
  5338  		    if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
  5339  		      func_append dlfiles " $pic_object"
  5340  		      prev=
  5341  		      continue
  5342  		    else
  5343  		      # If libtool objects are unsupported, then we need to preload.
  5344  		      prev=dlprefiles
  5345  		    fi
  5346  		  fi
  5347  
  5348  		  # CHECK ME:  I think I busted this.  -Ossama
  5349  		  if test "$prev" = dlprefiles; then
  5350  		    # Preload the old-style object.
  5351  		    func_append dlprefiles " $pic_object"
  5352  		    prev=
  5353  		  fi
  5354  
  5355  		  # A PIC object.
  5356  		  func_append libobjs " $pic_object"
  5357  		  arg="$pic_object"
  5358  		fi
  5359  
  5360  		# Non-PIC object.
  5361  		if test "$non_pic_object" != none; then
  5362  		  # Prepend the subdirectory the object is found in.
  5363  		  non_pic_object="$xdir$non_pic_object"
  5364  
  5365  		  # A standard non-PIC object
  5366  		  func_append non_pic_objects " $non_pic_object"
  5367  		  if test -z "$pic_object" || test "$pic_object" = none ; then
  5368  		    arg="$non_pic_object"
  5369  		  fi
  5370  		else
  5371  		  # If the PIC object exists, use it instead.
  5372  		  # $xdir was prepended to $pic_object above.
  5373  		  non_pic_object="$pic_object"
  5374  		  func_append non_pic_objects " $non_pic_object"
  5375  		fi
  5376  	      else
  5377  		# Only an error if not doing a dry-run.
  5378  		if $opt_dry_run; then
  5379  		  # Extract subdirectory from the argument.
  5380  		  func_dirname "$arg" "/" ""
  5381  		  xdir="$func_dirname_result"
  5382  
  5383  		  func_lo2o "$arg"
  5384  		  pic_object=$xdir$objdir/$func_lo2o_result
  5385  		  non_pic_object=$xdir$func_lo2o_result
  5386  		  func_append libobjs " $pic_object"
  5387  		  func_append non_pic_objects " $non_pic_object"
  5388  	        else
  5389  		  func_fatal_error "\`$arg' is not a valid libtool object"
  5390  		fi
  5391  	      fi
  5392  	    done
  5393  	  else
  5394  	    func_fatal_error "link input file \`$arg' does not exist"
  5395  	  fi
  5396  	  arg=$save_arg
  5397  	  prev=
  5398  	  continue
  5399  	  ;;
  5400  	precious_regex)
  5401  	  precious_files_regex="$arg"
  5402  	  prev=
  5403  	  continue
  5404  	  ;;
  5405  	release)
  5406  	  release="-$arg"
  5407  	  prev=
  5408  	  continue
  5409  	  ;;
  5410  	rpath | xrpath)
  5411  	  # We need an absolute path.
  5412  	  case $arg in
  5413  	  [\\/]* | [A-Za-z]:[\\/]*) ;;
  5414  	  *)
  5415  	    func_fatal_error "only absolute run-paths are allowed"
  5416  	    ;;
  5417  	  esac
  5418  	  if test "$prev" = rpath; then
  5419  	    case "$rpath " in
  5420  	    *" $arg "*) ;;
  5421  	    *) func_append rpath " $arg" ;;
  5422  	    esac
  5423  	  else
  5424  	    case "$xrpath " in
  5425  	    *" $arg "*) ;;
  5426  	    *) func_append xrpath " $arg" ;;
  5427  	    esac
  5428  	  fi
  5429  	  prev=
  5430  	  continue
  5431  	  ;;
  5432  	shrext)
  5433  	  shrext_cmds="$arg"
  5434  	  prev=
  5435  	  continue
  5436  	  ;;
  5437  	weak)
  5438  	  func_append weak_libs " $arg"
  5439  	  prev=
  5440  	  continue
  5441  	  ;;
  5442  	xcclinker)
  5443  	  func_append linker_flags " $qarg"
  5444  	  func_append compiler_flags " $qarg"
  5445  	  prev=
  5446  	  func_append compile_command " $qarg"
  5447  	  func_append finalize_command " $qarg"
  5448  	  continue
  5449  	  ;;
  5450  	xcompiler)
  5451  	  func_append compiler_flags " $qarg"
  5452  	  prev=
  5453  	  func_append compile_command " $qarg"
  5454  	  func_append finalize_command " $qarg"
  5455  	  continue
  5456  	  ;;
  5457  	xlinker)
  5458  	  func_append linker_flags " $qarg"
  5459  	  func_append compiler_flags " $wl$qarg"
  5460  	  prev=
  5461  	  func_append compile_command " $wl$qarg"
  5462  	  func_append finalize_command " $wl$qarg"
  5463  	  continue
  5464  	  ;;
  5465  	*)
  5466  	  eval "$prev=\"\$arg\""
  5467  	  prev=
  5468  	  continue
  5469  	  ;;
  5470  	esac
  5471        fi # test -n "$prev"
  5472  
  5473        prevarg="$arg"
  5474  
  5475        case $arg in
  5476        -all-static)
  5477  	if test -n "$link_static_flag"; then
  5478  	  # See comment for -static flag below, for more details.
  5479  	  func_append compile_command " $link_static_flag"
  5480  	  func_append finalize_command " $link_static_flag"
  5481  	fi
  5482  	continue
  5483  	;;
  5484  
  5485        -allow-undefined)
  5486  	# FIXME: remove this flag sometime in the future.
  5487  	func_fatal_error "\`-allow-undefined' must not be used because it is the default"
  5488  	;;
  5489  
  5490        -avoid-version)
  5491  	avoid_version=yes
  5492  	continue
  5493  	;;
  5494  
  5495        -bindir)
  5496  	prev=bindir
  5497  	continue
  5498  	;;
  5499  
  5500        -dlopen)
  5501  	prev=dlfiles
  5502  	continue
  5503  	;;
  5504  
  5505        -dlpreopen)
  5506  	prev=dlprefiles
  5507  	continue
  5508  	;;
  5509  
  5510        -export-dynamic)
  5511  	export_dynamic=yes
  5512  	continue
  5513  	;;
  5514  
  5515        -export-symbols | -export-symbols-regex)
  5516  	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
  5517  	  func_fatal_error "more than one -exported-symbols argument is not allowed"
  5518  	fi
  5519  	if test "X$arg" = "X-export-symbols"; then
  5520  	  prev=expsyms
  5521  	else
  5522  	  prev=expsyms_regex
  5523  	fi
  5524  	continue
  5525  	;;
  5526  
  5527        -framework)
  5528  	prev=framework
  5529  	continue
  5530  	;;
  5531  
  5532        -inst-prefix-dir)
  5533  	prev=inst_prefix
  5534  	continue
  5535  	;;
  5536  
  5537        # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
  5538        # so, if we see these flags be careful not to treat them like -L
  5539        -L[A-Z][A-Z]*:*)
  5540  	case $with_gcc/$host in
  5541  	no/*-*-irix* | /*-*-irix*)
  5542  	  func_append compile_command " $arg"
  5543  	  func_append finalize_command " $arg"
  5544  	  ;;
  5545  	esac
  5546  	continue
  5547  	;;
  5548  
  5549        -L*)
  5550  	func_stripname "-L" '' "$arg"
  5551  	if test -z "$func_stripname_result"; then
  5552  	  if test "$#" -gt 0; then
  5553  	    func_fatal_error "require no space between \`-L' and \`$1'"
  5554  	  else
  5555  	    func_fatal_error "need path for \`-L' option"
  5556  	  fi
  5557  	fi
  5558  	func_resolve_sysroot "$func_stripname_result"
  5559  	dir=$func_resolve_sysroot_result
  5560  	# We need an absolute path.
  5561  	case $dir in
  5562  	[\\/]* | [A-Za-z]:[\\/]*) ;;
  5563  	*)
  5564  	  absdir=`cd "$dir" && pwd`
  5565  	  test -z "$absdir" && \
  5566  	    func_fatal_error "cannot determine absolute directory name of \`$dir'"
  5567  	  dir="$absdir"
  5568  	  ;;
  5569  	esac
  5570  	case "$deplibs " in
  5571  	*" -L$dir "* | *" $arg "*)
  5572  	  # Will only happen for absolute or sysroot arguments
  5573  	  ;;
  5574  	*)
  5575  	  # Preserve sysroot, but never include relative directories
  5576  	  case $dir in
  5577  	    [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;;
  5578  	    *) func_append deplibs " -L$dir" ;;
  5579  	  esac
  5580  	  func_append lib_search_path " $dir"
  5581  	  ;;
  5582  	esac
  5583  	case $host in
  5584  	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
  5585  	  testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'`
  5586  	  case :$dllsearchpath: in
  5587  	  *":$dir:"*) ;;
  5588  	  ::) dllsearchpath=$dir;;
  5589  	  *) func_append dllsearchpath ":$dir";;
  5590  	  esac
  5591  	  case :$dllsearchpath: in
  5592  	  *":$testbindir:"*) ;;
  5593  	  ::) dllsearchpath=$testbindir;;
  5594  	  *) func_append dllsearchpath ":$testbindir";;
  5595  	  esac
  5596  	  ;;
  5597  	esac
  5598  	continue
  5599  	;;
  5600  
  5601        -l*)
  5602  	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
  5603  	  case $host in
  5604  	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*)
  5605  	    # These systems don't actually have a C or math library (as such)
  5606  	    continue
  5607  	    ;;
  5608  	  *-*-os2*)
  5609  	    # These systems don't actually have a C library (as such)
  5610  	    test "X$arg" = "X-lc" && continue
  5611  	    ;;
  5612  	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
  5613  	    # Do not include libc due to us having libc/libc_r.
  5614  	    test "X$arg" = "X-lc" && continue
  5615  	    ;;
  5616  	  *-*-rhapsody* | *-*-darwin1.[012])
  5617  	    # Rhapsody C and math libraries are in the System framework
  5618  	    func_append deplibs " System.ltframework"
  5619  	    continue
  5620  	    ;;
  5621  	  *-*-sco3.2v5* | *-*-sco5v6*)
  5622  	    # Causes problems with __ctype
  5623  	    test "X$arg" = "X-lc" && continue
  5624  	    ;;
  5625  	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
  5626  	    # Compiler inserts libc in the correct place for threads to work
  5627  	    test "X$arg" = "X-lc" && continue
  5628  	    ;;
  5629  	  esac
  5630  	elif test "X$arg" = "X-lc_r"; then
  5631  	 case $host in
  5632  	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
  5633  	   # Do not include libc_r directly, use -pthread flag.
  5634  	   continue
  5635  	   ;;
  5636  	 esac
  5637  	fi
  5638  	func_append deplibs " $arg"
  5639  	continue
  5640  	;;
  5641  
  5642        -module)
  5643  	module=yes
  5644  	continue
  5645  	;;
  5646  
  5647        # Tru64 UNIX uses -model [arg] to determine the layout of C++
  5648        # classes, name mangling, and exception handling.
  5649        # Darwin uses the -arch flag to determine output architecture.
  5650        -model|-arch|-isysroot|--sysroot)
  5651  	func_append compiler_flags " $arg"
  5652  	func_append compile_command " $arg"
  5653  	func_append finalize_command " $arg"
  5654  	prev=xcompiler
  5655  	continue
  5656  	;;
  5657  
  5658        -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
  5659        |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
  5660  	func_append compiler_flags " $arg"
  5661  	func_append compile_command " $arg"
  5662  	func_append finalize_command " $arg"
  5663  	case "$new_inherited_linker_flags " in
  5664  	    *" $arg "*) ;;
  5665  	    * ) func_append new_inherited_linker_flags " $arg" ;;
  5666  	esac
  5667  	continue
  5668  	;;
  5669  
  5670        -multi_module)
  5671  	single_module="${wl}-multi_module"
  5672  	continue
  5673  	;;
  5674  
  5675        -no-fast-install)
  5676  	fast_install=no
  5677  	continue
  5678  	;;
  5679  
  5680        -no-install)
  5681  	case $host in
  5682  	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
  5683  	  # The PATH hackery in wrapper scripts is required on Windows
  5684  	  # and Darwin in order for the loader to find any dlls it needs.
  5685  	  func_warning "\`-no-install' is ignored for $host"
  5686  	  func_warning "assuming \`-no-fast-install' instead"
  5687  	  fast_install=no
  5688  	  ;;
  5689  	*) no_install=yes ;;
  5690  	esac
  5691  	continue
  5692  	;;
  5693  
  5694        -no-undefined)
  5695  	allow_undefined=no
  5696  	continue
  5697  	;;
  5698  
  5699        -objectlist)
  5700  	prev=objectlist
  5701  	continue
  5702  	;;
  5703  
  5704        -o) prev=output ;;
  5705  
  5706        -precious-files-regex)
  5707  	prev=precious_regex
  5708  	continue
  5709  	;;
  5710  
  5711        -release)
  5712  	prev=release
  5713  	continue
  5714  	;;
  5715  
  5716        -rpath)
  5717  	prev=rpath
  5718  	continue
  5719  	;;
  5720  
  5721        -R)
  5722  	prev=xrpath
  5723  	continue
  5724  	;;
  5725  
  5726        -R*)
  5727  	func_stripname '-R' '' "$arg"
  5728  	dir=$func_stripname_result
  5729  	# We need an absolute path.
  5730  	case $dir in
  5731  	[\\/]* | [A-Za-z]:[\\/]*) ;;
  5732  	=*)
  5733  	  func_stripname '=' '' "$dir"
  5734  	  dir=$lt_sysroot$func_stripname_result
  5735  	  ;;
  5736  	*)
  5737  	  func_fatal_error "only absolute run-paths are allowed"
  5738  	  ;;
  5739  	esac
  5740  	case "$xrpath " in
  5741  	*" $dir "*) ;;
  5742  	*) func_append xrpath " $dir" ;;
  5743  	esac
  5744  	continue
  5745  	;;
  5746  
  5747        -shared)
  5748  	# The effects of -shared are defined in a previous loop.
  5749  	continue
  5750  	;;
  5751  
  5752        -shrext)
  5753  	prev=shrext
  5754  	continue
  5755  	;;
  5756  
  5757        -static | -static-libtool-libs)
  5758  	# The effects of -static are defined in a previous loop.
  5759  	# We used to do the same as -all-static on platforms that
  5760  	# didn't have a PIC flag, but the assumption that the effects
  5761  	# would be equivalent was wrong.  It would break on at least
  5762  	# Digital Unix and AIX.
  5763  	continue
  5764  	;;
  5765  
  5766        -thread-safe)
  5767  	thread_safe=yes
  5768  	continue
  5769  	;;
  5770  
  5771        -version-info)
  5772  	prev=vinfo
  5773  	continue
  5774  	;;
  5775  
  5776        -version-number)
  5777  	prev=vinfo
  5778  	vinfo_number=yes
  5779  	continue
  5780  	;;
  5781  
  5782        -weak)
  5783          prev=weak
  5784  	continue
  5785  	;;
  5786  
  5787        -Wc,*)
  5788  	func_stripname '-Wc,' '' "$arg"
  5789  	args=$func_stripname_result
  5790  	arg=
  5791  	save_ifs="$IFS"; IFS=','
  5792  	for flag in $args; do
  5793  	  IFS="$save_ifs"
  5794            func_quote_for_eval "$flag"
  5795  	  func_append arg " $func_quote_for_eval_result"
  5796  	  func_append compiler_flags " $func_quote_for_eval_result"
  5797  	done
  5798  	IFS="$save_ifs"
  5799  	func_stripname ' ' '' "$arg"
  5800  	arg=$func_stripname_result
  5801  	;;
  5802  
  5803        -Wl,*)
  5804  	func_stripname '-Wl,' '' "$arg"
  5805  	args=$func_stripname_result
  5806  	arg=
  5807  	save_ifs="$IFS"; IFS=','
  5808  	for flag in $args; do
  5809  	  IFS="$save_ifs"
  5810            func_quote_for_eval "$flag"
  5811  	  func_append arg " $wl$func_quote_for_eval_result"
  5812  	  func_append compiler_flags " $wl$func_quote_for_eval_result"
  5813  	  func_append linker_flags " $func_quote_for_eval_result"
  5814  	done
  5815  	IFS="$save_ifs"
  5816  	func_stripname ' ' '' "$arg"
  5817  	arg=$func_stripname_result
  5818  	;;
  5819  
  5820        -Xcompiler)
  5821  	prev=xcompiler
  5822  	continue
  5823  	;;
  5824  
  5825        -Xlinker)
  5826  	prev=xlinker
  5827  	continue
  5828  	;;
  5829  
  5830        -XCClinker)
  5831  	prev=xcclinker
  5832  	continue
  5833  	;;
  5834  
  5835        # -msg_* for osf cc
  5836        -msg_*)
  5837  	func_quote_for_eval "$arg"
  5838  	arg="$func_quote_for_eval_result"
  5839  	;;
  5840  
  5841        # Flags to be passed through unchanged, with rationale:
  5842        # -64, -mips[0-9]      enable 64-bit mode for the SGI compiler
  5843        # -r[0-9][0-9]*        specify processor for the SGI compiler
  5844        # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler
  5845        # +DA*, +DD*           enable 64-bit mode for the HP compiler
  5846        # -q*                  compiler args for the IBM compiler
  5847        # -m*, -t[45]*, -txscale* architecture-specific flags for GCC
  5848        # -F/path              path to uninstalled frameworks, gcc on darwin
  5849        # -p, -pg, --coverage, -fprofile-*  profiling flags for GCC
  5850        # @file                GCC response files
  5851        # -tp=*                Portland pgcc target processor selection
  5852        # --sysroot=*          for sysroot support
  5853        # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
  5854        -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
  5855        -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
  5856        -O*|-flto*|-fwhopr*|-fuse-linker-plugin)
  5857          func_quote_for_eval "$arg"
  5858  	arg="$func_quote_for_eval_result"
  5859          func_append compile_command " $arg"
  5860          func_append finalize_command " $arg"
  5861          func_append compiler_flags " $arg"
  5862          continue
  5863          ;;
  5864  
  5865        # Some other compiler flag.
  5866        -* | +*)
  5867          func_quote_for_eval "$arg"
  5868  	arg="$func_quote_for_eval_result"
  5869  	;;
  5870  
  5871        *.$objext)
  5872  	# A standard object.
  5873  	func_append objs " $arg"
  5874  	;;
  5875  
  5876        *.lo)
  5877  	# A libtool-controlled object.
  5878  
  5879  	# Check to see that this really is a libtool object.
  5880  	if func_lalib_unsafe_p "$arg"; then
  5881  	  pic_object=
  5882  	  non_pic_object=
  5883  
  5884  	  # Read the .lo file
  5885  	  func_source "$arg"
  5886  
  5887  	  if test -z "$pic_object" ||
  5888  	     test -z "$non_pic_object" ||
  5889  	     test "$pic_object" = none &&
  5890  	     test "$non_pic_object" = none; then
  5891  	    func_fatal_error "cannot find name of object for \`$arg'"
  5892  	  fi
  5893  
  5894  	  # Extract subdirectory from the argument.
  5895  	  func_dirname "$arg" "/" ""
  5896  	  xdir="$func_dirname_result"
  5897  
  5898  	  if test "$pic_object" != none; then
  5899  	    # Prepend the subdirectory the object is found in.
  5900  	    pic_object="$xdir$pic_object"
  5901  
  5902  	    if test "$prev" = dlfiles; then
  5903  	      if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
  5904  		func_append dlfiles " $pic_object"
  5905  		prev=
  5906  		continue
  5907  	      else
  5908  		# If libtool objects are unsupported, then we need to preload.
  5909  		prev=dlprefiles
  5910  	      fi
  5911  	    fi
  5912  
  5913  	    # CHECK ME:  I think I busted this.  -Ossama
  5914  	    if test "$prev" = dlprefiles; then
  5915  	      # Preload the old-style object.
  5916  	      func_append dlprefiles " $pic_object"
  5917  	      prev=
  5918  	    fi
  5919  
  5920  	    # A PIC object.
  5921  	    func_append libobjs " $pic_object"
  5922  	    arg="$pic_object"
  5923  	  fi
  5924  
  5925  	  # Non-PIC object.
  5926  	  if test "$non_pic_object" != none; then
  5927  	    # Prepend the subdirectory the object is found in.
  5928  	    non_pic_object="$xdir$non_pic_object"
  5929  
  5930  	    # A standard non-PIC object
  5931  	    func_append non_pic_objects " $non_pic_object"
  5932  	    if test -z "$pic_object" || test "$pic_object" = none ; then
  5933  	      arg="$non_pic_object"
  5934  	    fi
  5935  	  else
  5936  	    # If the PIC object exists, use it instead.
  5937  	    # $xdir was prepended to $pic_object above.
  5938  	    non_pic_object="$pic_object"
  5939  	    func_append non_pic_objects " $non_pic_object"
  5940  	  fi
  5941  	else
  5942  	  # Only an error if not doing a dry-run.
  5943  	  if $opt_dry_run; then
  5944  	    # Extract subdirectory from the argument.
  5945  	    func_dirname "$arg" "/" ""
  5946  	    xdir="$func_dirname_result"
  5947  
  5948  	    func_lo2o "$arg"
  5949  	    pic_object=$xdir$objdir/$func_lo2o_result
  5950  	    non_pic_object=$xdir$func_lo2o_result
  5951  	    func_append libobjs " $pic_object"
  5952  	    func_append non_pic_objects " $non_pic_object"
  5953  	  else
  5954  	    func_fatal_error "\`$arg' is not a valid libtool object"
  5955  	  fi
  5956  	fi
  5957  	;;
  5958  
  5959        *.$libext)
  5960  	# An archive.
  5961  	func_append deplibs " $arg"
  5962  	func_append old_deplibs " $arg"
  5963  	continue
  5964  	;;
  5965  
  5966        *.la)
  5967  	# A libtool-controlled library.
  5968  
  5969  	func_resolve_sysroot "$arg"
  5970  	if test "$prev" = dlfiles; then
  5971  	  # This library was specified with -dlopen.
  5972  	  func_append dlfiles " $func_resolve_sysroot_result"
  5973  	  prev=
  5974  	elif test "$prev" = dlprefiles; then
  5975  	  # The library was specified with -dlpreopen.
  5976  	  func_append dlprefiles " $func_resolve_sysroot_result"
  5977  	  prev=
  5978  	else
  5979  	  func_append deplibs " $func_resolve_sysroot_result"
  5980  	fi
  5981  	continue
  5982  	;;
  5983  
  5984        # Some other compiler argument.
  5985        *)
  5986  	# Unknown arguments in both finalize_command and compile_command need
  5987  	# to be aesthetically quoted because they are evaled later.
  5988  	func_quote_for_eval "$arg"
  5989  	arg="$func_quote_for_eval_result"
  5990  	;;
  5991        esac # arg
  5992  
  5993        # Now actually substitute the argument into the commands.
  5994        if test -n "$arg"; then
  5995  	func_append compile_command " $arg"
  5996  	func_append finalize_command " $arg"
  5997        fi
  5998      done # argument parsing loop
  5999  
  6000      test -n "$prev" && \
  6001        func_fatal_help "the \`$prevarg' option requires an argument"
  6002  
  6003      if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
  6004        eval arg=\"$export_dynamic_flag_spec\"
  6005        func_append compile_command " $arg"
  6006        func_append finalize_command " $arg"
  6007      fi
  6008  
  6009      oldlibs=
  6010      # calculate the name of the file, without its directory
  6011      func_basename "$output"
  6012      outputname="$func_basename_result"
  6013      libobjs_save="$libobjs"
  6014  
  6015      if test -n "$shlibpath_var"; then
  6016        # get the directories listed in $shlibpath_var
  6017        eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\`
  6018      else
  6019        shlib_search_path=
  6020      fi
  6021      eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
  6022      eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
  6023  
  6024      func_dirname "$output" "/" ""
  6025      output_objdir="$func_dirname_result$objdir"
  6026      func_to_tool_file "$output_objdir/"
  6027      tool_output_objdir=$func_to_tool_file_result
  6028      # Create the object directory.
  6029      func_mkdir_p "$output_objdir"
  6030  
  6031      # Determine the type of output
  6032      case $output in
  6033      "")
  6034        func_fatal_help "you must specify an output file"
  6035        ;;
  6036      *.$libext) linkmode=oldlib ;;
  6037      *.lo | *.$objext) linkmode=obj ;;
  6038      *.la) linkmode=lib ;;
  6039      *) linkmode=prog ;; # Anything else should be a program.
  6040      esac
  6041  
  6042      specialdeplibs=
  6043  
  6044      libs=
  6045      # Find all interdependent deplibs by searching for libraries
  6046      # that are linked more than once (e.g. -la -lb -la)
  6047      for deplib in $deplibs; do
  6048        if $opt_preserve_dup_deps ; then
  6049  	case "$libs " in
  6050  	*" $deplib "*) func_append specialdeplibs " $deplib" ;;
  6051  	esac
  6052        fi
  6053        func_append libs " $deplib"
  6054      done
  6055  
  6056      if test "$linkmode" = lib; then
  6057        libs="$predeps $libs $compiler_lib_search_path $postdeps"
  6058  
  6059        # Compute libraries that are listed more than once in $predeps
  6060        # $postdeps and mark them as special (i.e., whose duplicates are
  6061        # not to be eliminated).
  6062        pre_post_deps=
  6063        if $opt_duplicate_compiler_generated_deps; then
  6064  	for pre_post_dep in $predeps $postdeps; do
  6065  	  case "$pre_post_deps " in
  6066  	  *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;;
  6067  	  esac
  6068  	  func_append pre_post_deps " $pre_post_dep"
  6069  	done
  6070        fi
  6071        pre_post_deps=
  6072      fi
  6073  
  6074      deplibs=
  6075      newdependency_libs=
  6076      newlib_search_path=
  6077      need_relink=no # whether we're linking any uninstalled libtool libraries
  6078      notinst_deplibs= # not-installed libtool libraries
  6079      notinst_path= # paths that contain not-installed libtool libraries
  6080  
  6081      case $linkmode in
  6082      lib)
  6083  	passes="conv dlpreopen link"
  6084  	for file in $dlfiles $dlprefiles; do
  6085  	  case $file in
  6086  	  *.la) ;;
  6087  	  *)
  6088  	    func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
  6089  	    ;;
  6090  	  esac
  6091  	done
  6092  	;;
  6093      prog)
  6094  	compile_deplibs=
  6095  	finalize_deplibs=
  6096  	alldeplibs=no
  6097  	newdlfiles=
  6098  	newdlprefiles=
  6099  	passes="conv scan dlopen dlpreopen link"
  6100  	;;
  6101      *)  passes="conv"
  6102  	;;
  6103      esac
  6104  
  6105      for pass in $passes; do
  6106        # The preopen pass in lib mode reverses $deplibs; put it back here
  6107        # so that -L comes before libs that need it for instance...
  6108        if test "$linkmode,$pass" = "lib,link"; then
  6109  	## FIXME: Find the place where the list is rebuilt in the wrong
  6110  	##        order, and fix it there properly
  6111          tmp_deplibs=
  6112  	for deplib in $deplibs; do
  6113  	  tmp_deplibs="$deplib $tmp_deplibs"
  6114  	done
  6115  	deplibs="$tmp_deplibs"
  6116        fi
  6117  
  6118        if test "$linkmode,$pass" = "lib,link" ||
  6119  	 test "$linkmode,$pass" = "prog,scan"; then
  6120  	libs="$deplibs"
  6121  	deplibs=
  6122        fi
  6123        if test "$linkmode" = prog; then
  6124  	case $pass in
  6125  	dlopen) libs="$dlfiles" ;;
  6126  	dlpreopen) libs="$dlprefiles" ;;
  6127  	link)
  6128  	  libs="$deplibs %DEPLIBS%"
  6129  	  test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs"
  6130  	  ;;
  6131  	esac
  6132        fi
  6133        if test "$linkmode,$pass" = "lib,dlpreopen"; then
  6134  	# Collect and forward deplibs of preopened libtool libs
  6135  	for lib in $dlprefiles; do
  6136  	  # Ignore non-libtool-libs
  6137  	  dependency_libs=
  6138  	  func_resolve_sysroot "$lib"
  6139  	  case $lib in
  6140  	  *.la)	func_source "$func_resolve_sysroot_result" ;;
  6141  	  esac
  6142  
  6143  	  # Collect preopened libtool deplibs, except any this library
  6144  	  # has declared as weak libs
  6145  	  for deplib in $dependency_libs; do
  6146  	    func_basename "$deplib"
  6147              deplib_base=$func_basename_result
  6148  	    case " $weak_libs " in
  6149  	    *" $deplib_base "*) ;;
  6150  	    *) func_append deplibs " $deplib" ;;
  6151  	    esac
  6152  	  done
  6153  	done
  6154  	libs="$dlprefiles"
  6155        fi
  6156        if test "$pass" = dlopen; then
  6157  	# Collect dlpreopened libraries
  6158  	save_deplibs="$deplibs"
  6159  	deplibs=
  6160        fi
  6161  
  6162        for deplib in $libs; do
  6163  	lib=
  6164  	found=no
  6165  	case $deplib in
  6166  	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
  6167          |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
  6168  	  if test "$linkmode,$pass" = "prog,link"; then
  6169  	    compile_deplibs="$deplib $compile_deplibs"
  6170  	    finalize_deplibs="$deplib $finalize_deplibs"
  6171  	  else
  6172  	    func_append compiler_flags " $deplib"
  6173  	    if test "$linkmode" = lib ; then
  6174  		case "$new_inherited_linker_flags " in
  6175  		    *" $deplib "*) ;;
  6176  		    * ) func_append new_inherited_linker_flags " $deplib" ;;
  6177  		esac
  6178  	    fi
  6179  	  fi
  6180  	  continue
  6181  	  ;;
  6182  	-l*)
  6183  	  if test "$linkmode" != lib && test "$linkmode" != prog; then
  6184  	    func_warning "\`-l' is ignored for archives/objects"
  6185  	    continue
  6186  	  fi
  6187  	  func_stripname '-l' '' "$deplib"
  6188  	  name=$func_stripname_result
  6189  	  if test "$linkmode" = lib; then
  6190  	    searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
  6191  	  else
  6192  	    searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
  6193  	  fi
  6194  	  for searchdir in $searchdirs; do
  6195  	    for search_ext in .la $std_shrext .so .a; do
  6196  	      # Search the libtool library
  6197  	      lib="$searchdir/lib${name}${search_ext}"
  6198  	      if test -f "$lib"; then
  6199  		if test "$search_ext" = ".la"; then
  6200  		  found=yes
  6201  		else
  6202  		  found=no
  6203  		fi
  6204  		break 2
  6205  	      fi
  6206  	    done
  6207  	  done
  6208  	  if test "$found" != yes; then
  6209  	    # deplib doesn't seem to be a libtool library
  6210  	    if test "$linkmode,$pass" = "prog,link"; then
  6211  	      compile_deplibs="$deplib $compile_deplibs"
  6212  	      finalize_deplibs="$deplib $finalize_deplibs"
  6213  	    else
  6214  	      deplibs="$deplib $deplibs"
  6215  	      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
  6216  	    fi
  6217  	    continue
  6218  	  else # deplib is a libtool library
  6219  	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
  6220  	    # We need to do some special things here, and not later.
  6221  	    if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
  6222  	      case " $predeps $postdeps " in
  6223  	      *" $deplib "*)
  6224  		if func_lalib_p "$lib"; then
  6225  		  library_names=
  6226  		  old_library=
  6227  		  func_source "$lib"
  6228  		  for l in $old_library $library_names; do
  6229  		    ll="$l"
  6230  		  done
  6231  		  if test "X$ll" = "X$old_library" ; then # only static version available
  6232  		    found=no
  6233  		    func_dirname "$lib" "" "."
  6234  		    ladir="$func_dirname_result"
  6235  		    lib=$ladir/$old_library
  6236  		    if test "$linkmode,$pass" = "prog,link"; then
  6237  		      compile_deplibs="$deplib $compile_deplibs"
  6238  		      finalize_deplibs="$deplib $finalize_deplibs"
  6239  		    else
  6240  		      deplibs="$deplib $deplibs"
  6241  		      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
  6242  		    fi
  6243  		    continue
  6244  		  fi
  6245  		fi
  6246  		;;
  6247  	      *) ;;
  6248  	      esac
  6249  	    fi
  6250  	  fi
  6251  	  ;; # -l
  6252  	*.ltframework)
  6253  	  if test "$linkmode,$pass" = "prog,link"; then
  6254  	    compile_deplibs="$deplib $compile_deplibs"
  6255  	    finalize_deplibs="$deplib $finalize_deplibs"
  6256  	  else
  6257  	    deplibs="$deplib $deplibs"
  6258  	    if test "$linkmode" = lib ; then
  6259  		case "$new_inherited_linker_flags " in
  6260  		    *" $deplib "*) ;;
  6261  		    * ) func_append new_inherited_linker_flags " $deplib" ;;
  6262  		esac
  6263  	    fi
  6264  	  fi
  6265  	  continue
  6266  	  ;;
  6267  	-L*)
  6268  	  case $linkmode in
  6269  	  lib)
  6270  	    deplibs="$deplib $deplibs"
  6271  	    test "$pass" = conv && continue
  6272  	    newdependency_libs="$deplib $newdependency_libs"
  6273  	    func_stripname '-L' '' "$deplib"
  6274  	    func_resolve_sysroot "$func_stripname_result"
  6275  	    func_append newlib_search_path " $func_resolve_sysroot_result"
  6276  	    ;;
  6277  	  prog)
  6278  	    if test "$pass" = conv; then
  6279  	      deplibs="$deplib $deplibs"
  6280  	      continue
  6281  	    fi
  6282  	    if test "$pass" = scan; then
  6283  	      deplibs="$deplib $deplibs"
  6284  	    else
  6285  	      compile_deplibs="$deplib $compile_deplibs"
  6286  	      finalize_deplibs="$deplib $finalize_deplibs"
  6287  	    fi
  6288  	    func_stripname '-L' '' "$deplib"
  6289  	    func_resolve_sysroot "$func_stripname_result"
  6290  	    func_append newlib_search_path " $func_resolve_sysroot_result"
  6291  	    ;;
  6292  	  *)
  6293  	    func_warning "\`-L' is ignored for archives/objects"
  6294  	    ;;
  6295  	  esac # linkmode
  6296  	  continue
  6297  	  ;; # -L
  6298  	-R*)
  6299  	  if test "$pass" = link; then
  6300  	    func_stripname '-R' '' "$deplib"
  6301  	    func_resolve_sysroot "$func_stripname_result"
  6302  	    dir=$func_resolve_sysroot_result
  6303  	    # Make sure the xrpath contains only unique directories.
  6304  	    case "$xrpath " in
  6305  	    *" $dir "*) ;;
  6306  	    *) func_append xrpath " $dir" ;;
  6307  	    esac
  6308  	  fi
  6309  	  deplibs="$deplib $deplibs"
  6310  	  continue
  6311  	  ;;
  6312  	*.la)
  6313  	  func_resolve_sysroot "$deplib"
  6314  	  lib=$func_resolve_sysroot_result
  6315  	  ;;
  6316  	*.$libext)
  6317  	  if test "$pass" = conv; then
  6318  	    deplibs="$deplib $deplibs"
  6319  	    continue
  6320  	  fi
  6321  	  case $linkmode in
  6322  	  lib)
  6323  	    # Linking convenience modules into shared libraries is allowed,
  6324  	    # but linking other static libraries is non-portable.
  6325  	    case " $dlpreconveniencelibs " in
  6326  	    *" $deplib "*) ;;
  6327  	    *)
  6328  	      valid_a_lib=no
  6329  	      case $deplibs_check_method in
  6330  		match_pattern*)
  6331  		  set dummy $deplibs_check_method; shift
  6332  		  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
  6333  		  if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \
  6334  		    | $EGREP "$match_pattern_regex" > /dev/null; then
  6335  		    valid_a_lib=yes
  6336  		  fi
  6337  		;;
  6338  		pass_all)
  6339  		  valid_a_lib=yes
  6340  		;;
  6341  	      esac
  6342  	      if test "$valid_a_lib" != yes; then
  6343  		echo
  6344  		$ECHO "*** Warning: Trying to link with static lib archive $deplib."
  6345  		echo "*** I have the capability to make that library automatically link in when"
  6346  		echo "*** you link to this library.  But I can only do this if you have a"
  6347  		echo "*** shared version of the library, which you do not appear to have"
  6348  		echo "*** because the file extensions .$libext of this argument makes me believe"
  6349  		echo "*** that it is just a static archive that I should not use here."
  6350  	      else
  6351  		echo
  6352  		$ECHO "*** Warning: Linking the shared library $output against the"
  6353  		$ECHO "*** static library $deplib is not portable!"
  6354  		deplibs="$deplib $deplibs"
  6355  	      fi
  6356  	      ;;
  6357  	    esac
  6358  	    continue
  6359  	    ;;
  6360  	  prog)
  6361  	    if test "$pass" != link; then
  6362  	      deplibs="$deplib $deplibs"
  6363  	    else
  6364  	      compile_deplibs="$deplib $compile_deplibs"
  6365  	      finalize_deplibs="$deplib $finalize_deplibs"
  6366  	    fi
  6367  	    continue
  6368  	    ;;
  6369  	  esac # linkmode
  6370  	  ;; # *.$libext
  6371  	*.lo | *.$objext)
  6372  	  if test "$pass" = conv; then
  6373  	    deplibs="$deplib $deplibs"
  6374  	  elif test "$linkmode" = prog; then
  6375  	    if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
  6376  	      # If there is no dlopen support or we're linking statically,
  6377  	      # we need to preload.
  6378  	      func_append newdlprefiles " $deplib"
  6379  	      compile_deplibs="$deplib $compile_deplibs"
  6380  	      finalize_deplibs="$deplib $finalize_deplibs"
  6381  	    else
  6382  	      func_append newdlfiles " $deplib"
  6383  	    fi
  6384  	  fi
  6385  	  continue
  6386  	  ;;
  6387  	%DEPLIBS%)
  6388  	  alldeplibs=yes
  6389  	  continue
  6390  	  ;;
  6391  	esac # case $deplib
  6392  
  6393  	if test "$found" = yes || test -f "$lib"; then :
  6394  	else
  6395  	  func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
  6396  	fi
  6397  
  6398  	# Check to see that this really is a libtool archive.
  6399  	func_lalib_unsafe_p "$lib" \
  6400  	  || func_fatal_error "\`$lib' is not a valid libtool archive"
  6401  
  6402  	func_dirname "$lib" "" "."
  6403  	ladir="$func_dirname_result"
  6404  
  6405  	dlname=
  6406  	dlopen=
  6407  	dlpreopen=
  6408  	libdir=
  6409  	library_names=
  6410  	old_library=
  6411  	inherited_linker_flags=
  6412  	# If the library was installed with an old release of libtool,
  6413  	# it will not redefine variables installed, or shouldnotlink
  6414  	installed=yes
  6415  	shouldnotlink=no
  6416  	avoidtemprpath=
  6417  
  6418  
  6419  	# Read the .la file
  6420  	func_source "$lib"
  6421  
  6422  	# Convert "-framework foo" to "foo.ltframework"
  6423  	if test -n "$inherited_linker_flags"; then
  6424  	  tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`
  6425  	  for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
  6426  	    case " $new_inherited_linker_flags " in
  6427  	      *" $tmp_inherited_linker_flag "*) ;;
  6428  	      *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";;
  6429  	    esac
  6430  	  done
  6431  	fi
  6432  	dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
  6433  	if test "$linkmode,$pass" = "lib,link" ||
  6434  	   test "$linkmode,$pass" = "prog,scan" ||
  6435  	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then
  6436  	  test -n "$dlopen" && func_append dlfiles " $dlopen"
  6437  	  test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen"
  6438  	fi
  6439  
  6440  	if test "$pass" = conv; then
  6441  	  # Only check for convenience libraries
  6442  	  deplibs="$lib $deplibs"
  6443  	  if test -z "$libdir"; then
  6444  	    if test -z "$old_library"; then
  6445  	      func_fatal_error "cannot find name of link library for \`$lib'"
  6446  	    fi
  6447  	    # It is a libtool convenience library, so add in its objects.
  6448  	    func_append convenience " $ladir/$objdir/$old_library"
  6449  	    func_append old_convenience " $ladir/$objdir/$old_library"
  6450  	    tmp_libs=
  6451  	    for deplib in $dependency_libs; do
  6452  	      deplibs="$deplib $deplibs"
  6453  	      if $opt_preserve_dup_deps ; then
  6454  		case "$tmp_libs " in
  6455  		*" $deplib "*) func_append specialdeplibs " $deplib" ;;
  6456  		esac
  6457  	      fi
  6458  	      func_append tmp_libs " $deplib"
  6459  	    done
  6460  	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
  6461  	    func_fatal_error "\`$lib' is not a convenience library"
  6462  	  fi
  6463  	  continue
  6464  	fi # $pass = conv
  6465  
  6466  
  6467  	# Get the name of the library we link against.
  6468  	linklib=
  6469  	if test -n "$old_library" &&
  6470  	   { test "$prefer_static_libs" = yes ||
  6471  	     test "$prefer_static_libs,$installed" = "built,no"; }; then
  6472  	  linklib=$old_library
  6473  	else
  6474  	  for l in $old_library $library_names; do
  6475  	    linklib="$l"
  6476  	  done
  6477  	fi
  6478  	if test -z "$linklib"; then
  6479  	  func_fatal_error "cannot find name of link library for \`$lib'"
  6480  	fi
  6481  
  6482  	# This library was specified with -dlopen.
  6483  	if test "$pass" = dlopen; then
  6484  	  if test -z "$libdir"; then
  6485  	    func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
  6486  	  fi
  6487  	  if test -z "$dlname" ||
  6488  	     test "$dlopen_support" != yes ||
  6489  	     test "$build_libtool_libs" = no; then
  6490  	    # If there is no dlname, no dlopen support or we're linking
  6491  	    # statically, we need to preload.  We also need to preload any
  6492  	    # dependent libraries so libltdl's deplib preloader doesn't
  6493  	    # bomb out in the load deplibs phase.
  6494  	    func_append dlprefiles " $lib $dependency_libs"
  6495  	  else
  6496  	    func_append newdlfiles " $lib"
  6497  	  fi
  6498  	  continue
  6499  	fi # $pass = dlopen
  6500  
  6501  	# We need an absolute path.
  6502  	case $ladir in
  6503  	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
  6504  	*)
  6505  	  abs_ladir=`cd "$ladir" && pwd`
  6506  	  if test -z "$abs_ladir"; then
  6507  	    func_warning "cannot determine absolute directory name of \`$ladir'"
  6508  	    func_warning "passing it literally to the linker, although it might fail"
  6509  	    abs_ladir="$ladir"
  6510  	  fi
  6511  	  ;;
  6512  	esac
  6513  	func_basename "$lib"
  6514  	laname="$func_basename_result"
  6515  
  6516  	# Find the relevant object directory and library name.
  6517  	if test "X$installed" = Xyes; then
  6518  	  if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
  6519  	    func_warning "library \`$lib' was moved."
  6520  	    dir="$ladir"
  6521  	    absdir="$abs_ladir"
  6522  	    libdir="$abs_ladir"
  6523  	  else
  6524  	    dir="$lt_sysroot$libdir"
  6525  	    absdir="$lt_sysroot$libdir"
  6526  	  fi
  6527  	  test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
  6528  	else
  6529  	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
  6530  	    dir="$ladir"
  6531  	    absdir="$abs_ladir"
  6532  	    # Remove this search path later
  6533  	    func_append notinst_path " $abs_ladir"
  6534  	  else
  6535  	    dir="$ladir/$objdir"
  6536  	    absdir="$abs_ladir/$objdir"
  6537  	    # Remove this search path later
  6538  	    func_append notinst_path " $abs_ladir"
  6539  	  fi
  6540  	fi # $installed = yes
  6541  	func_stripname 'lib' '.la' "$laname"
  6542  	name=$func_stripname_result
  6543  
  6544  	# This library was specified with -dlpreopen.
  6545  	if test "$pass" = dlpreopen; then
  6546  	  if test -z "$libdir" && test "$linkmode" = prog; then
  6547  	    func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
  6548  	  fi
  6549  	  case "$host" in
  6550  	    # special handling for platforms with PE-DLLs.
  6551  	    *cygwin* | *mingw* | *cegcc* )
  6552  	      # Linker will automatically link against shared library if both
  6553  	      # static and shared are present.  Therefore, ensure we extract
  6554  	      # symbols from the import library if a shared library is present
  6555  	      # (otherwise, the dlopen module name will be incorrect).  We do
  6556  	      # this by putting the import library name into $newdlprefiles.
  6557  	      # We recover the dlopen module name by 'saving' the la file
  6558  	      # name in a special purpose variable, and (later) extracting the
  6559  	      # dlname from the la file.
  6560  	      if test -n "$dlname"; then
  6561  	        func_tr_sh "$dir/$linklib"
  6562  	        eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname"
  6563  	        func_append newdlprefiles " $dir/$linklib"
  6564  	      else
  6565  	        func_append newdlprefiles " $dir/$old_library"
  6566  	        # Keep a list of preopened convenience libraries to check
  6567  	        # that they are being used correctly in the link pass.
  6568  	        test -z "$libdir" && \
  6569  	          func_append dlpreconveniencelibs " $dir/$old_library"
  6570  	      fi
  6571  	    ;;
  6572  	    * )
  6573  	      # Prefer using a static library (so that no silly _DYNAMIC symbols
  6574  	      # are required to link).
  6575  	      if test -n "$old_library"; then
  6576  	        func_append newdlprefiles " $dir/$old_library"
  6577  	        # Keep a list of preopened convenience libraries to check
  6578  	        # that they are being used correctly in the link pass.
  6579  	        test -z "$libdir" && \
  6580  	          func_append dlpreconveniencelibs " $dir/$old_library"
  6581  	      # Otherwise, use the dlname, so that lt_dlopen finds it.
  6582  	      elif test -n "$dlname"; then
  6583  	        func_append newdlprefiles " $dir/$dlname"
  6584  	      else
  6585  	        func_append newdlprefiles " $dir/$linklib"
  6586  	      fi
  6587  	    ;;
  6588  	  esac
  6589  	fi # $pass = dlpreopen
  6590  
  6591  	if test -z "$libdir"; then
  6592  	  # Link the convenience library
  6593  	  if test "$linkmode" = lib; then
  6594  	    deplibs="$dir/$old_library $deplibs"
  6595  	  elif test "$linkmode,$pass" = "prog,link"; then
  6596  	    compile_deplibs="$dir/$old_library $compile_deplibs"
  6597  	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
  6598  	  else
  6599  	    deplibs="$lib $deplibs" # used for prog,scan pass
  6600  	  fi
  6601  	  continue
  6602  	fi
  6603  
  6604  
  6605  	if test "$linkmode" = prog && test "$pass" != link; then
  6606  	  func_append newlib_search_path " $ladir"
  6607  	  deplibs="$lib $deplibs"
  6608  
  6609  	  linkalldeplibs=no
  6610  	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
  6611  	     test "$build_libtool_libs" = no; then
  6612  	    linkalldeplibs=yes
  6613  	  fi
  6614  
  6615  	  tmp_libs=
  6616  	  for deplib in $dependency_libs; do
  6617  	    case $deplib in
  6618  	    -L*) func_stripname '-L' '' "$deplib"
  6619  	         func_resolve_sysroot "$func_stripname_result"
  6620  	         func_append newlib_search_path " $func_resolve_sysroot_result"
  6621  		 ;;
  6622  	    esac
  6623  	    # Need to link against all dependency_libs?
  6624  	    if test "$linkalldeplibs" = yes; then
  6625  	      deplibs="$deplib $deplibs"
  6626  	    else
  6627  	      # Need to hardcode shared library paths
  6628  	      # or/and link against static libraries
  6629  	      newdependency_libs="$deplib $newdependency_libs"
  6630  	    fi
  6631  	    if $opt_preserve_dup_deps ; then
  6632  	      case "$tmp_libs " in
  6633  	      *" $deplib "*) func_append specialdeplibs " $deplib" ;;
  6634  	      esac
  6635  	    fi
  6636  	    func_append tmp_libs " $deplib"
  6637  	  done # for deplib
  6638  	  continue
  6639  	fi # $linkmode = prog...
  6640  
  6641  	if test "$linkmode,$pass" = "prog,link"; then
  6642  	  if test -n "$library_names" &&
  6643  	     { { test "$prefer_static_libs" = no ||
  6644  	         test "$prefer_static_libs,$installed" = "built,yes"; } ||
  6645  	       test -z "$old_library"; }; then
  6646  	    # We need to hardcode the library path
  6647  	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
  6648  	      # Make sure the rpath contains only unique directories.
  6649  	      case "$temp_rpath:" in
  6650  	      *"$absdir:"*) ;;
  6651  	      *) func_append temp_rpath "$absdir:" ;;
  6652  	      esac
  6653  	    fi
  6654  
  6655  	    # Hardcode the library path.
  6656  	    # Skip directories that are in the system default run-time
  6657  	    # search path.
  6658  	    case " $sys_lib_dlsearch_path " in
  6659  	    *" $absdir "*) ;;
  6660  	    *)
  6661  	      case "$compile_rpath " in
  6662  	      *" $absdir "*) ;;
  6663  	      *) func_append compile_rpath " $absdir" ;;
  6664  	      esac
  6665  	      ;;
  6666  	    esac
  6667  	    case " $sys_lib_dlsearch_path " in
  6668  	    *" $libdir "*) ;;
  6669  	    *)
  6670  	      case "$finalize_rpath " in
  6671  	      *" $libdir "*) ;;
  6672  	      *) func_append finalize_rpath " $libdir" ;;
  6673  	      esac
  6674  	      ;;
  6675  	    esac
  6676  	  fi # $linkmode,$pass = prog,link...
  6677  
  6678  	  if test "$alldeplibs" = yes &&
  6679  	     { test "$deplibs_check_method" = pass_all ||
  6680  	       { test "$build_libtool_libs" = yes &&
  6681  		 test -n "$library_names"; }; }; then
  6682  	    # We only need to search for static libraries
  6683  	    continue
  6684  	  fi
  6685  	fi
  6686  
  6687  	link_static=no # Whether the deplib will be linked statically
  6688  	use_static_libs=$prefer_static_libs
  6689  	if test "$use_static_libs" = built && test "$installed" = yes; then
  6690  	  use_static_libs=no
  6691  	fi
  6692  	if test -n "$library_names" &&
  6693  	   { test "$use_static_libs" = no || test -z "$old_library"; }; then
  6694  	  case $host in
  6695  	  *cygwin* | *mingw* | *cegcc*)
  6696  	      # No point in relinking DLLs because paths are not encoded
  6697  	      func_append notinst_deplibs " $lib"
  6698  	      need_relink=no
  6699  	    ;;
  6700  	  *)
  6701  	    if test "$installed" = no; then
  6702  	      func_append notinst_deplibs " $lib"
  6703  	      need_relink=yes
  6704  	    fi
  6705  	    ;;
  6706  	  esac
  6707  	  # This is a shared library
  6708  
  6709  	  # Warn about portability, can't link against -module's on some
  6710  	  # systems (darwin).  Don't bleat about dlopened modules though!
  6711  	  dlopenmodule=""
  6712  	  for dlpremoduletest in $dlprefiles; do
  6713  	    if test "X$dlpremoduletest" = "X$lib"; then
  6714  	      dlopenmodule="$dlpremoduletest"
  6715  	      break
  6716  	    fi
  6717  	  done
  6718  	  if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
  6719  	    echo
  6720  	    if test "$linkmode" = prog; then
  6721  	      $ECHO "*** Warning: Linking the executable $output against the loadable module"
  6722  	    else
  6723  	      $ECHO "*** Warning: Linking the shared library $output against the loadable module"
  6724  	    fi
  6725  	    $ECHO "*** $linklib is not portable!"
  6726  	  fi
  6727  	  if test "$linkmode" = lib &&
  6728  	     test "$hardcode_into_libs" = yes; then
  6729  	    # Hardcode the library path.
  6730  	    # Skip directories that are in the system default run-time
  6731  	    # search path.
  6732  	    case " $sys_lib_dlsearch_path " in
  6733  	    *" $absdir "*) ;;
  6734  	    *)
  6735  	      case "$compile_rpath " in
  6736  	      *" $absdir "*) ;;
  6737  	      *) func_append compile_rpath " $absdir" ;;
  6738  	      esac
  6739  	      ;;
  6740  	    esac
  6741  	    case " $sys_lib_dlsearch_path " in
  6742  	    *" $libdir "*) ;;
  6743  	    *)
  6744  	      case "$finalize_rpath " in
  6745  	      *" $libdir "*) ;;
  6746  	      *) func_append finalize_rpath " $libdir" ;;
  6747  	      esac
  6748  	      ;;
  6749  	    esac
  6750  	  fi
  6751  
  6752  	  if test -n "$old_archive_from_expsyms_cmds"; then
  6753  	    # figure out the soname
  6754  	    set dummy $library_names
  6755  	    shift
  6756  	    realname="$1"
  6757  	    shift
  6758  	    libname=`eval "\\$ECHO \"$libname_spec\""`
  6759  	    # use dlname if we got it. it's perfectly good, no?
  6760  	    if test -n "$dlname"; then
  6761  	      soname="$dlname"
  6762  	    elif test -n "$soname_spec"; then
  6763  	      # bleh windows
  6764  	      case $host in
  6765  	      *cygwin* | mingw* | *cegcc*)
  6766  	        func_arith $current - $age
  6767  		major=$func_arith_result
  6768  		versuffix="-$major"
  6769  		;;
  6770  	      esac
  6771  	      eval soname=\"$soname_spec\"
  6772  	    else
  6773  	      soname="$realname"
  6774  	    fi
  6775  
  6776  	    # Make a new name for the extract_expsyms_cmds to use
  6777  	    soroot="$soname"
  6778  	    func_basename "$soroot"
  6779  	    soname="$func_basename_result"
  6780  	    func_stripname 'lib' '.dll' "$soname"
  6781  	    newlib=libimp-$func_stripname_result.a
  6782  
  6783  	    # If the library has no export list, then create one now
  6784  	    if test -f "$output_objdir/$soname-def"; then :
  6785  	    else
  6786  	      func_verbose "extracting exported symbol list from \`$soname'"
  6787  	      func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
  6788  	    fi
  6789  
  6790  	    # Create $newlib
  6791  	    if test -f "$output_objdir/$newlib"; then :; else
  6792  	      func_verbose "generating import library for \`$soname'"
  6793  	      func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
  6794  	    fi
  6795  	    # make sure the library variables are pointing to the new library
  6796  	    dir=$output_objdir
  6797  	    linklib=$newlib
  6798  	  fi # test -n "$old_archive_from_expsyms_cmds"
  6799  
  6800  	  if test "$linkmode" = prog || test "$opt_mode" != relink; then
  6801  	    add_shlibpath=
  6802  	    add_dir=
  6803  	    add=
  6804  	    lib_linked=yes
  6805  	    case $hardcode_action in
  6806  	    immediate | unsupported)
  6807  	      if test "$hardcode_direct" = no; then
  6808  		add="$dir/$linklib"
  6809  		case $host in
  6810  		  *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
  6811  		  *-*-sysv4*uw2*) add_dir="-L$dir" ;;
  6812  		  *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
  6813  		    *-*-unixware7*) add_dir="-L$dir" ;;
  6814  		  *-*-darwin* )
  6815  		    # if the lib is a (non-dlopened) module then we can not
  6816  		    # link against it, someone is ignoring the earlier warnings
  6817  		    if /usr/bin/file -L $add 2> /dev/null |
  6818  			 $GREP ": [^:]* bundle" >/dev/null ; then
  6819  		      if test "X$dlopenmodule" != "X$lib"; then
  6820  			$ECHO "*** Warning: lib $linklib is a module, not a shared library"
  6821  			if test -z "$old_library" ; then
  6822  			  echo
  6823  			  echo "*** And there doesn't seem to be a static archive available"
  6824  			  echo "*** The link will probably fail, sorry"
  6825  			else
  6826  			  add="$dir/$old_library"
  6827  			fi
  6828  		      elif test -n "$old_library"; then
  6829  			add="$dir/$old_library"
  6830  		      fi
  6831  		    fi
  6832  		esac
  6833  	      elif test "$hardcode_minus_L" = no; then
  6834  		case $host in
  6835  		*-*-sunos*) add_shlibpath="$dir" ;;
  6836  		esac
  6837  		add_dir="-L$dir"
  6838  		add="-l$name"
  6839  	      elif test "$hardcode_shlibpath_var" = no; then
  6840  		add_shlibpath="$dir"
  6841  		add="-l$name"
  6842  	      else
  6843  		lib_linked=no
  6844  	      fi
  6845  	      ;;
  6846  	    relink)
  6847  	      if test "$hardcode_direct" = yes &&
  6848  	         test "$hardcode_direct_absolute" = no; then
  6849  		add="$dir/$linklib"
  6850  	      elif test "$hardcode_minus_L" = yes; then
  6851  		add_dir="-L$absdir"
  6852  		# Try looking first in the location we're being installed to.
  6853  		if test -n "$inst_prefix_dir"; then
  6854  		  case $libdir in
  6855  		    [\\/]*)
  6856  		      func_append add_dir " -L$inst_prefix_dir$libdir"
  6857  		      ;;
  6858  		  esac
  6859  		fi
  6860  		add="-l$name"
  6861  	      elif test "$hardcode_shlibpath_var" = yes; then
  6862  		add_shlibpath="$dir"
  6863  		add="-l$name"
  6864  	      else
  6865  		lib_linked=no
  6866  	      fi
  6867  	      ;;
  6868  	    *) lib_linked=no ;;
  6869  	    esac
  6870  
  6871  	    if test "$lib_linked" != yes; then
  6872  	      func_fatal_configuration "unsupported hardcode properties"
  6873  	    fi
  6874  
  6875  	    if test -n "$add_shlibpath"; then
  6876  	      case :$compile_shlibpath: in
  6877  	      *":$add_shlibpath:"*) ;;
  6878  	      *) func_append compile_shlibpath "$add_shlibpath:" ;;
  6879  	      esac
  6880  	    fi
  6881  	    if test "$linkmode" = prog; then
  6882  	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
  6883  	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
  6884  	    else
  6885  	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
  6886  	      test -n "$add" && deplibs="$add $deplibs"
  6887  	      if test "$hardcode_direct" != yes &&
  6888  		 test "$hardcode_minus_L" != yes &&
  6889  		 test "$hardcode_shlibpath_var" = yes; then
  6890  		case :$finalize_shlibpath: in
  6891  		*":$libdir:"*) ;;
  6892  		*) func_append finalize_shlibpath "$libdir:" ;;
  6893  		esac
  6894  	      fi
  6895  	    fi
  6896  	  fi
  6897  
  6898  	  if test "$linkmode" = prog || test "$opt_mode" = relink; then
  6899  	    add_shlibpath=
  6900  	    add_dir=
  6901  	    add=
  6902  	    # Finalize command for both is simple: just hardcode it.
  6903  	    if test "$hardcode_direct" = yes &&
  6904  	       test "$hardcode_direct_absolute" = no; then
  6905  	      add="$libdir/$linklib"
  6906  	    elif test "$hardcode_minus_L" = yes; then
  6907  	      add_dir="-L$libdir"
  6908  	      add="-l$name"
  6909  	    elif test "$hardcode_shlibpath_var" = yes; then
  6910  	      case :$finalize_shlibpath: in
  6911  	      *":$libdir:"*) ;;
  6912  	      *) func_append finalize_shlibpath "$libdir:" ;;
  6913  	      esac
  6914  	      add="-l$name"
  6915  	    elif test "$hardcode_automatic" = yes; then
  6916  	      if test -n "$inst_prefix_dir" &&
  6917  		 test -f "$inst_prefix_dir$libdir/$linklib" ; then
  6918  		add="$inst_prefix_dir$libdir/$linklib"
  6919  	      else
  6920  		add="$libdir/$linklib"
  6921  	      fi
  6922  	    else
  6923  	      # We cannot seem to hardcode it, guess we'll fake it.
  6924  	      add_dir="-L$libdir"
  6925  	      # Try looking first in the location we're being installed to.
  6926  	      if test -n "$inst_prefix_dir"; then
  6927  		case $libdir in
  6928  		  [\\/]*)
  6929  		    func_append add_dir " -L$inst_prefix_dir$libdir"
  6930  		    ;;
  6931  		esac
  6932  	      fi
  6933  	      add="-l$name"
  6934  	    fi
  6935  
  6936  	    if test "$linkmode" = prog; then
  6937  	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
  6938  	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
  6939  	    else
  6940  	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
  6941  	      test -n "$add" && deplibs="$add $deplibs"
  6942  	    fi
  6943  	  fi
  6944  	elif test "$linkmode" = prog; then
  6945  	  # Here we assume that one of hardcode_direct or hardcode_minus_L
  6946  	  # is not unsupported.  This is valid on all known static and
  6947  	  # shared platforms.
  6948  	  if test "$hardcode_direct" != unsupported; then
  6949  	    test -n "$old_library" && linklib="$old_library"
  6950  	    compile_deplibs="$dir/$linklib $compile_deplibs"
  6951  	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
  6952  	  else
  6953  	    compile_deplibs="-l$name -L$dir $compile_deplibs"
  6954  	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
  6955  	  fi
  6956  	elif test "$build_libtool_libs" = yes; then
  6957  	  # Not a shared library
  6958  	  if test "$deplibs_check_method" != pass_all; then
  6959  	    # We're trying link a shared library against a static one
  6960  	    # but the system doesn't support it.
  6961  
  6962  	    # Just print a warning and add the library to dependency_libs so
  6963  	    # that the program can be linked against the static library.
  6964  	    echo
  6965  	    $ECHO "*** Warning: This system can not link to static lib archive $lib."
  6966  	    echo "*** I have the capability to make that library automatically link in when"
  6967  	    echo "*** you link to this library.  But I can only do this if you have a"
  6968  	    echo "*** shared version of the library, which you do not appear to have."
  6969  	    if test "$module" = yes; then
  6970  	      echo "*** But as you try to build a module library, libtool will still create "
  6971  	      echo "*** a static module, that should work as long as the dlopening application"
  6972  	      echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
  6973  	      if test -z "$global_symbol_pipe"; then
  6974  		echo
  6975  		echo "*** However, this would only work if libtool was able to extract symbol"
  6976  		echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
  6977  		echo "*** not find such a program.  So, this module is probably useless."
  6978  		echo "*** \`nm' from GNU binutils and a full rebuild may help."
  6979  	      fi
  6980  	      if test "$build_old_libs" = no; then
  6981  		build_libtool_libs=module
  6982  		build_old_libs=yes
  6983  	      else
  6984  		build_libtool_libs=no
  6985  	      fi
  6986  	    fi
  6987  	  else
  6988  	    deplibs="$dir/$old_library $deplibs"
  6989  	    link_static=yes
  6990  	  fi
  6991  	fi # link shared/static library?
  6992  
  6993  	if test "$linkmode" = lib; then
  6994  	  if test -n "$dependency_libs" &&
  6995  	     { test "$hardcode_into_libs" != yes ||
  6996  	       test "$build_old_libs" = yes ||
  6997  	       test "$link_static" = yes; }; then
  6998  	    # Extract -R from dependency_libs
  6999  	    temp_deplibs=
  7000  	    for libdir in $dependency_libs; do
  7001  	      case $libdir in
  7002  	      -R*) func_stripname '-R' '' "$libdir"
  7003  	           temp_xrpath=$func_stripname_result
  7004  		   case " $xrpath " in
  7005  		   *" $temp_xrpath "*) ;;
  7006  		   *) func_append xrpath " $temp_xrpath";;
  7007  		   esac;;
  7008  	      *) func_append temp_deplibs " $libdir";;
  7009  	      esac
  7010  	    done
  7011  	    dependency_libs="$temp_deplibs"
  7012  	  fi
  7013  
  7014  	  func_append newlib_search_path " $absdir"
  7015  	  # Link against this library
  7016  	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
  7017  	  # ... and its dependency_libs
  7018  	  tmp_libs=
  7019  	  for deplib in $dependency_libs; do
  7020  	    newdependency_libs="$deplib $newdependency_libs"
  7021  	    case $deplib in
  7022                -L*) func_stripname '-L' '' "$deplib"
  7023                     func_resolve_sysroot "$func_stripname_result";;
  7024                *) func_resolve_sysroot "$deplib" ;;
  7025              esac
  7026  	    if $opt_preserve_dup_deps ; then
  7027  	      case "$tmp_libs " in
  7028  	      *" $func_resolve_sysroot_result "*)
  7029                  func_append specialdeplibs " $func_resolve_sysroot_result" ;;
  7030  	      esac
  7031  	    fi
  7032  	    func_append tmp_libs " $func_resolve_sysroot_result"
  7033  	  done
  7034  
  7035  	  if test "$link_all_deplibs" != no; then
  7036  	    # Add the search paths of all dependency libraries
  7037  	    for deplib in $dependency_libs; do
  7038  	      path=
  7039  	      case $deplib in
  7040  	      -L*) path="$deplib" ;;
  7041  	      *.la)
  7042  	        func_resolve_sysroot "$deplib"
  7043  	        deplib=$func_resolve_sysroot_result
  7044  	        func_dirname "$deplib" "" "."
  7045  		dir=$func_dirname_result
  7046  		# We need an absolute path.
  7047  		case $dir in
  7048  		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
  7049  		*)
  7050  		  absdir=`cd "$dir" && pwd`
  7051  		  if test -z "$absdir"; then
  7052  		    func_warning "cannot determine absolute directory name of \`$dir'"
  7053  		    absdir="$dir"
  7054  		  fi
  7055  		  ;;
  7056  		esac
  7057  		if $GREP "^installed=no" $deplib > /dev/null; then
  7058  		case $host in
  7059  		*-*-darwin*)
  7060  		  depdepl=
  7061  		  eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
  7062  		  if test -n "$deplibrary_names" ; then
  7063  		    for tmp in $deplibrary_names ; do
  7064  		      depdepl=$tmp
  7065  		    done
  7066  		    if test -f "$absdir/$objdir/$depdepl" ; then
  7067  		      depdepl="$absdir/$objdir/$depdepl"
  7068  		      darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
  7069                        if test -z "$darwin_install_name"; then
  7070                            darwin_install_name=`${OTOOL64} -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
  7071                        fi
  7072  		      func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
  7073  		      func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}"
  7074  		      path=
  7075  		    fi
  7076  		  fi
  7077  		  ;;
  7078  		*)
  7079  		  path="-L$absdir/$objdir"
  7080  		  ;;
  7081  		esac
  7082  		else
  7083  		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
  7084  		  test -z "$libdir" && \
  7085  		    func_fatal_error "\`$deplib' is not a valid libtool archive"
  7086  		  test "$absdir" != "$libdir" && \
  7087  		    func_warning "\`$deplib' seems to be moved"
  7088  
  7089  		  path="-L$absdir"
  7090  		fi
  7091  		;;
  7092  	      esac
  7093  	      case " $deplibs " in
  7094  	      *" $path "*) ;;
  7095  	      *) deplibs="$path $deplibs" ;;
  7096  	      esac
  7097  	    done
  7098  	  fi # link_all_deplibs != no
  7099  	fi # linkmode = lib
  7100        done # for deplib in $libs
  7101        if test "$pass" = link; then
  7102  	if test "$linkmode" = "prog"; then
  7103  	  compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
  7104  	  finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
  7105  	else
  7106  	  compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
  7107  	fi
  7108        fi
  7109        dependency_libs="$newdependency_libs"
  7110        if test "$pass" = dlpreopen; then
  7111  	# Link the dlpreopened libraries before other libraries
  7112  	for deplib in $save_deplibs; do
  7113  	  deplibs="$deplib $deplibs"
  7114  	done
  7115        fi
  7116        if test "$pass" != dlopen; then
  7117  	if test "$pass" != conv; then
  7118  	  # Make sure lib_search_path contains only unique directories.
  7119  	  lib_search_path=
  7120  	  for dir in $newlib_search_path; do
  7121  	    case "$lib_search_path " in
  7122  	    *" $dir "*) ;;
  7123  	    *) func_append lib_search_path " $dir" ;;
  7124  	    esac
  7125  	  done
  7126  	  newlib_search_path=
  7127  	fi
  7128  
  7129  	if test "$linkmode,$pass" != "prog,link"; then
  7130  	  vars="deplibs"
  7131  	else
  7132  	  vars="compile_deplibs finalize_deplibs"
  7133  	fi
  7134  	for var in $vars dependency_libs; do
  7135  	  # Add libraries to $var in reverse order
  7136  	  eval tmp_libs=\"\$$var\"
  7137  	  new_libs=
  7138  	  for deplib in $tmp_libs; do
  7139  	    # FIXME: Pedantically, this is the right thing to do, so
  7140  	    #        that some nasty dependency loop isn't accidentally
  7141  	    #        broken:
  7142  	    #new_libs="$deplib $new_libs"
  7143  	    # Pragmatically, this seems to cause very few problems in
  7144  	    # practice:
  7145  	    case $deplib in
  7146  	    -L*) new_libs="$deplib $new_libs" ;;
  7147  	    -R*) ;;
  7148  	    *)
  7149  	      # And here is the reason: when a library appears more
  7150  	      # than once as an explicit dependence of a library, or
  7151  	      # is implicitly linked in more than once by the
  7152  	      # compiler, it is considered special, and multiple
  7153  	      # occurrences thereof are not removed.  Compare this
  7154  	      # with having the same library being listed as a
  7155  	      # dependency of multiple other libraries: in this case,
  7156  	      # we know (pedantically, we assume) the library does not
  7157  	      # need to be listed more than once, so we keep only the
  7158  	      # last copy.  This is not always right, but it is rare
  7159  	      # enough that we require users that really mean to play
  7160  	      # such unportable linking tricks to link the library
  7161  	      # using -Wl,-lname, so that libtool does not consider it
  7162  	      # for duplicate removal.
  7163  	      case " $specialdeplibs " in
  7164  	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
  7165  	      *)
  7166  		case " $new_libs " in
  7167  		*" $deplib "*) ;;
  7168  		*) new_libs="$deplib $new_libs" ;;
  7169  		esac
  7170  		;;
  7171  	      esac
  7172  	      ;;
  7173  	    esac
  7174  	  done
  7175  	  tmp_libs=
  7176  	  for deplib in $new_libs; do
  7177  	    case $deplib in
  7178  	    -L*)
  7179  	      case " $tmp_libs " in
  7180  	      *" $deplib "*) ;;
  7181  	      *) func_append tmp_libs " $deplib" ;;
  7182  	      esac
  7183  	      ;;
  7184  	    *) func_append tmp_libs " $deplib" ;;
  7185  	    esac
  7186  	  done
  7187  	  eval $var=\"$tmp_libs\"
  7188  	done # for var
  7189        fi
  7190        # Last step: remove runtime libs from dependency_libs
  7191        # (they stay in deplibs)
  7192        tmp_libs=
  7193        for i in $dependency_libs ; do
  7194  	case " $predeps $postdeps $compiler_lib_search_path " in
  7195  	*" $i "*)
  7196  	  i=""
  7197  	  ;;
  7198  	esac
  7199  	if test -n "$i" ; then
  7200  	  func_append tmp_libs " $i"
  7201  	fi
  7202        done
  7203        dependency_libs=$tmp_libs
  7204      done # for pass
  7205      if test "$linkmode" = prog; then
  7206        dlfiles="$newdlfiles"
  7207      fi
  7208      if test "$linkmode" = prog || test "$linkmode" = lib; then
  7209        dlprefiles="$newdlprefiles"
  7210      fi
  7211  
  7212      case $linkmode in
  7213      oldlib)
  7214        if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
  7215  	func_warning "\`-dlopen' is ignored for archives"
  7216        fi
  7217  
  7218        case " $deplibs" in
  7219        *\ -l* | *\ -L*)
  7220  	func_warning "\`-l' and \`-L' are ignored for archives" ;;
  7221        esac
  7222  
  7223        test -n "$rpath" && \
  7224  	func_warning "\`-rpath' is ignored for archives"
  7225  
  7226        test -n "$xrpath" && \
  7227  	func_warning "\`-R' is ignored for archives"
  7228  
  7229        test -n "$vinfo" && \
  7230  	func_warning "\`-version-info/-version-number' is ignored for archives"
  7231  
  7232        test -n "$release" && \
  7233  	func_warning "\`-release' is ignored for archives"
  7234  
  7235        test -n "$export_symbols$export_symbols_regex" && \
  7236  	func_warning "\`-export-symbols' is ignored for archives"
  7237  
  7238        # Now set the variables for building old libraries.
  7239        build_libtool_libs=no
  7240        oldlibs="$output"
  7241        func_append objs "$old_deplibs"
  7242        ;;
  7243  
  7244      lib)
  7245        # Make sure we only generate libraries of the form `libNAME.la'.
  7246        case $outputname in
  7247        lib*)
  7248  	func_stripname 'lib' '.la' "$outputname"
  7249  	name=$func_stripname_result
  7250  	eval shared_ext=\"$shrext_cmds\"
  7251  	eval libname=\"$libname_spec\"
  7252  	;;
  7253        *)
  7254  	test "$module" = no && \
  7255  	  func_fatal_help "libtool library \`$output' must begin with \`lib'"
  7256  
  7257  	if test "$need_lib_prefix" != no; then
  7258  	  # Add the "lib" prefix for modules if required
  7259  	  func_stripname '' '.la' "$outputname"
  7260  	  name=$func_stripname_result
  7261  	  eval shared_ext=\"$shrext_cmds\"
  7262  	  eval libname=\"$libname_spec\"
  7263  	else
  7264  	  func_stripname '' '.la' "$outputname"
  7265  	  libname=$func_stripname_result
  7266  	fi
  7267  	;;
  7268        esac
  7269  
  7270        if test -n "$objs"; then
  7271  	if test "$deplibs_check_method" != pass_all; then
  7272  	  func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
  7273  	else
  7274  	  echo
  7275  	  $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
  7276  	  $ECHO "*** objects $objs is not portable!"
  7277  	  func_append libobjs " $objs"
  7278  	fi
  7279        fi
  7280  
  7281        test "$dlself" != no && \
  7282  	func_warning "\`-dlopen self' is ignored for libtool libraries"
  7283  
  7284        set dummy $rpath
  7285        shift
  7286        test "$#" -gt 1 && \
  7287  	func_warning "ignoring multiple \`-rpath's for a libtool library"
  7288  
  7289        install_libdir="$1"
  7290  
  7291        oldlibs=
  7292        if test -z "$rpath"; then
  7293  	if test "$build_libtool_libs" = yes; then
  7294  	  # Building a libtool convenience library.
  7295  	  # Some compilers have problems with a `.al' extension so
  7296  	  # convenience libraries should have the same extension an
  7297  	  # archive normally would.
  7298  	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
  7299  	  build_libtool_libs=convenience
  7300  	  build_old_libs=yes
  7301  	fi
  7302  
  7303  	test -n "$vinfo" && \
  7304  	  func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
  7305  
  7306  	test -n "$release" && \
  7307  	  func_warning "\`-release' is ignored for convenience libraries"
  7308        else
  7309  
  7310  	# Parse the version information argument.
  7311  	save_ifs="$IFS"; IFS=':'
  7312  	set dummy $vinfo 0 0 0
  7313  	shift
  7314  	IFS="$save_ifs"
  7315  
  7316  	test -n "$7" && \
  7317  	  func_fatal_help "too many parameters to \`-version-info'"
  7318  
  7319  	# convert absolute version numbers to libtool ages
  7320  	# this retains compatibility with .la files and attempts
  7321  	# to make the code below a bit more comprehensible
  7322  
  7323  	case $vinfo_number in
  7324  	yes)
  7325  	  number_major="$1"
  7326  	  number_minor="$2"
  7327  	  number_revision="$3"
  7328  	  #
  7329  	  # There are really only two kinds -- those that
  7330  	  # use the current revision as the major version
  7331  	  # and those that subtract age and use age as
  7332  	  # a minor version.  But, then there is irix
  7333  	  # which has an extra 1 added just for fun
  7334  	  #
  7335  	  case $version_type in
  7336  	  # correct linux to gnu/linux during the next big refactor
  7337  	  darwin|linux|osf|windows|none)
  7338  	    func_arith $number_major + $number_minor
  7339  	    current=$func_arith_result
  7340  	    age="$number_minor"
  7341  	    revision="$number_revision"
  7342  	    ;;
  7343  	  freebsd-aout|freebsd-elf|qnx|sunos)
  7344  	    current="$number_major"
  7345  	    revision="$number_minor"
  7346  	    age="0"
  7347  	    ;;
  7348  	  irix|nonstopux)
  7349  	    func_arith $number_major + $number_minor
  7350  	    current=$func_arith_result
  7351  	    age="$number_minor"
  7352  	    revision="$number_minor"
  7353  	    lt_irix_increment=no
  7354  	    ;;
  7355  	  *)
  7356  	    func_fatal_configuration "$modename: unknown library version type \`$version_type'"
  7357  	    ;;
  7358  	  esac
  7359  	  ;;
  7360  	no)
  7361  	  current="$1"
  7362  	  revision="$2"
  7363  	  age="$3"
  7364  	  ;;
  7365  	esac
  7366  
  7367  	# Check that each of the things are valid numbers.
  7368  	case $current in
  7369  	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
  7370  	*)
  7371  	  func_error "CURRENT \`$current' must be a nonnegative integer"
  7372  	  func_fatal_error "\`$vinfo' is not valid version information"
  7373  	  ;;
  7374  	esac
  7375  
  7376  	case $revision in
  7377  	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
  7378  	*)
  7379  	  func_error "REVISION \`$revision' must be a nonnegative integer"
  7380  	  func_fatal_error "\`$vinfo' is not valid version information"
  7381  	  ;;
  7382  	esac
  7383  
  7384  	case $age in
  7385  	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
  7386  	*)
  7387  	  func_error "AGE \`$age' must be a nonnegative integer"
  7388  	  func_fatal_error "\`$vinfo' is not valid version information"
  7389  	  ;;
  7390  	esac
  7391  
  7392  	if test "$age" -gt "$current"; then
  7393  	  func_error "AGE \`$age' is greater than the current interface number \`$current'"
  7394  	  func_fatal_error "\`$vinfo' is not valid version information"
  7395  	fi
  7396  
  7397  	# Calculate the version variables.
  7398  	major=
  7399  	versuffix=
  7400  	verstring=
  7401  	case $version_type in
  7402  	none) ;;
  7403  
  7404  	darwin)
  7405  	  # Like Linux, but with the current version available in
  7406  	  # verstring for coding it into the library header
  7407  	  func_arith $current - $age
  7408  	  major=.$func_arith_result
  7409  	  versuffix="$major.$age.$revision"
  7410  	  # Darwin ld doesn't like 0 for these options...
  7411  	  func_arith $current + 1
  7412  	  minor_current=$func_arith_result
  7413  	  xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
  7414  	  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
  7415  	  ;;
  7416  
  7417  	freebsd-aout)
  7418  	  major=".$current"
  7419  	  versuffix=".$current.$revision";
  7420  	  ;;
  7421  
  7422  	freebsd-elf)
  7423  	  major=".$current"
  7424  	  versuffix=".$current"
  7425  	  ;;
  7426  
  7427  	irix | nonstopux)
  7428  	  if test "X$lt_irix_increment" = "Xno"; then
  7429  	    func_arith $current - $age
  7430  	  else
  7431  	    func_arith $current - $age + 1
  7432  	  fi
  7433  	  major=$func_arith_result
  7434  
  7435  	  case $version_type in
  7436  	    nonstopux) verstring_prefix=nonstopux ;;
  7437  	    *)         verstring_prefix=sgi ;;
  7438  	  esac
  7439  	  verstring="$verstring_prefix$major.$revision"
  7440  
  7441  	  # Add in all the interfaces that we are compatible with.
  7442  	  loop=$revision
  7443  	  while test "$loop" -ne 0; do
  7444  	    func_arith $revision - $loop
  7445  	    iface=$func_arith_result
  7446  	    func_arith $loop - 1
  7447  	    loop=$func_arith_result
  7448  	    verstring="$verstring_prefix$major.$iface:$verstring"
  7449  	  done
  7450  
  7451  	  # Before this point, $major must not contain `.'.
  7452  	  major=.$major
  7453  	  versuffix="$major.$revision"
  7454  	  ;;
  7455  
  7456  	linux) # correct to gnu/linux during the next big refactor
  7457  	  func_arith $current - $age
  7458  	  major=.$func_arith_result
  7459  	  versuffix="$major.$age.$revision"
  7460  	  ;;
  7461  
  7462  	osf)
  7463  	  func_arith $current - $age
  7464  	  major=.$func_arith_result
  7465  	  versuffix=".$current.$age.$revision"
  7466  	  verstring="$current.$age.$revision"
  7467  
  7468  	  # Add in all the interfaces that we are compatible with.
  7469  	  loop=$age
  7470  	  while test "$loop" -ne 0; do
  7471  	    func_arith $current - $loop
  7472  	    iface=$func_arith_result
  7473  	    func_arith $loop - 1
  7474  	    loop=$func_arith_result
  7475  	    verstring="$verstring:${iface}.0"
  7476  	  done
  7477  
  7478  	  # Make executables depend on our current version.
  7479  	  func_append verstring ":${current}.0"
  7480  	  ;;
  7481  
  7482  	qnx)
  7483  	  major=".$current"
  7484  	  versuffix=".$current"
  7485  	  ;;
  7486  
  7487  	sunos)
  7488  	  major=".$current"
  7489  	  versuffix=".$current.$revision"
  7490  	  ;;
  7491  
  7492  	windows)
  7493  	  # Use '-' rather than '.', since we only want one
  7494  	  # extension on DOS 8.3 filesystems.
  7495  	  func_arith $current - $age
  7496  	  major=$func_arith_result
  7497  	  versuffix="-$major"
  7498  	  ;;
  7499  
  7500  	*)
  7501  	  func_fatal_configuration "unknown library version type \`$version_type'"
  7502  	  ;;
  7503  	esac
  7504  
  7505  	# Clear the version info if we defaulted, and they specified a release.
  7506  	if test -z "$vinfo" && test -n "$release"; then
  7507  	  major=
  7508  	  case $version_type in
  7509  	  darwin)
  7510  	    # we can't check for "0.0" in archive_cmds due to quoting
  7511  	    # problems, so we reset it completely
  7512  	    verstring=
  7513  	    ;;
  7514  	  *)
  7515  	    verstring="0.0"
  7516  	    ;;
  7517  	  esac
  7518  	  if test "$need_version" = no; then
  7519  	    versuffix=
  7520  	  else
  7521  	    versuffix=".0.0"
  7522  	  fi
  7523  	fi
  7524  
  7525  	# Remove version info from name if versioning should be avoided
  7526  	if test "$avoid_version" = yes && test "$need_version" = no; then
  7527  	  major=
  7528  	  versuffix=
  7529  	  verstring=""
  7530  	fi
  7531  
  7532  	# Check to see if the archive will have undefined symbols.
  7533  	if test "$allow_undefined" = yes; then
  7534  	  if test "$allow_undefined_flag" = unsupported; then
  7535  	    func_warning "undefined symbols not allowed in $host shared libraries"
  7536  	    build_libtool_libs=no
  7537  	    build_old_libs=yes
  7538  	  fi
  7539  	else
  7540  	  # Don't allow undefined symbols.
  7541  	  allow_undefined_flag="$no_undefined_flag"
  7542  	fi
  7543  
  7544        fi
  7545  
  7546        func_generate_dlsyms "$libname" "$libname" "yes"
  7547        func_append libobjs " $symfileobj"
  7548        test "X$libobjs" = "X " && libobjs=
  7549  
  7550        if test "$opt_mode" != relink; then
  7551  	# Remove our outputs, but don't remove object files since they
  7552  	# may have been created when compiling PIC objects.
  7553  	removelist=
  7554  	tempremovelist=`$ECHO "$output_objdir/*"`
  7555  	for p in $tempremovelist; do
  7556  	  case $p in
  7557  	    *.$objext | *.gcno)
  7558  	       ;;
  7559  	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
  7560  	       if test "X$precious_files_regex" != "X"; then
  7561  		 if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
  7562  		 then
  7563  		   continue
  7564  		 fi
  7565  	       fi
  7566  	       func_append removelist " $p"
  7567  	       ;;
  7568  	    *) ;;
  7569  	  esac
  7570  	done
  7571  	test -n "$removelist" && \
  7572  	  func_show_eval "${RM}r \$removelist"
  7573        fi
  7574  
  7575        # Now set the variables for building old libraries.
  7576        if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
  7577  	func_append oldlibs " $output_objdir/$libname.$libext"
  7578  
  7579  	# Transform .lo files to .o files.
  7580  	oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP`
  7581        fi
  7582  
  7583        # Eliminate all temporary directories.
  7584        #for path in $notinst_path; do
  7585        #	lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"`
  7586        #	deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"`
  7587        #	dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"`
  7588        #done
  7589  
  7590        if test -n "$xrpath"; then
  7591  	# If the user specified any rpath flags, then add them.
  7592  	temp_xrpath=
  7593  	for libdir in $xrpath; do
  7594  	  func_replace_sysroot "$libdir"
  7595  	  func_append temp_xrpath " -R$func_replace_sysroot_result"
  7596  	  case "$finalize_rpath " in
  7597  	  *" $libdir "*) ;;
  7598  	  *) func_append finalize_rpath " $libdir" ;;
  7599  	  esac
  7600  	done
  7601  	if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
  7602  	  dependency_libs="$temp_xrpath $dependency_libs"
  7603  	fi
  7604        fi
  7605  
  7606        # Make sure dlfiles contains only unique files that won't be dlpreopened
  7607        old_dlfiles="$dlfiles"
  7608        dlfiles=
  7609        for lib in $old_dlfiles; do
  7610  	case " $dlprefiles $dlfiles " in
  7611  	*" $lib "*) ;;
  7612  	*) func_append dlfiles " $lib" ;;
  7613  	esac
  7614        done
  7615  
  7616        # Make sure dlprefiles contains only unique files
  7617        old_dlprefiles="$dlprefiles"
  7618        dlprefiles=
  7619        for lib in $old_dlprefiles; do
  7620  	case "$dlprefiles " in
  7621  	*" $lib "*) ;;
  7622  	*) func_append dlprefiles " $lib" ;;
  7623  	esac
  7624        done
  7625  
  7626        if test "$build_libtool_libs" = yes; then
  7627  	if test -n "$rpath"; then
  7628  	  case $host in
  7629  	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*)
  7630  	    # these systems don't actually have a c library (as such)!
  7631  	    ;;
  7632  	  *-*-rhapsody* | *-*-darwin1.[012])
  7633  	    # Rhapsody C library is in the System framework
  7634  	    func_append deplibs " System.ltframework"
  7635  	    ;;
  7636  	  *-*-netbsd*)
  7637  	    # Don't link with libc until the a.out ld.so is fixed.
  7638  	    ;;
  7639  	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
  7640  	    # Do not include libc due to us having libc/libc_r.
  7641  	    ;;
  7642  	  *-*-sco3.2v5* | *-*-sco5v6*)
  7643  	    # Causes problems with __ctype
  7644  	    ;;
  7645  	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
  7646  	    # Compiler inserts libc in the correct place for threads to work
  7647  	    ;;
  7648  	  *)
  7649  	    # Add libc to deplibs on all other systems if necessary.
  7650  	    if test "$build_libtool_need_lc" = "yes"; then
  7651  	      func_append deplibs " -lc"
  7652  	    fi
  7653  	    ;;
  7654  	  esac
  7655  	fi
  7656  
  7657  	# Transform deplibs into only deplibs that can be linked in shared.
  7658  	name_save=$name
  7659  	libname_save=$libname
  7660  	release_save=$release
  7661  	versuffix_save=$versuffix
  7662  	major_save=$major
  7663  	# I'm not sure if I'm treating the release correctly.  I think
  7664  	# release should show up in the -l (ie -lgmp5) so we don't want to
  7665  	# add it in twice.  Is that correct?
  7666  	release=""
  7667  	versuffix=""
  7668  	major=""
  7669  	newdeplibs=
  7670  	droppeddeps=no
  7671  	case $deplibs_check_method in
  7672  	pass_all)
  7673  	  # Don't check for shared/static.  Everything works.
  7674  	  # This might be a little naive.  We might want to check
  7675  	  # whether the library exists or not.  But this is on
  7676  	  # osf3 & osf4 and I'm not really sure... Just
  7677  	  # implementing what was already the behavior.
  7678  	  newdeplibs=$deplibs
  7679  	  ;;
  7680  	test_compile)
  7681  	  # This code stresses the "libraries are programs" paradigm to its
  7682  	  # limits. Maybe even breaks it.  We compile a program, linking it
  7683  	  # against the deplibs as a proxy for the library.  Then we can check
  7684  	  # whether they linked in statically or dynamically with ldd.
  7685  	  $opt_dry_run || $RM conftest.c
  7686  	  cat > conftest.c <<EOF
  7687  	  int main() { return 0; }
  7688  EOF
  7689  	  $opt_dry_run || $RM conftest
  7690  	  if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
  7691  	    ldd_output=`ldd conftest`
  7692  	    for i in $deplibs; do
  7693  	      case $i in
  7694  	      -l*)
  7695  		func_stripname -l '' "$i"
  7696  		name=$func_stripname_result
  7697  		if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
  7698  		  case " $predeps $postdeps " in
  7699  		  *" $i "*)
  7700  		    func_append newdeplibs " $i"
  7701  		    i=""
  7702  		    ;;
  7703  		  esac
  7704  		fi
  7705  		if test -n "$i" ; then
  7706  		  libname=`eval "\\$ECHO \"$libname_spec\""`
  7707  		  deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
  7708  		  set dummy $deplib_matches; shift
  7709  		  deplib_match=$1
  7710  		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
  7711  		    func_append newdeplibs " $i"
  7712  		  else
  7713  		    droppeddeps=yes
  7714  		    echo
  7715  		    $ECHO "*** Warning: dynamic linker does not accept needed library $i."
  7716  		    echo "*** I have the capability to make that library automatically link in when"
  7717  		    echo "*** you link to this library.  But I can only do this if you have a"
  7718  		    echo "*** shared version of the library, which I believe you do not have"
  7719  		    echo "*** because a test_compile did reveal that the linker did not use it for"
  7720  		    echo "*** its dynamic dependency list that programs get resolved with at runtime."
  7721  		  fi
  7722  		fi
  7723  		;;
  7724  	      *)
  7725  		func_append newdeplibs " $i"
  7726  		;;
  7727  	      esac
  7728  	    done
  7729  	  else
  7730  	    # Error occurred in the first compile.  Let's try to salvage
  7731  	    # the situation: Compile a separate program for each library.
  7732  	    for i in $deplibs; do
  7733  	      case $i in
  7734  	      -l*)
  7735  		func_stripname -l '' "$i"
  7736  		name=$func_stripname_result
  7737  		$opt_dry_run || $RM conftest
  7738  		if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
  7739  		  ldd_output=`ldd conftest`
  7740  		  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
  7741  		    case " $predeps $postdeps " in
  7742  		    *" $i "*)
  7743  		      func_append newdeplibs " $i"
  7744  		      i=""
  7745  		      ;;
  7746  		    esac
  7747  		  fi
  7748  		  if test -n "$i" ; then
  7749  		    libname=`eval "\\$ECHO \"$libname_spec\""`
  7750  		    deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
  7751  		    set dummy $deplib_matches; shift
  7752  		    deplib_match=$1
  7753  		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
  7754  		      func_append newdeplibs " $i"
  7755  		    else
  7756  		      droppeddeps=yes
  7757  		      echo
  7758  		      $ECHO "*** Warning: dynamic linker does not accept needed library $i."
  7759  		      echo "*** I have the capability to make that library automatically link in when"
  7760  		      echo "*** you link to this library.  But I can only do this if you have a"
  7761  		      echo "*** shared version of the library, which you do not appear to have"
  7762  		      echo "*** because a test_compile did reveal that the linker did not use this one"
  7763  		      echo "*** as a dynamic dependency that programs can get resolved with at runtime."
  7764  		    fi
  7765  		  fi
  7766  		else
  7767  		  droppeddeps=yes
  7768  		  echo
  7769  		  $ECHO "*** Warning!  Library $i is needed by this library but I was not able to"
  7770  		  echo "*** make it link in!  You will probably need to install it or some"
  7771  		  echo "*** library that it depends on before this library will be fully"
  7772  		  echo "*** functional.  Installing it before continuing would be even better."
  7773  		fi
  7774  		;;
  7775  	      *)
  7776  		func_append newdeplibs " $i"
  7777  		;;
  7778  	      esac
  7779  	    done
  7780  	  fi
  7781  	  ;;
  7782  	file_magic*)
  7783  	  set dummy $deplibs_check_method; shift
  7784  	  file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
  7785  	  for a_deplib in $deplibs; do
  7786  	    case $a_deplib in
  7787  	    -l*)
  7788  	      func_stripname -l '' "$a_deplib"
  7789  	      name=$func_stripname_result
  7790  	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
  7791  		case " $predeps $postdeps " in
  7792  		*" $a_deplib "*)
  7793  		  func_append newdeplibs " $a_deplib"
  7794  		  a_deplib=""
  7795  		  ;;
  7796  		esac
  7797  	      fi
  7798  	      if test -n "$a_deplib" ; then
  7799  		libname=`eval "\\$ECHO \"$libname_spec\""`
  7800  		if test -n "$file_magic_glob"; then
  7801  		  libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob`
  7802  		else
  7803  		  libnameglob=$libname
  7804  		fi
  7805  		test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob`
  7806  		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
  7807  		  if test "$want_nocaseglob" = yes; then
  7808  		    shopt -s nocaseglob
  7809  		    potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
  7810  		    $nocaseglob
  7811  		  else
  7812  		    potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
  7813  		  fi
  7814  		  for potent_lib in $potential_libs; do
  7815  		      # Follow soft links.
  7816  		      if ls -lLd "$potent_lib" 2>/dev/null |
  7817  			 $GREP " -> " >/dev/null; then
  7818  			continue
  7819  		      fi
  7820  		      # The statement above tries to avoid entering an
  7821  		      # endless loop below, in case of cyclic links.
  7822  		      # We might still enter an endless loop, since a link
  7823  		      # loop can be closed while we follow links,
  7824  		      # but so what?
  7825  		      potlib="$potent_lib"
  7826  		      while test -h "$potlib" 2>/dev/null; do
  7827  			potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
  7828  			case $potliblink in
  7829  			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
  7830  			*) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";;
  7831  			esac
  7832  		      done
  7833  		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
  7834  			 $SED -e 10q |
  7835  			 $EGREP "$file_magic_regex" > /dev/null; then
  7836  			func_append newdeplibs " $a_deplib"
  7837  			a_deplib=""
  7838  			break 2
  7839  		      fi
  7840  		  done
  7841  		done
  7842  	      fi
  7843  	      if test -n "$a_deplib" ; then
  7844  		droppeddeps=yes
  7845  		echo
  7846  		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
  7847  		echo "*** I have the capability to make that library automatically link in when"
  7848  		echo "*** you link to this library.  But I can only do this if you have a"
  7849  		echo "*** shared version of the library, which you do not appear to have"
  7850  		echo "*** because I did check the linker path looking for a file starting"
  7851  		if test -z "$potlib" ; then
  7852  		  $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
  7853  		else
  7854  		  $ECHO "*** with $libname and none of the candidates passed a file format test"
  7855  		  $ECHO "*** using a file magic. Last file checked: $potlib"
  7856  		fi
  7857  	      fi
  7858  	      ;;
  7859  	    *)
  7860  	      # Add a -L argument.
  7861  	      func_append newdeplibs " $a_deplib"
  7862  	      ;;
  7863  	    esac
  7864  	  done # Gone through all deplibs.
  7865  	  ;;
  7866  	match_pattern*)
  7867  	  set dummy $deplibs_check_method; shift
  7868  	  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
  7869  	  for a_deplib in $deplibs; do
  7870  	    case $a_deplib in
  7871  	    -l*)
  7872  	      func_stripname -l '' "$a_deplib"
  7873  	      name=$func_stripname_result
  7874  	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
  7875  		case " $predeps $postdeps " in
  7876  		*" $a_deplib "*)
  7877  		  func_append newdeplibs " $a_deplib"
  7878  		  a_deplib=""
  7879  		  ;;
  7880  		esac
  7881  	      fi
  7882  	      if test -n "$a_deplib" ; then
  7883  		libname=`eval "\\$ECHO \"$libname_spec\""`
  7884  		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
  7885  		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
  7886  		  for potent_lib in $potential_libs; do
  7887  		    potlib="$potent_lib" # see symlink-check above in file_magic test
  7888  		    if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \
  7889  		       $EGREP "$match_pattern_regex" > /dev/null; then
  7890  		      func_append newdeplibs " $a_deplib"
  7891  		      a_deplib=""
  7892  		      break 2
  7893  		    fi
  7894  		  done
  7895  		done
  7896  	      fi
  7897  	      if test -n "$a_deplib" ; then
  7898  		droppeddeps=yes
  7899  		echo
  7900  		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
  7901  		echo "*** I have the capability to make that library automatically link in when"
  7902  		echo "*** you link to this library.  But I can only do this if you have a"
  7903  		echo "*** shared version of the library, which you do not appear to have"
  7904  		echo "*** because I did check the linker path looking for a file starting"
  7905  		if test -z "$potlib" ; then
  7906  		  $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
  7907  		else
  7908  		  $ECHO "*** with $libname and none of the candidates passed a file format test"
  7909  		  $ECHO "*** using a regex pattern. Last file checked: $potlib"
  7910  		fi
  7911  	      fi
  7912  	      ;;
  7913  	    *)
  7914  	      # Add a -L argument.
  7915  	      func_append newdeplibs " $a_deplib"
  7916  	      ;;
  7917  	    esac
  7918  	  done # Gone through all deplibs.
  7919  	  ;;
  7920  	none | unknown | *)
  7921  	  newdeplibs=""
  7922  	  tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'`
  7923  	  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
  7924  	    for i in $predeps $postdeps ; do
  7925  	      # can't use Xsed below, because $i might contain '/'
  7926  	      tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"`
  7927  	    done
  7928  	  fi
  7929  	  case $tmp_deplibs in
  7930  	  *[!\	\ ]*)
  7931  	    echo
  7932  	    if test "X$deplibs_check_method" = "Xnone"; then
  7933  	      echo "*** Warning: inter-library dependencies are not supported in this platform."
  7934  	    else
  7935  	      echo "*** Warning: inter-library dependencies are not known to be supported."
  7936  	    fi
  7937  	    echo "*** All declared inter-library dependencies are being dropped."
  7938  	    droppeddeps=yes
  7939  	    ;;
  7940  	  esac
  7941  	  ;;
  7942  	esac
  7943  	versuffix=$versuffix_save
  7944  	major=$major_save
  7945  	release=$release_save
  7946  	libname=$libname_save
  7947  	name=$name_save
  7948  
  7949  	case $host in
  7950  	*-*-rhapsody* | *-*-darwin1.[012])
  7951  	  # On Rhapsody replace the C library with the System framework
  7952  	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'`
  7953  	  ;;
  7954  	esac
  7955  
  7956  	if test "$droppeddeps" = yes; then
  7957  	  if test "$module" = yes; then
  7958  	    echo
  7959  	    echo "*** Warning: libtool could not satisfy all declared inter-library"
  7960  	    $ECHO "*** dependencies of module $libname.  Therefore, libtool will create"
  7961  	    echo "*** a static module, that should work as long as the dlopening"
  7962  	    echo "*** application is linked with the -dlopen flag."
  7963  	    if test -z "$global_symbol_pipe"; then
  7964  	      echo
  7965  	      echo "*** However, this would only work if libtool was able to extract symbol"
  7966  	      echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
  7967  	      echo "*** not find such a program.  So, this module is probably useless."
  7968  	      echo "*** \`nm' from GNU binutils and a full rebuild may help."
  7969  	    fi
  7970  	    if test "$build_old_libs" = no; then
  7971  	      oldlibs="$output_objdir/$libname.$libext"
  7972  	      build_libtool_libs=module
  7973  	      build_old_libs=yes
  7974  	    else
  7975  	      build_libtool_libs=no
  7976  	    fi
  7977  	  else
  7978  	    echo "*** The inter-library dependencies that have been dropped here will be"
  7979  	    echo "*** automatically added whenever a program is linked with this library"
  7980  	    echo "*** or is declared to -dlopen it."
  7981  
  7982  	    if test "$allow_undefined" = no; then
  7983  	      echo
  7984  	      echo "*** Since this library must not contain undefined symbols,"
  7985  	      echo "*** because either the platform does not support them or"
  7986  	      echo "*** it was explicitly requested with -no-undefined,"
  7987  	      echo "*** libtool will only create a static version of it."
  7988  	      if test "$build_old_libs" = no; then
  7989  		oldlibs="$output_objdir/$libname.$libext"
  7990  		build_libtool_libs=module
  7991  		build_old_libs=yes
  7992  	      else
  7993  		build_libtool_libs=no
  7994  	      fi
  7995  	    fi
  7996  	  fi
  7997  	fi
  7998  	# Done checking deplibs!
  7999  	deplibs=$newdeplibs
  8000        fi
  8001        # Time to change all our "foo.ltframework" stuff back to "-framework foo"
  8002        case $host in
  8003  	*-*-darwin*)
  8004  	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
  8005  	  new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
  8006  	  deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
  8007  	  ;;
  8008        esac
  8009  
  8010        # move library search paths that coincide with paths to not yet
  8011        # installed libraries to the beginning of the library search list
  8012        new_libs=
  8013        for path in $notinst_path; do
  8014  	case " $new_libs " in
  8015  	*" -L$path/$objdir "*) ;;
  8016  	*)
  8017  	  case " $deplibs " in
  8018  	  *" -L$path/$objdir "*)
  8019  	    func_append new_libs " -L$path/$objdir" ;;
  8020  	  esac
  8021  	  ;;
  8022  	esac
  8023        done
  8024        for deplib in $deplibs; do
  8025  	case $deplib in
  8026  	-L*)
  8027  	  case " $new_libs " in
  8028  	  *" $deplib "*) ;;
  8029  	  *) func_append new_libs " $deplib" ;;
  8030  	  esac
  8031  	  ;;
  8032  	*) func_append new_libs " $deplib" ;;
  8033  	esac
  8034        done
  8035        deplibs="$new_libs"
  8036  
  8037        # All the library-specific variables (install_libdir is set above).
  8038        library_names=
  8039        old_library=
  8040        dlname=
  8041  
  8042        # Test again, we may have decided not to build it any more
  8043        if test "$build_libtool_libs" = yes; then
  8044  	# Remove ${wl} instances when linking with ld.
  8045  	# FIXME: should test the right _cmds variable.
  8046  	case $archive_cmds in
  8047  	  *\$LD\ *) wl= ;;
  8048          esac
  8049  	if test "$hardcode_into_libs" = yes; then
  8050  	  # Hardcode the library paths
  8051  	  hardcode_libdirs=
  8052  	  dep_rpath=
  8053  	  rpath="$finalize_rpath"
  8054  	  test "$opt_mode" != relink && rpath="$compile_rpath$rpath"
  8055  	  for libdir in $rpath; do
  8056  	    if test -n "$hardcode_libdir_flag_spec"; then
  8057  	      if test -n "$hardcode_libdir_separator"; then
  8058  		func_replace_sysroot "$libdir"
  8059  		libdir=$func_replace_sysroot_result
  8060  		if test -z "$hardcode_libdirs"; then
  8061  		  hardcode_libdirs="$libdir"
  8062  		else
  8063  		  # Just accumulate the unique libdirs.
  8064  		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
  8065  		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
  8066  		    ;;
  8067  		  *)
  8068  		    func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
  8069  		    ;;
  8070  		  esac
  8071  		fi
  8072  	      else
  8073  		eval flag=\"$hardcode_libdir_flag_spec\"
  8074  		func_append dep_rpath " $flag"
  8075  	      fi
  8076  	    elif test -n "$runpath_var"; then
  8077  	      case "$perm_rpath " in
  8078  	      *" $libdir "*) ;;
  8079  	      *) func_append perm_rpath " $libdir" ;;
  8080  	      esac
  8081  	    fi
  8082  	  done
  8083  	  # Substitute the hardcoded libdirs into the rpath.
  8084  	  if test -n "$hardcode_libdir_separator" &&
  8085  	     test -n "$hardcode_libdirs"; then
  8086  	    libdir="$hardcode_libdirs"
  8087  	    eval "dep_rpath=\"$hardcode_libdir_flag_spec\""
  8088  	  fi
  8089  	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
  8090  	    # We should set the runpath_var.
  8091  	    rpath=
  8092  	    for dir in $perm_rpath; do
  8093  	      func_append rpath "$dir:"
  8094  	    done
  8095  	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
  8096  	  fi
  8097  	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
  8098  	fi
  8099  
  8100  	shlibpath="$finalize_shlibpath"
  8101  	test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
  8102  	if test -n "$shlibpath"; then
  8103  	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
  8104  	fi
  8105  
  8106  	# Get the real and link names of the library.
  8107  	eval shared_ext=\"$shrext_cmds\"
  8108  	eval library_names=\"$library_names_spec\"
  8109  	set dummy $library_names
  8110  	shift
  8111  	realname="$1"
  8112  	shift
  8113  
  8114  	if test -n "$soname_spec"; then
  8115  	  eval soname=\"$soname_spec\"
  8116  	else
  8117  	  soname="$realname"
  8118  	fi
  8119  	if test -z "$dlname"; then
  8120  	  dlname=$soname
  8121  	fi
  8122  
  8123  	lib="$output_objdir/$realname"
  8124  	linknames=
  8125  	for link
  8126  	do
  8127  	  func_append linknames " $link"
  8128  	done
  8129  
  8130  	# Use standard objects if they are pic
  8131  	test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP`
  8132  	test "X$libobjs" = "X " && libobjs=
  8133  
  8134  	delfiles=
  8135  	if test -n "$export_symbols" && test -n "$include_expsyms"; then
  8136  	  $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
  8137  	  export_symbols="$output_objdir/$libname.uexp"
  8138  	  func_append delfiles " $export_symbols"
  8139  	fi
  8140  
  8141  	orig_export_symbols=
  8142  	case $host_os in
  8143  	cygwin* | mingw* | cegcc*)
  8144  	  if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
  8145  	    # exporting using user supplied symfile
  8146  	    if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
  8147  	      # and it's NOT already a .def file. Must figure out
  8148  	      # which of the given symbols are data symbols and tag
  8149  	      # them as such. So, trigger use of export_symbols_cmds.
  8150  	      # export_symbols gets reassigned inside the "prepare
  8151  	      # the list of exported symbols" if statement, so the
  8152  	      # include_expsyms logic still works.
  8153  	      orig_export_symbols="$export_symbols"
  8154  	      export_symbols=
  8155  	      always_export_symbols=yes
  8156  	    fi
  8157  	  fi
  8158  	  ;;
  8159  	esac
  8160  
  8161  	# Prepare the list of exported symbols
  8162  	if test -z "$export_symbols"; then
  8163  	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
  8164  	    func_verbose "generating symbol list for \`$libname.la'"
  8165  	    export_symbols="$output_objdir/$libname.exp"
  8166  	    $opt_dry_run || $RM $export_symbols
  8167  	    cmds=$export_symbols_cmds
  8168  	    save_ifs="$IFS"; IFS='~'
  8169  	    for cmd1 in $cmds; do
  8170  	      IFS="$save_ifs"
  8171  	      # Take the normal branch if the nm_file_list_spec branch
  8172  	      # doesn't work or if tool conversion is not needed.
  8173  	      case $nm_file_list_spec~$to_tool_file_cmd in
  8174  		*~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*)
  8175  		  try_normal_branch=yes
  8176  		  eval cmd=\"$cmd1\"
  8177  		  func_len " $cmd"
  8178  		  len=$func_len_result
  8179  		  ;;
  8180  		*)
  8181  		  try_normal_branch=no
  8182  		  ;;
  8183  	      esac
  8184  	      if test "$try_normal_branch" = yes \
  8185  		 && { test "$len" -lt "$max_cmd_len" \
  8186  		      || test "$max_cmd_len" -le -1; }
  8187  	      then
  8188  		func_show_eval "$cmd" 'exit $?'
  8189  		skipped_export=false
  8190  	      elif test -n "$nm_file_list_spec"; then
  8191  		func_basename "$output"
  8192  		output_la=$func_basename_result
  8193  		save_libobjs=$libobjs
  8194  		save_output=$output
  8195  		output=${output_objdir}/${output_la}.nm
  8196  		func_to_tool_file "$output"
  8197  		libobjs=$nm_file_list_spec$func_to_tool_file_result
  8198  		func_append delfiles " $output"
  8199  		func_verbose "creating $NM input file list: $output"
  8200  		for obj in $save_libobjs; do
  8201  		  func_to_tool_file "$obj"
  8202  		  $ECHO "$func_to_tool_file_result"
  8203  		done > "$output"
  8204  		eval cmd=\"$cmd1\"
  8205  		func_show_eval "$cmd" 'exit $?'
  8206  		output=$save_output
  8207  		libobjs=$save_libobjs
  8208  		skipped_export=false
  8209  	      else
  8210  		# The command line is too long to execute in one step.
  8211  		func_verbose "using reloadable object file for export list..."
  8212  		skipped_export=:
  8213  		# Break out early, otherwise skipped_export may be
  8214  		# set to false by a later but shorter cmd.
  8215  		break
  8216  	      fi
  8217  	    done
  8218  	    IFS="$save_ifs"
  8219  	    if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
  8220  	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
  8221  	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
  8222  	    fi
  8223  	  fi
  8224  	fi
  8225  
  8226  	if test -n "$export_symbols" && test -n "$include_expsyms"; then
  8227  	  tmp_export_symbols="$export_symbols"
  8228  	  test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
  8229  	  $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
  8230  	fi
  8231  
  8232  	if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
  8233  	  # The given exports_symbols file has to be filtered, so filter it.
  8234  	  func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
  8235  	  # FIXME: $output_objdir/$libname.filter potentially contains lots of
  8236  	  # 's' commands which not all seds can handle. GNU sed should be fine
  8237  	  # though. Also, the filter scales superlinearly with the number of
  8238  	  # global variables. join(1) would be nice here, but unfortunately
  8239  	  # isn't a blessed tool.
  8240  	  $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
  8241  	  func_append delfiles " $export_symbols $output_objdir/$libname.filter"
  8242  	  export_symbols=$output_objdir/$libname.def
  8243  	  $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
  8244  	fi
  8245  
  8246  	tmp_deplibs=
  8247  	for test_deplib in $deplibs; do
  8248  	  case " $convenience " in
  8249  	  *" $test_deplib "*) ;;
  8250  	  *)
  8251  	    func_append tmp_deplibs " $test_deplib"
  8252  	    ;;
  8253  	  esac
  8254  	done
  8255  	deplibs="$tmp_deplibs"
  8256  
  8257  	if test -n "$convenience"; then
  8258  	  if test -n "$whole_archive_flag_spec" &&
  8259  	    test "$compiler_needs_object" = yes &&
  8260  	    test -z "$libobjs"; then
  8261  	    # extract the archives, so we have objects to list.
  8262  	    # TODO: could optimize this to just extract one archive.
  8263  	    whole_archive_flag_spec=
  8264  	  fi
  8265  	  if test -n "$whole_archive_flag_spec"; then
  8266  	    save_libobjs=$libobjs
  8267  	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
  8268  	    test "X$libobjs" = "X " && libobjs=
  8269  	  else
  8270  	    gentop="$output_objdir/${outputname}x"
  8271  	    func_append generated " $gentop"
  8272  
  8273  	    func_extract_archives $gentop $convenience
  8274  	    func_append libobjs " $func_extract_archives_result"
  8275  	    test "X$libobjs" = "X " && libobjs=
  8276  	  fi
  8277  	fi
  8278  
  8279  	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
  8280  	  eval flag=\"$thread_safe_flag_spec\"
  8281  	  func_append linker_flags " $flag"
  8282  	fi
  8283  
  8284  	# Make a backup of the uninstalled library when relinking
  8285  	if test "$opt_mode" = relink; then
  8286  	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
  8287  	fi
  8288  
  8289  	# Do each of the archive commands.
  8290  	if test "$module" = yes && test -n "$module_cmds" ; then
  8291  	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
  8292  	    eval test_cmds=\"$module_expsym_cmds\"
  8293  	    cmds=$module_expsym_cmds
  8294  	  else
  8295  	    eval test_cmds=\"$module_cmds\"
  8296  	    cmds=$module_cmds
  8297  	  fi
  8298  	else
  8299  	  if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
  8300  	    eval test_cmds=\"$archive_expsym_cmds\"
  8301  	    cmds=$archive_expsym_cmds
  8302  	  else
  8303  	    eval test_cmds=\"$archive_cmds\"
  8304  	    cmds=$archive_cmds
  8305  	  fi
  8306  	fi
  8307  
  8308  	if test "X$skipped_export" != "X:" &&
  8309  	   func_len " $test_cmds" &&
  8310  	   len=$func_len_result &&
  8311  	   test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
  8312  	  :
  8313  	else
  8314  	  # The command line is too long to link in one step, link piecewise
  8315  	  # or, if using GNU ld and skipped_export is not :, use a linker
  8316  	  # script.
  8317  
  8318  	  # Save the value of $output and $libobjs because we want to
  8319  	  # use them later.  If we have whole_archive_flag_spec, we
  8320  	  # want to use save_libobjs as it was before
  8321  	  # whole_archive_flag_spec was expanded, because we can't
  8322  	  # assume the linker understands whole_archive_flag_spec.
  8323  	  # This may have to be revisited, in case too many
  8324  	  # convenience libraries get linked in and end up exceeding
  8325  	  # the spec.
  8326  	  if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
  8327  	    save_libobjs=$libobjs
  8328  	  fi
  8329  	  save_output=$output
  8330  	  func_basename "$output"
  8331  	  output_la=$func_basename_result
  8332  
  8333  	  # Clear the reloadable object creation command queue and
  8334  	  # initialize k to one.
  8335  	  test_cmds=
  8336  	  concat_cmds=
  8337  	  objlist=
  8338  	  last_robj=
  8339  	  k=1
  8340  
  8341  	  if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
  8342  	    output=${output_objdir}/${output_la}.lnkscript
  8343  	    func_verbose "creating GNU ld script: $output"
  8344  	    echo 'INPUT (' > $output
  8345  	    for obj in $save_libobjs
  8346  	    do
  8347  	      func_to_tool_file "$obj"
  8348  	      $ECHO "$func_to_tool_file_result" >> $output
  8349  	    done
  8350  	    echo ')' >> $output
  8351  	    func_append delfiles " $output"
  8352  	    func_to_tool_file "$output"
  8353  	    output=$func_to_tool_file_result
  8354  	  elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
  8355  	    output=${output_objdir}/${output_la}.lnk
  8356  	    func_verbose "creating linker input file list: $output"
  8357  	    : > $output
  8358  	    set x $save_libobjs
  8359  	    shift
  8360  	    firstobj=
  8361  	    if test "$compiler_needs_object" = yes; then
  8362  	      firstobj="$1 "
  8363  	      shift
  8364  	    fi
  8365  	    for obj
  8366  	    do
  8367  	      func_to_tool_file "$obj"
  8368  	      $ECHO "$func_to_tool_file_result" >> $output
  8369  	    done
  8370  	    func_append delfiles " $output"
  8371  	    func_to_tool_file "$output"
  8372  	    output=$firstobj\"$file_list_spec$func_to_tool_file_result\"
  8373  	  else
  8374  	    if test -n "$save_libobjs"; then
  8375  	      func_verbose "creating reloadable object files..."
  8376  	      output=$output_objdir/$output_la-${k}.$objext
  8377  	      eval test_cmds=\"$reload_cmds\"
  8378  	      func_len " $test_cmds"
  8379  	      len0=$func_len_result
  8380  	      len=$len0
  8381  
  8382  	      # Loop over the list of objects to be linked.
  8383  	      for obj in $save_libobjs
  8384  	      do
  8385  		func_len " $obj"
  8386  		func_arith $len + $func_len_result
  8387  		len=$func_arith_result
  8388  		if test "X$objlist" = X ||
  8389  		   test "$len" -lt "$max_cmd_len"; then
  8390  		  func_append objlist " $obj"
  8391  		else
  8392  		  # The command $test_cmds is almost too long, add a
  8393  		  # command to the queue.
  8394  		  if test "$k" -eq 1 ; then
  8395  		    # The first file doesn't have a previous command to add.
  8396  		    reload_objs=$objlist
  8397  		    eval concat_cmds=\"$reload_cmds\"
  8398  		  else
  8399  		    # All subsequent reloadable object files will link in
  8400  		    # the last one created.
  8401  		    reload_objs="$objlist $last_robj"
  8402  		    eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\"
  8403  		  fi
  8404  		  last_robj=$output_objdir/$output_la-${k}.$objext
  8405  		  func_arith $k + 1
  8406  		  k=$func_arith_result
  8407  		  output=$output_objdir/$output_la-${k}.$objext
  8408  		  objlist=" $obj"
  8409  		  func_len " $last_robj"
  8410  		  func_arith $len0 + $func_len_result
  8411  		  len=$func_arith_result
  8412  		fi
  8413  	      done
  8414  	      # Handle the remaining objects by creating one last
  8415  	      # reloadable object file.  All subsequent reloadable object
  8416  	      # files will link in the last one created.
  8417  	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
  8418  	      reload_objs="$objlist $last_robj"
  8419  	      eval concat_cmds=\"\${concat_cmds}$reload_cmds\"
  8420  	      if test -n "$last_robj"; then
  8421  	        eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
  8422  	      fi
  8423  	      func_append delfiles " $output"
  8424  
  8425  	    else
  8426  	      output=
  8427  	    fi
  8428  
  8429  	    if ${skipped_export-false}; then
  8430  	      func_verbose "generating symbol list for \`$libname.la'"
  8431  	      export_symbols="$output_objdir/$libname.exp"
  8432  	      $opt_dry_run || $RM $export_symbols
  8433  	      libobjs=$output
  8434  	      # Append the command to create the export file.
  8435  	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
  8436  	      eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
  8437  	      if test -n "$last_robj"; then
  8438  		eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
  8439  	      fi
  8440  	    fi
  8441  
  8442  	    test -n "$save_libobjs" &&
  8443  	      func_verbose "creating a temporary reloadable object file: $output"
  8444  
  8445  	    # Loop through the commands generated above and execute them.
  8446  	    save_ifs="$IFS"; IFS='~'
  8447  	    for cmd in $concat_cmds; do
  8448  	      IFS="$save_ifs"
  8449  	      $opt_silent || {
  8450  		  func_quote_for_expand "$cmd"
  8451  		  eval "func_echo $func_quote_for_expand_result"
  8452  	      }
  8453  	      $opt_dry_run || eval "$cmd" || {
  8454  		lt_exit=$?
  8455  
  8456  		# Restore the uninstalled library and exit
  8457  		if test "$opt_mode" = relink; then
  8458  		  ( cd "$output_objdir" && \
  8459  		    $RM "${realname}T" && \
  8460  		    $MV "${realname}U" "$realname" )
  8461  		fi
  8462  
  8463  		exit $lt_exit
  8464  	      }
  8465  	    done
  8466  	    IFS="$save_ifs"
  8467  
  8468  	    if test -n "$export_symbols_regex" && ${skipped_export-false}; then
  8469  	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
  8470  	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
  8471  	    fi
  8472  	  fi
  8473  
  8474            if ${skipped_export-false}; then
  8475  	    if test -n "$export_symbols" && test -n "$include_expsyms"; then
  8476  	      tmp_export_symbols="$export_symbols"
  8477  	      test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
  8478  	      $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
  8479  	    fi
  8480  
  8481  	    if test -n "$orig_export_symbols"; then
  8482  	      # The given exports_symbols file has to be filtered, so filter it.
  8483  	      func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
  8484  	      # FIXME: $output_objdir/$libname.filter potentially contains lots of
  8485  	      # 's' commands which not all seds can handle. GNU sed should be fine
  8486  	      # though. Also, the filter scales superlinearly with the number of
  8487  	      # global variables. join(1) would be nice here, but unfortunately
  8488  	      # isn't a blessed tool.
  8489  	      $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
  8490  	      func_append delfiles " $export_symbols $output_objdir/$libname.filter"
  8491  	      export_symbols=$output_objdir/$libname.def
  8492  	      $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
  8493  	    fi
  8494  	  fi
  8495  
  8496  	  libobjs=$output
  8497  	  # Restore the value of output.
  8498  	  output=$save_output
  8499  
  8500  	  if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
  8501  	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
  8502  	    test "X$libobjs" = "X " && libobjs=
  8503  	  fi
  8504  	  # Expand the library linking commands again to reset the
  8505  	  # value of $libobjs for piecewise linking.
  8506  
  8507  	  # Do each of the archive commands.
  8508  	  if test "$module" = yes && test -n "$module_cmds" ; then
  8509  	    if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
  8510  	      cmds=$module_expsym_cmds
  8511  	    else
  8512  	      cmds=$module_cmds
  8513  	    fi
  8514  	  else
  8515  	    if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
  8516  	      cmds=$archive_expsym_cmds
  8517  	    else
  8518  	      cmds=$archive_cmds
  8519  	    fi
  8520  	  fi
  8521  	fi
  8522  
  8523  	if test -n "$delfiles"; then
  8524  	  # Append the command to remove temporary files to $cmds.
  8525  	  eval cmds=\"\$cmds~\$RM $delfiles\"
  8526  	fi
  8527  
  8528  	# Add any objects from preloaded convenience libraries
  8529  	if test -n "$dlprefiles"; then
  8530  	  gentop="$output_objdir/${outputname}x"
  8531  	  func_append generated " $gentop"
  8532  
  8533  	  func_extract_archives $gentop $dlprefiles
  8534  	  func_append libobjs " $func_extract_archives_result"
  8535  	  test "X$libobjs" = "X " && libobjs=
  8536  	fi
  8537  
  8538  	save_ifs="$IFS"; IFS='~'
  8539  	for cmd in $cmds; do
  8540  	  IFS="$save_ifs"
  8541  	  eval cmd=\"$cmd\"
  8542  	  $opt_silent || {
  8543  	    func_quote_for_expand "$cmd"
  8544  	    eval "func_echo $func_quote_for_expand_result"
  8545  	  }
  8546  	  $opt_dry_run || eval "$cmd" || {
  8547  	    lt_exit=$?
  8548  
  8549  	    # Restore the uninstalled library and exit
  8550  	    if test "$opt_mode" = relink; then
  8551  	      ( cd "$output_objdir" && \
  8552  	        $RM "${realname}T" && \
  8553  		$MV "${realname}U" "$realname" )
  8554  	    fi
  8555  
  8556  	    exit $lt_exit
  8557  	  }
  8558  	done
  8559  	IFS="$save_ifs"
  8560  
  8561  	# Restore the uninstalled library and exit
  8562  	if test "$opt_mode" = relink; then
  8563  	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
  8564  
  8565  	  if test -n "$convenience"; then
  8566  	    if test -z "$whole_archive_flag_spec"; then
  8567  	      func_show_eval '${RM}r "$gentop"'
  8568  	    fi
  8569  	  fi
  8570  
  8571  	  exit $EXIT_SUCCESS
  8572  	fi
  8573  
  8574  	# Create links to the real library.
  8575  	for linkname in $linknames; do
  8576  	  if test "$realname" != "$linkname"; then
  8577  	    func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
  8578  	  fi
  8579  	done
  8580  
  8581  	# If -module or -export-dynamic was specified, set the dlname.
  8582  	if test "$module" = yes || test "$export_dynamic" = yes; then
  8583  	  # On all known operating systems, these are identical.
  8584  	  dlname="$soname"
  8585  	fi
  8586        fi
  8587        ;;
  8588  
  8589      obj)
  8590        if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
  8591  	func_warning "\`-dlopen' is ignored for objects"
  8592        fi
  8593  
  8594        case " $deplibs" in
  8595        *\ -l* | *\ -L*)
  8596  	func_warning "\`-l' and \`-L' are ignored for objects" ;;
  8597        esac
  8598  
  8599        test -n "$rpath" && \
  8600  	func_warning "\`-rpath' is ignored for objects"
  8601  
  8602        test -n "$xrpath" && \
  8603  	func_warning "\`-R' is ignored for objects"
  8604  
  8605        test -n "$vinfo" && \
  8606  	func_warning "\`-version-info' is ignored for objects"
  8607  
  8608        test -n "$release" && \
  8609  	func_warning "\`-release' is ignored for objects"
  8610  
  8611        case $output in
  8612        *.lo)
  8613  	test -n "$objs$old_deplibs" && \
  8614  	  func_fatal_error "cannot build library object \`$output' from non-libtool objects"
  8615  
  8616  	libobj=$output
  8617  	func_lo2o "$libobj"
  8618  	obj=$func_lo2o_result
  8619  	;;
  8620        *)
  8621  	libobj=
  8622  	obj="$output"
  8623  	;;
  8624        esac
  8625  
  8626        # Delete the old objects.
  8627        $opt_dry_run || $RM $obj $libobj
  8628  
  8629        # Objects from convenience libraries.  This assumes
  8630        # single-version convenience libraries.  Whenever we create
  8631        # different ones for PIC/non-PIC, this we'll have to duplicate
  8632        # the extraction.
  8633        reload_conv_objs=
  8634        gentop=
  8635        # reload_cmds runs $LD directly, so let us get rid of
  8636        # -Wl from whole_archive_flag_spec and hope we can get by with
  8637        # turning comma into space..
  8638        wl=
  8639  
  8640        if test -n "$convenience"; then
  8641  	if test -n "$whole_archive_flag_spec"; then
  8642  	  eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
  8643  	  reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'`
  8644  	else
  8645  	  gentop="$output_objdir/${obj}x"
  8646  	  func_append generated " $gentop"
  8647  
  8648  	  func_extract_archives $gentop $convenience
  8649  	  reload_conv_objs="$reload_objs $func_extract_archives_result"
  8650  	fi
  8651        fi
  8652  
  8653        # If we're not building shared, we need to use non_pic_objs
  8654        test "$build_libtool_libs" != yes && libobjs="$non_pic_objects"
  8655  
  8656        # Create the old-style object.
  8657        reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
  8658  
  8659        output="$obj"
  8660        func_execute_cmds "$reload_cmds" 'exit $?'
  8661  
  8662        # Exit if we aren't doing a library object file.
  8663        if test -z "$libobj"; then
  8664  	if test -n "$gentop"; then
  8665  	  func_show_eval '${RM}r "$gentop"'
  8666  	fi
  8667  
  8668  	exit $EXIT_SUCCESS
  8669        fi
  8670  
  8671        if test "$build_libtool_libs" != yes; then
  8672  	if test -n "$gentop"; then
  8673  	  func_show_eval '${RM}r "$gentop"'
  8674  	fi
  8675  
  8676  	# Create an invalid libtool object if no PIC, so that we don't
  8677  	# accidentally link it into a program.
  8678  	# $show "echo timestamp > $libobj"
  8679  	# $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
  8680  	exit $EXIT_SUCCESS
  8681        fi
  8682  
  8683        if test -n "$pic_flag" || test "$pic_mode" != default; then
  8684  	# Only do commands if we really have different PIC objects.
  8685  	reload_objs="$libobjs $reload_conv_objs"
  8686  	output="$libobj"
  8687  	func_execute_cmds "$reload_cmds" 'exit $?'
  8688        fi
  8689  
  8690        if test -n "$gentop"; then
  8691  	func_show_eval '${RM}r "$gentop"'
  8692        fi
  8693  
  8694        exit $EXIT_SUCCESS
  8695        ;;
  8696  
  8697      prog)
  8698        case $host in
  8699  	*cygwin*) func_stripname '' '.exe' "$output"
  8700  	          output=$func_stripname_result.exe;;
  8701        esac
  8702        test -n "$vinfo" && \
  8703  	func_warning "\`-version-info' is ignored for programs"
  8704  
  8705        test -n "$release" && \
  8706  	func_warning "\`-release' is ignored for programs"
  8707  
  8708        test "$preload" = yes \
  8709          && test "$dlopen_support" = unknown \
  8710  	&& test "$dlopen_self" = unknown \
  8711  	&& test "$dlopen_self_static" = unknown && \
  8712  	  func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
  8713  
  8714        case $host in
  8715        *-*-rhapsody* | *-*-darwin1.[012])
  8716  	# On Rhapsody replace the C library is the System framework
  8717  	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'`
  8718  	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'`
  8719  	;;
  8720        esac
  8721  
  8722        case $host in
  8723        *-*-darwin*)
  8724  	# Don't allow lazy linking, it breaks C++ global constructors
  8725  	# But is supposedly fixed on 10.4 or later (yay!).
  8726  	if test "$tagname" = CXX ; then
  8727  	  case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
  8728  	    10.[0123])
  8729  	      func_append compile_command " ${wl}-bind_at_load"
  8730  	      func_append finalize_command " ${wl}-bind_at_load"
  8731  	    ;;
  8732  	  esac
  8733  	fi
  8734  	# Time to change all our "foo.ltframework" stuff back to "-framework foo"
  8735  	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
  8736  	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
  8737  	;;
  8738        esac
  8739  
  8740  
  8741        # move library search paths that coincide with paths to not yet
  8742        # installed libraries to the beginning of the library search list
  8743        new_libs=
  8744        for path in $notinst_path; do
  8745  	case " $new_libs " in
  8746  	*" -L$path/$objdir "*) ;;
  8747  	*)
  8748  	  case " $compile_deplibs " in
  8749  	  *" -L$path/$objdir "*)
  8750  	    func_append new_libs " -L$path/$objdir" ;;
  8751  	  esac
  8752  	  ;;
  8753  	esac
  8754        done
  8755        for deplib in $compile_deplibs; do
  8756  	case $deplib in
  8757  	-L*)
  8758  	  case " $new_libs " in
  8759  	  *" $deplib "*) ;;
  8760  	  *) func_append new_libs " $deplib" ;;
  8761  	  esac
  8762  	  ;;
  8763  	*) func_append new_libs " $deplib" ;;
  8764  	esac
  8765        done
  8766        compile_deplibs="$new_libs"
  8767  
  8768  
  8769        func_append compile_command " $compile_deplibs"
  8770        func_append finalize_command " $finalize_deplibs"
  8771  
  8772        if test -n "$rpath$xrpath"; then
  8773  	# If the user specified any rpath flags, then add them.
  8774  	for libdir in $rpath $xrpath; do
  8775  	  # This is the magic to use -rpath.
  8776  	  case "$finalize_rpath " in
  8777  	  *" $libdir "*) ;;
  8778  	  *) func_append finalize_rpath " $libdir" ;;
  8779  	  esac
  8780  	done
  8781        fi
  8782  
  8783        # Now hardcode the library paths
  8784        rpath=
  8785        hardcode_libdirs=
  8786        for libdir in $compile_rpath $finalize_rpath; do
  8787  	if test -n "$hardcode_libdir_flag_spec"; then
  8788  	  if test -n "$hardcode_libdir_separator"; then
  8789  	    if test -z "$hardcode_libdirs"; then
  8790  	      hardcode_libdirs="$libdir"
  8791  	    else
  8792  	      # Just accumulate the unique libdirs.
  8793  	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
  8794  	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
  8795  		;;
  8796  	      *)
  8797  		func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
  8798  		;;
  8799  	      esac
  8800  	    fi
  8801  	  else
  8802  	    eval flag=\"$hardcode_libdir_flag_spec\"
  8803  	    func_append rpath " $flag"
  8804  	  fi
  8805  	elif test -n "$runpath_var"; then
  8806  	  case "$perm_rpath " in
  8807  	  *" $libdir "*) ;;
  8808  	  *) func_append perm_rpath " $libdir" ;;
  8809  	  esac
  8810  	fi
  8811  	case $host in
  8812  	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
  8813  	  testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
  8814  	  case :$dllsearchpath: in
  8815  	  *":$libdir:"*) ;;
  8816  	  ::) dllsearchpath=$libdir;;
  8817  	  *) func_append dllsearchpath ":$libdir";;
  8818  	  esac
  8819  	  case :$dllsearchpath: in
  8820  	  *":$testbindir:"*) ;;
  8821  	  ::) dllsearchpath=$testbindir;;
  8822  	  *) func_append dllsearchpath ":$testbindir";;
  8823  	  esac
  8824  	  ;;
  8825  	esac
  8826        done
  8827        # Substitute the hardcoded libdirs into the rpath.
  8828        if test -n "$hardcode_libdir_separator" &&
  8829  	 test -n "$hardcode_libdirs"; then
  8830  	libdir="$hardcode_libdirs"
  8831  	eval rpath=\" $hardcode_libdir_flag_spec\"
  8832        fi
  8833        compile_rpath="$rpath"
  8834  
  8835        rpath=
  8836        hardcode_libdirs=
  8837        for libdir in $finalize_rpath; do
  8838  	if test -n "$hardcode_libdir_flag_spec"; then
  8839  	  if test -n "$hardcode_libdir_separator"; then
  8840  	    if test -z "$hardcode_libdirs"; then
  8841  	      hardcode_libdirs="$libdir"
  8842  	    else
  8843  	      # Just accumulate the unique libdirs.
  8844  	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
  8845  	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
  8846  		;;
  8847  	      *)
  8848  		func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
  8849  		;;
  8850  	      esac
  8851  	    fi
  8852  	  else
  8853  	    eval flag=\"$hardcode_libdir_flag_spec\"
  8854  	    func_append rpath " $flag"
  8855  	  fi
  8856  	elif test -n "$runpath_var"; then
  8857  	  case "$finalize_perm_rpath " in
  8858  	  *" $libdir "*) ;;
  8859  	  *) func_append finalize_perm_rpath " $libdir" ;;
  8860  	  esac
  8861  	fi
  8862        done
  8863        # Substitute the hardcoded libdirs into the rpath.
  8864        if test -n "$hardcode_libdir_separator" &&
  8865  	 test -n "$hardcode_libdirs"; then
  8866  	libdir="$hardcode_libdirs"
  8867  	eval rpath=\" $hardcode_libdir_flag_spec\"
  8868        fi
  8869        finalize_rpath="$rpath"
  8870  
  8871        if test -n "$libobjs" && test "$build_old_libs" = yes; then
  8872  	# Transform all the library objects into standard objects.
  8873  	compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
  8874  	finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
  8875        fi
  8876  
  8877        func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
  8878  
  8879        # template prelinking step
  8880        if test -n "$prelink_cmds"; then
  8881  	func_execute_cmds "$prelink_cmds" 'exit $?'
  8882        fi
  8883  
  8884        wrappers_required=yes
  8885        case $host in
  8886        *cegcc* | *mingw32ce*)
  8887          # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway.
  8888          wrappers_required=no
  8889          ;;
  8890        *cygwin* | *mingw* )
  8891          if test "$build_libtool_libs" != yes; then
  8892            wrappers_required=no
  8893          fi
  8894          ;;
  8895        *)
  8896          if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
  8897            wrappers_required=no
  8898          fi
  8899          ;;
  8900        esac
  8901        if test "$wrappers_required" = no; then
  8902  	# Replace the output file specification.
  8903  	compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
  8904  	link_command="$compile_command$compile_rpath"
  8905  
  8906  	# We have no uninstalled library dependencies, so finalize right now.
  8907  	exit_status=0
  8908  	func_show_eval "$link_command" 'exit_status=$?'
  8909  
  8910  	if test -n "$postlink_cmds"; then
  8911  	  func_to_tool_file "$output"
  8912  	  postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
  8913  	  func_execute_cmds "$postlink_cmds" 'exit $?'
  8914  	fi
  8915  
  8916  	# Delete the generated files.
  8917  	if test -f "$output_objdir/${outputname}S.${objext}"; then
  8918  	  func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
  8919  	fi
  8920  
  8921  	exit $exit_status
  8922        fi
  8923  
  8924        if test -n "$compile_shlibpath$finalize_shlibpath"; then
  8925  	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
  8926        fi
  8927        if test -n "$finalize_shlibpath"; then
  8928  	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
  8929        fi
  8930  
  8931        compile_var=
  8932        finalize_var=
  8933        if test -n "$runpath_var"; then
  8934  	if test -n "$perm_rpath"; then
  8935  	  # We should set the runpath_var.
  8936  	  rpath=
  8937  	  for dir in $perm_rpath; do
  8938  	    func_append rpath "$dir:"
  8939  	  done
  8940  	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
  8941  	fi
  8942  	if test -n "$finalize_perm_rpath"; then
  8943  	  # We should set the runpath_var.
  8944  	  rpath=
  8945  	  for dir in $finalize_perm_rpath; do
  8946  	    func_append rpath "$dir:"
  8947  	  done
  8948  	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
  8949  	fi
  8950        fi
  8951  
  8952        if test "$no_install" = yes; then
  8953  	# We don't need to create a wrapper script.
  8954  	link_command="$compile_var$compile_command$compile_rpath"
  8955  	# Replace the output file specification.
  8956  	link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
  8957  	# Delete the old output file.
  8958  	$opt_dry_run || $RM $output
  8959  	# Link the executable and exit
  8960  	func_show_eval "$link_command" 'exit $?'
  8961  
  8962  	if test -n "$postlink_cmds"; then
  8963  	  func_to_tool_file "$output"
  8964  	  postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
  8965  	  func_execute_cmds "$postlink_cmds" 'exit $?'
  8966  	fi
  8967  
  8968  	exit $EXIT_SUCCESS
  8969        fi
  8970  
  8971        if test "$hardcode_action" = relink; then
  8972  	# Fast installation is not supported
  8973  	link_command="$compile_var$compile_command$compile_rpath"
  8974  	relink_command="$finalize_var$finalize_command$finalize_rpath"
  8975  
  8976  	func_warning "this platform does not like uninstalled shared libraries"
  8977  	func_warning "\`$output' will be relinked during installation"
  8978        else
  8979  	if test "$fast_install" != no; then
  8980  	  link_command="$finalize_var$compile_command$finalize_rpath"
  8981  	  if test "$fast_install" = yes; then
  8982  	    relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'`
  8983  	  else
  8984  	    # fast_install is set to needless
  8985  	    relink_command=
  8986  	  fi
  8987  	else
  8988  	  link_command="$compile_var$compile_command$compile_rpath"
  8989  	  relink_command="$finalize_var$finalize_command$finalize_rpath"
  8990  	fi
  8991        fi
  8992  
  8993        # Replace the output file specification.
  8994        link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
  8995  
  8996        # Delete the old output files.
  8997        $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
  8998  
  8999        func_show_eval "$link_command" 'exit $?'
  9000  
  9001        if test -n "$postlink_cmds"; then
  9002  	func_to_tool_file "$output_objdir/$outputname"
  9003  	postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
  9004  	func_execute_cmds "$postlink_cmds" 'exit $?'
  9005        fi
  9006  
  9007        # Now create the wrapper script.
  9008        func_verbose "creating $output"
  9009  
  9010        # Quote the relink command for shipping.
  9011        if test -n "$relink_command"; then
  9012  	# Preserve any variables that may affect compiler behavior
  9013  	for var in $variables_saved_for_relink; do
  9014  	  if eval test -z \"\${$var+set}\"; then
  9015  	    relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
  9016  	  elif eval var_value=\$$var; test -z "$var_value"; then
  9017  	    relink_command="$var=; export $var; $relink_command"
  9018  	  else
  9019  	    func_quote_for_eval "$var_value"
  9020  	    relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
  9021  	  fi
  9022  	done
  9023  	relink_command="(cd `pwd`; $relink_command)"
  9024  	relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
  9025        fi
  9026  
  9027        # Only actually do things if not in dry run mode.
  9028        $opt_dry_run || {
  9029  	# win32 will think the script is a binary if it has
  9030  	# a .exe suffix, so we strip it off here.
  9031  	case $output in
  9032  	  *.exe) func_stripname '' '.exe' "$output"
  9033  	         output=$func_stripname_result ;;
  9034  	esac
  9035  	# test for cygwin because mv fails w/o .exe extensions
  9036  	case $host in
  9037  	  *cygwin*)
  9038  	    exeext=.exe
  9039  	    func_stripname '' '.exe' "$outputname"
  9040  	    outputname=$func_stripname_result ;;
  9041  	  *) exeext= ;;
  9042  	esac
  9043  	case $host in
  9044  	  *cygwin* | *mingw* )
  9045  	    func_dirname_and_basename "$output" "" "."
  9046  	    output_name=$func_basename_result
  9047  	    output_path=$func_dirname_result
  9048  	    cwrappersource="$output_path/$objdir/lt-$output_name.c"
  9049  	    cwrapper="$output_path/$output_name.exe"
  9050  	    $RM $cwrappersource $cwrapper
  9051  	    trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
  9052  
  9053  	    func_emit_cwrapperexe_src > $cwrappersource
  9054  
  9055  	    # The wrapper executable is built using the $host compiler,
  9056  	    # because it contains $host paths and files. If cross-
  9057  	    # compiling, it, like the target executable, must be
  9058  	    # executed on the $host or under an emulation environment.
  9059  	    $opt_dry_run || {
  9060  	      $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
  9061  	      $STRIP $cwrapper
  9062  	    }
  9063  
  9064  	    # Now, create the wrapper script for func_source use:
  9065  	    func_ltwrapper_scriptname $cwrapper
  9066  	    $RM $func_ltwrapper_scriptname_result
  9067  	    trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
  9068  	    $opt_dry_run || {
  9069  	      # note: this script will not be executed, so do not chmod.
  9070  	      if test "x$build" = "x$host" ; then
  9071  		$cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
  9072  	      else
  9073  		func_emit_wrapper no > $func_ltwrapper_scriptname_result
  9074  	      fi
  9075  	    }
  9076  	  ;;
  9077  	  * )
  9078  	    $RM $output
  9079  	    trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
  9080  
  9081  	    func_emit_wrapper no > $output
  9082  	    chmod +x $output
  9083  	  ;;
  9084  	esac
  9085        }
  9086        exit $EXIT_SUCCESS
  9087        ;;
  9088      esac
  9089  
  9090      # See if we need to build an old-fashioned archive.
  9091      for oldlib in $oldlibs; do
  9092  
  9093        if test "$build_libtool_libs" = convenience; then
  9094  	oldobjs="$libobjs_save $symfileobj"
  9095  	addlibs="$convenience"
  9096  	build_libtool_libs=no
  9097        else
  9098  	if test "$build_libtool_libs" = module; then
  9099  	  oldobjs="$libobjs_save"
  9100  	  build_libtool_libs=no
  9101  	else
  9102  	  oldobjs="$old_deplibs $non_pic_objects"
  9103  	  if test "$preload" = yes && test -f "$symfileobj"; then
  9104  	    func_append oldobjs " $symfileobj"
  9105  	  fi
  9106  	fi
  9107  	addlibs="$old_convenience"
  9108        fi
  9109  
  9110        if test -n "$addlibs"; then
  9111  	gentop="$output_objdir/${outputname}x"
  9112  	func_append generated " $gentop"
  9113  
  9114  	func_extract_archives $gentop $addlibs
  9115  	func_append oldobjs " $func_extract_archives_result"
  9116        fi
  9117  
  9118        # Do each command in the archive commands.
  9119        if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
  9120  	cmds=$old_archive_from_new_cmds
  9121        else
  9122  
  9123  	# Add any objects from preloaded convenience libraries
  9124  	if test -n "$dlprefiles"; then
  9125  	  gentop="$output_objdir/${outputname}x"
  9126  	  func_append generated " $gentop"
  9127  
  9128  	  func_extract_archives $gentop $dlprefiles
  9129  	  func_append oldobjs " $func_extract_archives_result"
  9130  	fi
  9131  
  9132  	# POSIX demands no paths to be encoded in archives.  We have
  9133  	# to avoid creating archives with duplicate basenames if we
  9134  	# might have to extract them afterwards, e.g., when creating a
  9135  	# static archive out of a convenience library, or when linking
  9136  	# the entirety of a libtool archive into another (currently
  9137  	# not supported by libtool).
  9138  	if (for obj in $oldobjs
  9139  	    do
  9140  	      func_basename "$obj"
  9141  	      $ECHO "$func_basename_result"
  9142  	    done | sort | sort -uc >/dev/null 2>&1); then
  9143  	  :
  9144  	else
  9145  	  echo "copying selected object files to avoid basename conflicts..."
  9146  	  gentop="$output_objdir/${outputname}x"
  9147  	  func_append generated " $gentop"
  9148  	  func_mkdir_p "$gentop"
  9149  	  save_oldobjs=$oldobjs
  9150  	  oldobjs=
  9151  	  counter=1
  9152  	  for obj in $save_oldobjs
  9153  	  do
  9154  	    func_basename "$obj"
  9155  	    objbase="$func_basename_result"
  9156  	    case " $oldobjs " in
  9157  	    " ") oldobjs=$obj ;;
  9158  	    *[\ /]"$objbase "*)
  9159  	      while :; do
  9160  		# Make sure we don't pick an alternate name that also
  9161  		# overlaps.
  9162  		newobj=lt$counter-$objbase
  9163  		func_arith $counter + 1
  9164  		counter=$func_arith_result
  9165  		case " $oldobjs " in
  9166  		*[\ /]"$newobj "*) ;;
  9167  		*) if test ! -f "$gentop/$newobj"; then break; fi ;;
  9168  		esac
  9169  	      done
  9170  	      func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
  9171  	      func_append oldobjs " $gentop/$newobj"
  9172  	      ;;
  9173  	    *) func_append oldobjs " $obj" ;;
  9174  	    esac
  9175  	  done
  9176  	fi
  9177  	func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
  9178  	tool_oldlib=$func_to_tool_file_result
  9179  	eval cmds=\"$old_archive_cmds\"
  9180  
  9181  	func_len " $cmds"
  9182  	len=$func_len_result
  9183  	if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
  9184  	  cmds=$old_archive_cmds
  9185  	elif test -n "$archiver_list_spec"; then
  9186  	  func_verbose "using command file archive linking..."
  9187  	  for obj in $oldobjs
  9188  	  do
  9189  	    func_to_tool_file "$obj"
  9190  	    $ECHO "$func_to_tool_file_result"
  9191  	  done > $output_objdir/$libname.libcmd
  9192  	  func_to_tool_file "$output_objdir/$libname.libcmd"
  9193  	  oldobjs=" $archiver_list_spec$func_to_tool_file_result"
  9194  	  cmds=$old_archive_cmds
  9195  	else
  9196  	  # the command line is too long to link in one step, link in parts
  9197  	  func_verbose "using piecewise archive linking..."
  9198  	  save_RANLIB=$RANLIB
  9199  	  RANLIB=:
  9200  	  objlist=
  9201  	  concat_cmds=
  9202  	  save_oldobjs=$oldobjs
  9203  	  oldobjs=
  9204  	  # Is there a better way of finding the last object in the list?
  9205  	  for obj in $save_oldobjs
  9206  	  do
  9207  	    last_oldobj=$obj
  9208  	  done
  9209  	  eval test_cmds=\"$old_archive_cmds\"
  9210  	  func_len " $test_cmds"
  9211  	  len0=$func_len_result
  9212  	  len=$len0
  9213  	  for obj in $save_oldobjs
  9214  	  do
  9215  	    func_len " $obj"
  9216  	    func_arith $len + $func_len_result
  9217  	    len=$func_arith_result
  9218  	    func_append objlist " $obj"
  9219  	    if test "$len" -lt "$max_cmd_len"; then
  9220  	      :
  9221  	    else
  9222  	      # the above command should be used before it gets too long
  9223  	      oldobjs=$objlist
  9224  	      if test "$obj" = "$last_oldobj" ; then
  9225  		RANLIB=$save_RANLIB
  9226  	      fi
  9227  	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
  9228  	      eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
  9229  	      objlist=
  9230  	      len=$len0
  9231  	    fi
  9232  	  done
  9233  	  RANLIB=$save_RANLIB
  9234  	  oldobjs=$objlist
  9235  	  if test "X$oldobjs" = "X" ; then
  9236  	    eval cmds=\"\$concat_cmds\"
  9237  	  else
  9238  	    eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
  9239  	  fi
  9240  	fi
  9241        fi
  9242        func_execute_cmds "$cmds" 'exit $?'
  9243      done
  9244  
  9245      test -n "$generated" && \
  9246        func_show_eval "${RM}r$generated"
  9247  
  9248      # Now create the libtool archive.
  9249      case $output in
  9250      *.la)
  9251        old_library=
  9252        test "$build_old_libs" = yes && old_library="$libname.$libext"
  9253        func_verbose "creating $output"
  9254  
  9255        # Preserve any variables that may affect compiler behavior
  9256        for var in $variables_saved_for_relink; do
  9257  	if eval test -z \"\${$var+set}\"; then
  9258  	  relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
  9259  	elif eval var_value=\$$var; test -z "$var_value"; then
  9260  	  relink_command="$var=; export $var; $relink_command"
  9261  	else
  9262  	  func_quote_for_eval "$var_value"
  9263  	  relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
  9264  	fi
  9265        done
  9266        # Quote the link command for shipping.
  9267        relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
  9268        relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
  9269        if test "$hardcode_automatic" = yes ; then
  9270  	relink_command=
  9271        fi
  9272  
  9273        # Only create the output if not a dry run.
  9274        $opt_dry_run || {
  9275  	for installed in no yes; do
  9276  	  if test "$installed" = yes; then
  9277  	    if test -z "$install_libdir"; then
  9278  	      break
  9279  	    fi
  9280  	    output="$output_objdir/$outputname"i
  9281  	    # Replace all uninstalled libtool libraries with the installed ones
  9282  	    newdependency_libs=
  9283  	    for deplib in $dependency_libs; do
  9284  	      case $deplib in
  9285  	      *.la)
  9286  		func_basename "$deplib"
  9287  		name="$func_basename_result"
  9288  		func_resolve_sysroot "$deplib"
  9289  		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
  9290  		test -z "$libdir" && \
  9291  		  func_fatal_error "\`$deplib' is not a valid libtool archive"
  9292  		func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name"
  9293  		;;
  9294  	      -L*)
  9295  		func_stripname -L '' "$deplib"
  9296  		func_replace_sysroot "$func_stripname_result"
  9297  		func_append newdependency_libs " -L$func_replace_sysroot_result"
  9298  		;;
  9299  	      -R*)
  9300  		func_stripname -R '' "$deplib"
  9301  		func_replace_sysroot "$func_stripname_result"
  9302  		func_append newdependency_libs " -R$func_replace_sysroot_result"
  9303  		;;
  9304  	      *) func_append newdependency_libs " $deplib" ;;
  9305  	      esac
  9306  	    done
  9307  	    dependency_libs="$newdependency_libs"
  9308  	    newdlfiles=
  9309  
  9310  	    for lib in $dlfiles; do
  9311  	      case $lib in
  9312  	      *.la)
  9313  	        func_basename "$lib"
  9314  		name="$func_basename_result"
  9315  		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
  9316  		test -z "$libdir" && \
  9317  		  func_fatal_error "\`$lib' is not a valid libtool archive"
  9318  		func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name"
  9319  		;;
  9320  	      *) func_append newdlfiles " $lib" ;;
  9321  	      esac
  9322  	    done
  9323  	    dlfiles="$newdlfiles"
  9324  	    newdlprefiles=
  9325  	    for lib in $dlprefiles; do
  9326  	      case $lib in
  9327  	      *.la)
  9328  		# Only pass preopened files to the pseudo-archive (for
  9329  		# eventual linking with the app. that links it) if we
  9330  		# didn't already link the preopened objects directly into
  9331  		# the library:
  9332  		func_basename "$lib"
  9333  		name="$func_basename_result"
  9334  		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
  9335  		test -z "$libdir" && \
  9336  		  func_fatal_error "\`$lib' is not a valid libtool archive"
  9337  		func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name"
  9338  		;;
  9339  	      esac
  9340  	    done
  9341  	    dlprefiles="$newdlprefiles"
  9342  	  else
  9343  	    newdlfiles=
  9344  	    for lib in $dlfiles; do
  9345  	      case $lib in
  9346  		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
  9347  		*) abs=`pwd`"/$lib" ;;
  9348  	      esac
  9349  	      func_append newdlfiles " $abs"
  9350  	    done
  9351  	    dlfiles="$newdlfiles"
  9352  	    newdlprefiles=
  9353  	    for lib in $dlprefiles; do
  9354  	      case $lib in
  9355  		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
  9356  		*) abs=`pwd`"/$lib" ;;
  9357  	      esac
  9358  	      func_append newdlprefiles " $abs"
  9359  	    done
  9360  	    dlprefiles="$newdlprefiles"
  9361  	  fi
  9362  	  $RM $output
  9363  	  # place dlname in correct position for cygwin
  9364  	  # In fact, it would be nice if we could use this code for all target
  9365  	  # systems that can't hard-code library paths into their executables
  9366  	  # and that have no shared library path variable independent of PATH,
  9367  	  # but it turns out we can't easily determine that from inspecting
  9368  	  # libtool variables, so we have to hard-code the OSs to which it
  9369  	  # applies here; at the moment, that means platforms that use the PE
  9370  	  # object format with DLL files.  See the long comment at the top of
  9371  	  # tests/bindir.at for full details.
  9372  	  tdlname=$dlname
  9373  	  case $host,$output,$installed,$module,$dlname in
  9374  	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll)
  9375  	      # If a -bindir argument was supplied, place the dll there.
  9376  	      if test "x$bindir" != x ;
  9377  	      then
  9378  		func_relative_path "$install_libdir" "$bindir"
  9379  		tdlname=$func_relative_path_result$dlname
  9380  	      else
  9381  		# Otherwise fall back on heuristic.
  9382  		tdlname=../bin/$dlname
  9383  	      fi
  9384  	      ;;
  9385  	  esac
  9386  	  $ECHO > $output "\
  9387  # $outputname - a libtool library file
  9388  # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
  9389  #
  9390  # Please DO NOT delete this file!
  9391  # It is necessary for linking the library.
  9392  
  9393  # The name that we can dlopen(3).
  9394  dlname='$tdlname'
  9395  
  9396  # Names of this library.
  9397  library_names='$library_names'
  9398  
  9399  # The name of the static archive.
  9400  old_library='$old_library'
  9401  
  9402  # Linker flags that can not go in dependency_libs.
  9403  inherited_linker_flags='$new_inherited_linker_flags'
  9404  
  9405  # Libraries that this one depends upon.
  9406  dependency_libs='$dependency_libs'
  9407  
  9408  # Names of additional weak libraries provided by this library
  9409  weak_library_names='$weak_libs'
  9410  
  9411  # Version information for $libname.
  9412  current=$current
  9413  age=$age
  9414  revision=$revision
  9415  
  9416  # Is this an already installed library?
  9417  installed=$installed
  9418  
  9419  # Should we warn about portability when linking against -modules?
  9420  shouldnotlink=$module
  9421  
  9422  # Files to dlopen/dlpreopen
  9423  dlopen='$dlfiles'
  9424  dlpreopen='$dlprefiles'
  9425  
  9426  # Directory that this library needs to be installed in:
  9427  libdir='$install_libdir'"
  9428  	  if test "$installed" = no && test "$need_relink" = yes; then
  9429  	    $ECHO >> $output "\
  9430  relink_command=\"$relink_command\""
  9431  	  fi
  9432  	done
  9433        }
  9434  
  9435        # Do a symbolic link so that the libtool archive can be found in
  9436        # LD_LIBRARY_PATH before the program is installed.
  9437        func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
  9438        ;;
  9439      esac
  9440      exit $EXIT_SUCCESS
  9441  }
  9442  
  9443  { test "$opt_mode" = link || test "$opt_mode" = relink; } &&
  9444      func_mode_link ${1+"$@"}
  9445  
  9446  
  9447  # func_mode_uninstall arg...
  9448  func_mode_uninstall ()
  9449  {
  9450      $opt_debug
  9451      RM="$nonopt"
  9452      files=
  9453      rmforce=
  9454      exit_status=0
  9455  
  9456      # This variable tells wrapper scripts just to set variables rather
  9457      # than running their programs.
  9458      libtool_install_magic="$magic"
  9459  
  9460      for arg
  9461      do
  9462        case $arg in
  9463        -f) func_append RM " $arg"; rmforce=yes ;;
  9464        -*) func_append RM " $arg" ;;
  9465        *) func_append files " $arg" ;;
  9466        esac
  9467      done
  9468  
  9469      test -z "$RM" && \
  9470        func_fatal_help "you must specify an RM program"
  9471  
  9472      rmdirs=
  9473  
  9474      for file in $files; do
  9475        func_dirname "$file" "" "."
  9476        dir="$func_dirname_result"
  9477        if test "X$dir" = X.; then
  9478  	odir="$objdir"
  9479        else
  9480  	odir="$dir/$objdir"
  9481        fi
  9482        func_basename "$file"
  9483        name="$func_basename_result"
  9484        test "$opt_mode" = uninstall && odir="$dir"
  9485  
  9486        # Remember odir for removal later, being careful to avoid duplicates
  9487        if test "$opt_mode" = clean; then
  9488  	case " $rmdirs " in
  9489  	  *" $odir "*) ;;
  9490  	  *) func_append rmdirs " $odir" ;;
  9491  	esac
  9492        fi
  9493  
  9494        # Don't error if the file doesn't exist and rm -f was used.
  9495        if { test -L "$file"; } >/dev/null 2>&1 ||
  9496  	 { test -h "$file"; } >/dev/null 2>&1 ||
  9497  	 test -f "$file"; then
  9498  	:
  9499        elif test -d "$file"; then
  9500  	exit_status=1
  9501  	continue
  9502        elif test "$rmforce" = yes; then
  9503  	continue
  9504        fi
  9505  
  9506        rmfiles="$file"
  9507  
  9508        case $name in
  9509        *.la)
  9510  	# Possibly a libtool archive, so verify it.
  9511  	if func_lalib_p "$file"; then
  9512  	  func_source $dir/$name
  9513  
  9514  	  # Delete the libtool libraries and symlinks.
  9515  	  for n in $library_names; do
  9516  	    func_append rmfiles " $odir/$n"
  9517  	  done
  9518  	  test -n "$old_library" && func_append rmfiles " $odir/$old_library"
  9519  
  9520  	  case "$opt_mode" in
  9521  	  clean)
  9522  	    case " $library_names " in
  9523  	    *" $dlname "*) ;;
  9524  	    *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;;
  9525  	    esac
  9526  	    test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i"
  9527  	    ;;
  9528  	  uninstall)
  9529  	    if test -n "$library_names"; then
  9530  	      # Do each command in the postuninstall commands.
  9531  	      func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
  9532  	    fi
  9533  
  9534  	    if test -n "$old_library"; then
  9535  	      # Do each command in the old_postuninstall commands.
  9536  	      func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
  9537  	    fi
  9538  	    # FIXME: should reinstall the best remaining shared library.
  9539  	    ;;
  9540  	  esac
  9541  	fi
  9542  	;;
  9543  
  9544        *.lo)
  9545  	# Possibly a libtool object, so verify it.
  9546  	if func_lalib_p "$file"; then
  9547  
  9548  	  # Read the .lo file
  9549  	  func_source $dir/$name
  9550  
  9551  	  # Add PIC object to the list of files to remove.
  9552  	  if test -n "$pic_object" &&
  9553  	     test "$pic_object" != none; then
  9554  	    func_append rmfiles " $dir/$pic_object"
  9555  	  fi
  9556  
  9557  	  # Add non-PIC object to the list of files to remove.
  9558  	  if test -n "$non_pic_object" &&
  9559  	     test "$non_pic_object" != none; then
  9560  	    func_append rmfiles " $dir/$non_pic_object"
  9561  	  fi
  9562  	fi
  9563  	;;
  9564  
  9565        *)
  9566  	if test "$opt_mode" = clean ; then
  9567  	  noexename=$name
  9568  	  case $file in
  9569  	  *.exe)
  9570  	    func_stripname '' '.exe' "$file"
  9571  	    file=$func_stripname_result
  9572  	    func_stripname '' '.exe' "$name"
  9573  	    noexename=$func_stripname_result
  9574  	    # $file with .exe has already been added to rmfiles,
  9575  	    # add $file without .exe
  9576  	    func_append rmfiles " $file"
  9577  	    ;;
  9578  	  esac
  9579  	  # Do a test to see if this is a libtool program.
  9580  	  if func_ltwrapper_p "$file"; then
  9581  	    if func_ltwrapper_executable_p "$file"; then
  9582  	      func_ltwrapper_scriptname "$file"
  9583  	      relink_command=
  9584  	      func_source $func_ltwrapper_scriptname_result
  9585  	      func_append rmfiles " $func_ltwrapper_scriptname_result"
  9586  	    else
  9587  	      relink_command=
  9588  	      func_source $dir/$noexename
  9589  	    fi
  9590  
  9591  	    # note $name still contains .exe if it was in $file originally
  9592  	    # as does the version of $file that was added into $rmfiles
  9593  	    func_append rmfiles " $odir/$name $odir/${name}S.${objext}"
  9594  	    if test "$fast_install" = yes && test -n "$relink_command"; then
  9595  	      func_append rmfiles " $odir/lt-$name"
  9596  	    fi
  9597  	    if test "X$noexename" != "X$name" ; then
  9598  	      func_append rmfiles " $odir/lt-${noexename}.c"
  9599  	    fi
  9600  	  fi
  9601  	fi
  9602  	;;
  9603        esac
  9604        func_show_eval "$RM $rmfiles" 'exit_status=1'
  9605      done
  9606  
  9607      # Try to remove the ${objdir}s in the directories where we deleted files
  9608      for dir in $rmdirs; do
  9609        if test -d "$dir"; then
  9610  	func_show_eval "rmdir $dir >/dev/null 2>&1"
  9611        fi
  9612      done
  9613  
  9614      exit $exit_status
  9615  }
  9616  
  9617  { test "$opt_mode" = uninstall || test "$opt_mode" = clean; } &&
  9618      func_mode_uninstall ${1+"$@"}
  9619  
  9620  test -z "$opt_mode" && {
  9621    help="$generic_help"
  9622    func_fatal_help "you must specify a MODE"
  9623  }
  9624  
  9625  test -z "$exec_cmd" && \
  9626    func_fatal_help "invalid operation mode \`$opt_mode'"
  9627  
  9628  if test -n "$exec_cmd"; then
  9629    eval exec "$exec_cmd"
  9630    exit $EXIT_FAILURE
  9631  fi
  9632  
  9633  exit $exit_status
  9634  
  9635  
  9636  # The TAGs below are defined such that we never get into a situation
  9637  # in which we disable both kinds of libraries.  Given conflicting
  9638  # choices, we go for a static library, that is the most portable,
  9639  # since we can't tell whether shared libraries were disabled because
  9640  # the user asked for that or because the platform doesn't support
  9641  # them.  This is particularly important on AIX, because we don't
  9642  # support having both static and shared libraries enabled at the same
  9643  # time on that platform, so we default to a shared-only configuration.
  9644  # If a disable-shared tag is given, we'll fallback to a static-only
  9645  # configuration.  But we'll never go from static-only to shared-only.
  9646  
  9647  # ### BEGIN LIBTOOL TAG CONFIG: disable-shared
  9648  build_libtool_libs=no
  9649  build_old_libs=yes
  9650  # ### END LIBTOOL TAG CONFIG: disable-shared
  9651  
  9652  # ### BEGIN LIBTOOL TAG CONFIG: disable-static
  9653  build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
  9654  # ### END LIBTOOL TAG CONFIG: disable-static
  9655  
  9656  # Local Variables:
  9657  # mode:shell-script
  9658  # sh-indentation:2
  9659  # End:
  9660  # vi:sw=2
  9661