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