Home | History | Annotate | Line # | Download | only in build-aux
      1      1.1  mrg #!/bin/sh
      2      1.1  mrg ## DO NOT EDIT - This file generated from ./build-aux/ltmain.in
      3  1.1.1.2  mrg ##               by inline-source v2019-02-19.15
      4      1.1  mrg 
      5  1.1.1.2  mrg # libtool (GNU libtool) 2.4.7
      6      1.1  mrg # Provide generalized library-building support services.
      7      1.1  mrg # Written by Gordon Matzigkeit <gord (at] gnu.ai.mit.edu>, 1996
      8      1.1  mrg 
      9  1.1.1.2  mrg # Copyright (C) 1996-2019, 2021-2022 Free Software Foundation, Inc.
     10      1.1  mrg # This is free software; see the source for copying conditions.  There is NO
     11      1.1  mrg # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
     12      1.1  mrg 
     13      1.1  mrg # GNU Libtool is free software; you can redistribute it and/or modify
     14      1.1  mrg # it under the terms of the GNU General Public License as published by
     15      1.1  mrg # the Free Software Foundation; either version 2 of the License, or
     16      1.1  mrg # (at your option) any later version.
     17      1.1  mrg #
     18      1.1  mrg # As a special exception to the GNU General Public License,
     19      1.1  mrg # if you distribute this file as part of a program or library that
     20      1.1  mrg # is built using GNU Libtool, you may include this file under the
     21      1.1  mrg # same distribution terms that you use for the rest of that program.
     22      1.1  mrg #
     23      1.1  mrg # GNU Libtool is distributed in the hope that it will be useful, but
     24      1.1  mrg # WITHOUT ANY WARRANTY; without even the implied warranty of
     25      1.1  mrg # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     26      1.1  mrg # General Public License for more details.
     27      1.1  mrg #
     28      1.1  mrg # You should have received a copy of the GNU General Public License
     29      1.1  mrg # along with this program.  If not, see <http://www.gnu.org/licenses/>.
     30      1.1  mrg 
     31      1.1  mrg 
     32      1.1  mrg PROGRAM=libtool
     33      1.1  mrg PACKAGE=libtool
     34  1.1.1.2  mrg VERSION=2.4.7
     35  1.1.1.2  mrg package_revision=2.4.7
     36      1.1  mrg 
     37      1.1  mrg 
     38      1.1  mrg ## ------ ##
     39      1.1  mrg ## Usage. ##
     40      1.1  mrg ## ------ ##
     41      1.1  mrg 
     42      1.1  mrg # Run './libtool --help' for help with using this script from the
     43      1.1  mrg # command line.
     44      1.1  mrg 
     45      1.1  mrg 
     46      1.1  mrg ## ------------------------------- ##
     47      1.1  mrg ## User overridable command paths. ##
     48      1.1  mrg ## ------------------------------- ##
     49      1.1  mrg 
     50      1.1  mrg # After configure completes, it has a better idea of some of the
     51      1.1  mrg # shell tools we need than the defaults used by the functions shared
     52      1.1  mrg # with bootstrap, so set those here where they can still be over-
     53      1.1  mrg # ridden by the user, but otherwise take precedence.
     54      1.1  mrg 
     55      1.1  mrg : ${AUTOCONF="autoconf"}
     56      1.1  mrg : ${AUTOMAKE="automake"}
     57      1.1  mrg 
     58      1.1  mrg 
     59      1.1  mrg ## -------------------------- ##
     60      1.1  mrg ## Source external libraries. ##
     61      1.1  mrg ## -------------------------- ##
     62      1.1  mrg 
     63      1.1  mrg # Much of our low-level functionality needs to be sourced from external
     64      1.1  mrg # libraries, which are installed to $pkgauxdir.
     65      1.1  mrg 
     66      1.1  mrg # Set a version string for this script.
     67  1.1.1.2  mrg scriptversion=2019-02-19.15; # UTC
     68      1.1  mrg 
     69      1.1  mrg # General shell script boiler plate, and helper functions.
     70      1.1  mrg # Written by Gary V. Vaughan, 2004
     71      1.1  mrg 
     72  1.1.1.2  mrg # This is free software.  There is NO warranty; not even for
     73  1.1.1.2  mrg # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
     74  1.1.1.2  mrg #
     75  1.1.1.2  mrg # Copyright (C) 2004-2019, 2021 Bootstrap Authors
     76  1.1.1.2  mrg #
     77  1.1.1.2  mrg # This file is dual licensed under the terms of the MIT license
     78  1.1.1.2  mrg # <https://opensource.org/license/MIT>, and GPL version 2 or later
     79  1.1.1.2  mrg # <http://www.gnu.org/licenses/gpl-2.0.html>.  You must apply one of
     80  1.1.1.2  mrg # these licenses when using or redistributing this software or any of
     81  1.1.1.2  mrg # the files within it.  See the URLs above, or the file `LICENSE`
     82  1.1.1.2  mrg # included in the Bootstrap distribution for the full license texts.
     83      1.1  mrg 
     84  1.1.1.2  mrg # Please report bugs or propose patches to:
     85  1.1.1.2  mrg # <https://github.com/gnulib-modules/bootstrap/issues>
     86      1.1  mrg 
     87      1.1  mrg 
     88      1.1  mrg ## ------ ##
     89      1.1  mrg ## Usage. ##
     90      1.1  mrg ## ------ ##
     91      1.1  mrg 
     92      1.1  mrg # Evaluate this file near the top of your script to gain access to
     93      1.1  mrg # the functions and variables defined here:
     94      1.1  mrg #
     95      1.1  mrg #   . `echo "$0" | ${SED-sed} 's|[^/]*$||'`/build-aux/funclib.sh
     96      1.1  mrg #
     97      1.1  mrg # If you need to override any of the default environment variable
     98      1.1  mrg # settings, do that before evaluating this file.
     99      1.1  mrg 
    100      1.1  mrg 
    101      1.1  mrg ## -------------------- ##
    102      1.1  mrg ## Shell normalisation. ##
    103      1.1  mrg ## -------------------- ##
    104      1.1  mrg 
    105      1.1  mrg # Some shells need a little help to be as Bourne compatible as possible.
    106      1.1  mrg # Before doing anything else, make sure all that help has been provided!
    107      1.1  mrg 
    108      1.1  mrg DUALCASE=1; export DUALCASE # for MKS sh
    109      1.1  mrg if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
    110      1.1  mrg   emulate sh
    111      1.1  mrg   NULLCMD=:
    112      1.1  mrg   # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
    113      1.1  mrg   # is contrary to our usage.  Disable this feature.
    114      1.1  mrg   alias -g '${1+"$@"}'='"$@"'
    115      1.1  mrg   setopt NO_GLOB_SUBST
    116      1.1  mrg else
    117      1.1  mrg   case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac
    118      1.1  mrg fi
    119      1.1  mrg 
    120      1.1  mrg # NLS nuisances: We save the old values in case they are required later.
    121      1.1  mrg _G_user_locale=
    122      1.1  mrg _G_safe_locale=
    123      1.1  mrg for _G_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
    124      1.1  mrg do
    125      1.1  mrg   eval "if test set = \"\${$_G_var+set}\"; then
    126      1.1  mrg           save_$_G_var=\$$_G_var
    127      1.1  mrg           $_G_var=C
    128      1.1  mrg 	  export $_G_var
    129      1.1  mrg 	  _G_user_locale=\"$_G_var=\\\$save_\$_G_var; \$_G_user_locale\"
    130      1.1  mrg 	  _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\"
    131      1.1  mrg 	fi"
    132      1.1  mrg done
    133  1.1.1.2  mrg # These NLS vars are set unconditionally (bootstrap issue #24).  Unset those
    134  1.1.1.2  mrg # in case the environment reset is needed later and the $save_* variant is not
    135  1.1.1.2  mrg # defined (see the code above).
    136  1.1.1.2  mrg LC_ALL=C
    137  1.1.1.2  mrg LANGUAGE=C
    138  1.1.1.2  mrg export LANGUAGE LC_ALL
    139      1.1  mrg 
    140      1.1  mrg # Make sure IFS has a sensible default
    141      1.1  mrg sp=' '
    142      1.1  mrg nl='
    143      1.1  mrg '
    144      1.1  mrg IFS="$sp	$nl"
    145      1.1  mrg 
    146      1.1  mrg # There are apparently some retarded systems that use ';' as a PATH separator!
    147      1.1  mrg if test "${PATH_SEPARATOR+set}" != set; then
    148      1.1  mrg   PATH_SEPARATOR=:
    149      1.1  mrg   (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
    150      1.1  mrg     (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
    151      1.1  mrg       PATH_SEPARATOR=';'
    152      1.1  mrg   }
    153      1.1  mrg fi
    154      1.1  mrg 
    155      1.1  mrg 
    156  1.1.1.2  mrg # func_unset VAR
    157  1.1.1.2  mrg # --------------
    158  1.1.1.2  mrg # Portably unset VAR.
    159  1.1.1.2  mrg # In some shells, an 'unset VAR' statement leaves a non-zero return
    160  1.1.1.2  mrg # status if VAR is already unset, which might be problematic if the
    161  1.1.1.2  mrg # statement is used at the end of a function (thus poisoning its return
    162  1.1.1.2  mrg # value) or when 'set -e' is active (causing even a spurious abort of
    163  1.1.1.2  mrg # the script in this case).
    164  1.1.1.2  mrg func_unset ()
    165  1.1.1.2  mrg {
    166  1.1.1.2  mrg     { eval $1=; (eval unset $1) >/dev/null 2>&1 && eval unset $1 || : ; }
    167  1.1.1.2  mrg }
    168  1.1.1.2  mrg 
    169  1.1.1.2  mrg 
    170  1.1.1.2  mrg # Make sure CDPATH doesn't cause `cd` commands to output the target dir.
    171  1.1.1.2  mrg func_unset CDPATH
    172  1.1.1.2  mrg 
    173  1.1.1.2  mrg # Make sure ${,E,F}GREP behave sanely.
    174  1.1.1.2  mrg func_unset GREP_OPTIONS
    175  1.1.1.2  mrg 
    176      1.1  mrg 
    177      1.1  mrg ## ------------------------- ##
    178      1.1  mrg ## Locate command utilities. ##
    179      1.1  mrg ## ------------------------- ##
    180      1.1  mrg 
    181      1.1  mrg 
    182      1.1  mrg # func_executable_p FILE
    183      1.1  mrg # ----------------------
    184      1.1  mrg # Check that FILE is an executable regular file.
    185      1.1  mrg func_executable_p ()
    186      1.1  mrg {
    187      1.1  mrg     test -f "$1" && test -x "$1"
    188      1.1  mrg }
    189      1.1  mrg 
    190      1.1  mrg 
    191      1.1  mrg # func_path_progs PROGS_LIST CHECK_FUNC [PATH]
    192      1.1  mrg # --------------------------------------------
    193      1.1  mrg # Search for either a program that responds to --version with output
    194      1.1  mrg # containing "GNU", or else returned by CHECK_FUNC otherwise, by
    195      1.1  mrg # trying all the directories in PATH with each of the elements of
    196      1.1  mrg # PROGS_LIST.
    197      1.1  mrg #
    198      1.1  mrg # CHECK_FUNC should accept the path to a candidate program, and
    199      1.1  mrg # set $func_check_prog_result if it truncates its output less than
    200      1.1  mrg # $_G_path_prog_max characters.
    201      1.1  mrg func_path_progs ()
    202      1.1  mrg {
    203      1.1  mrg     _G_progs_list=$1
    204      1.1  mrg     _G_check_func=$2
    205      1.1  mrg     _G_PATH=${3-"$PATH"}
    206      1.1  mrg 
    207      1.1  mrg     _G_path_prog_max=0
    208      1.1  mrg     _G_path_prog_found=false
    209      1.1  mrg     _G_save_IFS=$IFS; IFS=${PATH_SEPARATOR-:}
    210      1.1  mrg     for _G_dir in $_G_PATH; do
    211      1.1  mrg       IFS=$_G_save_IFS
    212      1.1  mrg       test -z "$_G_dir" && _G_dir=.
    213      1.1  mrg       for _G_prog_name in $_G_progs_list; do
    214      1.1  mrg         for _exeext in '' .EXE; do
    215      1.1  mrg           _G_path_prog=$_G_dir/$_G_prog_name$_exeext
    216      1.1  mrg           func_executable_p "$_G_path_prog" || continue
    217      1.1  mrg           case `"$_G_path_prog" --version 2>&1` in
    218      1.1  mrg             *GNU*) func_path_progs_result=$_G_path_prog _G_path_prog_found=: ;;
    219      1.1  mrg             *)     $_G_check_func $_G_path_prog
    220      1.1  mrg 		   func_path_progs_result=$func_check_prog_result
    221      1.1  mrg 		   ;;
    222      1.1  mrg           esac
    223      1.1  mrg           $_G_path_prog_found && break 3
    224      1.1  mrg         done
    225      1.1  mrg       done
    226      1.1  mrg     done
    227      1.1  mrg     IFS=$_G_save_IFS
    228      1.1  mrg     test -z "$func_path_progs_result" && {
    229      1.1  mrg       echo "no acceptable sed could be found in \$PATH" >&2
    230      1.1  mrg       exit 1
    231      1.1  mrg     }
    232      1.1  mrg }
    233      1.1  mrg 
    234      1.1  mrg 
    235      1.1  mrg # We want to be able to use the functions in this file before configure
    236      1.1  mrg # has figured out where the best binaries are kept, which means we have
    237      1.1  mrg # to search for them ourselves - except when the results are already set
    238      1.1  mrg # where we skip the searches.
    239      1.1  mrg 
    240      1.1  mrg # Unless the user overrides by setting SED, search the path for either GNU
    241      1.1  mrg # sed, or the sed that truncates its output the least.
    242      1.1  mrg test -z "$SED" && {
    243      1.1  mrg   _G_sed_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
    244      1.1  mrg   for _G_i in 1 2 3 4 5 6 7; do
    245      1.1  mrg     _G_sed_script=$_G_sed_script$nl$_G_sed_script
    246      1.1  mrg   done
    247      1.1  mrg   echo "$_G_sed_script" 2>/dev/null | sed 99q >conftest.sed
    248      1.1  mrg   _G_sed_script=
    249      1.1  mrg 
    250      1.1  mrg   func_check_prog_sed ()
    251      1.1  mrg   {
    252      1.1  mrg     _G_path_prog=$1
    253      1.1  mrg 
    254      1.1  mrg     _G_count=0
    255      1.1  mrg     printf 0123456789 >conftest.in
    256      1.1  mrg     while :
    257      1.1  mrg     do
    258      1.1  mrg       cat conftest.in conftest.in >conftest.tmp
    259      1.1  mrg       mv conftest.tmp conftest.in
    260      1.1  mrg       cp conftest.in conftest.nl
    261      1.1  mrg       echo '' >> conftest.nl
    262      1.1  mrg       "$_G_path_prog" -f conftest.sed <conftest.nl >conftest.out 2>/dev/null || break
    263      1.1  mrg       diff conftest.out conftest.nl >/dev/null 2>&1 || break
    264      1.1  mrg       _G_count=`expr $_G_count + 1`
    265      1.1  mrg       if test "$_G_count" -gt "$_G_path_prog_max"; then
    266      1.1  mrg         # Best one so far, save it but keep looking for a better one
    267      1.1  mrg         func_check_prog_result=$_G_path_prog
    268      1.1  mrg         _G_path_prog_max=$_G_count
    269      1.1  mrg       fi
    270      1.1  mrg       # 10*(2^10) chars as input seems more than enough
    271      1.1  mrg       test 10 -lt "$_G_count" && break
    272      1.1  mrg     done
    273      1.1  mrg     rm -f conftest.in conftest.tmp conftest.nl conftest.out
    274      1.1  mrg   }
    275      1.1  mrg 
    276  1.1.1.2  mrg   func_path_progs "sed gsed" func_check_prog_sed "$PATH:/usr/xpg4/bin"
    277      1.1  mrg   rm -f conftest.sed
    278      1.1  mrg   SED=$func_path_progs_result
    279      1.1  mrg }
    280      1.1  mrg 
    281      1.1  mrg 
    282      1.1  mrg # Unless the user overrides by setting GREP, search the path for either GNU
    283      1.1  mrg # grep, or the grep that truncates its output the least.
    284      1.1  mrg test -z "$GREP" && {
    285      1.1  mrg   func_check_prog_grep ()
    286      1.1  mrg   {
    287      1.1  mrg     _G_path_prog=$1
    288      1.1  mrg 
    289      1.1  mrg     _G_count=0
    290      1.1  mrg     _G_path_prog_max=0
    291      1.1  mrg     printf 0123456789 >conftest.in
    292      1.1  mrg     while :
    293      1.1  mrg     do
    294      1.1  mrg       cat conftest.in conftest.in >conftest.tmp
    295      1.1  mrg       mv conftest.tmp conftest.in
    296      1.1  mrg       cp conftest.in conftest.nl
    297      1.1  mrg       echo 'GREP' >> conftest.nl
    298      1.1  mrg       "$_G_path_prog" -e 'GREP$' -e '-(cannot match)-' <conftest.nl >conftest.out 2>/dev/null || break
    299      1.1  mrg       diff conftest.out conftest.nl >/dev/null 2>&1 || break
    300      1.1  mrg       _G_count=`expr $_G_count + 1`
    301      1.1  mrg       if test "$_G_count" -gt "$_G_path_prog_max"; then
    302      1.1  mrg         # Best one so far, save it but keep looking for a better one
    303      1.1  mrg         func_check_prog_result=$_G_path_prog
    304      1.1  mrg         _G_path_prog_max=$_G_count
    305      1.1  mrg       fi
    306      1.1  mrg       # 10*(2^10) chars as input seems more than enough
    307      1.1  mrg       test 10 -lt "$_G_count" && break
    308      1.1  mrg     done
    309      1.1  mrg     rm -f conftest.in conftest.tmp conftest.nl conftest.out
    310      1.1  mrg   }
    311      1.1  mrg 
    312  1.1.1.2  mrg   func_path_progs "grep ggrep" func_check_prog_grep "$PATH:/usr/xpg4/bin"
    313      1.1  mrg   GREP=$func_path_progs_result
    314      1.1  mrg }
    315      1.1  mrg 
    316      1.1  mrg 
    317      1.1  mrg ## ------------------------------- ##
    318      1.1  mrg ## User overridable command paths. ##
    319      1.1  mrg ## ------------------------------- ##
    320      1.1  mrg 
    321      1.1  mrg # All uppercase variable names are used for environment variables.  These
    322      1.1  mrg # variables can be overridden by the user before calling a script that
    323      1.1  mrg # uses them if a suitable command of that name is not already available
    324      1.1  mrg # in the command search PATH.
    325      1.1  mrg 
    326      1.1  mrg : ${CP="cp -f"}
    327      1.1  mrg : ${ECHO="printf %s\n"}
    328      1.1  mrg : ${EGREP="$GREP -E"}
    329      1.1  mrg : ${FGREP="$GREP -F"}
    330      1.1  mrg : ${LN_S="ln -s"}
    331      1.1  mrg : ${MAKE="make"}
    332      1.1  mrg : ${MKDIR="mkdir"}
    333      1.1  mrg : ${MV="mv -f"}
    334      1.1  mrg : ${RM="rm -f"}
    335      1.1  mrg : ${SHELL="${CONFIG_SHELL-/bin/sh}"}
    336      1.1  mrg 
    337      1.1  mrg 
    338      1.1  mrg ## -------------------- ##
    339      1.1  mrg ## Useful sed snippets. ##
    340      1.1  mrg ## -------------------- ##
    341      1.1  mrg 
    342      1.1  mrg sed_dirname='s|/[^/]*$||'
    343      1.1  mrg sed_basename='s|^.*/||'
    344      1.1  mrg 
    345      1.1  mrg # Sed substitution that helps us do robust quoting.  It backslashifies
    346      1.1  mrg # metacharacters that are still active within double-quoted strings.
    347      1.1  mrg sed_quote_subst='s|\([`"$\\]\)|\\\1|g'
    348      1.1  mrg 
    349      1.1  mrg # Same as above, but do not quote variable references.
    350      1.1  mrg sed_double_quote_subst='s/\(["`\\]\)/\\\1/g'
    351      1.1  mrg 
    352      1.1  mrg # Sed substitution that turns a string into a regex matching for the
    353      1.1  mrg # string literally.
    354      1.1  mrg sed_make_literal_regex='s|[].[^$\\*\/]|\\&|g'
    355      1.1  mrg 
    356      1.1  mrg # Sed substitution that converts a w32 file name or path
    357      1.1  mrg # that contains forward slashes, into one that contains
    358      1.1  mrg # (escaped) backslashes.  A very naive implementation.
    359      1.1  mrg sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
    360      1.1  mrg 
    361      1.1  mrg # Re-'\' parameter expansions in output of sed_double_quote_subst that
    362      1.1  mrg # were '\'-ed in input to the same.  If an odd number of '\' preceded a
    363      1.1  mrg # '$' in input to sed_double_quote_subst, that '$' was protected from
    364      1.1  mrg # expansion.  Since each input '\' is now two '\'s, look for any number
    365      1.1  mrg # of runs of four '\'s followed by two '\'s and then a '$'.  '\' that '$'.
    366      1.1  mrg _G_bs='\\'
    367      1.1  mrg _G_bs2='\\\\'
    368      1.1  mrg _G_bs4='\\\\\\\\'
    369      1.1  mrg _G_dollar='\$'
    370      1.1  mrg sed_double_backslash="\
    371      1.1  mrg   s/$_G_bs4/&\\
    372      1.1  mrg /g
    373      1.1  mrg   s/^$_G_bs2$_G_dollar/$_G_bs&/
    374      1.1  mrg   s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g
    375      1.1  mrg   s/\n//g"
    376      1.1  mrg 
    377  1.1.1.2  mrg # require_check_ifs_backslash
    378  1.1.1.2  mrg # ---------------------------
    379  1.1.1.2  mrg # Check if we can use backslash as IFS='\' separator, and set
    380  1.1.1.2  mrg # $check_ifs_backshlash_broken to ':' or 'false'.
    381  1.1.1.2  mrg require_check_ifs_backslash=func_require_check_ifs_backslash
    382  1.1.1.2  mrg func_require_check_ifs_backslash ()
    383  1.1.1.2  mrg {
    384  1.1.1.2  mrg   _G_save_IFS=$IFS
    385  1.1.1.2  mrg   IFS='\'
    386  1.1.1.2  mrg   _G_check_ifs_backshlash='a\\b'
    387  1.1.1.2  mrg   for _G_i in $_G_check_ifs_backshlash
    388  1.1.1.2  mrg   do
    389  1.1.1.2  mrg   case $_G_i in
    390  1.1.1.2  mrg   a)
    391  1.1.1.2  mrg     check_ifs_backshlash_broken=false
    392  1.1.1.2  mrg     ;;
    393  1.1.1.2  mrg   '')
    394  1.1.1.2  mrg     break
    395  1.1.1.2  mrg     ;;
    396  1.1.1.2  mrg   *)
    397  1.1.1.2  mrg     check_ifs_backshlash_broken=:
    398  1.1.1.2  mrg     break
    399  1.1.1.2  mrg     ;;
    400  1.1.1.2  mrg   esac
    401  1.1.1.2  mrg   done
    402  1.1.1.2  mrg   IFS=$_G_save_IFS
    403  1.1.1.2  mrg   require_check_ifs_backslash=:
    404  1.1.1.2  mrg }
    405  1.1.1.2  mrg 
    406      1.1  mrg 
    407      1.1  mrg ## ----------------- ##
    408      1.1  mrg ## Global variables. ##
    409      1.1  mrg ## ----------------- ##
    410      1.1  mrg 
    411      1.1  mrg # Except for the global variables explicitly listed below, the following
    412      1.1  mrg # functions in the '^func_' namespace, and the '^require_' namespace
    413      1.1  mrg # variables initialised in the 'Resource management' section, sourcing
    414      1.1  mrg # this file will not pollute your global namespace with anything
    415      1.1  mrg # else. There's no portable way to scope variables in Bourne shell
    416      1.1  mrg # though, so actually running these functions will sometimes place
    417      1.1  mrg # results into a variable named after the function, and often use
    418      1.1  mrg # temporary variables in the '^_G_' namespace. If you are careful to
    419      1.1  mrg # avoid using those namespaces casually in your sourcing script, things
    420      1.1  mrg # should continue to work as you expect. And, of course, you can freely
    421      1.1  mrg # overwrite any of the functions or variables defined here before
    422      1.1  mrg # calling anything to customize them.
    423      1.1  mrg 
    424      1.1  mrg EXIT_SUCCESS=0
    425      1.1  mrg EXIT_FAILURE=1
    426      1.1  mrg EXIT_MISMATCH=63  # $? = 63 is used to indicate version mismatch to missing.
    427      1.1  mrg EXIT_SKIP=77	  # $? = 77 is used to indicate a skipped test to automake.
    428      1.1  mrg 
    429      1.1  mrg # Allow overriding, eg assuming that you follow the convention of
    430      1.1  mrg # putting '$debug_cmd' at the start of all your functions, you can get
    431      1.1  mrg # bash to show function call trace with:
    432      1.1  mrg #
    433      1.1  mrg #    debug_cmd='eval echo "${FUNCNAME[0]} $*" >&2' bash your-script-name
    434      1.1  mrg debug_cmd=${debug_cmd-":"}
    435      1.1  mrg exit_cmd=:
    436      1.1  mrg 
    437      1.1  mrg # By convention, finish your script with:
    438      1.1  mrg #
    439      1.1  mrg #    exit $exit_status
    440      1.1  mrg #
    441      1.1  mrg # so that you can set exit_status to non-zero if you want to indicate
    442      1.1  mrg # something went wrong during execution without actually bailing out at
    443      1.1  mrg # the point of failure.
    444      1.1  mrg exit_status=$EXIT_SUCCESS
    445      1.1  mrg 
    446      1.1  mrg # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
    447      1.1  mrg # is ksh but when the shell is invoked as "sh" and the current value of
    448      1.1  mrg # the _XPG environment variable is not equal to 1 (one), the special
    449      1.1  mrg # positional parameter $0, within a function call, is the name of the
    450      1.1  mrg # function.
    451      1.1  mrg progpath=$0
    452      1.1  mrg 
    453      1.1  mrg # The name of this program.
    454      1.1  mrg progname=`$ECHO "$progpath" |$SED "$sed_basename"`
    455      1.1  mrg 
    456      1.1  mrg # Make sure we have an absolute progpath for reexecution:
    457      1.1  mrg case $progpath in
    458      1.1  mrg   [\\/]*|[A-Za-z]:\\*) ;;
    459      1.1  mrg   *[\\/]*)
    460      1.1  mrg      progdir=`$ECHO "$progpath" |$SED "$sed_dirname"`
    461      1.1  mrg      progdir=`cd "$progdir" && pwd`
    462      1.1  mrg      progpath=$progdir/$progname
    463      1.1  mrg      ;;
    464      1.1  mrg   *)
    465      1.1  mrg      _G_IFS=$IFS
    466      1.1  mrg      IFS=${PATH_SEPARATOR-:}
    467      1.1  mrg      for progdir in $PATH; do
    468      1.1  mrg        IFS=$_G_IFS
    469      1.1  mrg        test -x "$progdir/$progname" && break
    470      1.1  mrg      done
    471      1.1  mrg      IFS=$_G_IFS
    472      1.1  mrg      test -n "$progdir" || progdir=`pwd`
    473      1.1  mrg      progpath=$progdir/$progname
    474      1.1  mrg      ;;
    475      1.1  mrg esac
    476      1.1  mrg 
    477      1.1  mrg 
    478      1.1  mrg ## ----------------- ##
    479      1.1  mrg ## Standard options. ##
    480      1.1  mrg ## ----------------- ##
    481      1.1  mrg 
    482      1.1  mrg # The following options affect the operation of the functions defined
    483      1.1  mrg # below, and should be set appropriately depending on run-time para-
    484      1.1  mrg # meters passed on the command line.
    485      1.1  mrg 
    486      1.1  mrg opt_dry_run=false
    487      1.1  mrg opt_quiet=false
    488      1.1  mrg opt_verbose=false
    489      1.1  mrg 
    490      1.1  mrg # Categories 'all' and 'none' are always available.  Append any others
    491      1.1  mrg # you will pass as the first argument to func_warning from your own
    492      1.1  mrg # code.
    493      1.1  mrg warning_categories=
    494      1.1  mrg 
    495      1.1  mrg # By default, display warnings according to 'opt_warning_types'.  Set
    496      1.1  mrg # 'warning_func'  to ':' to elide all warnings, or func_fatal_error to
    497      1.1  mrg # treat the next displayed warning as a fatal error.
    498      1.1  mrg warning_func=func_warn_and_continue
    499      1.1  mrg 
    500      1.1  mrg # Set to 'all' to display all warnings, 'none' to suppress all
    501      1.1  mrg # warnings, or a space delimited list of some subset of
    502      1.1  mrg # 'warning_categories' to display only the listed warnings.
    503      1.1  mrg opt_warning_types=all
    504      1.1  mrg 
    505      1.1  mrg 
    506      1.1  mrg ## -------------------- ##
    507      1.1  mrg ## Resource management. ##
    508      1.1  mrg ## -------------------- ##
    509      1.1  mrg 
    510      1.1  mrg # This section contains definitions for functions that each ensure a
    511      1.1  mrg # particular resource (a file, or a non-empty configuration variable for
    512      1.1  mrg # example) is available, and if appropriate to extract default values
    513      1.1  mrg # from pertinent package files. Call them using their associated
    514      1.1  mrg # 'require_*' variable to ensure that they are executed, at most, once.
    515      1.1  mrg #
    516      1.1  mrg # It's entirely deliberate that calling these functions can set
    517      1.1  mrg # variables that don't obey the namespace limitations obeyed by the rest
    518      1.1  mrg # of this file, in order that that they be as useful as possible to
    519      1.1  mrg # callers.
    520      1.1  mrg 
    521      1.1  mrg 
    522      1.1  mrg # require_term_colors
    523      1.1  mrg # -------------------
    524      1.1  mrg # Allow display of bold text on terminals that support it.
    525      1.1  mrg require_term_colors=func_require_term_colors
    526      1.1  mrg func_require_term_colors ()
    527      1.1  mrg {
    528      1.1  mrg     $debug_cmd
    529      1.1  mrg 
    530      1.1  mrg     test -t 1 && {
    531      1.1  mrg       # COLORTERM and USE_ANSI_COLORS environment variables take
    532      1.1  mrg       # precedence, because most terminfo databases neglect to describe
    533      1.1  mrg       # whether color sequences are supported.
    534      1.1  mrg       test -n "${COLORTERM+set}" && : ${USE_ANSI_COLORS="1"}
    535      1.1  mrg 
    536      1.1  mrg       if test 1 = "$USE_ANSI_COLORS"; then
    537      1.1  mrg         # Standard ANSI escape sequences
    538      1.1  mrg         tc_reset='[0m'
    539      1.1  mrg         tc_bold='[1m';   tc_standout='[7m'
    540      1.1  mrg         tc_red='[31m';   tc_green='[32m'
    541      1.1  mrg         tc_blue='[34m';  tc_cyan='[36m'
    542      1.1  mrg       else
    543      1.1  mrg         # Otherwise trust the terminfo database after all.
    544      1.1  mrg         test -n "`tput sgr0 2>/dev/null`" && {
    545      1.1  mrg           tc_reset=`tput sgr0`
    546      1.1  mrg           test -n "`tput bold 2>/dev/null`" && tc_bold=`tput bold`
    547      1.1  mrg           tc_standout=$tc_bold
    548      1.1  mrg           test -n "`tput smso 2>/dev/null`" && tc_standout=`tput smso`
    549      1.1  mrg           test -n "`tput setaf 1 2>/dev/null`" && tc_red=`tput setaf 1`
    550      1.1  mrg           test -n "`tput setaf 2 2>/dev/null`" && tc_green=`tput setaf 2`
    551      1.1  mrg           test -n "`tput setaf 4 2>/dev/null`" && tc_blue=`tput setaf 4`
    552      1.1  mrg           test -n "`tput setaf 5 2>/dev/null`" && tc_cyan=`tput setaf 5`
    553      1.1  mrg         }
    554      1.1  mrg       fi
    555      1.1  mrg     }
    556      1.1  mrg 
    557      1.1  mrg     require_term_colors=:
    558      1.1  mrg }
    559      1.1  mrg 
    560      1.1  mrg 
    561      1.1  mrg ## ----------------- ##
    562      1.1  mrg ## Function library. ##
    563      1.1  mrg ## ----------------- ##
    564      1.1  mrg 
    565      1.1  mrg # This section contains a variety of useful functions to call in your
    566      1.1  mrg # scripts. Take note of the portable wrappers for features provided by
    567      1.1  mrg # some modern shells, which will fall back to slower equivalents on
    568      1.1  mrg # less featureful shells.
    569      1.1  mrg 
    570      1.1  mrg 
    571      1.1  mrg # func_append VAR VALUE
    572      1.1  mrg # ---------------------
    573      1.1  mrg # Append VALUE onto the existing contents of VAR.
    574      1.1  mrg 
    575      1.1  mrg   # We should try to minimise forks, especially on Windows where they are
    576      1.1  mrg   # unreasonably slow, so skip the feature probes when bash or zsh are
    577      1.1  mrg   # being used:
    578      1.1  mrg   if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then
    579      1.1  mrg     : ${_G_HAVE_ARITH_OP="yes"}
    580      1.1  mrg     : ${_G_HAVE_XSI_OPS="yes"}
    581      1.1  mrg     # The += operator was introduced in bash 3.1
    582      1.1  mrg     case $BASH_VERSION in
    583      1.1  mrg       [12].* | 3.0 | 3.0*) ;;
    584      1.1  mrg       *)
    585      1.1  mrg         : ${_G_HAVE_PLUSEQ_OP="yes"}
    586      1.1  mrg         ;;
    587      1.1  mrg     esac
    588      1.1  mrg   fi
    589      1.1  mrg 
    590      1.1  mrg   # _G_HAVE_PLUSEQ_OP
    591      1.1  mrg   # Can be empty, in which case the shell is probed, "yes" if += is
    592      1.1  mrg   # useable or anything else if it does not work.
    593      1.1  mrg   test -z "$_G_HAVE_PLUSEQ_OP" \
    594      1.1  mrg     && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev/null \
    595      1.1  mrg     && _G_HAVE_PLUSEQ_OP=yes
    596      1.1  mrg 
    597      1.1  mrg if test yes = "$_G_HAVE_PLUSEQ_OP"
    598      1.1  mrg then
    599      1.1  mrg   # This is an XSI compatible shell, allowing a faster implementation...
    600      1.1  mrg   eval 'func_append ()
    601      1.1  mrg   {
    602      1.1  mrg     $debug_cmd
    603      1.1  mrg 
    604      1.1  mrg     eval "$1+=\$2"
    605      1.1  mrg   }'
    606      1.1  mrg else
    607      1.1  mrg   # ...otherwise fall back to using expr, which is often a shell builtin.
    608      1.1  mrg   func_append ()
    609      1.1  mrg   {
    610      1.1  mrg     $debug_cmd
    611      1.1  mrg 
    612      1.1  mrg     eval "$1=\$$1\$2"
    613      1.1  mrg   }
    614      1.1  mrg fi
    615      1.1  mrg 
    616      1.1  mrg 
    617      1.1  mrg # func_append_quoted VAR VALUE
    618      1.1  mrg # ----------------------------
    619      1.1  mrg # Quote VALUE and append to the end of shell variable VAR, separated
    620      1.1  mrg # by a space.
    621      1.1  mrg if test yes = "$_G_HAVE_PLUSEQ_OP"; then
    622      1.1  mrg   eval 'func_append_quoted ()
    623      1.1  mrg   {
    624      1.1  mrg     $debug_cmd
    625      1.1  mrg 
    626  1.1.1.2  mrg     func_quote_arg pretty "$2"
    627  1.1.1.2  mrg     eval "$1+=\\ \$func_quote_arg_result"
    628      1.1  mrg   }'
    629      1.1  mrg else
    630      1.1  mrg   func_append_quoted ()
    631      1.1  mrg   {
    632      1.1  mrg     $debug_cmd
    633      1.1  mrg 
    634  1.1.1.2  mrg     func_quote_arg pretty "$2"
    635  1.1.1.2  mrg     eval "$1=\$$1\\ \$func_quote_arg_result"
    636      1.1  mrg   }
    637      1.1  mrg fi
    638      1.1  mrg 
    639      1.1  mrg 
    640      1.1  mrg # func_append_uniq VAR VALUE
    641      1.1  mrg # --------------------------
    642      1.1  mrg # Append unique VALUE onto the existing contents of VAR, assuming
    643      1.1  mrg # entries are delimited by the first character of VALUE.  For example:
    644      1.1  mrg #
    645      1.1  mrg #   func_append_uniq options " --another-option option-argument"
    646      1.1  mrg #
    647      1.1  mrg # will only append to $options if " --another-option option-argument "
    648      1.1  mrg # is not already present somewhere in $options already (note spaces at
    649      1.1  mrg # each end implied by leading space in second argument).
    650      1.1  mrg func_append_uniq ()
    651      1.1  mrg {
    652      1.1  mrg     $debug_cmd
    653      1.1  mrg 
    654      1.1  mrg     eval _G_current_value='`$ECHO $'$1'`'
    655      1.1  mrg     _G_delim=`expr "$2" : '\(.\)'`
    656      1.1  mrg 
    657      1.1  mrg     case $_G_delim$_G_current_value$_G_delim in
    658      1.1  mrg       *"$2$_G_delim"*) ;;
    659      1.1  mrg       *) func_append "$@" ;;
    660      1.1  mrg     esac
    661      1.1  mrg }
    662      1.1  mrg 
    663      1.1  mrg 
    664      1.1  mrg # func_arith TERM...
    665      1.1  mrg # ------------------
    666      1.1  mrg # Set func_arith_result to the result of evaluating TERMs.
    667      1.1  mrg   test -z "$_G_HAVE_ARITH_OP" \
    668      1.1  mrg     && (eval 'test 2 = $(( 1 + 1 ))') 2>/dev/null \
    669      1.1  mrg     && _G_HAVE_ARITH_OP=yes
    670      1.1  mrg 
    671      1.1  mrg if test yes = "$_G_HAVE_ARITH_OP"; then
    672      1.1  mrg   eval 'func_arith ()
    673      1.1  mrg   {
    674      1.1  mrg     $debug_cmd
    675      1.1  mrg 
    676      1.1  mrg     func_arith_result=$(( $* ))
    677      1.1  mrg   }'
    678      1.1  mrg else
    679      1.1  mrg   func_arith ()
    680      1.1  mrg   {
    681      1.1  mrg     $debug_cmd
    682      1.1  mrg 
    683      1.1  mrg     func_arith_result=`expr "$@"`
    684      1.1  mrg   }
    685      1.1  mrg fi
    686      1.1  mrg 
    687      1.1  mrg 
    688      1.1  mrg # func_basename FILE
    689      1.1  mrg # ------------------
    690      1.1  mrg # Set func_basename_result to FILE with everything up to and including
    691      1.1  mrg # the last / stripped.
    692      1.1  mrg if test yes = "$_G_HAVE_XSI_OPS"; then
    693      1.1  mrg   # If this shell supports suffix pattern removal, then use it to avoid
    694      1.1  mrg   # forking. Hide the definitions single quotes in case the shell chokes
    695      1.1  mrg   # on unsupported syntax...
    696      1.1  mrg   _b='func_basename_result=${1##*/}'
    697      1.1  mrg   _d='case $1 in
    698      1.1  mrg         */*) func_dirname_result=${1%/*}$2 ;;
    699      1.1  mrg         *  ) func_dirname_result=$3        ;;
    700      1.1  mrg       esac'
    701      1.1  mrg 
    702      1.1  mrg else
    703      1.1  mrg   # ...otherwise fall back to using sed.
    704      1.1  mrg   _b='func_basename_result=`$ECHO "$1" |$SED "$sed_basename"`'
    705      1.1  mrg   _d='func_dirname_result=`$ECHO "$1"  |$SED "$sed_dirname"`
    706      1.1  mrg       if test "X$func_dirname_result" = "X$1"; then
    707      1.1  mrg         func_dirname_result=$3
    708      1.1  mrg       else
    709      1.1  mrg         func_append func_dirname_result "$2"
    710      1.1  mrg       fi'
    711      1.1  mrg fi
    712      1.1  mrg 
    713      1.1  mrg eval 'func_basename ()
    714      1.1  mrg {
    715      1.1  mrg     $debug_cmd
    716      1.1  mrg 
    717      1.1  mrg     '"$_b"'
    718      1.1  mrg }'
    719      1.1  mrg 
    720      1.1  mrg 
    721      1.1  mrg # func_dirname FILE APPEND NONDIR_REPLACEMENT
    722      1.1  mrg # -------------------------------------------
    723      1.1  mrg # Compute the dirname of FILE.  If nonempty, add APPEND to the result,
    724      1.1  mrg # otherwise set result to NONDIR_REPLACEMENT.
    725      1.1  mrg eval 'func_dirname ()
    726      1.1  mrg {
    727      1.1  mrg     $debug_cmd
    728      1.1  mrg 
    729      1.1  mrg     '"$_d"'
    730      1.1  mrg }'
    731      1.1  mrg 
    732      1.1  mrg 
    733      1.1  mrg # func_dirname_and_basename FILE APPEND NONDIR_REPLACEMENT
    734      1.1  mrg # --------------------------------------------------------
    735      1.1  mrg # Perform func_basename and func_dirname in a single function
    736      1.1  mrg # call:
    737      1.1  mrg #   dirname:  Compute the dirname of FILE.  If nonempty,
    738      1.1  mrg #             add APPEND to the result, otherwise set result
    739      1.1  mrg #             to NONDIR_REPLACEMENT.
    740      1.1  mrg #             value returned in "$func_dirname_result"
    741      1.1  mrg #   basename: Compute filename of FILE.
    742      1.1  mrg #             value retuned in "$func_basename_result"
    743      1.1  mrg # For efficiency, we do not delegate to the functions above but instead
    744      1.1  mrg # duplicate the functionality here.
    745      1.1  mrg eval 'func_dirname_and_basename ()
    746      1.1  mrg {
    747      1.1  mrg     $debug_cmd
    748      1.1  mrg 
    749      1.1  mrg     '"$_b"'
    750      1.1  mrg     '"$_d"'
    751      1.1  mrg }'
    752      1.1  mrg 
    753      1.1  mrg 
    754      1.1  mrg # func_echo ARG...
    755      1.1  mrg # ----------------
    756      1.1  mrg # Echo program name prefixed message.
    757      1.1  mrg func_echo ()
    758      1.1  mrg {
    759      1.1  mrg     $debug_cmd
    760      1.1  mrg 
    761      1.1  mrg     _G_message=$*
    762      1.1  mrg 
    763      1.1  mrg     func_echo_IFS=$IFS
    764      1.1  mrg     IFS=$nl
    765      1.1  mrg     for _G_line in $_G_message; do
    766      1.1  mrg       IFS=$func_echo_IFS
    767      1.1  mrg       $ECHO "$progname: $_G_line"
    768      1.1  mrg     done
    769      1.1  mrg     IFS=$func_echo_IFS
    770      1.1  mrg }
    771      1.1  mrg 
    772      1.1  mrg 
    773      1.1  mrg # func_echo_all ARG...
    774      1.1  mrg # --------------------
    775      1.1  mrg # Invoke $ECHO with all args, space-separated.
    776      1.1  mrg func_echo_all ()
    777      1.1  mrg {
    778      1.1  mrg     $ECHO "$*"
    779      1.1  mrg }
    780      1.1  mrg 
    781      1.1  mrg 
    782      1.1  mrg # func_echo_infix_1 INFIX ARG...
    783      1.1  mrg # ------------------------------
    784      1.1  mrg # Echo program name, followed by INFIX on the first line, with any
    785      1.1  mrg # additional lines not showing INFIX.
    786      1.1  mrg func_echo_infix_1 ()
    787      1.1  mrg {
    788      1.1  mrg     $debug_cmd
    789      1.1  mrg 
    790      1.1  mrg     $require_term_colors
    791      1.1  mrg 
    792      1.1  mrg     _G_infix=$1; shift
    793      1.1  mrg     _G_indent=$_G_infix
    794      1.1  mrg     _G_prefix="$progname: $_G_infix: "
    795      1.1  mrg     _G_message=$*
    796      1.1  mrg 
    797      1.1  mrg     # Strip color escape sequences before counting printable length
    798      1.1  mrg     for _G_tc in "$tc_reset" "$tc_bold" "$tc_standout" "$tc_red" "$tc_green" "$tc_blue" "$tc_cyan"
    799      1.1  mrg     do
    800      1.1  mrg       test -n "$_G_tc" && {
    801      1.1  mrg         _G_esc_tc=`$ECHO "$_G_tc" | $SED "$sed_make_literal_regex"`
    802      1.1  mrg         _G_indent=`$ECHO "$_G_indent" | $SED "s|$_G_esc_tc||g"`
    803      1.1  mrg       }
    804      1.1  mrg     done
    805      1.1  mrg     _G_indent="$progname: "`echo "$_G_indent" | $SED 's|.| |g'`"  " ## exclude from sc_prohibit_nested_quotes
    806      1.1  mrg 
    807      1.1  mrg     func_echo_infix_1_IFS=$IFS
    808      1.1  mrg     IFS=$nl
    809      1.1  mrg     for _G_line in $_G_message; do
    810      1.1  mrg       IFS=$func_echo_infix_1_IFS
    811      1.1  mrg       $ECHO "$_G_prefix$tc_bold$_G_line$tc_reset" >&2
    812      1.1  mrg       _G_prefix=$_G_indent
    813      1.1  mrg     done
    814      1.1  mrg     IFS=$func_echo_infix_1_IFS
    815      1.1  mrg }
    816      1.1  mrg 
    817      1.1  mrg 
    818      1.1  mrg # func_error ARG...
    819      1.1  mrg # -----------------
    820      1.1  mrg # Echo program name prefixed message to standard error.
    821      1.1  mrg func_error ()
    822      1.1  mrg {
    823      1.1  mrg     $debug_cmd
    824      1.1  mrg 
    825      1.1  mrg     $require_term_colors
    826      1.1  mrg 
    827      1.1  mrg     func_echo_infix_1 "  $tc_standout${tc_red}error$tc_reset" "$*" >&2
    828      1.1  mrg }
    829      1.1  mrg 
    830      1.1  mrg 
    831      1.1  mrg # func_fatal_error ARG...
    832      1.1  mrg # -----------------------
    833      1.1  mrg # Echo program name prefixed message to standard error, and exit.
    834      1.1  mrg func_fatal_error ()
    835      1.1  mrg {
    836      1.1  mrg     $debug_cmd
    837      1.1  mrg 
    838      1.1  mrg     func_error "$*"
    839      1.1  mrg     exit $EXIT_FAILURE
    840      1.1  mrg }
    841      1.1  mrg 
    842      1.1  mrg 
    843      1.1  mrg # func_grep EXPRESSION FILENAME
    844      1.1  mrg # -----------------------------
    845      1.1  mrg # Check whether EXPRESSION matches any line of FILENAME, without output.
    846      1.1  mrg func_grep ()
    847      1.1  mrg {
    848      1.1  mrg     $debug_cmd
    849      1.1  mrg 
    850      1.1  mrg     $GREP "$1" "$2" >/dev/null 2>&1
    851      1.1  mrg }
    852      1.1  mrg 
    853      1.1  mrg 
    854      1.1  mrg # func_len STRING
    855      1.1  mrg # ---------------
    856      1.1  mrg # Set func_len_result to the length of STRING. STRING may not
    857      1.1  mrg # start with a hyphen.
    858      1.1  mrg   test -z "$_G_HAVE_XSI_OPS" \
    859      1.1  mrg     && (eval 'x=a/b/c;
    860      1.1  mrg       test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \
    861      1.1  mrg     && _G_HAVE_XSI_OPS=yes
    862      1.1  mrg 
    863      1.1  mrg if test yes = "$_G_HAVE_XSI_OPS"; then
    864      1.1  mrg   eval 'func_len ()
    865      1.1  mrg   {
    866      1.1  mrg     $debug_cmd
    867      1.1  mrg 
    868      1.1  mrg     func_len_result=${#1}
    869      1.1  mrg   }'
    870      1.1  mrg else
    871      1.1  mrg   func_len ()
    872      1.1  mrg   {
    873      1.1  mrg     $debug_cmd
    874      1.1  mrg 
    875      1.1  mrg     func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len`
    876      1.1  mrg   }
    877      1.1  mrg fi
    878      1.1  mrg 
    879      1.1  mrg 
    880      1.1  mrg # func_mkdir_p DIRECTORY-PATH
    881      1.1  mrg # ---------------------------
    882      1.1  mrg # Make sure the entire path to DIRECTORY-PATH is available.
    883      1.1  mrg func_mkdir_p ()
    884      1.1  mrg {
    885      1.1  mrg     $debug_cmd
    886      1.1  mrg 
    887      1.1  mrg     _G_directory_path=$1
    888      1.1  mrg     _G_dir_list=
    889      1.1  mrg 
    890      1.1  mrg     if test -n "$_G_directory_path" && test : != "$opt_dry_run"; then
    891      1.1  mrg 
    892      1.1  mrg       # Protect directory names starting with '-'
    893      1.1  mrg       case $_G_directory_path in
    894      1.1  mrg         -*) _G_directory_path=./$_G_directory_path ;;
    895      1.1  mrg       esac
    896      1.1  mrg 
    897      1.1  mrg       # While some portion of DIR does not yet exist...
    898      1.1  mrg       while test ! -d "$_G_directory_path"; do
    899      1.1  mrg         # ...make a list in topmost first order.  Use a colon delimited
    900      1.1  mrg 	# list incase some portion of path contains whitespace.
    901      1.1  mrg         _G_dir_list=$_G_directory_path:$_G_dir_list
    902      1.1  mrg 
    903      1.1  mrg         # If the last portion added has no slash in it, the list is done
    904      1.1  mrg         case $_G_directory_path in */*) ;; *) break ;; esac
    905      1.1  mrg 
    906      1.1  mrg         # ...otherwise throw away the child directory and loop
    907      1.1  mrg         _G_directory_path=`$ECHO "$_G_directory_path" | $SED -e "$sed_dirname"`
    908      1.1  mrg       done
    909      1.1  mrg       _G_dir_list=`$ECHO "$_G_dir_list" | $SED 's|:*$||'`
    910      1.1  mrg 
    911      1.1  mrg       func_mkdir_p_IFS=$IFS; IFS=:
    912      1.1  mrg       for _G_dir in $_G_dir_list; do
    913      1.1  mrg 	IFS=$func_mkdir_p_IFS
    914      1.1  mrg         # mkdir can fail with a 'File exist' error if two processes
    915      1.1  mrg         # try to create one of the directories concurrently.  Don't
    916      1.1  mrg         # stop in that case!
    917      1.1  mrg         $MKDIR "$_G_dir" 2>/dev/null || :
    918      1.1  mrg       done
    919      1.1  mrg       IFS=$func_mkdir_p_IFS
    920      1.1  mrg 
    921      1.1  mrg       # Bail out if we (or some other process) failed to create a directory.
    922      1.1  mrg       test -d "$_G_directory_path" || \
    923      1.1  mrg         func_fatal_error "Failed to create '$1'"
    924      1.1  mrg     fi
    925      1.1  mrg }
    926      1.1  mrg 
    927      1.1  mrg 
    928      1.1  mrg # func_mktempdir [BASENAME]
    929      1.1  mrg # -------------------------
    930      1.1  mrg # Make a temporary directory that won't clash with other running
    931      1.1  mrg # libtool processes, and avoids race conditions if possible.  If
    932      1.1  mrg # given, BASENAME is the basename for that directory.
    933      1.1  mrg func_mktempdir ()
    934      1.1  mrg {
    935      1.1  mrg     $debug_cmd
    936      1.1  mrg 
    937      1.1  mrg     _G_template=${TMPDIR-/tmp}/${1-$progname}
    938      1.1  mrg 
    939      1.1  mrg     if test : = "$opt_dry_run"; then
    940      1.1  mrg       # Return a directory name, but don't create it in dry-run mode
    941      1.1  mrg       _G_tmpdir=$_G_template-$$
    942      1.1  mrg     else
    943      1.1  mrg 
    944      1.1  mrg       # If mktemp works, use that first and foremost
    945      1.1  mrg       _G_tmpdir=`mktemp -d "$_G_template-XXXXXXXX" 2>/dev/null`
    946      1.1  mrg 
    947      1.1  mrg       if test ! -d "$_G_tmpdir"; then
    948      1.1  mrg         # Failing that, at least try and use $RANDOM to avoid a race
    949      1.1  mrg         _G_tmpdir=$_G_template-${RANDOM-0}$$
    950      1.1  mrg 
    951      1.1  mrg         func_mktempdir_umask=`umask`
    952      1.1  mrg         umask 0077
    953      1.1  mrg         $MKDIR "$_G_tmpdir"
    954      1.1  mrg         umask $func_mktempdir_umask
    955      1.1  mrg       fi
    956      1.1  mrg 
    957      1.1  mrg       # If we're not in dry-run mode, bomb out on failure
    958      1.1  mrg       test -d "$_G_tmpdir" || \
    959      1.1  mrg         func_fatal_error "cannot create temporary directory '$_G_tmpdir'"
    960      1.1  mrg     fi
    961      1.1  mrg 
    962      1.1  mrg     $ECHO "$_G_tmpdir"
    963      1.1  mrg }
    964      1.1  mrg 
    965      1.1  mrg 
    966      1.1  mrg # func_normal_abspath PATH
    967      1.1  mrg # ------------------------
    968      1.1  mrg # Remove doubled-up and trailing slashes, "." path components,
    969      1.1  mrg # and cancel out any ".." path components in PATH after making
    970      1.1  mrg # it an absolute path.
    971      1.1  mrg func_normal_abspath ()
    972      1.1  mrg {
    973      1.1  mrg     $debug_cmd
    974      1.1  mrg 
    975      1.1  mrg     # These SED scripts presuppose an absolute path with a trailing slash.
    976      1.1  mrg     _G_pathcar='s|^/\([^/]*\).*$|\1|'
    977      1.1  mrg     _G_pathcdr='s|^/[^/]*||'
    978      1.1  mrg     _G_removedotparts=':dotsl
    979      1.1  mrg 		s|/\./|/|g
    980      1.1  mrg 		t dotsl
    981      1.1  mrg 		s|/\.$|/|'
    982      1.1  mrg     _G_collapseslashes='s|/\{1,\}|/|g'
    983      1.1  mrg     _G_finalslash='s|/*$|/|'
    984      1.1  mrg 
    985      1.1  mrg     # Start from root dir and reassemble the path.
    986      1.1  mrg     func_normal_abspath_result=
    987      1.1  mrg     func_normal_abspath_tpath=$1
    988      1.1  mrg     func_normal_abspath_altnamespace=
    989      1.1  mrg     case $func_normal_abspath_tpath in
    990      1.1  mrg       "")
    991      1.1  mrg         # Empty path, that just means $cwd.
    992      1.1  mrg         func_stripname '' '/' "`pwd`"
    993      1.1  mrg         func_normal_abspath_result=$func_stripname_result
    994      1.1  mrg         return
    995      1.1  mrg         ;;
    996      1.1  mrg       # The next three entries are used to spot a run of precisely
    997      1.1  mrg       # two leading slashes without using negated character classes;
    998      1.1  mrg       # we take advantage of case's first-match behaviour.
    999      1.1  mrg       ///*)
   1000      1.1  mrg         # Unusual form of absolute path, do nothing.
   1001      1.1  mrg         ;;
   1002      1.1  mrg       //*)
   1003      1.1  mrg         # Not necessarily an ordinary path; POSIX reserves leading '//'
   1004      1.1  mrg         # and for example Cygwin uses it to access remote file shares
   1005      1.1  mrg         # over CIFS/SMB, so we conserve a leading double slash if found.
   1006      1.1  mrg         func_normal_abspath_altnamespace=/
   1007      1.1  mrg         ;;
   1008      1.1  mrg       /*)
   1009      1.1  mrg         # Absolute path, do nothing.
   1010      1.1  mrg         ;;
   1011      1.1  mrg       *)
   1012      1.1  mrg         # Relative path, prepend $cwd.
   1013      1.1  mrg         func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath
   1014      1.1  mrg         ;;
   1015      1.1  mrg     esac
   1016      1.1  mrg 
   1017      1.1  mrg     # Cancel out all the simple stuff to save iterations.  We also want
   1018      1.1  mrg     # the path to end with a slash for ease of parsing, so make sure
   1019      1.1  mrg     # there is one (and only one) here.
   1020      1.1  mrg     func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
   1021      1.1  mrg           -e "$_G_removedotparts" -e "$_G_collapseslashes" -e "$_G_finalslash"`
   1022      1.1  mrg     while :; do
   1023      1.1  mrg       # Processed it all yet?
   1024      1.1  mrg       if test / = "$func_normal_abspath_tpath"; then
   1025      1.1  mrg         # If we ascended to the root using ".." the result may be empty now.
   1026      1.1  mrg         if test -z "$func_normal_abspath_result"; then
   1027      1.1  mrg           func_normal_abspath_result=/
   1028      1.1  mrg         fi
   1029      1.1  mrg         break
   1030      1.1  mrg       fi
   1031      1.1  mrg       func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \
   1032      1.1  mrg           -e "$_G_pathcar"`
   1033      1.1  mrg       func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
   1034      1.1  mrg           -e "$_G_pathcdr"`
   1035      1.1  mrg       # Figure out what to do with it
   1036      1.1  mrg       case $func_normal_abspath_tcomponent in
   1037      1.1  mrg         "")
   1038      1.1  mrg           # Trailing empty path component, ignore it.
   1039      1.1  mrg           ;;
   1040      1.1  mrg         ..)
   1041      1.1  mrg           # Parent dir; strip last assembled component from result.
   1042      1.1  mrg           func_dirname "$func_normal_abspath_result"
   1043      1.1  mrg           func_normal_abspath_result=$func_dirname_result
   1044      1.1  mrg           ;;
   1045      1.1  mrg         *)
   1046      1.1  mrg           # Actual path component, append it.
   1047      1.1  mrg           func_append func_normal_abspath_result "/$func_normal_abspath_tcomponent"
   1048      1.1  mrg           ;;
   1049      1.1  mrg       esac
   1050      1.1  mrg     done
   1051      1.1  mrg     # Restore leading double-slash if one was found on entry.
   1052      1.1  mrg     func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result
   1053      1.1  mrg }
   1054      1.1  mrg 
   1055      1.1  mrg 
   1056      1.1  mrg # func_notquiet ARG...
   1057      1.1  mrg # --------------------
   1058      1.1  mrg # Echo program name prefixed message only when not in quiet mode.
   1059      1.1  mrg func_notquiet ()
   1060      1.1  mrg {
   1061      1.1  mrg     $debug_cmd
   1062      1.1  mrg 
   1063      1.1  mrg     $opt_quiet || func_echo ${1+"$@"}
   1064      1.1  mrg 
   1065      1.1  mrg     # A bug in bash halts the script if the last line of a function
   1066      1.1  mrg     # fails when set -e is in force, so we need another command to
   1067      1.1  mrg     # work around that:
   1068      1.1  mrg     :
   1069      1.1  mrg }
   1070      1.1  mrg 
   1071      1.1  mrg 
   1072      1.1  mrg # func_relative_path SRCDIR DSTDIR
   1073      1.1  mrg # --------------------------------
   1074      1.1  mrg # Set func_relative_path_result to the relative path from SRCDIR to DSTDIR.
   1075      1.1  mrg func_relative_path ()
   1076      1.1  mrg {
   1077      1.1  mrg     $debug_cmd
   1078      1.1  mrg 
   1079      1.1  mrg     func_relative_path_result=
   1080      1.1  mrg     func_normal_abspath "$1"
   1081      1.1  mrg     func_relative_path_tlibdir=$func_normal_abspath_result
   1082      1.1  mrg     func_normal_abspath "$2"
   1083      1.1  mrg     func_relative_path_tbindir=$func_normal_abspath_result
   1084      1.1  mrg 
   1085      1.1  mrg     # Ascend the tree starting from libdir
   1086      1.1  mrg     while :; do
   1087      1.1  mrg       # check if we have found a prefix of bindir
   1088      1.1  mrg       case $func_relative_path_tbindir in
   1089      1.1  mrg         $func_relative_path_tlibdir)
   1090      1.1  mrg           # found an exact match
   1091      1.1  mrg           func_relative_path_tcancelled=
   1092      1.1  mrg           break
   1093      1.1  mrg           ;;
   1094      1.1  mrg         $func_relative_path_tlibdir*)
   1095      1.1  mrg           # found a matching prefix
   1096      1.1  mrg           func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir"
   1097      1.1  mrg           func_relative_path_tcancelled=$func_stripname_result
   1098      1.1  mrg           if test -z "$func_relative_path_result"; then
   1099      1.1  mrg             func_relative_path_result=.
   1100      1.1  mrg           fi
   1101      1.1  mrg           break
   1102      1.1  mrg           ;;
   1103      1.1  mrg         *)
   1104      1.1  mrg           func_dirname $func_relative_path_tlibdir
   1105      1.1  mrg           func_relative_path_tlibdir=$func_dirname_result
   1106      1.1  mrg           if test -z "$func_relative_path_tlibdir"; then
   1107      1.1  mrg             # Have to descend all the way to the root!
   1108      1.1  mrg             func_relative_path_result=../$func_relative_path_result
   1109      1.1  mrg             func_relative_path_tcancelled=$func_relative_path_tbindir
   1110      1.1  mrg             break
   1111      1.1  mrg           fi
   1112      1.1  mrg           func_relative_path_result=../$func_relative_path_result
   1113      1.1  mrg           ;;
   1114      1.1  mrg       esac
   1115      1.1  mrg     done
   1116      1.1  mrg 
   1117      1.1  mrg     # Now calculate path; take care to avoid doubling-up slashes.
   1118      1.1  mrg     func_stripname '' '/' "$func_relative_path_result"
   1119      1.1  mrg     func_relative_path_result=$func_stripname_result
   1120      1.1  mrg     func_stripname '/' '/' "$func_relative_path_tcancelled"
   1121      1.1  mrg     if test -n "$func_stripname_result"; then
   1122      1.1  mrg       func_append func_relative_path_result "/$func_stripname_result"
   1123      1.1  mrg     fi
   1124      1.1  mrg 
   1125      1.1  mrg     # Normalisation. If bindir is libdir, return '.' else relative path.
   1126      1.1  mrg     if test -n "$func_relative_path_result"; then
   1127      1.1  mrg       func_stripname './' '' "$func_relative_path_result"
   1128      1.1  mrg       func_relative_path_result=$func_stripname_result
   1129      1.1  mrg     fi
   1130      1.1  mrg 
   1131      1.1  mrg     test -n "$func_relative_path_result" || func_relative_path_result=.
   1132      1.1  mrg 
   1133      1.1  mrg     :
   1134      1.1  mrg }
   1135      1.1  mrg 
   1136      1.1  mrg 
   1137  1.1.1.2  mrg # func_quote_portable EVAL ARG
   1138  1.1.1.2  mrg # ----------------------------
   1139  1.1.1.2  mrg # Internal function to portably implement func_quote_arg.  Note that we still
   1140  1.1.1.2  mrg # keep attention to performance here so we as much as possible try to avoid
   1141  1.1.1.2  mrg # calling sed binary (so far O(N) complexity as long as func_append is O(1)).
   1142  1.1.1.2  mrg func_quote_portable ()
   1143      1.1  mrg {
   1144      1.1  mrg     $debug_cmd
   1145      1.1  mrg 
   1146  1.1.1.2  mrg     $require_check_ifs_backslash
   1147  1.1.1.2  mrg 
   1148  1.1.1.2  mrg     func_quote_portable_result=$2
   1149  1.1.1.2  mrg 
   1150  1.1.1.2  mrg     # one-time-loop (easy break)
   1151  1.1.1.2  mrg     while true
   1152  1.1.1.2  mrg     do
   1153  1.1.1.2  mrg       if $1; then
   1154  1.1.1.2  mrg         func_quote_portable_result=`$ECHO "$2" | $SED \
   1155  1.1.1.2  mrg           -e "$sed_double_quote_subst" -e "$sed_double_backslash"`
   1156  1.1.1.2  mrg         break
   1157      1.1  mrg       fi
   1158      1.1  mrg 
   1159  1.1.1.2  mrg       # Quote for eval.
   1160  1.1.1.2  mrg       case $func_quote_portable_result in
   1161  1.1.1.2  mrg         *[\\\`\"\$]*)
   1162  1.1.1.2  mrg           # Fallback to sed for $func_check_bs_ifs_broken=:, or when the string
   1163  1.1.1.2  mrg           # contains the shell wildcard characters.
   1164  1.1.1.2  mrg           case $check_ifs_backshlash_broken$func_quote_portable_result in
   1165  1.1.1.2  mrg             :*|*[\[\*\?]*)
   1166  1.1.1.2  mrg               func_quote_portable_result=`$ECHO "$func_quote_portable_result" \
   1167  1.1.1.2  mrg                   | $SED "$sed_quote_subst"`
   1168  1.1.1.2  mrg               break
   1169  1.1.1.2  mrg               ;;
   1170  1.1.1.2  mrg           esac
   1171  1.1.1.2  mrg 
   1172  1.1.1.2  mrg           func_quote_portable_old_IFS=$IFS
   1173  1.1.1.2  mrg           for _G_char in '\' '`' '"' '$'
   1174  1.1.1.2  mrg           do
   1175  1.1.1.2  mrg             # STATE($1) PREV($2) SEPARATOR($3)
   1176  1.1.1.2  mrg             set start "" ""
   1177  1.1.1.2  mrg             func_quote_portable_result=dummy"$_G_char$func_quote_portable_result$_G_char"dummy
   1178  1.1.1.2  mrg             IFS=$_G_char
   1179  1.1.1.2  mrg             for _G_part in $func_quote_portable_result
   1180  1.1.1.2  mrg             do
   1181  1.1.1.2  mrg               case $1 in
   1182  1.1.1.2  mrg               quote)
   1183  1.1.1.2  mrg                 func_append func_quote_portable_result "$3$2"
   1184  1.1.1.2  mrg                 set quote "$_G_part" "\\$_G_char"
   1185  1.1.1.2  mrg                 ;;
   1186  1.1.1.2  mrg               start)
   1187  1.1.1.2  mrg                 set first "" ""
   1188  1.1.1.2  mrg                 func_quote_portable_result=
   1189  1.1.1.2  mrg                 ;;
   1190  1.1.1.2  mrg               first)
   1191  1.1.1.2  mrg                 set quote "$_G_part" ""
   1192  1.1.1.2  mrg                 ;;
   1193  1.1.1.2  mrg               esac
   1194  1.1.1.2  mrg             done
   1195  1.1.1.2  mrg           done
   1196  1.1.1.2  mrg           IFS=$func_quote_portable_old_IFS
   1197      1.1  mrg           ;;
   1198  1.1.1.2  mrg         *) ;;
   1199      1.1  mrg       esac
   1200  1.1.1.2  mrg       break
   1201      1.1  mrg     done
   1202  1.1.1.2  mrg 
   1203  1.1.1.2  mrg     func_quote_portable_unquoted_result=$func_quote_portable_result
   1204  1.1.1.2  mrg     case $func_quote_portable_result in
   1205  1.1.1.2  mrg       # double-quote args containing shell metacharacters to delay
   1206  1.1.1.2  mrg       # word splitting, command substitution and variable expansion
   1207  1.1.1.2  mrg       # for a subsequent eval.
   1208  1.1.1.2  mrg       # many bourne shells cannot handle close brackets correctly
   1209  1.1.1.2  mrg       # in scan sets, so we specify it separately.
   1210  1.1.1.2  mrg       *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
   1211  1.1.1.2  mrg         func_quote_portable_result=\"$func_quote_portable_result\"
   1212  1.1.1.2  mrg         ;;
   1213  1.1.1.2  mrg     esac
   1214      1.1  mrg }
   1215      1.1  mrg 
   1216      1.1  mrg 
   1217  1.1.1.2  mrg # func_quotefast_eval ARG
   1218  1.1.1.2  mrg # -----------------------
   1219  1.1.1.2  mrg # Quote one ARG (internal).  This is equivalent to 'func_quote_arg eval ARG',
   1220  1.1.1.2  mrg # but optimized for speed.  Result is stored in $func_quotefast_eval.
   1221  1.1.1.2  mrg if test xyes = `(x=; printf -v x %q yes; echo x"$x") 2>/dev/null`; then
   1222  1.1.1.2  mrg   printf -v _GL_test_printf_tilde %q '~'
   1223  1.1.1.2  mrg   if test '\~' = "$_GL_test_printf_tilde"; then
   1224  1.1.1.2  mrg     func_quotefast_eval ()
   1225  1.1.1.2  mrg     {
   1226  1.1.1.2  mrg       printf -v func_quotefast_eval_result %q "$1"
   1227  1.1.1.2  mrg     }
   1228  1.1.1.2  mrg   else
   1229  1.1.1.2  mrg     # Broken older Bash implementations.  Make those faster too if possible.
   1230  1.1.1.2  mrg     func_quotefast_eval ()
   1231  1.1.1.2  mrg     {
   1232  1.1.1.2  mrg       case $1 in
   1233  1.1.1.2  mrg         '~'*)
   1234  1.1.1.2  mrg           func_quote_portable false "$1"
   1235  1.1.1.2  mrg           func_quotefast_eval_result=$func_quote_portable_result
   1236  1.1.1.2  mrg           ;;
   1237  1.1.1.2  mrg         *)
   1238  1.1.1.2  mrg           printf -v func_quotefast_eval_result %q "$1"
   1239  1.1.1.2  mrg           ;;
   1240  1.1.1.2  mrg       esac
   1241  1.1.1.2  mrg     }
   1242  1.1.1.2  mrg   fi
   1243  1.1.1.2  mrg else
   1244  1.1.1.2  mrg   func_quotefast_eval ()
   1245  1.1.1.2  mrg   {
   1246  1.1.1.2  mrg     func_quote_portable false "$1"
   1247  1.1.1.2  mrg     func_quotefast_eval_result=$func_quote_portable_result
   1248  1.1.1.2  mrg   }
   1249  1.1.1.2  mrg fi
   1250      1.1  mrg 
   1251  1.1.1.2  mrg 
   1252  1.1.1.2  mrg # func_quote_arg MODEs ARG
   1253  1.1.1.2  mrg # ------------------------
   1254  1.1.1.2  mrg # Quote one ARG to be evaled later.  MODEs argument may contain zero or more
   1255  1.1.1.2  mrg # specifiers listed below separated by ',' character.  This function returns two
   1256  1.1.1.2  mrg # values:
   1257  1.1.1.2  mrg #   i) func_quote_arg_result
   1258  1.1.1.2  mrg #      double-quoted (when needed), suitable for a subsequent eval
   1259  1.1.1.2  mrg #  ii) func_quote_arg_unquoted_result
   1260  1.1.1.2  mrg #      has all characters that are still active within double
   1261  1.1.1.2  mrg #      quotes backslashified.  Available only if 'unquoted' is specified.
   1262  1.1.1.2  mrg #
   1263  1.1.1.2  mrg # Available modes:
   1264  1.1.1.2  mrg # ----------------
   1265  1.1.1.2  mrg # 'eval' (default)
   1266  1.1.1.2  mrg #       - escape shell special characters
   1267  1.1.1.2  mrg # 'expand'
   1268  1.1.1.2  mrg #       - the same as 'eval';  but do not quote variable references
   1269  1.1.1.2  mrg # 'pretty'
   1270  1.1.1.2  mrg #       - request aesthetic output, i.e. '"a b"' instead of 'a\ b'.  This might
   1271  1.1.1.2  mrg #         be used later in func_quote to get output like: 'echo "a b"' instead
   1272  1.1.1.2  mrg #         of 'echo a\ b'.  This is slower than default on some shells.
   1273  1.1.1.2  mrg # 'unquoted'
   1274  1.1.1.2  mrg #       - produce also $func_quote_arg_unquoted_result which does not contain
   1275  1.1.1.2  mrg #         wrapping double-quotes.
   1276  1.1.1.2  mrg #
   1277  1.1.1.2  mrg # Examples for 'func_quote_arg pretty,unquoted string':
   1278  1.1.1.2  mrg #
   1279  1.1.1.2  mrg #   string      | *_result              | *_unquoted_result
   1280  1.1.1.2  mrg #   ------------+-----------------------+-------------------
   1281  1.1.1.2  mrg #   "           | \"                    | \"
   1282  1.1.1.2  mrg #   a b         | "a b"                 | a b
   1283  1.1.1.2  mrg #   "a b"       | "\"a b\""             | \"a b\"
   1284  1.1.1.2  mrg #   *           | "*"                   | *
   1285  1.1.1.2  mrg #   z="${x-$y}" | "z=\"\${x-\$y}\""     | z=\"\${x-\$y}\"
   1286  1.1.1.2  mrg #
   1287  1.1.1.2  mrg # Examples for 'func_quote_arg pretty,unquoted,expand string':
   1288  1.1.1.2  mrg #
   1289  1.1.1.2  mrg #   string        |   *_result          |  *_unquoted_result
   1290  1.1.1.2  mrg #   --------------+---------------------+--------------------
   1291  1.1.1.2  mrg #   z="${x-$y}"   | "z=\"${x-$y}\""     | z=\"${x-$y}\"
   1292  1.1.1.2  mrg func_quote_arg ()
   1293  1.1.1.2  mrg {
   1294  1.1.1.2  mrg     _G_quote_expand=false
   1295  1.1.1.2  mrg     case ,$1, in
   1296  1.1.1.2  mrg       *,expand,*)
   1297  1.1.1.2  mrg         _G_quote_expand=:
   1298  1.1.1.2  mrg         ;;
   1299      1.1  mrg     esac
   1300      1.1  mrg 
   1301  1.1.1.2  mrg     case ,$1, in
   1302  1.1.1.2  mrg       *,pretty,*|*,expand,*|*,unquoted,*)
   1303  1.1.1.2  mrg         func_quote_portable $_G_quote_expand "$2"
   1304  1.1.1.2  mrg         func_quote_arg_result=$func_quote_portable_result
   1305  1.1.1.2  mrg         func_quote_arg_unquoted_result=$func_quote_portable_unquoted_result
   1306  1.1.1.2  mrg         ;;
   1307  1.1.1.2  mrg       *)
   1308  1.1.1.2  mrg         # Faster quote-for-eval for some shells.
   1309  1.1.1.2  mrg         func_quotefast_eval "$2"
   1310  1.1.1.2  mrg         func_quote_arg_result=$func_quotefast_eval_result
   1311      1.1  mrg         ;;
   1312      1.1  mrg     esac
   1313  1.1.1.2  mrg }
   1314  1.1.1.2  mrg 
   1315      1.1  mrg 
   1316  1.1.1.2  mrg # func_quote MODEs ARGs...
   1317  1.1.1.2  mrg # ------------------------
   1318  1.1.1.2  mrg # Quote all ARGs to be evaled later and join them into single command.  See
   1319  1.1.1.2  mrg # func_quote_arg's description for more info.
   1320  1.1.1.2  mrg func_quote ()
   1321  1.1.1.2  mrg {
   1322  1.1.1.2  mrg     $debug_cmd
   1323  1.1.1.2  mrg     _G_func_quote_mode=$1 ; shift
   1324  1.1.1.2  mrg     func_quote_result=
   1325  1.1.1.2  mrg     while test 0 -lt $#; do
   1326  1.1.1.2  mrg       func_quote_arg "$_G_func_quote_mode" "$1"
   1327  1.1.1.2  mrg       if test -n "$func_quote_result"; then
   1328  1.1.1.2  mrg         func_append func_quote_result " $func_quote_arg_result"
   1329  1.1.1.2  mrg       else
   1330  1.1.1.2  mrg         func_append func_quote_result "$func_quote_arg_result"
   1331  1.1.1.2  mrg       fi
   1332  1.1.1.2  mrg       shift
   1333  1.1.1.2  mrg     done
   1334      1.1  mrg }
   1335      1.1  mrg 
   1336      1.1  mrg 
   1337      1.1  mrg # func_stripname PREFIX SUFFIX NAME
   1338      1.1  mrg # ---------------------------------
   1339      1.1  mrg # strip PREFIX and SUFFIX from NAME, and store in func_stripname_result.
   1340      1.1  mrg # PREFIX and SUFFIX must not contain globbing or regex special
   1341      1.1  mrg # characters, hashes, percent signs, but SUFFIX may contain a leading
   1342      1.1  mrg # dot (in which case that matches only a dot).
   1343      1.1  mrg if test yes = "$_G_HAVE_XSI_OPS"; then
   1344      1.1  mrg   eval 'func_stripname ()
   1345      1.1  mrg   {
   1346      1.1  mrg     $debug_cmd
   1347      1.1  mrg 
   1348      1.1  mrg     # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
   1349      1.1  mrg     # positional parameters, so assign one to ordinary variable first.
   1350      1.1  mrg     func_stripname_result=$3
   1351      1.1  mrg     func_stripname_result=${func_stripname_result#"$1"}
   1352      1.1  mrg     func_stripname_result=${func_stripname_result%"$2"}
   1353      1.1  mrg   }'
   1354      1.1  mrg else
   1355      1.1  mrg   func_stripname ()
   1356      1.1  mrg   {
   1357      1.1  mrg     $debug_cmd
   1358      1.1  mrg 
   1359      1.1  mrg     case $2 in
   1360      1.1  mrg       .*) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%\\\\$2\$%%"`;;
   1361      1.1  mrg       *)  func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%$2\$%%"`;;
   1362      1.1  mrg     esac
   1363      1.1  mrg   }
   1364      1.1  mrg fi
   1365      1.1  mrg 
   1366      1.1  mrg 
   1367      1.1  mrg # func_show_eval CMD [FAIL_EXP]
   1368      1.1  mrg # -----------------------------
   1369      1.1  mrg # Unless opt_quiet is true, then output CMD.  Then, if opt_dryrun is
   1370      1.1  mrg # not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
   1371      1.1  mrg # is given, then evaluate it.
   1372      1.1  mrg func_show_eval ()
   1373      1.1  mrg {
   1374      1.1  mrg     $debug_cmd
   1375      1.1  mrg 
   1376      1.1  mrg     _G_cmd=$1
   1377      1.1  mrg     _G_fail_exp=${2-':'}
   1378      1.1  mrg 
   1379  1.1.1.2  mrg     func_quote_arg pretty,expand "$_G_cmd"
   1380  1.1.1.2  mrg     eval "func_notquiet $func_quote_arg_result"
   1381      1.1  mrg 
   1382      1.1  mrg     $opt_dry_run || {
   1383      1.1  mrg       eval "$_G_cmd"
   1384      1.1  mrg       _G_status=$?
   1385      1.1  mrg       if test 0 -ne "$_G_status"; then
   1386      1.1  mrg 	eval "(exit $_G_status); $_G_fail_exp"
   1387      1.1  mrg       fi
   1388      1.1  mrg     }
   1389      1.1  mrg }
   1390      1.1  mrg 
   1391      1.1  mrg 
   1392      1.1  mrg # func_show_eval_locale CMD [FAIL_EXP]
   1393      1.1  mrg # ------------------------------------
   1394      1.1  mrg # Unless opt_quiet is true, then output CMD.  Then, if opt_dryrun is
   1395      1.1  mrg # not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
   1396      1.1  mrg # is given, then evaluate it.  Use the saved locale for evaluation.
   1397      1.1  mrg func_show_eval_locale ()
   1398      1.1  mrg {
   1399      1.1  mrg     $debug_cmd
   1400      1.1  mrg 
   1401      1.1  mrg     _G_cmd=$1
   1402      1.1  mrg     _G_fail_exp=${2-':'}
   1403      1.1  mrg 
   1404      1.1  mrg     $opt_quiet || {
   1405  1.1.1.2  mrg       func_quote_arg expand,pretty "$_G_cmd"
   1406  1.1.1.2  mrg       eval "func_echo $func_quote_arg_result"
   1407      1.1  mrg     }
   1408      1.1  mrg 
   1409      1.1  mrg     $opt_dry_run || {
   1410      1.1  mrg       eval "$_G_user_locale
   1411      1.1  mrg 	    $_G_cmd"
   1412      1.1  mrg       _G_status=$?
   1413      1.1  mrg       eval "$_G_safe_locale"
   1414      1.1  mrg       if test 0 -ne "$_G_status"; then
   1415      1.1  mrg 	eval "(exit $_G_status); $_G_fail_exp"
   1416      1.1  mrg       fi
   1417      1.1  mrg     }
   1418      1.1  mrg }
   1419      1.1  mrg 
   1420      1.1  mrg 
   1421      1.1  mrg # func_tr_sh
   1422      1.1  mrg # ----------
   1423      1.1  mrg # Turn $1 into a string suitable for a shell variable name.
   1424      1.1  mrg # Result is stored in $func_tr_sh_result.  All characters
   1425      1.1  mrg # not in the set a-zA-Z0-9_ are replaced with '_'. Further,
   1426      1.1  mrg # if $1 begins with a digit, a '_' is prepended as well.
   1427      1.1  mrg func_tr_sh ()
   1428      1.1  mrg {
   1429      1.1  mrg     $debug_cmd
   1430      1.1  mrg 
   1431      1.1  mrg     case $1 in
   1432      1.1  mrg     [0-9]* | *[!a-zA-Z0-9_]*)
   1433      1.1  mrg       func_tr_sh_result=`$ECHO "$1" | $SED -e 's/^\([0-9]\)/_\1/' -e 's/[^a-zA-Z0-9_]/_/g'`
   1434      1.1  mrg       ;;
   1435      1.1  mrg     * )
   1436      1.1  mrg       func_tr_sh_result=$1
   1437      1.1  mrg       ;;
   1438      1.1  mrg     esac
   1439      1.1  mrg }
   1440      1.1  mrg 
   1441      1.1  mrg 
   1442      1.1  mrg # func_verbose ARG...
   1443      1.1  mrg # -------------------
   1444      1.1  mrg # Echo program name prefixed message in verbose mode only.
   1445      1.1  mrg func_verbose ()
   1446      1.1  mrg {
   1447      1.1  mrg     $debug_cmd
   1448      1.1  mrg 
   1449      1.1  mrg     $opt_verbose && func_echo "$*"
   1450      1.1  mrg 
   1451      1.1  mrg     :
   1452      1.1  mrg }
   1453      1.1  mrg 
   1454      1.1  mrg 
   1455      1.1  mrg # func_warn_and_continue ARG...
   1456      1.1  mrg # -----------------------------
   1457      1.1  mrg # Echo program name prefixed warning message to standard error.
   1458      1.1  mrg func_warn_and_continue ()
   1459      1.1  mrg {
   1460      1.1  mrg     $debug_cmd
   1461      1.1  mrg 
   1462      1.1  mrg     $require_term_colors
   1463      1.1  mrg 
   1464      1.1  mrg     func_echo_infix_1 "${tc_red}warning$tc_reset" "$*" >&2
   1465      1.1  mrg }
   1466      1.1  mrg 
   1467      1.1  mrg 
   1468      1.1  mrg # func_warning CATEGORY ARG...
   1469      1.1  mrg # ----------------------------
   1470      1.1  mrg # Echo program name prefixed warning message to standard error. Warning
   1471      1.1  mrg # messages can be filtered according to CATEGORY, where this function
   1472      1.1  mrg # elides messages where CATEGORY is not listed in the global variable
   1473      1.1  mrg # 'opt_warning_types'.
   1474      1.1  mrg func_warning ()
   1475      1.1  mrg {
   1476      1.1  mrg     $debug_cmd
   1477      1.1  mrg 
   1478      1.1  mrg     # CATEGORY must be in the warning_categories list!
   1479      1.1  mrg     case " $warning_categories " in
   1480      1.1  mrg       *" $1 "*) ;;
   1481      1.1  mrg       *) func_internal_error "invalid warning category '$1'" ;;
   1482      1.1  mrg     esac
   1483      1.1  mrg 
   1484      1.1  mrg     _G_category=$1
   1485      1.1  mrg     shift
   1486      1.1  mrg 
   1487      1.1  mrg     case " $opt_warning_types " in
   1488      1.1  mrg       *" $_G_category "*) $warning_func ${1+"$@"} ;;
   1489      1.1  mrg     esac
   1490      1.1  mrg }
   1491      1.1  mrg 
   1492      1.1  mrg 
   1493      1.1  mrg # func_sort_ver VER1 VER2
   1494      1.1  mrg # -----------------------
   1495      1.1  mrg # 'sort -V' is not generally available.
   1496      1.1  mrg # Note this deviates from the version comparison in automake
   1497      1.1  mrg # in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a
   1498      1.1  mrg # but this should suffice as we won't be specifying old
   1499      1.1  mrg # version formats or redundant trailing .0 in bootstrap.conf.
   1500      1.1  mrg # If we did want full compatibility then we should probably
   1501      1.1  mrg # use m4_version_compare from autoconf.
   1502      1.1  mrg func_sort_ver ()
   1503      1.1  mrg {
   1504      1.1  mrg     $debug_cmd
   1505      1.1  mrg 
   1506      1.1  mrg     printf '%s\n%s\n' "$1" "$2" \
   1507      1.1  mrg       | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n -k 5,5n -k 6,6n -k 7,7n -k 8,8n -k 9,9n
   1508      1.1  mrg }
   1509      1.1  mrg 
   1510      1.1  mrg # func_lt_ver PREV CURR
   1511      1.1  mrg # ---------------------
   1512      1.1  mrg # Return true if PREV and CURR are in the correct order according to
   1513      1.1  mrg # func_sort_ver, otherwise false.  Use it like this:
   1514      1.1  mrg #
   1515      1.1  mrg #  func_lt_ver "$prev_ver" "$proposed_ver" || func_fatal_error "..."
   1516      1.1  mrg func_lt_ver ()
   1517      1.1  mrg {
   1518      1.1  mrg     $debug_cmd
   1519      1.1  mrg 
   1520      1.1  mrg     test "x$1" = x`func_sort_ver "$1" "$2" | $SED 1q`
   1521      1.1  mrg }
   1522      1.1  mrg 
   1523      1.1  mrg 
   1524      1.1  mrg # Local variables:
   1525      1.1  mrg # mode: shell-script
   1526      1.1  mrg # sh-indentation: 2
   1527      1.1  mrg # eval: (add-hook 'before-save-hook 'time-stamp)
   1528      1.1  mrg # time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC"
   1529      1.1  mrg # time-stamp-time-zone: "UTC"
   1530      1.1  mrg # End:
   1531      1.1  mrg #!/bin/sh
   1532      1.1  mrg 
   1533      1.1  mrg # A portable, pluggable option parser for Bourne shell.
   1534      1.1  mrg # Written by Gary V. Vaughan, 2010
   1535      1.1  mrg 
   1536  1.1.1.2  mrg # This is free software.  There is NO warranty; not even for
   1537  1.1.1.2  mrg # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
   1538  1.1.1.2  mrg #
   1539  1.1.1.2  mrg # Copyright (C) 2010-2019, 2021 Bootstrap Authors
   1540  1.1.1.2  mrg #
   1541  1.1.1.2  mrg # This file is dual licensed under the terms of the MIT license
   1542  1.1.1.2  mrg # <https://opensource.org/license/MIT>, and GPL version 2 or later
   1543  1.1.1.2  mrg # <http://www.gnu.org/licenses/gpl-2.0.html>.  You must apply one of
   1544  1.1.1.2  mrg # these licenses when using or redistributing this software or any of
   1545  1.1.1.2  mrg # the files within it.  See the URLs above, or the file `LICENSE`
   1546  1.1.1.2  mrg # included in the Bootstrap distribution for the full license texts.
   1547      1.1  mrg 
   1548  1.1.1.2  mrg # Please report bugs or propose patches to:
   1549  1.1.1.2  mrg # <https://github.com/gnulib-modules/bootstrap/issues>
   1550      1.1  mrg 
   1551  1.1.1.2  mrg # Set a version string for this script.
   1552  1.1.1.2  mrg scriptversion=2019-02-19.15; # UTC
   1553      1.1  mrg 
   1554      1.1  mrg 
   1555      1.1  mrg ## ------ ##
   1556      1.1  mrg ## Usage. ##
   1557      1.1  mrg ## ------ ##
   1558      1.1  mrg 
   1559      1.1  mrg # This file is a library for parsing options in your shell scripts along
   1560      1.1  mrg # with assorted other useful supporting features that you can make use
   1561      1.1  mrg # of too.
   1562      1.1  mrg #
   1563      1.1  mrg # For the simplest scripts you might need only:
   1564      1.1  mrg #
   1565      1.1  mrg #   #!/bin/sh
   1566      1.1  mrg #   . relative/path/to/funclib.sh
   1567      1.1  mrg #   . relative/path/to/options-parser
   1568      1.1  mrg #   scriptversion=1.0
   1569      1.1  mrg #   func_options ${1+"$@"}
   1570      1.1  mrg #   eval set dummy "$func_options_result"; shift
   1571      1.1  mrg #   ...rest of your script...
   1572      1.1  mrg #
   1573      1.1  mrg # In order for the '--version' option to work, you will need to have a
   1574      1.1  mrg # suitably formatted comment like the one at the top of this file
   1575  1.1.1.2  mrg # starting with '# Written by ' and ending with '# Copyright'.
   1576      1.1  mrg #
   1577      1.1  mrg # For '-h' and '--help' to work, you will also need a one line
   1578      1.1  mrg # description of your script's purpose in a comment directly above the
   1579      1.1  mrg # '# Written by ' line, like the one at the top of this file.
   1580      1.1  mrg #
   1581      1.1  mrg # The default options also support '--debug', which will turn on shell
   1582      1.1  mrg # execution tracing (see the comment above debug_cmd below for another
   1583      1.1  mrg # use), and '--verbose' and the func_verbose function to allow your script
   1584      1.1  mrg # to display verbose messages only when your user has specified
   1585      1.1  mrg # '--verbose'.
   1586      1.1  mrg #
   1587  1.1.1.2  mrg # After sourcing this file, you can plug in processing for additional
   1588      1.1  mrg # options by amending the variables from the 'Configuration' section
   1589      1.1  mrg # below, and following the instructions in the 'Option parsing'
   1590      1.1  mrg # section further down.
   1591      1.1  mrg 
   1592      1.1  mrg ## -------------- ##
   1593      1.1  mrg ## Configuration. ##
   1594      1.1  mrg ## -------------- ##
   1595      1.1  mrg 
   1596      1.1  mrg # You should override these variables in your script after sourcing this
   1597      1.1  mrg # file so that they reflect the customisations you have added to the
   1598      1.1  mrg # option parser.
   1599      1.1  mrg 
   1600      1.1  mrg # The usage line for option parsing errors and the start of '-h' and
   1601      1.1  mrg # '--help' output messages. You can embed shell variables for delayed
   1602      1.1  mrg # expansion at the time the message is displayed, but you will need to
   1603      1.1  mrg # quote other shell meta-characters carefully to prevent them being
   1604      1.1  mrg # expanded when the contents are evaled.
   1605      1.1  mrg usage='$progpath [OPTION]...'
   1606      1.1  mrg 
   1607      1.1  mrg # Short help message in response to '-h' and '--help'.  Add to this or
   1608      1.1  mrg # override it after sourcing this library to reflect the full set of
   1609      1.1  mrg # options your script accepts.
   1610      1.1  mrg usage_message="\
   1611      1.1  mrg        --debug        enable verbose shell tracing
   1612      1.1  mrg    -W, --warnings=CATEGORY
   1613      1.1  mrg                       report the warnings falling in CATEGORY [all]
   1614      1.1  mrg    -v, --verbose      verbosely report processing
   1615      1.1  mrg        --version      print version information and exit
   1616      1.1  mrg    -h, --help         print short or long help message and exit
   1617      1.1  mrg "
   1618      1.1  mrg 
   1619      1.1  mrg # Additional text appended to 'usage_message' in response to '--help'.
   1620      1.1  mrg long_help_message="
   1621      1.1  mrg Warning categories include:
   1622      1.1  mrg        'all'          show all warnings
   1623      1.1  mrg        'none'         turn off all the warnings
   1624      1.1  mrg        'error'        warnings are treated as fatal errors"
   1625      1.1  mrg 
   1626      1.1  mrg # Help message printed before fatal option parsing errors.
   1627      1.1  mrg fatal_help="Try '\$progname --help' for more information."
   1628      1.1  mrg 
   1629      1.1  mrg 
   1630      1.1  mrg 
   1631      1.1  mrg ## ------------------------- ##
   1632      1.1  mrg ## Hook function management. ##
   1633      1.1  mrg ## ------------------------- ##
   1634      1.1  mrg 
   1635      1.1  mrg # This section contains functions for adding, removing, and running hooks
   1636  1.1.1.2  mrg # in the main code.  A hook is just a list of function names that can be
   1637  1.1.1.2  mrg # run in order later on.
   1638      1.1  mrg 
   1639      1.1  mrg # func_hookable FUNC_NAME
   1640      1.1  mrg # -----------------------
   1641      1.1  mrg # Declare that FUNC_NAME will run hooks added with
   1642      1.1  mrg # 'func_add_hook FUNC_NAME ...'.
   1643      1.1  mrg func_hookable ()
   1644      1.1  mrg {
   1645      1.1  mrg     $debug_cmd
   1646      1.1  mrg 
   1647      1.1  mrg     func_append hookable_fns " $1"
   1648      1.1  mrg }
   1649      1.1  mrg 
   1650      1.1  mrg 
   1651      1.1  mrg # func_add_hook FUNC_NAME HOOK_FUNC
   1652      1.1  mrg # ---------------------------------
   1653      1.1  mrg # Request that FUNC_NAME call HOOK_FUNC before it returns.  FUNC_NAME must
   1654      1.1  mrg # first have been declared "hookable" by a call to 'func_hookable'.
   1655      1.1  mrg func_add_hook ()
   1656      1.1  mrg {
   1657      1.1  mrg     $debug_cmd
   1658      1.1  mrg 
   1659      1.1  mrg     case " $hookable_fns " in
   1660      1.1  mrg       *" $1 "*) ;;
   1661      1.1  mrg       *) func_fatal_error "'$1' does not accept hook functions." ;;
   1662      1.1  mrg     esac
   1663      1.1  mrg 
   1664      1.1  mrg     eval func_append ${1}_hooks '" $2"'
   1665      1.1  mrg }
   1666      1.1  mrg 
   1667      1.1  mrg 
   1668      1.1  mrg # func_remove_hook FUNC_NAME HOOK_FUNC
   1669      1.1  mrg # ------------------------------------
   1670  1.1.1.2  mrg # Remove HOOK_FUNC from the list of hook functions to be called by
   1671  1.1.1.2  mrg # FUNC_NAME.
   1672      1.1  mrg func_remove_hook ()
   1673      1.1  mrg {
   1674      1.1  mrg     $debug_cmd
   1675      1.1  mrg 
   1676      1.1  mrg     eval ${1}_hooks='`$ECHO "\$'$1'_hooks" |$SED "s| '$2'||"`'
   1677      1.1  mrg }
   1678      1.1  mrg 
   1679      1.1  mrg 
   1680  1.1.1.2  mrg # func_propagate_result FUNC_NAME_A FUNC_NAME_B
   1681  1.1.1.2  mrg # ---------------------------------------------
   1682  1.1.1.2  mrg # If the *_result variable of FUNC_NAME_A _is set_, assign its value to
   1683  1.1.1.2  mrg # *_result variable of FUNC_NAME_B.
   1684  1.1.1.2  mrg func_propagate_result ()
   1685  1.1.1.2  mrg {
   1686  1.1.1.2  mrg     $debug_cmd
   1687  1.1.1.2  mrg 
   1688  1.1.1.2  mrg     func_propagate_result_result=:
   1689  1.1.1.2  mrg     if eval "test \"\${${1}_result+set}\" = set"
   1690  1.1.1.2  mrg     then
   1691  1.1.1.2  mrg       eval "${2}_result=\$${1}_result"
   1692  1.1.1.2  mrg     else
   1693  1.1.1.2  mrg       func_propagate_result_result=false
   1694  1.1.1.2  mrg     fi
   1695  1.1.1.2  mrg }
   1696  1.1.1.2  mrg 
   1697  1.1.1.2  mrg 
   1698      1.1  mrg # func_run_hooks FUNC_NAME [ARG]...
   1699      1.1  mrg # ---------------------------------
   1700      1.1  mrg # Run all hook functions registered to FUNC_NAME.
   1701  1.1.1.2  mrg # It's assumed that the list of hook functions contains nothing more
   1702      1.1  mrg # than a whitespace-delimited list of legal shell function names, and
   1703      1.1  mrg # no effort is wasted trying to catch shell meta-characters or preserve
   1704      1.1  mrg # whitespace.
   1705      1.1  mrg func_run_hooks ()
   1706      1.1  mrg {
   1707      1.1  mrg     $debug_cmd
   1708      1.1  mrg 
   1709      1.1  mrg     case " $hookable_fns " in
   1710      1.1  mrg       *" $1 "*) ;;
   1711  1.1.1.2  mrg       *) func_fatal_error "'$1' does not support hook functions." ;;
   1712      1.1  mrg     esac
   1713      1.1  mrg 
   1714      1.1  mrg     eval _G_hook_fns=\$$1_hooks; shift
   1715      1.1  mrg 
   1716      1.1  mrg     for _G_hook in $_G_hook_fns; do
   1717  1.1.1.2  mrg       func_unset "${_G_hook}_result"
   1718  1.1.1.2  mrg       eval $_G_hook '${1+"$@"}'
   1719  1.1.1.2  mrg       func_propagate_result $_G_hook func_run_hooks
   1720  1.1.1.2  mrg       if $func_propagate_result_result; then
   1721  1.1.1.2  mrg         eval set dummy "$func_run_hooks_result"; shift
   1722  1.1.1.2  mrg       fi
   1723      1.1  mrg     done
   1724      1.1  mrg }
   1725      1.1  mrg 
   1726      1.1  mrg 
   1727      1.1  mrg 
   1728      1.1  mrg ## --------------- ##
   1729      1.1  mrg ## Option parsing. ##
   1730      1.1  mrg ## --------------- ##
   1731      1.1  mrg 
   1732      1.1  mrg # In order to add your own option parsing hooks, you must accept the
   1733  1.1.1.2  mrg # full positional parameter list from your hook function.  You may remove
   1734  1.1.1.2  mrg # or edit any options that you action, and then pass back the remaining
   1735  1.1.1.2  mrg # unprocessed options in '<hooked_function_name>_result', escaped
   1736  1.1.1.2  mrg # suitably for 'eval'.
   1737  1.1.1.2  mrg #
   1738  1.1.1.2  mrg # The '<hooked_function_name>_result' variable is automatically unset
   1739  1.1.1.2  mrg # before your hook gets called; for best performance, only set the
   1740  1.1.1.2  mrg # *_result variable when necessary (i.e. don't call the 'func_quote'
   1741  1.1.1.2  mrg # function unnecessarily because it can be an expensive operation on some
   1742  1.1.1.2  mrg # machines).
   1743  1.1.1.2  mrg #
   1744  1.1.1.2  mrg # Like this:
   1745      1.1  mrg #
   1746      1.1  mrg #    my_options_prep ()
   1747      1.1  mrg #    {
   1748      1.1  mrg #        $debug_cmd
   1749      1.1  mrg #
   1750      1.1  mrg #        # Extend the existing usage message.
   1751      1.1  mrg #        usage_message=$usage_message'
   1752      1.1  mrg #      -s, --silent       don'\''t print informational messages
   1753      1.1  mrg #    '
   1754  1.1.1.2  mrg #        # No change in '$@' (ignored completely by this hook).  Leave
   1755  1.1.1.2  mrg #        # my_options_prep_result variable intact.
   1756      1.1  mrg #    }
   1757      1.1  mrg #    func_add_hook func_options_prep my_options_prep
   1758      1.1  mrg #
   1759      1.1  mrg #
   1760      1.1  mrg #    my_silent_option ()
   1761      1.1  mrg #    {
   1762      1.1  mrg #        $debug_cmd
   1763      1.1  mrg #
   1764  1.1.1.2  mrg #        args_changed=false
   1765  1.1.1.2  mrg #
   1766  1.1.1.2  mrg #        # Note that, for efficiency, we parse as many options as we can
   1767      1.1  mrg #        # recognise in a loop before passing the remainder back to the
   1768      1.1  mrg #        # caller on the first unrecognised argument we encounter.
   1769      1.1  mrg #        while test $# -gt 0; do
   1770      1.1  mrg #          opt=$1; shift
   1771      1.1  mrg #          case $opt in
   1772  1.1.1.2  mrg #            --silent|-s) opt_silent=:
   1773  1.1.1.2  mrg #                         args_changed=:
   1774  1.1.1.2  mrg #                         ;;
   1775      1.1  mrg #            # Separate non-argument short options:
   1776      1.1  mrg #            -s*)         func_split_short_opt "$_G_opt"
   1777      1.1  mrg #                         set dummy "$func_split_short_opt_name" \
   1778      1.1  mrg #                             "-$func_split_short_opt_arg" ${1+"$@"}
   1779      1.1  mrg #                         shift
   1780  1.1.1.2  mrg #                         args_changed=:
   1781      1.1  mrg #                         ;;
   1782  1.1.1.2  mrg #            *)           # Make sure the first unrecognised option "$_G_opt"
   1783  1.1.1.2  mrg #                         # is added back to "$@" in case we need it later,
   1784  1.1.1.2  mrg #                         # if $args_changed was set to 'true'.
   1785  1.1.1.2  mrg #                         set dummy "$_G_opt" ${1+"$@"}; shift; break ;;
   1786      1.1  mrg #          esac
   1787      1.1  mrg #        done
   1788      1.1  mrg #
   1789  1.1.1.2  mrg #        # Only call 'func_quote' here if we processed at least one argument.
   1790  1.1.1.2  mrg #        if $args_changed; then
   1791  1.1.1.2  mrg #          func_quote eval ${1+"$@"}
   1792  1.1.1.2  mrg #          my_silent_option_result=$func_quote_result
   1793  1.1.1.2  mrg #        fi
   1794      1.1  mrg #    }
   1795      1.1  mrg #    func_add_hook func_parse_options my_silent_option
   1796      1.1  mrg #
   1797      1.1  mrg #
   1798      1.1  mrg #    my_option_validation ()
   1799      1.1  mrg #    {
   1800      1.1  mrg #        $debug_cmd
   1801      1.1  mrg #
   1802      1.1  mrg #        $opt_silent && $opt_verbose && func_fatal_help "\
   1803      1.1  mrg #    '--silent' and '--verbose' options are mutually exclusive."
   1804      1.1  mrg #    }
   1805      1.1  mrg #    func_add_hook func_validate_options my_option_validation
   1806      1.1  mrg #
   1807  1.1.1.2  mrg # You'll also need to manually amend $usage_message to reflect the extra
   1808      1.1  mrg # options you parse.  It's preferable to append if you can, so that
   1809      1.1  mrg # multiple option parsing hooks can be added safely.
   1810      1.1  mrg 
   1811      1.1  mrg 
   1812  1.1.1.2  mrg # func_options_finish [ARG]...
   1813  1.1.1.2  mrg # ----------------------------
   1814  1.1.1.2  mrg # Finishing the option parse loop (call 'func_options' hooks ATM).
   1815  1.1.1.2  mrg func_options_finish ()
   1816  1.1.1.2  mrg {
   1817  1.1.1.2  mrg     $debug_cmd
   1818  1.1.1.2  mrg 
   1819  1.1.1.2  mrg     func_run_hooks func_options ${1+"$@"}
   1820  1.1.1.2  mrg     func_propagate_result func_run_hooks func_options_finish
   1821  1.1.1.2  mrg }
   1822  1.1.1.2  mrg 
   1823  1.1.1.2  mrg 
   1824      1.1  mrg # func_options [ARG]...
   1825      1.1  mrg # ---------------------
   1826      1.1  mrg # All the functions called inside func_options are hookable. See the
   1827      1.1  mrg # individual implementations for details.
   1828      1.1  mrg func_hookable func_options
   1829      1.1  mrg func_options ()
   1830      1.1  mrg {
   1831      1.1  mrg     $debug_cmd
   1832      1.1  mrg 
   1833  1.1.1.2  mrg     _G_options_quoted=false
   1834      1.1  mrg 
   1835  1.1.1.2  mrg     for my_func in options_prep parse_options validate_options options_finish
   1836  1.1.1.2  mrg     do
   1837  1.1.1.2  mrg       func_unset func_${my_func}_result
   1838  1.1.1.2  mrg       func_unset func_run_hooks_result
   1839  1.1.1.2  mrg       eval func_$my_func '${1+"$@"}'
   1840  1.1.1.2  mrg       func_propagate_result func_$my_func func_options
   1841  1.1.1.2  mrg       if $func_propagate_result_result; then
   1842  1.1.1.2  mrg         eval set dummy "$func_options_result"; shift
   1843  1.1.1.2  mrg         _G_options_quoted=:
   1844  1.1.1.2  mrg       fi
   1845  1.1.1.2  mrg     done
   1846      1.1  mrg 
   1847  1.1.1.2  mrg     $_G_options_quoted || {
   1848  1.1.1.2  mrg       # As we (func_options) are top-level options-parser function and
   1849  1.1.1.2  mrg       # nobody quoted "$@" for us yet, we need to do it explicitly for
   1850  1.1.1.2  mrg       # caller.
   1851  1.1.1.2  mrg       func_quote eval ${1+"$@"}
   1852  1.1.1.2  mrg       func_options_result=$func_quote_result
   1853  1.1.1.2  mrg     }
   1854      1.1  mrg }
   1855      1.1  mrg 
   1856      1.1  mrg 
   1857      1.1  mrg # func_options_prep [ARG]...
   1858      1.1  mrg # --------------------------
   1859      1.1  mrg # All initialisations required before starting the option parse loop.
   1860      1.1  mrg # Note that when calling hook functions, we pass through the list of
   1861      1.1  mrg # positional parameters.  If a hook function modifies that list, and
   1862  1.1.1.2  mrg # needs to propagate that back to rest of this script, then the complete
   1863  1.1.1.2  mrg # modified list must be put in 'func_run_hooks_result' before returning.
   1864      1.1  mrg func_hookable func_options_prep
   1865      1.1  mrg func_options_prep ()
   1866      1.1  mrg {
   1867      1.1  mrg     $debug_cmd
   1868      1.1  mrg 
   1869      1.1  mrg     # Option defaults:
   1870      1.1  mrg     opt_verbose=false
   1871      1.1  mrg     opt_warning_types=
   1872      1.1  mrg 
   1873      1.1  mrg     func_run_hooks func_options_prep ${1+"$@"}
   1874  1.1.1.2  mrg     func_propagate_result func_run_hooks func_options_prep
   1875      1.1  mrg }
   1876      1.1  mrg 
   1877      1.1  mrg 
   1878      1.1  mrg # func_parse_options [ARG]...
   1879      1.1  mrg # ---------------------------
   1880      1.1  mrg # The main option parsing loop.
   1881      1.1  mrg func_hookable func_parse_options
   1882      1.1  mrg func_parse_options ()
   1883      1.1  mrg {
   1884      1.1  mrg     $debug_cmd
   1885      1.1  mrg 
   1886  1.1.1.2  mrg     _G_parse_options_requote=false
   1887      1.1  mrg     # this just eases exit handling
   1888      1.1  mrg     while test $# -gt 0; do
   1889      1.1  mrg       # Defer to hook functions for initial option parsing, so they
   1890      1.1  mrg       # get priority in the event of reusing an option name.
   1891      1.1  mrg       func_run_hooks func_parse_options ${1+"$@"}
   1892  1.1.1.2  mrg       func_propagate_result func_run_hooks func_parse_options
   1893  1.1.1.2  mrg       if $func_propagate_result_result; then
   1894  1.1.1.2  mrg         eval set dummy "$func_parse_options_result"; shift
   1895  1.1.1.2  mrg         # Even though we may have changed "$@", we passed the "$@" array
   1896  1.1.1.2  mrg         # down into the hook and it quoted it for us (because we are in
   1897  1.1.1.2  mrg         # this if-branch).  No need to quote it again.
   1898  1.1.1.2  mrg         _G_parse_options_requote=false
   1899  1.1.1.2  mrg       fi
   1900      1.1  mrg 
   1901      1.1  mrg       # Break out of the loop if we already parsed every option.
   1902      1.1  mrg       test $# -gt 0 || break
   1903      1.1  mrg 
   1904  1.1.1.2  mrg       # We expect that one of the options parsed in this function matches
   1905  1.1.1.2  mrg       # and thus we remove _G_opt from "$@" and need to re-quote.
   1906  1.1.1.2  mrg       _G_match_parse_options=:
   1907      1.1  mrg       _G_opt=$1
   1908      1.1  mrg       shift
   1909      1.1  mrg       case $_G_opt in
   1910      1.1  mrg         --debug|-x)   debug_cmd='set -x'
   1911  1.1.1.2  mrg                       func_echo "enabling shell trace mode" >&2
   1912      1.1  mrg                       $debug_cmd
   1913      1.1  mrg                       ;;
   1914      1.1  mrg 
   1915      1.1  mrg         --no-warnings|--no-warning|--no-warn)
   1916      1.1  mrg                       set dummy --warnings none ${1+"$@"}
   1917      1.1  mrg                       shift
   1918      1.1  mrg 		      ;;
   1919      1.1  mrg 
   1920      1.1  mrg         --warnings|--warning|-W)
   1921  1.1.1.2  mrg                       if test $# = 0 && func_missing_arg $_G_opt; then
   1922  1.1.1.2  mrg                         _G_parse_options_requote=:
   1923  1.1.1.2  mrg                         break
   1924  1.1.1.2  mrg                       fi
   1925      1.1  mrg                       case " $warning_categories $1" in
   1926      1.1  mrg                         *" $1 "*)
   1927      1.1  mrg                           # trailing space prevents matching last $1 above
   1928      1.1  mrg                           func_append_uniq opt_warning_types " $1"
   1929      1.1  mrg                           ;;
   1930      1.1  mrg                         *all)
   1931      1.1  mrg                           opt_warning_types=$warning_categories
   1932      1.1  mrg                           ;;
   1933      1.1  mrg                         *none)
   1934      1.1  mrg                           opt_warning_types=none
   1935      1.1  mrg                           warning_func=:
   1936      1.1  mrg                           ;;
   1937      1.1  mrg                         *error)
   1938      1.1  mrg                           opt_warning_types=$warning_categories
   1939      1.1  mrg                           warning_func=func_fatal_error
   1940      1.1  mrg                           ;;
   1941      1.1  mrg                         *)
   1942      1.1  mrg                           func_fatal_error \
   1943      1.1  mrg                              "unsupported warning category: '$1'"
   1944      1.1  mrg                           ;;
   1945      1.1  mrg                       esac
   1946      1.1  mrg                       shift
   1947      1.1  mrg                       ;;
   1948      1.1  mrg 
   1949      1.1  mrg         --verbose|-v) opt_verbose=: ;;
   1950      1.1  mrg         --version)    func_version ;;
   1951      1.1  mrg         -\?|-h)       func_usage ;;
   1952      1.1  mrg         --help)       func_help ;;
   1953      1.1  mrg 
   1954      1.1  mrg 	# Separate optargs to long options (plugins may need this):
   1955      1.1  mrg 	--*=*)        func_split_equals "$_G_opt"
   1956      1.1  mrg 	              set dummy "$func_split_equals_lhs" \
   1957      1.1  mrg                           "$func_split_equals_rhs" ${1+"$@"}
   1958      1.1  mrg                       shift
   1959      1.1  mrg                       ;;
   1960      1.1  mrg 
   1961      1.1  mrg        # Separate optargs to short options:
   1962      1.1  mrg         -W*)
   1963      1.1  mrg                       func_split_short_opt "$_G_opt"
   1964      1.1  mrg                       set dummy "$func_split_short_opt_name" \
   1965      1.1  mrg                           "$func_split_short_opt_arg" ${1+"$@"}
   1966      1.1  mrg                       shift
   1967      1.1  mrg                       ;;
   1968      1.1  mrg 
   1969      1.1  mrg         # Separate non-argument short options:
   1970      1.1  mrg         -\?*|-h*|-v*|-x*)
   1971      1.1  mrg                       func_split_short_opt "$_G_opt"
   1972      1.1  mrg                       set dummy "$func_split_short_opt_name" \
   1973      1.1  mrg                           "-$func_split_short_opt_arg" ${1+"$@"}
   1974      1.1  mrg                       shift
   1975      1.1  mrg                       ;;
   1976      1.1  mrg 
   1977  1.1.1.2  mrg         --)           _G_parse_options_requote=: ; break ;;
   1978      1.1  mrg         -*)           func_fatal_help "unrecognised option: '$_G_opt'" ;;
   1979  1.1.1.2  mrg         *)            set dummy "$_G_opt" ${1+"$@"}; shift
   1980  1.1.1.2  mrg                       _G_match_parse_options=false
   1981  1.1.1.2  mrg                       break
   1982  1.1.1.2  mrg                       ;;
   1983      1.1  mrg       esac
   1984  1.1.1.2  mrg 
   1985  1.1.1.2  mrg       if $_G_match_parse_options; then
   1986  1.1.1.2  mrg         _G_parse_options_requote=:
   1987  1.1.1.2  mrg       fi
   1988      1.1  mrg     done
   1989      1.1  mrg 
   1990  1.1.1.2  mrg     if $_G_parse_options_requote; then
   1991  1.1.1.2  mrg       # save modified positional parameters for caller
   1992  1.1.1.2  mrg       func_quote eval ${1+"$@"}
   1993  1.1.1.2  mrg       func_parse_options_result=$func_quote_result
   1994  1.1.1.2  mrg     fi
   1995      1.1  mrg }
   1996      1.1  mrg 
   1997      1.1  mrg 
   1998      1.1  mrg # func_validate_options [ARG]...
   1999      1.1  mrg # ------------------------------
   2000      1.1  mrg # Perform any sanity checks on option settings and/or unconsumed
   2001      1.1  mrg # arguments.
   2002      1.1  mrg func_hookable func_validate_options
   2003      1.1  mrg func_validate_options ()
   2004      1.1  mrg {
   2005      1.1  mrg     $debug_cmd
   2006      1.1  mrg 
   2007      1.1  mrg     # Display all warnings if -W was not given.
   2008      1.1  mrg     test -n "$opt_warning_types" || opt_warning_types=" $warning_categories"
   2009      1.1  mrg 
   2010      1.1  mrg     func_run_hooks func_validate_options ${1+"$@"}
   2011  1.1.1.2  mrg     func_propagate_result func_run_hooks func_validate_options
   2012      1.1  mrg 
   2013      1.1  mrg     # Bail if the options were screwed!
   2014      1.1  mrg     $exit_cmd $EXIT_FAILURE
   2015      1.1  mrg }
   2016      1.1  mrg 
   2017      1.1  mrg 
   2018      1.1  mrg 
   2019      1.1  mrg ## ----------------- ##
   2020      1.1  mrg ## Helper functions. ##
   2021      1.1  mrg ## ----------------- ##
   2022      1.1  mrg 
   2023      1.1  mrg # This section contains the helper functions used by the rest of the
   2024      1.1  mrg # hookable option parser framework in ascii-betical order.
   2025      1.1  mrg 
   2026      1.1  mrg 
   2027      1.1  mrg # func_fatal_help ARG...
   2028      1.1  mrg # ----------------------
   2029      1.1  mrg # Echo program name prefixed message to standard error, followed by
   2030      1.1  mrg # a help hint, and exit.
   2031      1.1  mrg func_fatal_help ()
   2032      1.1  mrg {
   2033      1.1  mrg     $debug_cmd
   2034      1.1  mrg 
   2035      1.1  mrg     eval \$ECHO \""Usage: $usage"\"
   2036      1.1  mrg     eval \$ECHO \""$fatal_help"\"
   2037      1.1  mrg     func_error ${1+"$@"}
   2038      1.1  mrg     exit $EXIT_FAILURE
   2039      1.1  mrg }
   2040      1.1  mrg 
   2041      1.1  mrg 
   2042      1.1  mrg # func_help
   2043      1.1  mrg # ---------
   2044      1.1  mrg # Echo long help message to standard output and exit.
   2045      1.1  mrg func_help ()
   2046      1.1  mrg {
   2047      1.1  mrg     $debug_cmd
   2048      1.1  mrg 
   2049      1.1  mrg     func_usage_message
   2050      1.1  mrg     $ECHO "$long_help_message"
   2051      1.1  mrg     exit 0
   2052      1.1  mrg }
   2053      1.1  mrg 
   2054      1.1  mrg 
   2055      1.1  mrg # func_missing_arg ARGNAME
   2056      1.1  mrg # ------------------------
   2057      1.1  mrg # Echo program name prefixed message to standard error and set global
   2058      1.1  mrg # exit_cmd.
   2059      1.1  mrg func_missing_arg ()
   2060      1.1  mrg {
   2061      1.1  mrg     $debug_cmd
   2062      1.1  mrg 
   2063      1.1  mrg     func_error "Missing argument for '$1'."
   2064      1.1  mrg     exit_cmd=exit
   2065      1.1  mrg }
   2066      1.1  mrg 
   2067      1.1  mrg 
   2068      1.1  mrg # func_split_equals STRING
   2069      1.1  mrg # ------------------------
   2070  1.1.1.2  mrg # Set func_split_equals_lhs and func_split_equals_rhs shell variables
   2071  1.1.1.2  mrg # after splitting STRING at the '=' sign.
   2072      1.1  mrg test -z "$_G_HAVE_XSI_OPS" \
   2073      1.1  mrg     && (eval 'x=a/b/c;
   2074      1.1  mrg       test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \
   2075      1.1  mrg     && _G_HAVE_XSI_OPS=yes
   2076      1.1  mrg 
   2077      1.1  mrg if test yes = "$_G_HAVE_XSI_OPS"
   2078      1.1  mrg then
   2079      1.1  mrg   # This is an XSI compatible shell, allowing a faster implementation...
   2080      1.1  mrg   eval 'func_split_equals ()
   2081      1.1  mrg   {
   2082      1.1  mrg       $debug_cmd
   2083      1.1  mrg 
   2084      1.1  mrg       func_split_equals_lhs=${1%%=*}
   2085      1.1  mrg       func_split_equals_rhs=${1#*=}
   2086  1.1.1.2  mrg       if test "x$func_split_equals_lhs" = "x$1"; then
   2087  1.1.1.2  mrg         func_split_equals_rhs=
   2088  1.1.1.2  mrg       fi
   2089      1.1  mrg   }'
   2090      1.1  mrg else
   2091      1.1  mrg   # ...otherwise fall back to using expr, which is often a shell builtin.
   2092      1.1  mrg   func_split_equals ()
   2093      1.1  mrg   {
   2094      1.1  mrg       $debug_cmd
   2095      1.1  mrg 
   2096      1.1  mrg       func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'`
   2097      1.1  mrg       func_split_equals_rhs=
   2098  1.1.1.2  mrg       test "x$func_split_equals_lhs=" = "x$1" \
   2099      1.1  mrg         || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'`
   2100      1.1  mrg   }
   2101      1.1  mrg fi #func_split_equals
   2102      1.1  mrg 
   2103      1.1  mrg 
   2104      1.1  mrg # func_split_short_opt SHORTOPT
   2105      1.1  mrg # -----------------------------
   2106      1.1  mrg # Set func_split_short_opt_name and func_split_short_opt_arg shell
   2107      1.1  mrg # variables after splitting SHORTOPT after the 2nd character.
   2108      1.1  mrg if test yes = "$_G_HAVE_XSI_OPS"
   2109      1.1  mrg then
   2110      1.1  mrg   # This is an XSI compatible shell, allowing a faster implementation...
   2111      1.1  mrg   eval 'func_split_short_opt ()
   2112      1.1  mrg   {
   2113      1.1  mrg       $debug_cmd
   2114      1.1  mrg 
   2115      1.1  mrg       func_split_short_opt_arg=${1#??}
   2116      1.1  mrg       func_split_short_opt_name=${1%"$func_split_short_opt_arg"}
   2117      1.1  mrg   }'
   2118      1.1  mrg else
   2119      1.1  mrg   # ...otherwise fall back to using expr, which is often a shell builtin.
   2120      1.1  mrg   func_split_short_opt ()
   2121      1.1  mrg   {
   2122      1.1  mrg       $debug_cmd
   2123      1.1  mrg 
   2124  1.1.1.2  mrg       func_split_short_opt_name=`expr "x$1" : 'x\(-.\)'`
   2125      1.1  mrg       func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'`
   2126      1.1  mrg   }
   2127      1.1  mrg fi #func_split_short_opt
   2128      1.1  mrg 
   2129      1.1  mrg 
   2130      1.1  mrg # func_usage
   2131      1.1  mrg # ----------
   2132      1.1  mrg # Echo short help message to standard output and exit.
   2133      1.1  mrg func_usage ()
   2134      1.1  mrg {
   2135      1.1  mrg     $debug_cmd
   2136      1.1  mrg 
   2137      1.1  mrg     func_usage_message
   2138      1.1  mrg     $ECHO "Run '$progname --help |${PAGER-more}' for full usage"
   2139      1.1  mrg     exit 0
   2140      1.1  mrg }
   2141      1.1  mrg 
   2142      1.1  mrg 
   2143      1.1  mrg # func_usage_message
   2144      1.1  mrg # ------------------
   2145      1.1  mrg # Echo short help message to standard output.
   2146      1.1  mrg func_usage_message ()
   2147      1.1  mrg {
   2148      1.1  mrg     $debug_cmd
   2149      1.1  mrg 
   2150      1.1  mrg     eval \$ECHO \""Usage: $usage"\"
   2151      1.1  mrg     echo
   2152      1.1  mrg     $SED -n 's|^# ||
   2153      1.1  mrg         /^Written by/{
   2154      1.1  mrg           x;p;x
   2155      1.1  mrg         }
   2156      1.1  mrg 	h
   2157      1.1  mrg 	/^Written by/q' < "$progpath"
   2158      1.1  mrg     echo
   2159      1.1  mrg     eval \$ECHO \""$usage_message"\"
   2160      1.1  mrg }
   2161      1.1  mrg 
   2162      1.1  mrg 
   2163      1.1  mrg # func_version
   2164      1.1  mrg # ------------
   2165      1.1  mrg # Echo version message to standard output and exit.
   2166  1.1.1.2  mrg # The version message is extracted from the calling file's header
   2167  1.1.1.2  mrg # comments, with leading '# ' stripped:
   2168  1.1.1.2  mrg #   1. First display the progname and version
   2169  1.1.1.2  mrg #   2. Followed by the header comment line matching  /^# Written by /
   2170  1.1.1.2  mrg #   3. Then a blank line followed by the first following line matching
   2171  1.1.1.2  mrg #      /^# Copyright /
   2172  1.1.1.2  mrg #   4. Immediately followed by any lines between the previous matches,
   2173  1.1.1.2  mrg #      except lines preceding the intervening completely blank line.
   2174  1.1.1.2  mrg # For example, see the header comments of this file.
   2175      1.1  mrg func_version ()
   2176      1.1  mrg {
   2177      1.1  mrg     $debug_cmd
   2178      1.1  mrg 
   2179      1.1  mrg     printf '%s\n' "$progname $scriptversion"
   2180      1.1  mrg     $SED -n '
   2181  1.1.1.2  mrg         /^# Written by /!b
   2182  1.1.1.2  mrg         s|^# ||; p; n
   2183  1.1.1.2  mrg 
   2184  1.1.1.2  mrg         :fwd2blnk
   2185  1.1.1.2  mrg         /./ {
   2186  1.1.1.2  mrg           n
   2187  1.1.1.2  mrg           b fwd2blnk
   2188      1.1  mrg         }
   2189  1.1.1.2  mrg         p; n
   2190  1.1.1.2  mrg 
   2191  1.1.1.2  mrg         :holdwrnt
   2192  1.1.1.2  mrg         s|^# ||
   2193  1.1.1.2  mrg         s|^# *$||
   2194  1.1.1.2  mrg         /^Copyright /!{
   2195  1.1.1.2  mrg           /./H
   2196  1.1.1.2  mrg           n
   2197  1.1.1.2  mrg           b holdwrnt
   2198      1.1  mrg         }
   2199  1.1.1.2  mrg 
   2200  1.1.1.2  mrg         s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2|
   2201  1.1.1.2  mrg         G
   2202  1.1.1.2  mrg         s|\(\n\)\n*|\1|g
   2203  1.1.1.2  mrg         p; q' < "$progpath"
   2204      1.1  mrg 
   2205      1.1  mrg     exit $?
   2206      1.1  mrg }
   2207      1.1  mrg 
   2208      1.1  mrg 
   2209      1.1  mrg # Local variables:
   2210      1.1  mrg # mode: shell-script
   2211      1.1  mrg # sh-indentation: 2
   2212      1.1  mrg # eval: (add-hook 'before-save-hook 'time-stamp)
   2213  1.1.1.2  mrg # time-stamp-pattern: "30/scriptversion=%:y-%02m-%02d.%02H; # UTC"
   2214      1.1  mrg # time-stamp-time-zone: "UTC"
   2215      1.1  mrg # End:
   2216      1.1  mrg 
   2217      1.1  mrg # Set a version string.
   2218  1.1.1.2  mrg scriptversion='(GNU libtool) 2.4.7'
   2219      1.1  mrg 
   2220      1.1  mrg 
   2221      1.1  mrg # func_echo ARG...
   2222      1.1  mrg # ----------------
   2223      1.1  mrg # Libtool also displays the current mode in messages, so override
   2224      1.1  mrg # funclib.sh func_echo with this custom definition.
   2225      1.1  mrg func_echo ()
   2226      1.1  mrg {
   2227      1.1  mrg     $debug_cmd
   2228      1.1  mrg 
   2229      1.1  mrg     _G_message=$*
   2230      1.1  mrg 
   2231      1.1  mrg     func_echo_IFS=$IFS
   2232      1.1  mrg     IFS=$nl
   2233      1.1  mrg     for _G_line in $_G_message; do
   2234      1.1  mrg       IFS=$func_echo_IFS
   2235      1.1  mrg       $ECHO "$progname${opt_mode+: $opt_mode}: $_G_line"
   2236      1.1  mrg     done
   2237      1.1  mrg     IFS=$func_echo_IFS
   2238      1.1  mrg }
   2239      1.1  mrg 
   2240      1.1  mrg 
   2241      1.1  mrg # func_warning ARG...
   2242      1.1  mrg # -------------------
   2243      1.1  mrg # Libtool warnings are not categorized, so override funclib.sh
   2244      1.1  mrg # func_warning with this simpler definition.
   2245      1.1  mrg func_warning ()
   2246      1.1  mrg {
   2247      1.1  mrg     $debug_cmd
   2248      1.1  mrg 
   2249      1.1  mrg     $warning_func ${1+"$@"}
   2250      1.1  mrg }
   2251      1.1  mrg 
   2252      1.1  mrg 
   2253      1.1  mrg ## ---------------- ##
   2254      1.1  mrg ## Options parsing. ##
   2255      1.1  mrg ## ---------------- ##
   2256      1.1  mrg 
   2257      1.1  mrg # Hook in the functions to make sure our own options are parsed during
   2258      1.1  mrg # the option parsing loop.
   2259      1.1  mrg 
   2260      1.1  mrg usage='$progpath [OPTION]... [MODE-ARG]...'
   2261      1.1  mrg 
   2262      1.1  mrg # Short help message in response to '-h'.
   2263      1.1  mrg usage_message="Options:
   2264      1.1  mrg        --config             show all configuration variables
   2265      1.1  mrg        --debug              enable verbose shell tracing
   2266      1.1  mrg    -n, --dry-run            display commands without modifying any files
   2267      1.1  mrg        --features           display basic configuration information and exit
   2268      1.1  mrg        --mode=MODE          use operation mode MODE
   2269      1.1  mrg        --no-warnings        equivalent to '-Wnone'
   2270      1.1  mrg        --preserve-dup-deps  don't remove duplicate dependency libraries
   2271      1.1  mrg        --quiet, --silent    don't print informational messages
   2272      1.1  mrg        --tag=TAG            use configuration variables from tag TAG
   2273      1.1  mrg    -v, --verbose            print more informational messages than default
   2274      1.1  mrg        --version            print version information
   2275      1.1  mrg    -W, --warnings=CATEGORY  report the warnings falling in CATEGORY [all]
   2276      1.1  mrg    -h, --help, --help-all   print short, long, or detailed help message
   2277      1.1  mrg "
   2278      1.1  mrg 
   2279      1.1  mrg # Additional text appended to 'usage_message' in response to '--help'.
   2280      1.1  mrg func_help ()
   2281      1.1  mrg {
   2282      1.1  mrg     $debug_cmd
   2283      1.1  mrg 
   2284      1.1  mrg     func_usage_message
   2285      1.1  mrg     $ECHO "$long_help_message
   2286      1.1  mrg 
   2287      1.1  mrg MODE must be one of the following:
   2288      1.1  mrg 
   2289      1.1  mrg        clean           remove files from the build directory
   2290      1.1  mrg        compile         compile a source file into a libtool object
   2291      1.1  mrg        execute         automatically set library path, then run a program
   2292      1.1  mrg        finish          complete the installation of libtool libraries
   2293      1.1  mrg        install         install libraries or executables
   2294      1.1  mrg        link            create a library or an executable
   2295      1.1  mrg        uninstall       remove libraries from an installed directory
   2296      1.1  mrg 
   2297      1.1  mrg MODE-ARGS vary depending on the MODE.  When passed as first option,
   2298      1.1  mrg '--mode=MODE' may be abbreviated as 'MODE' or a unique abbreviation of that.
   2299      1.1  mrg Try '$progname --help --mode=MODE' for a more detailed description of MODE.
   2300      1.1  mrg 
   2301      1.1  mrg When reporting a bug, please describe a test case to reproduce it and
   2302      1.1  mrg include the following information:
   2303      1.1  mrg 
   2304      1.1  mrg        host-triplet:   $host
   2305      1.1  mrg        shell:          $SHELL
   2306      1.1  mrg        compiler:       $LTCC
   2307      1.1  mrg        compiler flags: $LTCFLAGS
   2308      1.1  mrg        linker:         $LD (gnu? $with_gnu_ld)
   2309  1.1.1.2  mrg        version:        $progname (GNU libtool) 2.4.7
   2310      1.1  mrg        automake:       `($AUTOMAKE --version) 2>/dev/null |$SED 1q`
   2311      1.1  mrg        autoconf:       `($AUTOCONF --version) 2>/dev/null |$SED 1q`
   2312      1.1  mrg 
   2313      1.1  mrg Report bugs to <bug-libtool (at] gnu.org>.
   2314      1.1  mrg GNU libtool home page: <http://www.gnu.org/software/libtool/>.
   2315      1.1  mrg General help using GNU software: <http://www.gnu.org/gethelp/>."
   2316      1.1  mrg     exit 0
   2317      1.1  mrg }
   2318      1.1  mrg 
   2319      1.1  mrg 
   2320      1.1  mrg # func_lo2o OBJECT-NAME
   2321      1.1  mrg # ---------------------
   2322      1.1  mrg # Transform OBJECT-NAME from a '.lo' suffix to the platform specific
   2323      1.1  mrg # object suffix.
   2324      1.1  mrg 
   2325      1.1  mrg lo2o=s/\\.lo\$/.$objext/
   2326      1.1  mrg o2lo=s/\\.$objext\$/.lo/
   2327      1.1  mrg 
   2328      1.1  mrg if test yes = "$_G_HAVE_XSI_OPS"; then
   2329      1.1  mrg   eval 'func_lo2o ()
   2330      1.1  mrg   {
   2331      1.1  mrg     case $1 in
   2332      1.1  mrg       *.lo) func_lo2o_result=${1%.lo}.$objext ;;
   2333      1.1  mrg       *   ) func_lo2o_result=$1               ;;
   2334      1.1  mrg     esac
   2335      1.1  mrg   }'
   2336      1.1  mrg 
   2337      1.1  mrg   # func_xform LIBOBJ-OR-SOURCE
   2338      1.1  mrg   # ---------------------------
   2339      1.1  mrg   # Transform LIBOBJ-OR-SOURCE from a '.o' or '.c' (or otherwise)
   2340      1.1  mrg   # suffix to a '.lo' libtool-object suffix.
   2341      1.1  mrg   eval 'func_xform ()
   2342      1.1  mrg   {
   2343      1.1  mrg     func_xform_result=${1%.*}.lo
   2344      1.1  mrg   }'
   2345      1.1  mrg else
   2346      1.1  mrg   # ...otherwise fall back to using sed.
   2347      1.1  mrg   func_lo2o ()
   2348      1.1  mrg   {
   2349      1.1  mrg     func_lo2o_result=`$ECHO "$1" | $SED "$lo2o"`
   2350      1.1  mrg   }
   2351      1.1  mrg 
   2352      1.1  mrg   func_xform ()
   2353      1.1  mrg   {
   2354      1.1  mrg     func_xform_result=`$ECHO "$1" | $SED 's|\.[^.]*$|.lo|'`
   2355      1.1  mrg   }
   2356      1.1  mrg fi
   2357      1.1  mrg 
   2358      1.1  mrg 
   2359      1.1  mrg # func_fatal_configuration ARG...
   2360      1.1  mrg # -------------------------------
   2361      1.1  mrg # Echo program name prefixed message to standard error, followed by
   2362      1.1  mrg # a configuration failure hint, and exit.
   2363      1.1  mrg func_fatal_configuration ()
   2364      1.1  mrg {
   2365  1.1.1.2  mrg     func_fatal_error ${1+"$@"} \
   2366      1.1  mrg       "See the $PACKAGE documentation for more information." \
   2367      1.1  mrg       "Fatal configuration error."
   2368      1.1  mrg }
   2369      1.1  mrg 
   2370      1.1  mrg 
   2371      1.1  mrg # func_config
   2372      1.1  mrg # -----------
   2373      1.1  mrg # Display the configuration for all the tags in this script.
   2374      1.1  mrg func_config ()
   2375      1.1  mrg {
   2376      1.1  mrg     re_begincf='^# ### BEGIN LIBTOOL'
   2377      1.1  mrg     re_endcf='^# ### END LIBTOOL'
   2378      1.1  mrg 
   2379      1.1  mrg     # Default configuration.
   2380      1.1  mrg     $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
   2381      1.1  mrg 
   2382      1.1  mrg     # Now print the configurations for the tags.
   2383      1.1  mrg     for tagname in $taglist; do
   2384      1.1  mrg       $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
   2385      1.1  mrg     done
   2386      1.1  mrg 
   2387      1.1  mrg     exit $?
   2388      1.1  mrg }
   2389      1.1  mrg 
   2390      1.1  mrg 
   2391      1.1  mrg # func_features
   2392      1.1  mrg # -------------
   2393      1.1  mrg # Display the features supported by this script.
   2394      1.1  mrg func_features ()
   2395      1.1  mrg {
   2396      1.1  mrg     echo "host: $host"
   2397      1.1  mrg     if test yes = "$build_libtool_libs"; then
   2398      1.1  mrg       echo "enable shared libraries"
   2399      1.1  mrg     else
   2400      1.1  mrg       echo "disable shared libraries"
   2401      1.1  mrg     fi
   2402      1.1  mrg     if test yes = "$build_old_libs"; then
   2403      1.1  mrg       echo "enable static libraries"
   2404      1.1  mrg     else
   2405      1.1  mrg       echo "disable static libraries"
   2406      1.1  mrg     fi
   2407      1.1  mrg 
   2408      1.1  mrg     exit $?
   2409      1.1  mrg }
   2410      1.1  mrg 
   2411      1.1  mrg 
   2412      1.1  mrg # func_enable_tag TAGNAME
   2413      1.1  mrg # -----------------------
   2414      1.1  mrg # Verify that TAGNAME is valid, and either flag an error and exit, or
   2415      1.1  mrg # enable the TAGNAME tag.  We also add TAGNAME to the global $taglist
   2416      1.1  mrg # variable here.
   2417      1.1  mrg func_enable_tag ()
   2418      1.1  mrg {
   2419      1.1  mrg     # Global variable:
   2420      1.1  mrg     tagname=$1
   2421      1.1  mrg 
   2422      1.1  mrg     re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
   2423      1.1  mrg     re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
   2424      1.1  mrg     sed_extractcf=/$re_begincf/,/$re_endcf/p
   2425      1.1  mrg 
   2426      1.1  mrg     # Validate tagname.
   2427      1.1  mrg     case $tagname in
   2428      1.1  mrg       *[!-_A-Za-z0-9,/]*)
   2429      1.1  mrg         func_fatal_error "invalid tag name: $tagname"
   2430      1.1  mrg         ;;
   2431      1.1  mrg     esac
   2432      1.1  mrg 
   2433      1.1  mrg     # Don't test for the "default" C tag, as we know it's
   2434      1.1  mrg     # there but not specially marked.
   2435      1.1  mrg     case $tagname in
   2436      1.1  mrg         CC) ;;
   2437      1.1  mrg     *)
   2438      1.1  mrg         if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
   2439      1.1  mrg 	  taglist="$taglist $tagname"
   2440      1.1  mrg 
   2441      1.1  mrg 	  # Evaluate the configuration.  Be careful to quote the path
   2442      1.1  mrg 	  # and the sed script, to avoid splitting on whitespace, but
   2443      1.1  mrg 	  # also don't use non-portable quotes within backquotes within
   2444      1.1  mrg 	  # quotes we have to do it in 2 steps:
   2445      1.1  mrg 	  extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
   2446      1.1  mrg 	  eval "$extractedcf"
   2447      1.1  mrg         else
   2448      1.1  mrg 	  func_error "ignoring unknown tag $tagname"
   2449      1.1  mrg         fi
   2450      1.1  mrg         ;;
   2451      1.1  mrg     esac
   2452      1.1  mrg }
   2453      1.1  mrg 
   2454      1.1  mrg 
   2455      1.1  mrg # func_check_version_match
   2456      1.1  mrg # ------------------------
   2457      1.1  mrg # Ensure that we are using m4 macros, and libtool script from the same
   2458      1.1  mrg # release of libtool.
   2459      1.1  mrg func_check_version_match ()
   2460      1.1  mrg {
   2461      1.1  mrg     if test "$package_revision" != "$macro_revision"; then
   2462      1.1  mrg       if test "$VERSION" != "$macro_version"; then
   2463      1.1  mrg         if test -z "$macro_version"; then
   2464      1.1  mrg           cat >&2 <<_LT_EOF
   2465      1.1  mrg $progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
   2466      1.1  mrg $progname: definition of this LT_INIT comes from an older release.
   2467      1.1  mrg $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
   2468      1.1  mrg $progname: and run autoconf again.
   2469      1.1  mrg _LT_EOF
   2470      1.1  mrg         else
   2471      1.1  mrg           cat >&2 <<_LT_EOF
   2472      1.1  mrg $progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
   2473      1.1  mrg $progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
   2474      1.1  mrg $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
   2475      1.1  mrg $progname: and run autoconf again.
   2476      1.1  mrg _LT_EOF
   2477      1.1  mrg         fi
   2478      1.1  mrg       else
   2479      1.1  mrg         cat >&2 <<_LT_EOF
   2480      1.1  mrg $progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision,
   2481      1.1  mrg $progname: but the definition of this LT_INIT comes from revision $macro_revision.
   2482      1.1  mrg $progname: You should recreate aclocal.m4 with macros from revision $package_revision
   2483      1.1  mrg $progname: of $PACKAGE $VERSION and run autoconf again.
   2484      1.1  mrg _LT_EOF
   2485      1.1  mrg       fi
   2486      1.1  mrg 
   2487      1.1  mrg       exit $EXIT_MISMATCH
   2488      1.1  mrg     fi
   2489      1.1  mrg }
   2490      1.1  mrg 
   2491      1.1  mrg 
   2492      1.1  mrg # libtool_options_prep [ARG]...
   2493      1.1  mrg # -----------------------------
   2494      1.1  mrg # Preparation for options parsed by libtool.
   2495      1.1  mrg libtool_options_prep ()
   2496      1.1  mrg {
   2497      1.1  mrg     $debug_mode
   2498      1.1  mrg 
   2499      1.1  mrg     # Option defaults:
   2500      1.1  mrg     opt_config=false
   2501      1.1  mrg     opt_dlopen=
   2502      1.1  mrg     opt_dry_run=false
   2503      1.1  mrg     opt_help=false
   2504      1.1  mrg     opt_mode=
   2505      1.1  mrg     opt_preserve_dup_deps=false
   2506      1.1  mrg     opt_quiet=false
   2507      1.1  mrg 
   2508      1.1  mrg     nonopt=
   2509      1.1  mrg     preserve_args=
   2510      1.1  mrg 
   2511  1.1.1.2  mrg     _G_rc_lt_options_prep=:
   2512  1.1.1.2  mrg 
   2513      1.1  mrg     # Shorthand for --mode=foo, only valid as the first argument
   2514      1.1  mrg     case $1 in
   2515      1.1  mrg     clean|clea|cle|cl)
   2516      1.1  mrg       shift; set dummy --mode clean ${1+"$@"}; shift
   2517      1.1  mrg       ;;
   2518      1.1  mrg     compile|compil|compi|comp|com|co|c)
   2519      1.1  mrg       shift; set dummy --mode compile ${1+"$@"}; shift
   2520      1.1  mrg       ;;
   2521      1.1  mrg     execute|execut|execu|exec|exe|ex|e)
   2522      1.1  mrg       shift; set dummy --mode execute ${1+"$@"}; shift
   2523      1.1  mrg       ;;
   2524      1.1  mrg     finish|finis|fini|fin|fi|f)
   2525      1.1  mrg       shift; set dummy --mode finish ${1+"$@"}; shift
   2526      1.1  mrg       ;;
   2527      1.1  mrg     install|instal|insta|inst|ins|in|i)
   2528      1.1  mrg       shift; set dummy --mode install ${1+"$@"}; shift
   2529      1.1  mrg       ;;
   2530      1.1  mrg     link|lin|li|l)
   2531      1.1  mrg       shift; set dummy --mode link ${1+"$@"}; shift
   2532      1.1  mrg       ;;
   2533      1.1  mrg     uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
   2534      1.1  mrg       shift; set dummy --mode uninstall ${1+"$@"}; shift
   2535      1.1  mrg       ;;
   2536  1.1.1.2  mrg     *)
   2537  1.1.1.2  mrg       _G_rc_lt_options_prep=false
   2538  1.1.1.2  mrg       ;;
   2539      1.1  mrg     esac
   2540      1.1  mrg 
   2541  1.1.1.2  mrg     if $_G_rc_lt_options_prep; then
   2542  1.1.1.2  mrg       # Pass back the list of options.
   2543  1.1.1.2  mrg       func_quote eval ${1+"$@"}
   2544  1.1.1.2  mrg       libtool_options_prep_result=$func_quote_result
   2545  1.1.1.2  mrg     fi
   2546      1.1  mrg }
   2547      1.1  mrg func_add_hook func_options_prep libtool_options_prep
   2548      1.1  mrg 
   2549      1.1  mrg 
   2550      1.1  mrg # libtool_parse_options [ARG]...
   2551      1.1  mrg # ---------------------------------
   2552      1.1  mrg # Provide handling for libtool specific options.
   2553      1.1  mrg libtool_parse_options ()
   2554      1.1  mrg {
   2555      1.1  mrg     $debug_cmd
   2556      1.1  mrg 
   2557  1.1.1.2  mrg     _G_rc_lt_parse_options=false
   2558  1.1.1.2  mrg 
   2559      1.1  mrg     # Perform our own loop to consume as many options as possible in
   2560      1.1  mrg     # each iteration.
   2561      1.1  mrg     while test $# -gt 0; do
   2562  1.1.1.2  mrg       _G_match_lt_parse_options=:
   2563      1.1  mrg       _G_opt=$1
   2564      1.1  mrg       shift
   2565      1.1  mrg       case $_G_opt in
   2566      1.1  mrg         --dry-run|--dryrun|-n)
   2567      1.1  mrg                         opt_dry_run=:
   2568      1.1  mrg                         ;;
   2569      1.1  mrg 
   2570      1.1  mrg         --config)       func_config ;;
   2571      1.1  mrg 
   2572      1.1  mrg         --dlopen|-dlopen)
   2573      1.1  mrg                         opt_dlopen="${opt_dlopen+$opt_dlopen
   2574      1.1  mrg }$1"
   2575      1.1  mrg                         shift
   2576      1.1  mrg                         ;;
   2577      1.1  mrg 
   2578      1.1  mrg         --preserve-dup-deps)
   2579      1.1  mrg                         opt_preserve_dup_deps=: ;;
   2580      1.1  mrg 
   2581      1.1  mrg         --features)     func_features ;;
   2582      1.1  mrg 
   2583      1.1  mrg         --finish)       set dummy --mode finish ${1+"$@"}; shift ;;
   2584      1.1  mrg 
   2585      1.1  mrg         --help)         opt_help=: ;;
   2586      1.1  mrg 
   2587      1.1  mrg         --help-all)     opt_help=': help-all' ;;
   2588      1.1  mrg 
   2589      1.1  mrg         --mode)         test $# = 0 && func_missing_arg $_G_opt && break
   2590      1.1  mrg                         opt_mode=$1
   2591      1.1  mrg                         case $1 in
   2592      1.1  mrg                           # Valid mode arguments:
   2593      1.1  mrg                           clean|compile|execute|finish|install|link|relink|uninstall) ;;
   2594      1.1  mrg 
   2595      1.1  mrg                           # Catch anything else as an error
   2596      1.1  mrg                           *) func_error "invalid argument for $_G_opt"
   2597      1.1  mrg                              exit_cmd=exit
   2598      1.1  mrg                              break
   2599      1.1  mrg                              ;;
   2600      1.1  mrg                         esac
   2601      1.1  mrg                         shift
   2602      1.1  mrg                         ;;
   2603      1.1  mrg 
   2604      1.1  mrg         --no-silent|--no-quiet)
   2605      1.1  mrg                         opt_quiet=false
   2606      1.1  mrg                         func_append preserve_args " $_G_opt"
   2607      1.1  mrg                         ;;
   2608      1.1  mrg 
   2609      1.1  mrg         --no-warnings|--no-warning|--no-warn)
   2610      1.1  mrg                         opt_warning=false
   2611      1.1  mrg                         func_append preserve_args " $_G_opt"
   2612      1.1  mrg                         ;;
   2613      1.1  mrg 
   2614      1.1  mrg         --no-verbose)
   2615      1.1  mrg                         opt_verbose=false
   2616      1.1  mrg                         func_append preserve_args " $_G_opt"
   2617      1.1  mrg                         ;;
   2618      1.1  mrg 
   2619      1.1  mrg         --silent|--quiet)
   2620      1.1  mrg                         opt_quiet=:
   2621      1.1  mrg                         opt_verbose=false
   2622      1.1  mrg                         func_append preserve_args " $_G_opt"
   2623      1.1  mrg                         ;;
   2624      1.1  mrg 
   2625      1.1  mrg         --tag)          test $# = 0 && func_missing_arg $_G_opt && break
   2626      1.1  mrg                         opt_tag=$1
   2627      1.1  mrg                         func_append preserve_args " $_G_opt $1"
   2628      1.1  mrg                         func_enable_tag "$1"
   2629      1.1  mrg                         shift
   2630      1.1  mrg                         ;;
   2631      1.1  mrg 
   2632      1.1  mrg         --verbose|-v)   opt_quiet=false
   2633      1.1  mrg                         opt_verbose=:
   2634      1.1  mrg                         func_append preserve_args " $_G_opt"
   2635      1.1  mrg                         ;;
   2636      1.1  mrg 
   2637  1.1.1.2  mrg         # An option not handled by this hook function:
   2638  1.1.1.2  mrg         *)              set dummy "$_G_opt" ${1+"$@"} ; shift
   2639  1.1.1.2  mrg                         _G_match_lt_parse_options=false
   2640  1.1.1.2  mrg                         break
   2641  1.1.1.2  mrg                         ;;
   2642      1.1  mrg       esac
   2643  1.1.1.2  mrg       $_G_match_lt_parse_options && _G_rc_lt_parse_options=:
   2644      1.1  mrg     done
   2645      1.1  mrg 
   2646  1.1.1.2  mrg     if $_G_rc_lt_parse_options; then
   2647  1.1.1.2  mrg       # save modified positional parameters for caller
   2648  1.1.1.2  mrg       func_quote eval ${1+"$@"}
   2649  1.1.1.2  mrg       libtool_parse_options_result=$func_quote_result
   2650  1.1.1.2  mrg     fi
   2651      1.1  mrg }
   2652      1.1  mrg func_add_hook func_parse_options libtool_parse_options
   2653      1.1  mrg 
   2654      1.1  mrg 
   2655      1.1  mrg 
   2656      1.1  mrg # libtool_validate_options [ARG]...
   2657      1.1  mrg # ---------------------------------
   2658      1.1  mrg # Perform any sanity checks on option settings and/or unconsumed
   2659      1.1  mrg # arguments.
   2660      1.1  mrg libtool_validate_options ()
   2661      1.1  mrg {
   2662      1.1  mrg     # save first non-option argument
   2663      1.1  mrg     if test 0 -lt $#; then
   2664      1.1  mrg       nonopt=$1
   2665      1.1  mrg       shift
   2666      1.1  mrg     fi
   2667      1.1  mrg 
   2668      1.1  mrg     # preserve --debug
   2669      1.1  mrg     test : = "$debug_cmd" || func_append preserve_args " --debug"
   2670      1.1  mrg 
   2671      1.1  mrg     case $host in
   2672      1.1  mrg       # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452
   2673      1.1  mrg       # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788
   2674      1.1  mrg       *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* | *os2*)
   2675      1.1  mrg         # don't eliminate duplications in $postdeps and $predeps
   2676      1.1  mrg         opt_duplicate_compiler_generated_deps=:
   2677      1.1  mrg         ;;
   2678      1.1  mrg       *)
   2679      1.1  mrg         opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps
   2680      1.1  mrg         ;;
   2681      1.1  mrg     esac
   2682      1.1  mrg 
   2683      1.1  mrg     $opt_help || {
   2684      1.1  mrg       # Sanity checks first:
   2685      1.1  mrg       func_check_version_match
   2686      1.1  mrg 
   2687      1.1  mrg       test yes != "$build_libtool_libs" \
   2688      1.1  mrg         && test yes != "$build_old_libs" \
   2689      1.1  mrg         && func_fatal_configuration "not configured to build any kind of library"
   2690      1.1  mrg 
   2691      1.1  mrg       # Darwin sucks
   2692      1.1  mrg       eval std_shrext=\"$shrext_cmds\"
   2693      1.1  mrg 
   2694      1.1  mrg       # Only execute mode is allowed to have -dlopen flags.
   2695      1.1  mrg       if test -n "$opt_dlopen" && test execute != "$opt_mode"; then
   2696      1.1  mrg         func_error "unrecognized option '-dlopen'"
   2697      1.1  mrg         $ECHO "$help" 1>&2
   2698      1.1  mrg         exit $EXIT_FAILURE
   2699      1.1  mrg       fi
   2700      1.1  mrg 
   2701      1.1  mrg       # Change the help message to a mode-specific one.
   2702      1.1  mrg       generic_help=$help
   2703      1.1  mrg       help="Try '$progname --help --mode=$opt_mode' for more information."
   2704      1.1  mrg     }
   2705      1.1  mrg 
   2706      1.1  mrg     # Pass back the unparsed argument list
   2707  1.1.1.2  mrg     func_quote eval ${1+"$@"}
   2708  1.1.1.2  mrg     libtool_validate_options_result=$func_quote_result
   2709      1.1  mrg }
   2710      1.1  mrg func_add_hook func_validate_options libtool_validate_options
   2711      1.1  mrg 
   2712      1.1  mrg 
   2713      1.1  mrg # Process options as early as possible so that --help and --version
   2714      1.1  mrg # can return quickly.
   2715      1.1  mrg func_options ${1+"$@"}
   2716      1.1  mrg eval set dummy "$func_options_result"; shift
   2717      1.1  mrg 
   2718      1.1  mrg 
   2719      1.1  mrg 
   2720      1.1  mrg ## ----------- ##
   2721      1.1  mrg ##    Main.    ##
   2722      1.1  mrg ## ----------- ##
   2723      1.1  mrg 
   2724      1.1  mrg magic='%%%MAGIC variable%%%'
   2725      1.1  mrg magic_exe='%%%MAGIC EXE variable%%%'
   2726      1.1  mrg 
   2727      1.1  mrg # Global variables.
   2728      1.1  mrg extracted_archives=
   2729      1.1  mrg extracted_serial=0
   2730      1.1  mrg 
   2731      1.1  mrg # If this variable is set in any of the actions, the command in it
   2732      1.1  mrg # will be execed at the end.  This prevents here-documents from being
   2733      1.1  mrg # left over by shells.
   2734      1.1  mrg exec_cmd=
   2735      1.1  mrg 
   2736      1.1  mrg 
   2737      1.1  mrg # A function that is used when there is no print builtin or printf.
   2738      1.1  mrg func_fallback_echo ()
   2739      1.1  mrg {
   2740      1.1  mrg   eval 'cat <<_LTECHO_EOF
   2741      1.1  mrg $1
   2742      1.1  mrg _LTECHO_EOF'
   2743      1.1  mrg }
   2744      1.1  mrg 
   2745      1.1  mrg # func_generated_by_libtool
   2746      1.1  mrg # True iff stdin has been generated by Libtool. This function is only
   2747      1.1  mrg # a basic sanity check; it will hardly flush out determined imposters.
   2748      1.1  mrg func_generated_by_libtool_p ()
   2749      1.1  mrg {
   2750      1.1  mrg   $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
   2751      1.1  mrg }
   2752      1.1  mrg 
   2753      1.1  mrg # func_lalib_p file
   2754      1.1  mrg # True iff FILE is a libtool '.la' library or '.lo' object file.
   2755      1.1  mrg # This function is only a basic sanity check; it will hardly flush out
   2756      1.1  mrg # determined imposters.
   2757      1.1  mrg func_lalib_p ()
   2758      1.1  mrg {
   2759      1.1  mrg     test -f "$1" &&
   2760      1.1  mrg       $SED -e 4q "$1" 2>/dev/null | func_generated_by_libtool_p
   2761      1.1  mrg }
   2762      1.1  mrg 
   2763      1.1  mrg # func_lalib_unsafe_p file
   2764      1.1  mrg # True iff FILE is a libtool '.la' library or '.lo' object file.
   2765      1.1  mrg # This function implements the same check as func_lalib_p without
   2766      1.1  mrg # resorting to external programs.  To this end, it redirects stdin and
   2767      1.1  mrg # closes it afterwards, without saving the original file descriptor.
   2768      1.1  mrg # As a safety measure, use it only where a negative result would be
   2769      1.1  mrg # fatal anyway.  Works if 'file' does not exist.
   2770      1.1  mrg func_lalib_unsafe_p ()
   2771      1.1  mrg {
   2772      1.1  mrg     lalib_p=no
   2773      1.1  mrg     if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
   2774      1.1  mrg 	for lalib_p_l in 1 2 3 4
   2775      1.1  mrg 	do
   2776      1.1  mrg 	    read lalib_p_line
   2777      1.1  mrg 	    case $lalib_p_line in
   2778      1.1  mrg 		\#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
   2779      1.1  mrg 	    esac
   2780      1.1  mrg 	done
   2781      1.1  mrg 	exec 0<&5 5<&-
   2782      1.1  mrg     fi
   2783      1.1  mrg     test yes = "$lalib_p"
   2784      1.1  mrg }
   2785      1.1  mrg 
   2786      1.1  mrg # func_ltwrapper_script_p file
   2787      1.1  mrg # True iff FILE is a libtool wrapper script
   2788      1.1  mrg # This function is only a basic sanity check; it will hardly flush out
   2789      1.1  mrg # determined imposters.
   2790      1.1  mrg func_ltwrapper_script_p ()
   2791      1.1  mrg {
   2792      1.1  mrg     test -f "$1" &&
   2793      1.1  mrg       $lt_truncate_bin < "$1" 2>/dev/null | func_generated_by_libtool_p
   2794      1.1  mrg }
   2795      1.1  mrg 
   2796      1.1  mrg # func_ltwrapper_executable_p file
   2797      1.1  mrg # True iff FILE is a libtool wrapper executable
   2798      1.1  mrg # This function is only a basic sanity check; it will hardly flush out
   2799      1.1  mrg # determined imposters.
   2800      1.1  mrg func_ltwrapper_executable_p ()
   2801      1.1  mrg {
   2802      1.1  mrg     func_ltwrapper_exec_suffix=
   2803      1.1  mrg     case $1 in
   2804      1.1  mrg     *.exe) ;;
   2805      1.1  mrg     *) func_ltwrapper_exec_suffix=.exe ;;
   2806      1.1  mrg     esac
   2807      1.1  mrg     $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
   2808      1.1  mrg }
   2809      1.1  mrg 
   2810      1.1  mrg # func_ltwrapper_scriptname file
   2811      1.1  mrg # Assumes file is an ltwrapper_executable
   2812      1.1  mrg # uses $file to determine the appropriate filename for a
   2813      1.1  mrg # temporary ltwrapper_script.
   2814      1.1  mrg func_ltwrapper_scriptname ()
   2815      1.1  mrg {
   2816      1.1  mrg     func_dirname_and_basename "$1" "" "."
   2817      1.1  mrg     func_stripname '' '.exe' "$func_basename_result"
   2818      1.1  mrg     func_ltwrapper_scriptname_result=$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper
   2819      1.1  mrg }
   2820      1.1  mrg 
   2821      1.1  mrg # func_ltwrapper_p file
   2822      1.1  mrg # True iff FILE is a libtool wrapper script or wrapper executable
   2823      1.1  mrg # This function is only a basic sanity check; it will hardly flush out
   2824      1.1  mrg # determined imposters.
   2825      1.1  mrg func_ltwrapper_p ()
   2826      1.1  mrg {
   2827      1.1  mrg     func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
   2828      1.1  mrg }
   2829      1.1  mrg 
   2830      1.1  mrg 
   2831      1.1  mrg # func_execute_cmds commands fail_cmd
   2832      1.1  mrg # Execute tilde-delimited COMMANDS.
   2833      1.1  mrg # If FAIL_CMD is given, eval that upon failure.
   2834      1.1  mrg # FAIL_CMD may read-access the current command in variable CMD!
   2835      1.1  mrg func_execute_cmds ()
   2836      1.1  mrg {
   2837      1.1  mrg     $debug_cmd
   2838      1.1  mrg 
   2839      1.1  mrg     save_ifs=$IFS; IFS='~'
   2840      1.1  mrg     for cmd in $1; do
   2841      1.1  mrg       IFS=$sp$nl
   2842      1.1  mrg       eval cmd=\"$cmd\"
   2843      1.1  mrg       IFS=$save_ifs
   2844      1.1  mrg       func_show_eval "$cmd" "${2-:}"
   2845      1.1  mrg     done
   2846      1.1  mrg     IFS=$save_ifs
   2847      1.1  mrg }
   2848      1.1  mrg 
   2849      1.1  mrg 
   2850      1.1  mrg # func_source file
   2851      1.1  mrg # Source FILE, adding directory component if necessary.
   2852      1.1  mrg # Note that it is not necessary on cygwin/mingw to append a dot to
   2853      1.1  mrg # FILE even if both FILE and FILE.exe exist: automatic-append-.exe
   2854      1.1  mrg # behavior happens only for exec(3), not for open(2)!  Also, sourcing
   2855      1.1  mrg # 'FILE.' does not work on cygwin managed mounts.
   2856      1.1  mrg func_source ()
   2857      1.1  mrg {
   2858      1.1  mrg     $debug_cmd
   2859      1.1  mrg 
   2860      1.1  mrg     case $1 in
   2861      1.1  mrg     */* | *\\*)	. "$1" ;;
   2862      1.1  mrg     *)		. "./$1" ;;
   2863      1.1  mrg     esac
   2864      1.1  mrg }
   2865      1.1  mrg 
   2866      1.1  mrg 
   2867      1.1  mrg # func_resolve_sysroot PATH
   2868      1.1  mrg # Replace a leading = in PATH with a sysroot.  Store the result into
   2869      1.1  mrg # func_resolve_sysroot_result
   2870      1.1  mrg func_resolve_sysroot ()
   2871      1.1  mrg {
   2872      1.1  mrg   func_resolve_sysroot_result=$1
   2873      1.1  mrg   case $func_resolve_sysroot_result in
   2874      1.1  mrg   =*)
   2875      1.1  mrg     func_stripname '=' '' "$func_resolve_sysroot_result"
   2876      1.1  mrg     func_resolve_sysroot_result=$lt_sysroot$func_stripname_result
   2877      1.1  mrg     ;;
   2878      1.1  mrg   esac
   2879      1.1  mrg }
   2880      1.1  mrg 
   2881      1.1  mrg # func_replace_sysroot PATH
   2882      1.1  mrg # If PATH begins with the sysroot, replace it with = and
   2883      1.1  mrg # store the result into func_replace_sysroot_result.
   2884      1.1  mrg func_replace_sysroot ()
   2885      1.1  mrg {
   2886      1.1  mrg   case $lt_sysroot:$1 in
   2887      1.1  mrg   ?*:"$lt_sysroot"*)
   2888      1.1  mrg     func_stripname "$lt_sysroot" '' "$1"
   2889      1.1  mrg     func_replace_sysroot_result='='$func_stripname_result
   2890      1.1  mrg     ;;
   2891      1.1  mrg   *)
   2892      1.1  mrg     # Including no sysroot.
   2893      1.1  mrg     func_replace_sysroot_result=$1
   2894      1.1  mrg     ;;
   2895      1.1  mrg   esac
   2896      1.1  mrg }
   2897      1.1  mrg 
   2898      1.1  mrg # func_infer_tag arg
   2899      1.1  mrg # Infer tagged configuration to use if any are available and
   2900      1.1  mrg # if one wasn't chosen via the "--tag" command line option.
   2901      1.1  mrg # Only attempt this if the compiler in the base compile
   2902      1.1  mrg # command doesn't match the default compiler.
   2903      1.1  mrg # arg is usually of the form 'gcc ...'
   2904      1.1  mrg func_infer_tag ()
   2905      1.1  mrg {
   2906      1.1  mrg     $debug_cmd
   2907      1.1  mrg 
   2908      1.1  mrg     if test -n "$available_tags" && test -z "$tagname"; then
   2909      1.1  mrg       CC_quoted=
   2910      1.1  mrg       for arg in $CC; do
   2911      1.1  mrg 	func_append_quoted CC_quoted "$arg"
   2912      1.1  mrg       done
   2913      1.1  mrg       CC_expanded=`func_echo_all $CC`
   2914      1.1  mrg       CC_quoted_expanded=`func_echo_all $CC_quoted`
   2915      1.1  mrg       case $@ in
   2916      1.1  mrg       # Blanks in the command may have been stripped by the calling shell,
   2917      1.1  mrg       # but not from the CC environment variable when configure was run.
   2918      1.1  mrg       " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
   2919      1.1  mrg       " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;;
   2920      1.1  mrg       # Blanks at the start of $base_compile will cause this to fail
   2921      1.1  mrg       # if we don't check for them as well.
   2922      1.1  mrg       *)
   2923      1.1  mrg 	for z in $available_tags; do
   2924      1.1  mrg 	  if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
   2925      1.1  mrg 	    # Evaluate the configuration.
   2926      1.1  mrg 	    eval "`$SED -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
   2927      1.1  mrg 	    CC_quoted=
   2928      1.1  mrg 	    for arg in $CC; do
   2929      1.1  mrg 	      # Double-quote args containing other shell metacharacters.
   2930      1.1  mrg 	      func_append_quoted CC_quoted "$arg"
   2931      1.1  mrg 	    done
   2932      1.1  mrg 	    CC_expanded=`func_echo_all $CC`
   2933      1.1  mrg 	    CC_quoted_expanded=`func_echo_all $CC_quoted`
   2934      1.1  mrg 	    case "$@ " in
   2935      1.1  mrg 	    " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
   2936      1.1  mrg 	    " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*)
   2937      1.1  mrg 	      # The compiler in the base compile command matches
   2938      1.1  mrg 	      # the one in the tagged configuration.
   2939      1.1  mrg 	      # Assume this is the tagged configuration we want.
   2940      1.1  mrg 	      tagname=$z
   2941      1.1  mrg 	      break
   2942      1.1  mrg 	      ;;
   2943      1.1  mrg 	    esac
   2944      1.1  mrg 	  fi
   2945      1.1  mrg 	done
   2946      1.1  mrg 	# If $tagname still isn't set, then no tagged configuration
   2947      1.1  mrg 	# was found and let the user know that the "--tag" command
   2948      1.1  mrg 	# line option must be used.
   2949      1.1  mrg 	if test -z "$tagname"; then
   2950      1.1  mrg 	  func_echo "unable to infer tagged configuration"
   2951      1.1  mrg 	  func_fatal_error "specify a tag with '--tag'"
   2952      1.1  mrg #	else
   2953      1.1  mrg #	  func_verbose "using $tagname tagged configuration"
   2954      1.1  mrg 	fi
   2955      1.1  mrg 	;;
   2956      1.1  mrg       esac
   2957      1.1  mrg     fi
   2958      1.1  mrg }
   2959      1.1  mrg 
   2960      1.1  mrg 
   2961      1.1  mrg 
   2962      1.1  mrg # func_write_libtool_object output_name pic_name nonpic_name
   2963      1.1  mrg # Create a libtool object file (analogous to a ".la" file),
   2964      1.1  mrg # but don't create it if we're doing a dry run.
   2965      1.1  mrg func_write_libtool_object ()
   2966      1.1  mrg {
   2967      1.1  mrg     write_libobj=$1
   2968      1.1  mrg     if test yes = "$build_libtool_libs"; then
   2969      1.1  mrg       write_lobj=\'$2\'
   2970      1.1  mrg     else
   2971      1.1  mrg       write_lobj=none
   2972      1.1  mrg     fi
   2973      1.1  mrg 
   2974      1.1  mrg     if test yes = "$build_old_libs"; then
   2975      1.1  mrg       write_oldobj=\'$3\'
   2976      1.1  mrg     else
   2977      1.1  mrg       write_oldobj=none
   2978      1.1  mrg     fi
   2979      1.1  mrg 
   2980      1.1  mrg     $opt_dry_run || {
   2981      1.1  mrg       cat >${write_libobj}T <<EOF
   2982      1.1  mrg # $write_libobj - a libtool object file
   2983      1.1  mrg # Generated by $PROGRAM (GNU $PACKAGE) $VERSION
   2984      1.1  mrg #
   2985      1.1  mrg # Please DO NOT delete this file!
   2986      1.1  mrg # It is necessary for linking the library.
   2987      1.1  mrg 
   2988      1.1  mrg # Name of the PIC object.
   2989      1.1  mrg pic_object=$write_lobj
   2990      1.1  mrg 
   2991      1.1  mrg # Name of the non-PIC object
   2992      1.1  mrg non_pic_object=$write_oldobj
   2993      1.1  mrg 
   2994      1.1  mrg EOF
   2995      1.1  mrg       $MV "${write_libobj}T" "$write_libobj"
   2996      1.1  mrg     }
   2997      1.1  mrg }
   2998      1.1  mrg 
   2999      1.1  mrg 
   3000      1.1  mrg ##################################################
   3001      1.1  mrg # FILE NAME AND PATH CONVERSION HELPER FUNCTIONS #
   3002      1.1  mrg ##################################################
   3003      1.1  mrg 
   3004      1.1  mrg # func_convert_core_file_wine_to_w32 ARG
   3005      1.1  mrg # Helper function used by file name conversion functions when $build is *nix,
   3006      1.1  mrg # and $host is mingw, cygwin, or some other w32 environment. Relies on a
   3007      1.1  mrg # correctly configured wine environment available, with the winepath program
   3008      1.1  mrg # in $build's $PATH.
   3009      1.1  mrg #
   3010      1.1  mrg # ARG is the $build file name to be converted to w32 format.
   3011      1.1  mrg # Result is available in $func_convert_core_file_wine_to_w32_result, and will
   3012      1.1  mrg # be empty on error (or when ARG is empty)
   3013      1.1  mrg func_convert_core_file_wine_to_w32 ()
   3014      1.1  mrg {
   3015      1.1  mrg   $debug_cmd
   3016      1.1  mrg 
   3017      1.1  mrg   func_convert_core_file_wine_to_w32_result=$1
   3018      1.1  mrg   if test -n "$1"; then
   3019      1.1  mrg     # Unfortunately, winepath does not exit with a non-zero error code, so we
   3020      1.1  mrg     # are forced to check the contents of stdout. On the other hand, if the
   3021      1.1  mrg     # command is not found, the shell will set an exit code of 127 and print
   3022      1.1  mrg     # *an error message* to stdout. So we must check for both error code of
   3023      1.1  mrg     # zero AND non-empty stdout, which explains the odd construction:
   3024      1.1  mrg     func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null`
   3025      1.1  mrg     if test "$?" -eq 0 && test -n "$func_convert_core_file_wine_to_w32_tmp"; then
   3026      1.1  mrg       func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" |
   3027      1.1  mrg         $SED -e "$sed_naive_backslashify"`
   3028      1.1  mrg     else
   3029      1.1  mrg       func_convert_core_file_wine_to_w32_result=
   3030      1.1  mrg     fi
   3031      1.1  mrg   fi
   3032      1.1  mrg }
   3033      1.1  mrg # end: func_convert_core_file_wine_to_w32
   3034      1.1  mrg 
   3035      1.1  mrg 
   3036      1.1  mrg # func_convert_core_path_wine_to_w32 ARG
   3037      1.1  mrg # Helper function used by path conversion functions when $build is *nix, and
   3038      1.1  mrg # $host is mingw, cygwin, or some other w32 environment. Relies on a correctly
   3039      1.1  mrg # configured wine environment available, with the winepath program in $build's
   3040      1.1  mrg # $PATH. Assumes ARG has no leading or trailing path separator characters.
   3041      1.1  mrg #
   3042      1.1  mrg # ARG is path to be converted from $build format to win32.
   3043      1.1  mrg # Result is available in $func_convert_core_path_wine_to_w32_result.
   3044      1.1  mrg # Unconvertible file (directory) names in ARG are skipped; if no directory names
   3045      1.1  mrg # are convertible, then the result may be empty.
   3046      1.1  mrg func_convert_core_path_wine_to_w32 ()
   3047      1.1  mrg {
   3048      1.1  mrg   $debug_cmd
   3049      1.1  mrg 
   3050      1.1  mrg   # unfortunately, winepath doesn't convert paths, only file names
   3051      1.1  mrg   func_convert_core_path_wine_to_w32_result=
   3052      1.1  mrg   if test -n "$1"; then
   3053      1.1  mrg     oldIFS=$IFS
   3054      1.1  mrg     IFS=:
   3055      1.1  mrg     for func_convert_core_path_wine_to_w32_f in $1; do
   3056      1.1  mrg       IFS=$oldIFS
   3057      1.1  mrg       func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f"
   3058      1.1  mrg       if test -n "$func_convert_core_file_wine_to_w32_result"; then
   3059      1.1  mrg         if test -z "$func_convert_core_path_wine_to_w32_result"; then
   3060      1.1  mrg           func_convert_core_path_wine_to_w32_result=$func_convert_core_file_wine_to_w32_result
   3061      1.1  mrg         else
   3062      1.1  mrg           func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result"
   3063      1.1  mrg         fi
   3064      1.1  mrg       fi
   3065      1.1  mrg     done
   3066      1.1  mrg     IFS=$oldIFS
   3067      1.1  mrg   fi
   3068      1.1  mrg }
   3069      1.1  mrg # end: func_convert_core_path_wine_to_w32
   3070      1.1  mrg 
   3071      1.1  mrg 
   3072      1.1  mrg # func_cygpath ARGS...
   3073      1.1  mrg # Wrapper around calling the cygpath program via LT_CYGPATH. This is used when
   3074      1.1  mrg # when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2)
   3075      1.1  mrg # $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or
   3076      1.1  mrg # (2), returns the Cygwin file name or path in func_cygpath_result (input
   3077      1.1  mrg # file name or path is assumed to be in w32 format, as previously converted
   3078      1.1  mrg # from $build's *nix or MSYS format). In case (3), returns the w32 file name
   3079      1.1  mrg # or path in func_cygpath_result (input file name or path is assumed to be in
   3080      1.1  mrg # Cygwin format). Returns an empty string on error.
   3081      1.1  mrg #
   3082      1.1  mrg # ARGS are passed to cygpath, with the last one being the file name or path to
   3083      1.1  mrg # be converted.
   3084      1.1  mrg #
   3085      1.1  mrg # Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH
   3086      1.1  mrg # environment variable; do not put it in $PATH.
   3087      1.1  mrg func_cygpath ()
   3088      1.1  mrg {
   3089      1.1  mrg   $debug_cmd
   3090      1.1  mrg 
   3091      1.1  mrg   if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then
   3092      1.1  mrg     func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null`
   3093      1.1  mrg     if test "$?" -ne 0; then
   3094      1.1  mrg       # on failure, ensure result is empty
   3095      1.1  mrg       func_cygpath_result=
   3096      1.1  mrg     fi
   3097      1.1  mrg   else
   3098      1.1  mrg     func_cygpath_result=
   3099      1.1  mrg     func_error "LT_CYGPATH is empty or specifies non-existent file: '$LT_CYGPATH'"
   3100      1.1  mrg   fi
   3101      1.1  mrg }
   3102      1.1  mrg #end: func_cygpath
   3103      1.1  mrg 
   3104      1.1  mrg 
   3105      1.1  mrg # func_convert_core_msys_to_w32 ARG
   3106      1.1  mrg # Convert file name or path ARG from MSYS format to w32 format.  Return
   3107      1.1  mrg # result in func_convert_core_msys_to_w32_result.
   3108      1.1  mrg func_convert_core_msys_to_w32 ()
   3109      1.1  mrg {
   3110      1.1  mrg   $debug_cmd
   3111      1.1  mrg 
   3112      1.1  mrg   # awkward: cmd appends spaces to result
   3113      1.1  mrg   func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null |
   3114      1.1  mrg     $SED -e 's/[ ]*$//' -e "$sed_naive_backslashify"`
   3115      1.1  mrg }
   3116      1.1  mrg #end: func_convert_core_msys_to_w32
   3117      1.1  mrg 
   3118      1.1  mrg 
   3119      1.1  mrg # func_convert_file_check ARG1 ARG2
   3120      1.1  mrg # Verify that ARG1 (a file name in $build format) was converted to $host
   3121      1.1  mrg # format in ARG2. Otherwise, emit an error message, but continue (resetting
   3122      1.1  mrg # func_to_host_file_result to ARG1).
   3123      1.1  mrg func_convert_file_check ()
   3124      1.1  mrg {
   3125      1.1  mrg   $debug_cmd
   3126      1.1  mrg 
   3127      1.1  mrg   if test -z "$2" && test -n "$1"; then
   3128      1.1  mrg     func_error "Could not determine host file name corresponding to"
   3129      1.1  mrg     func_error "  '$1'"
   3130      1.1  mrg     func_error "Continuing, but uninstalled executables may not work."
   3131      1.1  mrg     # Fallback:
   3132      1.1  mrg     func_to_host_file_result=$1
   3133      1.1  mrg   fi
   3134      1.1  mrg }
   3135      1.1  mrg # end func_convert_file_check
   3136      1.1  mrg 
   3137      1.1  mrg 
   3138      1.1  mrg # func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH
   3139      1.1  mrg # Verify that FROM_PATH (a path in $build format) was converted to $host
   3140      1.1  mrg # format in TO_PATH. Otherwise, emit an error message, but continue, resetting
   3141      1.1  mrg # func_to_host_file_result to a simplistic fallback value (see below).
   3142      1.1  mrg func_convert_path_check ()
   3143      1.1  mrg {
   3144      1.1  mrg   $debug_cmd
   3145      1.1  mrg 
   3146      1.1  mrg   if test -z "$4" && test -n "$3"; then
   3147      1.1  mrg     func_error "Could not determine the host path corresponding to"
   3148      1.1  mrg     func_error "  '$3'"
   3149      1.1  mrg     func_error "Continuing, but uninstalled executables may not work."
   3150      1.1  mrg     # Fallback.  This is a deliberately simplistic "conversion" and
   3151      1.1  mrg     # should not be "improved".  See libtool.info.
   3152      1.1  mrg     if test "x$1" != "x$2"; then
   3153      1.1  mrg       lt_replace_pathsep_chars="s|$1|$2|g"
   3154      1.1  mrg       func_to_host_path_result=`echo "$3" |
   3155      1.1  mrg         $SED -e "$lt_replace_pathsep_chars"`
   3156      1.1  mrg     else
   3157      1.1  mrg       func_to_host_path_result=$3
   3158      1.1  mrg     fi
   3159      1.1  mrg   fi
   3160      1.1  mrg }
   3161      1.1  mrg # end func_convert_path_check
   3162      1.1  mrg 
   3163      1.1  mrg 
   3164      1.1  mrg # func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG
   3165      1.1  mrg # Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT
   3166      1.1  mrg # and appending REPL if ORIG matches BACKPAT.
   3167      1.1  mrg func_convert_path_front_back_pathsep ()
   3168      1.1  mrg {
   3169      1.1  mrg   $debug_cmd
   3170      1.1  mrg 
   3171      1.1  mrg   case $4 in
   3172      1.1  mrg   $1 ) func_to_host_path_result=$3$func_to_host_path_result
   3173      1.1  mrg     ;;
   3174      1.1  mrg   esac
   3175      1.1  mrg   case $4 in
   3176      1.1  mrg   $2 ) func_append func_to_host_path_result "$3"
   3177      1.1  mrg     ;;
   3178      1.1  mrg   esac
   3179      1.1  mrg }
   3180      1.1  mrg # end func_convert_path_front_back_pathsep
   3181      1.1  mrg 
   3182      1.1  mrg 
   3183      1.1  mrg ##################################################
   3184      1.1  mrg # $build to $host FILE NAME CONVERSION FUNCTIONS #
   3185      1.1  mrg ##################################################
   3186      1.1  mrg # invoked via '$to_host_file_cmd ARG'
   3187      1.1  mrg #
   3188      1.1  mrg # In each case, ARG is the path to be converted from $build to $host format.
   3189      1.1  mrg # Result will be available in $func_to_host_file_result.
   3190      1.1  mrg 
   3191      1.1  mrg 
   3192      1.1  mrg # func_to_host_file ARG
   3193      1.1  mrg # Converts the file name ARG from $build format to $host format. Return result
   3194      1.1  mrg # in func_to_host_file_result.
   3195      1.1  mrg func_to_host_file ()
   3196      1.1  mrg {
   3197      1.1  mrg   $debug_cmd
   3198      1.1  mrg 
   3199      1.1  mrg   $to_host_file_cmd "$1"
   3200      1.1  mrg }
   3201      1.1  mrg # end func_to_host_file
   3202      1.1  mrg 
   3203      1.1  mrg 
   3204      1.1  mrg # func_to_tool_file ARG LAZY
   3205      1.1  mrg # converts the file name ARG from $build format to toolchain format. Return
   3206      1.1  mrg # result in func_to_tool_file_result.  If the conversion in use is listed
   3207      1.1  mrg # in (the comma separated) LAZY, no conversion takes place.
   3208      1.1  mrg func_to_tool_file ()
   3209      1.1  mrg {
   3210      1.1  mrg   $debug_cmd
   3211      1.1  mrg 
   3212      1.1  mrg   case ,$2, in
   3213      1.1  mrg     *,"$to_tool_file_cmd",*)
   3214      1.1  mrg       func_to_tool_file_result=$1
   3215      1.1  mrg       ;;
   3216      1.1  mrg     *)
   3217      1.1  mrg       $to_tool_file_cmd "$1"
   3218      1.1  mrg       func_to_tool_file_result=$func_to_host_file_result
   3219      1.1  mrg       ;;
   3220      1.1  mrg   esac
   3221      1.1  mrg }
   3222      1.1  mrg # end func_to_tool_file
   3223      1.1  mrg 
   3224      1.1  mrg 
   3225      1.1  mrg # func_convert_file_noop ARG
   3226      1.1  mrg # Copy ARG to func_to_host_file_result.
   3227      1.1  mrg func_convert_file_noop ()
   3228      1.1  mrg {
   3229      1.1  mrg   func_to_host_file_result=$1
   3230      1.1  mrg }
   3231      1.1  mrg # end func_convert_file_noop
   3232      1.1  mrg 
   3233      1.1  mrg 
   3234      1.1  mrg # func_convert_file_msys_to_w32 ARG
   3235      1.1  mrg # Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic
   3236      1.1  mrg # conversion to w32 is not available inside the cwrapper.  Returns result in
   3237      1.1  mrg # func_to_host_file_result.
   3238      1.1  mrg func_convert_file_msys_to_w32 ()
   3239      1.1  mrg {
   3240      1.1  mrg   $debug_cmd
   3241      1.1  mrg 
   3242      1.1  mrg   func_to_host_file_result=$1
   3243      1.1  mrg   if test -n "$1"; then
   3244      1.1  mrg     func_convert_core_msys_to_w32 "$1"
   3245      1.1  mrg     func_to_host_file_result=$func_convert_core_msys_to_w32_result
   3246      1.1  mrg   fi
   3247      1.1  mrg   func_convert_file_check "$1" "$func_to_host_file_result"
   3248      1.1  mrg }
   3249      1.1  mrg # end func_convert_file_msys_to_w32
   3250      1.1  mrg 
   3251      1.1  mrg 
   3252      1.1  mrg # func_convert_file_cygwin_to_w32 ARG
   3253      1.1  mrg # Convert file name ARG from Cygwin to w32 format.  Returns result in
   3254      1.1  mrg # func_to_host_file_result.
   3255      1.1  mrg func_convert_file_cygwin_to_w32 ()
   3256      1.1  mrg {
   3257      1.1  mrg   $debug_cmd
   3258      1.1  mrg 
   3259      1.1  mrg   func_to_host_file_result=$1
   3260      1.1  mrg   if test -n "$1"; then
   3261      1.1  mrg     # because $build is cygwin, we call "the" cygpath in $PATH; no need to use
   3262      1.1  mrg     # LT_CYGPATH in this case.
   3263      1.1  mrg     func_to_host_file_result=`cygpath -m "$1"`
   3264      1.1  mrg   fi
   3265      1.1  mrg   func_convert_file_check "$1" "$func_to_host_file_result"
   3266      1.1  mrg }
   3267      1.1  mrg # end func_convert_file_cygwin_to_w32
   3268      1.1  mrg 
   3269      1.1  mrg 
   3270      1.1  mrg # func_convert_file_nix_to_w32 ARG
   3271      1.1  mrg # Convert file name ARG from *nix to w32 format.  Requires a wine environment
   3272      1.1  mrg # and a working winepath. Returns result in func_to_host_file_result.
   3273      1.1  mrg func_convert_file_nix_to_w32 ()
   3274      1.1  mrg {
   3275      1.1  mrg   $debug_cmd
   3276      1.1  mrg 
   3277      1.1  mrg   func_to_host_file_result=$1
   3278      1.1  mrg   if test -n "$1"; then
   3279      1.1  mrg     func_convert_core_file_wine_to_w32 "$1"
   3280      1.1  mrg     func_to_host_file_result=$func_convert_core_file_wine_to_w32_result
   3281      1.1  mrg   fi
   3282      1.1  mrg   func_convert_file_check "$1" "$func_to_host_file_result"
   3283      1.1  mrg }
   3284      1.1  mrg # end func_convert_file_nix_to_w32
   3285      1.1  mrg 
   3286      1.1  mrg 
   3287      1.1  mrg # func_convert_file_msys_to_cygwin ARG
   3288      1.1  mrg # Convert file name ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
   3289      1.1  mrg # Returns result in func_to_host_file_result.
   3290      1.1  mrg func_convert_file_msys_to_cygwin ()
   3291      1.1  mrg {
   3292      1.1  mrg   $debug_cmd
   3293      1.1  mrg 
   3294      1.1  mrg   func_to_host_file_result=$1
   3295      1.1  mrg   if test -n "$1"; then
   3296      1.1  mrg     func_convert_core_msys_to_w32 "$1"
   3297      1.1  mrg     func_cygpath -u "$func_convert_core_msys_to_w32_result"
   3298      1.1  mrg     func_to_host_file_result=$func_cygpath_result
   3299      1.1  mrg   fi
   3300      1.1  mrg   func_convert_file_check "$1" "$func_to_host_file_result"
   3301      1.1  mrg }
   3302      1.1  mrg # end func_convert_file_msys_to_cygwin
   3303      1.1  mrg 
   3304      1.1  mrg 
   3305      1.1  mrg # func_convert_file_nix_to_cygwin ARG
   3306      1.1  mrg # Convert file name ARG from *nix to Cygwin format.  Requires Cygwin installed
   3307      1.1  mrg # in a wine environment, working winepath, and LT_CYGPATH set.  Returns result
   3308      1.1  mrg # in func_to_host_file_result.
   3309      1.1  mrg func_convert_file_nix_to_cygwin ()
   3310      1.1  mrg {
   3311      1.1  mrg   $debug_cmd
   3312      1.1  mrg 
   3313      1.1  mrg   func_to_host_file_result=$1
   3314      1.1  mrg   if test -n "$1"; then
   3315      1.1  mrg     # convert from *nix to w32, then use cygpath to convert from w32 to cygwin.
   3316      1.1  mrg     func_convert_core_file_wine_to_w32 "$1"
   3317      1.1  mrg     func_cygpath -u "$func_convert_core_file_wine_to_w32_result"
   3318      1.1  mrg     func_to_host_file_result=$func_cygpath_result
   3319      1.1  mrg   fi
   3320      1.1  mrg   func_convert_file_check "$1" "$func_to_host_file_result"
   3321      1.1  mrg }
   3322      1.1  mrg # end func_convert_file_nix_to_cygwin
   3323      1.1  mrg 
   3324      1.1  mrg 
   3325      1.1  mrg #############################################
   3326      1.1  mrg # $build to $host PATH CONVERSION FUNCTIONS #
   3327      1.1  mrg #############################################
   3328      1.1  mrg # invoked via '$to_host_path_cmd ARG'
   3329      1.1  mrg #
   3330      1.1  mrg # In each case, ARG is the path to be converted from $build to $host format.
   3331      1.1  mrg # The result will be available in $func_to_host_path_result.
   3332      1.1  mrg #
   3333      1.1  mrg # Path separators are also converted from $build format to $host format.  If
   3334      1.1  mrg # ARG begins or ends with a path separator character, it is preserved (but
   3335      1.1  mrg # converted to $host format) on output.
   3336      1.1  mrg #
   3337      1.1  mrg # All path conversion functions are named using the following convention:
   3338      1.1  mrg #   file name conversion function    : func_convert_file_X_to_Y ()
   3339      1.1  mrg #   path conversion function         : func_convert_path_X_to_Y ()
   3340      1.1  mrg # where, for any given $build/$host combination the 'X_to_Y' value is the
   3341      1.1  mrg # same.  If conversion functions are added for new $build/$host combinations,
   3342      1.1  mrg # the two new functions must follow this pattern, or func_init_to_host_path_cmd
   3343      1.1  mrg # will break.
   3344      1.1  mrg 
   3345      1.1  mrg 
   3346      1.1  mrg # func_init_to_host_path_cmd
   3347      1.1  mrg # Ensures that function "pointer" variable $to_host_path_cmd is set to the
   3348      1.1  mrg # appropriate value, based on the value of $to_host_file_cmd.
   3349      1.1  mrg to_host_path_cmd=
   3350      1.1  mrg func_init_to_host_path_cmd ()
   3351      1.1  mrg {
   3352      1.1  mrg   $debug_cmd
   3353      1.1  mrg 
   3354      1.1  mrg   if test -z "$to_host_path_cmd"; then
   3355      1.1  mrg     func_stripname 'func_convert_file_' '' "$to_host_file_cmd"
   3356      1.1  mrg     to_host_path_cmd=func_convert_path_$func_stripname_result
   3357      1.1  mrg   fi
   3358      1.1  mrg }
   3359      1.1  mrg 
   3360      1.1  mrg 
   3361      1.1  mrg # func_to_host_path ARG
   3362      1.1  mrg # Converts the path ARG from $build format to $host format. Return result
   3363      1.1  mrg # in func_to_host_path_result.
   3364      1.1  mrg func_to_host_path ()
   3365      1.1  mrg {
   3366      1.1  mrg   $debug_cmd
   3367      1.1  mrg 
   3368      1.1  mrg   func_init_to_host_path_cmd
   3369      1.1  mrg   $to_host_path_cmd "$1"
   3370      1.1  mrg }
   3371      1.1  mrg # end func_to_host_path
   3372      1.1  mrg 
   3373      1.1  mrg 
   3374      1.1  mrg # func_convert_path_noop ARG
   3375      1.1  mrg # Copy ARG to func_to_host_path_result.
   3376      1.1  mrg func_convert_path_noop ()
   3377      1.1  mrg {
   3378      1.1  mrg   func_to_host_path_result=$1
   3379      1.1  mrg }
   3380      1.1  mrg # end func_convert_path_noop
   3381      1.1  mrg 
   3382      1.1  mrg 
   3383      1.1  mrg # func_convert_path_msys_to_w32 ARG
   3384      1.1  mrg # Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic
   3385      1.1  mrg # conversion to w32 is not available inside the cwrapper.  Returns result in
   3386      1.1  mrg # func_to_host_path_result.
   3387      1.1  mrg func_convert_path_msys_to_w32 ()
   3388      1.1  mrg {
   3389      1.1  mrg   $debug_cmd
   3390      1.1  mrg 
   3391      1.1  mrg   func_to_host_path_result=$1
   3392      1.1  mrg   if test -n "$1"; then
   3393      1.1  mrg     # Remove leading and trailing path separator characters from ARG.  MSYS
   3394      1.1  mrg     # behavior is inconsistent here; cygpath turns them into '.;' and ';.';
   3395      1.1  mrg     # and winepath ignores them completely.
   3396      1.1  mrg     func_stripname : : "$1"
   3397      1.1  mrg     func_to_host_path_tmp1=$func_stripname_result
   3398      1.1  mrg     func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
   3399      1.1  mrg     func_to_host_path_result=$func_convert_core_msys_to_w32_result
   3400      1.1  mrg     func_convert_path_check : ";" \
   3401      1.1  mrg       "$func_to_host_path_tmp1" "$func_to_host_path_result"
   3402      1.1  mrg     func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
   3403      1.1  mrg   fi
   3404      1.1  mrg }
   3405      1.1  mrg # end func_convert_path_msys_to_w32
   3406      1.1  mrg 
   3407      1.1  mrg 
   3408      1.1  mrg # func_convert_path_cygwin_to_w32 ARG
   3409      1.1  mrg # Convert path ARG from Cygwin to w32 format.  Returns result in
   3410      1.1  mrg # func_to_host_file_result.
   3411      1.1  mrg func_convert_path_cygwin_to_w32 ()
   3412      1.1  mrg {
   3413      1.1  mrg   $debug_cmd
   3414      1.1  mrg 
   3415      1.1  mrg   func_to_host_path_result=$1
   3416      1.1  mrg   if test -n "$1"; then
   3417      1.1  mrg     # See func_convert_path_msys_to_w32:
   3418      1.1  mrg     func_stripname : : "$1"
   3419      1.1  mrg     func_to_host_path_tmp1=$func_stripname_result
   3420      1.1  mrg     func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"`
   3421      1.1  mrg     func_convert_path_check : ";" \
   3422      1.1  mrg       "$func_to_host_path_tmp1" "$func_to_host_path_result"
   3423      1.1  mrg     func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
   3424      1.1  mrg   fi
   3425      1.1  mrg }
   3426      1.1  mrg # end func_convert_path_cygwin_to_w32
   3427      1.1  mrg 
   3428      1.1  mrg 
   3429      1.1  mrg # func_convert_path_nix_to_w32 ARG
   3430      1.1  mrg # Convert path ARG from *nix to w32 format.  Requires a wine environment and
   3431      1.1  mrg # a working winepath.  Returns result in func_to_host_file_result.
   3432      1.1  mrg func_convert_path_nix_to_w32 ()
   3433      1.1  mrg {
   3434      1.1  mrg   $debug_cmd
   3435      1.1  mrg 
   3436      1.1  mrg   func_to_host_path_result=$1
   3437      1.1  mrg   if test -n "$1"; then
   3438      1.1  mrg     # See func_convert_path_msys_to_w32:
   3439      1.1  mrg     func_stripname : : "$1"
   3440      1.1  mrg     func_to_host_path_tmp1=$func_stripname_result
   3441      1.1  mrg     func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
   3442      1.1  mrg     func_to_host_path_result=$func_convert_core_path_wine_to_w32_result
   3443      1.1  mrg     func_convert_path_check : ";" \
   3444      1.1  mrg       "$func_to_host_path_tmp1" "$func_to_host_path_result"
   3445      1.1  mrg     func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
   3446      1.1  mrg   fi
   3447      1.1  mrg }
   3448      1.1  mrg # end func_convert_path_nix_to_w32
   3449      1.1  mrg 
   3450      1.1  mrg 
   3451      1.1  mrg # func_convert_path_msys_to_cygwin ARG
   3452      1.1  mrg # Convert path ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
   3453      1.1  mrg # Returns result in func_to_host_file_result.
   3454      1.1  mrg func_convert_path_msys_to_cygwin ()
   3455      1.1  mrg {
   3456      1.1  mrg   $debug_cmd
   3457      1.1  mrg 
   3458      1.1  mrg   func_to_host_path_result=$1
   3459      1.1  mrg   if test -n "$1"; then
   3460      1.1  mrg     # See func_convert_path_msys_to_w32:
   3461      1.1  mrg     func_stripname : : "$1"
   3462      1.1  mrg     func_to_host_path_tmp1=$func_stripname_result
   3463      1.1  mrg     func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
   3464      1.1  mrg     func_cygpath -u -p "$func_convert_core_msys_to_w32_result"
   3465      1.1  mrg     func_to_host_path_result=$func_cygpath_result
   3466      1.1  mrg     func_convert_path_check : : \
   3467      1.1  mrg       "$func_to_host_path_tmp1" "$func_to_host_path_result"
   3468      1.1  mrg     func_convert_path_front_back_pathsep ":*" "*:" : "$1"
   3469      1.1  mrg   fi
   3470      1.1  mrg }
   3471      1.1  mrg # end func_convert_path_msys_to_cygwin
   3472      1.1  mrg 
   3473      1.1  mrg 
   3474      1.1  mrg # func_convert_path_nix_to_cygwin ARG
   3475      1.1  mrg # Convert path ARG from *nix to Cygwin format.  Requires Cygwin installed in a
   3476      1.1  mrg # a wine environment, working winepath, and LT_CYGPATH set.  Returns result in
   3477      1.1  mrg # func_to_host_file_result.
   3478      1.1  mrg func_convert_path_nix_to_cygwin ()
   3479      1.1  mrg {
   3480      1.1  mrg   $debug_cmd
   3481      1.1  mrg 
   3482      1.1  mrg   func_to_host_path_result=$1
   3483      1.1  mrg   if test -n "$1"; then
   3484      1.1  mrg     # Remove leading and trailing path separator characters from
   3485      1.1  mrg     # ARG. msys behavior is inconsistent here, cygpath turns them
   3486      1.1  mrg     # into '.;' and ';.', and winepath ignores them completely.
   3487      1.1  mrg     func_stripname : : "$1"
   3488      1.1  mrg     func_to_host_path_tmp1=$func_stripname_result
   3489      1.1  mrg     func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
   3490      1.1  mrg     func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result"
   3491      1.1  mrg     func_to_host_path_result=$func_cygpath_result
   3492      1.1  mrg     func_convert_path_check : : \
   3493      1.1  mrg       "$func_to_host_path_tmp1" "$func_to_host_path_result"
   3494      1.1  mrg     func_convert_path_front_back_pathsep ":*" "*:" : "$1"
   3495      1.1  mrg   fi
   3496      1.1  mrg }
   3497      1.1  mrg # end func_convert_path_nix_to_cygwin
   3498      1.1  mrg 
   3499      1.1  mrg 
   3500      1.1  mrg # func_dll_def_p FILE
   3501      1.1  mrg # True iff FILE is a Windows DLL '.def' file.
   3502      1.1  mrg # Keep in sync with _LT_DLL_DEF_P in libtool.m4
   3503      1.1  mrg func_dll_def_p ()
   3504      1.1  mrg {
   3505      1.1  mrg   $debug_cmd
   3506      1.1  mrg 
   3507      1.1  mrg   func_dll_def_p_tmp=`$SED -n \
   3508      1.1  mrg     -e 's/^[	 ]*//' \
   3509      1.1  mrg     -e '/^\(;.*\)*$/d' \
   3510      1.1  mrg     -e 's/^\(EXPORTS\|LIBRARY\)\([	 ].*\)*$/DEF/p' \
   3511      1.1  mrg     -e q \
   3512      1.1  mrg     "$1"`
   3513      1.1  mrg   test DEF = "$func_dll_def_p_tmp"
   3514      1.1  mrg }
   3515      1.1  mrg 
   3516      1.1  mrg 
   3517      1.1  mrg # func_mode_compile arg...
   3518      1.1  mrg func_mode_compile ()
   3519      1.1  mrg {
   3520      1.1  mrg     $debug_cmd
   3521      1.1  mrg 
   3522      1.1  mrg     # Get the compilation command and the source file.
   3523      1.1  mrg     base_compile=
   3524      1.1  mrg     srcfile=$nonopt  #  always keep a non-empty value in "srcfile"
   3525      1.1  mrg     suppress_opt=yes
   3526      1.1  mrg     suppress_output=
   3527      1.1  mrg     arg_mode=normal
   3528      1.1  mrg     libobj=
   3529      1.1  mrg     later=
   3530      1.1  mrg     pie_flag=
   3531      1.1  mrg 
   3532      1.1  mrg     for arg
   3533      1.1  mrg     do
   3534      1.1  mrg       case $arg_mode in
   3535      1.1  mrg       arg  )
   3536      1.1  mrg 	# do not "continue".  Instead, add this to base_compile
   3537      1.1  mrg 	lastarg=$arg
   3538      1.1  mrg 	arg_mode=normal
   3539      1.1  mrg 	;;
   3540      1.1  mrg 
   3541      1.1  mrg       target )
   3542      1.1  mrg 	libobj=$arg
   3543      1.1  mrg 	arg_mode=normal
   3544      1.1  mrg 	continue
   3545      1.1  mrg 	;;
   3546      1.1  mrg 
   3547      1.1  mrg       normal )
   3548      1.1  mrg 	# Accept any command-line options.
   3549      1.1  mrg 	case $arg in
   3550      1.1  mrg 	-o)
   3551      1.1  mrg 	  test -n "$libobj" && \
   3552      1.1  mrg 	    func_fatal_error "you cannot specify '-o' more than once"
   3553      1.1  mrg 	  arg_mode=target
   3554      1.1  mrg 	  continue
   3555      1.1  mrg 	  ;;
   3556      1.1  mrg 
   3557      1.1  mrg 	-pie | -fpie | -fPIE)
   3558      1.1  mrg           func_append pie_flag " $arg"
   3559      1.1  mrg 	  continue
   3560      1.1  mrg 	  ;;
   3561      1.1  mrg 
   3562      1.1  mrg 	-shared | -static | -prefer-pic | -prefer-non-pic)
   3563      1.1  mrg 	  func_append later " $arg"
   3564      1.1  mrg 	  continue
   3565      1.1  mrg 	  ;;
   3566      1.1  mrg 
   3567      1.1  mrg 	-no-suppress)
   3568      1.1  mrg 	  suppress_opt=no
   3569      1.1  mrg 	  continue
   3570      1.1  mrg 	  ;;
   3571      1.1  mrg 
   3572      1.1  mrg 	-Xcompiler)
   3573      1.1  mrg 	  arg_mode=arg  #  the next one goes into the "base_compile" arg list
   3574      1.1  mrg 	  continue      #  The current "srcfile" will either be retained or
   3575      1.1  mrg 	  ;;            #  replaced later.  I would guess that would be a bug.
   3576      1.1  mrg 
   3577      1.1  mrg 	-Wc,*)
   3578      1.1  mrg 	  func_stripname '-Wc,' '' "$arg"
   3579      1.1  mrg 	  args=$func_stripname_result
   3580      1.1  mrg 	  lastarg=
   3581      1.1  mrg 	  save_ifs=$IFS; IFS=,
   3582      1.1  mrg 	  for arg in $args; do
   3583      1.1  mrg 	    IFS=$save_ifs
   3584      1.1  mrg 	    func_append_quoted lastarg "$arg"
   3585      1.1  mrg 	  done
   3586      1.1  mrg 	  IFS=$save_ifs
   3587      1.1  mrg 	  func_stripname ' ' '' "$lastarg"
   3588      1.1  mrg 	  lastarg=$func_stripname_result
   3589      1.1  mrg 
   3590      1.1  mrg 	  # Add the arguments to base_compile.
   3591      1.1  mrg 	  func_append base_compile " $lastarg"
   3592      1.1  mrg 	  continue
   3593      1.1  mrg 	  ;;
   3594      1.1  mrg 
   3595      1.1  mrg 	*)
   3596      1.1  mrg 	  # Accept the current argument as the source file.
   3597      1.1  mrg 	  # The previous "srcfile" becomes the current argument.
   3598      1.1  mrg 	  #
   3599      1.1  mrg 	  lastarg=$srcfile
   3600      1.1  mrg 	  srcfile=$arg
   3601      1.1  mrg 	  ;;
   3602      1.1  mrg 	esac  #  case $arg
   3603      1.1  mrg 	;;
   3604      1.1  mrg       esac    #  case $arg_mode
   3605      1.1  mrg 
   3606      1.1  mrg       # Aesthetically quote the previous argument.
   3607      1.1  mrg       func_append_quoted base_compile "$lastarg"
   3608      1.1  mrg     done # for arg
   3609      1.1  mrg 
   3610      1.1  mrg     case $arg_mode in
   3611      1.1  mrg     arg)
   3612      1.1  mrg       func_fatal_error "you must specify an argument for -Xcompile"
   3613      1.1  mrg       ;;
   3614      1.1  mrg     target)
   3615      1.1  mrg       func_fatal_error "you must specify a target with '-o'"
   3616      1.1  mrg       ;;
   3617      1.1  mrg     *)
   3618      1.1  mrg       # Get the name of the library object.
   3619      1.1  mrg       test -z "$libobj" && {
   3620      1.1  mrg 	func_basename "$srcfile"
   3621      1.1  mrg 	libobj=$func_basename_result
   3622      1.1  mrg       }
   3623      1.1  mrg       ;;
   3624      1.1  mrg     esac
   3625      1.1  mrg 
   3626      1.1  mrg     # Recognize several different file suffixes.
   3627      1.1  mrg     # If the user specifies -o file.o, it is replaced with file.lo
   3628      1.1  mrg     case $libobj in
   3629      1.1  mrg     *.[cCFSifmso] | \
   3630      1.1  mrg     *.ada | *.adb | *.ads | *.asm | \
   3631      1.1  mrg     *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
   3632      1.1  mrg     *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup)
   3633      1.1  mrg       func_xform "$libobj"
   3634      1.1  mrg       libobj=$func_xform_result
   3635      1.1  mrg       ;;
   3636      1.1  mrg     esac
   3637      1.1  mrg 
   3638      1.1  mrg     case $libobj in
   3639      1.1  mrg     *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
   3640      1.1  mrg     *)
   3641      1.1  mrg       func_fatal_error "cannot determine name of library object from '$libobj'"
   3642      1.1  mrg       ;;
   3643      1.1  mrg     esac
   3644      1.1  mrg 
   3645      1.1  mrg     func_infer_tag $base_compile
   3646      1.1  mrg 
   3647      1.1  mrg     for arg in $later; do
   3648      1.1  mrg       case $arg in
   3649      1.1  mrg       -shared)
   3650      1.1  mrg 	test yes = "$build_libtool_libs" \
   3651      1.1  mrg 	  || func_fatal_configuration "cannot build a shared library"
   3652      1.1  mrg 	build_old_libs=no
   3653      1.1  mrg 	continue
   3654      1.1  mrg 	;;
   3655      1.1  mrg 
   3656      1.1  mrg       -static)
   3657      1.1  mrg 	build_libtool_libs=no
   3658      1.1  mrg 	build_old_libs=yes
   3659      1.1  mrg 	continue
   3660      1.1  mrg 	;;
   3661      1.1  mrg 
   3662      1.1  mrg       -prefer-pic)
   3663      1.1  mrg 	pic_mode=yes
   3664      1.1  mrg 	continue
   3665      1.1  mrg 	;;
   3666      1.1  mrg 
   3667      1.1  mrg       -prefer-non-pic)
   3668      1.1  mrg 	pic_mode=no
   3669      1.1  mrg 	continue
   3670      1.1  mrg 	;;
   3671      1.1  mrg       esac
   3672      1.1  mrg     done
   3673      1.1  mrg 
   3674  1.1.1.2  mrg     func_quote_arg pretty "$libobj"
   3675  1.1.1.2  mrg     test "X$libobj" != "X$func_quote_arg_result" \
   3676      1.1  mrg       && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"'	 &()|`$[]' \
   3677      1.1  mrg       && func_warning "libobj name '$libobj' may not contain shell special characters."
   3678      1.1  mrg     func_dirname_and_basename "$obj" "/" ""
   3679      1.1  mrg     objname=$func_basename_result
   3680      1.1  mrg     xdir=$func_dirname_result
   3681      1.1  mrg     lobj=$xdir$objdir/$objname
   3682      1.1  mrg 
   3683      1.1  mrg     test -z "$base_compile" && \
   3684      1.1  mrg       func_fatal_help "you must specify a compilation command"
   3685      1.1  mrg 
   3686      1.1  mrg     # Delete any leftover library objects.
   3687      1.1  mrg     if test yes = "$build_old_libs"; then
   3688      1.1  mrg       removelist="$obj $lobj $libobj ${libobj}T"
   3689      1.1  mrg     else
   3690      1.1  mrg       removelist="$lobj $libobj ${libobj}T"
   3691      1.1  mrg     fi
   3692      1.1  mrg 
   3693      1.1  mrg     # On Cygwin there's no "real" PIC flag so we must build both object types
   3694      1.1  mrg     case $host_os in
   3695      1.1  mrg     cygwin* | mingw* | pw32* | os2* | cegcc*)
   3696      1.1  mrg       pic_mode=default
   3697      1.1  mrg       ;;
   3698      1.1  mrg     esac
   3699      1.1  mrg     if test no = "$pic_mode" && test pass_all != "$deplibs_check_method"; then
   3700      1.1  mrg       # non-PIC code in shared libraries is not supported
   3701      1.1  mrg       pic_mode=default
   3702      1.1  mrg     fi
   3703      1.1  mrg 
   3704      1.1  mrg     # Calculate the filename of the output object if compiler does
   3705      1.1  mrg     # not support -o with -c
   3706      1.1  mrg     if test no = "$compiler_c_o"; then
   3707      1.1  mrg       output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.$objext
   3708      1.1  mrg       lockfile=$output_obj.lock
   3709      1.1  mrg     else
   3710      1.1  mrg       output_obj=
   3711      1.1  mrg       need_locks=no
   3712      1.1  mrg       lockfile=
   3713      1.1  mrg     fi
   3714      1.1  mrg 
   3715      1.1  mrg     # Lock this critical section if it is needed
   3716      1.1  mrg     # We use this script file to make the link, it avoids creating a new file
   3717      1.1  mrg     if test yes = "$need_locks"; then
   3718      1.1  mrg       until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
   3719      1.1  mrg 	func_echo "Waiting for $lockfile to be removed"
   3720      1.1  mrg 	sleep 2
   3721      1.1  mrg       done
   3722      1.1  mrg     elif test warn = "$need_locks"; then
   3723      1.1  mrg       if test -f "$lockfile"; then
   3724      1.1  mrg 	$ECHO "\
   3725      1.1  mrg *** ERROR, $lockfile exists and contains:
   3726      1.1  mrg `cat $lockfile 2>/dev/null`
   3727      1.1  mrg 
   3728      1.1  mrg This indicates that another process is trying to use the same
   3729      1.1  mrg temporary object file, and libtool could not work around it because
   3730      1.1  mrg your compiler does not support '-c' and '-o' together.  If you
   3731      1.1  mrg repeat this compilation, it may succeed, by chance, but you had better
   3732      1.1  mrg avoid parallel builds (make -j) in this platform, or get a better
   3733      1.1  mrg compiler."
   3734      1.1  mrg 
   3735      1.1  mrg 	$opt_dry_run || $RM $removelist
   3736      1.1  mrg 	exit $EXIT_FAILURE
   3737      1.1  mrg       fi
   3738      1.1  mrg       func_append removelist " $output_obj"
   3739      1.1  mrg       $ECHO "$srcfile" > "$lockfile"
   3740      1.1  mrg     fi
   3741      1.1  mrg 
   3742      1.1  mrg     $opt_dry_run || $RM $removelist
   3743      1.1  mrg     func_append removelist " $lockfile"
   3744      1.1  mrg     trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
   3745      1.1  mrg 
   3746      1.1  mrg     func_to_tool_file "$srcfile" func_convert_file_msys_to_w32
   3747      1.1  mrg     srcfile=$func_to_tool_file_result
   3748  1.1.1.2  mrg     func_quote_arg pretty "$srcfile"
   3749  1.1.1.2  mrg     qsrcfile=$func_quote_arg_result
   3750      1.1  mrg 
   3751      1.1  mrg     # Only build a PIC object if we are building libtool libraries.
   3752      1.1  mrg     if test yes = "$build_libtool_libs"; then
   3753      1.1  mrg       # Without this assignment, base_compile gets emptied.
   3754      1.1  mrg       fbsd_hideous_sh_bug=$base_compile
   3755      1.1  mrg 
   3756      1.1  mrg       if test no != "$pic_mode"; then
   3757      1.1  mrg 	command="$base_compile $qsrcfile $pic_flag"
   3758      1.1  mrg       else
   3759      1.1  mrg 	# Don't build PIC code
   3760      1.1  mrg 	command="$base_compile $qsrcfile"
   3761      1.1  mrg       fi
   3762      1.1  mrg 
   3763      1.1  mrg       func_mkdir_p "$xdir$objdir"
   3764      1.1  mrg 
   3765      1.1  mrg       if test -z "$output_obj"; then
   3766      1.1  mrg 	# Place PIC objects in $objdir
   3767      1.1  mrg 	func_append command " -o $lobj"
   3768      1.1  mrg       fi
   3769      1.1  mrg 
   3770      1.1  mrg       func_show_eval_locale "$command"	\
   3771      1.1  mrg           'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
   3772      1.1  mrg 
   3773      1.1  mrg       if test warn = "$need_locks" &&
   3774      1.1  mrg 	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
   3775      1.1  mrg 	$ECHO "\
   3776      1.1  mrg *** ERROR, $lockfile contains:
   3777      1.1  mrg `cat $lockfile 2>/dev/null`
   3778      1.1  mrg 
   3779      1.1  mrg but it should contain:
   3780      1.1  mrg $srcfile
   3781      1.1  mrg 
   3782      1.1  mrg This indicates that another process is trying to use the same
   3783      1.1  mrg temporary object file, and libtool could not work around it because
   3784      1.1  mrg your compiler does not support '-c' and '-o' together.  If you
   3785      1.1  mrg repeat this compilation, it may succeed, by chance, but you had better
   3786      1.1  mrg avoid parallel builds (make -j) in this platform, or get a better
   3787      1.1  mrg compiler."
   3788      1.1  mrg 
   3789      1.1  mrg 	$opt_dry_run || $RM $removelist
   3790      1.1  mrg 	exit $EXIT_FAILURE
   3791      1.1  mrg       fi
   3792      1.1  mrg 
   3793      1.1  mrg       # Just move the object if needed, then go on to compile the next one
   3794      1.1  mrg       if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
   3795      1.1  mrg 	func_show_eval '$MV "$output_obj" "$lobj"' \
   3796      1.1  mrg 	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
   3797      1.1  mrg       fi
   3798      1.1  mrg 
   3799      1.1  mrg       # Allow error messages only from the first compilation.
   3800      1.1  mrg       if test yes = "$suppress_opt"; then
   3801      1.1  mrg 	suppress_output=' >/dev/null 2>&1'
   3802      1.1  mrg       fi
   3803      1.1  mrg     fi
   3804      1.1  mrg 
   3805      1.1  mrg     # Only build a position-dependent object if we build old libraries.
   3806      1.1  mrg     if test yes = "$build_old_libs"; then
   3807      1.1  mrg       if test yes != "$pic_mode"; then
   3808      1.1  mrg 	# Don't build PIC code
   3809      1.1  mrg 	command="$base_compile $qsrcfile$pie_flag"
   3810      1.1  mrg       else
   3811      1.1  mrg 	command="$base_compile $qsrcfile $pic_flag"
   3812      1.1  mrg       fi
   3813      1.1  mrg       if test yes = "$compiler_c_o"; then
   3814      1.1  mrg 	func_append command " -o $obj"
   3815      1.1  mrg       fi
   3816      1.1  mrg 
   3817      1.1  mrg       # Suppress compiler output if we already did a PIC compilation.
   3818      1.1  mrg       func_append command "$suppress_output"
   3819      1.1  mrg       func_show_eval_locale "$command" \
   3820      1.1  mrg         '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
   3821      1.1  mrg 
   3822      1.1  mrg       if test warn = "$need_locks" &&
   3823      1.1  mrg 	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
   3824      1.1  mrg 	$ECHO "\
   3825      1.1  mrg *** ERROR, $lockfile contains:
   3826      1.1  mrg `cat $lockfile 2>/dev/null`
   3827      1.1  mrg 
   3828      1.1  mrg but it should contain:
   3829      1.1  mrg $srcfile
   3830      1.1  mrg 
   3831      1.1  mrg This indicates that another process is trying to use the same
   3832      1.1  mrg temporary object file, and libtool could not work around it because
   3833      1.1  mrg your compiler does not support '-c' and '-o' together.  If you
   3834      1.1  mrg repeat this compilation, it may succeed, by chance, but you had better
   3835      1.1  mrg avoid parallel builds (make -j) in this platform, or get a better
   3836      1.1  mrg compiler."
   3837      1.1  mrg 
   3838      1.1  mrg 	$opt_dry_run || $RM $removelist
   3839      1.1  mrg 	exit $EXIT_FAILURE
   3840      1.1  mrg       fi
   3841      1.1  mrg 
   3842      1.1  mrg       # Just move the object if needed
   3843      1.1  mrg       if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
   3844      1.1  mrg 	func_show_eval '$MV "$output_obj" "$obj"' \
   3845      1.1  mrg 	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
   3846      1.1  mrg       fi
   3847      1.1  mrg     fi
   3848      1.1  mrg 
   3849      1.1  mrg     $opt_dry_run || {
   3850      1.1  mrg       func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
   3851      1.1  mrg 
   3852      1.1  mrg       # Unlock the critical section if it was locked
   3853      1.1  mrg       if test no != "$need_locks"; then
   3854      1.1  mrg 	removelist=$lockfile
   3855      1.1  mrg         $RM "$lockfile"
   3856      1.1  mrg       fi
   3857      1.1  mrg     }
   3858      1.1  mrg 
   3859      1.1  mrg     exit $EXIT_SUCCESS
   3860      1.1  mrg }
   3861      1.1  mrg 
   3862      1.1  mrg $opt_help || {
   3863      1.1  mrg   test compile = "$opt_mode" && func_mode_compile ${1+"$@"}
   3864      1.1  mrg }
   3865      1.1  mrg 
   3866      1.1  mrg func_mode_help ()
   3867      1.1  mrg {
   3868      1.1  mrg     # We need to display help for each of the modes.
   3869      1.1  mrg     case $opt_mode in
   3870      1.1  mrg       "")
   3871      1.1  mrg         # Generic help is extracted from the usage comments
   3872      1.1  mrg         # at the start of this file.
   3873      1.1  mrg         func_help
   3874      1.1  mrg         ;;
   3875      1.1  mrg 
   3876      1.1  mrg       clean)
   3877      1.1  mrg         $ECHO \
   3878      1.1  mrg "Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
   3879      1.1  mrg 
   3880      1.1  mrg Remove files from the build directory.
   3881      1.1  mrg 
   3882      1.1  mrg RM is the name of the program to use to delete files associated with each FILE
   3883      1.1  mrg (typically '/bin/rm').  RM-OPTIONS are options (such as '-f') to be passed
   3884      1.1  mrg to RM.
   3885      1.1  mrg 
   3886      1.1  mrg If FILE is a libtool library, object or program, all the files associated
   3887      1.1  mrg with it are deleted. Otherwise, only FILE itself is deleted using RM."
   3888      1.1  mrg         ;;
   3889      1.1  mrg 
   3890      1.1  mrg       compile)
   3891      1.1  mrg       $ECHO \
   3892      1.1  mrg "Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
   3893      1.1  mrg 
   3894      1.1  mrg Compile a source file into a libtool library object.
   3895      1.1  mrg 
   3896      1.1  mrg This mode accepts the following additional options:
   3897      1.1  mrg 
   3898      1.1  mrg   -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
   3899      1.1  mrg   -no-suppress      do not suppress compiler output for multiple passes
   3900      1.1  mrg   -prefer-pic       try to build PIC objects only
   3901      1.1  mrg   -prefer-non-pic   try to build non-PIC objects only
   3902      1.1  mrg   -shared           do not build a '.o' file suitable for static linking
   3903      1.1  mrg   -static           only build a '.o' file suitable for static linking
   3904  1.1.1.2  mrg   -Wc,FLAG
   3905  1.1.1.2  mrg   -Xcompiler FLAG   pass FLAG directly to the compiler
   3906      1.1  mrg 
   3907      1.1  mrg COMPILE-COMMAND is a command to be used in creating a 'standard' object file
   3908      1.1  mrg from the given SOURCEFILE.
   3909      1.1  mrg 
   3910      1.1  mrg The output file name is determined by removing the directory component from
   3911      1.1  mrg SOURCEFILE, then substituting the C source code suffix '.c' with the
   3912      1.1  mrg library object suffix, '.lo'."
   3913      1.1  mrg         ;;
   3914      1.1  mrg 
   3915      1.1  mrg       execute)
   3916      1.1  mrg         $ECHO \
   3917      1.1  mrg "Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
   3918      1.1  mrg 
   3919      1.1  mrg Automatically set library path, then run a program.
   3920      1.1  mrg 
   3921      1.1  mrg This mode accepts the following additional options:
   3922      1.1  mrg 
   3923      1.1  mrg   -dlopen FILE      add the directory containing FILE to the library path
   3924      1.1  mrg 
   3925      1.1  mrg This mode sets the library path environment variable according to '-dlopen'
   3926      1.1  mrg flags.
   3927      1.1  mrg 
   3928      1.1  mrg If any of the ARGS are libtool executable wrappers, then they are translated
   3929      1.1  mrg into their corresponding uninstalled binary, and any of their required library
   3930      1.1  mrg directories are added to the library path.
   3931      1.1  mrg 
   3932      1.1  mrg Then, COMMAND is executed, with ARGS as arguments."
   3933      1.1  mrg         ;;
   3934      1.1  mrg 
   3935      1.1  mrg       finish)
   3936      1.1  mrg         $ECHO \
   3937      1.1  mrg "Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
   3938      1.1  mrg 
   3939      1.1  mrg Complete the installation of libtool libraries.
   3940      1.1  mrg 
   3941      1.1  mrg Each LIBDIR is a directory that contains libtool libraries.
   3942      1.1  mrg 
   3943      1.1  mrg The commands that this mode executes may require superuser privileges.  Use
   3944      1.1  mrg the '--dry-run' option if you just want to see what would be executed."
   3945      1.1  mrg         ;;
   3946      1.1  mrg 
   3947      1.1  mrg       install)
   3948      1.1  mrg         $ECHO \
   3949      1.1  mrg "Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
   3950      1.1  mrg 
   3951      1.1  mrg Install executables or libraries.
   3952      1.1  mrg 
   3953      1.1  mrg INSTALL-COMMAND is the installation command.  The first component should be
   3954      1.1  mrg either the 'install' or 'cp' program.
   3955      1.1  mrg 
   3956      1.1  mrg The following components of INSTALL-COMMAND are treated specially:
   3957      1.1  mrg 
   3958      1.1  mrg   -inst-prefix-dir PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
   3959      1.1  mrg 
   3960      1.1  mrg The rest of the components are interpreted as arguments to that command (only
   3961      1.1  mrg BSD-compatible install options are recognized)."
   3962      1.1  mrg         ;;
   3963      1.1  mrg 
   3964      1.1  mrg       link)
   3965      1.1  mrg         $ECHO \
   3966      1.1  mrg "Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
   3967      1.1  mrg 
   3968      1.1  mrg Link object files or libraries together to form another library, or to
   3969      1.1  mrg create an executable program.
   3970      1.1  mrg 
   3971      1.1  mrg LINK-COMMAND is a command using the C compiler that you would use to create
   3972      1.1  mrg a program from several object files.
   3973      1.1  mrg 
   3974      1.1  mrg The following components of LINK-COMMAND are treated specially:
   3975      1.1  mrg 
   3976      1.1  mrg   -all-static       do not do any dynamic linking at all
   3977      1.1  mrg   -avoid-version    do not add a version suffix if possible
   3978      1.1  mrg   -bindir BINDIR    specify path to binaries directory (for systems where
   3979      1.1  mrg                     libraries must be found in the PATH setting at runtime)
   3980      1.1  mrg   -dlopen FILE      '-dlpreopen' FILE if it cannot be dlopened at runtime
   3981      1.1  mrg   -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
   3982      1.1  mrg   -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
   3983      1.1  mrg   -export-symbols SYMFILE
   3984      1.1  mrg                     try to export only the symbols listed in SYMFILE
   3985      1.1  mrg   -export-symbols-regex REGEX
   3986      1.1  mrg                     try to export only the symbols matching REGEX
   3987      1.1  mrg   -LLIBDIR          search LIBDIR for required installed libraries
   3988      1.1  mrg   -lNAME            OUTPUT-FILE requires the installed library libNAME
   3989      1.1  mrg   -module           build a library that can dlopened
   3990      1.1  mrg   -no-fast-install  disable the fast-install mode
   3991      1.1  mrg   -no-install       link a not-installable executable
   3992      1.1  mrg   -no-undefined     declare that a library does not refer to external symbols
   3993      1.1  mrg   -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
   3994      1.1  mrg   -objectlist FILE  use a list of object files found in FILE to specify objects
   3995      1.1  mrg   -os2dllname NAME  force a short DLL name on OS/2 (no effect on other OSes)
   3996      1.1  mrg   -precious-files-regex REGEX
   3997      1.1  mrg                     don't remove output files matching REGEX
   3998      1.1  mrg   -release RELEASE  specify package release information
   3999      1.1  mrg   -rpath LIBDIR     the created library will eventually be installed in LIBDIR
   4000      1.1  mrg   -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
   4001      1.1  mrg   -shared           only do dynamic linking of libtool libraries
   4002      1.1  mrg   -shrext SUFFIX    override the standard shared library file extension
   4003      1.1  mrg   -static           do not do any dynamic linking of uninstalled libtool libraries
   4004      1.1  mrg   -static-libtool-libs
   4005      1.1  mrg                     do not do any dynamic linking of libtool libraries
   4006      1.1  mrg   -version-info CURRENT[:REVISION[:AGE]]
   4007      1.1  mrg                     specify library version info [each variable defaults to 0]
   4008      1.1  mrg   -weak LIBNAME     declare that the target provides the LIBNAME interface
   4009      1.1  mrg   -Wc,FLAG
   4010      1.1  mrg   -Xcompiler FLAG   pass linker-specific FLAG directly to the compiler
   4011  1.1.1.2  mrg   -Wa,FLAG
   4012  1.1.1.2  mrg   -Xassembler FLAG  pass linker-specific FLAG directly to the assembler
   4013      1.1  mrg   -Wl,FLAG
   4014      1.1  mrg   -Xlinker FLAG     pass linker-specific FLAG directly to the linker
   4015      1.1  mrg   -XCClinker FLAG   pass link-specific FLAG to the compiler driver (CC)
   4016      1.1  mrg 
   4017      1.1  mrg All other options (arguments beginning with '-') are ignored.
   4018      1.1  mrg 
   4019      1.1  mrg Every other argument is treated as a filename.  Files ending in '.la' are
   4020      1.1  mrg treated as uninstalled libtool libraries, other files are standard or library
   4021      1.1  mrg object files.
   4022      1.1  mrg 
   4023      1.1  mrg If the OUTPUT-FILE ends in '.la', then a libtool library is created,
   4024      1.1  mrg only library objects ('.lo' files) may be specified, and '-rpath' is
   4025      1.1  mrg required, except when creating a convenience library.
   4026      1.1  mrg 
   4027      1.1  mrg If OUTPUT-FILE ends in '.a' or '.lib', then a standard library is created
   4028      1.1  mrg using 'ar' and 'ranlib', or on Windows using 'lib'.
   4029      1.1  mrg 
   4030      1.1  mrg If OUTPUT-FILE ends in '.lo' or '.$objext', then a reloadable object file
   4031      1.1  mrg is created, otherwise an executable program is created."
   4032      1.1  mrg         ;;
   4033      1.1  mrg 
   4034      1.1  mrg       uninstall)
   4035      1.1  mrg         $ECHO \
   4036      1.1  mrg "Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
   4037      1.1  mrg 
   4038      1.1  mrg Remove libraries from an installation directory.
   4039      1.1  mrg 
   4040      1.1  mrg RM is the name of the program to use to delete files associated with each FILE
   4041      1.1  mrg (typically '/bin/rm').  RM-OPTIONS are options (such as '-f') to be passed
   4042      1.1  mrg to RM.
   4043      1.1  mrg 
   4044      1.1  mrg If FILE is a libtool library, all the files associated with it are deleted.
   4045      1.1  mrg Otherwise, only FILE itself is deleted using RM."
   4046      1.1  mrg         ;;
   4047      1.1  mrg 
   4048      1.1  mrg       *)
   4049      1.1  mrg         func_fatal_help "invalid operation mode '$opt_mode'"
   4050      1.1  mrg         ;;
   4051      1.1  mrg     esac
   4052      1.1  mrg 
   4053      1.1  mrg     echo
   4054      1.1  mrg     $ECHO "Try '$progname --help' for more information about other modes."
   4055      1.1  mrg }
   4056      1.1  mrg 
   4057      1.1  mrg # Now that we've collected a possible --mode arg, show help if necessary
   4058      1.1  mrg if $opt_help; then
   4059      1.1  mrg   if test : = "$opt_help"; then
   4060      1.1  mrg     func_mode_help
   4061      1.1  mrg   else
   4062      1.1  mrg     {
   4063      1.1  mrg       func_help noexit
   4064      1.1  mrg       for opt_mode in compile link execute install finish uninstall clean; do
   4065      1.1  mrg 	func_mode_help
   4066      1.1  mrg       done
   4067      1.1  mrg     } | $SED -n '1p; 2,$s/^Usage:/  or: /p'
   4068      1.1  mrg     {
   4069      1.1  mrg       func_help noexit
   4070      1.1  mrg       for opt_mode in compile link execute install finish uninstall clean; do
   4071      1.1  mrg 	echo
   4072      1.1  mrg 	func_mode_help
   4073      1.1  mrg       done
   4074      1.1  mrg     } |
   4075      1.1  mrg     $SED '1d
   4076      1.1  mrg       /^When reporting/,/^Report/{
   4077      1.1  mrg 	H
   4078      1.1  mrg 	d
   4079      1.1  mrg       }
   4080      1.1  mrg       $x
   4081      1.1  mrg       /information about other modes/d
   4082      1.1  mrg       /more detailed .*MODE/d
   4083      1.1  mrg       s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/'
   4084      1.1  mrg   fi
   4085      1.1  mrg   exit $?
   4086      1.1  mrg fi
   4087      1.1  mrg 
   4088      1.1  mrg 
   4089      1.1  mrg # func_mode_execute arg...
   4090      1.1  mrg func_mode_execute ()
   4091      1.1  mrg {
   4092      1.1  mrg     $debug_cmd
   4093      1.1  mrg 
   4094      1.1  mrg     # The first argument is the command name.
   4095      1.1  mrg     cmd=$nonopt
   4096      1.1  mrg     test -z "$cmd" && \
   4097      1.1  mrg       func_fatal_help "you must specify a COMMAND"
   4098      1.1  mrg 
   4099      1.1  mrg     # Handle -dlopen flags immediately.
   4100      1.1  mrg     for file in $opt_dlopen; do
   4101      1.1  mrg       test -f "$file" \
   4102      1.1  mrg 	|| func_fatal_help "'$file' is not a file"
   4103      1.1  mrg 
   4104      1.1  mrg       dir=
   4105      1.1  mrg       case $file in
   4106      1.1  mrg       *.la)
   4107      1.1  mrg 	func_resolve_sysroot "$file"
   4108      1.1  mrg 	file=$func_resolve_sysroot_result
   4109      1.1  mrg 
   4110      1.1  mrg 	# Check to see that this really is a libtool archive.
   4111      1.1  mrg 	func_lalib_unsafe_p "$file" \
   4112      1.1  mrg 	  || func_fatal_help "'$lib' is not a valid libtool archive"
   4113      1.1  mrg 
   4114      1.1  mrg 	# Read the libtool library.
   4115      1.1  mrg 	dlname=
   4116      1.1  mrg 	library_names=
   4117      1.1  mrg 	func_source "$file"
   4118      1.1  mrg 
   4119      1.1  mrg 	# Skip this library if it cannot be dlopened.
   4120      1.1  mrg 	if test -z "$dlname"; then
   4121      1.1  mrg 	  # Warn if it was a shared library.
   4122      1.1  mrg 	  test -n "$library_names" && \
   4123      1.1  mrg 	    func_warning "'$file' was not linked with '-export-dynamic'"
   4124      1.1  mrg 	  continue
   4125      1.1  mrg 	fi
   4126      1.1  mrg 
   4127      1.1  mrg 	func_dirname "$file" "" "."
   4128      1.1  mrg 	dir=$func_dirname_result
   4129      1.1  mrg 
   4130      1.1  mrg 	if test -f "$dir/$objdir/$dlname"; then
   4131      1.1  mrg 	  func_append dir "/$objdir"
   4132      1.1  mrg 	else
   4133      1.1  mrg 	  if test ! -f "$dir/$dlname"; then
   4134      1.1  mrg 	    func_fatal_error "cannot find '$dlname' in '$dir' or '$dir/$objdir'"
   4135      1.1  mrg 	  fi
   4136      1.1  mrg 	fi
   4137      1.1  mrg 	;;
   4138      1.1  mrg 
   4139      1.1  mrg       *.lo)
   4140      1.1  mrg 	# Just add the directory containing the .lo file.
   4141      1.1  mrg 	func_dirname "$file" "" "."
   4142      1.1  mrg 	dir=$func_dirname_result
   4143      1.1  mrg 	;;
   4144      1.1  mrg 
   4145      1.1  mrg       *)
   4146      1.1  mrg 	func_warning "'-dlopen' is ignored for non-libtool libraries and objects"
   4147      1.1  mrg 	continue
   4148      1.1  mrg 	;;
   4149      1.1  mrg       esac
   4150      1.1  mrg 
   4151      1.1  mrg       # Get the absolute pathname.
   4152      1.1  mrg       absdir=`cd "$dir" && pwd`
   4153      1.1  mrg       test -n "$absdir" && dir=$absdir
   4154      1.1  mrg 
   4155      1.1  mrg       # Now add the directory to shlibpath_var.
   4156      1.1  mrg       if eval "test -z \"\$$shlibpath_var\""; then
   4157      1.1  mrg 	eval "$shlibpath_var=\"\$dir\""
   4158      1.1  mrg       else
   4159      1.1  mrg 	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
   4160      1.1  mrg       fi
   4161      1.1  mrg     done
   4162      1.1  mrg 
   4163      1.1  mrg     # This variable tells wrapper scripts just to set shlibpath_var
   4164      1.1  mrg     # rather than running their programs.
   4165      1.1  mrg     libtool_execute_magic=$magic
   4166      1.1  mrg 
   4167      1.1  mrg     # Check if any of the arguments is a wrapper script.
   4168      1.1  mrg     args=
   4169      1.1  mrg     for file
   4170      1.1  mrg     do
   4171      1.1  mrg       case $file in
   4172      1.1  mrg       -* | *.la | *.lo ) ;;
   4173      1.1  mrg       *)
   4174      1.1  mrg 	# Do a test to see if this is really a libtool program.
   4175      1.1  mrg 	if func_ltwrapper_script_p "$file"; then
   4176      1.1  mrg 	  func_source "$file"
   4177      1.1  mrg 	  # Transform arg to wrapped name.
   4178      1.1  mrg 	  file=$progdir/$program
   4179      1.1  mrg 	elif func_ltwrapper_executable_p "$file"; then
   4180      1.1  mrg 	  func_ltwrapper_scriptname "$file"
   4181      1.1  mrg 	  func_source "$func_ltwrapper_scriptname_result"
   4182      1.1  mrg 	  # Transform arg to wrapped name.
   4183      1.1  mrg 	  file=$progdir/$program
   4184      1.1  mrg 	fi
   4185      1.1  mrg 	;;
   4186      1.1  mrg       esac
   4187      1.1  mrg       # Quote arguments (to preserve shell metacharacters).
   4188      1.1  mrg       func_append_quoted args "$file"
   4189      1.1  mrg     done
   4190      1.1  mrg 
   4191      1.1  mrg     if $opt_dry_run; then
   4192      1.1  mrg       # Display what would be done.
   4193      1.1  mrg       if test -n "$shlibpath_var"; then
   4194      1.1  mrg 	eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
   4195      1.1  mrg 	echo "export $shlibpath_var"
   4196      1.1  mrg       fi
   4197      1.1  mrg       $ECHO "$cmd$args"
   4198      1.1  mrg       exit $EXIT_SUCCESS
   4199      1.1  mrg     else
   4200      1.1  mrg       if test -n "$shlibpath_var"; then
   4201      1.1  mrg 	# Export the shlibpath_var.
   4202      1.1  mrg 	eval "export $shlibpath_var"
   4203      1.1  mrg       fi
   4204      1.1  mrg 
   4205      1.1  mrg       # Restore saved environment variables
   4206      1.1  mrg       for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
   4207      1.1  mrg       do
   4208      1.1  mrg 	eval "if test \"\${save_$lt_var+set}\" = set; then
   4209      1.1  mrg                 $lt_var=\$save_$lt_var; export $lt_var
   4210      1.1  mrg 	      else
   4211      1.1  mrg 		$lt_unset $lt_var
   4212      1.1  mrg 	      fi"
   4213      1.1  mrg       done
   4214      1.1  mrg 
   4215      1.1  mrg       # Now prepare to actually exec the command.
   4216      1.1  mrg       exec_cmd=\$cmd$args
   4217      1.1  mrg     fi
   4218      1.1  mrg }
   4219      1.1  mrg 
   4220      1.1  mrg test execute = "$opt_mode" && func_mode_execute ${1+"$@"}
   4221      1.1  mrg 
   4222      1.1  mrg 
   4223      1.1  mrg # func_mode_finish arg...
   4224      1.1  mrg func_mode_finish ()
   4225      1.1  mrg {
   4226      1.1  mrg     $debug_cmd
   4227      1.1  mrg 
   4228      1.1  mrg     libs=
   4229      1.1  mrg     libdirs=
   4230      1.1  mrg     admincmds=
   4231      1.1  mrg 
   4232      1.1  mrg     for opt in "$nonopt" ${1+"$@"}
   4233      1.1  mrg     do
   4234      1.1  mrg       if test -d "$opt"; then
   4235      1.1  mrg 	func_append libdirs " $opt"
   4236      1.1  mrg 
   4237      1.1  mrg       elif test -f "$opt"; then
   4238      1.1  mrg 	if func_lalib_unsafe_p "$opt"; then
   4239      1.1  mrg 	  func_append libs " $opt"
   4240      1.1  mrg 	else
   4241      1.1  mrg 	  func_warning "'$opt' is not a valid libtool archive"
   4242      1.1  mrg 	fi
   4243      1.1  mrg 
   4244      1.1  mrg       else
   4245      1.1  mrg 	func_fatal_error "invalid argument '$opt'"
   4246      1.1  mrg       fi
   4247      1.1  mrg     done
   4248      1.1  mrg 
   4249      1.1  mrg     if test -n "$libs"; then
   4250      1.1  mrg       if test -n "$lt_sysroot"; then
   4251      1.1  mrg         sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"`
   4252      1.1  mrg         sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;"
   4253      1.1  mrg       else
   4254      1.1  mrg         sysroot_cmd=
   4255      1.1  mrg       fi
   4256      1.1  mrg 
   4257      1.1  mrg       # Remove sysroot references
   4258      1.1  mrg       if $opt_dry_run; then
   4259      1.1  mrg         for lib in $libs; do
   4260      1.1  mrg           echo "removing references to $lt_sysroot and '=' prefixes from $lib"
   4261      1.1  mrg         done
   4262      1.1  mrg       else
   4263      1.1  mrg         tmpdir=`func_mktempdir`
   4264      1.1  mrg         for lib in $libs; do
   4265      1.1  mrg 	  $SED -e "$sysroot_cmd s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \
   4266      1.1  mrg 	    > $tmpdir/tmp-la
   4267      1.1  mrg 	  mv -f $tmpdir/tmp-la $lib
   4268      1.1  mrg 	done
   4269      1.1  mrg         ${RM}r "$tmpdir"
   4270      1.1  mrg       fi
   4271      1.1  mrg     fi
   4272      1.1  mrg 
   4273      1.1  mrg     if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
   4274      1.1  mrg       for libdir in $libdirs; do
   4275      1.1  mrg 	if test -n "$finish_cmds"; then
   4276      1.1  mrg 	  # Do each command in the finish commands.
   4277      1.1  mrg 	  func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
   4278      1.1  mrg '"$cmd"'"'
   4279      1.1  mrg 	fi
   4280      1.1  mrg 	if test -n "$finish_eval"; then
   4281      1.1  mrg 	  # Do the single finish_eval.
   4282      1.1  mrg 	  eval cmds=\"$finish_eval\"
   4283      1.1  mrg 	  $opt_dry_run || eval "$cmds" || func_append admincmds "
   4284      1.1  mrg        $cmds"
   4285      1.1  mrg 	fi
   4286      1.1  mrg       done
   4287      1.1  mrg     fi
   4288      1.1  mrg 
   4289      1.1  mrg     # Exit here if they wanted silent mode.
   4290      1.1  mrg     $opt_quiet && exit $EXIT_SUCCESS
   4291      1.1  mrg 
   4292      1.1  mrg     if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
   4293      1.1  mrg       echo "----------------------------------------------------------------------"
   4294      1.1  mrg       echo "Libraries have been installed in:"
   4295      1.1  mrg       for libdir in $libdirs; do
   4296      1.1  mrg 	$ECHO "   $libdir"
   4297      1.1  mrg       done
   4298      1.1  mrg       echo
   4299      1.1  mrg       echo "If you ever happen to want to link against installed libraries"
   4300      1.1  mrg       echo "in a given directory, LIBDIR, you must either use libtool, and"
   4301      1.1  mrg       echo "specify the full pathname of the library, or use the '-LLIBDIR'"
   4302      1.1  mrg       echo "flag during linking and do at least one of the following:"
   4303      1.1  mrg       if test -n "$shlibpath_var"; then
   4304      1.1  mrg 	echo "   - add LIBDIR to the '$shlibpath_var' environment variable"
   4305      1.1  mrg 	echo "     during execution"
   4306      1.1  mrg       fi
   4307      1.1  mrg       if test -n "$runpath_var"; then
   4308      1.1  mrg 	echo "   - add LIBDIR to the '$runpath_var' environment variable"
   4309      1.1  mrg 	echo "     during linking"
   4310      1.1  mrg       fi
   4311      1.1  mrg       if test -n "$hardcode_libdir_flag_spec"; then
   4312      1.1  mrg 	libdir=LIBDIR
   4313      1.1  mrg 	eval flag=\"$hardcode_libdir_flag_spec\"
   4314      1.1  mrg 
   4315      1.1  mrg 	$ECHO "   - use the '$flag' linker flag"
   4316      1.1  mrg       fi
   4317      1.1  mrg       if test -n "$admincmds"; then
   4318      1.1  mrg 	$ECHO "   - have your system administrator run these commands:$admincmds"
   4319      1.1  mrg       fi
   4320      1.1  mrg       if test -f /etc/ld.so.conf; then
   4321      1.1  mrg 	echo "   - have your system administrator add LIBDIR to '/etc/ld.so.conf'"
   4322      1.1  mrg       fi
   4323      1.1  mrg       echo
   4324      1.1  mrg 
   4325      1.1  mrg       echo "See any operating system documentation about shared libraries for"
   4326      1.1  mrg       case $host in
   4327      1.1  mrg 	solaris2.[6789]|solaris2.1[0-9])
   4328      1.1  mrg 	  echo "more information, such as the ld(1), crle(1) and ld.so(8) manual"
   4329      1.1  mrg 	  echo "pages."
   4330      1.1  mrg 	  ;;
   4331      1.1  mrg 	*)
   4332      1.1  mrg 	  echo "more information, such as the ld(1) and ld.so(8) manual pages."
   4333      1.1  mrg 	  ;;
   4334      1.1  mrg       esac
   4335      1.1  mrg       echo "----------------------------------------------------------------------"
   4336      1.1  mrg     fi
   4337      1.1  mrg     exit $EXIT_SUCCESS
   4338      1.1  mrg }
   4339      1.1  mrg 
   4340      1.1  mrg test finish = "$opt_mode" && func_mode_finish ${1+"$@"}
   4341      1.1  mrg 
   4342      1.1  mrg 
   4343      1.1  mrg # func_mode_install arg...
   4344      1.1  mrg func_mode_install ()
   4345      1.1  mrg {
   4346      1.1  mrg     $debug_cmd
   4347      1.1  mrg 
   4348      1.1  mrg     # There may be an optional sh(1) argument at the beginning of
   4349      1.1  mrg     # install_prog (especially on Windows NT).
   4350      1.1  mrg     if test "$SHELL" = "$nonopt" || test /bin/sh = "$nonopt" ||
   4351      1.1  mrg        # Allow the use of GNU shtool's install command.
   4352      1.1  mrg        case $nonopt in *shtool*) :;; *) false;; esac
   4353      1.1  mrg     then
   4354      1.1  mrg       # Aesthetically quote it.
   4355  1.1.1.2  mrg       func_quote_arg pretty "$nonopt"
   4356  1.1.1.2  mrg       install_prog="$func_quote_arg_result "
   4357      1.1  mrg       arg=$1
   4358      1.1  mrg       shift
   4359      1.1  mrg     else
   4360      1.1  mrg       install_prog=
   4361      1.1  mrg       arg=$nonopt
   4362      1.1  mrg     fi
   4363      1.1  mrg 
   4364      1.1  mrg     # The real first argument should be the name of the installation program.
   4365      1.1  mrg     # Aesthetically quote it.
   4366  1.1.1.2  mrg     func_quote_arg pretty "$arg"
   4367  1.1.1.2  mrg     func_append install_prog "$func_quote_arg_result"
   4368      1.1  mrg     install_shared_prog=$install_prog
   4369      1.1  mrg     case " $install_prog " in
   4370      1.1  mrg       *[\\\ /]cp\ *) install_cp=: ;;
   4371      1.1  mrg       *) install_cp=false ;;
   4372      1.1  mrg     esac
   4373      1.1  mrg 
   4374      1.1  mrg     # We need to accept at least all the BSD install flags.
   4375      1.1  mrg     dest=
   4376      1.1  mrg     files=
   4377      1.1  mrg     opts=
   4378      1.1  mrg     prev=
   4379      1.1  mrg     install_type=
   4380      1.1  mrg     isdir=false
   4381      1.1  mrg     stripme=
   4382      1.1  mrg     no_mode=:
   4383      1.1  mrg     for arg
   4384      1.1  mrg     do
   4385      1.1  mrg       arg2=
   4386      1.1  mrg       if test -n "$dest"; then
   4387      1.1  mrg 	func_append files " $dest"
   4388      1.1  mrg 	dest=$arg
   4389      1.1  mrg 	continue
   4390      1.1  mrg       fi
   4391      1.1  mrg 
   4392      1.1  mrg       case $arg in
   4393      1.1  mrg       -d) isdir=: ;;
   4394      1.1  mrg       -f)
   4395      1.1  mrg 	if $install_cp; then :; else
   4396      1.1  mrg 	  prev=$arg
   4397      1.1  mrg 	fi
   4398      1.1  mrg 	;;
   4399      1.1  mrg       -g | -m | -o)
   4400      1.1  mrg 	prev=$arg
   4401      1.1  mrg 	;;
   4402      1.1  mrg       -s)
   4403      1.1  mrg 	stripme=" -s"
   4404      1.1  mrg 	continue
   4405      1.1  mrg 	;;
   4406      1.1  mrg       -*)
   4407      1.1  mrg 	;;
   4408      1.1  mrg       *)
   4409      1.1  mrg 	# If the previous option needed an argument, then skip it.
   4410      1.1  mrg 	if test -n "$prev"; then
   4411      1.1  mrg 	  if test X-m = "X$prev" && test -n "$install_override_mode"; then
   4412      1.1  mrg 	    arg2=$install_override_mode
   4413      1.1  mrg 	    no_mode=false
   4414      1.1  mrg 	  fi
   4415      1.1  mrg 	  prev=
   4416      1.1  mrg 	else
   4417      1.1  mrg 	  dest=$arg
   4418      1.1  mrg 	  continue
   4419      1.1  mrg 	fi
   4420      1.1  mrg 	;;
   4421      1.1  mrg       esac
   4422      1.1  mrg 
   4423      1.1  mrg       # Aesthetically quote the argument.
   4424  1.1.1.2  mrg       func_quote_arg pretty "$arg"
   4425  1.1.1.2  mrg       func_append install_prog " $func_quote_arg_result"
   4426      1.1  mrg       if test -n "$arg2"; then
   4427  1.1.1.2  mrg 	func_quote_arg pretty "$arg2"
   4428      1.1  mrg       fi
   4429  1.1.1.2  mrg       func_append install_shared_prog " $func_quote_arg_result"
   4430      1.1  mrg     done
   4431      1.1  mrg 
   4432      1.1  mrg     test -z "$install_prog" && \
   4433      1.1  mrg       func_fatal_help "you must specify an install program"
   4434      1.1  mrg 
   4435      1.1  mrg     test -n "$prev" && \
   4436      1.1  mrg       func_fatal_help "the '$prev' option requires an argument"
   4437      1.1  mrg 
   4438      1.1  mrg     if test -n "$install_override_mode" && $no_mode; then
   4439      1.1  mrg       if $install_cp; then :; else
   4440  1.1.1.2  mrg 	func_quote_arg pretty "$install_override_mode"
   4441  1.1.1.2  mrg 	func_append install_shared_prog " -m $func_quote_arg_result"
   4442      1.1  mrg       fi
   4443      1.1  mrg     fi
   4444      1.1  mrg 
   4445      1.1  mrg     if test -z "$files"; then
   4446      1.1  mrg       if test -z "$dest"; then
   4447      1.1  mrg 	func_fatal_help "no file or destination specified"
   4448      1.1  mrg       else
   4449      1.1  mrg 	func_fatal_help "you must specify a destination"
   4450      1.1  mrg       fi
   4451      1.1  mrg     fi
   4452      1.1  mrg 
   4453      1.1  mrg     # Strip any trailing slash from the destination.
   4454      1.1  mrg     func_stripname '' '/' "$dest"
   4455      1.1  mrg     dest=$func_stripname_result
   4456      1.1  mrg 
   4457      1.1  mrg     # Check to see that the destination is a directory.
   4458      1.1  mrg     test -d "$dest" && isdir=:
   4459      1.1  mrg     if $isdir; then
   4460      1.1  mrg       destdir=$dest
   4461      1.1  mrg       destname=
   4462      1.1  mrg     else
   4463      1.1  mrg       func_dirname_and_basename "$dest" "" "."
   4464      1.1  mrg       destdir=$func_dirname_result
   4465      1.1  mrg       destname=$func_basename_result
   4466      1.1  mrg 
   4467      1.1  mrg       # Not a directory, so check to see that there is only one file specified.
   4468      1.1  mrg       set dummy $files; shift
   4469      1.1  mrg       test "$#" -gt 1 && \
   4470      1.1  mrg 	func_fatal_help "'$dest' is not a directory"
   4471      1.1  mrg     fi
   4472      1.1  mrg     case $destdir in
   4473      1.1  mrg     [\\/]* | [A-Za-z]:[\\/]*) ;;
   4474      1.1  mrg     *)
   4475      1.1  mrg       for file in $files; do
   4476      1.1  mrg 	case $file in
   4477      1.1  mrg 	*.lo) ;;
   4478      1.1  mrg 	*)
   4479      1.1  mrg 	  func_fatal_help "'$destdir' must be an absolute directory name"
   4480      1.1  mrg 	  ;;
   4481      1.1  mrg 	esac
   4482      1.1  mrg       done
   4483      1.1  mrg       ;;
   4484      1.1  mrg     esac
   4485      1.1  mrg 
   4486      1.1  mrg     # This variable tells wrapper scripts just to set variables rather
   4487      1.1  mrg     # than running their programs.
   4488      1.1  mrg     libtool_install_magic=$magic
   4489      1.1  mrg 
   4490      1.1  mrg     staticlibs=
   4491      1.1  mrg     future_libdirs=
   4492      1.1  mrg     current_libdirs=
   4493      1.1  mrg     for file in $files; do
   4494      1.1  mrg 
   4495      1.1  mrg       # Do each installation.
   4496      1.1  mrg       case $file in
   4497      1.1  mrg       *.$libext)
   4498      1.1  mrg 	# Do the static libraries later.
   4499      1.1  mrg 	func_append staticlibs " $file"
   4500      1.1  mrg 	;;
   4501      1.1  mrg 
   4502      1.1  mrg       *.la)
   4503      1.1  mrg 	func_resolve_sysroot "$file"
   4504      1.1  mrg 	file=$func_resolve_sysroot_result
   4505      1.1  mrg 
   4506      1.1  mrg 	# Check to see that this really is a libtool archive.
   4507      1.1  mrg 	func_lalib_unsafe_p "$file" \
   4508      1.1  mrg 	  || func_fatal_help "'$file' is not a valid libtool archive"
   4509      1.1  mrg 
   4510      1.1  mrg 	library_names=
   4511      1.1  mrg 	old_library=
   4512      1.1  mrg 	relink_command=
   4513      1.1  mrg 	func_source "$file"
   4514      1.1  mrg 
   4515      1.1  mrg 	# Add the libdir to current_libdirs if it is the destination.
   4516      1.1  mrg 	if test "X$destdir" = "X$libdir"; then
   4517      1.1  mrg 	  case "$current_libdirs " in
   4518      1.1  mrg 	  *" $libdir "*) ;;
   4519      1.1  mrg 	  *) func_append current_libdirs " $libdir" ;;
   4520      1.1  mrg 	  esac
   4521      1.1  mrg 	else
   4522      1.1  mrg 	  # Note the libdir as a future libdir.
   4523      1.1  mrg 	  case "$future_libdirs " in
   4524      1.1  mrg 	  *" $libdir "*) ;;
   4525      1.1  mrg 	  *) func_append future_libdirs " $libdir" ;;
   4526      1.1  mrg 	  esac
   4527      1.1  mrg 	fi
   4528      1.1  mrg 
   4529      1.1  mrg 	func_dirname "$file" "/" ""
   4530      1.1  mrg 	dir=$func_dirname_result
   4531      1.1  mrg 	func_append dir "$objdir"
   4532      1.1  mrg 
   4533      1.1  mrg 	if test -n "$relink_command"; then
   4534      1.1  mrg 	  # Determine the prefix the user has applied to our future dir.
   4535      1.1  mrg 	  inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"`
   4536      1.1  mrg 
   4537      1.1  mrg 	  # Don't allow the user to place us outside of our expected
   4538      1.1  mrg 	  # location b/c this prevents finding dependent libraries that
   4539      1.1  mrg 	  # are installed to the same prefix.
   4540      1.1  mrg 	  # At present, this check doesn't affect windows .dll's that
   4541      1.1  mrg 	  # are installed into $libdir/../bin (currently, that works fine)
   4542      1.1  mrg 	  # but it's something to keep an eye on.
   4543      1.1  mrg 	  test "$inst_prefix_dir" = "$destdir" && \
   4544      1.1  mrg 	    func_fatal_error "error: cannot install '$file' to a directory not ending in $libdir"
   4545      1.1  mrg 
   4546      1.1  mrg 	  if test -n "$inst_prefix_dir"; then
   4547      1.1  mrg 	    # Stick the inst_prefix_dir data into the link command.
   4548      1.1  mrg 	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
   4549      1.1  mrg 	  else
   4550      1.1  mrg 	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
   4551      1.1  mrg 	  fi
   4552      1.1  mrg 
   4553      1.1  mrg 	  func_warning "relinking '$file'"
   4554      1.1  mrg 	  func_show_eval "$relink_command" \
   4555      1.1  mrg 	    'func_fatal_error "error: relink '\''$file'\'' with the above command before installing it"'
   4556      1.1  mrg 	fi
   4557      1.1  mrg 
   4558      1.1  mrg 	# See the names of the shared library.
   4559      1.1  mrg 	set dummy $library_names; shift
   4560      1.1  mrg 	if test -n "$1"; then
   4561      1.1  mrg 	  realname=$1
   4562      1.1  mrg 	  shift
   4563      1.1  mrg 
   4564      1.1  mrg 	  srcname=$realname
   4565      1.1  mrg 	  test -n "$relink_command" && srcname=${realname}T
   4566      1.1  mrg 
   4567      1.1  mrg 	  # Install the shared library and build the symlinks.
   4568      1.1  mrg 	  func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \
   4569      1.1  mrg 	      'exit $?'
   4570      1.1  mrg 	  tstripme=$stripme
   4571      1.1  mrg 	  case $host_os in
   4572      1.1  mrg 	  cygwin* | mingw* | pw32* | cegcc*)
   4573      1.1  mrg 	    case $realname in
   4574      1.1  mrg 	    *.dll.a)
   4575      1.1  mrg 	      tstripme=
   4576      1.1  mrg 	      ;;
   4577      1.1  mrg 	    esac
   4578      1.1  mrg 	    ;;
   4579      1.1  mrg 	  os2*)
   4580      1.1  mrg 	    case $realname in
   4581      1.1  mrg 	    *_dll.a)
   4582      1.1  mrg 	      tstripme=
   4583      1.1  mrg 	      ;;
   4584      1.1  mrg 	    esac
   4585      1.1  mrg 	    ;;
   4586      1.1  mrg 	  esac
   4587      1.1  mrg 	  if test -n "$tstripme" && test -n "$striplib"; then
   4588      1.1  mrg 	    func_show_eval "$striplib $destdir/$realname" 'exit $?'
   4589      1.1  mrg 	  fi
   4590      1.1  mrg 
   4591      1.1  mrg 	  if test "$#" -gt 0; then
   4592      1.1  mrg 	    # Delete the old symlinks, and create new ones.
   4593      1.1  mrg 	    # Try 'ln -sf' first, because the 'ln' binary might depend on
   4594      1.1  mrg 	    # the symlink we replace!  Solaris /bin/ln does not understand -f,
   4595      1.1  mrg 	    # so we also need to try rm && ln -s.
   4596      1.1  mrg 	    for linkname
   4597      1.1  mrg 	    do
   4598      1.1  mrg 	      test "$linkname" != "$realname" \
   4599      1.1  mrg 		&& func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
   4600      1.1  mrg 	    done
   4601      1.1  mrg 	  fi
   4602      1.1  mrg 
   4603      1.1  mrg 	  # Do each command in the postinstall commands.
   4604      1.1  mrg 	  lib=$destdir/$realname
   4605      1.1  mrg 	  func_execute_cmds "$postinstall_cmds" 'exit $?'
   4606      1.1  mrg 	fi
   4607      1.1  mrg 
   4608      1.1  mrg 	# Install the pseudo-library for information purposes.
   4609      1.1  mrg 	func_basename "$file"
   4610      1.1  mrg 	name=$func_basename_result
   4611      1.1  mrg 	instname=$dir/${name}i
   4612      1.1  mrg 	func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
   4613      1.1  mrg 
   4614      1.1  mrg 	# Maybe install the static library, too.
   4615      1.1  mrg 	test -n "$old_library" && func_append staticlibs " $dir/$old_library"
   4616      1.1  mrg 	;;
   4617      1.1  mrg 
   4618      1.1  mrg       *.lo)
   4619      1.1  mrg 	# Install (i.e. copy) a libtool object.
   4620      1.1  mrg 
   4621      1.1  mrg 	# Figure out destination file name, if it wasn't already specified.
   4622      1.1  mrg 	if test -n "$destname"; then
   4623      1.1  mrg 	  destfile=$destdir/$destname
   4624      1.1  mrg 	else
   4625      1.1  mrg 	  func_basename "$file"
   4626      1.1  mrg 	  destfile=$func_basename_result
   4627      1.1  mrg 	  destfile=$destdir/$destfile
   4628      1.1  mrg 	fi
   4629      1.1  mrg 
   4630      1.1  mrg 	# Deduce the name of the destination old-style object file.
   4631      1.1  mrg 	case $destfile in
   4632      1.1  mrg 	*.lo)
   4633      1.1  mrg 	  func_lo2o "$destfile"
   4634      1.1  mrg 	  staticdest=$func_lo2o_result
   4635      1.1  mrg 	  ;;
   4636      1.1  mrg 	*.$objext)
   4637      1.1  mrg 	  staticdest=$destfile
   4638      1.1  mrg 	  destfile=
   4639      1.1  mrg 	  ;;
   4640      1.1  mrg 	*)
   4641      1.1  mrg 	  func_fatal_help "cannot copy a libtool object to '$destfile'"
   4642      1.1  mrg 	  ;;
   4643      1.1  mrg 	esac
   4644      1.1  mrg 
   4645      1.1  mrg 	# Install the libtool object if requested.
   4646      1.1  mrg 	test -n "$destfile" && \
   4647      1.1  mrg 	  func_show_eval "$install_prog $file $destfile" 'exit $?'
   4648      1.1  mrg 
   4649      1.1  mrg 	# Install the old object if enabled.
   4650      1.1  mrg 	if test yes = "$build_old_libs"; then
   4651      1.1  mrg 	  # Deduce the name of the old-style object file.
   4652      1.1  mrg 	  func_lo2o "$file"
   4653      1.1  mrg 	  staticobj=$func_lo2o_result
   4654      1.1  mrg 	  func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
   4655      1.1  mrg 	fi
   4656      1.1  mrg 	exit $EXIT_SUCCESS
   4657      1.1  mrg 	;;
   4658      1.1  mrg 
   4659      1.1  mrg       *)
   4660      1.1  mrg 	# Figure out destination file name, if it wasn't already specified.
   4661      1.1  mrg 	if test -n "$destname"; then
   4662      1.1  mrg 	  destfile=$destdir/$destname
   4663      1.1  mrg 	else
   4664      1.1  mrg 	  func_basename "$file"
   4665      1.1  mrg 	  destfile=$func_basename_result
   4666      1.1  mrg 	  destfile=$destdir/$destfile
   4667      1.1  mrg 	fi
   4668      1.1  mrg 
   4669      1.1  mrg 	# If the file is missing, and there is a .exe on the end, strip it
   4670      1.1  mrg 	# because it is most likely a libtool script we actually want to
   4671      1.1  mrg 	# install
   4672      1.1  mrg 	stripped_ext=
   4673      1.1  mrg 	case $file in
   4674      1.1  mrg 	  *.exe)
   4675      1.1  mrg 	    if test ! -f "$file"; then
   4676      1.1  mrg 	      func_stripname '' '.exe' "$file"
   4677      1.1  mrg 	      file=$func_stripname_result
   4678      1.1  mrg 	      stripped_ext=.exe
   4679      1.1  mrg 	    fi
   4680      1.1  mrg 	    ;;
   4681      1.1  mrg 	esac
   4682      1.1  mrg 
   4683      1.1  mrg 	# Do a test to see if this is really a libtool program.
   4684      1.1  mrg 	case $host in
   4685      1.1  mrg 	*cygwin* | *mingw*)
   4686      1.1  mrg 	    if func_ltwrapper_executable_p "$file"; then
   4687      1.1  mrg 	      func_ltwrapper_scriptname "$file"
   4688      1.1  mrg 	      wrapper=$func_ltwrapper_scriptname_result
   4689      1.1  mrg 	    else
   4690      1.1  mrg 	      func_stripname '' '.exe' "$file"
   4691      1.1  mrg 	      wrapper=$func_stripname_result
   4692      1.1  mrg 	    fi
   4693      1.1  mrg 	    ;;
   4694      1.1  mrg 	*)
   4695      1.1  mrg 	    wrapper=$file
   4696      1.1  mrg 	    ;;
   4697      1.1  mrg 	esac
   4698      1.1  mrg 	if func_ltwrapper_script_p "$wrapper"; then
   4699      1.1  mrg 	  notinst_deplibs=
   4700      1.1  mrg 	  relink_command=
   4701      1.1  mrg 
   4702      1.1  mrg 	  func_source "$wrapper"
   4703      1.1  mrg 
   4704      1.1  mrg 	  # Check the variables that should have been set.
   4705      1.1  mrg 	  test -z "$generated_by_libtool_version" && \
   4706      1.1  mrg 	    func_fatal_error "invalid libtool wrapper script '$wrapper'"
   4707      1.1  mrg 
   4708      1.1  mrg 	  finalize=:
   4709      1.1  mrg 	  for lib in $notinst_deplibs; do
   4710      1.1  mrg 	    # Check to see that each library is installed.
   4711      1.1  mrg 	    libdir=
   4712      1.1  mrg 	    if test -f "$lib"; then
   4713      1.1  mrg 	      func_source "$lib"
   4714      1.1  mrg 	    fi
   4715      1.1  mrg 	    libfile=$libdir/`$ECHO "$lib" | $SED 's%^.*/%%g'`
   4716      1.1  mrg 	    if test -n "$libdir" && test ! -f "$libfile"; then
   4717      1.1  mrg 	      func_warning "'$lib' has not been installed in '$libdir'"
   4718      1.1  mrg 	      finalize=false
   4719      1.1  mrg 	    fi
   4720      1.1  mrg 	  done
   4721      1.1  mrg 
   4722      1.1  mrg 	  relink_command=
   4723      1.1  mrg 	  func_source "$wrapper"
   4724      1.1  mrg 
   4725      1.1  mrg 	  outputname=
   4726      1.1  mrg 	  if test no = "$fast_install" && test -n "$relink_command"; then
   4727      1.1  mrg 	    $opt_dry_run || {
   4728      1.1  mrg 	      if $finalize; then
   4729      1.1  mrg 	        tmpdir=`func_mktempdir`
   4730      1.1  mrg 		func_basename "$file$stripped_ext"
   4731      1.1  mrg 		file=$func_basename_result
   4732      1.1  mrg 	        outputname=$tmpdir/$file
   4733      1.1  mrg 	        # Replace the output file specification.
   4734      1.1  mrg 	        relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'`
   4735      1.1  mrg 
   4736      1.1  mrg 	        $opt_quiet || {
   4737  1.1.1.2  mrg 	          func_quote_arg expand,pretty "$relink_command"
   4738  1.1.1.2  mrg 		  eval "func_echo $func_quote_arg_result"
   4739      1.1  mrg 	        }
   4740      1.1  mrg 	        if eval "$relink_command"; then :
   4741      1.1  mrg 	          else
   4742      1.1  mrg 		  func_error "error: relink '$file' with the above command before installing it"
   4743      1.1  mrg 		  $opt_dry_run || ${RM}r "$tmpdir"
   4744      1.1  mrg 		  continue
   4745      1.1  mrg 	        fi
   4746      1.1  mrg 	        file=$outputname
   4747      1.1  mrg 	      else
   4748      1.1  mrg 	        func_warning "cannot relink '$file'"
   4749      1.1  mrg 	      fi
   4750      1.1  mrg 	    }
   4751      1.1  mrg 	  else
   4752      1.1  mrg 	    # Install the binary that we compiled earlier.
   4753      1.1  mrg 	    file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"`
   4754      1.1  mrg 	  fi
   4755      1.1  mrg 	fi
   4756      1.1  mrg 
   4757      1.1  mrg 	# remove .exe since cygwin /usr/bin/install will append another
   4758      1.1  mrg 	# one anyway
   4759      1.1  mrg 	case $install_prog,$host in
   4760      1.1  mrg 	*/usr/bin/install*,*cygwin*)
   4761      1.1  mrg 	  case $file:$destfile in
   4762      1.1  mrg 	  *.exe:*.exe)
   4763      1.1  mrg 	    # this is ok
   4764      1.1  mrg 	    ;;
   4765      1.1  mrg 	  *.exe:*)
   4766      1.1  mrg 	    destfile=$destfile.exe
   4767      1.1  mrg 	    ;;
   4768      1.1  mrg 	  *:*.exe)
   4769      1.1  mrg 	    func_stripname '' '.exe' "$destfile"
   4770      1.1  mrg 	    destfile=$func_stripname_result
   4771      1.1  mrg 	    ;;
   4772      1.1  mrg 	  esac
   4773      1.1  mrg 	  ;;
   4774      1.1  mrg 	esac
   4775      1.1  mrg 	func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
   4776      1.1  mrg 	$opt_dry_run || if test -n "$outputname"; then
   4777      1.1  mrg 	  ${RM}r "$tmpdir"
   4778      1.1  mrg 	fi
   4779      1.1  mrg 	;;
   4780      1.1  mrg       esac
   4781      1.1  mrg     done
   4782      1.1  mrg 
   4783      1.1  mrg     for file in $staticlibs; do
   4784      1.1  mrg       func_basename "$file"
   4785      1.1  mrg       name=$func_basename_result
   4786      1.1  mrg 
   4787      1.1  mrg       # Set up the ranlib parameters.
   4788      1.1  mrg       oldlib=$destdir/$name
   4789      1.1  mrg       func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
   4790      1.1  mrg       tool_oldlib=$func_to_tool_file_result
   4791      1.1  mrg 
   4792      1.1  mrg       func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
   4793      1.1  mrg 
   4794      1.1  mrg       if test -n "$stripme" && test -n "$old_striplib"; then
   4795      1.1  mrg 	func_show_eval "$old_striplib $tool_oldlib" 'exit $?'
   4796      1.1  mrg       fi
   4797      1.1  mrg 
   4798      1.1  mrg       # Do each command in the postinstall commands.
   4799      1.1  mrg       func_execute_cmds "$old_postinstall_cmds" 'exit $?'
   4800      1.1  mrg     done
   4801      1.1  mrg 
   4802      1.1  mrg     test -n "$future_libdirs" && \
   4803      1.1  mrg       func_warning "remember to run '$progname --finish$future_libdirs'"
   4804      1.1  mrg 
   4805      1.1  mrg     if test -n "$current_libdirs"; then
   4806      1.1  mrg       # Maybe just do a dry run.
   4807      1.1  mrg       $opt_dry_run && current_libdirs=" -n$current_libdirs"
   4808      1.1  mrg       exec_cmd='$SHELL "$progpath" $preserve_args --finish$current_libdirs'
   4809      1.1  mrg     else
   4810      1.1  mrg       exit $EXIT_SUCCESS
   4811      1.1  mrg     fi
   4812      1.1  mrg }
   4813      1.1  mrg 
   4814      1.1  mrg test install = "$opt_mode" && func_mode_install ${1+"$@"}
   4815      1.1  mrg 
   4816      1.1  mrg 
   4817      1.1  mrg # func_generate_dlsyms outputname originator pic_p
   4818      1.1  mrg # Extract symbols from dlprefiles and create ${outputname}S.o with
   4819      1.1  mrg # a dlpreopen symbol table.
   4820      1.1  mrg func_generate_dlsyms ()
   4821      1.1  mrg {
   4822      1.1  mrg     $debug_cmd
   4823      1.1  mrg 
   4824      1.1  mrg     my_outputname=$1
   4825      1.1  mrg     my_originator=$2
   4826      1.1  mrg     my_pic_p=${3-false}
   4827      1.1  mrg     my_prefix=`$ECHO "$my_originator" | $SED 's%[^a-zA-Z0-9]%_%g'`
   4828      1.1  mrg     my_dlsyms=
   4829      1.1  mrg 
   4830      1.1  mrg     if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then
   4831      1.1  mrg       if test -n "$NM" && test -n "$global_symbol_pipe"; then
   4832      1.1  mrg 	my_dlsyms=${my_outputname}S.c
   4833      1.1  mrg       else
   4834      1.1  mrg 	func_error "not configured to extract global symbols from dlpreopened files"
   4835      1.1  mrg       fi
   4836      1.1  mrg     fi
   4837      1.1  mrg 
   4838      1.1  mrg     if test -n "$my_dlsyms"; then
   4839      1.1  mrg       case $my_dlsyms in
   4840      1.1  mrg       "") ;;
   4841      1.1  mrg       *.c)
   4842      1.1  mrg 	# Discover the nlist of each of the dlfiles.
   4843      1.1  mrg 	nlist=$output_objdir/$my_outputname.nm
   4844      1.1  mrg 
   4845      1.1  mrg 	func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
   4846      1.1  mrg 
   4847      1.1  mrg 	# Parse the name list into a source file.
   4848      1.1  mrg 	func_verbose "creating $output_objdir/$my_dlsyms"
   4849      1.1  mrg 
   4850      1.1  mrg 	$opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
   4851      1.1  mrg /* $my_dlsyms - symbol resolution table for '$my_outputname' dlsym emulation. */
   4852      1.1  mrg /* Generated by $PROGRAM (GNU $PACKAGE) $VERSION */
   4853      1.1  mrg 
   4854      1.1  mrg #ifdef __cplusplus
   4855      1.1  mrg extern \"C\" {
   4856      1.1  mrg #endif
   4857      1.1  mrg 
   4858      1.1  mrg #if defined __GNUC__ && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4))
   4859      1.1  mrg #pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
   4860      1.1  mrg #endif
   4861      1.1  mrg 
   4862      1.1  mrg /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
   4863      1.1  mrg #if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE
   4864      1.1  mrg /* DATA imports from DLLs on WIN32 can't be const, because runtime
   4865      1.1  mrg    relocations are performed -- see ld's documentation on pseudo-relocs.  */
   4866      1.1  mrg # define LT_DLSYM_CONST
   4867      1.1  mrg #elif defined __osf__
   4868      1.1  mrg /* This system does not cope well with relocations in const data.  */
   4869      1.1  mrg # define LT_DLSYM_CONST
   4870      1.1  mrg #else
   4871      1.1  mrg # define LT_DLSYM_CONST const
   4872      1.1  mrg #endif
   4873      1.1  mrg 
   4874      1.1  mrg #define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0)
   4875      1.1  mrg 
   4876      1.1  mrg /* External symbol declarations for the compiler. */\
   4877      1.1  mrg "
   4878      1.1  mrg 
   4879      1.1  mrg 	if test yes = "$dlself"; then
   4880      1.1  mrg 	  func_verbose "generating symbol list for '$output'"
   4881      1.1  mrg 
   4882      1.1  mrg 	  $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
   4883      1.1  mrg 
   4884      1.1  mrg 	  # Add our own program objects to the symbol list.
   4885      1.1  mrg 	  progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP`
   4886      1.1  mrg 	  for progfile in $progfiles; do
   4887      1.1  mrg 	    func_to_tool_file "$progfile" func_convert_file_msys_to_w32
   4888      1.1  mrg 	    func_verbose "extracting global C symbols from '$func_to_tool_file_result'"
   4889      1.1  mrg 	    $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'"
   4890      1.1  mrg 	  done
   4891      1.1  mrg 
   4892      1.1  mrg 	  if test -n "$exclude_expsyms"; then
   4893      1.1  mrg 	    $opt_dry_run || {
   4894      1.1  mrg 	      eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
   4895      1.1  mrg 	      eval '$MV "$nlist"T "$nlist"'
   4896      1.1  mrg 	    }
   4897      1.1  mrg 	  fi
   4898      1.1  mrg 
   4899      1.1  mrg 	  if test -n "$export_symbols_regex"; then
   4900      1.1  mrg 	    $opt_dry_run || {
   4901      1.1  mrg 	      eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
   4902      1.1  mrg 	      eval '$MV "$nlist"T "$nlist"'
   4903      1.1  mrg 	    }
   4904      1.1  mrg 	  fi
   4905      1.1  mrg 
   4906      1.1  mrg 	  # Prepare the list of exported symbols
   4907      1.1  mrg 	  if test -z "$export_symbols"; then
   4908      1.1  mrg 	    export_symbols=$output_objdir/$outputname.exp
   4909      1.1  mrg 	    $opt_dry_run || {
   4910      1.1  mrg 	      $RM $export_symbols
   4911      1.1  mrg 	      eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
   4912      1.1  mrg 	      case $host in
   4913      1.1  mrg 	      *cygwin* | *mingw* | *cegcc* )
   4914      1.1  mrg                 eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
   4915      1.1  mrg                 eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
   4916      1.1  mrg 	        ;;
   4917      1.1  mrg 	      esac
   4918      1.1  mrg 	    }
   4919      1.1  mrg 	  else
   4920      1.1  mrg 	    $opt_dry_run || {
   4921      1.1  mrg 	      eval "$SED -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
   4922      1.1  mrg 	      eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
   4923      1.1  mrg 	      eval '$MV "$nlist"T "$nlist"'
   4924      1.1  mrg 	      case $host in
   4925      1.1  mrg 	        *cygwin* | *mingw* | *cegcc* )
   4926      1.1  mrg 	          eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
   4927      1.1  mrg 	          eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
   4928      1.1  mrg 	          ;;
   4929      1.1  mrg 	      esac
   4930      1.1  mrg 	    }
   4931      1.1  mrg 	  fi
   4932      1.1  mrg 	fi
   4933      1.1  mrg 
   4934      1.1  mrg 	for dlprefile in $dlprefiles; do
   4935      1.1  mrg 	  func_verbose "extracting global C symbols from '$dlprefile'"
   4936      1.1  mrg 	  func_basename "$dlprefile"
   4937      1.1  mrg 	  name=$func_basename_result
   4938      1.1  mrg           case $host in
   4939      1.1  mrg 	    *cygwin* | *mingw* | *cegcc* )
   4940      1.1  mrg 	      # if an import library, we need to obtain dlname
   4941      1.1  mrg 	      if func_win32_import_lib_p "$dlprefile"; then
   4942      1.1  mrg 	        func_tr_sh "$dlprefile"
   4943      1.1  mrg 	        eval "curr_lafile=\$libfile_$func_tr_sh_result"
   4944      1.1  mrg 	        dlprefile_dlbasename=
   4945      1.1  mrg 	        if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then
   4946      1.1  mrg 	          # Use subshell, to avoid clobbering current variable values
   4947      1.1  mrg 	          dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"`
   4948      1.1  mrg 	          if test -n "$dlprefile_dlname"; then
   4949      1.1  mrg 	            func_basename "$dlprefile_dlname"
   4950      1.1  mrg 	            dlprefile_dlbasename=$func_basename_result
   4951      1.1  mrg 	          else
   4952      1.1  mrg 	            # no lafile. user explicitly requested -dlpreopen <import library>.
   4953      1.1  mrg 	            $sharedlib_from_linklib_cmd "$dlprefile"
   4954      1.1  mrg 	            dlprefile_dlbasename=$sharedlib_from_linklib_result
   4955      1.1  mrg 	          fi
   4956      1.1  mrg 	        fi
   4957      1.1  mrg 	        $opt_dry_run || {
   4958      1.1  mrg 	          if test -n "$dlprefile_dlbasename"; then
   4959      1.1  mrg 	            eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"'
   4960      1.1  mrg 	          else
   4961      1.1  mrg 	            func_warning "Could not compute DLL name from $name"
   4962      1.1  mrg 	            eval '$ECHO ": $name " >> "$nlist"'
   4963      1.1  mrg 	          fi
   4964      1.1  mrg 	          func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
   4965      1.1  mrg 	          eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe |
   4966      1.1  mrg 	            $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'"
   4967      1.1  mrg 	        }
   4968      1.1  mrg 	      else # not an import lib
   4969      1.1  mrg 	        $opt_dry_run || {
   4970      1.1  mrg 	          eval '$ECHO ": $name " >> "$nlist"'
   4971      1.1  mrg 	          func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
   4972      1.1  mrg 	          eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
   4973      1.1  mrg 	        }
   4974      1.1  mrg 	      fi
   4975      1.1  mrg 	    ;;
   4976      1.1  mrg 	    *)
   4977      1.1  mrg 	      $opt_dry_run || {
   4978      1.1  mrg 	        eval '$ECHO ": $name " >> "$nlist"'
   4979      1.1  mrg 	        func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
   4980      1.1  mrg 	        eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
   4981      1.1  mrg 	      }
   4982      1.1  mrg 	    ;;
   4983      1.1  mrg           esac
   4984      1.1  mrg 	done
   4985      1.1  mrg 
   4986      1.1  mrg 	$opt_dry_run || {
   4987      1.1  mrg 	  # Make sure we have at least an empty file.
   4988      1.1  mrg 	  test -f "$nlist" || : > "$nlist"
   4989      1.1  mrg 
   4990      1.1  mrg 	  if test -n "$exclude_expsyms"; then
   4991      1.1  mrg 	    $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
   4992      1.1  mrg 	    $MV "$nlist"T "$nlist"
   4993      1.1  mrg 	  fi
   4994      1.1  mrg 
   4995      1.1  mrg 	  # Try sorting and uniquifying the output.
   4996      1.1  mrg 	  if $GREP -v "^: " < "$nlist" |
   4997      1.1  mrg 	      if sort -k 3 </dev/null >/dev/null 2>&1; then
   4998      1.1  mrg 		sort -k 3
   4999      1.1  mrg 	      else
   5000      1.1  mrg 		sort +2
   5001      1.1  mrg 	      fi |
   5002      1.1  mrg 	      uniq > "$nlist"S; then
   5003      1.1  mrg 	    :
   5004      1.1  mrg 	  else
   5005      1.1  mrg 	    $GREP -v "^: " < "$nlist" > "$nlist"S
   5006      1.1  mrg 	  fi
   5007      1.1  mrg 
   5008      1.1  mrg 	  if test -f "$nlist"S; then
   5009      1.1  mrg 	    eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
   5010      1.1  mrg 	  else
   5011      1.1  mrg 	    echo '/* NONE */' >> "$output_objdir/$my_dlsyms"
   5012      1.1  mrg 	  fi
   5013      1.1  mrg 
   5014      1.1  mrg 	  func_show_eval '$RM "${nlist}I"'
   5015      1.1  mrg 	  if test -n "$global_symbol_to_import"; then
   5016      1.1  mrg 	    eval "$global_symbol_to_import"' < "$nlist"S > "$nlist"I'
   5017      1.1  mrg 	  fi
   5018      1.1  mrg 
   5019      1.1  mrg 	  echo >> "$output_objdir/$my_dlsyms" "\
   5020      1.1  mrg 
   5021      1.1  mrg /* The mapping between symbol names and symbols.  */
   5022      1.1  mrg typedef struct {
   5023      1.1  mrg   const char *name;
   5024      1.1  mrg   void *address;
   5025      1.1  mrg } lt_dlsymlist;
   5026      1.1  mrg extern LT_DLSYM_CONST lt_dlsymlist
   5027      1.1  mrg lt_${my_prefix}_LTX_preloaded_symbols[];\
   5028      1.1  mrg "
   5029      1.1  mrg 
   5030      1.1  mrg 	  if test -s "$nlist"I; then
   5031      1.1  mrg 	    echo >> "$output_objdir/$my_dlsyms" "\
   5032      1.1  mrg static void lt_syminit(void)
   5033      1.1  mrg {
   5034      1.1  mrg   LT_DLSYM_CONST lt_dlsymlist *symbol = lt_${my_prefix}_LTX_preloaded_symbols;
   5035      1.1  mrg   for (; symbol->name; ++symbol)
   5036      1.1  mrg     {"
   5037      1.1  mrg 	    $SED 's/.*/      if (STREQ (symbol->name, \"&\")) symbol->address = (void *) \&&;/' < "$nlist"I >> "$output_objdir/$my_dlsyms"
   5038      1.1  mrg 	    echo >> "$output_objdir/$my_dlsyms" "\
   5039      1.1  mrg     }
   5040      1.1  mrg }"
   5041      1.1  mrg 	  fi
   5042      1.1  mrg 	  echo >> "$output_objdir/$my_dlsyms" "\
   5043      1.1  mrg LT_DLSYM_CONST lt_dlsymlist
   5044      1.1  mrg lt_${my_prefix}_LTX_preloaded_symbols[] =
   5045      1.1  mrg { {\"$my_originator\", (void *) 0},"
   5046      1.1  mrg 
   5047      1.1  mrg 	  if test -s "$nlist"I; then
   5048      1.1  mrg 	    echo >> "$output_objdir/$my_dlsyms" "\
   5049      1.1  mrg   {\"@INIT@\", (void *) &lt_syminit},"
   5050      1.1  mrg 	  fi
   5051      1.1  mrg 
   5052      1.1  mrg 	  case $need_lib_prefix in
   5053      1.1  mrg 	  no)
   5054      1.1  mrg 	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
   5055      1.1  mrg 	    ;;
   5056      1.1  mrg 	  *)
   5057      1.1  mrg 	    eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
   5058      1.1  mrg 	    ;;
   5059      1.1  mrg 	  esac
   5060      1.1  mrg 	  echo >> "$output_objdir/$my_dlsyms" "\
   5061      1.1  mrg   {0, (void *) 0}
   5062      1.1  mrg };
   5063      1.1  mrg 
   5064      1.1  mrg /* This works around a problem in FreeBSD linker */
   5065      1.1  mrg #ifdef FREEBSD_WORKAROUND
   5066      1.1  mrg static const void *lt_preloaded_setup() {
   5067      1.1  mrg   return lt_${my_prefix}_LTX_preloaded_symbols;
   5068      1.1  mrg }
   5069      1.1  mrg #endif
   5070      1.1  mrg 
   5071      1.1  mrg #ifdef __cplusplus
   5072      1.1  mrg }
   5073      1.1  mrg #endif\
   5074      1.1  mrg "
   5075      1.1  mrg 	} # !$opt_dry_run
   5076      1.1  mrg 
   5077      1.1  mrg 	pic_flag_for_symtable=
   5078      1.1  mrg 	case "$compile_command " in
   5079      1.1  mrg 	*" -static "*) ;;
   5080      1.1  mrg 	*)
   5081      1.1  mrg 	  case $host in
   5082      1.1  mrg 	  # compiling the symbol table file with pic_flag works around
   5083      1.1  mrg 	  # a FreeBSD bug that causes programs to crash when -lm is
   5084      1.1  mrg 	  # linked before any other PIC object.  But we must not use
   5085      1.1  mrg 	  # pic_flag when linking with -static.  The problem exists in
   5086      1.1  mrg 	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
   5087      1.1  mrg 	  *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
   5088      1.1  mrg 	    pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
   5089      1.1  mrg 	  *-*-hpux*)
   5090      1.1  mrg 	    pic_flag_for_symtable=" $pic_flag"  ;;
   5091      1.1  mrg 	  *)
   5092      1.1  mrg 	    $my_pic_p && pic_flag_for_symtable=" $pic_flag"
   5093      1.1  mrg 	    ;;
   5094      1.1  mrg 	  esac
   5095      1.1  mrg 	  ;;
   5096      1.1  mrg 	esac
   5097      1.1  mrg 	symtab_cflags=
   5098      1.1  mrg 	for arg in $LTCFLAGS; do
   5099      1.1  mrg 	  case $arg in
   5100      1.1  mrg 	  -pie | -fpie | -fPIE) ;;
   5101      1.1  mrg 	  *) func_append symtab_cflags " $arg" ;;
   5102      1.1  mrg 	  esac
   5103      1.1  mrg 	done
   5104      1.1  mrg 
   5105      1.1  mrg 	# Now compile the dynamic symbol file.
   5106      1.1  mrg 	func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
   5107      1.1  mrg 
   5108      1.1  mrg 	# Clean up the generated files.
   5109      1.1  mrg 	func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T" "${nlist}I"'
   5110      1.1  mrg 
   5111      1.1  mrg 	# Transform the symbol file into the correct name.
   5112      1.1  mrg 	symfileobj=$output_objdir/${my_outputname}S.$objext
   5113      1.1  mrg 	case $host in
   5114      1.1  mrg 	*cygwin* | *mingw* | *cegcc* )
   5115      1.1  mrg 	  if test -f "$output_objdir/$my_outputname.def"; then
   5116      1.1  mrg 	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
   5117      1.1  mrg 	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
   5118      1.1  mrg 	  else
   5119      1.1  mrg 	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
   5120      1.1  mrg 	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
   5121      1.1  mrg 	  fi
   5122      1.1  mrg 	  ;;
   5123      1.1  mrg 	*)
   5124      1.1  mrg 	  compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
   5125      1.1  mrg 	  finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
   5126      1.1  mrg 	  ;;
   5127      1.1  mrg 	esac
   5128      1.1  mrg 	;;
   5129      1.1  mrg       *)
   5130      1.1  mrg 	func_fatal_error "unknown suffix for '$my_dlsyms'"
   5131      1.1  mrg 	;;
   5132      1.1  mrg       esac
   5133      1.1  mrg     else
   5134      1.1  mrg       # We keep going just in case the user didn't refer to
   5135      1.1  mrg       # lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
   5136      1.1  mrg       # really was required.
   5137      1.1  mrg 
   5138      1.1  mrg       # Nullify the symbol file.
   5139      1.1  mrg       compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"`
   5140      1.1  mrg       finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"`
   5141      1.1  mrg     fi
   5142      1.1  mrg }
   5143      1.1  mrg 
   5144      1.1  mrg # func_cygming_gnu_implib_p ARG
   5145      1.1  mrg # This predicate returns with zero status (TRUE) if
   5146      1.1  mrg # ARG is a GNU/binutils-style import library. Returns
   5147      1.1  mrg # with nonzero status (FALSE) otherwise.
   5148      1.1  mrg func_cygming_gnu_implib_p ()
   5149      1.1  mrg {
   5150      1.1  mrg   $debug_cmd
   5151      1.1  mrg 
   5152      1.1  mrg   func_to_tool_file "$1" func_convert_file_msys_to_w32
   5153      1.1  mrg   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)$'`
   5154      1.1  mrg   test -n "$func_cygming_gnu_implib_tmp"
   5155      1.1  mrg }
   5156      1.1  mrg 
   5157      1.1  mrg # func_cygming_ms_implib_p ARG
   5158      1.1  mrg # This predicate returns with zero status (TRUE) if
   5159      1.1  mrg # ARG is an MS-style import library. Returns
   5160      1.1  mrg # with nonzero status (FALSE) otherwise.
   5161      1.1  mrg func_cygming_ms_implib_p ()
   5162      1.1  mrg {
   5163      1.1  mrg   $debug_cmd
   5164      1.1  mrg 
   5165      1.1  mrg   func_to_tool_file "$1" func_convert_file_msys_to_w32
   5166      1.1  mrg   func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'`
   5167      1.1  mrg   test -n "$func_cygming_ms_implib_tmp"
   5168      1.1  mrg }
   5169      1.1  mrg 
   5170      1.1  mrg # func_win32_libid arg
   5171      1.1  mrg # return the library type of file 'arg'
   5172      1.1  mrg #
   5173      1.1  mrg # Need a lot of goo to handle *both* DLLs and import libs
   5174      1.1  mrg # Has to be a shell function in order to 'eat' the argument
   5175      1.1  mrg # that is supplied when $file_magic_command is called.
   5176      1.1  mrg # Despite the name, also deal with 64 bit binaries.
   5177      1.1  mrg func_win32_libid ()
   5178      1.1  mrg {
   5179      1.1  mrg   $debug_cmd
   5180      1.1  mrg 
   5181      1.1  mrg   win32_libid_type=unknown
   5182      1.1  mrg   win32_fileres=`file -L $1 2>/dev/null`
   5183      1.1  mrg   case $win32_fileres in
   5184      1.1  mrg   *ar\ archive\ import\ library*) # definitely import
   5185      1.1  mrg     win32_libid_type="x86 archive import"
   5186      1.1  mrg     ;;
   5187      1.1  mrg   *ar\ archive*) # could be an import, or static
   5188      1.1  mrg     # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD.
   5189      1.1  mrg     if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
   5190      1.1  mrg        $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then
   5191      1.1  mrg       case $nm_interface in
   5192      1.1  mrg       "MS dumpbin")
   5193      1.1  mrg 	if func_cygming_ms_implib_p "$1" ||
   5194      1.1  mrg 	   func_cygming_gnu_implib_p "$1"
   5195      1.1  mrg 	then
   5196      1.1  mrg 	  win32_nmres=import
   5197      1.1  mrg 	else
   5198      1.1  mrg 	  win32_nmres=
   5199      1.1  mrg 	fi
   5200      1.1  mrg 	;;
   5201      1.1  mrg       *)
   5202      1.1  mrg 	func_to_tool_file "$1" func_convert_file_msys_to_w32
   5203      1.1  mrg 	win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" |
   5204      1.1  mrg 	  $SED -n -e '
   5205      1.1  mrg 	    1,100{
   5206      1.1  mrg 		/ I /{
   5207      1.1  mrg 		    s|.*|import|
   5208      1.1  mrg 		    p
   5209      1.1  mrg 		    q
   5210      1.1  mrg 		}
   5211      1.1  mrg 	    }'`
   5212      1.1  mrg 	;;
   5213      1.1  mrg       esac
   5214      1.1  mrg       case $win32_nmres in
   5215      1.1  mrg       import*)  win32_libid_type="x86 archive import";;
   5216      1.1  mrg       *)        win32_libid_type="x86 archive static";;
   5217      1.1  mrg       esac
   5218      1.1  mrg     fi
   5219      1.1  mrg     ;;
   5220      1.1  mrg   *DLL*)
   5221      1.1  mrg     win32_libid_type="x86 DLL"
   5222      1.1  mrg     ;;
   5223      1.1  mrg   *executable*) # but shell scripts are "executable" too...
   5224      1.1  mrg     case $win32_fileres in
   5225      1.1  mrg     *MS\ Windows\ PE\ Intel*)
   5226      1.1  mrg       win32_libid_type="x86 DLL"
   5227      1.1  mrg       ;;
   5228      1.1  mrg     esac
   5229      1.1  mrg     ;;
   5230      1.1  mrg   esac
   5231      1.1  mrg   $ECHO "$win32_libid_type"
   5232      1.1  mrg }
   5233      1.1  mrg 
   5234      1.1  mrg # func_cygming_dll_for_implib ARG
   5235      1.1  mrg #
   5236      1.1  mrg # Platform-specific function to extract the
   5237      1.1  mrg # name of the DLL associated with the specified
   5238      1.1  mrg # import library ARG.
   5239      1.1  mrg # Invoked by eval'ing the libtool variable
   5240      1.1  mrg #    $sharedlib_from_linklib_cmd
   5241      1.1  mrg # Result is available in the variable
   5242      1.1  mrg #    $sharedlib_from_linklib_result
   5243      1.1  mrg func_cygming_dll_for_implib ()
   5244      1.1  mrg {
   5245      1.1  mrg   $debug_cmd
   5246      1.1  mrg 
   5247      1.1  mrg   sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"`
   5248      1.1  mrg }
   5249      1.1  mrg 
   5250      1.1  mrg # func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs
   5251      1.1  mrg #
   5252      1.1  mrg # The is the core of a fallback implementation of a
   5253      1.1  mrg # platform-specific function to extract the name of the
   5254      1.1  mrg # DLL associated with the specified import library LIBNAME.
   5255      1.1  mrg #
   5256      1.1  mrg # SECTION_NAME is either .idata$6 or .idata$7, depending
   5257      1.1  mrg # on the platform and compiler that created the implib.
   5258      1.1  mrg #
   5259      1.1  mrg # Echos the name of the DLL associated with the
   5260      1.1  mrg # specified import library.
   5261      1.1  mrg func_cygming_dll_for_implib_fallback_core ()
   5262      1.1  mrg {
   5263      1.1  mrg   $debug_cmd
   5264      1.1  mrg 
   5265      1.1  mrg   match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"`
   5266      1.1  mrg   $OBJDUMP -s --section "$1" "$2" 2>/dev/null |
   5267      1.1  mrg     $SED '/^Contents of section '"$match_literal"':/{
   5268      1.1  mrg       # Place marker at beginning of archive member dllname section
   5269      1.1  mrg       s/.*/====MARK====/
   5270      1.1  mrg       p
   5271      1.1  mrg       d
   5272      1.1  mrg     }
   5273      1.1  mrg     # These lines can sometimes be longer than 43 characters, but
   5274      1.1  mrg     # are always uninteresting
   5275      1.1  mrg     /:[	 ]*file format pe[i]\{,1\}-/d
   5276      1.1  mrg     /^In archive [^:]*:/d
   5277      1.1  mrg     # Ensure marker is printed
   5278      1.1  mrg     /^====MARK====/p
   5279      1.1  mrg     # Remove all lines with less than 43 characters
   5280      1.1  mrg     /^.\{43\}/!d
   5281      1.1  mrg     # From remaining lines, remove first 43 characters
   5282      1.1  mrg     s/^.\{43\}//' |
   5283      1.1  mrg     $SED -n '
   5284      1.1  mrg       # Join marker and all lines until next marker into a single line
   5285      1.1  mrg       /^====MARK====/ b para
   5286      1.1  mrg       H
   5287      1.1  mrg       $ b para
   5288      1.1  mrg       b
   5289      1.1  mrg       :para
   5290      1.1  mrg       x
   5291      1.1  mrg       s/\n//g
   5292      1.1  mrg       # Remove the marker
   5293      1.1  mrg       s/^====MARK====//
   5294      1.1  mrg       # Remove trailing dots and whitespace
   5295      1.1  mrg       s/[\. \t]*$//
   5296      1.1  mrg       # Print
   5297      1.1  mrg       /./p' |
   5298      1.1  mrg     # we now have a list, one entry per line, of the stringified
   5299      1.1  mrg     # contents of the appropriate section of all members of the
   5300      1.1  mrg     # archive that possess that section. Heuristic: eliminate
   5301      1.1  mrg     # all those that have a first or second character that is
   5302      1.1  mrg     # a '.' (that is, objdump's representation of an unprintable
   5303      1.1  mrg     # character.) This should work for all archives with less than
   5304      1.1  mrg     # 0x302f exports -- but will fail for DLLs whose name actually
   5305      1.1  mrg     # begins with a literal '.' or a single character followed by
   5306      1.1  mrg     # a '.'.
   5307      1.1  mrg     #
   5308      1.1  mrg     # Of those that remain, print the first one.
   5309      1.1  mrg     $SED -e '/^\./d;/^.\./d;q'
   5310      1.1  mrg }
   5311      1.1  mrg 
   5312      1.1  mrg # func_cygming_dll_for_implib_fallback ARG
   5313      1.1  mrg # Platform-specific function to extract the
   5314      1.1  mrg # name of the DLL associated with the specified
   5315      1.1  mrg # import library ARG.
   5316      1.1  mrg #
   5317      1.1  mrg # This fallback implementation is for use when $DLLTOOL
   5318      1.1  mrg # does not support the --identify-strict option.
   5319      1.1  mrg # Invoked by eval'ing the libtool variable
   5320      1.1  mrg #    $sharedlib_from_linklib_cmd
   5321      1.1  mrg # Result is available in the variable
   5322      1.1  mrg #    $sharedlib_from_linklib_result
   5323      1.1  mrg func_cygming_dll_for_implib_fallback ()
   5324      1.1  mrg {
   5325      1.1  mrg   $debug_cmd
   5326      1.1  mrg 
   5327      1.1  mrg   if func_cygming_gnu_implib_p "$1"; then
   5328      1.1  mrg     # binutils import library
   5329      1.1  mrg     sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"`
   5330      1.1  mrg   elif func_cygming_ms_implib_p "$1"; then
   5331      1.1  mrg     # ms-generated import library
   5332      1.1  mrg     sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"`
   5333      1.1  mrg   else
   5334      1.1  mrg     # unknown
   5335      1.1  mrg     sharedlib_from_linklib_result=
   5336      1.1  mrg   fi
   5337      1.1  mrg }
   5338      1.1  mrg 
   5339      1.1  mrg 
   5340      1.1  mrg # func_extract_an_archive dir oldlib
   5341      1.1  mrg func_extract_an_archive ()
   5342      1.1  mrg {
   5343      1.1  mrg     $debug_cmd
   5344      1.1  mrg 
   5345      1.1  mrg     f_ex_an_ar_dir=$1; shift
   5346      1.1  mrg     f_ex_an_ar_oldlib=$1
   5347      1.1  mrg     if test yes = "$lock_old_archive_extraction"; then
   5348      1.1  mrg       lockfile=$f_ex_an_ar_oldlib.lock
   5349      1.1  mrg       until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
   5350      1.1  mrg 	func_echo "Waiting for $lockfile to be removed"
   5351      1.1  mrg 	sleep 2
   5352      1.1  mrg       done
   5353      1.1  mrg     fi
   5354      1.1  mrg     func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \
   5355      1.1  mrg 		   'stat=$?; rm -f "$lockfile"; exit $stat'
   5356      1.1  mrg     if test yes = "$lock_old_archive_extraction"; then
   5357      1.1  mrg       $opt_dry_run || rm -f "$lockfile"
   5358      1.1  mrg     fi
   5359      1.1  mrg     if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
   5360      1.1  mrg      :
   5361      1.1  mrg     else
   5362      1.1  mrg       func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
   5363      1.1  mrg     fi
   5364      1.1  mrg }
   5365      1.1  mrg 
   5366      1.1  mrg 
   5367      1.1  mrg # func_extract_archives gentop oldlib ...
   5368      1.1  mrg func_extract_archives ()
   5369      1.1  mrg {
   5370      1.1  mrg     $debug_cmd
   5371      1.1  mrg 
   5372      1.1  mrg     my_gentop=$1; shift
   5373      1.1  mrg     my_oldlibs=${1+"$@"}
   5374      1.1  mrg     my_oldobjs=
   5375      1.1  mrg     my_xlib=
   5376      1.1  mrg     my_xabs=
   5377      1.1  mrg     my_xdir=
   5378      1.1  mrg 
   5379      1.1  mrg     for my_xlib in $my_oldlibs; do
   5380      1.1  mrg       # Extract the objects.
   5381      1.1  mrg       case $my_xlib in
   5382      1.1  mrg 	[\\/]* | [A-Za-z]:[\\/]*) my_xabs=$my_xlib ;;
   5383      1.1  mrg 	*) my_xabs=`pwd`"/$my_xlib" ;;
   5384      1.1  mrg       esac
   5385      1.1  mrg       func_basename "$my_xlib"
   5386      1.1  mrg       my_xlib=$func_basename_result
   5387      1.1  mrg       my_xlib_u=$my_xlib
   5388      1.1  mrg       while :; do
   5389      1.1  mrg         case " $extracted_archives " in
   5390      1.1  mrg 	*" $my_xlib_u "*)
   5391      1.1  mrg 	  func_arith $extracted_serial + 1
   5392      1.1  mrg 	  extracted_serial=$func_arith_result
   5393      1.1  mrg 	  my_xlib_u=lt$extracted_serial-$my_xlib ;;
   5394      1.1  mrg 	*) break ;;
   5395      1.1  mrg 	esac
   5396      1.1  mrg       done
   5397      1.1  mrg       extracted_archives="$extracted_archives $my_xlib_u"
   5398      1.1  mrg       my_xdir=$my_gentop/$my_xlib_u
   5399      1.1  mrg 
   5400      1.1  mrg       func_mkdir_p "$my_xdir"
   5401      1.1  mrg 
   5402      1.1  mrg       case $host in
   5403      1.1  mrg       *-darwin*)
   5404      1.1  mrg 	func_verbose "Extracting $my_xabs"
   5405      1.1  mrg 	# Do not bother doing anything if just a dry run
   5406      1.1  mrg 	$opt_dry_run || {
   5407      1.1  mrg 	  darwin_orig_dir=`pwd`
   5408      1.1  mrg 	  cd $my_xdir || exit $?
   5409      1.1  mrg 	  darwin_archive=$my_xabs
   5410      1.1  mrg 	  darwin_curdir=`pwd`
   5411      1.1  mrg 	  func_basename "$darwin_archive"
   5412      1.1  mrg 	  darwin_base_archive=$func_basename_result
   5413      1.1  mrg 	  darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
   5414      1.1  mrg 	  if test -n "$darwin_arches"; then
   5415      1.1  mrg 	    darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
   5416      1.1  mrg 	    darwin_arch=
   5417      1.1  mrg 	    func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
   5418      1.1  mrg 	    for darwin_arch in  $darwin_arches; do
   5419      1.1  mrg 	      func_mkdir_p "unfat-$$/$darwin_base_archive-$darwin_arch"
   5420      1.1  mrg 	      $LIPO -thin $darwin_arch -output "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" "$darwin_archive"
   5421      1.1  mrg 	      cd "unfat-$$/$darwin_base_archive-$darwin_arch"
   5422      1.1  mrg 	      func_extract_an_archive "`pwd`" "$darwin_base_archive"
   5423      1.1  mrg 	      cd "$darwin_curdir"
   5424      1.1  mrg 	      $RM "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive"
   5425      1.1  mrg 	    done # $darwin_arches
   5426      1.1  mrg             ## Okay now we've a bunch of thin objects, gotta fatten them up :)
   5427      1.1  mrg 	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$sed_basename" | sort -u`
   5428      1.1  mrg 	    darwin_file=
   5429      1.1  mrg 	    darwin_files=
   5430      1.1  mrg 	    for darwin_file in $darwin_filelist; do
   5431      1.1  mrg 	      darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP`
   5432      1.1  mrg 	      $LIPO -create -output "$darwin_file" $darwin_files
   5433      1.1  mrg 	    done # $darwin_filelist
   5434      1.1  mrg 	    $RM -rf unfat-$$
   5435      1.1  mrg 	    cd "$darwin_orig_dir"
   5436      1.1  mrg 	  else
   5437      1.1  mrg 	    cd $darwin_orig_dir
   5438      1.1  mrg 	    func_extract_an_archive "$my_xdir" "$my_xabs"
   5439      1.1  mrg 	  fi # $darwin_arches
   5440      1.1  mrg 	} # !$opt_dry_run
   5441      1.1  mrg 	;;
   5442      1.1  mrg       *)
   5443      1.1  mrg         func_extract_an_archive "$my_xdir" "$my_xabs"
   5444      1.1  mrg 	;;
   5445      1.1  mrg       esac
   5446      1.1  mrg       my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP`
   5447      1.1  mrg     done
   5448      1.1  mrg 
   5449      1.1  mrg     func_extract_archives_result=$my_oldobjs
   5450      1.1  mrg }
   5451      1.1  mrg 
   5452      1.1  mrg 
   5453      1.1  mrg # func_emit_wrapper [arg=no]
   5454      1.1  mrg #
   5455      1.1  mrg # Emit a libtool wrapper script on stdout.
   5456      1.1  mrg # Don't directly open a file because we may want to
   5457      1.1  mrg # incorporate the script contents within a cygwin/mingw
   5458      1.1  mrg # wrapper executable.  Must ONLY be called from within
   5459      1.1  mrg # func_mode_link because it depends on a number of variables
   5460      1.1  mrg # set therein.
   5461      1.1  mrg #
   5462      1.1  mrg # ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
   5463      1.1  mrg # variable will take.  If 'yes', then the emitted script
   5464      1.1  mrg # will assume that the directory where it is stored is
   5465      1.1  mrg # the $objdir directory.  This is a cygwin/mingw-specific
   5466      1.1  mrg # behavior.
   5467      1.1  mrg func_emit_wrapper ()
   5468      1.1  mrg {
   5469      1.1  mrg 	func_emit_wrapper_arg1=${1-no}
   5470      1.1  mrg 
   5471      1.1  mrg 	$ECHO "\
   5472      1.1  mrg #! $SHELL
   5473      1.1  mrg 
   5474      1.1  mrg # $output - temporary wrapper script for $objdir/$outputname
   5475      1.1  mrg # Generated by $PROGRAM (GNU $PACKAGE) $VERSION
   5476      1.1  mrg #
   5477      1.1  mrg # The $output program cannot be directly executed until all the libtool
   5478      1.1  mrg # libraries that it depends on are installed.
   5479      1.1  mrg #
   5480      1.1  mrg # This wrapper script should never be moved out of the build directory.
   5481      1.1  mrg # If it is, it will not operate correctly.
   5482      1.1  mrg 
   5483      1.1  mrg # Sed substitution that helps us do robust quoting.  It backslashifies
   5484      1.1  mrg # metacharacters that are still active within double-quoted strings.
   5485      1.1  mrg sed_quote_subst='$sed_quote_subst'
   5486      1.1  mrg 
   5487      1.1  mrg # Be Bourne compatible
   5488      1.1  mrg if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
   5489      1.1  mrg   emulate sh
   5490      1.1  mrg   NULLCMD=:
   5491      1.1  mrg   # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
   5492      1.1  mrg   # is contrary to our usage.  Disable this feature.
   5493      1.1  mrg   alias -g '\${1+\"\$@\"}'='\"\$@\"'
   5494      1.1  mrg   setopt NO_GLOB_SUBST
   5495      1.1  mrg else
   5496      1.1  mrg   case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
   5497      1.1  mrg fi
   5498      1.1  mrg BIN_SH=xpg4; export BIN_SH # for Tru64
   5499      1.1  mrg DUALCASE=1; export DUALCASE # for MKS sh
   5500      1.1  mrg 
   5501      1.1  mrg # The HP-UX ksh and POSIX shell print the target directory to stdout
   5502      1.1  mrg # if CDPATH is set.
   5503      1.1  mrg (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
   5504      1.1  mrg 
   5505      1.1  mrg relink_command=\"$relink_command\"
   5506      1.1  mrg 
   5507      1.1  mrg # This environment variable determines our operation mode.
   5508      1.1  mrg if test \"\$libtool_install_magic\" = \"$magic\"; then
   5509      1.1  mrg   # install mode needs the following variables:
   5510      1.1  mrg   generated_by_libtool_version='$macro_version'
   5511      1.1  mrg   notinst_deplibs='$notinst_deplibs'
   5512      1.1  mrg else
   5513      1.1  mrg   # When we are sourced in execute mode, \$file and \$ECHO are already set.
   5514      1.1  mrg   if test \"\$libtool_execute_magic\" != \"$magic\"; then
   5515      1.1  mrg     file=\"\$0\""
   5516      1.1  mrg 
   5517  1.1.1.2  mrg     func_quote_arg pretty "$ECHO"
   5518  1.1.1.2  mrg     qECHO=$func_quote_arg_result
   5519      1.1  mrg     $ECHO "\
   5520      1.1  mrg 
   5521      1.1  mrg # A function that is used when there is no print builtin or printf.
   5522      1.1  mrg func_fallback_echo ()
   5523      1.1  mrg {
   5524      1.1  mrg   eval 'cat <<_LTECHO_EOF
   5525      1.1  mrg \$1
   5526      1.1  mrg _LTECHO_EOF'
   5527      1.1  mrg }
   5528  1.1.1.2  mrg     ECHO=$qECHO
   5529      1.1  mrg   fi
   5530      1.1  mrg 
   5531      1.1  mrg # Very basic option parsing. These options are (a) specific to
   5532      1.1  mrg # the libtool wrapper, (b) are identical between the wrapper
   5533      1.1  mrg # /script/ and the wrapper /executable/ that is used only on
   5534      1.1  mrg # windows platforms, and (c) all begin with the string "--lt-"
   5535      1.1  mrg # (application programs are unlikely to have options that match
   5536      1.1  mrg # this pattern).
   5537      1.1  mrg #
   5538      1.1  mrg # There are only two supported options: --lt-debug and
   5539      1.1  mrg # --lt-dump-script. There is, deliberately, no --lt-help.
   5540      1.1  mrg #
   5541      1.1  mrg # The first argument to this parsing function should be the
   5542      1.1  mrg # script's $0 value, followed by "$@".
   5543      1.1  mrg lt_option_debug=
   5544      1.1  mrg func_parse_lt_options ()
   5545      1.1  mrg {
   5546      1.1  mrg   lt_script_arg0=\$0
   5547      1.1  mrg   shift
   5548      1.1  mrg   for lt_opt
   5549      1.1  mrg   do
   5550      1.1  mrg     case \"\$lt_opt\" in
   5551      1.1  mrg     --lt-debug) lt_option_debug=1 ;;
   5552      1.1  mrg     --lt-dump-script)
   5553      1.1  mrg         lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\`
   5554      1.1  mrg         test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=.
   5555      1.1  mrg         lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\`
   5556      1.1  mrg         cat \"\$lt_dump_D/\$lt_dump_F\"
   5557      1.1  mrg         exit 0
   5558      1.1  mrg       ;;
   5559      1.1  mrg     --lt-*)
   5560      1.1  mrg         \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2
   5561      1.1  mrg         exit 1
   5562      1.1  mrg       ;;
   5563      1.1  mrg     esac
   5564      1.1  mrg   done
   5565      1.1  mrg 
   5566      1.1  mrg   # Print the debug banner immediately:
   5567      1.1  mrg   if test -n \"\$lt_option_debug\"; then
   5568      1.1  mrg     echo \"$outputname:$output:\$LINENO: libtool wrapper (GNU $PACKAGE) $VERSION\" 1>&2
   5569      1.1  mrg   fi
   5570      1.1  mrg }
   5571      1.1  mrg 
   5572      1.1  mrg # Used when --lt-debug. Prints its arguments to stdout
   5573      1.1  mrg # (redirection is the responsibility of the caller)
   5574      1.1  mrg func_lt_dump_args ()
   5575      1.1  mrg {
   5576      1.1  mrg   lt_dump_args_N=1;
   5577      1.1  mrg   for lt_arg
   5578      1.1  mrg   do
   5579      1.1  mrg     \$ECHO \"$outputname:$output:\$LINENO: newargv[\$lt_dump_args_N]: \$lt_arg\"
   5580      1.1  mrg     lt_dump_args_N=\`expr \$lt_dump_args_N + 1\`
   5581      1.1  mrg   done
   5582      1.1  mrg }
   5583      1.1  mrg 
   5584      1.1  mrg # Core function for launching the target application
   5585      1.1  mrg func_exec_program_core ()
   5586      1.1  mrg {
   5587      1.1  mrg "
   5588      1.1  mrg   case $host in
   5589      1.1  mrg   # Backslashes separate directories on plain windows
   5590      1.1  mrg   *-*-mingw | *-*-os2* | *-cegcc*)
   5591      1.1  mrg     $ECHO "\
   5592      1.1  mrg       if test -n \"\$lt_option_debug\"; then
   5593      1.1  mrg         \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2
   5594      1.1  mrg         func_lt_dump_args \${1+\"\$@\"} 1>&2
   5595      1.1  mrg       fi
   5596      1.1  mrg       exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
   5597      1.1  mrg "
   5598      1.1  mrg     ;;
   5599      1.1  mrg 
   5600      1.1  mrg   *)
   5601      1.1  mrg     $ECHO "\
   5602      1.1  mrg       if test -n \"\$lt_option_debug\"; then
   5603      1.1  mrg         \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir/\$program\" 1>&2
   5604      1.1  mrg         func_lt_dump_args \${1+\"\$@\"} 1>&2
   5605      1.1  mrg       fi
   5606      1.1  mrg       exec \"\$progdir/\$program\" \${1+\"\$@\"}
   5607      1.1  mrg "
   5608      1.1  mrg     ;;
   5609      1.1  mrg   esac
   5610      1.1  mrg   $ECHO "\
   5611      1.1  mrg       \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
   5612      1.1  mrg       exit 1
   5613      1.1  mrg }
   5614      1.1  mrg 
   5615      1.1  mrg # A function to encapsulate launching the target application
   5616      1.1  mrg # Strips options in the --lt-* namespace from \$@ and
   5617      1.1  mrg # launches target application with the remaining arguments.
   5618      1.1  mrg func_exec_program ()
   5619      1.1  mrg {
   5620      1.1  mrg   case \" \$* \" in
   5621      1.1  mrg   *\\ --lt-*)
   5622      1.1  mrg     for lt_wr_arg
   5623      1.1  mrg     do
   5624      1.1  mrg       case \$lt_wr_arg in
   5625      1.1  mrg       --lt-*) ;;
   5626      1.1  mrg       *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
   5627      1.1  mrg       esac
   5628      1.1  mrg       shift
   5629      1.1  mrg     done ;;
   5630      1.1  mrg   esac
   5631      1.1  mrg   func_exec_program_core \${1+\"\$@\"}
   5632      1.1  mrg }
   5633      1.1  mrg 
   5634      1.1  mrg   # Parse options
   5635      1.1  mrg   func_parse_lt_options \"\$0\" \${1+\"\$@\"}
   5636      1.1  mrg 
   5637      1.1  mrg   # Find the directory that this script lives in.
   5638      1.1  mrg   thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\`
   5639      1.1  mrg   test \"x\$thisdir\" = \"x\$file\" && thisdir=.
   5640      1.1  mrg 
   5641      1.1  mrg   # Follow symbolic links until we get to the real thisdir.
   5642      1.1  mrg   file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\`
   5643      1.1  mrg   while test -n \"\$file\"; do
   5644      1.1  mrg     destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\`
   5645      1.1  mrg 
   5646      1.1  mrg     # If there was a directory component, then change thisdir.
   5647      1.1  mrg     if test \"x\$destdir\" != \"x\$file\"; then
   5648      1.1  mrg       case \"\$destdir\" in
   5649      1.1  mrg       [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
   5650      1.1  mrg       *) thisdir=\"\$thisdir/\$destdir\" ;;
   5651      1.1  mrg       esac
   5652      1.1  mrg     fi
   5653      1.1  mrg 
   5654      1.1  mrg     file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\`
   5655      1.1  mrg     file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\`
   5656      1.1  mrg   done
   5657      1.1  mrg 
   5658      1.1  mrg   # Usually 'no', except on cygwin/mingw when embedded into
   5659      1.1  mrg   # the cwrapper.
   5660      1.1  mrg   WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1
   5661      1.1  mrg   if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
   5662      1.1  mrg     # special case for '.'
   5663      1.1  mrg     if test \"\$thisdir\" = \".\"; then
   5664      1.1  mrg       thisdir=\`pwd\`
   5665      1.1  mrg     fi
   5666      1.1  mrg     # remove .libs from thisdir
   5667      1.1  mrg     case \"\$thisdir\" in
   5668      1.1  mrg     *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;;
   5669      1.1  mrg     $objdir )   thisdir=. ;;
   5670      1.1  mrg     esac
   5671      1.1  mrg   fi
   5672      1.1  mrg 
   5673      1.1  mrg   # Try to get the absolute directory name.
   5674      1.1  mrg   absdir=\`cd \"\$thisdir\" && pwd\`
   5675      1.1  mrg   test -n \"\$absdir\" && thisdir=\"\$absdir\"
   5676      1.1  mrg "
   5677      1.1  mrg 
   5678      1.1  mrg 	if test yes = "$fast_install"; then
   5679      1.1  mrg 	  $ECHO "\
   5680      1.1  mrg   program=lt-'$outputname'$exeext
   5681      1.1  mrg   progdir=\"\$thisdir/$objdir\"
   5682      1.1  mrg 
   5683      1.1  mrg   if test ! -f \"\$progdir/\$program\" ||
   5684      1.1  mrg      { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | $SED 1q\`; \\
   5685      1.1  mrg        test \"X\$file\" != \"X\$progdir/\$program\"; }; then
   5686      1.1  mrg 
   5687      1.1  mrg     file=\"\$\$-\$program\"
   5688      1.1  mrg 
   5689      1.1  mrg     if test ! -d \"\$progdir\"; then
   5690      1.1  mrg       $MKDIR \"\$progdir\"
   5691      1.1  mrg     else
   5692      1.1  mrg       $RM \"\$progdir/\$file\"
   5693      1.1  mrg     fi"
   5694      1.1  mrg 
   5695      1.1  mrg 	  $ECHO "\
   5696      1.1  mrg 
   5697      1.1  mrg     # relink executable if necessary
   5698      1.1  mrg     if test -n \"\$relink_command\"; then
   5699      1.1  mrg       if relink_command_output=\`eval \$relink_command 2>&1\`; then :
   5700      1.1  mrg       else
   5701      1.1  mrg 	\$ECHO \"\$relink_command_output\" >&2
   5702      1.1  mrg 	$RM \"\$progdir/\$file\"
   5703      1.1  mrg 	exit 1
   5704      1.1  mrg       fi
   5705      1.1  mrg     fi
   5706      1.1  mrg 
   5707      1.1  mrg     $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
   5708      1.1  mrg     { $RM \"\$progdir/\$program\";
   5709      1.1  mrg       $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
   5710      1.1  mrg     $RM \"\$progdir/\$file\"
   5711      1.1  mrg   fi"
   5712      1.1  mrg 	else
   5713      1.1  mrg 	  $ECHO "\
   5714      1.1  mrg   program='$outputname'
   5715      1.1  mrg   progdir=\"\$thisdir/$objdir\"
   5716      1.1  mrg "
   5717      1.1  mrg 	fi
   5718      1.1  mrg 
   5719      1.1  mrg 	$ECHO "\
   5720      1.1  mrg 
   5721      1.1  mrg   if test -f \"\$progdir/\$program\"; then"
   5722      1.1  mrg 
   5723      1.1  mrg 	# fixup the dll searchpath if we need to.
   5724      1.1  mrg 	#
   5725      1.1  mrg 	# Fix the DLL searchpath if we need to.  Do this before prepending
   5726      1.1  mrg 	# to shlibpath, because on Windows, both are PATH and uninstalled
   5727      1.1  mrg 	# libraries must come first.
   5728      1.1  mrg 	if test -n "$dllsearchpath"; then
   5729      1.1  mrg 	  $ECHO "\
   5730      1.1  mrg     # Add the dll search path components to the executable PATH
   5731      1.1  mrg     PATH=$dllsearchpath:\$PATH
   5732      1.1  mrg "
   5733      1.1  mrg 	fi
   5734      1.1  mrg 
   5735      1.1  mrg 	# Export our shlibpath_var if we have one.
   5736      1.1  mrg 	if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
   5737      1.1  mrg 	  $ECHO "\
   5738      1.1  mrg     # Add our own library path to $shlibpath_var
   5739      1.1  mrg     $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
   5740      1.1  mrg 
   5741      1.1  mrg     # Some systems cannot cope with colon-terminated $shlibpath_var
   5742      1.1  mrg     # The second colon is a workaround for a bug in BeOS R4 sed
   5743      1.1  mrg     $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\`
   5744      1.1  mrg 
   5745      1.1  mrg     export $shlibpath_var
   5746      1.1  mrg "
   5747      1.1  mrg 	fi
   5748      1.1  mrg 
   5749      1.1  mrg 	$ECHO "\
   5750      1.1  mrg     if test \"\$libtool_execute_magic\" != \"$magic\"; then
   5751      1.1  mrg       # Run the actual program with our arguments.
   5752      1.1  mrg       func_exec_program \${1+\"\$@\"}
   5753      1.1  mrg     fi
   5754      1.1  mrg   else
   5755      1.1  mrg     # The program doesn't exist.
   5756      1.1  mrg     \$ECHO \"\$0: error: '\$progdir/\$program' does not exist\" 1>&2
   5757      1.1  mrg     \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
   5758      1.1  mrg     \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
   5759      1.1  mrg     exit 1
   5760      1.1  mrg   fi
   5761      1.1  mrg fi\
   5762      1.1  mrg "
   5763      1.1  mrg }
   5764      1.1  mrg 
   5765      1.1  mrg 
   5766      1.1  mrg # func_emit_cwrapperexe_src
   5767      1.1  mrg # emit the source code for a wrapper executable on stdout
   5768      1.1  mrg # Must ONLY be called from within func_mode_link because
   5769      1.1  mrg # it depends on a number of variable set therein.
   5770      1.1  mrg func_emit_cwrapperexe_src ()
   5771      1.1  mrg {
   5772      1.1  mrg 	cat <<EOF
   5773      1.1  mrg 
   5774      1.1  mrg /* $cwrappersource - temporary wrapper executable for $objdir/$outputname
   5775      1.1  mrg    Generated by $PROGRAM (GNU $PACKAGE) $VERSION
   5776      1.1  mrg 
   5777      1.1  mrg    The $output program cannot be directly executed until all the libtool
   5778      1.1  mrg    libraries that it depends on are installed.
   5779      1.1  mrg 
   5780      1.1  mrg    This wrapper executable should never be moved out of the build directory.
   5781      1.1  mrg    If it is, it will not operate correctly.
   5782      1.1  mrg */
   5783      1.1  mrg EOF
   5784      1.1  mrg 	    cat <<"EOF"
   5785      1.1  mrg #ifdef _MSC_VER
   5786      1.1  mrg # define _CRT_SECURE_NO_DEPRECATE 1
   5787      1.1  mrg #endif
   5788      1.1  mrg #include <stdio.h>
   5789      1.1  mrg #include <stdlib.h>
   5790      1.1  mrg #ifdef _MSC_VER
   5791      1.1  mrg # include <direct.h>
   5792      1.1  mrg # include <process.h>
   5793      1.1  mrg # include <io.h>
   5794      1.1  mrg #else
   5795      1.1  mrg # include <unistd.h>
   5796      1.1  mrg # include <stdint.h>
   5797      1.1  mrg # ifdef __CYGWIN__
   5798      1.1  mrg #  include <io.h>
   5799      1.1  mrg # endif
   5800      1.1  mrg #endif
   5801      1.1  mrg #include <malloc.h>
   5802      1.1  mrg #include <stdarg.h>
   5803      1.1  mrg #include <assert.h>
   5804      1.1  mrg #include <string.h>
   5805      1.1  mrg #include <ctype.h>
   5806      1.1  mrg #include <errno.h>
   5807      1.1  mrg #include <fcntl.h>
   5808      1.1  mrg #include <sys/stat.h>
   5809      1.1  mrg 
   5810      1.1  mrg #define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0)
   5811      1.1  mrg 
   5812      1.1  mrg /* declarations of non-ANSI functions */
   5813      1.1  mrg #if defined __MINGW32__
   5814      1.1  mrg # ifdef __STRICT_ANSI__
   5815      1.1  mrg int _putenv (const char *);
   5816      1.1  mrg # endif
   5817      1.1  mrg #elif defined __CYGWIN__
   5818      1.1  mrg # ifdef __STRICT_ANSI__
   5819      1.1  mrg char *realpath (const char *, char *);
   5820      1.1  mrg int putenv (char *);
   5821      1.1  mrg int setenv (const char *, const char *, int);
   5822      1.1  mrg # endif
   5823      1.1  mrg /* #elif defined other_platform || defined ... */
   5824      1.1  mrg #endif
   5825      1.1  mrg 
   5826      1.1  mrg /* portability defines, excluding path handling macros */
   5827      1.1  mrg #if defined _MSC_VER
   5828      1.1  mrg # define setmode _setmode
   5829      1.1  mrg # define stat    _stat
   5830      1.1  mrg # define chmod   _chmod
   5831      1.1  mrg # define getcwd  _getcwd
   5832      1.1  mrg # define putenv  _putenv
   5833      1.1  mrg # define S_IXUSR _S_IEXEC
   5834      1.1  mrg #elif defined __MINGW32__
   5835      1.1  mrg # define setmode _setmode
   5836      1.1  mrg # define stat    _stat
   5837      1.1  mrg # define chmod   _chmod
   5838      1.1  mrg # define getcwd  _getcwd
   5839      1.1  mrg # define putenv  _putenv
   5840      1.1  mrg #elif defined __CYGWIN__
   5841      1.1  mrg # define HAVE_SETENV
   5842      1.1  mrg # define FOPEN_WB "wb"
   5843      1.1  mrg /* #elif defined other platforms ... */
   5844      1.1  mrg #endif
   5845      1.1  mrg 
   5846      1.1  mrg #if defined PATH_MAX
   5847      1.1  mrg # define LT_PATHMAX PATH_MAX
   5848      1.1  mrg #elif defined MAXPATHLEN
   5849      1.1  mrg # define LT_PATHMAX MAXPATHLEN
   5850      1.1  mrg #else
   5851      1.1  mrg # define LT_PATHMAX 1024
   5852      1.1  mrg #endif
   5853      1.1  mrg 
   5854      1.1  mrg #ifndef S_IXOTH
   5855      1.1  mrg # define S_IXOTH 0
   5856      1.1  mrg #endif
   5857      1.1  mrg #ifndef S_IXGRP
   5858      1.1  mrg # define S_IXGRP 0
   5859      1.1  mrg #endif
   5860      1.1  mrg 
   5861      1.1  mrg /* path handling portability macros */
   5862      1.1  mrg #ifndef DIR_SEPARATOR
   5863      1.1  mrg # define DIR_SEPARATOR '/'
   5864      1.1  mrg # define PATH_SEPARATOR ':'
   5865      1.1  mrg #endif
   5866      1.1  mrg 
   5867      1.1  mrg #if defined _WIN32 || defined __MSDOS__ || defined __DJGPP__ || \
   5868      1.1  mrg   defined __OS2__
   5869      1.1  mrg # define HAVE_DOS_BASED_FILE_SYSTEM
   5870      1.1  mrg # define FOPEN_WB "wb"
   5871      1.1  mrg # ifndef DIR_SEPARATOR_2
   5872      1.1  mrg #  define DIR_SEPARATOR_2 '\\'
   5873      1.1  mrg # endif
   5874      1.1  mrg # ifndef PATH_SEPARATOR_2
   5875      1.1  mrg #  define PATH_SEPARATOR_2 ';'
   5876      1.1  mrg # endif
   5877      1.1  mrg #endif
   5878      1.1  mrg 
   5879      1.1  mrg #ifndef DIR_SEPARATOR_2
   5880      1.1  mrg # define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
   5881      1.1  mrg #else /* DIR_SEPARATOR_2 */
   5882      1.1  mrg # define IS_DIR_SEPARATOR(ch) \
   5883      1.1  mrg 	(((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
   5884      1.1  mrg #endif /* DIR_SEPARATOR_2 */
   5885      1.1  mrg 
   5886      1.1  mrg #ifndef PATH_SEPARATOR_2
   5887      1.1  mrg # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
   5888      1.1  mrg #else /* PATH_SEPARATOR_2 */
   5889      1.1  mrg # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
   5890      1.1  mrg #endif /* PATH_SEPARATOR_2 */
   5891      1.1  mrg 
   5892      1.1  mrg #ifndef FOPEN_WB
   5893      1.1  mrg # define FOPEN_WB "w"
   5894      1.1  mrg #endif
   5895      1.1  mrg #ifndef _O_BINARY
   5896      1.1  mrg # define _O_BINARY 0
   5897      1.1  mrg #endif
   5898      1.1  mrg 
   5899      1.1  mrg #define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
   5900      1.1  mrg #define XFREE(stale) do { \
   5901      1.1  mrg   if (stale) { free (stale); stale = 0; } \
   5902      1.1  mrg } while (0)
   5903      1.1  mrg 
   5904      1.1  mrg #if defined LT_DEBUGWRAPPER
   5905      1.1  mrg static int lt_debug = 1;
   5906      1.1  mrg #else
   5907      1.1  mrg static int lt_debug = 0;
   5908      1.1  mrg #endif
   5909      1.1  mrg 
   5910      1.1  mrg const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */
   5911      1.1  mrg 
   5912      1.1  mrg void *xmalloc (size_t num);
   5913      1.1  mrg char *xstrdup (const char *string);
   5914      1.1  mrg const char *base_name (const char *name);
   5915      1.1  mrg char *find_executable (const char *wrapper);
   5916      1.1  mrg char *chase_symlinks (const char *pathspec);
   5917      1.1  mrg int make_executable (const char *path);
   5918      1.1  mrg int check_executable (const char *path);
   5919      1.1  mrg char *strendzap (char *str, const char *pat);
   5920      1.1  mrg void lt_debugprintf (const char *file, int line, const char *fmt, ...);
   5921      1.1  mrg void lt_fatal (const char *file, int line, const char *message, ...);
   5922      1.1  mrg static const char *nonnull (const char *s);
   5923      1.1  mrg static const char *nonempty (const char *s);
   5924      1.1  mrg void lt_setenv (const char *name, const char *value);
   5925      1.1  mrg char *lt_extend_str (const char *orig_value, const char *add, int to_end);
   5926      1.1  mrg void lt_update_exe_path (const char *name, const char *value);
   5927      1.1  mrg void lt_update_lib_path (const char *name, const char *value);
   5928      1.1  mrg char **prepare_spawn (char **argv);
   5929      1.1  mrg void lt_dump_script (FILE *f);
   5930      1.1  mrg EOF
   5931      1.1  mrg 
   5932      1.1  mrg 	    cat <<EOF
   5933      1.1  mrg #if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 5)
   5934      1.1  mrg # define externally_visible volatile
   5935      1.1  mrg #else
   5936      1.1  mrg # define externally_visible __attribute__((externally_visible)) volatile
   5937      1.1  mrg #endif
   5938      1.1  mrg externally_visible const char * MAGIC_EXE = "$magic_exe";
   5939      1.1  mrg const char * LIB_PATH_VARNAME = "$shlibpath_var";
   5940      1.1  mrg EOF
   5941      1.1  mrg 
   5942      1.1  mrg 	    if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
   5943      1.1  mrg               func_to_host_path "$temp_rpath"
   5944      1.1  mrg 	      cat <<EOF
   5945      1.1  mrg const char * LIB_PATH_VALUE   = "$func_to_host_path_result";
   5946      1.1  mrg EOF
   5947      1.1  mrg 	    else
   5948      1.1  mrg 	      cat <<"EOF"
   5949      1.1  mrg const char * LIB_PATH_VALUE   = "";
   5950      1.1  mrg EOF
   5951      1.1  mrg 	    fi
   5952      1.1  mrg 
   5953      1.1  mrg 	    if test -n "$dllsearchpath"; then
   5954      1.1  mrg               func_to_host_path "$dllsearchpath:"
   5955      1.1  mrg 	      cat <<EOF
   5956      1.1  mrg const char * EXE_PATH_VARNAME = "PATH";
   5957      1.1  mrg const char * EXE_PATH_VALUE   = "$func_to_host_path_result";
   5958      1.1  mrg EOF
   5959      1.1  mrg 	    else
   5960      1.1  mrg 	      cat <<"EOF"
   5961      1.1  mrg const char * EXE_PATH_VARNAME = "";
   5962      1.1  mrg const char * EXE_PATH_VALUE   = "";
   5963      1.1  mrg EOF
   5964      1.1  mrg 	    fi
   5965      1.1  mrg 
   5966      1.1  mrg 	    if test yes = "$fast_install"; then
   5967      1.1  mrg 	      cat <<EOF
   5968      1.1  mrg const char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
   5969      1.1  mrg EOF
   5970      1.1  mrg 	    else
   5971      1.1  mrg 	      cat <<EOF
   5972      1.1  mrg const char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
   5973      1.1  mrg EOF
   5974      1.1  mrg 	    fi
   5975      1.1  mrg 
   5976      1.1  mrg 
   5977      1.1  mrg 	    cat <<"EOF"
   5978      1.1  mrg 
   5979      1.1  mrg #define LTWRAPPER_OPTION_PREFIX         "--lt-"
   5980      1.1  mrg 
   5981      1.1  mrg static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
   5982      1.1  mrg static const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX "dump-script";
   5983      1.1  mrg static const char *debug_opt            = LTWRAPPER_OPTION_PREFIX "debug";
   5984      1.1  mrg 
   5985      1.1  mrg int
   5986      1.1  mrg main (int argc, char *argv[])
   5987      1.1  mrg {
   5988      1.1  mrg   char **newargz;
   5989      1.1  mrg   int  newargc;
   5990      1.1  mrg   char *tmp_pathspec;
   5991      1.1  mrg   char *actual_cwrapper_path;
   5992      1.1  mrg   char *actual_cwrapper_name;
   5993      1.1  mrg   char *target_name;
   5994      1.1  mrg   char *lt_argv_zero;
   5995      1.1  mrg   int rval = 127;
   5996      1.1  mrg 
   5997      1.1  mrg   int i;
   5998      1.1  mrg 
   5999      1.1  mrg   program_name = (char *) xstrdup (base_name (argv[0]));
   6000      1.1  mrg   newargz = XMALLOC (char *, (size_t) argc + 1);
   6001      1.1  mrg 
   6002      1.1  mrg   /* very simple arg parsing; don't want to rely on getopt
   6003      1.1  mrg    * also, copy all non cwrapper options to newargz, except
   6004      1.1  mrg    * argz[0], which is handled differently
   6005      1.1  mrg    */
   6006      1.1  mrg   newargc=0;
   6007      1.1  mrg   for (i = 1; i < argc; i++)
   6008      1.1  mrg     {
   6009      1.1  mrg       if (STREQ (argv[i], dumpscript_opt))
   6010      1.1  mrg 	{
   6011      1.1  mrg EOF
   6012      1.1  mrg 	    case $host in
   6013      1.1  mrg 	      *mingw* | *cygwin* )
   6014      1.1  mrg 		# make stdout use "unix" line endings
   6015      1.1  mrg 		echo "          setmode(1,_O_BINARY);"
   6016      1.1  mrg 		;;
   6017      1.1  mrg 	      esac
   6018      1.1  mrg 
   6019      1.1  mrg 	    cat <<"EOF"
   6020      1.1  mrg 	  lt_dump_script (stdout);
   6021      1.1  mrg 	  return 0;
   6022      1.1  mrg 	}
   6023      1.1  mrg       if (STREQ (argv[i], debug_opt))
   6024      1.1  mrg 	{
   6025      1.1  mrg           lt_debug = 1;
   6026      1.1  mrg           continue;
   6027      1.1  mrg 	}
   6028      1.1  mrg       if (STREQ (argv[i], ltwrapper_option_prefix))
   6029      1.1  mrg         {
   6030      1.1  mrg           /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
   6031      1.1  mrg              namespace, but it is not one of the ones we know about and
   6032      1.1  mrg              have already dealt with, above (inluding dump-script), then
   6033      1.1  mrg              report an error. Otherwise, targets might begin to believe
   6034      1.1  mrg              they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
   6035      1.1  mrg              namespace. The first time any user complains about this, we'll
   6036      1.1  mrg              need to make LTWRAPPER_OPTION_PREFIX a configure-time option
   6037      1.1  mrg              or a configure.ac-settable value.
   6038      1.1  mrg            */
   6039      1.1  mrg           lt_fatal (__FILE__, __LINE__,
   6040      1.1  mrg 		    "unrecognized %s option: '%s'",
   6041      1.1  mrg                     ltwrapper_option_prefix, argv[i]);
   6042      1.1  mrg         }
   6043      1.1  mrg       /* otherwise ... */
   6044      1.1  mrg       newargz[++newargc] = xstrdup (argv[i]);
   6045      1.1  mrg     }
   6046      1.1  mrg   newargz[++newargc] = NULL;
   6047      1.1  mrg 
   6048      1.1  mrg EOF
   6049      1.1  mrg 	    cat <<EOF
   6050      1.1  mrg   /* The GNU banner must be the first non-error debug message */
   6051      1.1  mrg   lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE) $VERSION\n");
   6052      1.1  mrg EOF
   6053      1.1  mrg 	    cat <<"EOF"
   6054      1.1  mrg   lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]);
   6055      1.1  mrg   lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name);
   6056      1.1  mrg 
   6057      1.1  mrg   tmp_pathspec = find_executable (argv[0]);
   6058      1.1  mrg   if (tmp_pathspec == NULL)
   6059      1.1  mrg     lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]);
   6060      1.1  mrg   lt_debugprintf (__FILE__, __LINE__,
   6061      1.1  mrg                   "(main) found exe (before symlink chase) at: %s\n",
   6062      1.1  mrg 		  tmp_pathspec);
   6063      1.1  mrg 
   6064      1.1  mrg   actual_cwrapper_path = chase_symlinks (tmp_pathspec);
   6065      1.1  mrg   lt_debugprintf (__FILE__, __LINE__,
   6066      1.1  mrg                   "(main) found exe (after symlink chase) at: %s\n",
   6067      1.1  mrg 		  actual_cwrapper_path);
   6068      1.1  mrg   XFREE (tmp_pathspec);
   6069      1.1  mrg 
   6070      1.1  mrg   actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path));
   6071      1.1  mrg   strendzap (actual_cwrapper_path, actual_cwrapper_name);
   6072      1.1  mrg 
   6073      1.1  mrg   /* wrapper name transforms */
   6074      1.1  mrg   strendzap (actual_cwrapper_name, ".exe");
   6075      1.1  mrg   tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
   6076      1.1  mrg   XFREE (actual_cwrapper_name);
   6077      1.1  mrg   actual_cwrapper_name = tmp_pathspec;
   6078      1.1  mrg   tmp_pathspec = 0;
   6079      1.1  mrg 
   6080      1.1  mrg   /* target_name transforms -- use actual target program name; might have lt- prefix */
   6081      1.1  mrg   target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
   6082      1.1  mrg   strendzap (target_name, ".exe");
   6083      1.1  mrg   tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
   6084      1.1  mrg   XFREE (target_name);
   6085      1.1  mrg   target_name = tmp_pathspec;
   6086      1.1  mrg   tmp_pathspec = 0;
   6087      1.1  mrg 
   6088      1.1  mrg   lt_debugprintf (__FILE__, __LINE__,
   6089      1.1  mrg 		  "(main) libtool target name: %s\n",
   6090      1.1  mrg 		  target_name);
   6091      1.1  mrg EOF
   6092      1.1  mrg 
   6093      1.1  mrg 	    cat <<EOF
   6094      1.1  mrg   newargz[0] =
   6095      1.1  mrg     XMALLOC (char, (strlen (actual_cwrapper_path) +
   6096      1.1  mrg 		    strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
   6097      1.1  mrg   strcpy (newargz[0], actual_cwrapper_path);
   6098      1.1  mrg   strcat (newargz[0], "$objdir");
   6099      1.1  mrg   strcat (newargz[0], "/");
   6100      1.1  mrg EOF
   6101      1.1  mrg 
   6102      1.1  mrg 	    cat <<"EOF"
   6103      1.1  mrg   /* stop here, and copy so we don't have to do this twice */
   6104      1.1  mrg   tmp_pathspec = xstrdup (newargz[0]);
   6105      1.1  mrg 
   6106      1.1  mrg   /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
   6107      1.1  mrg   strcat (newargz[0], actual_cwrapper_name);
   6108      1.1  mrg 
   6109      1.1  mrg   /* DO want the lt- prefix here if it exists, so use target_name */
   6110      1.1  mrg   lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
   6111      1.1  mrg   XFREE (tmp_pathspec);
   6112      1.1  mrg   tmp_pathspec = NULL;
   6113      1.1  mrg EOF
   6114      1.1  mrg 
   6115      1.1  mrg 	    case $host_os in
   6116      1.1  mrg 	      mingw*)
   6117      1.1  mrg 	    cat <<"EOF"
   6118      1.1  mrg   {
   6119      1.1  mrg     char* p;
   6120      1.1  mrg     while ((p = strchr (newargz[0], '\\')) != NULL)
   6121      1.1  mrg       {
   6122      1.1  mrg 	*p = '/';
   6123      1.1  mrg       }
   6124      1.1  mrg     while ((p = strchr (lt_argv_zero, '\\')) != NULL)
   6125      1.1  mrg       {
   6126      1.1  mrg 	*p = '/';
   6127      1.1  mrg       }
   6128      1.1  mrg   }
   6129      1.1  mrg EOF
   6130      1.1  mrg 	    ;;
   6131      1.1  mrg 	    esac
   6132      1.1  mrg 
   6133      1.1  mrg 	    cat <<"EOF"
   6134      1.1  mrg   XFREE (target_name);
   6135      1.1  mrg   XFREE (actual_cwrapper_path);
   6136      1.1  mrg   XFREE (actual_cwrapper_name);
   6137      1.1  mrg 
   6138      1.1  mrg   lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
   6139      1.1  mrg   lt_setenv ("DUALCASE", "1");  /* for MSK sh */
   6140      1.1  mrg   /* Update the DLL searchpath.  EXE_PATH_VALUE ($dllsearchpath) must
   6141      1.1  mrg      be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath)
   6142      1.1  mrg      because on Windows, both *_VARNAMEs are PATH but uninstalled
   6143      1.1  mrg      libraries must come first. */
   6144      1.1  mrg   lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
   6145      1.1  mrg   lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
   6146      1.1  mrg 
   6147      1.1  mrg   lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n",
   6148      1.1  mrg 		  nonnull (lt_argv_zero));
   6149      1.1  mrg   for (i = 0; i < newargc; i++)
   6150      1.1  mrg     {
   6151      1.1  mrg       lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n",
   6152      1.1  mrg 		      i, nonnull (newargz[i]));
   6153      1.1  mrg     }
   6154      1.1  mrg 
   6155      1.1  mrg EOF
   6156      1.1  mrg 
   6157      1.1  mrg 	    case $host_os in
   6158      1.1  mrg 	      mingw*)
   6159      1.1  mrg 		cat <<"EOF"
   6160      1.1  mrg   /* execv doesn't actually work on mingw as expected on unix */
   6161      1.1  mrg   newargz = prepare_spawn (newargz);
   6162      1.1  mrg   rval = (int) _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
   6163      1.1  mrg   if (rval == -1)
   6164      1.1  mrg     {
   6165      1.1  mrg       /* failed to start process */
   6166      1.1  mrg       lt_debugprintf (__FILE__, __LINE__,
   6167      1.1  mrg 		      "(main) failed to launch target \"%s\": %s\n",
   6168      1.1  mrg 		      lt_argv_zero, nonnull (strerror (errno)));
   6169      1.1  mrg       return 127;
   6170      1.1  mrg     }
   6171      1.1  mrg   return rval;
   6172      1.1  mrg EOF
   6173      1.1  mrg 		;;
   6174      1.1  mrg 	      *)
   6175      1.1  mrg 		cat <<"EOF"
   6176      1.1  mrg   execv (lt_argv_zero, newargz);
   6177      1.1  mrg   return rval; /* =127, but avoids unused variable warning */
   6178      1.1  mrg EOF
   6179      1.1  mrg 		;;
   6180      1.1  mrg 	    esac
   6181      1.1  mrg 
   6182      1.1  mrg 	    cat <<"EOF"
   6183      1.1  mrg }
   6184      1.1  mrg 
   6185      1.1  mrg void *
   6186      1.1  mrg xmalloc (size_t num)
   6187      1.1  mrg {
   6188      1.1  mrg   void *p = (void *) malloc (num);
   6189      1.1  mrg   if (!p)
   6190      1.1  mrg     lt_fatal (__FILE__, __LINE__, "memory exhausted");
   6191      1.1  mrg 
   6192      1.1  mrg   return p;
   6193      1.1  mrg }
   6194      1.1  mrg 
   6195      1.1  mrg char *
   6196      1.1  mrg xstrdup (const char *string)
   6197      1.1  mrg {
   6198      1.1  mrg   return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
   6199      1.1  mrg 			  string) : NULL;
   6200      1.1  mrg }
   6201      1.1  mrg 
   6202      1.1  mrg const char *
   6203      1.1  mrg base_name (const char *name)
   6204      1.1  mrg {
   6205      1.1  mrg   const char *base;
   6206      1.1  mrg 
   6207      1.1  mrg #if defined HAVE_DOS_BASED_FILE_SYSTEM
   6208      1.1  mrg   /* Skip over the disk name in MSDOS pathnames. */
   6209      1.1  mrg   if (isalpha ((unsigned char) name[0]) && name[1] == ':')
   6210      1.1  mrg     name += 2;
   6211      1.1  mrg #endif
   6212      1.1  mrg 
   6213      1.1  mrg   for (base = name; *name; name++)
   6214      1.1  mrg     if (IS_DIR_SEPARATOR (*name))
   6215      1.1  mrg       base = name + 1;
   6216      1.1  mrg   return base;
   6217      1.1  mrg }
   6218      1.1  mrg 
   6219      1.1  mrg int
   6220      1.1  mrg check_executable (const char *path)
   6221      1.1  mrg {
   6222      1.1  mrg   struct stat st;
   6223      1.1  mrg 
   6224      1.1  mrg   lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n",
   6225      1.1  mrg                   nonempty (path));
   6226      1.1  mrg   if ((!path) || (!*path))
   6227      1.1  mrg     return 0;
   6228      1.1  mrg 
   6229      1.1  mrg   if ((stat (path, &st) >= 0)
   6230      1.1  mrg       && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
   6231      1.1  mrg     return 1;
   6232      1.1  mrg   else
   6233      1.1  mrg     return 0;
   6234      1.1  mrg }
   6235      1.1  mrg 
   6236      1.1  mrg int
   6237      1.1  mrg make_executable (const char *path)
   6238      1.1  mrg {
   6239      1.1  mrg   int rval = 0;
   6240      1.1  mrg   struct stat st;
   6241      1.1  mrg 
   6242      1.1  mrg   lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n",
   6243      1.1  mrg                   nonempty (path));
   6244      1.1  mrg   if ((!path) || (!*path))
   6245      1.1  mrg     return 0;
   6246      1.1  mrg 
   6247      1.1  mrg   if (stat (path, &st) >= 0)
   6248      1.1  mrg     {
   6249      1.1  mrg       rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
   6250      1.1  mrg     }
   6251      1.1  mrg   return rval;
   6252      1.1  mrg }
   6253      1.1  mrg 
   6254      1.1  mrg /* Searches for the full path of the wrapper.  Returns
   6255      1.1  mrg    newly allocated full path name if found, NULL otherwise
   6256      1.1  mrg    Does not chase symlinks, even on platforms that support them.
   6257      1.1  mrg */
   6258      1.1  mrg char *
   6259      1.1  mrg find_executable (const char *wrapper)
   6260      1.1  mrg {
   6261      1.1  mrg   int has_slash = 0;
   6262      1.1  mrg   const char *p;
   6263      1.1  mrg   const char *p_next;
   6264      1.1  mrg   /* static buffer for getcwd */
   6265      1.1  mrg   char tmp[LT_PATHMAX + 1];
   6266      1.1  mrg   size_t tmp_len;
   6267      1.1  mrg   char *concat_name;
   6268      1.1  mrg 
   6269      1.1  mrg   lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n",
   6270      1.1  mrg                   nonempty (wrapper));
   6271      1.1  mrg 
   6272      1.1  mrg   if ((wrapper == NULL) || (*wrapper == '\0'))
   6273      1.1  mrg     return NULL;
   6274      1.1  mrg 
   6275      1.1  mrg   /* Absolute path? */
   6276      1.1  mrg #if defined HAVE_DOS_BASED_FILE_SYSTEM
   6277      1.1  mrg   if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
   6278      1.1  mrg     {
   6279      1.1  mrg       concat_name = xstrdup (wrapper);
   6280      1.1  mrg       if (check_executable (concat_name))
   6281      1.1  mrg 	return concat_name;
   6282      1.1  mrg       XFREE (concat_name);
   6283      1.1  mrg     }
   6284      1.1  mrg   else
   6285      1.1  mrg     {
   6286      1.1  mrg #endif
   6287      1.1  mrg       if (IS_DIR_SEPARATOR (wrapper[0]))
   6288      1.1  mrg 	{
   6289      1.1  mrg 	  concat_name = xstrdup (wrapper);
   6290      1.1  mrg 	  if (check_executable (concat_name))
   6291      1.1  mrg 	    return concat_name;
   6292      1.1  mrg 	  XFREE (concat_name);
   6293      1.1  mrg 	}
   6294      1.1  mrg #if defined HAVE_DOS_BASED_FILE_SYSTEM
   6295      1.1  mrg     }
   6296      1.1  mrg #endif
   6297      1.1  mrg 
   6298      1.1  mrg   for (p = wrapper; *p; p++)
   6299      1.1  mrg     if (*p == '/')
   6300      1.1  mrg       {
   6301      1.1  mrg 	has_slash = 1;
   6302      1.1  mrg 	break;
   6303      1.1  mrg       }
   6304      1.1  mrg   if (!has_slash)
   6305      1.1  mrg     {
   6306      1.1  mrg       /* no slashes; search PATH */
   6307      1.1  mrg       const char *path = getenv ("PATH");
   6308      1.1  mrg       if (path != NULL)
   6309      1.1  mrg 	{
   6310      1.1  mrg 	  for (p = path; *p; p = p_next)
   6311      1.1  mrg 	    {
   6312      1.1  mrg 	      const char *q;
   6313      1.1  mrg 	      size_t p_len;
   6314      1.1  mrg 	      for (q = p; *q; q++)
   6315      1.1  mrg 		if (IS_PATH_SEPARATOR (*q))
   6316      1.1  mrg 		  break;
   6317      1.1  mrg 	      p_len = (size_t) (q - p);
   6318      1.1  mrg 	      p_next = (*q == '\0' ? q : q + 1);
   6319      1.1  mrg 	      if (p_len == 0)
   6320      1.1  mrg 		{
   6321      1.1  mrg 		  /* empty path: current directory */
   6322      1.1  mrg 		  if (getcwd (tmp, LT_PATHMAX) == NULL)
   6323      1.1  mrg 		    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
   6324      1.1  mrg                               nonnull (strerror (errno)));
   6325      1.1  mrg 		  tmp_len = strlen (tmp);
   6326      1.1  mrg 		  concat_name =
   6327      1.1  mrg 		    XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
   6328      1.1  mrg 		  memcpy (concat_name, tmp, tmp_len);
   6329      1.1  mrg 		  concat_name[tmp_len] = '/';
   6330      1.1  mrg 		  strcpy (concat_name + tmp_len + 1, wrapper);
   6331      1.1  mrg 		}
   6332      1.1  mrg 	      else
   6333      1.1  mrg 		{
   6334      1.1  mrg 		  concat_name =
   6335      1.1  mrg 		    XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
   6336      1.1  mrg 		  memcpy (concat_name, p, p_len);
   6337      1.1  mrg 		  concat_name[p_len] = '/';
   6338      1.1  mrg 		  strcpy (concat_name + p_len + 1, wrapper);
   6339      1.1  mrg 		}
   6340      1.1  mrg 	      if (check_executable (concat_name))
   6341      1.1  mrg 		return concat_name;
   6342      1.1  mrg 	      XFREE (concat_name);
   6343      1.1  mrg 	    }
   6344      1.1  mrg 	}
   6345      1.1  mrg       /* not found in PATH; assume curdir */
   6346      1.1  mrg     }
   6347      1.1  mrg   /* Relative path | not found in path: prepend cwd */
   6348      1.1  mrg   if (getcwd (tmp, LT_PATHMAX) == NULL)
   6349      1.1  mrg     lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
   6350      1.1  mrg               nonnull (strerror (errno)));
   6351      1.1  mrg   tmp_len = strlen (tmp);
   6352      1.1  mrg   concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
   6353      1.1  mrg   memcpy (concat_name, tmp, tmp_len);
   6354      1.1  mrg   concat_name[tmp_len] = '/';
   6355      1.1  mrg   strcpy (concat_name + tmp_len + 1, wrapper);
   6356      1.1  mrg 
   6357      1.1  mrg   if (check_executable (concat_name))
   6358      1.1  mrg     return concat_name;
   6359      1.1  mrg   XFREE (concat_name);
   6360      1.1  mrg   return NULL;
   6361      1.1  mrg }
   6362      1.1  mrg 
   6363      1.1  mrg char *
   6364      1.1  mrg chase_symlinks (const char *pathspec)
   6365      1.1  mrg {
   6366      1.1  mrg #ifndef S_ISLNK
   6367      1.1  mrg   return xstrdup (pathspec);
   6368      1.1  mrg #else
   6369      1.1  mrg   char buf[LT_PATHMAX];
   6370      1.1  mrg   struct stat s;
   6371      1.1  mrg   char *tmp_pathspec = xstrdup (pathspec);
   6372      1.1  mrg   char *p;
   6373      1.1  mrg   int has_symlinks = 0;
   6374      1.1  mrg   while (strlen (tmp_pathspec) && !has_symlinks)
   6375      1.1  mrg     {
   6376      1.1  mrg       lt_debugprintf (__FILE__, __LINE__,
   6377      1.1  mrg 		      "checking path component for symlinks: %s\n",
   6378      1.1  mrg 		      tmp_pathspec);
   6379      1.1  mrg       if (lstat (tmp_pathspec, &s) == 0)
   6380      1.1  mrg 	{
   6381      1.1  mrg 	  if (S_ISLNK (s.st_mode) != 0)
   6382      1.1  mrg 	    {
   6383      1.1  mrg 	      has_symlinks = 1;
   6384      1.1  mrg 	      break;
   6385      1.1  mrg 	    }
   6386      1.1  mrg 
   6387      1.1  mrg 	  /* search backwards for last DIR_SEPARATOR */
   6388      1.1  mrg 	  p = tmp_pathspec + strlen (tmp_pathspec) - 1;
   6389      1.1  mrg 	  while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
   6390      1.1  mrg 	    p--;
   6391      1.1  mrg 	  if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
   6392      1.1  mrg 	    {
   6393      1.1  mrg 	      /* no more DIR_SEPARATORS left */
   6394      1.1  mrg 	      break;
   6395      1.1  mrg 	    }
   6396      1.1  mrg 	  *p = '\0';
   6397      1.1  mrg 	}
   6398      1.1  mrg       else
   6399      1.1  mrg 	{
   6400      1.1  mrg 	  lt_fatal (__FILE__, __LINE__,
   6401      1.1  mrg 		    "error accessing file \"%s\": %s",
   6402      1.1  mrg 		    tmp_pathspec, nonnull (strerror (errno)));
   6403      1.1  mrg 	}
   6404      1.1  mrg     }
   6405      1.1  mrg   XFREE (tmp_pathspec);
   6406      1.1  mrg 
   6407      1.1  mrg   if (!has_symlinks)
   6408      1.1  mrg     {
   6409      1.1  mrg       return xstrdup (pathspec);
   6410      1.1  mrg     }
   6411      1.1  mrg 
   6412      1.1  mrg   tmp_pathspec = realpath (pathspec, buf);
   6413      1.1  mrg   if (tmp_pathspec == 0)
   6414      1.1  mrg     {
   6415      1.1  mrg       lt_fatal (__FILE__, __LINE__,
   6416      1.1  mrg 		"could not follow symlinks for %s", pathspec);
   6417      1.1  mrg     }
   6418      1.1  mrg   return xstrdup (tmp_pathspec);
   6419      1.1  mrg #endif
   6420      1.1  mrg }
   6421      1.1  mrg 
   6422      1.1  mrg char *
   6423      1.1  mrg strendzap (char *str, const char *pat)
   6424      1.1  mrg {
   6425      1.1  mrg   size_t len, patlen;
   6426      1.1  mrg 
   6427      1.1  mrg   assert (str != NULL);
   6428      1.1  mrg   assert (pat != NULL);
   6429      1.1  mrg 
   6430      1.1  mrg   len = strlen (str);
   6431      1.1  mrg   patlen = strlen (pat);
   6432      1.1  mrg 
   6433      1.1  mrg   if (patlen <= len)
   6434      1.1  mrg     {
   6435      1.1  mrg       str += len - patlen;
   6436      1.1  mrg       if (STREQ (str, pat))
   6437      1.1  mrg 	*str = '\0';
   6438      1.1  mrg     }
   6439      1.1  mrg   return str;
   6440      1.1  mrg }
   6441      1.1  mrg 
   6442      1.1  mrg void
   6443      1.1  mrg lt_debugprintf (const char *file, int line, const char *fmt, ...)
   6444      1.1  mrg {
   6445      1.1  mrg   va_list args;
   6446      1.1  mrg   if (lt_debug)
   6447      1.1  mrg     {
   6448      1.1  mrg       (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line);
   6449      1.1  mrg       va_start (args, fmt);
   6450      1.1  mrg       (void) vfprintf (stderr, fmt, args);
   6451      1.1  mrg       va_end (args);
   6452      1.1  mrg     }
   6453      1.1  mrg }
   6454      1.1  mrg 
   6455      1.1  mrg static void
   6456      1.1  mrg lt_error_core (int exit_status, const char *file,
   6457      1.1  mrg 	       int line, const char *mode,
   6458      1.1  mrg 	       const char *message, va_list ap)
   6459      1.1  mrg {
   6460      1.1  mrg   fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode);
   6461      1.1  mrg   vfprintf (stderr, message, ap);
   6462      1.1  mrg   fprintf (stderr, ".\n");
   6463      1.1  mrg 
   6464      1.1  mrg   if (exit_status >= 0)
   6465      1.1  mrg     exit (exit_status);
   6466      1.1  mrg }
   6467      1.1  mrg 
   6468      1.1  mrg void
   6469      1.1  mrg lt_fatal (const char *file, int line, const char *message, ...)
   6470      1.1  mrg {
   6471      1.1  mrg   va_list ap;
   6472      1.1  mrg   va_start (ap, message);
   6473      1.1  mrg   lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap);
   6474      1.1  mrg   va_end (ap);
   6475      1.1  mrg }
   6476      1.1  mrg 
   6477      1.1  mrg static const char *
   6478      1.1  mrg nonnull (const char *s)
   6479      1.1  mrg {
   6480      1.1  mrg   return s ? s : "(null)";
   6481      1.1  mrg }
   6482      1.1  mrg 
   6483      1.1  mrg static const char *
   6484      1.1  mrg nonempty (const char *s)
   6485      1.1  mrg {
   6486      1.1  mrg   return (s && !*s) ? "(empty)" : nonnull (s);
   6487      1.1  mrg }
   6488      1.1  mrg 
   6489      1.1  mrg void
   6490      1.1  mrg lt_setenv (const char *name, const char *value)
   6491      1.1  mrg {
   6492      1.1  mrg   lt_debugprintf (__FILE__, __LINE__,
   6493      1.1  mrg 		  "(lt_setenv) setting '%s' to '%s'\n",
   6494      1.1  mrg                   nonnull (name), nonnull (value));
   6495      1.1  mrg   {
   6496      1.1  mrg #ifdef HAVE_SETENV
   6497      1.1  mrg     /* always make a copy, for consistency with !HAVE_SETENV */
   6498      1.1  mrg     char *str = xstrdup (value);
   6499      1.1  mrg     setenv (name, str, 1);
   6500      1.1  mrg #else
   6501      1.1  mrg     size_t len = strlen (name) + 1 + strlen (value) + 1;
   6502      1.1  mrg     char *str = XMALLOC (char, len);
   6503      1.1  mrg     sprintf (str, "%s=%s", name, value);
   6504      1.1  mrg     if (putenv (str) != EXIT_SUCCESS)
   6505      1.1  mrg       {
   6506      1.1  mrg         XFREE (str);
   6507      1.1  mrg       }
   6508      1.1  mrg #endif
   6509      1.1  mrg   }
   6510      1.1  mrg }
   6511      1.1  mrg 
   6512      1.1  mrg char *
   6513      1.1  mrg lt_extend_str (const char *orig_value, const char *add, int to_end)
   6514      1.1  mrg {
   6515      1.1  mrg   char *new_value;
   6516      1.1  mrg   if (orig_value && *orig_value)
   6517      1.1  mrg     {
   6518      1.1  mrg       size_t orig_value_len = strlen (orig_value);
   6519      1.1  mrg       size_t add_len = strlen (add);
   6520      1.1  mrg       new_value = XMALLOC (char, add_len + orig_value_len + 1);
   6521      1.1  mrg       if (to_end)
   6522      1.1  mrg         {
   6523      1.1  mrg           strcpy (new_value, orig_value);
   6524      1.1  mrg           strcpy (new_value + orig_value_len, add);
   6525      1.1  mrg         }
   6526      1.1  mrg       else
   6527      1.1  mrg         {
   6528      1.1  mrg           strcpy (new_value, add);
   6529      1.1  mrg           strcpy (new_value + add_len, orig_value);
   6530      1.1  mrg         }
   6531      1.1  mrg     }
   6532      1.1  mrg   else
   6533      1.1  mrg     {
   6534      1.1  mrg       new_value = xstrdup (add);
   6535      1.1  mrg     }
   6536      1.1  mrg   return new_value;
   6537      1.1  mrg }
   6538      1.1  mrg 
   6539      1.1  mrg void
   6540      1.1  mrg lt_update_exe_path (const char *name, const char *value)
   6541      1.1  mrg {
   6542      1.1  mrg   lt_debugprintf (__FILE__, __LINE__,
   6543      1.1  mrg 		  "(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
   6544      1.1  mrg                   nonnull (name), nonnull (value));
   6545      1.1  mrg 
   6546      1.1  mrg   if (name && *name && value && *value)
   6547      1.1  mrg     {
   6548      1.1  mrg       char *new_value = lt_extend_str (getenv (name), value, 0);
   6549      1.1  mrg       /* some systems can't cope with a ':'-terminated path #' */
   6550      1.1  mrg       size_t len = strlen (new_value);
   6551      1.1  mrg       while ((len > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
   6552      1.1  mrg         {
   6553      1.1  mrg           new_value[--len] = '\0';
   6554      1.1  mrg         }
   6555      1.1  mrg       lt_setenv (name, new_value);
   6556      1.1  mrg       XFREE (new_value);
   6557      1.1  mrg     }
   6558      1.1  mrg }
   6559      1.1  mrg 
   6560      1.1  mrg void
   6561      1.1  mrg lt_update_lib_path (const char *name, const char *value)
   6562      1.1  mrg {
   6563      1.1  mrg   lt_debugprintf (__FILE__, __LINE__,
   6564      1.1  mrg 		  "(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
   6565      1.1  mrg                   nonnull (name), nonnull (value));
   6566      1.1  mrg 
   6567      1.1  mrg   if (name && *name && value && *value)
   6568      1.1  mrg     {
   6569      1.1  mrg       char *new_value = lt_extend_str (getenv (name), value, 0);
   6570      1.1  mrg       lt_setenv (name, new_value);
   6571      1.1  mrg       XFREE (new_value);
   6572      1.1  mrg     }
   6573      1.1  mrg }
   6574      1.1  mrg 
   6575      1.1  mrg EOF
   6576      1.1  mrg 	    case $host_os in
   6577      1.1  mrg 	      mingw*)
   6578      1.1  mrg 		cat <<"EOF"
   6579      1.1  mrg 
   6580      1.1  mrg /* Prepares an argument vector before calling spawn().
   6581      1.1  mrg    Note that spawn() does not by itself call the command interpreter
   6582      1.1  mrg      (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") :
   6583      1.1  mrg       ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
   6584      1.1  mrg          GetVersionEx(&v);
   6585      1.1  mrg          v.dwPlatformId == VER_PLATFORM_WIN32_NT;
   6586      1.1  mrg       }) ? "cmd.exe" : "command.com").
   6587      1.1  mrg    Instead it simply concatenates the arguments, separated by ' ', and calls
   6588      1.1  mrg    CreateProcess().  We must quote the arguments since Win32 CreateProcess()
   6589      1.1  mrg    interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a
   6590      1.1  mrg    special way:
   6591      1.1  mrg    - Space and tab are interpreted as delimiters. They are not treated as
   6592      1.1  mrg      delimiters if they are surrounded by double quotes: "...".
   6593      1.1  mrg    - Unescaped double quotes are removed from the input. Their only effect is
   6594      1.1  mrg      that within double quotes, space and tab are treated like normal
   6595      1.1  mrg      characters.
   6596      1.1  mrg    - Backslashes not followed by double quotes are not special.
   6597      1.1  mrg    - But 2*n+1 backslashes followed by a double quote become
   6598      1.1  mrg      n backslashes followed by a double quote (n >= 0):
   6599      1.1  mrg        \" -> "
   6600      1.1  mrg        \\\" -> \"
   6601      1.1  mrg        \\\\\" -> \\"
   6602      1.1  mrg  */
   6603      1.1  mrg #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"
   6604      1.1  mrg #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"
   6605      1.1  mrg char **
   6606      1.1  mrg prepare_spawn (char **argv)
   6607      1.1  mrg {
   6608      1.1  mrg   size_t argc;
   6609      1.1  mrg   char **new_argv;
   6610      1.1  mrg   size_t i;
   6611      1.1  mrg 
   6612      1.1  mrg   /* Count number of arguments.  */
   6613      1.1  mrg   for (argc = 0; argv[argc] != NULL; argc++)
   6614      1.1  mrg     ;
   6615      1.1  mrg 
   6616      1.1  mrg   /* Allocate new argument vector.  */
   6617      1.1  mrg   new_argv = XMALLOC (char *, argc + 1);
   6618      1.1  mrg 
   6619      1.1  mrg   /* Put quoted arguments into the new argument vector.  */
   6620      1.1  mrg   for (i = 0; i < argc; i++)
   6621      1.1  mrg     {
   6622      1.1  mrg       const char *string = argv[i];
   6623      1.1  mrg 
   6624      1.1  mrg       if (string[0] == '\0')
   6625      1.1  mrg 	new_argv[i] = xstrdup ("\"\"");
   6626      1.1  mrg       else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL)
   6627      1.1  mrg 	{
   6628      1.1  mrg 	  int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL);
   6629      1.1  mrg 	  size_t length;
   6630      1.1  mrg 	  unsigned int backslashes;
   6631      1.1  mrg 	  const char *s;
   6632      1.1  mrg 	  char *quoted_string;
   6633      1.1  mrg 	  char *p;
   6634      1.1  mrg 
   6635      1.1  mrg 	  length = 0;
   6636      1.1  mrg 	  backslashes = 0;
   6637      1.1  mrg 	  if (quote_around)
   6638      1.1  mrg 	    length++;
   6639      1.1  mrg 	  for (s = string; *s != '\0'; s++)
   6640      1.1  mrg 	    {
   6641      1.1  mrg 	      char c = *s;
   6642      1.1  mrg 	      if (c == '"')
   6643      1.1  mrg 		length += backslashes + 1;
   6644      1.1  mrg 	      length++;
   6645      1.1  mrg 	      if (c == '\\')
   6646      1.1  mrg 		backslashes++;
   6647      1.1  mrg 	      else
   6648      1.1  mrg 		backslashes = 0;
   6649      1.1  mrg 	    }
   6650      1.1  mrg 	  if (quote_around)
   6651      1.1  mrg 	    length += backslashes + 1;
   6652      1.1  mrg 
   6653      1.1  mrg 	  quoted_string = XMALLOC (char, length + 1);
   6654      1.1  mrg 
   6655      1.1  mrg 	  p = quoted_string;
   6656      1.1  mrg 	  backslashes = 0;
   6657      1.1  mrg 	  if (quote_around)
   6658      1.1  mrg 	    *p++ = '"';
   6659      1.1  mrg 	  for (s = string; *s != '\0'; s++)
   6660      1.1  mrg 	    {
   6661      1.1  mrg 	      char c = *s;
   6662      1.1  mrg 	      if (c == '"')
   6663      1.1  mrg 		{
   6664      1.1  mrg 		  unsigned int j;
   6665      1.1  mrg 		  for (j = backslashes + 1; j > 0; j--)
   6666      1.1  mrg 		    *p++ = '\\';
   6667      1.1  mrg 		}
   6668      1.1  mrg 	      *p++ = c;
   6669      1.1  mrg 	      if (c == '\\')
   6670      1.1  mrg 		backslashes++;
   6671      1.1  mrg 	      else
   6672      1.1  mrg 		backslashes = 0;
   6673      1.1  mrg 	    }
   6674      1.1  mrg 	  if (quote_around)
   6675      1.1  mrg 	    {
   6676      1.1  mrg 	      unsigned int j;
   6677      1.1  mrg 	      for (j = backslashes; j > 0; j--)
   6678      1.1  mrg 		*p++ = '\\';
   6679      1.1  mrg 	      *p++ = '"';
   6680      1.1  mrg 	    }
   6681      1.1  mrg 	  *p = '\0';
   6682      1.1  mrg 
   6683      1.1  mrg 	  new_argv[i] = quoted_string;
   6684      1.1  mrg 	}
   6685      1.1  mrg       else
   6686      1.1  mrg 	new_argv[i] = (char *) string;
   6687      1.1  mrg     }
   6688      1.1  mrg   new_argv[argc] = NULL;
   6689      1.1  mrg 
   6690      1.1  mrg   return new_argv;
   6691      1.1  mrg }
   6692      1.1  mrg EOF
   6693      1.1  mrg 		;;
   6694      1.1  mrg 	    esac
   6695      1.1  mrg 
   6696      1.1  mrg             cat <<"EOF"
   6697      1.1  mrg void lt_dump_script (FILE* f)
   6698      1.1  mrg {
   6699      1.1  mrg EOF
   6700      1.1  mrg 	    func_emit_wrapper yes |
   6701      1.1  mrg 	      $SED -n -e '
   6702      1.1  mrg s/^\(.\{79\}\)\(..*\)/\1\
   6703      1.1  mrg \2/
   6704      1.1  mrg h
   6705      1.1  mrg s/\([\\"]\)/\\\1/g
   6706      1.1  mrg s/$/\\n/
   6707      1.1  mrg s/\([^\n]*\).*/  fputs ("\1", f);/p
   6708      1.1  mrg g
   6709      1.1  mrg D'
   6710      1.1  mrg             cat <<"EOF"
   6711      1.1  mrg }
   6712      1.1  mrg EOF
   6713      1.1  mrg }
   6714      1.1  mrg # end: func_emit_cwrapperexe_src
   6715      1.1  mrg 
   6716      1.1  mrg # func_win32_import_lib_p ARG
   6717      1.1  mrg # True if ARG is an import lib, as indicated by $file_magic_cmd
   6718      1.1  mrg func_win32_import_lib_p ()
   6719      1.1  mrg {
   6720      1.1  mrg     $debug_cmd
   6721      1.1  mrg 
   6722      1.1  mrg     case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in
   6723      1.1  mrg     *import*) : ;;
   6724      1.1  mrg     *) false ;;
   6725      1.1  mrg     esac
   6726      1.1  mrg }
   6727      1.1  mrg 
   6728      1.1  mrg # func_suncc_cstd_abi
   6729      1.1  mrg # !!ONLY CALL THIS FOR SUN CC AFTER $compile_command IS FULLY EXPANDED!!
   6730      1.1  mrg # Several compiler flags select an ABI that is incompatible with the
   6731      1.1  mrg # Cstd library. Avoid specifying it if any are in CXXFLAGS.
   6732      1.1  mrg func_suncc_cstd_abi ()
   6733      1.1  mrg {
   6734      1.1  mrg     $debug_cmd
   6735      1.1  mrg 
   6736      1.1  mrg     case " $compile_command " in
   6737      1.1  mrg     *" -compat=g "*|*\ -std=c++[0-9][0-9]\ *|*" -library=stdcxx4 "*|*" -library=stlport4 "*)
   6738      1.1  mrg       suncc_use_cstd_abi=no
   6739      1.1  mrg       ;;
   6740      1.1  mrg     *)
   6741      1.1  mrg       suncc_use_cstd_abi=yes
   6742      1.1  mrg       ;;
   6743      1.1  mrg     esac
   6744      1.1  mrg }
   6745      1.1  mrg 
   6746      1.1  mrg # func_mode_link arg...
   6747      1.1  mrg func_mode_link ()
   6748      1.1  mrg {
   6749      1.1  mrg     $debug_cmd
   6750      1.1  mrg 
   6751      1.1  mrg     case $host in
   6752      1.1  mrg     *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
   6753      1.1  mrg       # It is impossible to link a dll without this setting, and
   6754      1.1  mrg       # we shouldn't force the makefile maintainer to figure out
   6755      1.1  mrg       # what system we are compiling for in order to pass an extra
   6756      1.1  mrg       # flag for every libtool invocation.
   6757      1.1  mrg       # allow_undefined=no
   6758      1.1  mrg 
   6759      1.1  mrg       # FIXME: Unfortunately, there are problems with the above when trying
   6760      1.1  mrg       # to make a dll that has undefined symbols, in which case not
   6761      1.1  mrg       # even a static library is built.  For now, we need to specify
   6762      1.1  mrg       # -no-undefined on the libtool link line when we can be certain
   6763      1.1  mrg       # that all symbols are satisfied, otherwise we get a static library.
   6764      1.1  mrg       allow_undefined=yes
   6765      1.1  mrg       ;;
   6766      1.1  mrg     *)
   6767      1.1  mrg       allow_undefined=yes
   6768      1.1  mrg       ;;
   6769      1.1  mrg     esac
   6770      1.1  mrg     libtool_args=$nonopt
   6771      1.1  mrg     base_compile="$nonopt $@"
   6772      1.1  mrg     compile_command=$nonopt
   6773      1.1  mrg     finalize_command=$nonopt
   6774      1.1  mrg 
   6775      1.1  mrg     compile_rpath=
   6776      1.1  mrg     finalize_rpath=
   6777      1.1  mrg     compile_shlibpath=
   6778      1.1  mrg     finalize_shlibpath=
   6779      1.1  mrg     convenience=
   6780      1.1  mrg     old_convenience=
   6781      1.1  mrg     deplibs=
   6782      1.1  mrg     old_deplibs=
   6783      1.1  mrg     compiler_flags=
   6784      1.1  mrg     linker_flags=
   6785      1.1  mrg     dllsearchpath=
   6786      1.1  mrg     lib_search_path=`pwd`
   6787      1.1  mrg     inst_prefix_dir=
   6788      1.1  mrg     new_inherited_linker_flags=
   6789      1.1  mrg 
   6790      1.1  mrg     avoid_version=no
   6791      1.1  mrg     bindir=
   6792      1.1  mrg     dlfiles=
   6793      1.1  mrg     dlprefiles=
   6794      1.1  mrg     dlself=no
   6795      1.1  mrg     export_dynamic=no
   6796      1.1  mrg     export_symbols=
   6797      1.1  mrg     export_symbols_regex=
   6798      1.1  mrg     generated=
   6799      1.1  mrg     libobjs=
   6800      1.1  mrg     ltlibs=
   6801      1.1  mrg     module=no
   6802      1.1  mrg     no_install=no
   6803      1.1  mrg     objs=
   6804      1.1  mrg     os2dllname=
   6805      1.1  mrg     non_pic_objects=
   6806      1.1  mrg     precious_files_regex=
   6807      1.1  mrg     prefer_static_libs=no
   6808      1.1  mrg     preload=false
   6809      1.1  mrg     prev=
   6810      1.1  mrg     prevarg=
   6811      1.1  mrg     release=
   6812      1.1  mrg     rpath=
   6813      1.1  mrg     xrpath=
   6814      1.1  mrg     perm_rpath=
   6815      1.1  mrg     temp_rpath=
   6816      1.1  mrg     thread_safe=no
   6817      1.1  mrg     vinfo=
   6818      1.1  mrg     vinfo_number=no
   6819      1.1  mrg     weak_libs=
   6820      1.1  mrg     single_module=$wl-single_module
   6821      1.1  mrg     func_infer_tag $base_compile
   6822      1.1  mrg 
   6823      1.1  mrg     # We need to know -static, to get the right output filenames.
   6824      1.1  mrg     for arg
   6825      1.1  mrg     do
   6826      1.1  mrg       case $arg in
   6827      1.1  mrg       -shared)
   6828      1.1  mrg 	test yes != "$build_libtool_libs" \
   6829      1.1  mrg 	  && func_fatal_configuration "cannot build a shared library"
   6830      1.1  mrg 	build_old_libs=no
   6831      1.1  mrg 	break
   6832      1.1  mrg 	;;
   6833      1.1  mrg       -all-static | -static | -static-libtool-libs)
   6834      1.1  mrg 	case $arg in
   6835      1.1  mrg 	-all-static)
   6836      1.1  mrg 	  if test yes = "$build_libtool_libs" && test -z "$link_static_flag"; then
   6837      1.1  mrg 	    func_warning "complete static linking is impossible in this configuration"
   6838      1.1  mrg 	  fi
   6839      1.1  mrg 	  if test -n "$link_static_flag"; then
   6840      1.1  mrg 	    dlopen_self=$dlopen_self_static
   6841      1.1  mrg 	  fi
   6842      1.1  mrg 	  prefer_static_libs=yes
   6843      1.1  mrg 	  ;;
   6844      1.1  mrg 	-static)
   6845      1.1  mrg 	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
   6846      1.1  mrg 	    dlopen_self=$dlopen_self_static
   6847      1.1  mrg 	  fi
   6848      1.1  mrg 	  prefer_static_libs=built
   6849      1.1  mrg 	  ;;
   6850      1.1  mrg 	-static-libtool-libs)
   6851      1.1  mrg 	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
   6852      1.1  mrg 	    dlopen_self=$dlopen_self_static
   6853      1.1  mrg 	  fi
   6854      1.1  mrg 	  prefer_static_libs=yes
   6855      1.1  mrg 	  ;;
   6856      1.1  mrg 	esac
   6857      1.1  mrg 	build_libtool_libs=no
   6858      1.1  mrg 	build_old_libs=yes
   6859      1.1  mrg 	break
   6860      1.1  mrg 	;;
   6861      1.1  mrg       esac
   6862      1.1  mrg     done
   6863      1.1  mrg 
   6864      1.1  mrg     # See if our shared archives depend on static archives.
   6865      1.1  mrg     test -n "$old_archive_from_new_cmds" && build_old_libs=yes
   6866      1.1  mrg 
   6867      1.1  mrg     # Go through the arguments, transforming them on the way.
   6868      1.1  mrg     while test "$#" -gt 0; do
   6869      1.1  mrg       arg=$1
   6870      1.1  mrg       shift
   6871  1.1.1.2  mrg       func_quote_arg pretty,unquoted "$arg"
   6872  1.1.1.2  mrg       qarg=$func_quote_arg_unquoted_result
   6873  1.1.1.2  mrg       func_append libtool_args " $func_quote_arg_result"
   6874      1.1  mrg 
   6875      1.1  mrg       # If the previous option needs an argument, assign it.
   6876      1.1  mrg       if test -n "$prev"; then
   6877      1.1  mrg 	case $prev in
   6878      1.1  mrg 	output)
   6879      1.1  mrg 	  func_append compile_command " @OUTPUT@"
   6880      1.1  mrg 	  func_append finalize_command " @OUTPUT@"
   6881      1.1  mrg 	  ;;
   6882      1.1  mrg 	esac
   6883      1.1  mrg 
   6884      1.1  mrg 	case $prev in
   6885      1.1  mrg 	bindir)
   6886      1.1  mrg 	  bindir=$arg
   6887      1.1  mrg 	  prev=
   6888      1.1  mrg 	  continue
   6889      1.1  mrg 	  ;;
   6890      1.1  mrg 	dlfiles|dlprefiles)
   6891      1.1  mrg 	  $preload || {
   6892      1.1  mrg 	    # Add the symbol object into the linking commands.
   6893      1.1  mrg 	    func_append compile_command " @SYMFILE@"
   6894      1.1  mrg 	    func_append finalize_command " @SYMFILE@"
   6895      1.1  mrg 	    preload=:
   6896      1.1  mrg 	  }
   6897      1.1  mrg 	  case $arg in
   6898      1.1  mrg 	  *.la | *.lo) ;;  # We handle these cases below.
   6899      1.1  mrg 	  force)
   6900      1.1  mrg 	    if test no = "$dlself"; then
   6901      1.1  mrg 	      dlself=needless
   6902      1.1  mrg 	      export_dynamic=yes
   6903      1.1  mrg 	    fi
   6904      1.1  mrg 	    prev=
   6905      1.1  mrg 	    continue
   6906      1.1  mrg 	    ;;
   6907      1.1  mrg 	  self)
   6908      1.1  mrg 	    if test dlprefiles = "$prev"; then
   6909      1.1  mrg 	      dlself=yes
   6910      1.1  mrg 	    elif test dlfiles = "$prev" && test yes != "$dlopen_self"; then
   6911      1.1  mrg 	      dlself=yes
   6912      1.1  mrg 	    else
   6913      1.1  mrg 	      dlself=needless
   6914      1.1  mrg 	      export_dynamic=yes
   6915      1.1  mrg 	    fi
   6916      1.1  mrg 	    prev=
   6917      1.1  mrg 	    continue
   6918      1.1  mrg 	    ;;
   6919      1.1  mrg 	  *)
   6920      1.1  mrg 	    if test dlfiles = "$prev"; then
   6921      1.1  mrg 	      func_append dlfiles " $arg"
   6922      1.1  mrg 	    else
   6923      1.1  mrg 	      func_append dlprefiles " $arg"
   6924      1.1  mrg 	    fi
   6925      1.1  mrg 	    prev=
   6926      1.1  mrg 	    continue
   6927      1.1  mrg 	    ;;
   6928      1.1  mrg 	  esac
   6929      1.1  mrg 	  ;;
   6930      1.1  mrg 	expsyms)
   6931      1.1  mrg 	  export_symbols=$arg
   6932      1.1  mrg 	  test -f "$arg" \
   6933      1.1  mrg 	    || func_fatal_error "symbol file '$arg' does not exist"
   6934      1.1  mrg 	  prev=
   6935      1.1  mrg 	  continue
   6936      1.1  mrg 	  ;;
   6937      1.1  mrg 	expsyms_regex)
   6938      1.1  mrg 	  export_symbols_regex=$arg
   6939      1.1  mrg 	  prev=
   6940      1.1  mrg 	  continue
   6941      1.1  mrg 	  ;;
   6942      1.1  mrg 	framework)
   6943      1.1  mrg 	  case $host in
   6944      1.1  mrg 	    *-*-darwin*)
   6945      1.1  mrg 	      case "$deplibs " in
   6946      1.1  mrg 		*" $qarg.ltframework "*) ;;
   6947      1.1  mrg 		*) func_append deplibs " $qarg.ltframework" # this is fixed later
   6948      1.1  mrg 		   ;;
   6949      1.1  mrg 	      esac
   6950      1.1  mrg 	      ;;
   6951      1.1  mrg 	  esac
   6952      1.1  mrg 	  prev=
   6953      1.1  mrg 	  continue
   6954      1.1  mrg 	  ;;
   6955      1.1  mrg 	inst_prefix)
   6956      1.1  mrg 	  inst_prefix_dir=$arg
   6957      1.1  mrg 	  prev=
   6958      1.1  mrg 	  continue
   6959      1.1  mrg 	  ;;
   6960      1.1  mrg 	mllvm)
   6961      1.1  mrg 	  # Clang does not use LLVM to link, so we can simply discard any
   6962      1.1  mrg 	  # '-mllvm $arg' options when doing the link step.
   6963      1.1  mrg 	  prev=
   6964      1.1  mrg 	  continue
   6965      1.1  mrg 	  ;;
   6966      1.1  mrg 	objectlist)
   6967      1.1  mrg 	  if test -f "$arg"; then
   6968      1.1  mrg 	    save_arg=$arg
   6969      1.1  mrg 	    moreargs=
   6970      1.1  mrg 	    for fil in `cat "$save_arg"`
   6971      1.1  mrg 	    do
   6972      1.1  mrg #	      func_append moreargs " $fil"
   6973      1.1  mrg 	      arg=$fil
   6974      1.1  mrg 	      # A libtool-controlled object.
   6975      1.1  mrg 
   6976      1.1  mrg 	      # Check to see that this really is a libtool object.
   6977      1.1  mrg 	      if func_lalib_unsafe_p "$arg"; then
   6978      1.1  mrg 		pic_object=
   6979      1.1  mrg 		non_pic_object=
   6980      1.1  mrg 
   6981      1.1  mrg 		# Read the .lo file
   6982      1.1  mrg 		func_source "$arg"
   6983      1.1  mrg 
   6984      1.1  mrg 		if test -z "$pic_object" ||
   6985      1.1  mrg 		   test -z "$non_pic_object" ||
   6986      1.1  mrg 		   test none = "$pic_object" &&
   6987      1.1  mrg 		   test none = "$non_pic_object"; then
   6988      1.1  mrg 		  func_fatal_error "cannot find name of object for '$arg'"
   6989      1.1  mrg 		fi
   6990      1.1  mrg 
   6991      1.1  mrg 		# Extract subdirectory from the argument.
   6992      1.1  mrg 		func_dirname "$arg" "/" ""
   6993      1.1  mrg 		xdir=$func_dirname_result
   6994      1.1  mrg 
   6995      1.1  mrg 		if test none != "$pic_object"; then
   6996      1.1  mrg 		  # Prepend the subdirectory the object is found in.
   6997      1.1  mrg 		  pic_object=$xdir$pic_object
   6998      1.1  mrg 
   6999      1.1  mrg 		  if test dlfiles = "$prev"; then
   7000      1.1  mrg 		    if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then
   7001      1.1  mrg 		      func_append dlfiles " $pic_object"
   7002      1.1  mrg 		      prev=
   7003      1.1  mrg 		      continue
   7004      1.1  mrg 		    else
   7005      1.1  mrg 		      # If libtool objects are unsupported, then we need to preload.
   7006      1.1  mrg 		      prev=dlprefiles
   7007      1.1  mrg 		    fi
   7008      1.1  mrg 		  fi
   7009      1.1  mrg 
   7010      1.1  mrg 		  # CHECK ME:  I think I busted this.  -Ossama
   7011      1.1  mrg 		  if test dlprefiles = "$prev"; then
   7012      1.1  mrg 		    # Preload the old-style object.
   7013      1.1  mrg 		    func_append dlprefiles " $pic_object"
   7014      1.1  mrg 		    prev=
   7015      1.1  mrg 		  fi
   7016      1.1  mrg 
   7017      1.1  mrg 		  # A PIC object.
   7018      1.1  mrg 		  func_append libobjs " $pic_object"
   7019      1.1  mrg 		  arg=$pic_object
   7020      1.1  mrg 		fi
   7021      1.1  mrg 
   7022      1.1  mrg 		# Non-PIC object.
   7023      1.1  mrg 		if test none != "$non_pic_object"; then
   7024      1.1  mrg 		  # Prepend the subdirectory the object is found in.
   7025      1.1  mrg 		  non_pic_object=$xdir$non_pic_object
   7026      1.1  mrg 
   7027      1.1  mrg 		  # A standard non-PIC object
   7028      1.1  mrg 		  func_append non_pic_objects " $non_pic_object"
   7029      1.1  mrg 		  if test -z "$pic_object" || test none = "$pic_object"; then
   7030      1.1  mrg 		    arg=$non_pic_object
   7031      1.1  mrg 		  fi
   7032      1.1  mrg 		else
   7033      1.1  mrg 		  # If the PIC object exists, use it instead.
   7034      1.1  mrg 		  # $xdir was prepended to $pic_object above.
   7035      1.1  mrg 		  non_pic_object=$pic_object
   7036      1.1  mrg 		  func_append non_pic_objects " $non_pic_object"
   7037      1.1  mrg 		fi
   7038      1.1  mrg 	      else
   7039      1.1  mrg 		# Only an error if not doing a dry-run.
   7040      1.1  mrg 		if $opt_dry_run; then
   7041      1.1  mrg 		  # Extract subdirectory from the argument.
   7042      1.1  mrg 		  func_dirname "$arg" "/" ""
   7043      1.1  mrg 		  xdir=$func_dirname_result
   7044      1.1  mrg 
   7045      1.1  mrg 		  func_lo2o "$arg"
   7046      1.1  mrg 		  pic_object=$xdir$objdir/$func_lo2o_result
   7047      1.1  mrg 		  non_pic_object=$xdir$func_lo2o_result
   7048      1.1  mrg 		  func_append libobjs " $pic_object"
   7049      1.1  mrg 		  func_append non_pic_objects " $non_pic_object"
   7050      1.1  mrg 	        else
   7051      1.1  mrg 		  func_fatal_error "'$arg' is not a valid libtool object"
   7052      1.1  mrg 		fi
   7053      1.1  mrg 	      fi
   7054      1.1  mrg 	    done
   7055      1.1  mrg 	  else
   7056      1.1  mrg 	    func_fatal_error "link input file '$arg' does not exist"
   7057      1.1  mrg 	  fi
   7058      1.1  mrg 	  arg=$save_arg
   7059      1.1  mrg 	  prev=
   7060      1.1  mrg 	  continue
   7061      1.1  mrg 	  ;;
   7062      1.1  mrg 	os2dllname)
   7063      1.1  mrg 	  os2dllname=$arg
   7064      1.1  mrg 	  prev=
   7065      1.1  mrg 	  continue
   7066      1.1  mrg 	  ;;
   7067      1.1  mrg 	precious_regex)
   7068      1.1  mrg 	  precious_files_regex=$arg
   7069      1.1  mrg 	  prev=
   7070      1.1  mrg 	  continue
   7071      1.1  mrg 	  ;;
   7072      1.1  mrg 	release)
   7073      1.1  mrg 	  release=-$arg
   7074      1.1  mrg 	  prev=
   7075      1.1  mrg 	  continue
   7076      1.1  mrg 	  ;;
   7077      1.1  mrg 	rpath | xrpath)
   7078      1.1  mrg 	  # We need an absolute path.
   7079      1.1  mrg 	  case $arg in
   7080      1.1  mrg 	  [\\/]* | [A-Za-z]:[\\/]*) ;;
   7081      1.1  mrg 	  *)
   7082      1.1  mrg 	    func_fatal_error "only absolute run-paths are allowed"
   7083      1.1  mrg 	    ;;
   7084      1.1  mrg 	  esac
   7085      1.1  mrg 	  if test rpath = "$prev"; then
   7086      1.1  mrg 	    case "$rpath " in
   7087      1.1  mrg 	    *" $arg "*) ;;
   7088      1.1  mrg 	    *) func_append rpath " $arg" ;;
   7089      1.1  mrg 	    esac
   7090      1.1  mrg 	  else
   7091      1.1  mrg 	    case "$xrpath " in
   7092      1.1  mrg 	    *" $arg "*) ;;
   7093      1.1  mrg 	    *) func_append xrpath " $arg" ;;
   7094      1.1  mrg 	    esac
   7095      1.1  mrg 	  fi
   7096      1.1  mrg 	  prev=
   7097      1.1  mrg 	  continue
   7098      1.1  mrg 	  ;;
   7099      1.1  mrg 	shrext)
   7100      1.1  mrg 	  shrext_cmds=$arg
   7101      1.1  mrg 	  prev=
   7102      1.1  mrg 	  continue
   7103      1.1  mrg 	  ;;
   7104      1.1  mrg 	weak)
   7105      1.1  mrg 	  func_append weak_libs " $arg"
   7106      1.1  mrg 	  prev=
   7107      1.1  mrg 	  continue
   7108      1.1  mrg 	  ;;
   7109  1.1.1.2  mrg 	xassembler)
   7110  1.1.1.2  mrg 	  func_append compiler_flags " -Xassembler $qarg"
   7111  1.1.1.2  mrg 	  prev=
   7112  1.1.1.2  mrg 	  func_append compile_command " -Xassembler $qarg"
   7113  1.1.1.2  mrg 	  func_append finalize_command " -Xassembler $qarg"
   7114  1.1.1.2  mrg 	  continue
   7115  1.1.1.2  mrg 	  ;;
   7116      1.1  mrg 	xcclinker)
   7117      1.1  mrg 	  func_append linker_flags " $qarg"
   7118      1.1  mrg 	  func_append compiler_flags " $qarg"
   7119      1.1  mrg 	  prev=
   7120      1.1  mrg 	  func_append compile_command " $qarg"
   7121      1.1  mrg 	  func_append finalize_command " $qarg"
   7122      1.1  mrg 	  continue
   7123      1.1  mrg 	  ;;
   7124      1.1  mrg 	xcompiler)
   7125      1.1  mrg 	  func_append compiler_flags " $qarg"
   7126      1.1  mrg 	  prev=
   7127      1.1  mrg 	  func_append compile_command " $qarg"
   7128      1.1  mrg 	  func_append finalize_command " $qarg"
   7129      1.1  mrg 	  continue
   7130      1.1  mrg 	  ;;
   7131      1.1  mrg 	xlinker)
   7132      1.1  mrg 	  func_append linker_flags " $qarg"
   7133      1.1  mrg 	  func_append compiler_flags " $wl$qarg"
   7134      1.1  mrg 	  prev=
   7135      1.1  mrg 	  func_append compile_command " $wl$qarg"
   7136      1.1  mrg 	  func_append finalize_command " $wl$qarg"
   7137      1.1  mrg 	  continue
   7138      1.1  mrg 	  ;;
   7139      1.1  mrg 	*)
   7140      1.1  mrg 	  eval "$prev=\"\$arg\""
   7141      1.1  mrg 	  prev=
   7142      1.1  mrg 	  continue
   7143      1.1  mrg 	  ;;
   7144      1.1  mrg 	esac
   7145      1.1  mrg       fi # test -n "$prev"
   7146      1.1  mrg 
   7147      1.1  mrg       prevarg=$arg
   7148      1.1  mrg 
   7149      1.1  mrg       case $arg in
   7150      1.1  mrg       -all-static)
   7151      1.1  mrg 	if test -n "$link_static_flag"; then
   7152      1.1  mrg 	  # See comment for -static flag below, for more details.
   7153      1.1  mrg 	  func_append compile_command " $link_static_flag"
   7154      1.1  mrg 	  func_append finalize_command " $link_static_flag"
   7155      1.1  mrg 	fi
   7156      1.1  mrg 	continue
   7157      1.1  mrg 	;;
   7158      1.1  mrg 
   7159      1.1  mrg       -allow-undefined)
   7160      1.1  mrg 	# FIXME: remove this flag sometime in the future.
   7161      1.1  mrg 	func_fatal_error "'-allow-undefined' must not be used because it is the default"
   7162      1.1  mrg 	;;
   7163      1.1  mrg 
   7164      1.1  mrg       -avoid-version)
   7165      1.1  mrg 	avoid_version=yes
   7166      1.1  mrg 	continue
   7167      1.1  mrg 	;;
   7168      1.1  mrg 
   7169      1.1  mrg       -bindir)
   7170      1.1  mrg 	prev=bindir
   7171      1.1  mrg 	continue
   7172      1.1  mrg 	;;
   7173      1.1  mrg 
   7174      1.1  mrg       -dlopen)
   7175      1.1  mrg 	prev=dlfiles
   7176      1.1  mrg 	continue
   7177      1.1  mrg 	;;
   7178      1.1  mrg 
   7179      1.1  mrg       -dlpreopen)
   7180      1.1  mrg 	prev=dlprefiles
   7181      1.1  mrg 	continue
   7182      1.1  mrg 	;;
   7183      1.1  mrg 
   7184      1.1  mrg       -export-dynamic)
   7185      1.1  mrg 	export_dynamic=yes
   7186      1.1  mrg 	continue
   7187      1.1  mrg 	;;
   7188      1.1  mrg 
   7189      1.1  mrg       -export-symbols | -export-symbols-regex)
   7190      1.1  mrg 	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
   7191      1.1  mrg 	  func_fatal_error "more than one -exported-symbols argument is not allowed"
   7192      1.1  mrg 	fi
   7193      1.1  mrg 	if test X-export-symbols = "X$arg"; then
   7194      1.1  mrg 	  prev=expsyms
   7195      1.1  mrg 	else
   7196      1.1  mrg 	  prev=expsyms_regex
   7197      1.1  mrg 	fi
   7198      1.1  mrg 	continue
   7199      1.1  mrg 	;;
   7200      1.1  mrg 
   7201      1.1  mrg       -framework)
   7202      1.1  mrg 	prev=framework
   7203      1.1  mrg 	continue
   7204      1.1  mrg 	;;
   7205      1.1  mrg 
   7206      1.1  mrg       -inst-prefix-dir)
   7207      1.1  mrg 	prev=inst_prefix
   7208      1.1  mrg 	continue
   7209      1.1  mrg 	;;
   7210      1.1  mrg 
   7211      1.1  mrg       # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
   7212      1.1  mrg       # so, if we see these flags be careful not to treat them like -L
   7213      1.1  mrg       -L[A-Z][A-Z]*:*)
   7214      1.1  mrg 	case $with_gcc/$host in
   7215      1.1  mrg 	no/*-*-irix* | /*-*-irix*)
   7216      1.1  mrg 	  func_append compile_command " $arg"
   7217      1.1  mrg 	  func_append finalize_command " $arg"
   7218      1.1  mrg 	  ;;
   7219      1.1  mrg 	esac
   7220      1.1  mrg 	continue
   7221      1.1  mrg 	;;
   7222      1.1  mrg 
   7223      1.1  mrg       -L*)
   7224      1.1  mrg 	func_stripname "-L" '' "$arg"
   7225      1.1  mrg 	if test -z "$func_stripname_result"; then
   7226      1.1  mrg 	  if test "$#" -gt 0; then
   7227      1.1  mrg 	    func_fatal_error "require no space between '-L' and '$1'"
   7228      1.1  mrg 	  else
   7229      1.1  mrg 	    func_fatal_error "need path for '-L' option"
   7230      1.1  mrg 	  fi
   7231      1.1  mrg 	fi
   7232      1.1  mrg 	func_resolve_sysroot "$func_stripname_result"
   7233      1.1  mrg 	dir=$func_resolve_sysroot_result
   7234      1.1  mrg 	# We need an absolute path.
   7235      1.1  mrg 	case $dir in
   7236      1.1  mrg 	[\\/]* | [A-Za-z]:[\\/]*) ;;
   7237      1.1  mrg 	*)
   7238      1.1  mrg 	  absdir=`cd "$dir" && pwd`
   7239      1.1  mrg 	  test -z "$absdir" && \
   7240      1.1  mrg 	    func_fatal_error "cannot determine absolute directory name of '$dir'"
   7241      1.1  mrg 	  dir=$absdir
   7242      1.1  mrg 	  ;;
   7243      1.1  mrg 	esac
   7244      1.1  mrg 	case "$deplibs " in
   7245      1.1  mrg 	*" -L$dir "* | *" $arg "*)
   7246      1.1  mrg 	  # Will only happen for absolute or sysroot arguments
   7247      1.1  mrg 	  ;;
   7248      1.1  mrg 	*)
   7249      1.1  mrg 	  # Preserve sysroot, but never include relative directories
   7250      1.1  mrg 	  case $dir in
   7251      1.1  mrg 	    [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;;
   7252      1.1  mrg 	    *) func_append deplibs " -L$dir" ;;
   7253      1.1  mrg 	  esac
   7254      1.1  mrg 	  func_append lib_search_path " $dir"
   7255      1.1  mrg 	  ;;
   7256      1.1  mrg 	esac
   7257      1.1  mrg 	case $host in
   7258      1.1  mrg 	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
   7259      1.1  mrg 	  testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'`
   7260      1.1  mrg 	  case :$dllsearchpath: in
   7261      1.1  mrg 	  *":$dir:"*) ;;
   7262      1.1  mrg 	  ::) dllsearchpath=$dir;;
   7263      1.1  mrg 	  *) func_append dllsearchpath ":$dir";;
   7264      1.1  mrg 	  esac
   7265      1.1  mrg 	  case :$dllsearchpath: in
   7266      1.1  mrg 	  *":$testbindir:"*) ;;
   7267      1.1  mrg 	  ::) dllsearchpath=$testbindir;;
   7268      1.1  mrg 	  *) func_append dllsearchpath ":$testbindir";;
   7269      1.1  mrg 	  esac
   7270      1.1  mrg 	  ;;
   7271      1.1  mrg 	esac
   7272      1.1  mrg 	continue
   7273      1.1  mrg 	;;
   7274      1.1  mrg 
   7275      1.1  mrg       -l*)
   7276      1.1  mrg 	if test X-lc = "X$arg" || test X-lm = "X$arg"; then
   7277      1.1  mrg 	  case $host in
   7278      1.1  mrg 	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*)
   7279      1.1  mrg 	    # These systems don't actually have a C or math library (as such)
   7280      1.1  mrg 	    continue
   7281      1.1  mrg 	    ;;
   7282      1.1  mrg 	  *-*-os2*)
   7283      1.1  mrg 	    # These systems don't actually have a C library (as such)
   7284      1.1  mrg 	    test X-lc = "X$arg" && continue
   7285      1.1  mrg 	    ;;
   7286  1.1.1.2  mrg 	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig* | *-*-midnightbsd*)
   7287      1.1  mrg 	    # Do not include libc due to us having libc/libc_r.
   7288      1.1  mrg 	    test X-lc = "X$arg" && continue
   7289      1.1  mrg 	    ;;
   7290      1.1  mrg 	  *-*-rhapsody* | *-*-darwin1.[012])
   7291      1.1  mrg 	    # Rhapsody C and math libraries are in the System framework
   7292      1.1  mrg 	    func_append deplibs " System.ltframework"
   7293      1.1  mrg 	    continue
   7294      1.1  mrg 	    ;;
   7295      1.1  mrg 	  *-*-sco3.2v5* | *-*-sco5v6*)
   7296      1.1  mrg 	    # Causes problems with __ctype
   7297      1.1  mrg 	    test X-lc = "X$arg" && continue
   7298      1.1  mrg 	    ;;
   7299      1.1  mrg 	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
   7300      1.1  mrg 	    # Compiler inserts libc in the correct place for threads to work
   7301      1.1  mrg 	    test X-lc = "X$arg" && continue
   7302      1.1  mrg 	    ;;
   7303      1.1  mrg 	  esac
   7304      1.1  mrg 	elif test X-lc_r = "X$arg"; then
   7305      1.1  mrg 	 case $host in
   7306  1.1.1.2  mrg 	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig* | *-*-midnightbsd*)
   7307      1.1  mrg 	   # Do not include libc_r directly, use -pthread flag.
   7308      1.1  mrg 	   continue
   7309      1.1  mrg 	   ;;
   7310      1.1  mrg 	 esac
   7311      1.1  mrg 	fi
   7312      1.1  mrg 	func_append deplibs " $arg"
   7313      1.1  mrg 	continue
   7314      1.1  mrg 	;;
   7315      1.1  mrg 
   7316      1.1  mrg       -mllvm)
   7317      1.1  mrg 	prev=mllvm
   7318      1.1  mrg 	continue
   7319      1.1  mrg 	;;
   7320      1.1  mrg 
   7321      1.1  mrg       -module)
   7322      1.1  mrg 	module=yes
   7323      1.1  mrg 	continue
   7324      1.1  mrg 	;;
   7325      1.1  mrg 
   7326      1.1  mrg       # Tru64 UNIX uses -model [arg] to determine the layout of C++
   7327      1.1  mrg       # classes, name mangling, and exception handling.
   7328      1.1  mrg       # Darwin uses the -arch flag to determine output architecture.
   7329      1.1  mrg       -model|-arch|-isysroot|--sysroot)
   7330      1.1  mrg 	func_append compiler_flags " $arg"
   7331      1.1  mrg 	func_append compile_command " $arg"
   7332      1.1  mrg 	func_append finalize_command " $arg"
   7333      1.1  mrg 	prev=xcompiler
   7334      1.1  mrg 	continue
   7335      1.1  mrg 	;;
   7336  1.1.1.2  mrg      # Solaris ld rejects as of 11.4. Refer to Oracle bug 22985199.
   7337  1.1.1.2  mrg      -pthread)
   7338  1.1.1.2  mrg 	case $host in
   7339  1.1.1.2  mrg 	  *solaris2*) ;;
   7340  1.1.1.2  mrg 	  *)
   7341  1.1.1.2  mrg 	    case "$new_inherited_linker_flags " in
   7342  1.1.1.2  mrg 	        *" $arg "*) ;;
   7343  1.1.1.2  mrg 	        * ) func_append new_inherited_linker_flags " $arg" ;;
   7344  1.1.1.2  mrg 	    esac
   7345  1.1.1.2  mrg 	  ;;
   7346  1.1.1.2  mrg 	esac
   7347  1.1.1.2  mrg 	continue
   7348  1.1.1.2  mrg 	;;
   7349  1.1.1.2  mrg       -mt|-mthreads|-kthread|-Kthread|-pthreads|--thread-safe \
   7350      1.1  mrg       |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
   7351      1.1  mrg 	func_append compiler_flags " $arg"
   7352      1.1  mrg 	func_append compile_command " $arg"
   7353      1.1  mrg 	func_append finalize_command " $arg"
   7354      1.1  mrg 	case "$new_inherited_linker_flags " in
   7355      1.1  mrg 	    *" $arg "*) ;;
   7356      1.1  mrg 	    * ) func_append new_inherited_linker_flags " $arg" ;;
   7357      1.1  mrg 	esac
   7358      1.1  mrg 	continue
   7359      1.1  mrg 	;;
   7360      1.1  mrg 
   7361      1.1  mrg       -multi_module)
   7362      1.1  mrg 	single_module=$wl-multi_module
   7363      1.1  mrg 	continue
   7364      1.1  mrg 	;;
   7365      1.1  mrg 
   7366      1.1  mrg       -no-fast-install)
   7367      1.1  mrg 	fast_install=no
   7368      1.1  mrg 	continue
   7369      1.1  mrg 	;;
   7370      1.1  mrg 
   7371      1.1  mrg       -no-install)
   7372      1.1  mrg 	case $host in
   7373      1.1  mrg 	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
   7374      1.1  mrg 	  # The PATH hackery in wrapper scripts is required on Windows
   7375      1.1  mrg 	  # and Darwin in order for the loader to find any dlls it needs.
   7376      1.1  mrg 	  func_warning "'-no-install' is ignored for $host"
   7377      1.1  mrg 	  func_warning "assuming '-no-fast-install' instead"
   7378      1.1  mrg 	  fast_install=no
   7379      1.1  mrg 	  ;;
   7380      1.1  mrg 	*) no_install=yes ;;
   7381      1.1  mrg 	esac
   7382      1.1  mrg 	continue
   7383      1.1  mrg 	;;
   7384      1.1  mrg 
   7385      1.1  mrg       -no-undefined)
   7386      1.1  mrg 	allow_undefined=no
   7387      1.1  mrg 	continue
   7388      1.1  mrg 	;;
   7389      1.1  mrg 
   7390      1.1  mrg       -objectlist)
   7391      1.1  mrg 	prev=objectlist
   7392      1.1  mrg 	continue
   7393      1.1  mrg 	;;
   7394      1.1  mrg 
   7395      1.1  mrg       -os2dllname)
   7396      1.1  mrg 	prev=os2dllname
   7397      1.1  mrg 	continue
   7398      1.1  mrg 	;;
   7399      1.1  mrg 
   7400      1.1  mrg       -o) prev=output ;;
   7401      1.1  mrg 
   7402      1.1  mrg       -precious-files-regex)
   7403      1.1  mrg 	prev=precious_regex
   7404      1.1  mrg 	continue
   7405      1.1  mrg 	;;
   7406      1.1  mrg 
   7407      1.1  mrg       -release)
   7408      1.1  mrg 	prev=release
   7409      1.1  mrg 	continue
   7410      1.1  mrg 	;;
   7411      1.1  mrg 
   7412      1.1  mrg       -rpath)
   7413      1.1  mrg 	prev=rpath
   7414      1.1  mrg 	continue
   7415      1.1  mrg 	;;
   7416      1.1  mrg 
   7417      1.1  mrg       -R)
   7418      1.1  mrg 	prev=xrpath
   7419      1.1  mrg 	continue
   7420      1.1  mrg 	;;
   7421      1.1  mrg 
   7422      1.1  mrg       -R*)
   7423      1.1  mrg 	func_stripname '-R' '' "$arg"
   7424      1.1  mrg 	dir=$func_stripname_result
   7425      1.1  mrg 	# We need an absolute path.
   7426      1.1  mrg 	case $dir in
   7427      1.1  mrg 	[\\/]* | [A-Za-z]:[\\/]*) ;;
   7428      1.1  mrg 	=*)
   7429      1.1  mrg 	  func_stripname '=' '' "$dir"
   7430      1.1  mrg 	  dir=$lt_sysroot$func_stripname_result
   7431      1.1  mrg 	  ;;
   7432      1.1  mrg 	*)
   7433      1.1  mrg 	  func_fatal_error "only absolute run-paths are allowed"
   7434      1.1  mrg 	  ;;
   7435      1.1  mrg 	esac
   7436      1.1  mrg 	case "$xrpath " in
   7437      1.1  mrg 	*" $dir "*) ;;
   7438      1.1  mrg 	*) func_append xrpath " $dir" ;;
   7439      1.1  mrg 	esac
   7440      1.1  mrg 	continue
   7441      1.1  mrg 	;;
   7442      1.1  mrg 
   7443      1.1  mrg       -shared)
   7444      1.1  mrg 	# The effects of -shared are defined in a previous loop.
   7445      1.1  mrg 	continue
   7446      1.1  mrg 	;;
   7447      1.1  mrg 
   7448      1.1  mrg       -shrext)
   7449      1.1  mrg 	prev=shrext
   7450      1.1  mrg 	continue
   7451      1.1  mrg 	;;
   7452      1.1  mrg 
   7453      1.1  mrg       -static | -static-libtool-libs)
   7454      1.1  mrg 	# The effects of -static are defined in a previous loop.
   7455      1.1  mrg 	# We used to do the same as -all-static on platforms that
   7456      1.1  mrg 	# didn't have a PIC flag, but the assumption that the effects
   7457      1.1  mrg 	# would be equivalent was wrong.  It would break on at least
   7458      1.1  mrg 	# Digital Unix and AIX.
   7459      1.1  mrg 	continue
   7460      1.1  mrg 	;;
   7461      1.1  mrg 
   7462      1.1  mrg       -thread-safe)
   7463      1.1  mrg 	thread_safe=yes
   7464      1.1  mrg 	continue
   7465      1.1  mrg 	;;
   7466      1.1  mrg 
   7467      1.1  mrg       -version-info)
   7468      1.1  mrg 	prev=vinfo
   7469      1.1  mrg 	continue
   7470      1.1  mrg 	;;
   7471      1.1  mrg 
   7472      1.1  mrg       -version-number)
   7473      1.1  mrg 	prev=vinfo
   7474      1.1  mrg 	vinfo_number=yes
   7475      1.1  mrg 	continue
   7476      1.1  mrg 	;;
   7477      1.1  mrg 
   7478      1.1  mrg       -weak)
   7479      1.1  mrg         prev=weak
   7480      1.1  mrg 	continue
   7481      1.1  mrg 	;;
   7482      1.1  mrg 
   7483      1.1  mrg       -Wc,*)
   7484      1.1  mrg 	func_stripname '-Wc,' '' "$arg"
   7485      1.1  mrg 	args=$func_stripname_result
   7486      1.1  mrg 	arg=
   7487      1.1  mrg 	save_ifs=$IFS; IFS=,
   7488      1.1  mrg 	for flag in $args; do
   7489      1.1  mrg 	  IFS=$save_ifs
   7490  1.1.1.2  mrg           func_quote_arg pretty "$flag"
   7491  1.1.1.2  mrg 	  func_append arg " $func_quote_arg_result"
   7492  1.1.1.2  mrg 	  func_append compiler_flags " $func_quote_arg_result"
   7493      1.1  mrg 	done
   7494      1.1  mrg 	IFS=$save_ifs
   7495      1.1  mrg 	func_stripname ' ' '' "$arg"
   7496      1.1  mrg 	arg=$func_stripname_result
   7497      1.1  mrg 	;;
   7498      1.1  mrg 
   7499      1.1  mrg       -Wl,*)
   7500      1.1  mrg 	func_stripname '-Wl,' '' "$arg"
   7501      1.1  mrg 	args=$func_stripname_result
   7502      1.1  mrg 	arg=
   7503      1.1  mrg 	save_ifs=$IFS; IFS=,
   7504      1.1  mrg 	for flag in $args; do
   7505      1.1  mrg 	  IFS=$save_ifs
   7506  1.1.1.2  mrg           func_quote_arg pretty "$flag"
   7507  1.1.1.2  mrg 	  func_append arg " $wl$func_quote_arg_result"
   7508  1.1.1.2  mrg 	  func_append compiler_flags " $wl$func_quote_arg_result"
   7509  1.1.1.2  mrg 	  func_append linker_flags " $func_quote_arg_result"
   7510      1.1  mrg 	done
   7511      1.1  mrg 	IFS=$save_ifs
   7512      1.1  mrg 	func_stripname ' ' '' "$arg"
   7513      1.1  mrg 	arg=$func_stripname_result
   7514      1.1  mrg 	;;
   7515      1.1  mrg 
   7516  1.1.1.2  mrg       -Xassembler)
   7517  1.1.1.2  mrg         prev=xassembler
   7518  1.1.1.2  mrg         continue
   7519  1.1.1.2  mrg         ;;
   7520  1.1.1.2  mrg 
   7521      1.1  mrg       -Xcompiler)
   7522      1.1  mrg 	prev=xcompiler
   7523      1.1  mrg 	continue
   7524      1.1  mrg 	;;
   7525      1.1  mrg 
   7526      1.1  mrg       -Xlinker)
   7527      1.1  mrg 	prev=xlinker
   7528      1.1  mrg 	continue
   7529      1.1  mrg 	;;
   7530      1.1  mrg 
   7531      1.1  mrg       -XCClinker)
   7532      1.1  mrg 	prev=xcclinker
   7533      1.1  mrg 	continue
   7534      1.1  mrg 	;;
   7535      1.1  mrg 
   7536      1.1  mrg       # -msg_* for osf cc
   7537      1.1  mrg       -msg_*)
   7538  1.1.1.2  mrg 	func_quote_arg pretty "$arg"
   7539  1.1.1.2  mrg 	arg=$func_quote_arg_result
   7540      1.1  mrg 	;;
   7541      1.1  mrg 
   7542      1.1  mrg       # Flags to be passed through unchanged, with rationale:
   7543      1.1  mrg       # -64, -mips[0-9]      enable 64-bit mode for the SGI compiler
   7544      1.1  mrg       # -r[0-9][0-9]*        specify processor for the SGI compiler
   7545      1.1  mrg       # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler
   7546      1.1  mrg       # +DA*, +DD*           enable 64-bit mode for the HP compiler
   7547      1.1  mrg       # -q*                  compiler args for the IBM compiler
   7548      1.1  mrg       # -m*, -t[45]*, -txscale* architecture-specific flags for GCC
   7549      1.1  mrg       # -F/path              path to uninstalled frameworks, gcc on darwin
   7550      1.1  mrg       # -p, -pg, --coverage, -fprofile-*  profiling flags for GCC
   7551      1.1  mrg       # -fstack-protector*   stack protector flags for GCC
   7552      1.1  mrg       # @file                GCC response files
   7553      1.1  mrg       # -tp=*                Portland pgcc target processor selection
   7554      1.1  mrg       # --sysroot=*          for sysroot support
   7555      1.1  mrg       # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
   7556  1.1.1.2  mrg       # -specs=*             GCC specs files
   7557      1.1  mrg       # -stdlib=*            select c++ std lib with clang
   7558  1.1.1.2  mrg       # -fsanitize=*         Clang/GCC memory and address sanitizer
   7559  1.1.1.2  mrg       # -fuse-ld=*           Linker select flags for GCC
   7560  1.1.1.2  mrg       # -Wa,*                Pass flags directly to the assembler
   7561      1.1  mrg       -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
   7562      1.1  mrg       -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
   7563  1.1.1.2  mrg       -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \
   7564  1.1.1.2  mrg       -specs=*|-fsanitize=*|-fuse-ld=*|-Wa,*)
   7565  1.1.1.2  mrg         func_quote_arg pretty "$arg"
   7566  1.1.1.2  mrg 	arg=$func_quote_arg_result
   7567      1.1  mrg         func_append compile_command " $arg"
   7568      1.1  mrg         func_append finalize_command " $arg"
   7569      1.1  mrg         func_append compiler_flags " $arg"
   7570      1.1  mrg         continue
   7571      1.1  mrg         ;;
   7572      1.1  mrg 
   7573      1.1  mrg       -Z*)
   7574      1.1  mrg         if test os2 = "`expr $host : '.*\(os2\)'`"; then
   7575      1.1  mrg           # OS/2 uses -Zxxx to specify OS/2-specific options
   7576      1.1  mrg 	  compiler_flags="$compiler_flags $arg"
   7577      1.1  mrg 	  func_append compile_command " $arg"
   7578      1.1  mrg 	  func_append finalize_command " $arg"
   7579      1.1  mrg 	  case $arg in
   7580      1.1  mrg 	  -Zlinker | -Zstack)
   7581      1.1  mrg 	    prev=xcompiler
   7582      1.1  mrg 	    ;;
   7583      1.1  mrg 	  esac
   7584      1.1  mrg 	  continue
   7585      1.1  mrg         else
   7586      1.1  mrg 	  # Otherwise treat like 'Some other compiler flag' below
   7587  1.1.1.2  mrg 	  func_quote_arg pretty "$arg"
   7588  1.1.1.2  mrg 	  arg=$func_quote_arg_result
   7589      1.1  mrg         fi
   7590      1.1  mrg 	;;
   7591      1.1  mrg 
   7592      1.1  mrg       # Some other compiler flag.
   7593      1.1  mrg       -* | +*)
   7594  1.1.1.2  mrg         func_quote_arg pretty "$arg"
   7595  1.1.1.2  mrg 	arg=$func_quote_arg_result
   7596      1.1  mrg 	;;
   7597      1.1  mrg 
   7598      1.1  mrg       *.$objext)
   7599      1.1  mrg 	# A standard object.
   7600      1.1  mrg 	func_append objs " $arg"
   7601      1.1  mrg 	;;
   7602      1.1  mrg 
   7603      1.1  mrg       *.lo)
   7604      1.1  mrg 	# A libtool-controlled object.
   7605      1.1  mrg 
   7606      1.1  mrg 	# Check to see that this really is a libtool object.
   7607      1.1  mrg 	if func_lalib_unsafe_p "$arg"; then
   7608      1.1  mrg 	  pic_object=
   7609      1.1  mrg 	  non_pic_object=
   7610      1.1  mrg 
   7611      1.1  mrg 	  # Read the .lo file
   7612      1.1  mrg 	  func_source "$arg"
   7613      1.1  mrg 
   7614      1.1  mrg 	  if test -z "$pic_object" ||
   7615      1.1  mrg 	     test -z "$non_pic_object" ||
   7616      1.1  mrg 	     test none = "$pic_object" &&
   7617      1.1  mrg 	     test none = "$non_pic_object"; then
   7618      1.1  mrg 	    func_fatal_error "cannot find name of object for '$arg'"
   7619      1.1  mrg 	  fi
   7620      1.1  mrg 
   7621      1.1  mrg 	  # Extract subdirectory from the argument.
   7622      1.1  mrg 	  func_dirname "$arg" "/" ""
   7623      1.1  mrg 	  xdir=$func_dirname_result
   7624      1.1  mrg 
   7625      1.1  mrg 	  test none = "$pic_object" || {
   7626      1.1  mrg 	    # Prepend the subdirectory the object is found in.
   7627      1.1  mrg 	    pic_object=$xdir$pic_object
   7628      1.1  mrg 
   7629      1.1  mrg 	    if test dlfiles = "$prev"; then
   7630      1.1  mrg 	      if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then
   7631      1.1  mrg 		func_append dlfiles " $pic_object"
   7632      1.1  mrg 		prev=
   7633      1.1  mrg 		continue
   7634      1.1  mrg 	      else
   7635      1.1  mrg 		# If libtool objects are unsupported, then we need to preload.
   7636      1.1  mrg 		prev=dlprefiles
   7637      1.1  mrg 	      fi
   7638      1.1  mrg 	    fi
   7639      1.1  mrg 
   7640      1.1  mrg 	    # CHECK ME:  I think I busted this.  -Ossama
   7641      1.1  mrg 	    if test dlprefiles = "$prev"; then
   7642      1.1  mrg 	      # Preload the old-style object.
   7643      1.1  mrg 	      func_append dlprefiles " $pic_object"
   7644      1.1  mrg 	      prev=
   7645      1.1  mrg 	    fi
   7646      1.1  mrg 
   7647      1.1  mrg 	    # A PIC object.
   7648      1.1  mrg 	    func_append libobjs " $pic_object"
   7649      1.1  mrg 	    arg=$pic_object
   7650      1.1  mrg 	  }
   7651      1.1  mrg 
   7652      1.1  mrg 	  # Non-PIC object.
   7653      1.1  mrg 	  if test none != "$non_pic_object"; then
   7654      1.1  mrg 	    # Prepend the subdirectory the object is found in.
   7655      1.1  mrg 	    non_pic_object=$xdir$non_pic_object
   7656      1.1  mrg 
   7657      1.1  mrg 	    # A standard non-PIC object
   7658      1.1  mrg 	    func_append non_pic_objects " $non_pic_object"
   7659      1.1  mrg 	    if test -z "$pic_object" || test none = "$pic_object"; then
   7660      1.1  mrg 	      arg=$non_pic_object
   7661      1.1  mrg 	    fi
   7662      1.1  mrg 	  else
   7663      1.1  mrg 	    # If the PIC object exists, use it instead.
   7664      1.1  mrg 	    # $xdir was prepended to $pic_object above.
   7665      1.1  mrg 	    non_pic_object=$pic_object
   7666      1.1  mrg 	    func_append non_pic_objects " $non_pic_object"
   7667      1.1  mrg 	  fi
   7668      1.1  mrg 	else
   7669      1.1  mrg 	  # Only an error if not doing a dry-run.
   7670      1.1  mrg 	  if $opt_dry_run; then
   7671      1.1  mrg 	    # Extract subdirectory from the argument.
   7672      1.1  mrg 	    func_dirname "$arg" "/" ""
   7673      1.1  mrg 	    xdir=$func_dirname_result
   7674      1.1  mrg 
   7675      1.1  mrg 	    func_lo2o "$arg"
   7676      1.1  mrg 	    pic_object=$xdir$objdir/$func_lo2o_result
   7677      1.1  mrg 	    non_pic_object=$xdir$func_lo2o_result
   7678      1.1  mrg 	    func_append libobjs " $pic_object"
   7679      1.1  mrg 	    func_append non_pic_objects " $non_pic_object"
   7680      1.1  mrg 	  else
   7681      1.1  mrg 	    func_fatal_error "'$arg' is not a valid libtool object"
   7682      1.1  mrg 	  fi
   7683      1.1  mrg 	fi
   7684      1.1  mrg 	;;
   7685      1.1  mrg 
   7686      1.1  mrg       *.$libext)
   7687      1.1  mrg 	# An archive.
   7688      1.1  mrg 	func_append deplibs " $arg"
   7689      1.1  mrg 	func_append old_deplibs " $arg"
   7690      1.1  mrg 	continue
   7691      1.1  mrg 	;;
   7692      1.1  mrg 
   7693      1.1  mrg       *.la)
   7694      1.1  mrg 	# A libtool-controlled library.
   7695      1.1  mrg 
   7696      1.1  mrg 	func_resolve_sysroot "$arg"
   7697      1.1  mrg 	if test dlfiles = "$prev"; then
   7698      1.1  mrg 	  # This library was specified with -dlopen.
   7699      1.1  mrg 	  func_append dlfiles " $func_resolve_sysroot_result"
   7700      1.1  mrg 	  prev=
   7701      1.1  mrg 	elif test dlprefiles = "$prev"; then
   7702      1.1  mrg 	  # The library was specified with -dlpreopen.
   7703      1.1  mrg 	  func_append dlprefiles " $func_resolve_sysroot_result"
   7704      1.1  mrg 	  prev=
   7705      1.1  mrg 	else
   7706      1.1  mrg 	  func_append deplibs " $func_resolve_sysroot_result"
   7707      1.1  mrg 	fi
   7708      1.1  mrg 	continue
   7709      1.1  mrg 	;;
   7710      1.1  mrg 
   7711      1.1  mrg       # Some other compiler argument.
   7712      1.1  mrg       *)
   7713      1.1  mrg 	# Unknown arguments in both finalize_command and compile_command need
   7714      1.1  mrg 	# to be aesthetically quoted because they are evaled later.
   7715  1.1.1.2  mrg 	func_quote_arg pretty "$arg"
   7716  1.1.1.2  mrg 	arg=$func_quote_arg_result
   7717      1.1  mrg 	;;
   7718      1.1  mrg       esac # arg
   7719      1.1  mrg 
   7720      1.1  mrg       # Now actually substitute the argument into the commands.
   7721      1.1  mrg       if test -n "$arg"; then
   7722      1.1  mrg 	func_append compile_command " $arg"
   7723      1.1  mrg 	func_append finalize_command " $arg"
   7724      1.1  mrg       fi
   7725      1.1  mrg     done # argument parsing loop
   7726      1.1  mrg 
   7727      1.1  mrg     test -n "$prev" && \
   7728      1.1  mrg       func_fatal_help "the '$prevarg' option requires an argument"
   7729      1.1  mrg 
   7730      1.1  mrg     if test yes = "$export_dynamic" && test -n "$export_dynamic_flag_spec"; then
   7731      1.1  mrg       eval arg=\"$export_dynamic_flag_spec\"
   7732      1.1  mrg       func_append compile_command " $arg"
   7733      1.1  mrg       func_append finalize_command " $arg"
   7734      1.1  mrg     fi
   7735      1.1  mrg 
   7736      1.1  mrg     oldlibs=
   7737      1.1  mrg     # calculate the name of the file, without its directory
   7738      1.1  mrg     func_basename "$output"
   7739      1.1  mrg     outputname=$func_basename_result
   7740      1.1  mrg     libobjs_save=$libobjs
   7741      1.1  mrg 
   7742      1.1  mrg     if test -n "$shlibpath_var"; then
   7743      1.1  mrg       # get the directories listed in $shlibpath_var
   7744      1.1  mrg       eval shlib_search_path=\`\$ECHO \"\$$shlibpath_var\" \| \$SED \'s/:/ /g\'\`
   7745      1.1  mrg     else
   7746      1.1  mrg       shlib_search_path=
   7747      1.1  mrg     fi
   7748      1.1  mrg     eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
   7749      1.1  mrg     eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
   7750      1.1  mrg 
   7751      1.1  mrg     # Definition is injected by LT_CONFIG during libtool generation.
   7752      1.1  mrg     func_munge_path_list sys_lib_dlsearch_path "$LT_SYS_LIBRARY_PATH"
   7753      1.1  mrg 
   7754      1.1  mrg     func_dirname "$output" "/" ""
   7755      1.1  mrg     output_objdir=$func_dirname_result$objdir
   7756      1.1  mrg     func_to_tool_file "$output_objdir/"
   7757      1.1  mrg     tool_output_objdir=$func_to_tool_file_result
   7758      1.1  mrg     # Create the object directory.
   7759      1.1  mrg     func_mkdir_p "$output_objdir"
   7760      1.1  mrg 
   7761      1.1  mrg     # Determine the type of output
   7762      1.1  mrg     case $output in
   7763      1.1  mrg     "")
   7764      1.1  mrg       func_fatal_help "you must specify an output file"
   7765      1.1  mrg       ;;
   7766      1.1  mrg     *.$libext) linkmode=oldlib ;;
   7767      1.1  mrg     *.lo | *.$objext) linkmode=obj ;;
   7768      1.1  mrg     *.la) linkmode=lib ;;
   7769      1.1  mrg     *) linkmode=prog ;; # Anything else should be a program.
   7770      1.1  mrg     esac
   7771      1.1  mrg 
   7772      1.1  mrg     specialdeplibs=
   7773      1.1  mrg 
   7774      1.1  mrg     libs=
   7775      1.1  mrg     # Find all interdependent deplibs by searching for libraries
   7776      1.1  mrg     # that are linked more than once (e.g. -la -lb -la)
   7777      1.1  mrg     for deplib in $deplibs; do
   7778      1.1  mrg       if $opt_preserve_dup_deps; then
   7779      1.1  mrg 	case "$libs " in
   7780      1.1  mrg 	*" $deplib "*) func_append specialdeplibs " $deplib" ;;
   7781      1.1  mrg 	esac
   7782      1.1  mrg       fi
   7783      1.1  mrg       func_append libs " $deplib"
   7784      1.1  mrg     done
   7785      1.1  mrg 
   7786      1.1  mrg     if test lib = "$linkmode"; then
   7787      1.1  mrg       libs="$predeps $libs $compiler_lib_search_path $postdeps"
   7788      1.1  mrg 
   7789      1.1  mrg       # Compute libraries that are listed more than once in $predeps
   7790      1.1  mrg       # $postdeps and mark them as special (i.e., whose duplicates are
   7791      1.1  mrg       # not to be eliminated).
   7792      1.1  mrg       pre_post_deps=
   7793      1.1  mrg       if $opt_duplicate_compiler_generated_deps; then
   7794      1.1  mrg 	for pre_post_dep in $predeps $postdeps; do
   7795      1.1  mrg 	  case "$pre_post_deps " in
   7796      1.1  mrg 	  *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;;
   7797      1.1  mrg 	  esac
   7798      1.1  mrg 	  func_append pre_post_deps " $pre_post_dep"
   7799      1.1  mrg 	done
   7800      1.1  mrg       fi
   7801      1.1  mrg       pre_post_deps=
   7802      1.1  mrg     fi
   7803      1.1  mrg 
   7804      1.1  mrg     deplibs=
   7805      1.1  mrg     newdependency_libs=
   7806      1.1  mrg     newlib_search_path=
   7807      1.1  mrg     need_relink=no # whether we're linking any uninstalled libtool libraries
   7808      1.1  mrg     notinst_deplibs= # not-installed libtool libraries
   7809      1.1  mrg     notinst_path= # paths that contain not-installed libtool libraries
   7810      1.1  mrg 
   7811      1.1  mrg     case $linkmode in
   7812      1.1  mrg     lib)
   7813      1.1  mrg 	passes="conv dlpreopen link"
   7814      1.1  mrg 	for file in $dlfiles $dlprefiles; do
   7815      1.1  mrg 	  case $file in
   7816      1.1  mrg 	  *.la) ;;
   7817      1.1  mrg 	  *)
   7818      1.1  mrg 	    func_fatal_help "libraries can '-dlopen' only libtool libraries: $file"
   7819      1.1  mrg 	    ;;
   7820      1.1  mrg 	  esac
   7821      1.1  mrg 	done
   7822      1.1  mrg 	;;
   7823      1.1  mrg     prog)
   7824      1.1  mrg 	compile_deplibs=
   7825      1.1  mrg 	finalize_deplibs=
   7826      1.1  mrg 	alldeplibs=false
   7827      1.1  mrg 	newdlfiles=
   7828      1.1  mrg 	newdlprefiles=
   7829      1.1  mrg 	passes="conv scan dlopen dlpreopen link"
   7830      1.1  mrg 	;;
   7831      1.1  mrg     *)  passes="conv"
   7832      1.1  mrg 	;;
   7833      1.1  mrg     esac
   7834      1.1  mrg 
   7835      1.1  mrg     for pass in $passes; do
   7836      1.1  mrg       # The preopen pass in lib mode reverses $deplibs; put it back here
   7837      1.1  mrg       # so that -L comes before libs that need it for instance...
   7838      1.1  mrg       if test lib,link = "$linkmode,$pass"; then
   7839      1.1  mrg 	## FIXME: Find the place where the list is rebuilt in the wrong
   7840      1.1  mrg 	##        order, and fix it there properly
   7841      1.1  mrg         tmp_deplibs=
   7842      1.1  mrg 	for deplib in $deplibs; do
   7843      1.1  mrg 	  tmp_deplibs="$deplib $tmp_deplibs"
   7844      1.1  mrg 	done
   7845      1.1  mrg 	deplibs=$tmp_deplibs
   7846      1.1  mrg       fi
   7847      1.1  mrg 
   7848      1.1  mrg       if test lib,link = "$linkmode,$pass" ||
   7849      1.1  mrg 	 test prog,scan = "$linkmode,$pass"; then
   7850      1.1  mrg 	libs=$deplibs
   7851      1.1  mrg 	deplibs=
   7852      1.1  mrg       fi
   7853      1.1  mrg       if test prog = "$linkmode"; then
   7854      1.1  mrg 	case $pass in
   7855      1.1  mrg 	dlopen) libs=$dlfiles ;;
   7856      1.1  mrg 	dlpreopen) libs=$dlprefiles ;;
   7857      1.1  mrg 	link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
   7858      1.1  mrg 	esac
   7859      1.1  mrg       fi
   7860      1.1  mrg       if test lib,dlpreopen = "$linkmode,$pass"; then
   7861      1.1  mrg 	# Collect and forward deplibs of preopened libtool libs
   7862      1.1  mrg 	for lib in $dlprefiles; do
   7863      1.1  mrg 	  # Ignore non-libtool-libs
   7864      1.1  mrg 	  dependency_libs=
   7865      1.1  mrg 	  func_resolve_sysroot "$lib"
   7866      1.1  mrg 	  case $lib in
   7867      1.1  mrg 	  *.la)	func_source "$func_resolve_sysroot_result" ;;
   7868      1.1  mrg 	  esac
   7869      1.1  mrg 
   7870      1.1  mrg 	  # Collect preopened libtool deplibs, except any this library
   7871      1.1  mrg 	  # has declared as weak libs
   7872      1.1  mrg 	  for deplib in $dependency_libs; do
   7873      1.1  mrg 	    func_basename "$deplib"
   7874      1.1  mrg             deplib_base=$func_basename_result
   7875      1.1  mrg 	    case " $weak_libs " in
   7876      1.1  mrg 	    *" $deplib_base "*) ;;
   7877      1.1  mrg 	    *) func_append deplibs " $deplib" ;;
   7878      1.1  mrg 	    esac
   7879      1.1  mrg 	  done
   7880      1.1  mrg 	done
   7881      1.1  mrg 	libs=$dlprefiles
   7882      1.1  mrg       fi
   7883      1.1  mrg       if test dlopen = "$pass"; then
   7884      1.1  mrg 	# Collect dlpreopened libraries
   7885      1.1  mrg 	save_deplibs=$deplibs
   7886      1.1  mrg 	deplibs=
   7887      1.1  mrg       fi
   7888      1.1  mrg 
   7889      1.1  mrg       for deplib in $libs; do
   7890      1.1  mrg 	lib=
   7891      1.1  mrg 	found=false
   7892      1.1  mrg 	case $deplib in
   7893      1.1  mrg 	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
   7894      1.1  mrg         |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
   7895      1.1  mrg 	  if test prog,link = "$linkmode,$pass"; then
   7896      1.1  mrg 	    compile_deplibs="$deplib $compile_deplibs"
   7897      1.1  mrg 	    finalize_deplibs="$deplib $finalize_deplibs"
   7898      1.1  mrg 	  else
   7899      1.1  mrg 	    func_append compiler_flags " $deplib"
   7900      1.1  mrg 	    if test lib = "$linkmode"; then
   7901      1.1  mrg 		case "$new_inherited_linker_flags " in
   7902      1.1  mrg 		    *" $deplib "*) ;;
   7903      1.1  mrg 		    * ) func_append new_inherited_linker_flags " $deplib" ;;
   7904      1.1  mrg 		esac
   7905      1.1  mrg 	    fi
   7906      1.1  mrg 	  fi
   7907      1.1  mrg 	  continue
   7908      1.1  mrg 	  ;;
   7909      1.1  mrg 	-l*)
   7910      1.1  mrg 	  if test lib != "$linkmode" && test prog != "$linkmode"; then
   7911      1.1  mrg 	    func_warning "'-l' is ignored for archives/objects"
   7912      1.1  mrg 	    continue
   7913      1.1  mrg 	  fi
   7914      1.1  mrg 	  func_stripname '-l' '' "$deplib"
   7915      1.1  mrg 	  name=$func_stripname_result
   7916      1.1  mrg 	  if test lib = "$linkmode"; then
   7917      1.1  mrg 	    searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
   7918      1.1  mrg 	  else
   7919      1.1  mrg 	    searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
   7920      1.1  mrg 	  fi
   7921      1.1  mrg 	  for searchdir in $searchdirs; do
   7922      1.1  mrg 	    for search_ext in .la $std_shrext .so .a; do
   7923      1.1  mrg 	      # Search the libtool library
   7924      1.1  mrg 	      lib=$searchdir/lib$name$search_ext
   7925      1.1  mrg 	      if test -f "$lib"; then
   7926      1.1  mrg 		if test .la = "$search_ext"; then
   7927      1.1  mrg 		  found=:
   7928      1.1  mrg 		else
   7929      1.1  mrg 		  found=false
   7930      1.1  mrg 		fi
   7931      1.1  mrg 		break 2
   7932      1.1  mrg 	      fi
   7933      1.1  mrg 	    done
   7934      1.1  mrg 	  done
   7935      1.1  mrg 	  if $found; then
   7936      1.1  mrg 	    # deplib is a libtool library
   7937      1.1  mrg 	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
   7938      1.1  mrg 	    # We need to do some special things here, and not later.
   7939      1.1  mrg 	    if test yes = "$allow_libtool_libs_with_static_runtimes"; then
   7940      1.1  mrg 	      case " $predeps $postdeps " in
   7941      1.1  mrg 	      *" $deplib "*)
   7942      1.1  mrg 		if func_lalib_p "$lib"; then
   7943      1.1  mrg 		  library_names=
   7944      1.1  mrg 		  old_library=
   7945      1.1  mrg 		  func_source "$lib"
   7946      1.1  mrg 		  for l in $old_library $library_names; do
   7947      1.1  mrg 		    ll=$l
   7948      1.1  mrg 		  done
   7949      1.1  mrg 		  if test "X$ll" = "X$old_library"; then # only static version available
   7950      1.1  mrg 		    found=false
   7951      1.1  mrg 		    func_dirname "$lib" "" "."
   7952      1.1  mrg 		    ladir=$func_dirname_result
   7953      1.1  mrg 		    lib=$ladir/$old_library
   7954      1.1  mrg 		    if test prog,link = "$linkmode,$pass"; then
   7955      1.1  mrg 		      compile_deplibs="$deplib $compile_deplibs"
   7956      1.1  mrg 		      finalize_deplibs="$deplib $finalize_deplibs"
   7957      1.1  mrg 		    else
   7958      1.1  mrg 		      deplibs="$deplib $deplibs"
   7959      1.1  mrg 		      test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs"
   7960      1.1  mrg 		    fi
   7961      1.1  mrg 		    continue
   7962      1.1  mrg 		  fi
   7963      1.1  mrg 		fi
   7964      1.1  mrg 		;;
   7965      1.1  mrg 	      *) ;;
   7966      1.1  mrg 	      esac
   7967      1.1  mrg 	    fi
   7968      1.1  mrg 	  else
   7969      1.1  mrg 	    # deplib doesn't seem to be a libtool library
   7970      1.1  mrg 	    if test prog,link = "$linkmode,$pass"; then
   7971      1.1  mrg 	      compile_deplibs="$deplib $compile_deplibs"
   7972      1.1  mrg 	      finalize_deplibs="$deplib $finalize_deplibs"
   7973      1.1  mrg 	    else
   7974      1.1  mrg 	      deplibs="$deplib $deplibs"
   7975      1.1  mrg 	      test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs"
   7976      1.1  mrg 	    fi
   7977      1.1  mrg 	    continue
   7978      1.1  mrg 	  fi
   7979      1.1  mrg 	  ;; # -l
   7980      1.1  mrg 	*.ltframework)
   7981      1.1  mrg 	  if test prog,link = "$linkmode,$pass"; then
   7982      1.1  mrg 	    compile_deplibs="$deplib $compile_deplibs"
   7983      1.1  mrg 	    finalize_deplibs="$deplib $finalize_deplibs"
   7984      1.1  mrg 	  else
   7985      1.1  mrg 	    deplibs="$deplib $deplibs"
   7986      1.1  mrg 	    if test lib = "$linkmode"; then
   7987      1.1  mrg 		case "$new_inherited_linker_flags " in
   7988      1.1  mrg 		    *" $deplib "*) ;;
   7989      1.1  mrg 		    * ) func_append new_inherited_linker_flags " $deplib" ;;
   7990      1.1  mrg 		esac
   7991      1.1  mrg 	    fi
   7992      1.1  mrg 	  fi
   7993      1.1  mrg 	  continue
   7994      1.1  mrg 	  ;;
   7995      1.1  mrg 	-L*)
   7996      1.1  mrg 	  case $linkmode in
   7997      1.1  mrg 	  lib)
   7998      1.1  mrg 	    deplibs="$deplib $deplibs"
   7999      1.1  mrg 	    test conv = "$pass" && continue
   8000      1.1  mrg 	    newdependency_libs="$deplib $newdependency_libs"
   8001      1.1  mrg 	    func_stripname '-L' '' "$deplib"
   8002      1.1  mrg 	    func_resolve_sysroot "$func_stripname_result"
   8003      1.1  mrg 	    func_append newlib_search_path " $func_resolve_sysroot_result"
   8004      1.1  mrg 	    ;;
   8005      1.1  mrg 	  prog)
   8006      1.1  mrg 	    if test conv = "$pass"; then
   8007      1.1  mrg 	      deplibs="$deplib $deplibs"
   8008      1.1  mrg 	      continue
   8009      1.1  mrg 	    fi
   8010      1.1  mrg 	    if test scan = "$pass"; then
   8011      1.1  mrg 	      deplibs="$deplib $deplibs"
   8012      1.1  mrg 	    else
   8013      1.1  mrg 	      compile_deplibs="$deplib $compile_deplibs"
   8014      1.1  mrg 	      finalize_deplibs="$deplib $finalize_deplibs"
   8015      1.1  mrg 	    fi
   8016      1.1  mrg 	    func_stripname '-L' '' "$deplib"
   8017      1.1  mrg 	    func_resolve_sysroot "$func_stripname_result"
   8018      1.1  mrg 	    func_append newlib_search_path " $func_resolve_sysroot_result"
   8019      1.1  mrg 	    ;;
   8020      1.1  mrg 	  *)
   8021      1.1  mrg 	    func_warning "'-L' is ignored for archives/objects"
   8022      1.1  mrg 	    ;;
   8023      1.1  mrg 	  esac # linkmode
   8024      1.1  mrg 	  continue
   8025      1.1  mrg 	  ;; # -L
   8026      1.1  mrg 	-R*)
   8027      1.1  mrg 	  if test link = "$pass"; then
   8028      1.1  mrg 	    func_stripname '-R' '' "$deplib"
   8029      1.1  mrg 	    func_resolve_sysroot "$func_stripname_result"
   8030      1.1  mrg 	    dir=$func_resolve_sysroot_result
   8031      1.1  mrg 	    # Make sure the xrpath contains only unique directories.
   8032      1.1  mrg 	    case "$xrpath " in
   8033      1.1  mrg 	    *" $dir "*) ;;
   8034      1.1  mrg 	    *) func_append xrpath " $dir" ;;
   8035      1.1  mrg 	    esac
   8036      1.1  mrg 	  fi
   8037      1.1  mrg 	  deplibs="$deplib $deplibs"
   8038      1.1  mrg 	  continue
   8039      1.1  mrg 	  ;;
   8040      1.1  mrg 	*.la)
   8041      1.1  mrg 	  func_resolve_sysroot "$deplib"
   8042      1.1  mrg 	  lib=$func_resolve_sysroot_result
   8043      1.1  mrg 	  ;;
   8044      1.1  mrg 	*.$libext)
   8045      1.1  mrg 	  if test conv = "$pass"; then
   8046      1.1  mrg 	    deplibs="$deplib $deplibs"
   8047      1.1  mrg 	    continue
   8048      1.1  mrg 	  fi
   8049      1.1  mrg 	  case $linkmode in
   8050      1.1  mrg 	  lib)
   8051      1.1  mrg 	    # Linking convenience modules into shared libraries is allowed,
   8052      1.1  mrg 	    # but linking other static libraries is non-portable.
   8053      1.1  mrg 	    case " $dlpreconveniencelibs " in
   8054      1.1  mrg 	    *" $deplib "*) ;;
   8055      1.1  mrg 	    *)
   8056      1.1  mrg 	      valid_a_lib=false
   8057      1.1  mrg 	      case $deplibs_check_method in
   8058      1.1  mrg 		match_pattern*)
   8059      1.1  mrg 		  set dummy $deplibs_check_method; shift
   8060      1.1  mrg 		  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
   8061      1.1  mrg 		  if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \
   8062      1.1  mrg 		    | $EGREP "$match_pattern_regex" > /dev/null; then
   8063      1.1  mrg 		    valid_a_lib=:
   8064      1.1  mrg 		  fi
   8065      1.1  mrg 		;;
   8066      1.1  mrg 		pass_all)
   8067      1.1  mrg 		  valid_a_lib=:
   8068      1.1  mrg 		;;
   8069      1.1  mrg 	      esac
   8070      1.1  mrg 	      if $valid_a_lib; then
   8071      1.1  mrg 		echo
   8072      1.1  mrg 		$ECHO "*** Warning: Linking the shared library $output against the"
   8073      1.1  mrg 		$ECHO "*** static library $deplib is not portable!"
   8074      1.1  mrg 		deplibs="$deplib $deplibs"
   8075      1.1  mrg 	      else
   8076      1.1  mrg 		echo
   8077      1.1  mrg 		$ECHO "*** Warning: Trying to link with static lib archive $deplib."
   8078      1.1  mrg 		echo "*** I have the capability to make that library automatically link in when"
   8079      1.1  mrg 		echo "*** you link to this library.  But I can only do this if you have a"
   8080      1.1  mrg 		echo "*** shared version of the library, which you do not appear to have"
   8081      1.1  mrg 		echo "*** because the file extensions .$libext of this argument makes me believe"
   8082      1.1  mrg 		echo "*** that it is just a static archive that I should not use here."
   8083      1.1  mrg 	      fi
   8084      1.1  mrg 	      ;;
   8085      1.1  mrg 	    esac
   8086      1.1  mrg 	    continue
   8087      1.1  mrg 	    ;;
   8088      1.1  mrg 	  prog)
   8089      1.1  mrg 	    if test link != "$pass"; then
   8090      1.1  mrg 	      deplibs="$deplib $deplibs"
   8091      1.1  mrg 	    else
   8092      1.1  mrg 	      compile_deplibs="$deplib $compile_deplibs"
   8093      1.1  mrg 	      finalize_deplibs="$deplib $finalize_deplibs"
   8094      1.1  mrg 	    fi
   8095      1.1  mrg 	    continue
   8096      1.1  mrg 	    ;;
   8097      1.1  mrg 	  esac # linkmode
   8098      1.1  mrg 	  ;; # *.$libext
   8099      1.1  mrg 	*.lo | *.$objext)
   8100      1.1  mrg 	  if test conv = "$pass"; then
   8101      1.1  mrg 	    deplibs="$deplib $deplibs"
   8102      1.1  mrg 	  elif test prog = "$linkmode"; then
   8103      1.1  mrg 	    if test dlpreopen = "$pass" || test yes != "$dlopen_support" || test no = "$build_libtool_libs"; then
   8104      1.1  mrg 	      # If there is no dlopen support or we're linking statically,
   8105      1.1  mrg 	      # we need to preload.
   8106      1.1  mrg 	      func_append newdlprefiles " $deplib"
   8107      1.1  mrg 	      compile_deplibs="$deplib $compile_deplibs"
   8108      1.1  mrg 	      finalize_deplibs="$deplib $finalize_deplibs"
   8109      1.1  mrg 	    else
   8110      1.1  mrg 	      func_append newdlfiles " $deplib"
   8111      1.1  mrg 	    fi
   8112      1.1  mrg 	  fi
   8113      1.1  mrg 	  continue
   8114      1.1  mrg 	  ;;
   8115      1.1  mrg 	%DEPLIBS%)
   8116      1.1  mrg 	  alldeplibs=:
   8117      1.1  mrg 	  continue
   8118      1.1  mrg 	  ;;
   8119      1.1  mrg 	esac # case $deplib
   8120      1.1  mrg 
   8121      1.1  mrg 	$found || test -f "$lib" \
   8122      1.1  mrg 	  || func_fatal_error "cannot find the library '$lib' or unhandled argument '$deplib'"
   8123      1.1  mrg 
   8124      1.1  mrg 	# Check to see that this really is a libtool archive.
   8125      1.1  mrg 	func_lalib_unsafe_p "$lib" \
   8126      1.1  mrg 	  || func_fatal_error "'$lib' is not a valid libtool archive"
   8127      1.1  mrg 
   8128      1.1  mrg 	func_dirname "$lib" "" "."
   8129      1.1  mrg 	ladir=$func_dirname_result
   8130      1.1  mrg 
   8131      1.1  mrg 	dlname=
   8132      1.1  mrg 	dlopen=
   8133      1.1  mrg 	dlpreopen=
   8134      1.1  mrg 	libdir=
   8135      1.1  mrg 	library_names=
   8136      1.1  mrg 	old_library=
   8137      1.1  mrg 	inherited_linker_flags=
   8138      1.1  mrg 	# If the library was installed with an old release of libtool,
   8139      1.1  mrg 	# it will not redefine variables installed, or shouldnotlink
   8140      1.1  mrg 	installed=yes
   8141      1.1  mrg 	shouldnotlink=no
   8142      1.1  mrg 	avoidtemprpath=
   8143      1.1  mrg 
   8144      1.1  mrg 
   8145      1.1  mrg 	# Read the .la file
   8146      1.1  mrg 	func_source "$lib"
   8147      1.1  mrg 
   8148      1.1  mrg 	# Convert "-framework foo" to "foo.ltframework"
   8149      1.1  mrg 	if test -n "$inherited_linker_flags"; then
   8150      1.1  mrg 	  tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`
   8151      1.1  mrg 	  for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
   8152      1.1  mrg 	    case " $new_inherited_linker_flags " in
   8153      1.1  mrg 	      *" $tmp_inherited_linker_flag "*) ;;
   8154      1.1  mrg 	      *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";;
   8155      1.1  mrg 	    esac
   8156      1.1  mrg 	  done
   8157      1.1  mrg 	fi
   8158      1.1  mrg 	dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
   8159      1.1  mrg 	if test lib,link = "$linkmode,$pass" ||
   8160      1.1  mrg 	   test prog,scan = "$linkmode,$pass" ||
   8161      1.1  mrg 	   { test prog != "$linkmode" && test lib != "$linkmode"; }; then
   8162      1.1  mrg 	  test -n "$dlopen" && func_append dlfiles " $dlopen"
   8163      1.1  mrg 	  test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen"
   8164      1.1  mrg 	fi
   8165      1.1  mrg 
   8166      1.1  mrg 	if test conv = "$pass"; then
   8167      1.1  mrg 	  # Only check for convenience libraries
   8168      1.1  mrg 	  deplibs="$lib $deplibs"
   8169      1.1  mrg 	  if test -z "$libdir"; then
   8170      1.1  mrg 	    if test -z "$old_library"; then
   8171      1.1  mrg 	      func_fatal_error "cannot find name of link library for '$lib'"
   8172      1.1  mrg 	    fi
   8173      1.1  mrg 	    # It is a libtool convenience library, so add in its objects.
   8174      1.1  mrg 	    func_append convenience " $ladir/$objdir/$old_library"
   8175      1.1  mrg 	    func_append old_convenience " $ladir/$objdir/$old_library"
   8176      1.1  mrg 	  elif test prog != "$linkmode" && test lib != "$linkmode"; then
   8177      1.1  mrg 	    func_fatal_error "'$lib' is not a convenience library"
   8178      1.1  mrg 	  fi
   8179      1.1  mrg 	  tmp_libs=
   8180      1.1  mrg 	  for deplib in $dependency_libs; do
   8181      1.1  mrg 	    deplibs="$deplib $deplibs"
   8182      1.1  mrg 	    if $opt_preserve_dup_deps; then
   8183      1.1  mrg 	      case "$tmp_libs " in
   8184      1.1  mrg 	      *" $deplib "*) func_append specialdeplibs " $deplib" ;;
   8185      1.1  mrg 	      esac
   8186      1.1  mrg 	    fi
   8187      1.1  mrg 	    func_append tmp_libs " $deplib"
   8188      1.1  mrg 	  done
   8189      1.1  mrg 	  continue
   8190      1.1  mrg 	fi # $pass = conv
   8191      1.1  mrg 
   8192      1.1  mrg 
   8193      1.1  mrg 	# Get the name of the library we link against.
   8194      1.1  mrg 	linklib=
   8195      1.1  mrg 	if test -n "$old_library" &&
   8196      1.1  mrg 	   { test yes = "$prefer_static_libs" ||
   8197      1.1  mrg 	     test built,no = "$prefer_static_libs,$installed"; }; then
   8198      1.1  mrg 	  linklib=$old_library
   8199      1.1  mrg 	else
   8200      1.1  mrg 	  for l in $old_library $library_names; do
   8201      1.1  mrg 	    linklib=$l
   8202      1.1  mrg 	  done
   8203      1.1  mrg 	fi
   8204      1.1  mrg 	if test -z "$linklib"; then
   8205      1.1  mrg 	  func_fatal_error "cannot find name of link library for '$lib'"
   8206      1.1  mrg 	fi
   8207      1.1  mrg 
   8208      1.1  mrg 	# This library was specified with -dlopen.
   8209      1.1  mrg 	if test dlopen = "$pass"; then
   8210      1.1  mrg 	  test -z "$libdir" \
   8211      1.1  mrg 	    && func_fatal_error "cannot -dlopen a convenience library: '$lib'"
   8212      1.1  mrg 	  if test -z "$dlname" ||
   8213      1.1  mrg 	     test yes != "$dlopen_support" ||
   8214      1.1  mrg 	     test no = "$build_libtool_libs"
   8215      1.1  mrg 	  then
   8216      1.1  mrg 	    # If there is no dlname, no dlopen support or we're linking
   8217      1.1  mrg 	    # statically, we need to preload.  We also need to preload any
   8218      1.1  mrg 	    # dependent libraries so libltdl's deplib preloader doesn't
   8219      1.1  mrg 	    # bomb out in the load deplibs phase.
   8220      1.1  mrg 	    func_append dlprefiles " $lib $dependency_libs"
   8221      1.1  mrg 	  else
   8222      1.1  mrg 	    func_append newdlfiles " $lib"
   8223      1.1  mrg 	  fi
   8224      1.1  mrg 	  continue
   8225      1.1  mrg 	fi # $pass = dlopen
   8226      1.1  mrg 
   8227      1.1  mrg 	# We need an absolute path.
   8228      1.1  mrg 	case $ladir in
   8229      1.1  mrg 	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir=$ladir ;;
   8230      1.1  mrg 	*)
   8231      1.1  mrg 	  abs_ladir=`cd "$ladir" && pwd`
   8232      1.1  mrg 	  if test -z "$abs_ladir"; then
   8233      1.1  mrg 	    func_warning "cannot determine absolute directory name of '$ladir'"
   8234      1.1  mrg 	    func_warning "passing it literally to the linker, although it might fail"
   8235      1.1  mrg 	    abs_ladir=$ladir
   8236      1.1  mrg 	  fi
   8237      1.1  mrg 	  ;;
   8238      1.1  mrg 	esac
   8239      1.1  mrg 	func_basename "$lib"
   8240      1.1  mrg 	laname=$func_basename_result
   8241      1.1  mrg 
   8242      1.1  mrg 	# Find the relevant object directory and library name.
   8243      1.1  mrg 	if test yes = "$installed"; then
   8244      1.1  mrg 	  if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
   8245      1.1  mrg 	    func_warning "library '$lib' was moved."
   8246      1.1  mrg 	    dir=$ladir
   8247      1.1  mrg 	    absdir=$abs_ladir
   8248      1.1  mrg 	    libdir=$abs_ladir
   8249      1.1  mrg 	  else
   8250      1.1  mrg 	    dir=$lt_sysroot$libdir
   8251      1.1  mrg 	    absdir=$lt_sysroot$libdir
   8252      1.1  mrg 	  fi
   8253      1.1  mrg 	  test yes = "$hardcode_automatic" && avoidtemprpath=yes
   8254      1.1  mrg 	else
   8255      1.1  mrg 	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
   8256      1.1  mrg 	    dir=$ladir
   8257      1.1  mrg 	    absdir=$abs_ladir
   8258      1.1  mrg 	    # Remove this search path later
   8259      1.1  mrg 	    func_append notinst_path " $abs_ladir"
   8260      1.1  mrg 	  else
   8261      1.1  mrg 	    dir=$ladir/$objdir
   8262      1.1  mrg 	    absdir=$abs_ladir/$objdir
   8263      1.1  mrg 	    # Remove this search path later
   8264      1.1  mrg 	    func_append notinst_path " $abs_ladir"
   8265      1.1  mrg 	  fi
   8266      1.1  mrg 	fi # $installed = yes
   8267      1.1  mrg 	func_stripname 'lib' '.la' "$laname"
   8268      1.1  mrg 	name=$func_stripname_result
   8269      1.1  mrg 
   8270      1.1  mrg 	# This library was specified with -dlpreopen.
   8271      1.1  mrg 	if test dlpreopen = "$pass"; then
   8272      1.1  mrg 	  if test -z "$libdir" && test prog = "$linkmode"; then
   8273      1.1  mrg 	    func_fatal_error "only libraries may -dlpreopen a convenience library: '$lib'"
   8274      1.1  mrg 	  fi
   8275      1.1  mrg 	  case $host in
   8276      1.1  mrg 	    # special handling for platforms with PE-DLLs.
   8277      1.1  mrg 	    *cygwin* | *mingw* | *cegcc* )
   8278      1.1  mrg 	      # Linker will automatically link against shared library if both
   8279      1.1  mrg 	      # static and shared are present.  Therefore, ensure we extract
   8280      1.1  mrg 	      # symbols from the import library if a shared library is present
   8281      1.1  mrg 	      # (otherwise, the dlopen module name will be incorrect).  We do
   8282      1.1  mrg 	      # this by putting the import library name into $newdlprefiles.
   8283      1.1  mrg 	      # We recover the dlopen module name by 'saving' the la file
   8284      1.1  mrg 	      # name in a special purpose variable, and (later) extracting the
   8285      1.1  mrg 	      # dlname from the la file.
   8286      1.1  mrg 	      if test -n "$dlname"; then
   8287      1.1  mrg 	        func_tr_sh "$dir/$linklib"
   8288      1.1  mrg 	        eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname"
   8289      1.1  mrg 	        func_append newdlprefiles " $dir/$linklib"
   8290      1.1  mrg 	      else
   8291      1.1  mrg 	        func_append newdlprefiles " $dir/$old_library"
   8292      1.1  mrg 	        # Keep a list of preopened convenience libraries to check
   8293      1.1  mrg 	        # that they are being used correctly in the link pass.
   8294      1.1  mrg 	        test -z "$libdir" && \
   8295      1.1  mrg 	          func_append dlpreconveniencelibs " $dir/$old_library"
   8296      1.1  mrg 	      fi
   8297      1.1  mrg 	    ;;
   8298      1.1  mrg 	    * )
   8299      1.1  mrg 	      # Prefer using a static library (so that no silly _DYNAMIC symbols
   8300      1.1  mrg 	      # are required to link).
   8301      1.1  mrg 	      if test -n "$old_library"; then
   8302      1.1  mrg 	        func_append newdlprefiles " $dir/$old_library"
   8303      1.1  mrg 	        # Keep a list of preopened convenience libraries to check
   8304      1.1  mrg 	        # that they are being used correctly in the link pass.
   8305      1.1  mrg 	        test -z "$libdir" && \
   8306      1.1  mrg 	          func_append dlpreconveniencelibs " $dir/$old_library"
   8307      1.1  mrg 	      # Otherwise, use the dlname, so that lt_dlopen finds it.
   8308      1.1  mrg 	      elif test -n "$dlname"; then
   8309      1.1  mrg 	        func_append newdlprefiles " $dir/$dlname"
   8310      1.1  mrg 	      else
   8311      1.1  mrg 	        func_append newdlprefiles " $dir/$linklib"
   8312      1.1  mrg 	      fi
   8313      1.1  mrg 	    ;;
   8314      1.1  mrg 	  esac
   8315      1.1  mrg 	fi # $pass = dlpreopen
   8316      1.1  mrg 
   8317      1.1  mrg 	if test -z "$libdir"; then
   8318      1.1  mrg 	  # Link the convenience library
   8319      1.1  mrg 	  if test lib = "$linkmode"; then
   8320      1.1  mrg 	    deplibs="$dir/$old_library $deplibs"
   8321      1.1  mrg 	  elif test prog,link = "$linkmode,$pass"; then
   8322      1.1  mrg 	    compile_deplibs="$dir/$old_library $compile_deplibs"
   8323      1.1  mrg 	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
   8324      1.1  mrg 	  else
   8325      1.1  mrg 	    deplibs="$lib $deplibs" # used for prog,scan pass
   8326      1.1  mrg 	  fi
   8327      1.1  mrg 	  continue
   8328      1.1  mrg 	fi
   8329      1.1  mrg 
   8330      1.1  mrg 
   8331      1.1  mrg 	if test prog = "$linkmode" && test link != "$pass"; then
   8332      1.1  mrg 	  func_append newlib_search_path " $ladir"
   8333      1.1  mrg 	  deplibs="$lib $deplibs"
   8334      1.1  mrg 
   8335      1.1  mrg 	  linkalldeplibs=false
   8336      1.1  mrg 	  if test no != "$link_all_deplibs" || test -z "$library_names" ||
   8337      1.1  mrg 	     test no = "$build_libtool_libs"; then
   8338      1.1  mrg 	    linkalldeplibs=:
   8339      1.1  mrg 	  fi
   8340      1.1  mrg 
   8341      1.1  mrg 	  tmp_libs=
   8342      1.1  mrg 	  for deplib in $dependency_libs; do
   8343      1.1  mrg 	    case $deplib in
   8344      1.1  mrg 	    -L*) func_stripname '-L' '' "$deplib"
   8345      1.1  mrg 	         func_resolve_sysroot "$func_stripname_result"
   8346      1.1  mrg 	         func_append newlib_search_path " $func_resolve_sysroot_result"
   8347      1.1  mrg 		 ;;
   8348      1.1  mrg 	    esac
   8349      1.1  mrg 	    # Need to link against all dependency_libs?
   8350      1.1  mrg 	    if $linkalldeplibs; then
   8351      1.1  mrg 	      deplibs="$deplib $deplibs"
   8352      1.1  mrg 	    else
   8353      1.1  mrg 	      # Need to hardcode shared library paths
   8354      1.1  mrg 	      # or/and link against static libraries
   8355      1.1  mrg 	      newdependency_libs="$deplib $newdependency_libs"
   8356      1.1  mrg 	    fi
   8357      1.1  mrg 	    if $opt_preserve_dup_deps; then
   8358      1.1  mrg 	      case "$tmp_libs " in
   8359      1.1  mrg 	      *" $deplib "*) func_append specialdeplibs " $deplib" ;;
   8360      1.1  mrg 	      esac
   8361      1.1  mrg 	    fi
   8362      1.1  mrg 	    func_append tmp_libs " $deplib"
   8363      1.1  mrg 	  done # for deplib
   8364      1.1  mrg 	  continue
   8365      1.1  mrg 	fi # $linkmode = prog...
   8366      1.1  mrg 
   8367      1.1  mrg 	if test prog,link = "$linkmode,$pass"; then
   8368      1.1  mrg 	  if test -n "$library_names" &&
   8369      1.1  mrg 	     { { test no = "$prefer_static_libs" ||
   8370      1.1  mrg 	         test built,yes = "$prefer_static_libs,$installed"; } ||
   8371      1.1  mrg 	       test -z "$old_library"; }; then
   8372      1.1  mrg 	    # We need to hardcode the library path
   8373      1.1  mrg 	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath"; then
   8374      1.1  mrg 	      # Make sure the rpath contains only unique directories.
   8375      1.1  mrg 	      case $temp_rpath: in
   8376      1.1  mrg 	      *"$absdir:"*) ;;
   8377      1.1  mrg 	      *) func_append temp_rpath "$absdir:" ;;
   8378      1.1  mrg 	      esac
   8379      1.1  mrg 	    fi
   8380      1.1  mrg 
   8381      1.1  mrg 	    # Hardcode the library path.
   8382      1.1  mrg 	    # Skip directories that are in the system default run-time
   8383      1.1  mrg 	    # search path.
   8384      1.1  mrg 	    case " $sys_lib_dlsearch_path " in
   8385      1.1  mrg 	    *" $absdir "*) ;;
   8386      1.1  mrg 	    *)
   8387      1.1  mrg 	      case "$compile_rpath " in
   8388      1.1  mrg 	      *" $absdir "*) ;;
   8389      1.1  mrg 	      *) func_append compile_rpath " $absdir" ;;
   8390      1.1  mrg 	      esac
   8391      1.1  mrg 	      ;;
   8392      1.1  mrg 	    esac
   8393      1.1  mrg 	    case " $sys_lib_dlsearch_path " in
   8394      1.1  mrg 	    *" $libdir "*) ;;
   8395      1.1  mrg 	    *)
   8396      1.1  mrg 	      case "$finalize_rpath " in
   8397      1.1  mrg 	      *" $libdir "*) ;;
   8398      1.1  mrg 	      *) func_append finalize_rpath " $libdir" ;;
   8399      1.1  mrg 	      esac
   8400      1.1  mrg 	      ;;
   8401      1.1  mrg 	    esac
   8402      1.1  mrg 	  fi # $linkmode,$pass = prog,link...
   8403      1.1  mrg 
   8404      1.1  mrg 	  if $alldeplibs &&
   8405      1.1  mrg 	     { test pass_all = "$deplibs_check_method" ||
   8406      1.1  mrg 	       { test yes = "$build_libtool_libs" &&
   8407      1.1  mrg 		 test -n "$library_names"; }; }; then
   8408      1.1  mrg 	    # We only need to search for static libraries
   8409      1.1  mrg 	    continue
   8410      1.1  mrg 	  fi
   8411      1.1  mrg 	fi
   8412      1.1  mrg 
   8413      1.1  mrg 	link_static=no # Whether the deplib will be linked statically
   8414      1.1  mrg 	use_static_libs=$prefer_static_libs
   8415      1.1  mrg 	if test built = "$use_static_libs" && test yes = "$installed"; then
   8416      1.1  mrg 	  use_static_libs=no
   8417      1.1  mrg 	fi
   8418      1.1  mrg 	if test -n "$library_names" &&
   8419      1.1  mrg 	   { test no = "$use_static_libs" || test -z "$old_library"; }; then
   8420      1.1  mrg 	  case $host in
   8421      1.1  mrg 	  *cygwin* | *mingw* | *cegcc* | *os2*)
   8422      1.1  mrg 	      # No point in relinking DLLs because paths are not encoded
   8423      1.1  mrg 	      func_append notinst_deplibs " $lib"
   8424      1.1  mrg 	      need_relink=no
   8425      1.1  mrg 	    ;;
   8426      1.1  mrg 	  *)
   8427      1.1  mrg 	    if test no = "$installed"; then
   8428      1.1  mrg 	      func_append notinst_deplibs " $lib"
   8429      1.1  mrg 	      need_relink=yes
   8430      1.1  mrg 	    fi
   8431      1.1  mrg 	    ;;
   8432      1.1  mrg 	  esac
   8433      1.1  mrg 	  # This is a shared library
   8434      1.1  mrg 
   8435      1.1  mrg 	  # Warn about portability, can't link against -module's on some
   8436      1.1  mrg 	  # systems (darwin).  Don't bleat about dlopened modules though!
   8437      1.1  mrg 	  dlopenmodule=
   8438      1.1  mrg 	  for dlpremoduletest in $dlprefiles; do
   8439      1.1  mrg 	    if test "X$dlpremoduletest" = "X$lib"; then
   8440      1.1  mrg 	      dlopenmodule=$dlpremoduletest
   8441      1.1  mrg 	      break
   8442      1.1  mrg 	    fi
   8443      1.1  mrg 	  done
   8444      1.1  mrg 	  if test -z "$dlopenmodule" && test yes = "$shouldnotlink" && test link = "$pass"; then
   8445      1.1  mrg 	    echo
   8446      1.1  mrg 	    if test prog = "$linkmode"; then
   8447      1.1  mrg 	      $ECHO "*** Warning: Linking the executable $output against the loadable module"
   8448      1.1  mrg 	    else
   8449      1.1  mrg 	      $ECHO "*** Warning: Linking the shared library $output against the loadable module"
   8450      1.1  mrg 	    fi
   8451      1.1  mrg 	    $ECHO "*** $linklib is not portable!"
   8452      1.1  mrg 	  fi
   8453      1.1  mrg 	  if test lib = "$linkmode" &&
   8454      1.1  mrg 	     test yes = "$hardcode_into_libs"; then
   8455      1.1  mrg 	    # Hardcode the library path.
   8456      1.1  mrg 	    # Skip directories that are in the system default run-time
   8457      1.1  mrg 	    # search path.
   8458      1.1  mrg 	    case " $sys_lib_dlsearch_path " in
   8459      1.1  mrg 	    *" $absdir "*) ;;
   8460      1.1  mrg 	    *)
   8461      1.1  mrg 	      case "$compile_rpath " in
   8462      1.1  mrg 	      *" $absdir "*) ;;
   8463      1.1  mrg 	      *) func_append compile_rpath " $absdir" ;;
   8464      1.1  mrg 	      esac
   8465      1.1  mrg 	      ;;
   8466      1.1  mrg 	    esac
   8467      1.1  mrg 	    case " $sys_lib_dlsearch_path " in
   8468      1.1  mrg 	    *" $libdir "*) ;;
   8469      1.1  mrg 	    *)
   8470      1.1  mrg 	      case "$finalize_rpath " in
   8471      1.1  mrg 	      *" $libdir "*) ;;
   8472      1.1  mrg 	      *) func_append finalize_rpath " $libdir" ;;
   8473      1.1  mrg 	      esac
   8474      1.1  mrg 	      ;;
   8475      1.1  mrg 	    esac
   8476      1.1  mrg 	  fi
   8477      1.1  mrg 
   8478      1.1  mrg 	  if test -n "$old_archive_from_expsyms_cmds"; then
   8479      1.1  mrg 	    # figure out the soname
   8480      1.1  mrg 	    set dummy $library_names
   8481      1.1  mrg 	    shift
   8482      1.1  mrg 	    realname=$1
   8483      1.1  mrg 	    shift
   8484      1.1  mrg 	    libname=`eval "\\$ECHO \"$libname_spec\""`
   8485      1.1  mrg 	    # use dlname if we got it. it's perfectly good, no?
   8486      1.1  mrg 	    if test -n "$dlname"; then
   8487      1.1  mrg 	      soname=$dlname
   8488      1.1  mrg 	    elif test -n "$soname_spec"; then
   8489      1.1  mrg 	      # bleh windows
   8490      1.1  mrg 	      case $host in
   8491      1.1  mrg 	      *cygwin* | mingw* | *cegcc* | *os2*)
   8492      1.1  mrg 	        func_arith $current - $age
   8493      1.1  mrg 		major=$func_arith_result
   8494      1.1  mrg 		versuffix=-$major
   8495      1.1  mrg 		;;
   8496      1.1  mrg 	      esac
   8497      1.1  mrg 	      eval soname=\"$soname_spec\"
   8498      1.1  mrg 	    else
   8499      1.1  mrg 	      soname=$realname
   8500      1.1  mrg 	    fi
   8501      1.1  mrg 
   8502      1.1  mrg 	    # Make a new name for the extract_expsyms_cmds to use
   8503      1.1  mrg 	    soroot=$soname
   8504      1.1  mrg 	    func_basename "$soroot"
   8505      1.1  mrg 	    soname=$func_basename_result
   8506      1.1  mrg 	    func_stripname 'lib' '.dll' "$soname"
   8507      1.1  mrg 	    newlib=libimp-$func_stripname_result.a
   8508      1.1  mrg 
   8509      1.1  mrg 	    # If the library has no export list, then create one now
   8510      1.1  mrg 	    if test -f "$output_objdir/$soname-def"; then :
   8511      1.1  mrg 	    else
   8512      1.1  mrg 	      func_verbose "extracting exported symbol list from '$soname'"
   8513      1.1  mrg 	      func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
   8514      1.1  mrg 	    fi
   8515      1.1  mrg 
   8516      1.1  mrg 	    # Create $newlib
   8517      1.1  mrg 	    if test -f "$output_objdir/$newlib"; then :; else
   8518      1.1  mrg 	      func_verbose "generating import library for '$soname'"
   8519      1.1  mrg 	      func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
   8520      1.1  mrg 	    fi
   8521      1.1  mrg 	    # make sure the library variables are pointing to the new library
   8522      1.1  mrg 	    dir=$output_objdir
   8523      1.1  mrg 	    linklib=$newlib
   8524      1.1  mrg 	  fi # test -n "$old_archive_from_expsyms_cmds"
   8525      1.1  mrg 
   8526      1.1  mrg 	  if test prog = "$linkmode" || test relink != "$opt_mode"; then
   8527      1.1  mrg 	    add_shlibpath=
   8528      1.1  mrg 	    add_dir=
   8529      1.1  mrg 	    add=
   8530      1.1  mrg 	    lib_linked=yes
   8531      1.1  mrg 	    case $hardcode_action in
   8532      1.1  mrg 	    immediate | unsupported)
   8533      1.1  mrg 	      if test no = "$hardcode_direct"; then
   8534      1.1  mrg 		add=$dir/$linklib
   8535      1.1  mrg 		case $host in
   8536      1.1  mrg 		  *-*-sco3.2v5.0.[024]*) add_dir=-L$dir ;;
   8537      1.1  mrg 		  *-*-sysv4*uw2*) add_dir=-L$dir ;;
   8538      1.1  mrg 		  *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
   8539      1.1  mrg 		    *-*-unixware7*) add_dir=-L$dir ;;
   8540      1.1  mrg 		  *-*-darwin* )
   8541      1.1  mrg 		    # if the lib is a (non-dlopened) module then we cannot
   8542      1.1  mrg 		    # link against it, someone is ignoring the earlier warnings
   8543      1.1  mrg 		    if /usr/bin/file -L $add 2> /dev/null |
   8544      1.1  mrg 			 $GREP ": [^:]* bundle" >/dev/null; then
   8545      1.1  mrg 		      if test "X$dlopenmodule" != "X$lib"; then
   8546      1.1  mrg 			$ECHO "*** Warning: lib $linklib is a module, not a shared library"
   8547      1.1  mrg 			if test -z "$old_library"; then
   8548      1.1  mrg 			  echo
   8549      1.1  mrg 			  echo "*** And there doesn't seem to be a static archive available"
   8550      1.1  mrg 			  echo "*** The link will probably fail, sorry"
   8551      1.1  mrg 			else
   8552      1.1  mrg 			  add=$dir/$old_library
   8553      1.1  mrg 			fi
   8554      1.1  mrg 		      elif test -n "$old_library"; then
   8555      1.1  mrg 			add=$dir/$old_library
   8556      1.1  mrg 		      fi
   8557      1.1  mrg 		    fi
   8558      1.1  mrg 		esac
   8559      1.1  mrg 	      elif test no = "$hardcode_minus_L"; then
   8560      1.1  mrg 		case $host in
   8561      1.1  mrg 		*-*-sunos*) add_shlibpath=$dir ;;
   8562      1.1  mrg 		esac
   8563      1.1  mrg 		add_dir=-L$dir
   8564      1.1  mrg 		add=-l$name
   8565      1.1  mrg 	      elif test no = "$hardcode_shlibpath_var"; then
   8566      1.1  mrg 		add_shlibpath=$dir
   8567      1.1  mrg 		add=-l$name
   8568      1.1  mrg 	      else
   8569      1.1  mrg 		lib_linked=no
   8570      1.1  mrg 	      fi
   8571      1.1  mrg 	      ;;
   8572      1.1  mrg 	    relink)
   8573      1.1  mrg 	      if test yes = "$hardcode_direct" &&
   8574      1.1  mrg 	         test no = "$hardcode_direct_absolute"; then
   8575      1.1  mrg 		add=$dir/$linklib
   8576      1.1  mrg 	      elif test yes = "$hardcode_minus_L"; then
   8577      1.1  mrg 		add_dir=-L$absdir
   8578      1.1  mrg 		# Try looking first in the location we're being installed to.
   8579      1.1  mrg 		if test -n "$inst_prefix_dir"; then
   8580      1.1  mrg 		  case $libdir in
   8581      1.1  mrg 		    [\\/]*)
   8582      1.1  mrg 		      func_append add_dir " -L$inst_prefix_dir$libdir"
   8583      1.1  mrg 		      ;;
   8584      1.1  mrg 		  esac
   8585      1.1  mrg 		fi
   8586      1.1  mrg 		add=-l$name
   8587      1.1  mrg 	      elif test yes = "$hardcode_shlibpath_var"; then
   8588      1.1  mrg 		add_shlibpath=$dir
   8589      1.1  mrg 		add=-l$name
   8590      1.1  mrg 	      else
   8591      1.1  mrg 		lib_linked=no
   8592      1.1  mrg 	      fi
   8593      1.1  mrg 	      ;;
   8594      1.1  mrg 	    *) lib_linked=no ;;
   8595      1.1  mrg 	    esac
   8596      1.1  mrg 
   8597      1.1  mrg 	    if test yes != "$lib_linked"; then
   8598      1.1  mrg 	      func_fatal_configuration "unsupported hardcode properties"
   8599      1.1  mrg 	    fi
   8600      1.1  mrg 
   8601      1.1  mrg 	    if test -n "$add_shlibpath"; then
   8602      1.1  mrg 	      case :$compile_shlibpath: in
   8603      1.1  mrg 	      *":$add_shlibpath:"*) ;;
   8604      1.1  mrg 	      *) func_append compile_shlibpath "$add_shlibpath:" ;;
   8605      1.1  mrg 	      esac
   8606      1.1  mrg 	    fi
   8607      1.1  mrg 	    if test prog = "$linkmode"; then
   8608      1.1  mrg 	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
   8609      1.1  mrg 	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
   8610      1.1  mrg 	    else
   8611      1.1  mrg 	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
   8612      1.1  mrg 	      test -n "$add" && deplibs="$add $deplibs"
   8613      1.1  mrg 	      if test yes != "$hardcode_direct" &&
   8614      1.1  mrg 		 test yes != "$hardcode_minus_L" &&
   8615      1.1  mrg 		 test yes = "$hardcode_shlibpath_var"; then
   8616      1.1  mrg 		case :$finalize_shlibpath: in
   8617      1.1  mrg 		*":$libdir:"*) ;;
   8618      1.1  mrg 		*) func_append finalize_shlibpath "$libdir:" ;;
   8619      1.1  mrg 		esac
   8620      1.1  mrg 	      fi
   8621      1.1  mrg 	    fi
   8622      1.1  mrg 	  fi
   8623      1.1  mrg 
   8624      1.1  mrg 	  if test prog = "$linkmode" || test relink = "$opt_mode"; then
   8625      1.1  mrg 	    add_shlibpath=
   8626      1.1  mrg 	    add_dir=
   8627      1.1  mrg 	    add=
   8628      1.1  mrg 	    # Finalize command for both is simple: just hardcode it.
   8629      1.1  mrg 	    if test yes = "$hardcode_direct" &&
   8630      1.1  mrg 	       test no = "$hardcode_direct_absolute"; then
   8631      1.1  mrg 	      add=$libdir/$linklib
   8632      1.1  mrg 	    elif test yes = "$hardcode_minus_L"; then
   8633      1.1  mrg 	      add_dir=-L$libdir
   8634      1.1  mrg 	      add=-l$name
   8635      1.1  mrg 	    elif test yes = "$hardcode_shlibpath_var"; then
   8636      1.1  mrg 	      case :$finalize_shlibpath: in
   8637      1.1  mrg 	      *":$libdir:"*) ;;
   8638      1.1  mrg 	      *) func_append finalize_shlibpath "$libdir:" ;;
   8639      1.1  mrg 	      esac
   8640      1.1  mrg 	      add=-l$name
   8641      1.1  mrg 	    elif test yes = "$hardcode_automatic"; then
   8642      1.1  mrg 	      if test -n "$inst_prefix_dir" &&
   8643      1.1  mrg 		 test -f "$inst_prefix_dir$libdir/$linklib"; then
   8644      1.1  mrg 		add=$inst_prefix_dir$libdir/$linklib
   8645      1.1  mrg 	      else
   8646      1.1  mrg 		add=$libdir/$linklib
   8647      1.1  mrg 	      fi
   8648      1.1  mrg 	    else
   8649      1.1  mrg 	      # We cannot seem to hardcode it, guess we'll fake it.
   8650      1.1  mrg 	      add_dir=-L$libdir
   8651      1.1  mrg 	      # Try looking first in the location we're being installed to.
   8652      1.1  mrg 	      if test -n "$inst_prefix_dir"; then
   8653      1.1  mrg 		case $libdir in
   8654      1.1  mrg 		  [\\/]*)
   8655      1.1  mrg 		    func_append add_dir " -L$inst_prefix_dir$libdir"
   8656      1.1  mrg 		    ;;
   8657      1.1  mrg 		esac
   8658      1.1  mrg 	      fi
   8659      1.1  mrg 	      add=-l$name
   8660      1.1  mrg 	    fi
   8661      1.1  mrg 
   8662      1.1  mrg 	    if test prog = "$linkmode"; then
   8663      1.1  mrg 	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
   8664      1.1  mrg 	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
   8665      1.1  mrg 	    else
   8666      1.1  mrg 	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
   8667      1.1  mrg 	      test -n "$add" && deplibs="$add $deplibs"
   8668      1.1  mrg 	    fi
   8669      1.1  mrg 	  fi
   8670      1.1  mrg 	elif test prog = "$linkmode"; then
   8671      1.1  mrg 	  # Here we assume that one of hardcode_direct or hardcode_minus_L
   8672      1.1  mrg 	  # is not unsupported.  This is valid on all known static and
   8673      1.1  mrg 	  # shared platforms.
   8674      1.1  mrg 	  if test unsupported != "$hardcode_direct"; then
   8675      1.1  mrg 	    test -n "$old_library" && linklib=$old_library
   8676      1.1  mrg 	    compile_deplibs="$dir/$linklib $compile_deplibs"
   8677      1.1  mrg 	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
   8678      1.1  mrg 	  else
   8679      1.1  mrg 	    compile_deplibs="-l$name -L$dir $compile_deplibs"
   8680      1.1  mrg 	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
   8681      1.1  mrg 	  fi
   8682      1.1  mrg 	elif test yes = "$build_libtool_libs"; then
   8683      1.1  mrg 	  # Not a shared library
   8684      1.1  mrg 	  if test pass_all != "$deplibs_check_method"; then
   8685      1.1  mrg 	    # We're trying link a shared library against a static one
   8686      1.1  mrg 	    # but the system doesn't support it.
   8687      1.1  mrg 
   8688      1.1  mrg 	    # Just print a warning and add the library to dependency_libs so
   8689      1.1  mrg 	    # that the program can be linked against the static library.
   8690      1.1  mrg 	    echo
   8691      1.1  mrg 	    $ECHO "*** Warning: This system cannot link to static lib archive $lib."
   8692      1.1  mrg 	    echo "*** I have the capability to make that library automatically link in when"
   8693      1.1  mrg 	    echo "*** you link to this library.  But I can only do this if you have a"
   8694      1.1  mrg 	    echo "*** shared version of the library, which you do not appear to have."
   8695      1.1  mrg 	    if test yes = "$module"; then
   8696      1.1  mrg 	      echo "*** But as you try to build a module library, libtool will still create "
   8697      1.1  mrg 	      echo "*** a static module, that should work as long as the dlopening application"
   8698      1.1  mrg 	      echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
   8699      1.1  mrg 	      if test -z "$global_symbol_pipe"; then
   8700      1.1  mrg 		echo
   8701      1.1  mrg 		echo "*** However, this would only work if libtool was able to extract symbol"
   8702      1.1  mrg 		echo "*** lists from a program, using 'nm' or equivalent, but libtool could"
   8703      1.1  mrg 		echo "*** not find such a program.  So, this module is probably useless."
   8704      1.1  mrg 		echo "*** 'nm' from GNU binutils and a full rebuild may help."
   8705      1.1  mrg 	      fi
   8706      1.1  mrg 	      if test no = "$build_old_libs"; then
   8707      1.1  mrg 		build_libtool_libs=module
   8708      1.1  mrg 		build_old_libs=yes
   8709      1.1  mrg 	      else
   8710      1.1  mrg 		build_libtool_libs=no
   8711      1.1  mrg 	      fi
   8712      1.1  mrg 	    fi
   8713      1.1  mrg 	  else
   8714      1.1  mrg 	    deplibs="$dir/$old_library $deplibs"
   8715      1.1  mrg 	    link_static=yes
   8716      1.1  mrg 	  fi
   8717      1.1  mrg 	fi # link shared/static library?
   8718      1.1  mrg 
   8719      1.1  mrg 	if test lib = "$linkmode"; then
   8720      1.1  mrg 	  if test -n "$dependency_libs" &&
   8721      1.1  mrg 	     { test yes != "$hardcode_into_libs" ||
   8722      1.1  mrg 	       test yes = "$build_old_libs" ||
   8723      1.1  mrg 	       test yes = "$link_static"; }; then
   8724      1.1  mrg 	    # Extract -R from dependency_libs
   8725      1.1  mrg 	    temp_deplibs=
   8726      1.1  mrg 	    for libdir in $dependency_libs; do
   8727      1.1  mrg 	      case $libdir in
   8728      1.1  mrg 	      -R*) func_stripname '-R' '' "$libdir"
   8729      1.1  mrg 	           temp_xrpath=$func_stripname_result
   8730      1.1  mrg 		   case " $xrpath " in
   8731      1.1  mrg 		   *" $temp_xrpath "*) ;;
   8732      1.1  mrg 		   *) func_append xrpath " $temp_xrpath";;
   8733      1.1  mrg 		   esac;;
   8734      1.1  mrg 	      *) func_append temp_deplibs " $libdir";;
   8735      1.1  mrg 	      esac
   8736      1.1  mrg 	    done
   8737      1.1  mrg 	    dependency_libs=$temp_deplibs
   8738      1.1  mrg 	  fi
   8739      1.1  mrg 
   8740      1.1  mrg 	  func_append newlib_search_path " $absdir"
   8741      1.1  mrg 	  # Link against this library
   8742      1.1  mrg 	  test no = "$link_static" && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
   8743      1.1  mrg 	  # ... and its dependency_libs
   8744      1.1  mrg 	  tmp_libs=
   8745      1.1  mrg 	  for deplib in $dependency_libs; do
   8746      1.1  mrg 	    newdependency_libs="$deplib $newdependency_libs"
   8747      1.1  mrg 	    case $deplib in
   8748      1.1  mrg               -L*) func_stripname '-L' '' "$deplib"
   8749      1.1  mrg                    func_resolve_sysroot "$func_stripname_result";;
   8750      1.1  mrg               *) func_resolve_sysroot "$deplib" ;;
   8751      1.1  mrg             esac
   8752      1.1  mrg 	    if $opt_preserve_dup_deps; then
   8753      1.1  mrg 	      case "$tmp_libs " in
   8754      1.1  mrg 	      *" $func_resolve_sysroot_result "*)
   8755      1.1  mrg                 func_append specialdeplibs " $func_resolve_sysroot_result" ;;
   8756      1.1  mrg 	      esac
   8757      1.1  mrg 	    fi
   8758      1.1  mrg 	    func_append tmp_libs " $func_resolve_sysroot_result"
   8759      1.1  mrg 	  done
   8760      1.1  mrg 
   8761      1.1  mrg 	  if test no != "$link_all_deplibs"; then
   8762      1.1  mrg 	    # Add the search paths of all dependency libraries
   8763      1.1  mrg 	    for deplib in $dependency_libs; do
   8764      1.1  mrg 	      path=
   8765      1.1  mrg 	      case $deplib in
   8766      1.1  mrg 	      -L*) path=$deplib ;;
   8767      1.1  mrg 	      *.la)
   8768      1.1  mrg 	        func_resolve_sysroot "$deplib"
   8769      1.1  mrg 	        deplib=$func_resolve_sysroot_result
   8770      1.1  mrg 	        func_dirname "$deplib" "" "."
   8771      1.1  mrg 		dir=$func_dirname_result
   8772      1.1  mrg 		# We need an absolute path.
   8773      1.1  mrg 		case $dir in
   8774      1.1  mrg 		[\\/]* | [A-Za-z]:[\\/]*) absdir=$dir ;;
   8775      1.1  mrg 		*)
   8776      1.1  mrg 		  absdir=`cd "$dir" && pwd`
   8777      1.1  mrg 		  if test -z "$absdir"; then
   8778      1.1  mrg 		    func_warning "cannot determine absolute directory name of '$dir'"
   8779      1.1  mrg 		    absdir=$dir
   8780      1.1  mrg 		  fi
   8781      1.1  mrg 		  ;;
   8782      1.1  mrg 		esac
   8783      1.1  mrg 		if $GREP "^installed=no" $deplib > /dev/null; then
   8784      1.1  mrg 		case $host in
   8785      1.1  mrg 		*-*-darwin*)
   8786      1.1  mrg 		  depdepl=
   8787      1.1  mrg 		  eval deplibrary_names=`$SED -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
   8788      1.1  mrg 		  if test -n "$deplibrary_names"; then
   8789      1.1  mrg 		    for tmp in $deplibrary_names; do
   8790      1.1  mrg 		      depdepl=$tmp
   8791      1.1  mrg 		    done
   8792      1.1  mrg 		    if test -f "$absdir/$objdir/$depdepl"; then
   8793      1.1  mrg 		      depdepl=$absdir/$objdir/$depdepl
   8794      1.1  mrg 		      darwin_install_name=`$OTOOL -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
   8795      1.1  mrg                       if test -z "$darwin_install_name"; then
   8796      1.1  mrg                           darwin_install_name=`$OTOOL64 -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
   8797      1.1  mrg                       fi
   8798      1.1  mrg 		      func_append compiler_flags " $wl-dylib_file $wl$darwin_install_name:$depdepl"
   8799      1.1  mrg 		      func_append linker_flags " -dylib_file $darwin_install_name:$depdepl"
   8800      1.1  mrg 		      path=
   8801      1.1  mrg 		    fi
   8802      1.1  mrg 		  fi
   8803      1.1  mrg 		  ;;
   8804      1.1  mrg 		*)
   8805      1.1  mrg 		  path=-L$absdir/$objdir
   8806      1.1  mrg 		  ;;
   8807      1.1  mrg 		esac
   8808      1.1  mrg 		else
   8809      1.1  mrg 		  eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
   8810      1.1  mrg 		  test -z "$libdir" && \
   8811      1.1  mrg 		    func_fatal_error "'$deplib' is not a valid libtool archive"
   8812      1.1  mrg 		  test "$absdir" != "$libdir" && \
   8813      1.1  mrg 		    func_warning "'$deplib' seems to be moved"
   8814      1.1  mrg 
   8815      1.1  mrg 		  path=-L$absdir
   8816      1.1  mrg 		fi
   8817      1.1  mrg 		;;
   8818      1.1  mrg 	      esac
   8819      1.1  mrg 	      case " $deplibs " in
   8820      1.1  mrg 	      *" $path "*) ;;
   8821      1.1  mrg 	      *) deplibs="$path $deplibs" ;;
   8822      1.1  mrg 	      esac
   8823      1.1  mrg 	    done
   8824      1.1  mrg 	  fi # link_all_deplibs != no
   8825      1.1  mrg 	fi # linkmode = lib
   8826      1.1  mrg       done # for deplib in $libs
   8827      1.1  mrg       if test link = "$pass"; then
   8828      1.1  mrg 	if test prog = "$linkmode"; then
   8829      1.1  mrg 	  compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
   8830      1.1  mrg 	  finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
   8831      1.1  mrg 	else
   8832      1.1  mrg 	  compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
   8833      1.1  mrg 	fi
   8834      1.1  mrg       fi
   8835      1.1  mrg       dependency_libs=$newdependency_libs
   8836      1.1  mrg       if test dlpreopen = "$pass"; then
   8837      1.1  mrg 	# Link the dlpreopened libraries before other libraries
   8838      1.1  mrg 	for deplib in $save_deplibs; do
   8839      1.1  mrg 	  deplibs="$deplib $deplibs"
   8840      1.1  mrg 	done
   8841      1.1  mrg       fi
   8842      1.1  mrg       if test dlopen != "$pass"; then
   8843      1.1  mrg 	test conv = "$pass" || {
   8844      1.1  mrg 	  # Make sure lib_search_path contains only unique directories.
   8845      1.1  mrg 	  lib_search_path=
   8846      1.1  mrg 	  for dir in $newlib_search_path; do
   8847      1.1  mrg 	    case "$lib_search_path " in
   8848      1.1  mrg 	    *" $dir "*) ;;
   8849      1.1  mrg 	    *) func_append lib_search_path " $dir" ;;
   8850      1.1  mrg 	    esac
   8851      1.1  mrg 	  done
   8852      1.1  mrg 	  newlib_search_path=
   8853      1.1  mrg 	}
   8854      1.1  mrg 
   8855      1.1  mrg 	if test prog,link = "$linkmode,$pass"; then
   8856      1.1  mrg 	  vars="compile_deplibs finalize_deplibs"
   8857      1.1  mrg 	else
   8858      1.1  mrg 	  vars=deplibs
   8859      1.1  mrg 	fi
   8860      1.1  mrg 	for var in $vars dependency_libs; do
   8861      1.1  mrg 	  # Add libraries to $var in reverse order
   8862      1.1  mrg 	  eval tmp_libs=\"\$$var\"
   8863      1.1  mrg 	  new_libs=
   8864      1.1  mrg 	  for deplib in $tmp_libs; do
   8865      1.1  mrg 	    # FIXME: Pedantically, this is the right thing to do, so
   8866      1.1  mrg 	    #        that some nasty dependency loop isn't accidentally
   8867      1.1  mrg 	    #        broken:
   8868      1.1  mrg 	    #new_libs="$deplib $new_libs"
   8869      1.1  mrg 	    # Pragmatically, this seems to cause very few problems in
   8870      1.1  mrg 	    # practice:
   8871      1.1  mrg 	    case $deplib in
   8872      1.1  mrg 	    -L*) new_libs="$deplib $new_libs" ;;
   8873      1.1  mrg 	    -R*) ;;
   8874      1.1  mrg 	    *)
   8875      1.1  mrg 	      # And here is the reason: when a library appears more
   8876      1.1  mrg 	      # than once as an explicit dependence of a library, or
   8877      1.1  mrg 	      # is implicitly linked in more than once by the
   8878      1.1  mrg 	      # compiler, it is considered special, and multiple
   8879      1.1  mrg 	      # occurrences thereof are not removed.  Compare this
   8880      1.1  mrg 	      # with having the same library being listed as a
   8881      1.1  mrg 	      # dependency of multiple other libraries: in this case,
   8882      1.1  mrg 	      # we know (pedantically, we assume) the library does not
   8883      1.1  mrg 	      # need to be listed more than once, so we keep only the
   8884      1.1  mrg 	      # last copy.  This is not always right, but it is rare
   8885      1.1  mrg 	      # enough that we require users that really mean to play
   8886      1.1  mrg 	      # such unportable linking tricks to link the library
   8887      1.1  mrg 	      # using -Wl,-lname, so that libtool does not consider it
   8888      1.1  mrg 	      # for duplicate removal.
   8889      1.1  mrg 	      case " $specialdeplibs " in
   8890      1.1  mrg 	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
   8891      1.1  mrg 	      *)
   8892      1.1  mrg 		case " $new_libs " in
   8893      1.1  mrg 		*" $deplib "*) ;;
   8894      1.1  mrg 		*) new_libs="$deplib $new_libs" ;;
   8895      1.1  mrg 		esac
   8896      1.1  mrg 		;;
   8897      1.1  mrg 	      esac
   8898      1.1  mrg 	      ;;
   8899      1.1  mrg 	    esac
   8900      1.1  mrg 	  done
   8901      1.1  mrg 	  tmp_libs=
   8902      1.1  mrg 	  for deplib in $new_libs; do
   8903      1.1  mrg 	    case $deplib in
   8904      1.1  mrg 	    -L*)
   8905      1.1  mrg 	      case " $tmp_libs " in
   8906      1.1  mrg 	      *" $deplib "*) ;;
   8907      1.1  mrg 	      *) func_append tmp_libs " $deplib" ;;
   8908      1.1  mrg 	      esac
   8909      1.1  mrg 	      ;;
   8910      1.1  mrg 	    *) func_append tmp_libs " $deplib" ;;
   8911      1.1  mrg 	    esac
   8912      1.1  mrg 	  done
   8913      1.1  mrg 	  eval $var=\"$tmp_libs\"
   8914      1.1  mrg 	done # for var
   8915      1.1  mrg       fi
   8916      1.1  mrg 
   8917      1.1  mrg       # Add Sun CC postdeps if required:
   8918      1.1  mrg       test CXX = "$tagname" && {
   8919      1.1  mrg         case $host_os in
   8920      1.1  mrg         linux*)
   8921  1.1.1.2  mrg           case `$CC -V 2>&1 | $SED 5q` in
   8922      1.1  mrg           *Sun\ C*) # Sun C++ 5.9
   8923      1.1  mrg             func_suncc_cstd_abi
   8924      1.1  mrg 
   8925      1.1  mrg             if test no != "$suncc_use_cstd_abi"; then
   8926      1.1  mrg               func_append postdeps ' -library=Cstd -library=Crun'
   8927      1.1  mrg             fi
   8928      1.1  mrg             ;;
   8929      1.1  mrg           esac
   8930      1.1  mrg           ;;
   8931      1.1  mrg 
   8932      1.1  mrg         solaris*)
   8933      1.1  mrg           func_cc_basename "$CC"
   8934      1.1  mrg           case $func_cc_basename_result in
   8935      1.1  mrg           CC* | sunCC*)
   8936      1.1  mrg             func_suncc_cstd_abi
   8937      1.1  mrg 
   8938      1.1  mrg             if test no != "$suncc_use_cstd_abi"; then
   8939      1.1  mrg               func_append postdeps ' -library=Cstd -library=Crun'
   8940      1.1  mrg             fi
   8941      1.1  mrg             ;;
   8942      1.1  mrg           esac
   8943      1.1  mrg           ;;
   8944      1.1  mrg         esac
   8945      1.1  mrg       }
   8946      1.1  mrg 
   8947      1.1  mrg       # Last step: remove runtime libs from dependency_libs
   8948      1.1  mrg       # (they stay in deplibs)
   8949      1.1  mrg       tmp_libs=
   8950      1.1  mrg       for i in $dependency_libs; do
   8951      1.1  mrg 	case " $predeps $postdeps $compiler_lib_search_path " in
   8952      1.1  mrg 	*" $i "*)
   8953      1.1  mrg 	  i=
   8954      1.1  mrg 	  ;;
   8955      1.1  mrg 	esac
   8956      1.1  mrg 	if test -n "$i"; then
   8957      1.1  mrg 	  func_append tmp_libs " $i"
   8958      1.1  mrg 	fi
   8959      1.1  mrg       done
   8960      1.1  mrg       dependency_libs=$tmp_libs
   8961      1.1  mrg     done # for pass
   8962      1.1  mrg     if test prog = "$linkmode"; then
   8963      1.1  mrg       dlfiles=$newdlfiles
   8964      1.1  mrg     fi
   8965      1.1  mrg     if test prog = "$linkmode" || test lib = "$linkmode"; then
   8966      1.1  mrg       dlprefiles=$newdlprefiles
   8967      1.1  mrg     fi
   8968      1.1  mrg 
   8969      1.1  mrg     case $linkmode in
   8970      1.1  mrg     oldlib)
   8971      1.1  mrg       if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then
   8972      1.1  mrg 	func_warning "'-dlopen' is ignored for archives"
   8973      1.1  mrg       fi
   8974      1.1  mrg 
   8975      1.1  mrg       case " $deplibs" in
   8976      1.1  mrg       *\ -l* | *\ -L*)
   8977      1.1  mrg 	func_warning "'-l' and '-L' are ignored for archives" ;;
   8978      1.1  mrg       esac
   8979      1.1  mrg 
   8980      1.1  mrg       test -n "$rpath" && \
   8981      1.1  mrg 	func_warning "'-rpath' is ignored for archives"
   8982      1.1  mrg 
   8983      1.1  mrg       test -n "$xrpath" && \
   8984      1.1  mrg 	func_warning "'-R' is ignored for archives"
   8985      1.1  mrg 
   8986      1.1  mrg       test -n "$vinfo" && \
   8987      1.1  mrg 	func_warning "'-version-info/-version-number' is ignored for archives"
   8988      1.1  mrg 
   8989      1.1  mrg       test -n "$release" && \
   8990      1.1  mrg 	func_warning "'-release' is ignored for archives"
   8991      1.1  mrg 
   8992      1.1  mrg       test -n "$export_symbols$export_symbols_regex" && \
   8993      1.1  mrg 	func_warning "'-export-symbols' is ignored for archives"
   8994      1.1  mrg 
   8995      1.1  mrg       # Now set the variables for building old libraries.
   8996      1.1  mrg       build_libtool_libs=no
   8997      1.1  mrg       oldlibs=$output
   8998      1.1  mrg       func_append objs "$old_deplibs"
   8999      1.1  mrg       ;;
   9000      1.1  mrg 
   9001      1.1  mrg     lib)
   9002      1.1  mrg       # Make sure we only generate libraries of the form 'libNAME.la'.
   9003      1.1  mrg       case $outputname in
   9004      1.1  mrg       lib*)
   9005      1.1  mrg 	func_stripname 'lib' '.la' "$outputname"
   9006      1.1  mrg 	name=$func_stripname_result
   9007      1.1  mrg 	eval shared_ext=\"$shrext_cmds\"
   9008      1.1  mrg 	eval libname=\"$libname_spec\"
   9009      1.1  mrg 	;;
   9010      1.1  mrg       *)
   9011      1.1  mrg 	test no = "$module" \
   9012      1.1  mrg 	  && func_fatal_help "libtool library '$output' must begin with 'lib'"
   9013      1.1  mrg 
   9014      1.1  mrg 	if test no != "$need_lib_prefix"; then
   9015      1.1  mrg 	  # Add the "lib" prefix for modules if required
   9016      1.1  mrg 	  func_stripname '' '.la' "$outputname"
   9017      1.1  mrg 	  name=$func_stripname_result
   9018      1.1  mrg 	  eval shared_ext=\"$shrext_cmds\"
   9019      1.1  mrg 	  eval libname=\"$libname_spec\"
   9020      1.1  mrg 	else
   9021      1.1  mrg 	  func_stripname '' '.la' "$outputname"
   9022      1.1  mrg 	  libname=$func_stripname_result
   9023      1.1  mrg 	fi
   9024      1.1  mrg 	;;
   9025      1.1  mrg       esac
   9026      1.1  mrg 
   9027      1.1  mrg       if test -n "$objs"; then
   9028      1.1  mrg 	if test pass_all != "$deplibs_check_method"; then
   9029      1.1  mrg 	  func_fatal_error "cannot build libtool library '$output' from non-libtool objects on this host:$objs"
   9030      1.1  mrg 	else
   9031      1.1  mrg 	  echo
   9032      1.1  mrg 	  $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
   9033      1.1  mrg 	  $ECHO "*** objects $objs is not portable!"
   9034      1.1  mrg 	  func_append libobjs " $objs"
   9035      1.1  mrg 	fi
   9036      1.1  mrg       fi
   9037      1.1  mrg 
   9038      1.1  mrg       test no = "$dlself" \
   9039      1.1  mrg 	|| func_warning "'-dlopen self' is ignored for libtool libraries"
   9040      1.1  mrg 
   9041      1.1  mrg       set dummy $rpath
   9042      1.1  mrg       shift
   9043      1.1  mrg       test 1 -lt "$#" \
   9044      1.1  mrg 	&& func_warning "ignoring multiple '-rpath's for a libtool library"
   9045      1.1  mrg 
   9046      1.1  mrg       install_libdir=$1
   9047      1.1  mrg 
   9048      1.1  mrg       oldlibs=
   9049      1.1  mrg       if test -z "$rpath"; then
   9050      1.1  mrg 	if test yes = "$build_libtool_libs"; then
   9051      1.1  mrg 	  # Building a libtool convenience library.
   9052      1.1  mrg 	  # Some compilers have problems with a '.al' extension so
   9053      1.1  mrg 	  # convenience libraries should have the same extension an
   9054      1.1  mrg 	  # archive normally would.
   9055      1.1  mrg 	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
   9056      1.1  mrg 	  build_libtool_libs=convenience
   9057      1.1  mrg 	  build_old_libs=yes
   9058      1.1  mrg 	fi
   9059      1.1  mrg 
   9060      1.1  mrg 	test -n "$vinfo" && \
   9061      1.1  mrg 	  func_warning "'-version-info/-version-number' is ignored for convenience libraries"
   9062      1.1  mrg 
   9063      1.1  mrg 	test -n "$release" && \
   9064      1.1  mrg 	  func_warning "'-release' is ignored for convenience libraries"
   9065      1.1  mrg       else
   9066      1.1  mrg 
   9067      1.1  mrg 	# Parse the version information argument.
   9068      1.1  mrg 	save_ifs=$IFS; IFS=:
   9069      1.1  mrg 	set dummy $vinfo 0 0 0
   9070      1.1  mrg 	shift
   9071      1.1  mrg 	IFS=$save_ifs
   9072      1.1  mrg 
   9073      1.1  mrg 	test -n "$7" && \
   9074      1.1  mrg 	  func_fatal_help "too many parameters to '-version-info'"
   9075      1.1  mrg 
   9076      1.1  mrg 	# convert absolute version numbers to libtool ages
   9077      1.1  mrg 	# this retains compatibility with .la files and attempts
   9078      1.1  mrg 	# to make the code below a bit more comprehensible
   9079      1.1  mrg 
   9080      1.1  mrg 	case $vinfo_number in
   9081      1.1  mrg 	yes)
   9082      1.1  mrg 	  number_major=$1
   9083      1.1  mrg 	  number_minor=$2
   9084      1.1  mrg 	  number_revision=$3
   9085      1.1  mrg 	  #
   9086      1.1  mrg 	  # There are really only two kinds -- those that
   9087      1.1  mrg 	  # use the current revision as the major version
   9088      1.1  mrg 	  # and those that subtract age and use age as
   9089      1.1  mrg 	  # a minor version.  But, then there is irix
   9090      1.1  mrg 	  # that has an extra 1 added just for fun
   9091      1.1  mrg 	  #
   9092      1.1  mrg 	  case $version_type in
   9093      1.1  mrg 	  # correct linux to gnu/linux during the next big refactor
   9094  1.1.1.2  mrg 	  darwin|freebsd-elf|linux|midnightbsd-elf|osf|windows|none)
   9095      1.1  mrg 	    func_arith $number_major + $number_minor
   9096      1.1  mrg 	    current=$func_arith_result
   9097      1.1  mrg 	    age=$number_minor
   9098      1.1  mrg 	    revision=$number_revision
   9099      1.1  mrg 	    ;;
   9100      1.1  mrg 	  freebsd-aout|qnx|sunos)
   9101      1.1  mrg 	    current=$number_major
   9102      1.1  mrg 	    revision=$number_minor
   9103      1.1  mrg 	    age=0
   9104      1.1  mrg 	    ;;
   9105      1.1  mrg 	  irix|nonstopux)
   9106      1.1  mrg 	    func_arith $number_major + $number_minor
   9107      1.1  mrg 	    current=$func_arith_result
   9108      1.1  mrg 	    age=$number_minor
   9109      1.1  mrg 	    revision=$number_minor
   9110      1.1  mrg 	    lt_irix_increment=no
   9111      1.1  mrg 	    ;;
   9112      1.1  mrg 	  esac
   9113      1.1  mrg 	  ;;
   9114      1.1  mrg 	no)
   9115      1.1  mrg 	  current=$1
   9116      1.1  mrg 	  revision=$2
   9117      1.1  mrg 	  age=$3
   9118      1.1  mrg 	  ;;
   9119      1.1  mrg 	esac
   9120      1.1  mrg 
   9121      1.1  mrg 	# Check that each of the things are valid numbers.
   9122      1.1  mrg 	case $current in
   9123      1.1  mrg 	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]) ;;
   9124      1.1  mrg 	*)
   9125      1.1  mrg 	  func_error "CURRENT '$current' must be a nonnegative integer"
   9126      1.1  mrg 	  func_fatal_error "'$vinfo' is not valid version information"
   9127      1.1  mrg 	  ;;
   9128      1.1  mrg 	esac
   9129      1.1  mrg 
   9130      1.1  mrg 	case $revision in
   9131      1.1  mrg 	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]) ;;
   9132      1.1  mrg 	*)
   9133      1.1  mrg 	  func_error "REVISION '$revision' must be a nonnegative integer"
   9134      1.1  mrg 	  func_fatal_error "'$vinfo' is not valid version information"
   9135      1.1  mrg 	  ;;
   9136      1.1  mrg 	esac
   9137      1.1  mrg 
   9138      1.1  mrg 	case $age in
   9139      1.1  mrg 	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]) ;;
   9140      1.1  mrg 	*)
   9141      1.1  mrg 	  func_error "AGE '$age' must be a nonnegative integer"
   9142      1.1  mrg 	  func_fatal_error "'$vinfo' is not valid version information"
   9143      1.1  mrg 	  ;;
   9144      1.1  mrg 	esac
   9145      1.1  mrg 
   9146      1.1  mrg 	if test "$age" -gt "$current"; then
   9147      1.1  mrg 	  func_error "AGE '$age' is greater than the current interface number '$current'"
   9148      1.1  mrg 	  func_fatal_error "'$vinfo' is not valid version information"
   9149      1.1  mrg 	fi
   9150      1.1  mrg 
   9151      1.1  mrg 	# Calculate the version variables.
   9152      1.1  mrg 	major=
   9153      1.1  mrg 	versuffix=
   9154      1.1  mrg 	verstring=
   9155      1.1  mrg 	case $version_type in
   9156      1.1  mrg 	none) ;;
   9157      1.1  mrg 
   9158      1.1  mrg 	darwin)
   9159      1.1  mrg 	  # Like Linux, but with the current version available in
   9160      1.1  mrg 	  # verstring for coding it into the library header
   9161      1.1  mrg 	  func_arith $current - $age
   9162      1.1  mrg 	  major=.$func_arith_result
   9163      1.1  mrg 	  versuffix=$major.$age.$revision
   9164      1.1  mrg 	  # Darwin ld doesn't like 0 for these options...
   9165      1.1  mrg 	  func_arith $current + 1
   9166      1.1  mrg 	  minor_current=$func_arith_result
   9167      1.1  mrg 	  xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision"
   9168      1.1  mrg 	  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
   9169      1.1  mrg           # On Darwin other compilers
   9170      1.1  mrg           case $CC in
   9171      1.1  mrg               nagfor*)
   9172      1.1  mrg                   verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision"
   9173      1.1  mrg                   ;;
   9174      1.1  mrg               *)
   9175      1.1  mrg                   verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
   9176      1.1  mrg                   ;;
   9177      1.1  mrg           esac
   9178      1.1  mrg 	  ;;
   9179      1.1  mrg 
   9180      1.1  mrg 	freebsd-aout)
   9181      1.1  mrg 	  major=.$current
   9182      1.1  mrg 	  versuffix=.$current.$revision
   9183      1.1  mrg 	  ;;
   9184      1.1  mrg 
   9185  1.1.1.2  mrg 	freebsd-elf | midnightbsd-elf)
   9186      1.1  mrg 	  func_arith $current - $age
   9187      1.1  mrg 	  major=.$func_arith_result
   9188      1.1  mrg 	  versuffix=$major.$age.$revision
   9189      1.1  mrg 	  ;;
   9190      1.1  mrg 
   9191      1.1  mrg 	irix | nonstopux)
   9192      1.1  mrg 	  if test no = "$lt_irix_increment"; then
   9193      1.1  mrg 	    func_arith $current - $age
   9194      1.1  mrg 	  else
   9195      1.1  mrg 	    func_arith $current - $age + 1
   9196      1.1  mrg 	  fi
   9197      1.1  mrg 	  major=$func_arith_result
   9198      1.1  mrg 
   9199      1.1  mrg 	  case $version_type in
   9200      1.1  mrg 	    nonstopux) verstring_prefix=nonstopux ;;
   9201      1.1  mrg 	    *)         verstring_prefix=sgi ;;
   9202      1.1  mrg 	  esac
   9203      1.1  mrg 	  verstring=$verstring_prefix$major.$revision
   9204      1.1  mrg 
   9205      1.1  mrg 	  # Add in all the interfaces that we are compatible with.
   9206      1.1  mrg 	  loop=$revision
   9207      1.1  mrg 	  while test 0 -ne "$loop"; do
   9208      1.1  mrg 	    func_arith $revision - $loop
   9209      1.1  mrg 	    iface=$func_arith_result
   9210      1.1  mrg 	    func_arith $loop - 1
   9211      1.1  mrg 	    loop=$func_arith_result
   9212      1.1  mrg 	    verstring=$verstring_prefix$major.$iface:$verstring
   9213      1.1  mrg 	  done
   9214      1.1  mrg 
   9215      1.1  mrg 	  # Before this point, $major must not contain '.'.
   9216      1.1  mrg 	  major=.$major
   9217      1.1  mrg 	  versuffix=$major.$revision
   9218      1.1  mrg 	  ;;
   9219      1.1  mrg 
   9220      1.1  mrg 	linux) # correct to gnu/linux during the next big refactor
   9221      1.1  mrg 	  func_arith $current - $age
   9222      1.1  mrg 	  major=.$func_arith_result
   9223      1.1  mrg 	  versuffix=$major.$age.$revision
   9224      1.1  mrg 	  ;;
   9225      1.1  mrg 
   9226      1.1  mrg 	osf)
   9227      1.1  mrg 	  func_arith $current - $age
   9228      1.1  mrg 	  major=.$func_arith_result
   9229      1.1  mrg 	  versuffix=.$current.$age.$revision
   9230      1.1  mrg 	  verstring=$current.$age.$revision
   9231      1.1  mrg 
   9232      1.1  mrg 	  # Add in all the interfaces that we are compatible with.
   9233      1.1  mrg 	  loop=$age
   9234      1.1  mrg 	  while test 0 -ne "$loop"; do
   9235      1.1  mrg 	    func_arith $current - $loop
   9236      1.1  mrg 	    iface=$func_arith_result
   9237      1.1  mrg 	    func_arith $loop - 1
   9238      1.1  mrg 	    loop=$func_arith_result
   9239      1.1  mrg 	    verstring=$verstring:$iface.0
   9240      1.1  mrg 	  done
   9241      1.1  mrg 
   9242      1.1  mrg 	  # Make executables depend on our current version.
   9243      1.1  mrg 	  func_append verstring ":$current.0"
   9244      1.1  mrg 	  ;;
   9245      1.1  mrg 
   9246      1.1  mrg 	qnx)
   9247      1.1  mrg 	  major=.$current
   9248      1.1  mrg 	  versuffix=.$current
   9249      1.1  mrg 	  ;;
   9250      1.1  mrg 
   9251      1.1  mrg 	sco)
   9252      1.1  mrg 	  major=.$current
   9253      1.1  mrg 	  versuffix=.$current
   9254      1.1  mrg 	  ;;
   9255      1.1  mrg 
   9256      1.1  mrg 	sunos)
   9257      1.1  mrg 	  major=.$current
   9258      1.1  mrg 	  versuffix=.$current.$revision
   9259      1.1  mrg 	  ;;
   9260      1.1  mrg 
   9261      1.1  mrg 	windows)
   9262      1.1  mrg 	  # Use '-' rather than '.', since we only want one
   9263      1.1  mrg 	  # extension on DOS 8.3 file systems.
   9264      1.1  mrg 	  func_arith $current - $age
   9265      1.1  mrg 	  major=$func_arith_result
   9266      1.1  mrg 	  versuffix=-$major
   9267      1.1  mrg 	  ;;
   9268      1.1  mrg 
   9269      1.1  mrg 	*)
   9270      1.1  mrg 	  func_fatal_configuration "unknown library version type '$version_type'"
   9271      1.1  mrg 	  ;;
   9272      1.1  mrg 	esac
   9273      1.1  mrg 
   9274      1.1  mrg 	# Clear the version info if we defaulted, and they specified a release.
   9275      1.1  mrg 	if test -z "$vinfo" && test -n "$release"; then
   9276      1.1  mrg 	  major=
   9277      1.1  mrg 	  case $version_type in
   9278      1.1  mrg 	  darwin)
   9279      1.1  mrg 	    # we can't check for "0.0" in archive_cmds due to quoting
   9280      1.1  mrg 	    # problems, so we reset it completely
   9281      1.1  mrg 	    verstring=
   9282      1.1  mrg 	    ;;
   9283      1.1  mrg 	  *)
   9284      1.1  mrg 	    verstring=0.0
   9285      1.1  mrg 	    ;;
   9286      1.1  mrg 	  esac
   9287      1.1  mrg 	  if test no = "$need_version"; then
   9288      1.1  mrg 	    versuffix=
   9289      1.1  mrg 	  else
   9290      1.1  mrg 	    versuffix=.0.0
   9291      1.1  mrg 	  fi
   9292      1.1  mrg 	fi
   9293      1.1  mrg 
   9294      1.1  mrg 	# Remove version info from name if versioning should be avoided
   9295      1.1  mrg 	if test yes,no = "$avoid_version,$need_version"; then
   9296      1.1  mrg 	  major=
   9297      1.1  mrg 	  versuffix=
   9298      1.1  mrg 	  verstring=
   9299      1.1  mrg 	fi
   9300      1.1  mrg 
   9301      1.1  mrg 	# Check to see if the archive will have undefined symbols.
   9302      1.1  mrg 	if test yes = "$allow_undefined"; then
   9303      1.1  mrg 	  if test unsupported = "$allow_undefined_flag"; then
   9304      1.1  mrg 	    if test yes = "$build_old_libs"; then
   9305      1.1  mrg 	      func_warning "undefined symbols not allowed in $host shared libraries; building static only"
   9306      1.1  mrg 	      build_libtool_libs=no
   9307      1.1  mrg 	    else
   9308      1.1  mrg 	      func_fatal_error "can't build $host shared library unless -no-undefined is specified"
   9309      1.1  mrg 	    fi
   9310      1.1  mrg 	  fi
   9311      1.1  mrg 	else
   9312      1.1  mrg 	  # Don't allow undefined symbols.
   9313      1.1  mrg 	  allow_undefined_flag=$no_undefined_flag
   9314      1.1  mrg 	fi
   9315      1.1  mrg 
   9316      1.1  mrg       fi
   9317      1.1  mrg 
   9318      1.1  mrg       func_generate_dlsyms "$libname" "$libname" :
   9319      1.1  mrg       func_append libobjs " $symfileobj"
   9320      1.1  mrg       test " " = "$libobjs" && libobjs=
   9321      1.1  mrg 
   9322      1.1  mrg       if test relink != "$opt_mode"; then
   9323      1.1  mrg 	# Remove our outputs, but don't remove object files since they
   9324      1.1  mrg 	# may have been created when compiling PIC objects.
   9325      1.1  mrg 	removelist=
   9326      1.1  mrg 	tempremovelist=`$ECHO "$output_objdir/*"`
   9327      1.1  mrg 	for p in $tempremovelist; do
   9328      1.1  mrg 	  case $p in
   9329      1.1  mrg 	    *.$objext | *.gcno)
   9330      1.1  mrg 	       ;;
   9331      1.1  mrg 	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/$libname$release.*)
   9332      1.1  mrg 	       if test -n "$precious_files_regex"; then
   9333      1.1  mrg 		 if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
   9334      1.1  mrg 		 then
   9335      1.1  mrg 		   continue
   9336      1.1  mrg 		 fi
   9337      1.1  mrg 	       fi
   9338      1.1  mrg 	       func_append removelist " $p"
   9339      1.1  mrg 	       ;;
   9340      1.1  mrg 	    *) ;;
   9341      1.1  mrg 	  esac
   9342      1.1  mrg 	done
   9343      1.1  mrg 	test -n "$removelist" && \
   9344      1.1  mrg 	  func_show_eval "${RM}r \$removelist"
   9345      1.1  mrg       fi
   9346      1.1  mrg 
   9347      1.1  mrg       # Now set the variables for building old libraries.
   9348      1.1  mrg       if test yes = "$build_old_libs" && test convenience != "$build_libtool_libs"; then
   9349      1.1  mrg 	func_append oldlibs " $output_objdir/$libname.$libext"
   9350      1.1  mrg 
   9351      1.1  mrg 	# Transform .lo files to .o files.
   9352      1.1  mrg 	oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; $lo2o" | $NL2SP`
   9353      1.1  mrg       fi
   9354      1.1  mrg 
   9355      1.1  mrg       # Eliminate all temporary directories.
   9356      1.1  mrg       #for path in $notinst_path; do
   9357      1.1  mrg       #	lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"`
   9358      1.1  mrg       #	deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"`
   9359      1.1  mrg       #	dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"`
   9360      1.1  mrg       #done
   9361      1.1  mrg 
   9362      1.1  mrg       if test -n "$xrpath"; then
   9363      1.1  mrg 	# If the user specified any rpath flags, then add them.
   9364      1.1  mrg 	temp_xrpath=
   9365      1.1  mrg 	for libdir in $xrpath; do
   9366      1.1  mrg 	  func_replace_sysroot "$libdir"
   9367      1.1  mrg 	  func_append temp_xrpath " -R$func_replace_sysroot_result"
   9368      1.1  mrg 	  case "$finalize_rpath " in
   9369      1.1  mrg 	  *" $libdir "*) ;;
   9370      1.1  mrg 	  *) func_append finalize_rpath " $libdir" ;;
   9371      1.1  mrg 	  esac
   9372      1.1  mrg 	done
   9373      1.1  mrg 	if test yes != "$hardcode_into_libs" || test yes = "$build_old_libs"; then
   9374      1.1  mrg 	  dependency_libs="$temp_xrpath $dependency_libs"
   9375      1.1  mrg 	fi
   9376      1.1  mrg       fi
   9377      1.1  mrg 
   9378      1.1  mrg       # Make sure dlfiles contains only unique files that won't be dlpreopened
   9379      1.1  mrg       old_dlfiles=$dlfiles
   9380      1.1  mrg       dlfiles=
   9381      1.1  mrg       for lib in $old_dlfiles; do
   9382      1.1  mrg 	case " $dlprefiles $dlfiles " in
   9383      1.1  mrg 	*" $lib "*) ;;
   9384      1.1  mrg 	*) func_append dlfiles " $lib" ;;
   9385      1.1  mrg 	esac
   9386      1.1  mrg       done
   9387      1.1  mrg 
   9388      1.1  mrg       # Make sure dlprefiles contains only unique files
   9389      1.1  mrg       old_dlprefiles=$dlprefiles
   9390      1.1  mrg       dlprefiles=
   9391      1.1  mrg       for lib in $old_dlprefiles; do
   9392      1.1  mrg 	case "$dlprefiles " in
   9393      1.1  mrg 	*" $lib "*) ;;
   9394      1.1  mrg 	*) func_append dlprefiles " $lib" ;;
   9395      1.1  mrg 	esac
   9396      1.1  mrg       done
   9397      1.1  mrg 
   9398      1.1  mrg       if test yes = "$build_libtool_libs"; then
   9399      1.1  mrg 	if test -n "$rpath"; then
   9400      1.1  mrg 	  case $host in
   9401      1.1  mrg 	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*)
   9402      1.1  mrg 	    # these systems don't actually have a c library (as such)!
   9403      1.1  mrg 	    ;;
   9404      1.1  mrg 	  *-*-rhapsody* | *-*-darwin1.[012])
   9405      1.1  mrg 	    # Rhapsody C library is in the System framework
   9406      1.1  mrg 	    func_append deplibs " System.ltframework"
   9407      1.1  mrg 	    ;;
   9408      1.1  mrg 	  *-*-netbsd*)
   9409      1.1  mrg 	    # Don't link with libc until the a.out ld.so is fixed.
   9410      1.1  mrg 	    ;;
   9411  1.1.1.2  mrg 	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-midnightbsd*)
   9412      1.1  mrg 	    # Do not include libc due to us having libc/libc_r.
   9413      1.1  mrg 	    ;;
   9414      1.1  mrg 	  *-*-sco3.2v5* | *-*-sco5v6*)
   9415      1.1  mrg 	    # Causes problems with __ctype
   9416      1.1  mrg 	    ;;
   9417      1.1  mrg 	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
   9418      1.1  mrg 	    # Compiler inserts libc in the correct place for threads to work
   9419      1.1  mrg 	    ;;
   9420      1.1  mrg 	  *)
   9421      1.1  mrg 	    # Add libc to deplibs on all other systems if necessary.
   9422      1.1  mrg 	    if test yes = "$build_libtool_need_lc"; then
   9423      1.1  mrg 	      func_append deplibs " -lc"
   9424      1.1  mrg 	    fi
   9425      1.1  mrg 	    ;;
   9426      1.1  mrg 	  esac
   9427      1.1  mrg 	fi
   9428      1.1  mrg 
   9429      1.1  mrg 	# Transform deplibs into only deplibs that can be linked in shared.
   9430      1.1  mrg 	name_save=$name
   9431      1.1  mrg 	libname_save=$libname
   9432      1.1  mrg 	release_save=$release
   9433      1.1  mrg 	versuffix_save=$versuffix
   9434      1.1  mrg 	major_save=$major
   9435      1.1  mrg 	# I'm not sure if I'm treating the release correctly.  I think
   9436      1.1  mrg 	# release should show up in the -l (ie -lgmp5) so we don't want to
   9437      1.1  mrg 	# add it in twice.  Is that correct?
   9438      1.1  mrg 	release=
   9439      1.1  mrg 	versuffix=
   9440      1.1  mrg 	major=
   9441      1.1  mrg 	newdeplibs=
   9442      1.1  mrg 	droppeddeps=no
   9443      1.1  mrg 	case $deplibs_check_method in
   9444      1.1  mrg 	pass_all)
   9445      1.1  mrg 	  # Don't check for shared/static.  Everything works.
   9446      1.1  mrg 	  # This might be a little naive.  We might want to check
   9447      1.1  mrg 	  # whether the library exists or not.  But this is on
   9448      1.1  mrg 	  # osf3 & osf4 and I'm not really sure... Just
   9449      1.1  mrg 	  # implementing what was already the behavior.
   9450      1.1  mrg 	  newdeplibs=$deplibs
   9451      1.1  mrg 	  ;;
   9452      1.1  mrg 	test_compile)
   9453      1.1  mrg 	  # This code stresses the "libraries are programs" paradigm to its
   9454      1.1  mrg 	  # limits. Maybe even breaks it.  We compile a program, linking it
   9455      1.1  mrg 	  # against the deplibs as a proxy for the library.  Then we can check
   9456      1.1  mrg 	  # whether they linked in statically or dynamically with ldd.
   9457      1.1  mrg 	  $opt_dry_run || $RM conftest.c
   9458      1.1  mrg 	  cat > conftest.c <<EOF
   9459      1.1  mrg 	  int main() { return 0; }
   9460      1.1  mrg EOF
   9461      1.1  mrg 	  $opt_dry_run || $RM conftest
   9462      1.1  mrg 	  if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
   9463      1.1  mrg 	    ldd_output=`ldd conftest`
   9464      1.1  mrg 	    for i in $deplibs; do
   9465      1.1  mrg 	      case $i in
   9466      1.1  mrg 	      -l*)
   9467      1.1  mrg 		func_stripname -l '' "$i"
   9468      1.1  mrg 		name=$func_stripname_result
   9469      1.1  mrg 		if test yes = "$allow_libtool_libs_with_static_runtimes"; then
   9470      1.1  mrg 		  case " $predeps $postdeps " in
   9471      1.1  mrg 		  *" $i "*)
   9472      1.1  mrg 		    func_append newdeplibs " $i"
   9473      1.1  mrg 		    i=
   9474      1.1  mrg 		    ;;
   9475      1.1  mrg 		  esac
   9476      1.1  mrg 		fi
   9477      1.1  mrg 		if test -n "$i"; then
   9478      1.1  mrg 		  libname=`eval "\\$ECHO \"$libname_spec\""`
   9479      1.1  mrg 		  deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
   9480      1.1  mrg 		  set dummy $deplib_matches; shift
   9481      1.1  mrg 		  deplib_match=$1
   9482      1.1  mrg 		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0; then
   9483      1.1  mrg 		    func_append newdeplibs " $i"
   9484      1.1  mrg 		  else
   9485      1.1  mrg 		    droppeddeps=yes
   9486      1.1  mrg 		    echo
   9487      1.1  mrg 		    $ECHO "*** Warning: dynamic linker does not accept needed library $i."
   9488      1.1  mrg 		    echo "*** I have the capability to make that library automatically link in when"
   9489      1.1  mrg 		    echo "*** you link to this library.  But I can only do this if you have a"
   9490      1.1  mrg 		    echo "*** shared version of the library, which I believe you do not have"
   9491      1.1  mrg 		    echo "*** because a test_compile did reveal that the linker did not use it for"
   9492      1.1  mrg 		    echo "*** its dynamic dependency list that programs get resolved with at runtime."
   9493      1.1  mrg 		  fi
   9494      1.1  mrg 		fi
   9495      1.1  mrg 		;;
   9496      1.1  mrg 	      *)
   9497      1.1  mrg 		func_append newdeplibs " $i"
   9498      1.1  mrg 		;;
   9499      1.1  mrg 	      esac
   9500      1.1  mrg 	    done
   9501      1.1  mrg 	  else
   9502      1.1  mrg 	    # Error occurred in the first compile.  Let's try to salvage
   9503      1.1  mrg 	    # the situation: Compile a separate program for each library.
   9504      1.1  mrg 	    for i in $deplibs; do
   9505      1.1  mrg 	      case $i in
   9506      1.1  mrg 	      -l*)
   9507      1.1  mrg 		func_stripname -l '' "$i"
   9508      1.1  mrg 		name=$func_stripname_result
   9509      1.1  mrg 		$opt_dry_run || $RM conftest
   9510      1.1  mrg 		if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
   9511      1.1  mrg 		  ldd_output=`ldd conftest`
   9512      1.1  mrg 		  if test yes = "$allow_libtool_libs_with_static_runtimes"; then
   9513      1.1  mrg 		    case " $predeps $postdeps " in
   9514      1.1  mrg 		    *" $i "*)
   9515      1.1  mrg 		      func_append newdeplibs " $i"
   9516      1.1  mrg 		      i=
   9517      1.1  mrg 		      ;;
   9518      1.1  mrg 		    esac
   9519      1.1  mrg 		  fi
   9520      1.1  mrg 		  if test -n "$i"; then
   9521      1.1  mrg 		    libname=`eval "\\$ECHO \"$libname_spec\""`
   9522      1.1  mrg 		    deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
   9523      1.1  mrg 		    set dummy $deplib_matches; shift
   9524      1.1  mrg 		    deplib_match=$1
   9525      1.1  mrg 		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0; then
   9526      1.1  mrg 		      func_append newdeplibs " $i"
   9527      1.1  mrg 		    else
   9528      1.1  mrg 		      droppeddeps=yes
   9529      1.1  mrg 		      echo
   9530      1.1  mrg 		      $ECHO "*** Warning: dynamic linker does not accept needed library $i."
   9531      1.1  mrg 		      echo "*** I have the capability to make that library automatically link in when"
   9532      1.1  mrg 		      echo "*** you link to this library.  But I can only do this if you have a"
   9533      1.1  mrg 		      echo "*** shared version of the library, which you do not appear to have"
   9534      1.1  mrg 		      echo "*** because a test_compile did reveal that the linker did not use this one"
   9535      1.1  mrg 		      echo "*** as a dynamic dependency that programs can get resolved with at runtime."
   9536      1.1  mrg 		    fi
   9537      1.1  mrg 		  fi
   9538      1.1  mrg 		else
   9539      1.1  mrg 		  droppeddeps=yes
   9540      1.1  mrg 		  echo
   9541      1.1  mrg 		  $ECHO "*** Warning!  Library $i is needed by this library but I was not able to"
   9542      1.1  mrg 		  echo "*** make it link in!  You will probably need to install it or some"
   9543      1.1  mrg 		  echo "*** library that it depends on before this library will be fully"
   9544      1.1  mrg 		  echo "*** functional.  Installing it before continuing would be even better."
   9545      1.1  mrg 		fi
   9546      1.1  mrg 		;;
   9547      1.1  mrg 	      *)
   9548      1.1  mrg 		func_append newdeplibs " $i"
   9549      1.1  mrg 		;;
   9550      1.1  mrg 	      esac
   9551      1.1  mrg 	    done
   9552      1.1  mrg 	  fi
   9553      1.1  mrg 	  ;;
   9554      1.1  mrg 	file_magic*)
   9555      1.1  mrg 	  set dummy $deplibs_check_method; shift
   9556      1.1  mrg 	  file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
   9557      1.1  mrg 	  for a_deplib in $deplibs; do
   9558      1.1  mrg 	    case $a_deplib in
   9559      1.1  mrg 	    -l*)
   9560      1.1  mrg 	      func_stripname -l '' "$a_deplib"
   9561      1.1  mrg 	      name=$func_stripname_result
   9562      1.1  mrg 	      if test yes = "$allow_libtool_libs_with_static_runtimes"; then
   9563      1.1  mrg 		case " $predeps $postdeps " in
   9564      1.1  mrg 		*" $a_deplib "*)
   9565      1.1  mrg 		  func_append newdeplibs " $a_deplib"
   9566      1.1  mrg 		  a_deplib=
   9567      1.1  mrg 		  ;;
   9568      1.1  mrg 		esac
   9569      1.1  mrg 	      fi
   9570      1.1  mrg 	      if test -n "$a_deplib"; then
   9571      1.1  mrg 		libname=`eval "\\$ECHO \"$libname_spec\""`
   9572      1.1  mrg 		if test -n "$file_magic_glob"; then
   9573      1.1  mrg 		  libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob`
   9574      1.1  mrg 		else
   9575      1.1  mrg 		  libnameglob=$libname
   9576      1.1  mrg 		fi
   9577      1.1  mrg 		test yes = "$want_nocaseglob" && nocaseglob=`shopt -p nocaseglob`
   9578      1.1  mrg 		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
   9579      1.1  mrg 		  if test yes = "$want_nocaseglob"; then
   9580      1.1  mrg 		    shopt -s nocaseglob
   9581      1.1  mrg 		    potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
   9582      1.1  mrg 		    $nocaseglob
   9583      1.1  mrg 		  else
   9584      1.1  mrg 		    potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
   9585      1.1  mrg 		  fi
   9586      1.1  mrg 		  for potent_lib in $potential_libs; do
   9587      1.1  mrg 		      # Follow soft links.
   9588      1.1  mrg 		      if ls -lLd "$potent_lib" 2>/dev/null |
   9589      1.1  mrg 			 $GREP " -> " >/dev/null; then
   9590      1.1  mrg 			continue
   9591      1.1  mrg 		      fi
   9592      1.1  mrg 		      # The statement above tries to avoid entering an
   9593      1.1  mrg 		      # endless loop below, in case of cyclic links.
   9594      1.1  mrg 		      # We might still enter an endless loop, since a link
   9595      1.1  mrg 		      # loop can be closed while we follow links,
   9596      1.1  mrg 		      # but so what?
   9597      1.1  mrg 		      potlib=$potent_lib
   9598      1.1  mrg 		      while test -h "$potlib" 2>/dev/null; do
   9599      1.1  mrg 			potliblink=`ls -ld $potlib | $SED 's/.* -> //'`
   9600      1.1  mrg 			case $potliblink in
   9601      1.1  mrg 			[\\/]* | [A-Za-z]:[\\/]*) potlib=$potliblink;;
   9602      1.1  mrg 			*) potlib=`$ECHO "$potlib" | $SED 's|[^/]*$||'`"$potliblink";;
   9603      1.1  mrg 			esac
   9604      1.1  mrg 		      done
   9605      1.1  mrg 		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
   9606      1.1  mrg 			 $SED -e 10q |
   9607      1.1  mrg 			 $EGREP "$file_magic_regex" > /dev/null; then
   9608      1.1  mrg 			func_append newdeplibs " $a_deplib"
   9609      1.1  mrg 			a_deplib=
   9610      1.1  mrg 			break 2
   9611      1.1  mrg 		      fi
   9612      1.1  mrg 		  done
   9613      1.1  mrg 		done
   9614      1.1  mrg 	      fi
   9615      1.1  mrg 	      if test -n "$a_deplib"; then
   9616      1.1  mrg 		droppeddeps=yes
   9617      1.1  mrg 		echo
   9618      1.1  mrg 		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
   9619      1.1  mrg 		echo "*** I have the capability to make that library automatically link in when"
   9620      1.1  mrg 		echo "*** you link to this library.  But I can only do this if you have a"
   9621      1.1  mrg 		echo "*** shared version of the library, which you do not appear to have"
   9622      1.1  mrg 		echo "*** because I did check the linker path looking for a file starting"
   9623      1.1  mrg 		if test -z "$potlib"; then
   9624      1.1  mrg 		  $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
   9625      1.1  mrg 		else
   9626      1.1  mrg 		  $ECHO "*** with $libname and none of the candidates passed a file format test"
   9627      1.1  mrg 		  $ECHO "*** using a file magic. Last file checked: $potlib"
   9628      1.1  mrg 		fi
   9629      1.1  mrg 	      fi
   9630      1.1  mrg 	      ;;
   9631      1.1  mrg 	    *)
   9632      1.1  mrg 	      # Add a -L argument.
   9633      1.1  mrg 	      func_append newdeplibs " $a_deplib"
   9634      1.1  mrg 	      ;;
   9635      1.1  mrg 	    esac
   9636      1.1  mrg 	  done # Gone through all deplibs.
   9637      1.1  mrg 	  ;;
   9638      1.1  mrg 	match_pattern*)
   9639      1.1  mrg 	  set dummy $deplibs_check_method; shift
   9640      1.1  mrg 	  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
   9641      1.1  mrg 	  for a_deplib in $deplibs; do
   9642      1.1  mrg 	    case $a_deplib in
   9643      1.1  mrg 	    -l*)
   9644      1.1  mrg 	      func_stripname -l '' "$a_deplib"
   9645      1.1  mrg 	      name=$func_stripname_result
   9646      1.1  mrg 	      if test yes = "$allow_libtool_libs_with_static_runtimes"; then
   9647      1.1  mrg 		case " $predeps $postdeps " in
   9648      1.1  mrg 		*" $a_deplib "*)
   9649      1.1  mrg 		  func_append newdeplibs " $a_deplib"
   9650      1.1  mrg 		  a_deplib=
   9651      1.1  mrg 		  ;;
   9652      1.1  mrg 		esac
   9653      1.1  mrg 	      fi
   9654      1.1  mrg 	      if test -n "$a_deplib"; then
   9655      1.1  mrg 		libname=`eval "\\$ECHO \"$libname_spec\""`
   9656      1.1  mrg 		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
   9657      1.1  mrg 		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
   9658      1.1  mrg 		  for potent_lib in $potential_libs; do
   9659      1.1  mrg 		    potlib=$potent_lib # see symlink-check above in file_magic test
   9660      1.1  mrg 		    if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \
   9661      1.1  mrg 		       $EGREP "$match_pattern_regex" > /dev/null; then
   9662      1.1  mrg 		      func_append newdeplibs " $a_deplib"
   9663      1.1  mrg 		      a_deplib=
   9664      1.1  mrg 		      break 2
   9665      1.1  mrg 		    fi
   9666      1.1  mrg 		  done
   9667      1.1  mrg 		done
   9668      1.1  mrg 	      fi
   9669      1.1  mrg 	      if test -n "$a_deplib"; then
   9670      1.1  mrg 		droppeddeps=yes
   9671      1.1  mrg 		echo
   9672      1.1  mrg 		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
   9673      1.1  mrg 		echo "*** I have the capability to make that library automatically link in when"
   9674      1.1  mrg 		echo "*** you link to this library.  But I can only do this if you have a"
   9675      1.1  mrg 		echo "*** shared version of the library, which you do not appear to have"
   9676      1.1  mrg 		echo "*** because I did check the linker path looking for a file starting"
   9677      1.1  mrg 		if test -z "$potlib"; then
   9678      1.1  mrg 		  $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
   9679      1.1  mrg 		else
   9680      1.1  mrg 		  $ECHO "*** with $libname and none of the candidates passed a file format test"
   9681      1.1  mrg 		  $ECHO "*** using a regex pattern. Last file checked: $potlib"
   9682      1.1  mrg 		fi
   9683      1.1  mrg 	      fi
   9684      1.1  mrg 	      ;;
   9685      1.1  mrg 	    *)
   9686      1.1  mrg 	      # Add a -L argument.
   9687      1.1  mrg 	      func_append newdeplibs " $a_deplib"
   9688      1.1  mrg 	      ;;
   9689      1.1  mrg 	    esac
   9690      1.1  mrg 	  done # Gone through all deplibs.
   9691      1.1  mrg 	  ;;
   9692      1.1  mrg 	none | unknown | *)
   9693      1.1  mrg 	  newdeplibs=
   9694      1.1  mrg 	  tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'`
   9695      1.1  mrg 	  if test yes = "$allow_libtool_libs_with_static_runtimes"; then
   9696      1.1  mrg 	    for i in $predeps $postdeps; do
   9697      1.1  mrg 	      # can't use Xsed below, because $i might contain '/'
   9698      1.1  mrg 	      tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s|$i||"`
   9699      1.1  mrg 	    done
   9700      1.1  mrg 	  fi
   9701      1.1  mrg 	  case $tmp_deplibs in
   9702      1.1  mrg 	  *[!\	\ ]*)
   9703      1.1  mrg 	    echo
   9704      1.1  mrg 	    if test none = "$deplibs_check_method"; then
   9705      1.1  mrg 	      echo "*** Warning: inter-library dependencies are not supported in this platform."
   9706      1.1  mrg 	    else
   9707      1.1  mrg 	      echo "*** Warning: inter-library dependencies are not known to be supported."
   9708      1.1  mrg 	    fi
   9709      1.1  mrg 	    echo "*** All declared inter-library dependencies are being dropped."
   9710      1.1  mrg 	    droppeddeps=yes
   9711      1.1  mrg 	    ;;
   9712      1.1  mrg 	  esac
   9713      1.1  mrg 	  ;;
   9714      1.1  mrg 	esac
   9715      1.1  mrg 	versuffix=$versuffix_save
   9716      1.1  mrg 	major=$major_save
   9717      1.1  mrg 	release=$release_save
   9718      1.1  mrg 	libname=$libname_save
   9719      1.1  mrg 	name=$name_save
   9720      1.1  mrg 
   9721      1.1  mrg 	case $host in
   9722      1.1  mrg 	*-*-rhapsody* | *-*-darwin1.[012])
   9723      1.1  mrg 	  # On Rhapsody replace the C library with the System framework
   9724      1.1  mrg 	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'`
   9725      1.1  mrg 	  ;;
   9726      1.1  mrg 	esac
   9727      1.1  mrg 
   9728      1.1  mrg 	if test yes = "$droppeddeps"; then
   9729      1.1  mrg 	  if test yes = "$module"; then
   9730      1.1  mrg 	    echo
   9731      1.1  mrg 	    echo "*** Warning: libtool could not satisfy all declared inter-library"
   9732      1.1  mrg 	    $ECHO "*** dependencies of module $libname.  Therefore, libtool will create"
   9733      1.1  mrg 	    echo "*** a static module, that should work as long as the dlopening"
   9734      1.1  mrg 	    echo "*** application is linked with the -dlopen flag."
   9735      1.1  mrg 	    if test -z "$global_symbol_pipe"; then
   9736      1.1  mrg 	      echo
   9737      1.1  mrg 	      echo "*** However, this would only work if libtool was able to extract symbol"
   9738      1.1  mrg 	      echo "*** lists from a program, using 'nm' or equivalent, but libtool could"
   9739      1.1  mrg 	      echo "*** not find such a program.  So, this module is probably useless."
   9740      1.1  mrg 	      echo "*** 'nm' from GNU binutils and a full rebuild may help."
   9741      1.1  mrg 	    fi
   9742      1.1  mrg 	    if test no = "$build_old_libs"; then
   9743      1.1  mrg 	      oldlibs=$output_objdir/$libname.$libext
   9744      1.1  mrg 	      build_libtool_libs=module
   9745      1.1  mrg 	      build_old_libs=yes
   9746      1.1  mrg 	    else
   9747      1.1  mrg 	      build_libtool_libs=no
   9748      1.1  mrg 	    fi
   9749      1.1  mrg 	  else
   9750      1.1  mrg 	    echo "*** The inter-library dependencies that have been dropped here will be"
   9751      1.1  mrg 	    echo "*** automatically added whenever a program is linked with this library"
   9752      1.1  mrg 	    echo "*** or is declared to -dlopen it."
   9753      1.1  mrg 
   9754      1.1  mrg 	    if test no = "$allow_undefined"; then
   9755      1.1  mrg 	      echo
   9756      1.1  mrg 	      echo "*** Since this library must not contain undefined symbols,"
   9757      1.1  mrg 	      echo "*** because either the platform does not support them or"
   9758      1.1  mrg 	      echo "*** it was explicitly requested with -no-undefined,"
   9759      1.1  mrg 	      echo "*** libtool will only create a static version of it."
   9760      1.1  mrg 	      if test no = "$build_old_libs"; then
   9761      1.1  mrg 		oldlibs=$output_objdir/$libname.$libext
   9762      1.1  mrg 		build_libtool_libs=module
   9763      1.1  mrg 		build_old_libs=yes
   9764      1.1  mrg 	      else
   9765      1.1  mrg 		build_libtool_libs=no
   9766      1.1  mrg 	      fi
   9767      1.1  mrg 	    fi
   9768      1.1  mrg 	  fi
   9769      1.1  mrg 	fi
   9770      1.1  mrg 	# Done checking deplibs!
   9771      1.1  mrg 	deplibs=$newdeplibs
   9772      1.1  mrg       fi
   9773      1.1  mrg       # Time to change all our "foo.ltframework" stuff back to "-framework foo"
   9774      1.1  mrg       case $host in
   9775      1.1  mrg 	*-*-darwin*)
   9776      1.1  mrg 	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
   9777      1.1  mrg 	  new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
   9778      1.1  mrg 	  deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
   9779      1.1  mrg 	  ;;
   9780      1.1  mrg       esac
   9781      1.1  mrg 
   9782      1.1  mrg       # move library search paths that coincide with paths to not yet
   9783      1.1  mrg       # installed libraries to the beginning of the library search list
   9784      1.1  mrg       new_libs=
   9785      1.1  mrg       for path in $notinst_path; do
   9786      1.1  mrg 	case " $new_libs " in
   9787      1.1  mrg 	*" -L$path/$objdir "*) ;;
   9788      1.1  mrg 	*)
   9789      1.1  mrg 	  case " $deplibs " in
   9790      1.1  mrg 	  *" -L$path/$objdir "*)
   9791      1.1  mrg 	    func_append new_libs " -L$path/$objdir" ;;
   9792      1.1  mrg 	  esac
   9793      1.1  mrg 	  ;;
   9794      1.1  mrg 	esac
   9795      1.1  mrg       done
   9796      1.1  mrg       for deplib in $deplibs; do
   9797      1.1  mrg 	case $deplib in
   9798      1.1  mrg 	-L*)
   9799      1.1  mrg 	  case " $new_libs " in
   9800      1.1  mrg 	  *" $deplib "*) ;;
   9801      1.1  mrg 	  *) func_append new_libs " $deplib" ;;
   9802      1.1  mrg 	  esac
   9803      1.1  mrg 	  ;;
   9804      1.1  mrg 	*) func_append new_libs " $deplib" ;;
   9805      1.1  mrg 	esac
   9806      1.1  mrg       done
   9807      1.1  mrg       deplibs=$new_libs
   9808      1.1  mrg 
   9809      1.1  mrg       # All the library-specific variables (install_libdir is set above).
   9810      1.1  mrg       library_names=
   9811      1.1  mrg       old_library=
   9812      1.1  mrg       dlname=
   9813      1.1  mrg 
   9814      1.1  mrg       # Test again, we may have decided not to build it any more
   9815      1.1  mrg       if test yes = "$build_libtool_libs"; then
   9816      1.1  mrg 	# Remove $wl instances when linking with ld.
   9817      1.1  mrg 	# FIXME: should test the right _cmds variable.
   9818      1.1  mrg 	case $archive_cmds in
   9819      1.1  mrg 	  *\$LD\ *) wl= ;;
   9820      1.1  mrg         esac
   9821      1.1  mrg 	if test yes = "$hardcode_into_libs"; then
   9822      1.1  mrg 	  # Hardcode the library paths
   9823      1.1  mrg 	  hardcode_libdirs=
   9824      1.1  mrg 	  dep_rpath=
   9825      1.1  mrg 	  rpath=$finalize_rpath
   9826      1.1  mrg 	  test relink = "$opt_mode" || rpath=$compile_rpath$rpath
   9827      1.1  mrg 	  for libdir in $rpath; do
   9828      1.1  mrg 	    if test -n "$hardcode_libdir_flag_spec"; then
   9829      1.1  mrg 	      if test -n "$hardcode_libdir_separator"; then
   9830      1.1  mrg 		func_replace_sysroot "$libdir"
   9831      1.1  mrg 		libdir=$func_replace_sysroot_result
   9832      1.1  mrg 		if test -z "$hardcode_libdirs"; then
   9833      1.1  mrg 		  hardcode_libdirs=$libdir
   9834      1.1  mrg 		else
   9835      1.1  mrg 		  # Just accumulate the unique libdirs.
   9836      1.1  mrg 		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
   9837      1.1  mrg 		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
   9838      1.1  mrg 		    ;;
   9839      1.1  mrg 		  *)
   9840      1.1  mrg 		    func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
   9841      1.1  mrg 		    ;;
   9842      1.1  mrg 		  esac
   9843      1.1  mrg 		fi
   9844      1.1  mrg 	      else
   9845      1.1  mrg 		eval flag=\"$hardcode_libdir_flag_spec\"
   9846      1.1  mrg 		func_append dep_rpath " $flag"
   9847      1.1  mrg 	      fi
   9848      1.1  mrg 	    elif test -n "$runpath_var"; then
   9849      1.1  mrg 	      case "$perm_rpath " in
   9850      1.1  mrg 	      *" $libdir "*) ;;
   9851      1.1  mrg 	      *) func_append perm_rpath " $libdir" ;;
   9852      1.1  mrg 	      esac
   9853      1.1  mrg 	    fi
   9854      1.1  mrg 	  done
   9855      1.1  mrg 	  # Substitute the hardcoded libdirs into the rpath.
   9856      1.1  mrg 	  if test -n "$hardcode_libdir_separator" &&
   9857      1.1  mrg 	     test -n "$hardcode_libdirs"; then
   9858      1.1  mrg 	    libdir=$hardcode_libdirs
   9859      1.1  mrg 	    eval "dep_rpath=\"$hardcode_libdir_flag_spec\""
   9860      1.1  mrg 	  fi
   9861      1.1  mrg 	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
   9862      1.1  mrg 	    # We should set the runpath_var.
   9863      1.1  mrg 	    rpath=
   9864      1.1  mrg 	    for dir in $perm_rpath; do
   9865      1.1  mrg 	      func_append rpath "$dir:"
   9866      1.1  mrg 	    done
   9867      1.1  mrg 	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
   9868      1.1  mrg 	  fi
   9869      1.1  mrg 	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
   9870      1.1  mrg 	fi
   9871      1.1  mrg 
   9872      1.1  mrg 	shlibpath=$finalize_shlibpath
   9873      1.1  mrg 	test relink = "$opt_mode" || shlibpath=$compile_shlibpath$shlibpath
   9874      1.1  mrg 	if test -n "$shlibpath"; then
   9875      1.1  mrg 	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
   9876      1.1  mrg 	fi
   9877      1.1  mrg 
   9878      1.1  mrg 	# Get the real and link names of the library.
   9879      1.1  mrg 	eval shared_ext=\"$shrext_cmds\"
   9880      1.1  mrg 	eval library_names=\"$library_names_spec\"
   9881      1.1  mrg 	set dummy $library_names
   9882      1.1  mrg 	shift
   9883      1.1  mrg 	realname=$1
   9884      1.1  mrg 	shift
   9885      1.1  mrg 
   9886      1.1  mrg 	if test -n "$soname_spec"; then
   9887      1.1  mrg 	  eval soname=\"$soname_spec\"
   9888      1.1  mrg 	else
   9889      1.1  mrg 	  soname=$realname
   9890      1.1  mrg 	fi
   9891      1.1  mrg 	if test -z "$dlname"; then
   9892      1.1  mrg 	  dlname=$soname
   9893      1.1  mrg 	fi
   9894      1.1  mrg 
   9895      1.1  mrg 	lib=$output_objdir/$realname
   9896      1.1  mrg 	linknames=
   9897      1.1  mrg 	for link
   9898      1.1  mrg 	do
   9899      1.1  mrg 	  func_append linknames " $link"
   9900      1.1  mrg 	done
   9901      1.1  mrg 
   9902      1.1  mrg 	# Use standard objects if they are pic
   9903      1.1  mrg 	test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP`
   9904      1.1  mrg 	test "X$libobjs" = "X " && libobjs=
   9905      1.1  mrg 
   9906      1.1  mrg 	delfiles=
   9907      1.1  mrg 	if test -n "$export_symbols" && test -n "$include_expsyms"; then
   9908      1.1  mrg 	  $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
   9909      1.1  mrg 	  export_symbols=$output_objdir/$libname.uexp
   9910      1.1  mrg 	  func_append delfiles " $export_symbols"
   9911      1.1  mrg 	fi
   9912      1.1  mrg 
   9913      1.1  mrg 	orig_export_symbols=
   9914      1.1  mrg 	case $host_os in
   9915      1.1  mrg 	cygwin* | mingw* | cegcc*)
   9916      1.1  mrg 	  if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
   9917      1.1  mrg 	    # exporting using user supplied symfile
   9918      1.1  mrg 	    func_dll_def_p "$export_symbols" || {
   9919      1.1  mrg 	      # and it's NOT already a .def file. Must figure out
   9920      1.1  mrg 	      # which of the given symbols are data symbols and tag
   9921      1.1  mrg 	      # them as such. So, trigger use of export_symbols_cmds.
   9922      1.1  mrg 	      # export_symbols gets reassigned inside the "prepare
   9923      1.1  mrg 	      # the list of exported symbols" if statement, so the
   9924      1.1  mrg 	      # include_expsyms logic still works.
   9925      1.1  mrg 	      orig_export_symbols=$export_symbols
   9926      1.1  mrg 	      export_symbols=
   9927      1.1  mrg 	      always_export_symbols=yes
   9928      1.1  mrg 	    }
   9929      1.1  mrg 	  fi
   9930      1.1  mrg 	  ;;
   9931      1.1  mrg 	esac
   9932      1.1  mrg 
   9933      1.1  mrg 	# Prepare the list of exported symbols
   9934      1.1  mrg 	if test -z "$export_symbols"; then
   9935      1.1  mrg 	  if test yes = "$always_export_symbols" || test -n "$export_symbols_regex"; then
   9936      1.1  mrg 	    func_verbose "generating symbol list for '$libname.la'"
   9937      1.1  mrg 	    export_symbols=$output_objdir/$libname.exp
   9938      1.1  mrg 	    $opt_dry_run || $RM $export_symbols
   9939      1.1  mrg 	    cmds=$export_symbols_cmds
   9940      1.1  mrg 	    save_ifs=$IFS; IFS='~'
   9941      1.1  mrg 	    for cmd1 in $cmds; do
   9942      1.1  mrg 	      IFS=$save_ifs
   9943      1.1  mrg 	      # Take the normal branch if the nm_file_list_spec branch
   9944      1.1  mrg 	      # doesn't work or if tool conversion is not needed.
   9945      1.1  mrg 	      case $nm_file_list_spec~$to_tool_file_cmd in
   9946      1.1  mrg 		*~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*)
   9947      1.1  mrg 		  try_normal_branch=yes
   9948      1.1  mrg 		  eval cmd=\"$cmd1\"
   9949      1.1  mrg 		  func_len " $cmd"
   9950      1.1  mrg 		  len=$func_len_result
   9951      1.1  mrg 		  ;;
   9952      1.1  mrg 		*)
   9953      1.1  mrg 		  try_normal_branch=no
   9954      1.1  mrg 		  ;;
   9955      1.1  mrg 	      esac
   9956      1.1  mrg 	      if test yes = "$try_normal_branch" \
   9957      1.1  mrg 		 && { test "$len" -lt "$max_cmd_len" \
   9958      1.1  mrg 		      || test "$max_cmd_len" -le -1; }
   9959      1.1  mrg 	      then
   9960      1.1  mrg 		func_show_eval "$cmd" 'exit $?'
   9961      1.1  mrg 		skipped_export=false
   9962      1.1  mrg 	      elif test -n "$nm_file_list_spec"; then
   9963      1.1  mrg 		func_basename "$output"
   9964      1.1  mrg 		output_la=$func_basename_result
   9965      1.1  mrg 		save_libobjs=$libobjs
   9966      1.1  mrg 		save_output=$output
   9967      1.1  mrg 		output=$output_objdir/$output_la.nm
   9968      1.1  mrg 		func_to_tool_file "$output"
   9969      1.1  mrg 		libobjs=$nm_file_list_spec$func_to_tool_file_result
   9970      1.1  mrg 		func_append delfiles " $output"
   9971      1.1  mrg 		func_verbose "creating $NM input file list: $output"
   9972      1.1  mrg 		for obj in $save_libobjs; do
   9973      1.1  mrg 		  func_to_tool_file "$obj"
   9974      1.1  mrg 		  $ECHO "$func_to_tool_file_result"
   9975      1.1  mrg 		done > "$output"
   9976      1.1  mrg 		eval cmd=\"$cmd1\"
   9977      1.1  mrg 		func_show_eval "$cmd" 'exit $?'
   9978      1.1  mrg 		output=$save_output
   9979      1.1  mrg 		libobjs=$save_libobjs
   9980      1.1  mrg 		skipped_export=false
   9981      1.1  mrg 	      else
   9982      1.1  mrg 		# The command line is too long to execute in one step.
   9983      1.1  mrg 		func_verbose "using reloadable object file for export list..."
   9984      1.1  mrg 		skipped_export=:
   9985      1.1  mrg 		# Break out early, otherwise skipped_export may be
   9986      1.1  mrg 		# set to false by a later but shorter cmd.
   9987      1.1  mrg 		break
   9988      1.1  mrg 	      fi
   9989      1.1  mrg 	    done
   9990      1.1  mrg 	    IFS=$save_ifs
   9991      1.1  mrg 	    if test -n "$export_symbols_regex" && test : != "$skipped_export"; then
   9992      1.1  mrg 	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
   9993      1.1  mrg 	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
   9994      1.1  mrg 	    fi
   9995      1.1  mrg 	  fi
   9996      1.1  mrg 	fi
   9997      1.1  mrg 
   9998      1.1  mrg 	if test -n "$export_symbols" && test -n "$include_expsyms"; then
   9999      1.1  mrg 	  tmp_export_symbols=$export_symbols
   10000      1.1  mrg 	  test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols
   10001      1.1  mrg 	  $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
   10002      1.1  mrg 	fi
   10003      1.1  mrg 
   10004      1.1  mrg 	if test : != "$skipped_export" && test -n "$orig_export_symbols"; then
   10005      1.1  mrg 	  # The given exports_symbols file has to be filtered, so filter it.
   10006      1.1  mrg 	  func_verbose "filter symbol list for '$libname.la' to tag DATA exports"
   10007      1.1  mrg 	  # FIXME: $output_objdir/$libname.filter potentially contains lots of
   10008      1.1  mrg 	  # 's' commands, which not all seds can handle. GNU sed should be fine
   10009      1.1  mrg 	  # though. Also, the filter scales superlinearly with the number of
   10010      1.1  mrg 	  # global variables. join(1) would be nice here, but unfortunately
   10011      1.1  mrg 	  # isn't a blessed tool.
   10012      1.1  mrg 	  $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
   10013      1.1  mrg 	  func_append delfiles " $export_symbols $output_objdir/$libname.filter"
   10014      1.1  mrg 	  export_symbols=$output_objdir/$libname.def
   10015      1.1  mrg 	  $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
   10016      1.1  mrg 	fi
   10017      1.1  mrg 
   10018      1.1  mrg 	tmp_deplibs=
   10019      1.1  mrg 	for test_deplib in $deplibs; do
   10020      1.1  mrg 	  case " $convenience " in
   10021      1.1  mrg 	  *" $test_deplib "*) ;;
   10022      1.1  mrg 	  *)
   10023      1.1  mrg 	    func_append tmp_deplibs " $test_deplib"
   10024      1.1  mrg 	    ;;
   10025      1.1  mrg 	  esac
   10026      1.1  mrg 	done
   10027      1.1  mrg 	deplibs=$tmp_deplibs
   10028      1.1  mrg 
   10029      1.1  mrg 	if test -n "$convenience"; then
   10030      1.1  mrg 	  if test -n "$whole_archive_flag_spec" &&
   10031      1.1  mrg 	    test yes = "$compiler_needs_object" &&
   10032      1.1  mrg 	    test -z "$libobjs"; then
   10033      1.1  mrg 	    # extract the archives, so we have objects to list.
   10034      1.1  mrg 	    # TODO: could optimize this to just extract one archive.
   10035      1.1  mrg 	    whole_archive_flag_spec=
   10036      1.1  mrg 	  fi
   10037      1.1  mrg 	  if test -n "$whole_archive_flag_spec"; then
   10038      1.1  mrg 	    save_libobjs=$libobjs
   10039      1.1  mrg 	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
   10040      1.1  mrg 	    test "X$libobjs" = "X " && libobjs=
   10041      1.1  mrg 	  else
   10042      1.1  mrg 	    gentop=$output_objdir/${outputname}x
   10043      1.1  mrg 	    func_append generated " $gentop"
   10044      1.1  mrg 
   10045      1.1  mrg 	    func_extract_archives $gentop $convenience
   10046      1.1  mrg 	    func_append libobjs " $func_extract_archives_result"
   10047      1.1  mrg 	    test "X$libobjs" = "X " && libobjs=
   10048      1.1  mrg 	  fi
   10049      1.1  mrg 	fi
   10050      1.1  mrg 
   10051      1.1  mrg 	if test yes = "$thread_safe" && test -n "$thread_safe_flag_spec"; then
   10052      1.1  mrg 	  eval flag=\"$thread_safe_flag_spec\"
   10053      1.1  mrg 	  func_append linker_flags " $flag"
   10054      1.1  mrg 	fi
   10055      1.1  mrg 
   10056      1.1  mrg 	# Make a backup of the uninstalled library when relinking
   10057      1.1  mrg 	if test relink = "$opt_mode"; then
   10058      1.1  mrg 	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
   10059      1.1  mrg 	fi
   10060      1.1  mrg 
   10061      1.1  mrg 	# Do each of the archive commands.
   10062      1.1  mrg 	if test yes = "$module" && test -n "$module_cmds"; then
   10063      1.1  mrg 	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
   10064      1.1  mrg 	    eval test_cmds=\"$module_expsym_cmds\"
   10065      1.1  mrg 	    cmds=$module_expsym_cmds
   10066      1.1  mrg 	  else
   10067      1.1  mrg 	    eval test_cmds=\"$module_cmds\"
   10068      1.1  mrg 	    cmds=$module_cmds
   10069      1.1  mrg 	  fi
   10070      1.1  mrg 	else
   10071      1.1  mrg 	  if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
   10072      1.1  mrg 	    eval test_cmds=\"$archive_expsym_cmds\"
   10073      1.1  mrg 	    cmds=$archive_expsym_cmds
   10074      1.1  mrg 	  else
   10075      1.1  mrg 	    eval test_cmds=\"$archive_cmds\"
   10076      1.1  mrg 	    cmds=$archive_cmds
   10077      1.1  mrg 	  fi
   10078      1.1  mrg 	fi
   10079      1.1  mrg 
   10080      1.1  mrg 	if test : != "$skipped_export" &&
   10081      1.1  mrg 	   func_len " $test_cmds" &&
   10082      1.1  mrg 	   len=$func_len_result &&
   10083      1.1  mrg 	   test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
   10084      1.1  mrg 	  :
   10085      1.1  mrg 	else
   10086      1.1  mrg 	  # The command line is too long to link in one step, link piecewise
   10087      1.1  mrg 	  # or, if using GNU ld and skipped_export is not :, use a linker
   10088      1.1  mrg 	  # script.
   10089      1.1  mrg 
   10090      1.1  mrg 	  # Save the value of $output and $libobjs because we want to
   10091      1.1  mrg 	  # use them later.  If we have whole_archive_flag_spec, we
   10092      1.1  mrg 	  # want to use save_libobjs as it was before
   10093      1.1  mrg 	  # whole_archive_flag_spec was expanded, because we can't
   10094      1.1  mrg 	  # assume the linker understands whole_archive_flag_spec.
   10095      1.1  mrg 	  # This may have to be revisited, in case too many
   10096      1.1  mrg 	  # convenience libraries get linked in and end up exceeding
   10097      1.1  mrg 	  # the spec.
   10098      1.1  mrg 	  if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
   10099      1.1  mrg 	    save_libobjs=$libobjs
   10100      1.1  mrg 	  fi
   10101      1.1  mrg 	  save_output=$output
   10102      1.1  mrg 	  func_basename "$output"
   10103      1.1  mrg 	  output_la=$func_basename_result
   10104      1.1  mrg 
   10105      1.1  mrg 	  # Clear the reloadable object creation command queue and
   10106      1.1  mrg 	  # initialize k to one.
   10107      1.1  mrg 	  test_cmds=
   10108      1.1  mrg 	  concat_cmds=
   10109      1.1  mrg 	  objlist=
   10110      1.1  mrg 	  last_robj=
   10111      1.1  mrg 	  k=1
   10112      1.1  mrg 
   10113      1.1  mrg 	  if test -n "$save_libobjs" && test : != "$skipped_export" && test yes = "$with_gnu_ld"; then
   10114      1.1  mrg 	    output=$output_objdir/$output_la.lnkscript
   10115      1.1  mrg 	    func_verbose "creating GNU ld script: $output"
   10116      1.1  mrg 	    echo 'INPUT (' > $output
   10117      1.1  mrg 	    for obj in $save_libobjs
   10118      1.1  mrg 	    do
   10119      1.1  mrg 	      func_to_tool_file "$obj"
   10120      1.1  mrg 	      $ECHO "$func_to_tool_file_result" >> $output
   10121      1.1  mrg 	    done
   10122      1.1  mrg 	    echo ')' >> $output
   10123      1.1  mrg 	    func_append delfiles " $output"
   10124      1.1  mrg 	    func_to_tool_file "$output"
   10125      1.1  mrg 	    output=$func_to_tool_file_result
   10126      1.1  mrg 	  elif test -n "$save_libobjs" && test : != "$skipped_export" && test -n "$file_list_spec"; then
   10127      1.1  mrg 	    output=$output_objdir/$output_la.lnk
   10128      1.1  mrg 	    func_verbose "creating linker input file list: $output"
   10129      1.1  mrg 	    : > $output
   10130      1.1  mrg 	    set x $save_libobjs
   10131      1.1  mrg 	    shift
   10132      1.1  mrg 	    firstobj=
   10133      1.1  mrg 	    if test yes = "$compiler_needs_object"; then
   10134      1.1  mrg 	      firstobj="$1 "
   10135      1.1  mrg 	      shift
   10136      1.1  mrg 	    fi
   10137      1.1  mrg 	    for obj
   10138      1.1  mrg 	    do
   10139      1.1  mrg 	      func_to_tool_file "$obj"
   10140      1.1  mrg 	      $ECHO "$func_to_tool_file_result" >> $output
   10141      1.1  mrg 	    done
   10142      1.1  mrg 	    func_append delfiles " $output"
   10143      1.1  mrg 	    func_to_tool_file "$output"
   10144      1.1  mrg 	    output=$firstobj\"$file_list_spec$func_to_tool_file_result\"
   10145      1.1  mrg 	  else
   10146      1.1  mrg 	    if test -n "$save_libobjs"; then
   10147      1.1  mrg 	      func_verbose "creating reloadable object files..."
   10148      1.1  mrg 	      output=$output_objdir/$output_la-$k.$objext
   10149      1.1  mrg 	      eval test_cmds=\"$reload_cmds\"
   10150      1.1  mrg 	      func_len " $test_cmds"
   10151      1.1  mrg 	      len0=$func_len_result
   10152      1.1  mrg 	      len=$len0
   10153      1.1  mrg 
   10154      1.1  mrg 	      # Loop over the list of objects to be linked.
   10155      1.1  mrg 	      for obj in $save_libobjs
   10156      1.1  mrg 	      do
   10157      1.1  mrg 		func_len " $obj"
   10158      1.1  mrg 		func_arith $len + $func_len_result
   10159      1.1  mrg 		len=$func_arith_result
   10160      1.1  mrg 		if test -z "$objlist" ||
   10161      1.1  mrg 		   test "$len" -lt "$max_cmd_len"; then
   10162      1.1  mrg 		  func_append objlist " $obj"
   10163      1.1  mrg 		else
   10164      1.1  mrg 		  # The command $test_cmds is almost too long, add a
   10165      1.1  mrg 		  # command to the queue.
   10166      1.1  mrg 		  if test 1 -eq "$k"; then
   10167      1.1  mrg 		    # The first file doesn't have a previous command to add.
   10168      1.1  mrg 		    reload_objs=$objlist
   10169      1.1  mrg 		    eval concat_cmds=\"$reload_cmds\"
   10170      1.1  mrg 		  else
   10171      1.1  mrg 		    # All subsequent reloadable object files will link in
   10172      1.1  mrg 		    # the last one created.
   10173      1.1  mrg 		    reload_objs="$objlist $last_robj"
   10174      1.1  mrg 		    eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\"
   10175      1.1  mrg 		  fi
   10176      1.1  mrg 		  last_robj=$output_objdir/$output_la-$k.$objext
   10177      1.1  mrg 		  func_arith $k + 1
   10178      1.1  mrg 		  k=$func_arith_result
   10179      1.1  mrg 		  output=$output_objdir/$output_la-$k.$objext
   10180      1.1  mrg 		  objlist=" $obj"
   10181      1.1  mrg 		  func_len " $last_robj"
   10182      1.1  mrg 		  func_arith $len0 + $func_len_result
   10183      1.1  mrg 		  len=$func_arith_result
   10184      1.1  mrg 		fi
   10185      1.1  mrg 	      done
   10186      1.1  mrg 	      # Handle the remaining objects by creating one last
   10187      1.1  mrg 	      # reloadable object file.  All subsequent reloadable object
   10188      1.1  mrg 	      # files will link in the last one created.
   10189      1.1  mrg 	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
   10190      1.1  mrg 	      reload_objs="$objlist $last_robj"
   10191      1.1  mrg 	      eval concat_cmds=\"\$concat_cmds$reload_cmds\"
   10192      1.1  mrg 	      if test -n "$last_robj"; then
   10193      1.1  mrg 	        eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
   10194      1.1  mrg 	      fi
   10195      1.1  mrg 	      func_append delfiles " $output"
   10196      1.1  mrg 
   10197      1.1  mrg 	    else
   10198      1.1  mrg 	      output=
   10199      1.1  mrg 	    fi
   10200      1.1  mrg 
   10201      1.1  mrg 	    ${skipped_export-false} && {
   10202      1.1  mrg 	      func_verbose "generating symbol list for '$libname.la'"
   10203      1.1  mrg 	      export_symbols=$output_objdir/$libname.exp
   10204      1.1  mrg 	      $opt_dry_run || $RM $export_symbols
   10205      1.1  mrg 	      libobjs=$output
   10206      1.1  mrg 	      # Append the command to create the export file.
   10207      1.1  mrg 	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
   10208      1.1  mrg 	      eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
   10209      1.1  mrg 	      if test -n "$last_robj"; then
   10210      1.1  mrg 		eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
   10211      1.1  mrg 	      fi
   10212      1.1  mrg 	    }
   10213      1.1  mrg 
   10214      1.1  mrg 	    test -n "$save_libobjs" &&
   10215      1.1  mrg 	      func_verbose "creating a temporary reloadable object file: $output"
   10216      1.1  mrg 
   10217      1.1  mrg 	    # Loop through the commands generated above and execute them.
   10218      1.1  mrg 	    save_ifs=$IFS; IFS='~'
   10219      1.1  mrg 	    for cmd in $concat_cmds; do
   10220      1.1  mrg 	      IFS=$save_ifs
   10221      1.1  mrg 	      $opt_quiet || {
   10222  1.1.1.2  mrg 		  func_quote_arg expand,pretty "$cmd"
   10223  1.1.1.2  mrg 		  eval "func_echo $func_quote_arg_result"
   10224      1.1  mrg 	      }
   10225      1.1  mrg 	      $opt_dry_run || eval "$cmd" || {
   10226      1.1  mrg 		lt_exit=$?
   10227      1.1  mrg 
   10228      1.1  mrg 		# Restore the uninstalled library and exit
   10229      1.1  mrg 		if test relink = "$opt_mode"; then
   10230      1.1  mrg 		  ( cd "$output_objdir" && \
   10231      1.1  mrg 		    $RM "${realname}T" && \
   10232      1.1  mrg 		    $MV "${realname}U" "$realname" )
   10233      1.1  mrg 		fi
   10234      1.1  mrg 
   10235      1.1  mrg 		exit $lt_exit
   10236      1.1  mrg 	      }
   10237      1.1  mrg 	    done
   10238      1.1  mrg 	    IFS=$save_ifs
   10239      1.1  mrg 
   10240      1.1  mrg 	    if test -n "$export_symbols_regex" && ${skipped_export-false}; then
   10241      1.1  mrg 	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
   10242      1.1  mrg 	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
   10243      1.1  mrg 	    fi
   10244      1.1  mrg 	  fi
   10245      1.1  mrg 
   10246      1.1  mrg           ${skipped_export-false} && {
   10247      1.1  mrg 	    if test -n "$export_symbols" && test -n "$include_expsyms"; then
   10248      1.1  mrg 	      tmp_export_symbols=$export_symbols
   10249      1.1  mrg 	      test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols
   10250      1.1  mrg 	      $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
   10251      1.1  mrg 	    fi
   10252      1.1  mrg 
   10253      1.1  mrg 	    if test -n "$orig_export_symbols"; then
   10254      1.1  mrg 	      # The given exports_symbols file has to be filtered, so filter it.
   10255      1.1  mrg 	      func_verbose "filter symbol list for '$libname.la' to tag DATA exports"
   10256      1.1  mrg 	      # FIXME: $output_objdir/$libname.filter potentially contains lots of
   10257      1.1  mrg 	      # 's' commands, which not all seds can handle. GNU sed should be fine
   10258      1.1  mrg 	      # though. Also, the filter scales superlinearly with the number of
   10259      1.1  mrg 	      # global variables. join(1) would be nice here, but unfortunately
   10260      1.1  mrg 	      # isn't a blessed tool.
   10261      1.1  mrg 	      $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
   10262      1.1  mrg 	      func_append delfiles " $export_symbols $output_objdir/$libname.filter"
   10263      1.1  mrg 	      export_symbols=$output_objdir/$libname.def
   10264      1.1  mrg 	      $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
   10265      1.1  mrg 	    fi
   10266      1.1  mrg 	  }
   10267      1.1  mrg 
   10268      1.1  mrg 	  libobjs=$output
   10269      1.1  mrg 	  # Restore the value of output.
   10270      1.1  mrg 	  output=$save_output
   10271      1.1  mrg 
   10272      1.1  mrg 	  if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
   10273      1.1  mrg 	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
   10274      1.1  mrg 	    test "X$libobjs" = "X " && libobjs=
   10275      1.1  mrg 	  fi
   10276      1.1  mrg 	  # Expand the library linking commands again to reset the
   10277      1.1  mrg 	  # value of $libobjs for piecewise linking.
   10278      1.1  mrg 
   10279      1.1  mrg 	  # Do each of the archive commands.
   10280      1.1  mrg 	  if test yes = "$module" && test -n "$module_cmds"; then
   10281      1.1  mrg 	    if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
   10282      1.1  mrg 	      cmds=$module_expsym_cmds
   10283      1.1  mrg 	    else
   10284      1.1  mrg 	      cmds=$module_cmds
   10285      1.1  mrg 	    fi
   10286      1.1  mrg 	  else
   10287      1.1  mrg 	    if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
   10288      1.1  mrg 	      cmds=$archive_expsym_cmds
   10289      1.1  mrg 	    else
   10290      1.1  mrg 	      cmds=$archive_cmds
   10291      1.1  mrg 	    fi
   10292      1.1  mrg 	  fi
   10293      1.1  mrg 	fi
   10294      1.1  mrg 
   10295      1.1  mrg 	if test -n "$delfiles"; then
   10296      1.1  mrg 	  # Append the command to remove temporary files to $cmds.
   10297      1.1  mrg 	  eval cmds=\"\$cmds~\$RM $delfiles\"
   10298      1.1  mrg 	fi
   10299      1.1  mrg 
   10300      1.1  mrg 	# Add any objects from preloaded convenience libraries
   10301      1.1  mrg 	if test -n "$dlprefiles"; then
   10302      1.1  mrg 	  gentop=$output_objdir/${outputname}x
   10303      1.1  mrg 	  func_append generated " $gentop"
   10304      1.1  mrg 
   10305      1.1  mrg 	  func_extract_archives $gentop $dlprefiles
   10306      1.1  mrg 	  func_append libobjs " $func_extract_archives_result"
   10307      1.1  mrg 	  test "X$libobjs" = "X " && libobjs=
   10308      1.1  mrg 	fi
   10309      1.1  mrg 
   10310      1.1  mrg 	save_ifs=$IFS; IFS='~'
   10311      1.1  mrg 	for cmd in $cmds; do
   10312      1.1  mrg 	  IFS=$sp$nl
   10313      1.1  mrg 	  eval cmd=\"$cmd\"
   10314      1.1  mrg 	  IFS=$save_ifs
   10315      1.1  mrg 	  $opt_quiet || {
   10316  1.1.1.2  mrg 	    func_quote_arg expand,pretty "$cmd"
   10317  1.1.1.2  mrg 	    eval "func_echo $func_quote_arg_result"
   10318      1.1  mrg 	  }
   10319      1.1  mrg 	  $opt_dry_run || eval "$cmd" || {
   10320      1.1  mrg 	    lt_exit=$?
   10321      1.1  mrg 
   10322      1.1  mrg 	    # Restore the uninstalled library and exit
   10323      1.1  mrg 	    if test relink = "$opt_mode"; then
   10324      1.1  mrg 	      ( cd "$output_objdir" && \
   10325      1.1  mrg 	        $RM "${realname}T" && \
   10326      1.1  mrg 		$MV "${realname}U" "$realname" )
   10327      1.1  mrg 	    fi
   10328      1.1  mrg 
   10329      1.1  mrg 	    exit $lt_exit
   10330      1.1  mrg 	  }
   10331      1.1  mrg 	done
   10332      1.1  mrg 	IFS=$save_ifs
   10333      1.1  mrg 
   10334      1.1  mrg 	# Restore the uninstalled library and exit
   10335      1.1  mrg 	if test relink = "$opt_mode"; then
   10336      1.1  mrg 	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
   10337      1.1  mrg 
   10338      1.1  mrg 	  if test -n "$convenience"; then
   10339      1.1  mrg 	    if test -z "$whole_archive_flag_spec"; then
   10340      1.1  mrg 	      func_show_eval '${RM}r "$gentop"'
   10341      1.1  mrg 	    fi
   10342      1.1  mrg 	  fi
   10343      1.1  mrg 
   10344      1.1  mrg 	  exit $EXIT_SUCCESS
   10345      1.1  mrg 	fi
   10346      1.1  mrg 
   10347      1.1  mrg 	# Create links to the real library.
   10348      1.1  mrg 	for linkname in $linknames; do
   10349      1.1  mrg 	  if test "$realname" != "$linkname"; then
   10350      1.1  mrg 	    func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
   10351      1.1  mrg 	  fi
   10352      1.1  mrg 	done
   10353      1.1  mrg 
   10354      1.1  mrg 	# If -module or -export-dynamic was specified, set the dlname.
   10355      1.1  mrg 	if test yes = "$module" || test yes = "$export_dynamic"; then
   10356      1.1  mrg 	  # On all known operating systems, these are identical.
   10357      1.1  mrg 	  dlname=$soname
   10358      1.1  mrg 	fi
   10359      1.1  mrg       fi
   10360      1.1  mrg       ;;
   10361      1.1  mrg 
   10362      1.1  mrg     obj)
   10363      1.1  mrg       if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then
   10364      1.1  mrg 	func_warning "'-dlopen' is ignored for objects"
   10365      1.1  mrg       fi
   10366      1.1  mrg 
   10367      1.1  mrg       case " $deplibs" in
   10368      1.1  mrg       *\ -l* | *\ -L*)
   10369      1.1  mrg 	func_warning "'-l' and '-L' are ignored for objects" ;;
   10370      1.1  mrg       esac
   10371      1.1  mrg 
   10372      1.1  mrg       test -n "$rpath" && \
   10373      1.1  mrg 	func_warning "'-rpath' is ignored for objects"
   10374      1.1  mrg 
   10375      1.1  mrg       test -n "$xrpath" && \
   10376      1.1  mrg 	func_warning "'-R' is ignored for objects"
   10377      1.1  mrg 
   10378      1.1  mrg       test -n "$vinfo" && \
   10379      1.1  mrg 	func_warning "'-version-info' is ignored for objects"
   10380      1.1  mrg 
   10381      1.1  mrg       test -n "$release" && \
   10382      1.1  mrg 	func_warning "'-release' is ignored for objects"
   10383      1.1  mrg 
   10384      1.1  mrg       case $output in
   10385      1.1  mrg       *.lo)
   10386      1.1  mrg 	test -n "$objs$old_deplibs" && \
   10387      1.1  mrg 	  func_fatal_error "cannot build library object '$output' from non-libtool objects"
   10388      1.1  mrg 
   10389      1.1  mrg 	libobj=$output
   10390      1.1  mrg 	func_lo2o "$libobj"
   10391      1.1  mrg 	obj=$func_lo2o_result
   10392      1.1  mrg 	;;
   10393      1.1  mrg       *)
   10394      1.1  mrg 	libobj=
   10395      1.1  mrg 	obj=$output
   10396      1.1  mrg 	;;
   10397      1.1  mrg       esac
   10398      1.1  mrg 
   10399      1.1  mrg       # Delete the old objects.
   10400      1.1  mrg       $opt_dry_run || $RM $obj $libobj
   10401      1.1  mrg 
   10402      1.1  mrg       # Objects from convenience libraries.  This assumes
   10403      1.1  mrg       # single-version convenience libraries.  Whenever we create
   10404      1.1  mrg       # different ones for PIC/non-PIC, this we'll have to duplicate
   10405      1.1  mrg       # the extraction.
   10406      1.1  mrg       reload_conv_objs=
   10407      1.1  mrg       gentop=
   10408      1.1  mrg       # if reload_cmds runs $LD directly, get rid of -Wl from
   10409      1.1  mrg       # whole_archive_flag_spec and hope we can get by with turning comma
   10410      1.1  mrg       # into space.
   10411      1.1  mrg       case $reload_cmds in
   10412      1.1  mrg         *\$LD[\ \$]*) wl= ;;
   10413      1.1  mrg       esac
   10414      1.1  mrg       if test -n "$convenience"; then
   10415      1.1  mrg 	if test -n "$whole_archive_flag_spec"; then
   10416      1.1  mrg 	  eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
   10417      1.1  mrg 	  test -n "$wl" || tmp_whole_archive_flags=`$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'`
   10418      1.1  mrg 	  reload_conv_objs=$reload_objs\ $tmp_whole_archive_flags
   10419      1.1  mrg 	else
   10420      1.1  mrg 	  gentop=$output_objdir/${obj}x
   10421      1.1  mrg 	  func_append generated " $gentop"
   10422      1.1  mrg 
   10423      1.1  mrg 	  func_extract_archives $gentop $convenience
   10424      1.1  mrg 	  reload_conv_objs="$reload_objs $func_extract_archives_result"
   10425      1.1  mrg 	fi
   10426      1.1  mrg       fi
   10427      1.1  mrg 
   10428      1.1  mrg       # If we're not building shared, we need to use non_pic_objs
   10429      1.1  mrg       test yes = "$build_libtool_libs" || libobjs=$non_pic_objects
   10430      1.1  mrg 
   10431      1.1  mrg       # Create the old-style object.
   10432      1.1  mrg       reload_objs=$objs$old_deplibs' '`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; /\.lib$/d; $lo2o" | $NL2SP`' '$reload_conv_objs
   10433      1.1  mrg 
   10434      1.1  mrg       output=$obj
   10435      1.1  mrg       func_execute_cmds "$reload_cmds" 'exit $?'
   10436      1.1  mrg 
   10437      1.1  mrg       # Exit if we aren't doing a library object file.
   10438      1.1  mrg       if test -z "$libobj"; then
   10439      1.1  mrg 	if test -n "$gentop"; then
   10440      1.1  mrg 	  func_show_eval '${RM}r "$gentop"'
   10441      1.1  mrg 	fi
   10442      1.1  mrg 
   10443      1.1  mrg 	exit $EXIT_SUCCESS
   10444      1.1  mrg       fi
   10445      1.1  mrg 
   10446      1.1  mrg       test yes = "$build_libtool_libs" || {
   10447      1.1  mrg 	if test -n "$gentop"; then
   10448      1.1  mrg 	  func_show_eval '${RM}r "$gentop"'
   10449      1.1  mrg 	fi
   10450      1.1  mrg 
   10451      1.1  mrg 	# Create an invalid libtool object if no PIC, so that we don't
   10452      1.1  mrg 	# accidentally link it into a program.
   10453      1.1  mrg 	# $show "echo timestamp > $libobj"
   10454      1.1  mrg 	# $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
   10455      1.1  mrg 	exit $EXIT_SUCCESS
   10456      1.1  mrg       }
   10457      1.1  mrg 
   10458      1.1  mrg       if test -n "$pic_flag" || test default != "$pic_mode"; then
   10459      1.1  mrg 	# Only do commands if we really have different PIC objects.
   10460      1.1  mrg 	reload_objs="$libobjs $reload_conv_objs"
   10461      1.1  mrg 	output=$libobj
   10462      1.1  mrg 	func_execute_cmds "$reload_cmds" 'exit $?'
   10463      1.1  mrg       fi
   10464      1.1  mrg 
   10465      1.1  mrg       if test -n "$gentop"; then
   10466      1.1  mrg 	func_show_eval '${RM}r "$gentop"'
   10467      1.1  mrg       fi
   10468      1.1  mrg 
   10469      1.1  mrg       exit $EXIT_SUCCESS
   10470      1.1  mrg       ;;
   10471      1.1  mrg 
   10472      1.1  mrg     prog)
   10473      1.1  mrg       case $host in
   10474      1.1  mrg 	*cygwin*) func_stripname '' '.exe' "$output"
   10475      1.1  mrg 	          output=$func_stripname_result.exe;;
   10476      1.1  mrg       esac
   10477      1.1  mrg       test -n "$vinfo" && \
   10478      1.1  mrg 	func_warning "'-version-info' is ignored for programs"
   10479      1.1  mrg 
   10480      1.1  mrg       test -n "$release" && \
   10481      1.1  mrg 	func_warning "'-release' is ignored for programs"
   10482      1.1  mrg 
   10483      1.1  mrg       $preload \
   10484      1.1  mrg 	&& test unknown,unknown,unknown = "$dlopen_support,$dlopen_self,$dlopen_self_static" \
   10485      1.1  mrg 	&& func_warning "'LT_INIT([dlopen])' not used. Assuming no dlopen support."
   10486      1.1  mrg 
   10487      1.1  mrg       case $host in
   10488      1.1  mrg       *-*-rhapsody* | *-*-darwin1.[012])
   10489      1.1  mrg 	# On Rhapsody replace the C library is the System framework
   10490      1.1  mrg 	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'`
   10491      1.1  mrg 	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'`
   10492      1.1  mrg 	;;
   10493      1.1  mrg       esac
   10494      1.1  mrg 
   10495      1.1  mrg       case $host in
   10496      1.1  mrg       *-*-darwin*)
   10497      1.1  mrg 	# Don't allow lazy linking, it breaks C++ global constructors
   10498      1.1  mrg 	# But is supposedly fixed on 10.4 or later (yay!).
   10499      1.1  mrg 	if test CXX = "$tagname"; then
   10500      1.1  mrg 	  case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
   10501      1.1  mrg 	    10.[0123])
   10502      1.1  mrg 	      func_append compile_command " $wl-bind_at_load"
   10503      1.1  mrg 	      func_append finalize_command " $wl-bind_at_load"
   10504      1.1  mrg 	    ;;
   10505      1.1  mrg 	  esac
   10506      1.1  mrg 	fi
   10507      1.1  mrg 	# Time to change all our "foo.ltframework" stuff back to "-framework foo"
   10508      1.1  mrg 	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
   10509      1.1  mrg 	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
   10510      1.1  mrg 	;;
   10511      1.1  mrg       esac
   10512      1.1  mrg 
   10513      1.1  mrg 
   10514      1.1  mrg       # move library search paths that coincide with paths to not yet
   10515      1.1  mrg       # installed libraries to the beginning of the library search list
   10516      1.1  mrg       new_libs=
   10517      1.1  mrg       for path in $notinst_path; do
   10518      1.1  mrg 	case " $new_libs " in
   10519      1.1  mrg 	*" -L$path/$objdir "*) ;;
   10520      1.1  mrg 	*)
   10521      1.1  mrg 	  case " $compile_deplibs " in
   10522      1.1  mrg 	  *" -L$path/$objdir "*)
   10523      1.1  mrg 	    func_append new_libs " -L$path/$objdir" ;;
   10524      1.1  mrg 	  esac
   10525      1.1  mrg 	  ;;
   10526      1.1  mrg 	esac
   10527      1.1  mrg       done
   10528      1.1  mrg       for deplib in $compile_deplibs; do
   10529      1.1  mrg 	case $deplib in
   10530      1.1  mrg 	-L*)
   10531      1.1  mrg 	  case " $new_libs " in
   10532      1.1  mrg 	  *" $deplib "*) ;;
   10533      1.1  mrg 	  *) func_append new_libs " $deplib" ;;
   10534      1.1  mrg 	  esac
   10535      1.1  mrg 	  ;;
   10536      1.1  mrg 	*) func_append new_libs " $deplib" ;;
   10537      1.1  mrg 	esac
   10538      1.1  mrg       done
   10539      1.1  mrg       compile_deplibs=$new_libs
   10540      1.1  mrg 
   10541      1.1  mrg 
   10542      1.1  mrg       func_append compile_command " $compile_deplibs"
   10543      1.1  mrg       func_append finalize_command " $finalize_deplibs"
   10544      1.1  mrg 
   10545      1.1  mrg       if test -n "$rpath$xrpath"; then
   10546      1.1  mrg 	# If the user specified any rpath flags, then add them.
   10547      1.1  mrg 	for libdir in $rpath $xrpath; do
   10548      1.1  mrg 	  # This is the magic to use -rpath.
   10549      1.1  mrg 	  case "$finalize_rpath " in
   10550      1.1  mrg 	  *" $libdir "*) ;;
   10551      1.1  mrg 	  *) func_append finalize_rpath " $libdir" ;;
   10552      1.1  mrg 	  esac
   10553      1.1  mrg 	done
   10554      1.1  mrg       fi
   10555      1.1  mrg 
   10556      1.1  mrg       # Now hardcode the library paths
   10557      1.1  mrg       rpath=
   10558      1.1  mrg       hardcode_libdirs=
   10559      1.1  mrg       for libdir in $compile_rpath $finalize_rpath; do
   10560      1.1  mrg 	if test -n "$hardcode_libdir_flag_spec"; then
   10561      1.1  mrg 	  if test -n "$hardcode_libdir_separator"; then
   10562      1.1  mrg 	    if test -z "$hardcode_libdirs"; then
   10563      1.1  mrg 	      hardcode_libdirs=$libdir
   10564      1.1  mrg 	    else
   10565      1.1  mrg 	      # Just accumulate the unique libdirs.
   10566      1.1  mrg 	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
   10567      1.1  mrg 	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
   10568      1.1  mrg 		;;
   10569      1.1  mrg 	      *)
   10570      1.1  mrg 		func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
   10571      1.1  mrg 		;;
   10572      1.1  mrg 	      esac
   10573      1.1  mrg 	    fi
   10574      1.1  mrg 	  else
   10575      1.1  mrg 	    eval flag=\"$hardcode_libdir_flag_spec\"
   10576      1.1  mrg 	    func_append rpath " $flag"
   10577      1.1  mrg 	  fi
   10578      1.1  mrg 	elif test -n "$runpath_var"; then
   10579      1.1  mrg 	  case "$perm_rpath " in
   10580      1.1  mrg 	  *" $libdir "*) ;;
   10581      1.1  mrg 	  *) func_append perm_rpath " $libdir" ;;
   10582      1.1  mrg 	  esac
   10583      1.1  mrg 	fi
   10584      1.1  mrg 	case $host in
   10585      1.1  mrg 	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
   10586      1.1  mrg 	  testbindir=`$ECHO "$libdir" | $SED -e 's*/lib$*/bin*'`
   10587      1.1  mrg 	  case :$dllsearchpath: in
   10588      1.1  mrg 	  *":$libdir:"*) ;;
   10589      1.1  mrg 	  ::) dllsearchpath=$libdir;;
   10590      1.1  mrg 	  *) func_append dllsearchpath ":$libdir";;
   10591      1.1  mrg 	  esac
   10592      1.1  mrg 	  case :$dllsearchpath: in
   10593      1.1  mrg 	  *":$testbindir:"*) ;;
   10594      1.1  mrg 	  ::) dllsearchpath=$testbindir;;
   10595      1.1  mrg 	  *) func_append dllsearchpath ":$testbindir";;
   10596      1.1  mrg 	  esac
   10597      1.1  mrg 	  ;;
   10598      1.1  mrg 	esac
   10599      1.1  mrg       done
   10600      1.1  mrg       # Substitute the hardcoded libdirs into the rpath.
   10601      1.1  mrg       if test -n "$hardcode_libdir_separator" &&
   10602      1.1  mrg 	 test -n "$hardcode_libdirs"; then
   10603      1.1  mrg 	libdir=$hardcode_libdirs
   10604      1.1  mrg 	eval rpath=\" $hardcode_libdir_flag_spec\"
   10605      1.1  mrg       fi
   10606      1.1  mrg       compile_rpath=$rpath
   10607      1.1  mrg 
   10608      1.1  mrg       rpath=
   10609      1.1  mrg       hardcode_libdirs=
   10610      1.1  mrg       for libdir in $finalize_rpath; do
   10611      1.1  mrg 	if test -n "$hardcode_libdir_flag_spec"; then
   10612      1.1  mrg 	  if test -n "$hardcode_libdir_separator"; then
   10613      1.1  mrg 	    if test -z "$hardcode_libdirs"; then
   10614      1.1  mrg 	      hardcode_libdirs=$libdir
   10615      1.1  mrg 	    else
   10616      1.1  mrg 	      # Just accumulate the unique libdirs.
   10617      1.1  mrg 	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
   10618      1.1  mrg 	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
   10619      1.1  mrg 		;;
   10620      1.1  mrg 	      *)
   10621      1.1  mrg 		func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
   10622      1.1  mrg 		;;
   10623      1.1  mrg 	      esac
   10624      1.1  mrg 	    fi
   10625      1.1  mrg 	  else
   10626      1.1  mrg 	    eval flag=\"$hardcode_libdir_flag_spec\"
   10627      1.1  mrg 	    func_append rpath " $flag"
   10628      1.1  mrg 	  fi
   10629      1.1  mrg 	elif test -n "$runpath_var"; then
   10630      1.1  mrg 	  case "$finalize_perm_rpath " in
   10631      1.1  mrg 	  *" $libdir "*) ;;
   10632      1.1  mrg 	  *) func_append finalize_perm_rpath " $libdir" ;;
   10633      1.1  mrg 	  esac
   10634      1.1  mrg 	fi
   10635      1.1  mrg       done
   10636      1.1  mrg       # Substitute the hardcoded libdirs into the rpath.
   10637      1.1  mrg       if test -n "$hardcode_libdir_separator" &&
   10638      1.1  mrg 	 test -n "$hardcode_libdirs"; then
   10639      1.1  mrg 	libdir=$hardcode_libdirs
   10640      1.1  mrg 	eval rpath=\" $hardcode_libdir_flag_spec\"
   10641      1.1  mrg       fi
   10642      1.1  mrg       finalize_rpath=$rpath
   10643      1.1  mrg 
   10644      1.1  mrg       if test -n "$libobjs" && test yes = "$build_old_libs"; then
   10645      1.1  mrg 	# Transform all the library objects into standard objects.
   10646      1.1  mrg 	compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
   10647      1.1  mrg 	finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
   10648      1.1  mrg       fi
   10649      1.1  mrg 
   10650      1.1  mrg       func_generate_dlsyms "$outputname" "@PROGRAM@" false
   10651      1.1  mrg 
   10652      1.1  mrg       # template prelinking step
   10653      1.1  mrg       if test -n "$prelink_cmds"; then
   10654      1.1  mrg 	func_execute_cmds "$prelink_cmds" 'exit $?'
   10655      1.1  mrg       fi
   10656      1.1  mrg 
   10657      1.1  mrg       wrappers_required=:
   10658      1.1  mrg       case $host in
   10659      1.1  mrg       *cegcc* | *mingw32ce*)
   10660      1.1  mrg         # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway.
   10661      1.1  mrg         wrappers_required=false
   10662      1.1  mrg         ;;
   10663      1.1  mrg       *cygwin* | *mingw* )
   10664      1.1  mrg         test yes = "$build_libtool_libs" || wrappers_required=false
   10665      1.1  mrg         ;;
   10666      1.1  mrg       *)
   10667      1.1  mrg         if test no = "$need_relink" || test yes != "$build_libtool_libs"; then
   10668      1.1  mrg           wrappers_required=false
   10669      1.1  mrg         fi
   10670      1.1  mrg         ;;
   10671      1.1  mrg       esac
   10672      1.1  mrg       $wrappers_required || {
   10673      1.1  mrg 	# Replace the output file specification.
   10674      1.1  mrg 	compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
   10675      1.1  mrg 	link_command=$compile_command$compile_rpath
   10676      1.1  mrg 
   10677      1.1  mrg 	# We have no uninstalled library dependencies, so finalize right now.
   10678      1.1  mrg 	exit_status=0
   10679      1.1  mrg 	func_show_eval "$link_command" 'exit_status=$?'
   10680      1.1  mrg 
   10681      1.1  mrg 	if test -n "$postlink_cmds"; then
   10682      1.1  mrg 	  func_to_tool_file "$output"
   10683      1.1  mrg 	  postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
   10684      1.1  mrg 	  func_execute_cmds "$postlink_cmds" 'exit $?'
   10685      1.1  mrg 	fi
   10686      1.1  mrg 
   10687      1.1  mrg 	# Delete the generated files.
   10688      1.1  mrg 	if test -f "$output_objdir/${outputname}S.$objext"; then
   10689      1.1  mrg 	  func_show_eval '$RM "$output_objdir/${outputname}S.$objext"'
   10690      1.1  mrg 	fi
   10691      1.1  mrg 
   10692      1.1  mrg 	exit $exit_status
   10693      1.1  mrg       }
   10694      1.1  mrg 
   10695      1.1  mrg       if test -n "$compile_shlibpath$finalize_shlibpath"; then
   10696      1.1  mrg 	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
   10697      1.1  mrg       fi
   10698      1.1  mrg       if test -n "$finalize_shlibpath"; then
   10699      1.1  mrg 	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
   10700      1.1  mrg       fi
   10701      1.1  mrg 
   10702      1.1  mrg       compile_var=
   10703      1.1  mrg       finalize_var=
   10704      1.1  mrg       if test -n "$runpath_var"; then
   10705      1.1  mrg 	if test -n "$perm_rpath"; then
   10706      1.1  mrg 	  # We should set the runpath_var.
   10707      1.1  mrg 	  rpath=
   10708      1.1  mrg 	  for dir in $perm_rpath; do
   10709      1.1  mrg 	    func_append rpath "$dir:"
   10710      1.1  mrg 	  done
   10711      1.1  mrg 	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
   10712      1.1  mrg 	fi
   10713      1.1  mrg 	if test -n "$finalize_perm_rpath"; then
   10714      1.1  mrg 	  # We should set the runpath_var.
   10715      1.1  mrg 	  rpath=
   10716      1.1  mrg 	  for dir in $finalize_perm_rpath; do
   10717      1.1  mrg 	    func_append rpath "$dir:"
   10718      1.1  mrg 	  done
   10719      1.1  mrg 	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
   10720      1.1  mrg 	fi
   10721      1.1  mrg       fi
   10722      1.1  mrg 
   10723      1.1  mrg       if test yes = "$no_install"; then
   10724      1.1  mrg 	# We don't need to create a wrapper script.
   10725      1.1  mrg 	link_command=$compile_var$compile_command$compile_rpath
   10726      1.1  mrg 	# Replace the output file specification.
   10727      1.1  mrg 	link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
   10728      1.1  mrg 	# Delete the old output file.
   10729      1.1  mrg 	$opt_dry_run || $RM $output
   10730      1.1  mrg 	# Link the executable and exit
   10731      1.1  mrg 	func_show_eval "$link_command" 'exit $?'
   10732      1.1  mrg 
   10733      1.1  mrg 	if test -n "$postlink_cmds"; then
   10734      1.1  mrg 	  func_to_tool_file "$output"
   10735      1.1  mrg 	  postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
   10736      1.1  mrg 	  func_execute_cmds "$postlink_cmds" 'exit $?'
   10737      1.1  mrg 	fi
   10738      1.1  mrg 
   10739      1.1  mrg 	exit $EXIT_SUCCESS
   10740      1.1  mrg       fi
   10741      1.1  mrg 
   10742      1.1  mrg       case $hardcode_action,$fast_install in
   10743      1.1  mrg         relink,*)
   10744      1.1  mrg 	  # Fast installation is not supported
   10745      1.1  mrg 	  link_command=$compile_var$compile_command$compile_rpath
   10746      1.1  mrg 	  relink_command=$finalize_var$finalize_command$finalize_rpath
   10747      1.1  mrg 
   10748      1.1  mrg 	  func_warning "this platform does not like uninstalled shared libraries"
   10749      1.1  mrg 	  func_warning "'$output' will be relinked during installation"
   10750      1.1  mrg 	  ;;
   10751      1.1  mrg         *,yes)
   10752      1.1  mrg 	  link_command=$finalize_var$compile_command$finalize_rpath
   10753      1.1  mrg 	  relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'`
   10754      1.1  mrg           ;;
   10755      1.1  mrg 	*,no)
   10756      1.1  mrg 	  link_command=$compile_var$compile_command$compile_rpath
   10757      1.1  mrg 	  relink_command=$finalize_var$finalize_command$finalize_rpath
   10758      1.1  mrg           ;;
   10759      1.1  mrg 	*,needless)
   10760      1.1  mrg 	  link_command=$finalize_var$compile_command$finalize_rpath
   10761      1.1  mrg 	  relink_command=
   10762      1.1  mrg           ;;
   10763      1.1  mrg       esac
   10764      1.1  mrg 
   10765      1.1  mrg       # Replace the output file specification.
   10766      1.1  mrg       link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
   10767      1.1  mrg 
   10768      1.1  mrg       # Delete the old output files.
   10769      1.1  mrg       $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
   10770      1.1  mrg 
   10771      1.1  mrg       func_show_eval "$link_command" 'exit $?'
   10772      1.1  mrg 
   10773      1.1  mrg       if test -n "$postlink_cmds"; then
   10774      1.1  mrg 	func_to_tool_file "$output_objdir/$outputname"
   10775      1.1  mrg 	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'`
   10776      1.1  mrg 	func_execute_cmds "$postlink_cmds" 'exit $?'
   10777      1.1  mrg       fi
   10778      1.1  mrg 
   10779      1.1  mrg       # Now create the wrapper script.
   10780      1.1  mrg       func_verbose "creating $output"
   10781      1.1  mrg 
   10782      1.1  mrg       # Quote the relink command for shipping.
   10783      1.1  mrg       if test -n "$relink_command"; then
   10784      1.1  mrg 	# Preserve any variables that may affect compiler behavior
   10785      1.1  mrg 	for var in $variables_saved_for_relink; do
   10786      1.1  mrg 	  if eval test -z \"\${$var+set}\"; then
   10787      1.1  mrg 	    relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
   10788      1.1  mrg 	  elif eval var_value=\$$var; test -z "$var_value"; then
   10789      1.1  mrg 	    relink_command="$var=; export $var; $relink_command"
   10790      1.1  mrg 	  else
   10791  1.1.1.2  mrg 	    func_quote_arg pretty "$var_value"
   10792  1.1.1.2  mrg 	    relink_command="$var=$func_quote_arg_result; export $var; $relink_command"
   10793      1.1  mrg 	  fi
   10794      1.1  mrg 	done
   10795  1.1.1.2  mrg 	func_quote eval cd "`pwd`"
   10796  1.1.1.2  mrg 	func_quote_arg pretty,unquoted "($func_quote_result; $relink_command)"
   10797  1.1.1.2  mrg 	relink_command=$func_quote_arg_unquoted_result
   10798      1.1  mrg       fi
   10799      1.1  mrg 
   10800      1.1  mrg       # Only actually do things if not in dry run mode.
   10801      1.1  mrg       $opt_dry_run || {
   10802      1.1  mrg 	# win32 will think the script is a binary if it has
   10803      1.1  mrg 	# a .exe suffix, so we strip it off here.
   10804      1.1  mrg 	case $output in
   10805      1.1  mrg 	  *.exe) func_stripname '' '.exe' "$output"
   10806      1.1  mrg 	         output=$func_stripname_result ;;
   10807      1.1  mrg 	esac
   10808      1.1  mrg 	# test for cygwin because mv fails w/o .exe extensions
   10809      1.1  mrg 	case $host in
   10810      1.1  mrg 	  *cygwin*)
   10811      1.1  mrg 	    exeext=.exe
   10812      1.1  mrg 	    func_stripname '' '.exe' "$outputname"
   10813      1.1  mrg 	    outputname=$func_stripname_result ;;
   10814      1.1  mrg 	  *) exeext= ;;
   10815      1.1  mrg 	esac
   10816      1.1  mrg 	case $host in
   10817      1.1  mrg 	  *cygwin* | *mingw* )
   10818      1.1  mrg 	    func_dirname_and_basename "$output" "" "."
   10819      1.1  mrg 	    output_name=$func_basename_result
   10820      1.1  mrg 	    output_path=$func_dirname_result
   10821      1.1  mrg 	    cwrappersource=$output_path/$objdir/lt-$output_name.c
   10822      1.1  mrg 	    cwrapper=$output_path/$output_name.exe
   10823      1.1  mrg 	    $RM $cwrappersource $cwrapper
   10824      1.1  mrg 	    trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
   10825      1.1  mrg 
   10826      1.1  mrg 	    func_emit_cwrapperexe_src > $cwrappersource
   10827      1.1  mrg 
   10828      1.1  mrg 	    # The wrapper executable is built using the $host compiler,
   10829      1.1  mrg 	    # because it contains $host paths and files. If cross-
   10830      1.1  mrg 	    # compiling, it, like the target executable, must be
   10831      1.1  mrg 	    # executed on the $host or under an emulation environment.
   10832      1.1  mrg 	    $opt_dry_run || {
   10833      1.1  mrg 	      $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
   10834      1.1  mrg 	      $STRIP $cwrapper
   10835      1.1  mrg 	    }
   10836      1.1  mrg 
   10837      1.1  mrg 	    # Now, create the wrapper script for func_source use:
   10838      1.1  mrg 	    func_ltwrapper_scriptname $cwrapper
   10839      1.1  mrg 	    $RM $func_ltwrapper_scriptname_result
   10840      1.1  mrg 	    trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
   10841      1.1  mrg 	    $opt_dry_run || {
   10842      1.1  mrg 	      # note: this script will not be executed, so do not chmod.
   10843      1.1  mrg 	      if test "x$build" = "x$host"; then
   10844      1.1  mrg 		$cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
   10845      1.1  mrg 	      else
   10846      1.1  mrg 		func_emit_wrapper no > $func_ltwrapper_scriptname_result
   10847      1.1  mrg 	      fi
   10848      1.1  mrg 	    }
   10849      1.1  mrg 	  ;;
   10850      1.1  mrg 	  * )
   10851      1.1  mrg 	    $RM $output
   10852      1.1  mrg 	    trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
   10853      1.1  mrg 
   10854      1.1  mrg 	    func_emit_wrapper no > $output
   10855      1.1  mrg 	    chmod +x $output
   10856      1.1  mrg 	  ;;
   10857      1.1  mrg 	esac
   10858      1.1  mrg       }
   10859      1.1  mrg       exit $EXIT_SUCCESS
   10860      1.1  mrg       ;;
   10861      1.1  mrg     esac
   10862      1.1  mrg 
   10863      1.1  mrg     # See if we need to build an old-fashioned archive.
   10864      1.1  mrg     for oldlib in $oldlibs; do
   10865      1.1  mrg 
   10866      1.1  mrg       case $build_libtool_libs in
   10867      1.1  mrg         convenience)
   10868      1.1  mrg 	  oldobjs="$libobjs_save $symfileobj"
   10869      1.1  mrg 	  addlibs=$convenience
   10870      1.1  mrg 	  build_libtool_libs=no
   10871      1.1  mrg 	  ;;
   10872      1.1  mrg 	module)
   10873      1.1  mrg 	  oldobjs=$libobjs_save
   10874      1.1  mrg 	  addlibs=$old_convenience
   10875      1.1  mrg 	  build_libtool_libs=no
   10876      1.1  mrg           ;;
   10877      1.1  mrg 	*)
   10878      1.1  mrg 	  oldobjs="$old_deplibs $non_pic_objects"
   10879      1.1  mrg 	  $preload && test -f "$symfileobj" \
   10880      1.1  mrg 	    && func_append oldobjs " $symfileobj"
   10881      1.1  mrg 	  addlibs=$old_convenience
   10882      1.1  mrg 	  ;;
   10883      1.1  mrg       esac
   10884      1.1  mrg 
   10885      1.1  mrg       if test -n "$addlibs"; then
   10886      1.1  mrg 	gentop=$output_objdir/${outputname}x
   10887      1.1  mrg 	func_append generated " $gentop"
   10888      1.1  mrg 
   10889      1.1  mrg 	func_extract_archives $gentop $addlibs
   10890      1.1  mrg 	func_append oldobjs " $func_extract_archives_result"
   10891      1.1  mrg       fi
   10892      1.1  mrg 
   10893      1.1  mrg       # Do each command in the archive commands.
   10894      1.1  mrg       if test -n "$old_archive_from_new_cmds" && test yes = "$build_libtool_libs"; then
   10895      1.1  mrg 	cmds=$old_archive_from_new_cmds
   10896      1.1  mrg       else
   10897      1.1  mrg 
   10898      1.1  mrg 	# Add any objects from preloaded convenience libraries
   10899      1.1  mrg 	if test -n "$dlprefiles"; then
   10900      1.1  mrg 	  gentop=$output_objdir/${outputname}x
   10901      1.1  mrg 	  func_append generated " $gentop"
   10902      1.1  mrg 
   10903      1.1  mrg 	  func_extract_archives $gentop $dlprefiles
   10904      1.1  mrg 	  func_append oldobjs " $func_extract_archives_result"
   10905      1.1  mrg 	fi
   10906      1.1  mrg 
   10907      1.1  mrg 	# POSIX demands no paths to be encoded in archives.  We have
   10908      1.1  mrg 	# to avoid creating archives with duplicate basenames if we
   10909      1.1  mrg 	# might have to extract them afterwards, e.g., when creating a
   10910      1.1  mrg 	# static archive out of a convenience library, or when linking
   10911      1.1  mrg 	# the entirety of a libtool archive into another (currently
   10912      1.1  mrg 	# not supported by libtool).
   10913      1.1  mrg 	if (for obj in $oldobjs
   10914      1.1  mrg 	    do
   10915      1.1  mrg 	      func_basename "$obj"
   10916      1.1  mrg 	      $ECHO "$func_basename_result"
   10917      1.1  mrg 	    done | sort | sort -uc >/dev/null 2>&1); then
   10918      1.1  mrg 	  :
   10919      1.1  mrg 	else
   10920      1.1  mrg 	  echo "copying selected object files to avoid basename conflicts..."
   10921      1.1  mrg 	  gentop=$output_objdir/${outputname}x
   10922      1.1  mrg 	  func_append generated " $gentop"
   10923      1.1  mrg 	  func_mkdir_p "$gentop"
   10924      1.1  mrg 	  save_oldobjs=$oldobjs
   10925      1.1  mrg 	  oldobjs=
   10926      1.1  mrg 	  counter=1
   10927      1.1  mrg 	  for obj in $save_oldobjs
   10928      1.1  mrg 	  do
   10929      1.1  mrg 	    func_basename "$obj"
   10930      1.1  mrg 	    objbase=$func_basename_result
   10931      1.1  mrg 	    case " $oldobjs " in
   10932      1.1  mrg 	    " ") oldobjs=$obj ;;
   10933      1.1  mrg 	    *[\ /]"$objbase "*)
   10934      1.1  mrg 	      while :; do
   10935      1.1  mrg 		# Make sure we don't pick an alternate name that also
   10936      1.1  mrg 		# overlaps.
   10937      1.1  mrg 		newobj=lt$counter-$objbase
   10938      1.1  mrg 		func_arith $counter + 1
   10939      1.1  mrg 		counter=$func_arith_result
   10940      1.1  mrg 		case " $oldobjs " in
   10941      1.1  mrg 		*[\ /]"$newobj "*) ;;
   10942      1.1  mrg 		*) if test ! -f "$gentop/$newobj"; then break; fi ;;
   10943      1.1  mrg 		esac
   10944      1.1  mrg 	      done
   10945      1.1  mrg 	      func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
   10946      1.1  mrg 	      func_append oldobjs " $gentop/$newobj"
   10947      1.1  mrg 	      ;;
   10948      1.1  mrg 	    *) func_append oldobjs " $obj" ;;
   10949      1.1  mrg 	    esac
   10950      1.1  mrg 	  done
   10951      1.1  mrg 	fi
   10952      1.1  mrg 	func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
   10953      1.1  mrg 	tool_oldlib=$func_to_tool_file_result
   10954      1.1  mrg 	eval cmds=\"$old_archive_cmds\"
   10955      1.1  mrg 
   10956      1.1  mrg 	func_len " $cmds"
   10957      1.1  mrg 	len=$func_len_result
   10958      1.1  mrg 	if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
   10959      1.1  mrg 	  cmds=$old_archive_cmds
   10960      1.1  mrg 	elif test -n "$archiver_list_spec"; then
   10961      1.1  mrg 	  func_verbose "using command file archive linking..."
   10962      1.1  mrg 	  for obj in $oldobjs
   10963      1.1  mrg 	  do
   10964      1.1  mrg 	    func_to_tool_file "$obj"
   10965      1.1  mrg 	    $ECHO "$func_to_tool_file_result"
   10966      1.1  mrg 	  done > $output_objdir/$libname.libcmd
   10967      1.1  mrg 	  func_to_tool_file "$output_objdir/$libname.libcmd"
   10968      1.1  mrg 	  oldobjs=" $archiver_list_spec$func_to_tool_file_result"
   10969      1.1  mrg 	  cmds=$old_archive_cmds
   10970      1.1  mrg 	else
   10971      1.1  mrg 	  # the command line is too long to link in one step, link in parts
   10972      1.1  mrg 	  func_verbose "using piecewise archive linking..."
   10973      1.1  mrg 	  save_RANLIB=$RANLIB
   10974      1.1  mrg 	  RANLIB=:
   10975      1.1  mrg 	  objlist=
   10976      1.1  mrg 	  concat_cmds=
   10977      1.1  mrg 	  save_oldobjs=$oldobjs
   10978      1.1  mrg 	  oldobjs=
   10979      1.1  mrg 	  # Is there a better way of finding the last object in the list?
   10980      1.1  mrg 	  for obj in $save_oldobjs
   10981      1.1  mrg 	  do
   10982      1.1  mrg 	    last_oldobj=$obj
   10983      1.1  mrg 	  done
   10984      1.1  mrg 	  eval test_cmds=\"$old_archive_cmds\"
   10985      1.1  mrg 	  func_len " $test_cmds"
   10986      1.1  mrg 	  len0=$func_len_result
   10987      1.1  mrg 	  len=$len0
   10988      1.1  mrg 	  for obj in $save_oldobjs
   10989      1.1  mrg 	  do
   10990      1.1  mrg 	    func_len " $obj"
   10991      1.1  mrg 	    func_arith $len + $func_len_result
   10992      1.1  mrg 	    len=$func_arith_result
   10993      1.1  mrg 	    func_append objlist " $obj"
   10994      1.1  mrg 	    if test "$len" -lt "$max_cmd_len"; then
   10995      1.1  mrg 	      :
   10996      1.1  mrg 	    else
   10997      1.1  mrg 	      # the above command should be used before it gets too long
   10998      1.1  mrg 	      oldobjs=$objlist
   10999      1.1  mrg 	      if test "$obj" = "$last_oldobj"; then
   11000      1.1  mrg 		RANLIB=$save_RANLIB
   11001      1.1  mrg 	      fi
   11002      1.1  mrg 	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
   11003      1.1  mrg 	      eval concat_cmds=\"\$concat_cmds$old_archive_cmds\"
   11004      1.1  mrg 	      objlist=
   11005      1.1  mrg 	      len=$len0
   11006      1.1  mrg 	    fi
   11007      1.1  mrg 	  done
   11008      1.1  mrg 	  RANLIB=$save_RANLIB
   11009      1.1  mrg 	  oldobjs=$objlist
   11010      1.1  mrg 	  if test -z "$oldobjs"; then
   11011      1.1  mrg 	    eval cmds=\"\$concat_cmds\"
   11012      1.1  mrg 	  else
   11013      1.1  mrg 	    eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
   11014      1.1  mrg 	  fi
   11015      1.1  mrg 	fi
   11016      1.1  mrg       fi
   11017      1.1  mrg       func_execute_cmds "$cmds" 'exit $?'
   11018      1.1  mrg     done
   11019      1.1  mrg 
   11020      1.1  mrg     test -n "$generated" && \
   11021      1.1  mrg       func_show_eval "${RM}r$generated"
   11022      1.1  mrg 
   11023      1.1  mrg     # Now create the libtool archive.
   11024      1.1  mrg     case $output in
   11025      1.1  mrg     *.la)
   11026      1.1  mrg       old_library=
   11027      1.1  mrg       test yes = "$build_old_libs" && old_library=$libname.$libext
   11028      1.1  mrg       func_verbose "creating $output"
   11029      1.1  mrg 
   11030      1.1  mrg       # Preserve any variables that may affect compiler behavior
   11031      1.1  mrg       for var in $variables_saved_for_relink; do
   11032      1.1  mrg 	if eval test -z \"\${$var+set}\"; then
   11033      1.1  mrg 	  relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
   11034      1.1  mrg 	elif eval var_value=\$$var; test -z "$var_value"; then
   11035      1.1  mrg 	  relink_command="$var=; export $var; $relink_command"
   11036      1.1  mrg 	else
   11037  1.1.1.2  mrg 	  func_quote_arg pretty,unquoted "$var_value"
   11038  1.1.1.2  mrg 	  relink_command="$var=$func_quote_arg_unquoted_result; export $var; $relink_command"
   11039      1.1  mrg 	fi
   11040      1.1  mrg       done
   11041      1.1  mrg       # Quote the link command for shipping.
   11042  1.1.1.2  mrg       func_quote eval cd "`pwd`"
   11043  1.1.1.2  mrg       relink_command="($func_quote_result; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
   11044  1.1.1.2  mrg       func_quote_arg pretty,unquoted "$relink_command"
   11045  1.1.1.2  mrg       relink_command=$func_quote_arg_unquoted_result
   11046      1.1  mrg       if test yes = "$hardcode_automatic"; then
   11047      1.1  mrg 	relink_command=
   11048      1.1  mrg       fi
   11049      1.1  mrg 
   11050      1.1  mrg       # Only create the output if not a dry run.
   11051      1.1  mrg       $opt_dry_run || {
   11052      1.1  mrg 	for installed in no yes; do
   11053      1.1  mrg 	  if test yes = "$installed"; then
   11054      1.1  mrg 	    if test -z "$install_libdir"; then
   11055      1.1  mrg 	      break
   11056      1.1  mrg 	    fi
   11057      1.1  mrg 	    output=$output_objdir/${outputname}i
   11058      1.1  mrg 	    # Replace all uninstalled libtool libraries with the installed ones
   11059      1.1  mrg 	    newdependency_libs=
   11060      1.1  mrg 	    for deplib in $dependency_libs; do
   11061      1.1  mrg 	      case $deplib in
   11062      1.1  mrg 	      *.la)
   11063      1.1  mrg 		func_basename "$deplib"
   11064      1.1  mrg 		name=$func_basename_result
   11065      1.1  mrg 		func_resolve_sysroot "$deplib"
   11066      1.1  mrg 		eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
   11067      1.1  mrg 		test -z "$libdir" && \
   11068      1.1  mrg 		  func_fatal_error "'$deplib' is not a valid libtool archive"
   11069      1.1  mrg 		func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name"
   11070      1.1  mrg 		;;
   11071      1.1  mrg 	      -L*)
   11072      1.1  mrg 		func_stripname -L '' "$deplib"
   11073      1.1  mrg 		func_replace_sysroot "$func_stripname_result"
   11074      1.1  mrg 		func_append newdependency_libs " -L$func_replace_sysroot_result"
   11075      1.1  mrg 		;;
   11076      1.1  mrg 	      -R*)
   11077      1.1  mrg 		func_stripname -R '' "$deplib"
   11078      1.1  mrg 		func_replace_sysroot "$func_stripname_result"
   11079      1.1  mrg 		func_append newdependency_libs " -R$func_replace_sysroot_result"
   11080      1.1  mrg 		;;
   11081      1.1  mrg 	      *) func_append newdependency_libs " $deplib" ;;
   11082      1.1  mrg 	      esac
   11083      1.1  mrg 	    done
   11084      1.1  mrg 	    dependency_libs=$newdependency_libs
   11085      1.1  mrg 	    newdlfiles=
   11086      1.1  mrg 
   11087      1.1  mrg 	    for lib in $dlfiles; do
   11088      1.1  mrg 	      case $lib in
   11089      1.1  mrg 	      *.la)
   11090      1.1  mrg 	        func_basename "$lib"
   11091      1.1  mrg 		name=$func_basename_result
   11092      1.1  mrg 		eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
   11093      1.1  mrg 		test -z "$libdir" && \
   11094      1.1  mrg 		  func_fatal_error "'$lib' is not a valid libtool archive"
   11095      1.1  mrg 		func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name"
   11096      1.1  mrg 		;;
   11097      1.1  mrg 	      *) func_append newdlfiles " $lib" ;;
   11098      1.1  mrg 	      esac
   11099      1.1  mrg 	    done
   11100      1.1  mrg 	    dlfiles=$newdlfiles
   11101      1.1  mrg 	    newdlprefiles=
   11102      1.1  mrg 	    for lib in $dlprefiles; do
   11103      1.1  mrg 	      case $lib in
   11104      1.1  mrg 	      *.la)
   11105      1.1  mrg 		# Only pass preopened files to the pseudo-archive (for
   11106      1.1  mrg 		# eventual linking with the app. that links it) if we
   11107      1.1  mrg 		# didn't already link the preopened objects directly into
   11108      1.1  mrg 		# the library:
   11109      1.1  mrg 		func_basename "$lib"
   11110      1.1  mrg 		name=$func_basename_result
   11111      1.1  mrg 		eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
   11112      1.1  mrg 		test -z "$libdir" && \
   11113      1.1  mrg 		  func_fatal_error "'$lib' is not a valid libtool archive"
   11114      1.1  mrg 		func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name"
   11115      1.1  mrg 		;;
   11116      1.1  mrg 	      esac
   11117      1.1  mrg 	    done
   11118      1.1  mrg 	    dlprefiles=$newdlprefiles
   11119      1.1  mrg 	  else
   11120      1.1  mrg 	    newdlfiles=
   11121      1.1  mrg 	    for lib in $dlfiles; do
   11122      1.1  mrg 	      case $lib in
   11123      1.1  mrg 		[\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;;
   11124      1.1  mrg 		*) abs=`pwd`"/$lib" ;;
   11125      1.1  mrg 	      esac
   11126      1.1  mrg 	      func_append newdlfiles " $abs"
   11127      1.1  mrg 	    done
   11128      1.1  mrg 	    dlfiles=$newdlfiles
   11129      1.1  mrg 	    newdlprefiles=
   11130      1.1  mrg 	    for lib in $dlprefiles; do
   11131      1.1  mrg 	      case $lib in
   11132      1.1  mrg 		[\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;;
   11133      1.1  mrg 		*) abs=`pwd`"/$lib" ;;
   11134      1.1  mrg 	      esac
   11135      1.1  mrg 	      func_append newdlprefiles " $abs"
   11136      1.1  mrg 	    done
   11137      1.1  mrg 	    dlprefiles=$newdlprefiles
   11138      1.1  mrg 	  fi
   11139      1.1  mrg 	  $RM $output
   11140      1.1  mrg 	  # place dlname in correct position for cygwin
   11141      1.1  mrg 	  # In fact, it would be nice if we could use this code for all target
   11142      1.1  mrg 	  # systems that can't hard-code library paths into their executables
   11143      1.1  mrg 	  # and that have no shared library path variable independent of PATH,
   11144      1.1  mrg 	  # but it turns out we can't easily determine that from inspecting
   11145      1.1  mrg 	  # libtool variables, so we have to hard-code the OSs to which it
   11146      1.1  mrg 	  # applies here; at the moment, that means platforms that use the PE
   11147      1.1  mrg 	  # object format with DLL files.  See the long comment at the top of
   11148      1.1  mrg 	  # tests/bindir.at for full details.
   11149      1.1  mrg 	  tdlname=$dlname
   11150      1.1  mrg 	  case $host,$output,$installed,$module,$dlname in
   11151      1.1  mrg 	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll)
   11152      1.1  mrg 	      # If a -bindir argument was supplied, place the dll there.
   11153      1.1  mrg 	      if test -n "$bindir"; then
   11154      1.1  mrg 		func_relative_path "$install_libdir" "$bindir"
   11155      1.1  mrg 		tdlname=$func_relative_path_result/$dlname
   11156      1.1  mrg 	      else
   11157      1.1  mrg 		# Otherwise fall back on heuristic.
   11158      1.1  mrg 		tdlname=../bin/$dlname
   11159      1.1  mrg 	      fi
   11160      1.1  mrg 	      ;;
   11161      1.1  mrg 	  esac
   11162      1.1  mrg 	  $ECHO > $output "\
   11163      1.1  mrg # $outputname - a libtool library file
   11164      1.1  mrg # Generated by $PROGRAM (GNU $PACKAGE) $VERSION
   11165      1.1  mrg #
   11166      1.1  mrg # Please DO NOT delete this file!
   11167      1.1  mrg # It is necessary for linking the library.
   11168      1.1  mrg 
   11169      1.1  mrg # The name that we can dlopen(3).
   11170      1.1  mrg dlname='$tdlname'
   11171      1.1  mrg 
   11172      1.1  mrg # Names of this library.
   11173      1.1  mrg library_names='$library_names'
   11174      1.1  mrg 
   11175      1.1  mrg # The name of the static archive.
   11176      1.1  mrg old_library='$old_library'
   11177      1.1  mrg 
   11178      1.1  mrg # Linker flags that cannot go in dependency_libs.
   11179      1.1  mrg inherited_linker_flags='$new_inherited_linker_flags'
   11180      1.1  mrg 
   11181      1.1  mrg # Libraries that this one depends upon.
   11182      1.1  mrg dependency_libs='$dependency_libs'
   11183      1.1  mrg 
   11184      1.1  mrg # Names of additional weak libraries provided by this library
   11185      1.1  mrg weak_library_names='$weak_libs'
   11186      1.1  mrg 
   11187      1.1  mrg # Version information for $libname.
   11188      1.1  mrg current=$current
   11189      1.1  mrg age=$age
   11190      1.1  mrg revision=$revision
   11191      1.1  mrg 
   11192      1.1  mrg # Is this an already installed library?
   11193      1.1  mrg installed=$installed
   11194      1.1  mrg 
   11195      1.1  mrg # Should we warn about portability when linking against -modules?
   11196      1.1  mrg shouldnotlink=$module
   11197      1.1  mrg 
   11198      1.1  mrg # Files to dlopen/dlpreopen
   11199      1.1  mrg dlopen='$dlfiles'
   11200      1.1  mrg dlpreopen='$dlprefiles'
   11201      1.1  mrg 
   11202      1.1  mrg # Directory that this library needs to be installed in:
   11203      1.1  mrg libdir='$install_libdir'"
   11204      1.1  mrg 	  if test no,yes = "$installed,$need_relink"; then
   11205      1.1  mrg 	    $ECHO >> $output "\
   11206      1.1  mrg relink_command=\"$relink_command\""
   11207      1.1  mrg 	  fi
   11208      1.1  mrg 	done
   11209      1.1  mrg       }
   11210      1.1  mrg 
   11211      1.1  mrg       # Do a symbolic link so that the libtool archive can be found in
   11212      1.1  mrg       # LD_LIBRARY_PATH before the program is installed.
   11213      1.1  mrg       func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
   11214      1.1  mrg       ;;
   11215      1.1  mrg     esac
   11216      1.1  mrg     exit $EXIT_SUCCESS
   11217      1.1  mrg }
   11218      1.1  mrg 
   11219      1.1  mrg if test link = "$opt_mode" || test relink = "$opt_mode"; then
   11220      1.1  mrg   func_mode_link ${1+"$@"}
   11221      1.1  mrg fi
   11222      1.1  mrg 
   11223      1.1  mrg 
   11224      1.1  mrg # func_mode_uninstall arg...
   11225      1.1  mrg func_mode_uninstall ()
   11226      1.1  mrg {
   11227      1.1  mrg     $debug_cmd
   11228      1.1  mrg 
   11229      1.1  mrg     RM=$nonopt
   11230      1.1  mrg     files=
   11231      1.1  mrg     rmforce=false
   11232      1.1  mrg     exit_status=0
   11233      1.1  mrg 
   11234      1.1  mrg     # This variable tells wrapper scripts just to set variables rather
   11235      1.1  mrg     # than running their programs.
   11236      1.1  mrg     libtool_install_magic=$magic
   11237      1.1  mrg 
   11238      1.1  mrg     for arg
   11239      1.1  mrg     do
   11240      1.1  mrg       case $arg in
   11241      1.1  mrg       -f) func_append RM " $arg"; rmforce=: ;;
   11242      1.1  mrg       -*) func_append RM " $arg" ;;
   11243      1.1  mrg       *) func_append files " $arg" ;;
   11244      1.1  mrg       esac
   11245      1.1  mrg     done
   11246      1.1  mrg 
   11247      1.1  mrg     test -z "$RM" && \
   11248      1.1  mrg       func_fatal_help "you must specify an RM program"
   11249      1.1  mrg 
   11250      1.1  mrg     rmdirs=
   11251      1.1  mrg 
   11252      1.1  mrg     for file in $files; do
   11253      1.1  mrg       func_dirname "$file" "" "."
   11254      1.1  mrg       dir=$func_dirname_result
   11255      1.1  mrg       if test . = "$dir"; then
   11256      1.1  mrg 	odir=$objdir
   11257      1.1  mrg       else
   11258      1.1  mrg 	odir=$dir/$objdir
   11259      1.1  mrg       fi
   11260      1.1  mrg       func_basename "$file"
   11261      1.1  mrg       name=$func_basename_result
   11262      1.1  mrg       test uninstall = "$opt_mode" && odir=$dir
   11263      1.1  mrg 
   11264      1.1  mrg       # Remember odir for removal later, being careful to avoid duplicates
   11265      1.1  mrg       if test clean = "$opt_mode"; then
   11266      1.1  mrg 	case " $rmdirs " in
   11267      1.1  mrg 	  *" $odir "*) ;;
   11268      1.1  mrg 	  *) func_append rmdirs " $odir" ;;
   11269      1.1  mrg 	esac
   11270      1.1  mrg       fi
   11271      1.1  mrg 
   11272      1.1  mrg       # Don't error if the file doesn't exist and rm -f was used.
   11273      1.1  mrg       if { test -L "$file"; } >/dev/null 2>&1 ||
   11274      1.1  mrg 	 { test -h "$file"; } >/dev/null 2>&1 ||
   11275      1.1  mrg 	 test -f "$file"; then
   11276      1.1  mrg 	:
   11277      1.1  mrg       elif test -d "$file"; then
   11278      1.1  mrg 	exit_status=1
   11279      1.1  mrg 	continue
   11280      1.1  mrg       elif $rmforce; then
   11281      1.1  mrg 	continue
   11282      1.1  mrg       fi
   11283      1.1  mrg 
   11284      1.1  mrg       rmfiles=$file
   11285      1.1  mrg 
   11286      1.1  mrg       case $name in
   11287      1.1  mrg       *.la)
   11288      1.1  mrg 	# Possibly a libtool archive, so verify it.
   11289      1.1  mrg 	if func_lalib_p "$file"; then
   11290      1.1  mrg 	  func_source $dir/$name
   11291      1.1  mrg 
   11292      1.1  mrg 	  # Delete the libtool libraries and symlinks.
   11293      1.1  mrg 	  for n in $library_names; do
   11294      1.1  mrg 	    func_append rmfiles " $odir/$n"
   11295      1.1  mrg 	  done
   11296      1.1  mrg 	  test -n "$old_library" && func_append rmfiles " $odir/$old_library"
   11297      1.1  mrg 
   11298      1.1  mrg 	  case $opt_mode in
   11299      1.1  mrg 	  clean)
   11300      1.1  mrg 	    case " $library_names " in
   11301      1.1  mrg 	    *" $dlname "*) ;;
   11302      1.1  mrg 	    *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;;
   11303      1.1  mrg 	    esac
   11304      1.1  mrg 	    test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i"
   11305      1.1  mrg 	    ;;
   11306      1.1  mrg 	  uninstall)
   11307      1.1  mrg 	    if test -n "$library_names"; then
   11308      1.1  mrg 	      # Do each command in the postuninstall commands.
   11309      1.1  mrg 	      func_execute_cmds "$postuninstall_cmds" '$rmforce || exit_status=1'
   11310      1.1  mrg 	    fi
   11311      1.1  mrg 
   11312      1.1  mrg 	    if test -n "$old_library"; then
   11313      1.1  mrg 	      # Do each command in the old_postuninstall commands.
   11314      1.1  mrg 	      func_execute_cmds "$old_postuninstall_cmds" '$rmforce || exit_status=1'
   11315      1.1  mrg 	    fi
   11316      1.1  mrg 	    # FIXME: should reinstall the best remaining shared library.
   11317      1.1  mrg 	    ;;
   11318      1.1  mrg 	  esac
   11319      1.1  mrg 	fi
   11320      1.1  mrg 	;;
   11321      1.1  mrg 
   11322      1.1  mrg       *.lo)
   11323      1.1  mrg 	# Possibly a libtool object, so verify it.
   11324      1.1  mrg 	if func_lalib_p "$file"; then
   11325      1.1  mrg 
   11326      1.1  mrg 	  # Read the .lo file
   11327      1.1  mrg 	  func_source $dir/$name
   11328      1.1  mrg 
   11329      1.1  mrg 	  # Add PIC object to the list of files to remove.
   11330      1.1  mrg 	  if test -n "$pic_object" && test none != "$pic_object"; then
   11331      1.1  mrg 	    func_append rmfiles " $dir/$pic_object"
   11332      1.1  mrg 	  fi
   11333      1.1  mrg 
   11334      1.1  mrg 	  # Add non-PIC object to the list of files to remove.
   11335      1.1  mrg 	  if test -n "$non_pic_object" && test none != "$non_pic_object"; then
   11336      1.1  mrg 	    func_append rmfiles " $dir/$non_pic_object"
   11337      1.1  mrg 	  fi
   11338      1.1  mrg 	fi
   11339      1.1  mrg 	;;
   11340      1.1  mrg 
   11341      1.1  mrg       *)
   11342      1.1  mrg 	if test clean = "$opt_mode"; then
   11343      1.1  mrg 	  noexename=$name
   11344      1.1  mrg 	  case $file in
   11345      1.1  mrg 	  *.exe)
   11346      1.1  mrg 	    func_stripname '' '.exe' "$file"
   11347      1.1  mrg 	    file=$func_stripname_result
   11348      1.1  mrg 	    func_stripname '' '.exe' "$name"
   11349      1.1  mrg 	    noexename=$func_stripname_result
   11350      1.1  mrg 	    # $file with .exe has already been added to rmfiles,
   11351      1.1  mrg 	    # add $file without .exe
   11352      1.1  mrg 	    func_append rmfiles " $file"
   11353      1.1  mrg 	    ;;
   11354      1.1  mrg 	  esac
   11355      1.1  mrg 	  # Do a test to see if this is a libtool program.
   11356      1.1  mrg 	  if func_ltwrapper_p "$file"; then
   11357      1.1  mrg 	    if func_ltwrapper_executable_p "$file"; then
   11358      1.1  mrg 	      func_ltwrapper_scriptname "$file"
   11359      1.1  mrg 	      relink_command=
   11360      1.1  mrg 	      func_source $func_ltwrapper_scriptname_result
   11361      1.1  mrg 	      func_append rmfiles " $func_ltwrapper_scriptname_result"
   11362      1.1  mrg 	    else
   11363      1.1  mrg 	      relink_command=
   11364      1.1  mrg 	      func_source $dir/$noexename
   11365      1.1  mrg 	    fi
   11366      1.1  mrg 
   11367      1.1  mrg 	    # note $name still contains .exe if it was in $file originally
   11368      1.1  mrg 	    # as does the version of $file that was added into $rmfiles
   11369      1.1  mrg 	    func_append rmfiles " $odir/$name $odir/${name}S.$objext"
   11370      1.1  mrg 	    if test yes = "$fast_install" && test -n "$relink_command"; then
   11371      1.1  mrg 	      func_append rmfiles " $odir/lt-$name"
   11372      1.1  mrg 	    fi
   11373      1.1  mrg 	    if test "X$noexename" != "X$name"; then
   11374      1.1  mrg 	      func_append rmfiles " $odir/lt-$noexename.c"
   11375      1.1  mrg 	    fi
   11376      1.1  mrg 	  fi
   11377      1.1  mrg 	fi
   11378      1.1  mrg 	;;
   11379      1.1  mrg       esac
   11380      1.1  mrg       func_show_eval "$RM $rmfiles" 'exit_status=1'
   11381      1.1  mrg     done
   11382      1.1  mrg 
   11383      1.1  mrg     # Try to remove the $objdir's in the directories where we deleted files
   11384      1.1  mrg     for dir in $rmdirs; do
   11385      1.1  mrg       if test -d "$dir"; then
   11386      1.1  mrg 	func_show_eval "rmdir $dir >/dev/null 2>&1"
   11387      1.1  mrg       fi
   11388      1.1  mrg     done
   11389      1.1  mrg 
   11390      1.1  mrg     exit $exit_status
   11391      1.1  mrg }
   11392      1.1  mrg 
   11393      1.1  mrg if test uninstall = "$opt_mode" || test clean = "$opt_mode"; then
   11394      1.1  mrg   func_mode_uninstall ${1+"$@"}
   11395      1.1  mrg fi
   11396      1.1  mrg 
   11397      1.1  mrg test -z "$opt_mode" && {
   11398      1.1  mrg   help=$generic_help
   11399      1.1  mrg   func_fatal_help "you must specify a MODE"
   11400      1.1  mrg }
   11401      1.1  mrg 
   11402      1.1  mrg test -z "$exec_cmd" && \
   11403      1.1  mrg   func_fatal_help "invalid operation mode '$opt_mode'"
   11404      1.1  mrg 
   11405      1.1  mrg if test -n "$exec_cmd"; then
   11406      1.1  mrg   eval exec "$exec_cmd"
   11407      1.1  mrg   exit $EXIT_FAILURE
   11408      1.1  mrg fi
   11409      1.1  mrg 
   11410      1.1  mrg exit $exit_status
   11411      1.1  mrg 
   11412      1.1  mrg 
   11413      1.1  mrg # The TAGs below are defined such that we never get into a situation
   11414      1.1  mrg # where we disable both kinds of libraries.  Given conflicting
   11415      1.1  mrg # choices, we go for a static library, that is the most portable,
   11416      1.1  mrg # since we can't tell whether shared libraries were disabled because
   11417      1.1  mrg # the user asked for that or because the platform doesn't support
   11418      1.1  mrg # them.  This is particularly important on AIX, because we don't
   11419      1.1  mrg # support having both static and shared libraries enabled at the same
   11420      1.1  mrg # time on that platform, so we default to a shared-only configuration.
   11421      1.1  mrg # If a disable-shared tag is given, we'll fallback to a static-only
   11422      1.1  mrg # configuration.  But we'll never go from static-only to shared-only.
   11423      1.1  mrg 
   11424      1.1  mrg # ### BEGIN LIBTOOL TAG CONFIG: disable-shared
   11425      1.1  mrg build_libtool_libs=no
   11426      1.1  mrg build_old_libs=yes
   11427      1.1  mrg # ### END LIBTOOL TAG CONFIG: disable-shared
   11428      1.1  mrg 
   11429      1.1  mrg # ### BEGIN LIBTOOL TAG CONFIG: disable-static
   11430      1.1  mrg build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
   11431      1.1  mrg # ### END LIBTOOL TAG CONFIG: disable-static
   11432      1.1  mrg 
   11433      1.1  mrg # Local Variables:
   11434      1.1  mrg # mode:shell-script
   11435      1.1  mrg # sh-indentation:2
   11436      1.1  mrg # End:
   11437