Home | History | Annotate | Line # | Download | only in build-aux
      1  1.1  riastrad #! /bin/sh
      2  1.1  riastrad ## DO NOT EDIT - This file generated from ./build-aux/ltmain.in
      3  1.1  riastrad ##               by inline-source v2014-01-03.01
      4  1.1  riastrad 
      5  1.1  riastrad # libtool (GNU libtool) 2.4.6
      6  1.1  riastrad # Provide generalized library-building support services.
      7  1.1  riastrad # Written by Gordon Matzigkeit <gord (at] gnu.ai.mit.edu>, 1996
      8  1.1  riastrad 
      9  1.1  riastrad # Copyright (C) 1996-2015 Free Software Foundation, Inc.
     10  1.1  riastrad # This is free software; see the source for copying conditions.  There is NO
     11  1.1  riastrad # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
     12  1.1  riastrad 
     13  1.1  riastrad # GNU Libtool is free software; you can redistribute it and/or modify
     14  1.1  riastrad # it under the terms of the GNU General Public License as published by
     15  1.1  riastrad # the Free Software Foundation; either version 2 of the License, or
     16  1.1  riastrad # (at your option) any later version.
     17  1.1  riastrad #
     18  1.1  riastrad # As a special exception to the GNU General Public License,
     19  1.1  riastrad # if you distribute this file as part of a program or library that
     20  1.1  riastrad # is built using GNU Libtool, you may include this file under the
     21  1.1  riastrad # same distribution terms that you use for the rest of that program.
     22  1.1  riastrad #
     23  1.1  riastrad # GNU Libtool is distributed in the hope that it will be useful, but
     24  1.1  riastrad # WITHOUT ANY WARRANTY; without even the implied warranty of
     25  1.1  riastrad # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     26  1.1  riastrad # General Public License for more details.
     27  1.1  riastrad #
     28  1.1  riastrad # You should have received a copy of the GNU General Public License
     29  1.1  riastrad # along with this program.  If not, see <http://www.gnu.org/licenses/>.
     30  1.1  riastrad 
     31  1.1  riastrad 
     32  1.1  riastrad PROGRAM=libtool
     33  1.1  riastrad PACKAGE=libtool
     34  1.1  riastrad VERSION=2.4.6
     35  1.1  riastrad package_revision=2.4.6
     36  1.1  riastrad 
     37  1.1  riastrad 
     38  1.1  riastrad ## ------ ##
     39  1.1  riastrad ## Usage. ##
     40  1.1  riastrad ## ------ ##
     41  1.1  riastrad 
     42  1.1  riastrad # Run './libtool --help' for help with using this script from the
     43  1.1  riastrad # command line.
     44  1.1  riastrad 
     45  1.1  riastrad 
     46  1.1  riastrad ## ------------------------------- ##
     47  1.1  riastrad ## User overridable command paths. ##
     48  1.1  riastrad ## ------------------------------- ##
     49  1.1  riastrad 
     50  1.1  riastrad # After configure completes, it has a better idea of some of the
     51  1.1  riastrad # shell tools we need than the defaults used by the functions shared
     52  1.1  riastrad # with bootstrap, so set those here where they can still be over-
     53  1.1  riastrad # ridden by the user, but otherwise take precedence.
     54  1.1  riastrad 
     55  1.1  riastrad : ${AUTOCONF="autoconf"}
     56  1.1  riastrad : ${AUTOMAKE="automake"}
     57  1.1  riastrad 
     58  1.1  riastrad 
     59  1.1  riastrad ## -------------------------- ##
     60  1.1  riastrad ## Source external libraries. ##
     61  1.1  riastrad ## -------------------------- ##
     62  1.1  riastrad 
     63  1.1  riastrad # Much of our low-level functionality needs to be sourced from external
     64  1.1  riastrad # libraries, which are installed to $pkgauxdir.
     65  1.1  riastrad 
     66  1.1  riastrad # Set a version string for this script.
     67  1.1  riastrad scriptversion=2015-01-20.17; # UTC
     68  1.1  riastrad 
     69  1.1  riastrad # General shell script boiler plate, and helper functions.
     70  1.1  riastrad # Written by Gary V. Vaughan, 2004
     71  1.1  riastrad 
     72  1.1  riastrad # Copyright (C) 2004-2015 Free Software Foundation, Inc.
     73  1.1  riastrad # This is free software; see the source for copying conditions.  There is NO
     74  1.1  riastrad # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
     75  1.1  riastrad 
     76  1.1  riastrad # This program is free software; you can redistribute it and/or modify
     77  1.1  riastrad # it under the terms of the GNU General Public License as published by
     78  1.1  riastrad # the Free Software Foundation; either version 3 of the License, or
     79  1.1  riastrad # (at your option) any later version.
     80  1.1  riastrad 
     81  1.1  riastrad # As a special exception to the GNU General Public License, if you distribute
     82  1.1  riastrad # this file as part of a program or library that is built using GNU Libtool,
     83  1.1  riastrad # you may include this file under the same distribution terms that you use
     84  1.1  riastrad # for the rest of that program.
     85  1.1  riastrad 
     86  1.1  riastrad # This program is distributed in the hope that it will be useful,
     87  1.1  riastrad # but WITHOUT ANY WARRANTY; without even the implied warranty of
     88  1.1  riastrad # MERCHANTABILITY or FITNES FOR A PARTICULAR PURPOSE. See the GNU
     89  1.1  riastrad # General Public License for more details.
     90  1.1  riastrad 
     91  1.1  riastrad # You should have received a copy of the GNU General Public License
     92  1.1  riastrad # along with this program. If not, see <http://www.gnu.org/licenses/>.
     93  1.1  riastrad 
     94  1.1  riastrad # Please report bugs or propose patches to gary (at] gnu.org.
     95  1.1  riastrad 
     96  1.1  riastrad 
     97  1.1  riastrad ## ------ ##
     98  1.1  riastrad ## Usage. ##
     99  1.1  riastrad ## ------ ##
    100  1.1  riastrad 
    101  1.1  riastrad # Evaluate this file near the top of your script to gain access to
    102  1.1  riastrad # the functions and variables defined here:
    103  1.1  riastrad #
    104  1.1  riastrad #   . `echo "$0" | ${SED-sed} 's|[^/]*$||'`/build-aux/funclib.sh
    105  1.1  riastrad #
    106  1.1  riastrad # If you need to override any of the default environment variable
    107  1.1  riastrad # settings, do that before evaluating this file.
    108  1.1  riastrad 
    109  1.1  riastrad 
    110  1.1  riastrad ## -------------------- ##
    111  1.1  riastrad ## Shell normalisation. ##
    112  1.1  riastrad ## -------------------- ##
    113  1.1  riastrad 
    114  1.1  riastrad # Some shells need a little help to be as Bourne compatible as possible.
    115  1.1  riastrad # Before doing anything else, make sure all that help has been provided!
    116  1.1  riastrad 
    117  1.1  riastrad DUALCASE=1; export DUALCASE # for MKS sh
    118  1.1  riastrad if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
    119  1.1  riastrad   emulate sh
    120  1.1  riastrad   NULLCMD=:
    121  1.1  riastrad   # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
    122  1.1  riastrad   # is contrary to our usage.  Disable this feature.
    123  1.1  riastrad   alias -g '${1+"$@"}'='"$@"'
    124  1.1  riastrad   setopt NO_GLOB_SUBST
    125  1.1  riastrad else
    126  1.1  riastrad   case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac
    127  1.1  riastrad fi
    128  1.1  riastrad 
    129  1.1  riastrad # NLS nuisances: We save the old values in case they are required later.
    130  1.1  riastrad _G_user_locale=
    131  1.1  riastrad _G_safe_locale=
    132  1.1  riastrad for _G_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
    133  1.1  riastrad do
    134  1.1  riastrad   eval "if test set = \"\${$_G_var+set}\"; then
    135  1.1  riastrad           save_$_G_var=\$$_G_var
    136  1.1  riastrad           $_G_var=C
    137  1.1  riastrad 	  export $_G_var
    138  1.1  riastrad 	  _G_user_locale=\"$_G_var=\\\$save_\$_G_var; \$_G_user_locale\"
    139  1.1  riastrad 	  _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\"
    140  1.1  riastrad 	fi"
    141  1.1  riastrad done
    142  1.1  riastrad 
    143  1.1  riastrad # CDPATH.
    144  1.1  riastrad (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
    145  1.1  riastrad 
    146  1.1  riastrad # Make sure IFS has a sensible default
    147  1.1  riastrad sp=' '
    148  1.1  riastrad nl='
    149  1.1  riastrad '
    150  1.1  riastrad IFS="$sp	$nl"
    151  1.1  riastrad 
    152  1.1  riastrad # There are apparently some retarded systems that use ';' as a PATH separator!
    153  1.1  riastrad if test "${PATH_SEPARATOR+set}" != set; then
    154  1.1  riastrad   PATH_SEPARATOR=:
    155  1.1  riastrad   (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
    156  1.1  riastrad     (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
    157  1.1  riastrad       PATH_SEPARATOR=';'
    158  1.1  riastrad   }
    159  1.1  riastrad fi
    160  1.1  riastrad 
    161  1.1  riastrad 
    162  1.1  riastrad 
    163  1.1  riastrad ## ------------------------- ##
    164  1.1  riastrad ## Locate command utilities. ##
    165  1.1  riastrad ## ------------------------- ##
    166  1.1  riastrad 
    167  1.1  riastrad 
    168  1.1  riastrad # func_executable_p FILE
    169  1.1  riastrad # ----------------------
    170  1.1  riastrad # Check that FILE is an executable regular file.
    171  1.1  riastrad func_executable_p ()
    172  1.1  riastrad {
    173  1.1  riastrad     test -f "$1" && test -x "$1"
    174  1.1  riastrad }
    175  1.1  riastrad 
    176  1.1  riastrad 
    177  1.1  riastrad # func_path_progs PROGS_LIST CHECK_FUNC [PATH]
    178  1.1  riastrad # --------------------------------------------
    179  1.1  riastrad # Search for either a program that responds to --version with output
    180  1.1  riastrad # containing "GNU", or else returned by CHECK_FUNC otherwise, by
    181  1.1  riastrad # trying all the directories in PATH with each of the elements of
    182  1.1  riastrad # PROGS_LIST.
    183  1.1  riastrad #
    184  1.1  riastrad # CHECK_FUNC should accept the path to a candidate program, and
    185  1.1  riastrad # set $func_check_prog_result if it truncates its output less than
    186  1.1  riastrad # $_G_path_prog_max characters.
    187  1.1  riastrad func_path_progs ()
    188  1.1  riastrad {
    189  1.1  riastrad     _G_progs_list=$1
    190  1.1  riastrad     _G_check_func=$2
    191  1.1  riastrad     _G_PATH=${3-"$PATH"}
    192  1.1  riastrad 
    193  1.1  riastrad     _G_path_prog_max=0
    194  1.1  riastrad     _G_path_prog_found=false
    195  1.1  riastrad     _G_save_IFS=$IFS; IFS=${PATH_SEPARATOR-:}
    196  1.1  riastrad     for _G_dir in $_G_PATH; do
    197  1.1  riastrad       IFS=$_G_save_IFS
    198  1.1  riastrad       test -z "$_G_dir" && _G_dir=.
    199  1.1  riastrad       for _G_prog_name in $_G_progs_list; do
    200  1.1  riastrad         for _exeext in '' .EXE; do
    201  1.1  riastrad           _G_path_prog=$_G_dir/$_G_prog_name$_exeext
    202  1.1  riastrad           func_executable_p "$_G_path_prog" || continue
    203  1.1  riastrad           case `"$_G_path_prog" --version 2>&1` in
    204  1.1  riastrad             *GNU*) func_path_progs_result=$_G_path_prog _G_path_prog_found=: ;;
    205  1.1  riastrad             *)     $_G_check_func $_G_path_prog
    206  1.1  riastrad 		   func_path_progs_result=$func_check_prog_result
    207  1.1  riastrad 		   ;;
    208  1.1  riastrad           esac
    209  1.1  riastrad           $_G_path_prog_found && break 3
    210  1.1  riastrad         done
    211  1.1  riastrad       done
    212  1.1  riastrad     done
    213  1.1  riastrad     IFS=$_G_save_IFS
    214  1.1  riastrad     test -z "$func_path_progs_result" && {
    215  1.1  riastrad       echo "no acceptable sed could be found in \$PATH" >&2
    216  1.1  riastrad       exit 1
    217  1.1  riastrad     }
    218  1.1  riastrad }
    219  1.1  riastrad 
    220  1.1  riastrad 
    221  1.1  riastrad # We want to be able to use the functions in this file before configure
    222  1.1  riastrad # has figured out where the best binaries are kept, which means we have
    223  1.1  riastrad # to search for them ourselves - except when the results are already set
    224  1.1  riastrad # where we skip the searches.
    225  1.1  riastrad 
    226  1.1  riastrad # Unless the user overrides by setting SED, search the path for either GNU
    227  1.1  riastrad # sed, or the sed that truncates its output the least.
    228  1.1  riastrad test -z "$SED" && {
    229  1.1  riastrad   _G_sed_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
    230  1.1  riastrad   for _G_i in 1 2 3 4 5 6 7; do
    231  1.1  riastrad     _G_sed_script=$_G_sed_script$nl$_G_sed_script
    232  1.1  riastrad   done
    233  1.1  riastrad   echo "$_G_sed_script" 2>/dev/null | sed 99q >conftest.sed
    234  1.1  riastrad   _G_sed_script=
    235  1.1  riastrad 
    236  1.1  riastrad   func_check_prog_sed ()
    237  1.1  riastrad   {
    238  1.1  riastrad     _G_path_prog=$1
    239  1.1  riastrad 
    240  1.1  riastrad     _G_count=0
    241  1.1  riastrad     printf 0123456789 >conftest.in
    242  1.1  riastrad     while :
    243  1.1  riastrad     do
    244  1.1  riastrad       cat conftest.in conftest.in >conftest.tmp
    245  1.1  riastrad       mv conftest.tmp conftest.in
    246  1.1  riastrad       cp conftest.in conftest.nl
    247  1.1  riastrad       echo '' >> conftest.nl
    248  1.1  riastrad       "$_G_path_prog" -f conftest.sed <conftest.nl >conftest.out 2>/dev/null || break
    249  1.1  riastrad       diff conftest.out conftest.nl >/dev/null 2>&1 || break
    250  1.1  riastrad       _G_count=`expr $_G_count + 1`
    251  1.1  riastrad       if test "$_G_count" -gt "$_G_path_prog_max"; then
    252  1.1  riastrad         # Best one so far, save it but keep looking for a better one
    253  1.1  riastrad         func_check_prog_result=$_G_path_prog
    254  1.1  riastrad         _G_path_prog_max=$_G_count
    255  1.1  riastrad       fi
    256  1.1  riastrad       # 10*(2^10) chars as input seems more than enough
    257  1.1  riastrad       test 10 -lt "$_G_count" && break
    258  1.1  riastrad     done
    259  1.1  riastrad     rm -f conftest.in conftest.tmp conftest.nl conftest.out
    260  1.1  riastrad   }
    261  1.1  riastrad 
    262  1.1  riastrad   func_path_progs "sed gsed" func_check_prog_sed $PATH:/usr/xpg4/bin
    263  1.1  riastrad   rm -f conftest.sed
    264  1.1  riastrad   SED=$func_path_progs_result
    265  1.1  riastrad }
    266  1.1  riastrad 
    267  1.1  riastrad 
    268  1.1  riastrad # Unless the user overrides by setting GREP, search the path for either GNU
    269  1.1  riastrad # grep, or the grep that truncates its output the least.
    270  1.1  riastrad test -z "$GREP" && {
    271  1.1  riastrad   func_check_prog_grep ()
    272  1.1  riastrad   {
    273  1.1  riastrad     _G_path_prog=$1
    274  1.1  riastrad 
    275  1.1  riastrad     _G_count=0
    276  1.1  riastrad     _G_path_prog_max=0
    277  1.1  riastrad     printf 0123456789 >conftest.in
    278  1.1  riastrad     while :
    279  1.1  riastrad     do
    280  1.1  riastrad       cat conftest.in conftest.in >conftest.tmp
    281  1.1  riastrad       mv conftest.tmp conftest.in
    282  1.1  riastrad       cp conftest.in conftest.nl
    283  1.1  riastrad       echo 'GREP' >> conftest.nl
    284  1.1  riastrad       "$_G_path_prog" -e 'GREP$' -e '-(cannot match)-' <conftest.nl >conftest.out 2>/dev/null || break
    285  1.1  riastrad       diff conftest.out conftest.nl >/dev/null 2>&1 || break
    286  1.1  riastrad       _G_count=`expr $_G_count + 1`
    287  1.1  riastrad       if test "$_G_count" -gt "$_G_path_prog_max"; then
    288  1.1  riastrad         # Best one so far, save it but keep looking for a better one
    289  1.1  riastrad         func_check_prog_result=$_G_path_prog
    290  1.1  riastrad         _G_path_prog_max=$_G_count
    291  1.1  riastrad       fi
    292  1.1  riastrad       # 10*(2^10) chars as input seems more than enough
    293  1.1  riastrad       test 10 -lt "$_G_count" && break
    294  1.1  riastrad     done
    295  1.1  riastrad     rm -f conftest.in conftest.tmp conftest.nl conftest.out
    296  1.1  riastrad   }
    297  1.1  riastrad 
    298  1.1  riastrad   func_path_progs "grep ggrep" func_check_prog_grep $PATH:/usr/xpg4/bin
    299  1.1  riastrad   GREP=$func_path_progs_result
    300  1.1  riastrad }
    301  1.1  riastrad 
    302  1.1  riastrad 
    303  1.1  riastrad ## ------------------------------- ##
    304  1.1  riastrad ## User overridable command paths. ##
    305  1.1  riastrad ## ------------------------------- ##
    306  1.1  riastrad 
    307  1.1  riastrad # All uppercase variable names are used for environment variables.  These
    308  1.1  riastrad # variables can be overridden by the user before calling a script that
    309  1.1  riastrad # uses them if a suitable command of that name is not already available
    310  1.1  riastrad # in the command search PATH.
    311  1.1  riastrad 
    312  1.1  riastrad : ${CP="cp -f"}
    313  1.1  riastrad : ${ECHO="printf %s\n"}
    314  1.1  riastrad : ${EGREP="$GREP -E"}
    315  1.1  riastrad : ${FGREP="$GREP -F"}
    316  1.1  riastrad : ${LN_S="ln -s"}
    317  1.1  riastrad : ${MAKE="make"}
    318  1.1  riastrad : ${MKDIR="mkdir"}
    319  1.1  riastrad : ${MV="mv -f"}
    320  1.1  riastrad : ${RM="rm -f"}
    321  1.1  riastrad : ${SHELL="${CONFIG_SHELL-/bin/sh}"}
    322  1.1  riastrad 
    323  1.1  riastrad 
    324  1.1  riastrad ## -------------------- ##
    325  1.1  riastrad ## Useful sed snippets. ##
    326  1.1  riastrad ## -------------------- ##
    327  1.1  riastrad 
    328  1.1  riastrad sed_dirname='s|/[^/]*$||'
    329  1.1  riastrad sed_basename='s|^.*/||'
    330  1.1  riastrad 
    331  1.1  riastrad # Sed substitution that helps us do robust quoting.  It backslashifies
    332  1.1  riastrad # metacharacters that are still active within double-quoted strings.
    333  1.1  riastrad sed_quote_subst='s|\([`"$\\]\)|\\\1|g'
    334  1.1  riastrad 
    335  1.1  riastrad # Same as above, but do not quote variable references.
    336  1.1  riastrad sed_double_quote_subst='s/\(["`\\]\)/\\\1/g'
    337  1.1  riastrad 
    338  1.1  riastrad # Sed substitution that turns a string into a regex matching for the
    339  1.1  riastrad # string literally.
    340  1.1  riastrad sed_make_literal_regex='s|[].[^$\\*\/]|\\&|g'
    341  1.1  riastrad 
    342  1.1  riastrad # Sed substitution that converts a w32 file name or path
    343  1.1  riastrad # that contains forward slashes, into one that contains
    344  1.1  riastrad # (escaped) backslashes.  A very naive implementation.
    345  1.1  riastrad sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
    346  1.1  riastrad 
    347  1.1  riastrad # Re-'\' parameter expansions in output of sed_double_quote_subst that
    348  1.1  riastrad # were '\'-ed in input to the same.  If an odd number of '\' preceded a
    349  1.1  riastrad # '$' in input to sed_double_quote_subst, that '$' was protected from
    350  1.1  riastrad # expansion.  Since each input '\' is now two '\'s, look for any number
    351  1.1  riastrad # of runs of four '\'s followed by two '\'s and then a '$'.  '\' that '$'.
    352  1.1  riastrad _G_bs='\\'
    353  1.1  riastrad _G_bs2='\\\\'
    354  1.1  riastrad _G_bs4='\\\\\\\\'
    355  1.1  riastrad _G_dollar='\$'
    356  1.1  riastrad sed_double_backslash="\
    357  1.1  riastrad   s/$_G_bs4/&\\
    358  1.1  riastrad /g
    359  1.1  riastrad   s/^$_G_bs2$_G_dollar/$_G_bs&/
    360  1.1  riastrad   s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g
    361  1.1  riastrad   s/\n//g"
    362  1.1  riastrad 
    363  1.1  riastrad 
    364  1.1  riastrad ## ----------------- ##
    365  1.1  riastrad ## Global variables. ##
    366  1.1  riastrad ## ----------------- ##
    367  1.1  riastrad 
    368  1.1  riastrad # Except for the global variables explicitly listed below, the following
    369  1.1  riastrad # functions in the '^func_' namespace, and the '^require_' namespace
    370  1.1  riastrad # variables initialised in the 'Resource management' section, sourcing
    371  1.1  riastrad # this file will not pollute your global namespace with anything
    372  1.1  riastrad # else. There's no portable way to scope variables in Bourne shell
    373  1.1  riastrad # though, so actually running these functions will sometimes place
    374  1.1  riastrad # results into a variable named after the function, and often use
    375  1.1  riastrad # temporary variables in the '^_G_' namespace. If you are careful to
    376  1.1  riastrad # avoid using those namespaces casually in your sourcing script, things
    377  1.1  riastrad # should continue to work as you expect. And, of course, you can freely
    378  1.1  riastrad # overwrite any of the functions or variables defined here before
    379  1.1  riastrad # calling anything to customize them.
    380  1.1  riastrad 
    381  1.1  riastrad EXIT_SUCCESS=0
    382  1.1  riastrad EXIT_FAILURE=1
    383  1.1  riastrad EXIT_MISMATCH=63  # $? = 63 is used to indicate version mismatch to missing.
    384  1.1  riastrad EXIT_SKIP=77	  # $? = 77 is used to indicate a skipped test to automake.
    385  1.1  riastrad 
    386  1.1  riastrad # Allow overriding, eg assuming that you follow the convention of
    387  1.1  riastrad # putting '$debug_cmd' at the start of all your functions, you can get
    388  1.1  riastrad # bash to show function call trace with:
    389  1.1  riastrad #
    390  1.1  riastrad #    debug_cmd='eval echo "${FUNCNAME[0]} $*" >&2' bash your-script-name
    391  1.1  riastrad debug_cmd=${debug_cmd-":"}
    392  1.1  riastrad exit_cmd=:
    393  1.1  riastrad 
    394  1.1  riastrad # By convention, finish your script with:
    395  1.1  riastrad #
    396  1.1  riastrad #    exit $exit_status
    397  1.1  riastrad #
    398  1.1  riastrad # so that you can set exit_status to non-zero if you want to indicate
    399  1.1  riastrad # something went wrong during execution without actually bailing out at
    400  1.1  riastrad # the point of failure.
    401  1.1  riastrad exit_status=$EXIT_SUCCESS
    402  1.1  riastrad 
    403  1.1  riastrad # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
    404  1.1  riastrad # is ksh but when the shell is invoked as "sh" and the current value of
    405  1.1  riastrad # the _XPG environment variable is not equal to 1 (one), the special
    406  1.1  riastrad # positional parameter $0, within a function call, is the name of the
    407  1.1  riastrad # function.
    408  1.1  riastrad progpath=$0
    409  1.1  riastrad 
    410  1.1  riastrad # The name of this program.
    411  1.1  riastrad progname=`$ECHO "$progpath" |$SED "$sed_basename"`
    412  1.1  riastrad 
    413  1.1  riastrad # Make sure we have an absolute progpath for reexecution:
    414  1.1  riastrad case $progpath in
    415  1.1  riastrad   [\\/]*|[A-Za-z]:\\*) ;;
    416  1.1  riastrad   *[\\/]*)
    417  1.1  riastrad      progdir=`$ECHO "$progpath" |$SED "$sed_dirname"`
    418  1.1  riastrad      progdir=`cd "$progdir" && pwd`
    419  1.1  riastrad      progpath=$progdir/$progname
    420  1.1  riastrad      ;;
    421  1.1  riastrad   *)
    422  1.1  riastrad      _G_IFS=$IFS
    423  1.1  riastrad      IFS=${PATH_SEPARATOR-:}
    424  1.1  riastrad      for progdir in $PATH; do
    425  1.1  riastrad        IFS=$_G_IFS
    426  1.1  riastrad        test -x "$progdir/$progname" && break
    427  1.1  riastrad      done
    428  1.1  riastrad      IFS=$_G_IFS
    429  1.1  riastrad      test -n "$progdir" || progdir=`pwd`
    430  1.1  riastrad      progpath=$progdir/$progname
    431  1.1  riastrad      ;;
    432  1.1  riastrad esac
    433  1.1  riastrad 
    434  1.1  riastrad 
    435  1.1  riastrad ## ----------------- ##
    436  1.1  riastrad ## Standard options. ##
    437  1.1  riastrad ## ----------------- ##
    438  1.1  riastrad 
    439  1.1  riastrad # The following options affect the operation of the functions defined
    440  1.1  riastrad # below, and should be set appropriately depending on run-time para-
    441  1.1  riastrad # meters passed on the command line.
    442  1.1  riastrad 
    443  1.1  riastrad opt_dry_run=false
    444  1.1  riastrad opt_quiet=false
    445  1.1  riastrad opt_verbose=false
    446  1.1  riastrad 
    447  1.1  riastrad # Categories 'all' and 'none' are always available.  Append any others
    448  1.1  riastrad # you will pass as the first argument to func_warning from your own
    449  1.1  riastrad # code.
    450  1.1  riastrad warning_categories=
    451  1.1  riastrad 
    452  1.1  riastrad # By default, display warnings according to 'opt_warning_types'.  Set
    453  1.1  riastrad # 'warning_func'  to ':' to elide all warnings, or func_fatal_error to
    454  1.1  riastrad # treat the next displayed warning as a fatal error.
    455  1.1  riastrad warning_func=func_warn_and_continue
    456  1.1  riastrad 
    457  1.1  riastrad # Set to 'all' to display all warnings, 'none' to suppress all
    458  1.1  riastrad # warnings, or a space delimited list of some subset of
    459  1.1  riastrad # 'warning_categories' to display only the listed warnings.
    460  1.1  riastrad opt_warning_types=all
    461  1.1  riastrad 
    462  1.1  riastrad 
    463  1.1  riastrad ## -------------------- ##
    464  1.1  riastrad ## Resource management. ##
    465  1.1  riastrad ## -------------------- ##
    466  1.1  riastrad 
    467  1.1  riastrad # This section contains definitions for functions that each ensure a
    468  1.1  riastrad # particular resource (a file, or a non-empty configuration variable for
    469  1.1  riastrad # example) is available, and if appropriate to extract default values
    470  1.1  riastrad # from pertinent package files. Call them using their associated
    471  1.1  riastrad # 'require_*' variable to ensure that they are executed, at most, once.
    472  1.1  riastrad #
    473  1.1  riastrad # It's entirely deliberate that calling these functions can set
    474  1.1  riastrad # variables that don't obey the namespace limitations obeyed by the rest
    475  1.1  riastrad # of this file, in order that that they be as useful as possible to
    476  1.1  riastrad # callers.
    477  1.1  riastrad 
    478  1.1  riastrad 
    479  1.1  riastrad # require_term_colors
    480  1.1  riastrad # -------------------
    481  1.1  riastrad # Allow display of bold text on terminals that support it.
    482  1.1  riastrad require_term_colors=func_require_term_colors
    483  1.1  riastrad func_require_term_colors ()
    484  1.1  riastrad {
    485  1.1  riastrad     $debug_cmd
    486  1.1  riastrad 
    487  1.1  riastrad     test -t 1 && {
    488  1.1  riastrad       # COLORTERM and USE_ANSI_COLORS environment variables take
    489  1.1  riastrad       # precedence, because most terminfo databases neglect to describe
    490  1.1  riastrad       # whether color sequences are supported.
    491  1.1  riastrad       test -n "${COLORTERM+set}" && : ${USE_ANSI_COLORS="1"}
    492  1.1  riastrad 
    493  1.1  riastrad       if test 1 = "$USE_ANSI_COLORS"; then
    494  1.1  riastrad         # Standard ANSI escape sequences
    495  1.1  riastrad         tc_reset='[0m'
    496  1.1  riastrad         tc_bold='[1m';   tc_standout='[7m'
    497  1.1  riastrad         tc_red='[31m';   tc_green='[32m'
    498  1.1  riastrad         tc_blue='[34m';  tc_cyan='[36m'
    499  1.1  riastrad       else
    500  1.1  riastrad         # Otherwise trust the terminfo database after all.
    501  1.1  riastrad         test -n "`tput sgr0 2>/dev/null`" && {
    502  1.1  riastrad           tc_reset=`tput sgr0`
    503  1.1  riastrad           test -n "`tput bold 2>/dev/null`" && tc_bold=`tput bold`
    504  1.1  riastrad           tc_standout=$tc_bold
    505  1.1  riastrad           test -n "`tput smso 2>/dev/null`" && tc_standout=`tput smso`
    506  1.1  riastrad           test -n "`tput setaf 1 2>/dev/null`" && tc_red=`tput setaf 1`
    507  1.1  riastrad           test -n "`tput setaf 2 2>/dev/null`" && tc_green=`tput setaf 2`
    508  1.1  riastrad           test -n "`tput setaf 4 2>/dev/null`" && tc_blue=`tput setaf 4`
    509  1.1  riastrad           test -n "`tput setaf 5 2>/dev/null`" && tc_cyan=`tput setaf 5`
    510  1.1  riastrad         }
    511  1.1  riastrad       fi
    512  1.1  riastrad     }
    513  1.1  riastrad 
    514  1.1  riastrad     require_term_colors=:
    515  1.1  riastrad }
    516  1.1  riastrad 
    517  1.1  riastrad 
    518  1.1  riastrad ## ----------------- ##
    519  1.1  riastrad ## Function library. ##
    520  1.1  riastrad ## ----------------- ##
    521  1.1  riastrad 
    522  1.1  riastrad # This section contains a variety of useful functions to call in your
    523  1.1  riastrad # scripts. Take note of the portable wrappers for features provided by
    524  1.1  riastrad # some modern shells, which will fall back to slower equivalents on
    525  1.1  riastrad # less featureful shells.
    526  1.1  riastrad 
    527  1.1  riastrad 
    528  1.1  riastrad # func_append VAR VALUE
    529  1.1  riastrad # ---------------------
    530  1.1  riastrad # Append VALUE onto the existing contents of VAR.
    531  1.1  riastrad 
    532  1.1  riastrad   # We should try to minimise forks, especially on Windows where they are
    533  1.1  riastrad   # unreasonably slow, so skip the feature probes when bash or zsh are
    534  1.1  riastrad   # being used:
    535  1.1  riastrad   if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then
    536  1.1  riastrad     : ${_G_HAVE_ARITH_OP="yes"}
    537  1.1  riastrad     : ${_G_HAVE_XSI_OPS="yes"}
    538  1.1  riastrad     # The += operator was introduced in bash 3.1
    539  1.1  riastrad     case $BASH_VERSION in
    540  1.1  riastrad       [12].* | 3.0 | 3.0*) ;;
    541  1.1  riastrad       *)
    542  1.1  riastrad         : ${_G_HAVE_PLUSEQ_OP="yes"}
    543  1.1  riastrad         ;;
    544  1.1  riastrad     esac
    545  1.1  riastrad   fi
    546  1.1  riastrad 
    547  1.1  riastrad   # _G_HAVE_PLUSEQ_OP
    548  1.1  riastrad   # Can be empty, in which case the shell is probed, "yes" if += is
    549  1.1  riastrad   # useable or anything else if it does not work.
    550  1.1  riastrad   test -z "$_G_HAVE_PLUSEQ_OP" \
    551  1.1  riastrad     && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev/null \
    552  1.1  riastrad     && _G_HAVE_PLUSEQ_OP=yes
    553  1.1  riastrad 
    554  1.1  riastrad if test yes = "$_G_HAVE_PLUSEQ_OP"
    555  1.1  riastrad then
    556  1.1  riastrad   # This is an XSI compatible shell, allowing a faster implementation...
    557  1.1  riastrad   eval 'func_append ()
    558  1.1  riastrad   {
    559  1.1  riastrad     $debug_cmd
    560  1.1  riastrad 
    561  1.1  riastrad     eval "$1+=\$2"
    562  1.1  riastrad   }'
    563  1.1  riastrad else
    564  1.1  riastrad   # ...otherwise fall back to using expr, which is often a shell builtin.
    565  1.1  riastrad   func_append ()
    566  1.1  riastrad   {
    567  1.1  riastrad     $debug_cmd
    568  1.1  riastrad 
    569  1.1  riastrad     eval "$1=\$$1\$2"
    570  1.1  riastrad   }
    571  1.1  riastrad fi
    572  1.1  riastrad 
    573  1.1  riastrad 
    574  1.1  riastrad # func_append_quoted VAR VALUE
    575  1.1  riastrad # ----------------------------
    576  1.1  riastrad # Quote VALUE and append to the end of shell variable VAR, separated
    577  1.1  riastrad # by a space.
    578  1.1  riastrad if test yes = "$_G_HAVE_PLUSEQ_OP"; then
    579  1.1  riastrad   eval 'func_append_quoted ()
    580  1.1  riastrad   {
    581  1.1  riastrad     $debug_cmd
    582  1.1  riastrad 
    583  1.1  riastrad     func_quote_for_eval "$2"
    584  1.1  riastrad     eval "$1+=\\ \$func_quote_for_eval_result"
    585  1.1  riastrad   }'
    586  1.1  riastrad else
    587  1.1  riastrad   func_append_quoted ()
    588  1.1  riastrad   {
    589  1.1  riastrad     $debug_cmd
    590  1.1  riastrad 
    591  1.1  riastrad     func_quote_for_eval "$2"
    592  1.1  riastrad     eval "$1=\$$1\\ \$func_quote_for_eval_result"
    593  1.1  riastrad   }
    594  1.1  riastrad fi
    595  1.1  riastrad 
    596  1.1  riastrad 
    597  1.1  riastrad # func_append_uniq VAR VALUE
    598  1.1  riastrad # --------------------------
    599  1.1  riastrad # Append unique VALUE onto the existing contents of VAR, assuming
    600  1.1  riastrad # entries are delimited by the first character of VALUE.  For example:
    601  1.1  riastrad #
    602  1.1  riastrad #   func_append_uniq options " --another-option option-argument"
    603  1.1  riastrad #
    604  1.1  riastrad # will only append to $options if " --another-option option-argument "
    605  1.1  riastrad # is not already present somewhere in $options already (note spaces at
    606  1.1  riastrad # each end implied by leading space in second argument).
    607  1.1  riastrad func_append_uniq ()
    608  1.1  riastrad {
    609  1.1  riastrad     $debug_cmd
    610  1.1  riastrad 
    611  1.1  riastrad     eval _G_current_value='`$ECHO $'$1'`'
    612  1.1  riastrad     _G_delim=`expr "$2" : '\(.\)'`
    613  1.1  riastrad 
    614  1.1  riastrad     case $_G_delim$_G_current_value$_G_delim in
    615  1.1  riastrad       *"$2$_G_delim"*) ;;
    616  1.1  riastrad       *) func_append "$@" ;;
    617  1.1  riastrad     esac
    618  1.1  riastrad }
    619  1.1  riastrad 
    620  1.1  riastrad 
    621  1.1  riastrad # func_arith TERM...
    622  1.1  riastrad # ------------------
    623  1.1  riastrad # Set func_arith_result to the result of evaluating TERMs.
    624  1.1  riastrad   test -z "$_G_HAVE_ARITH_OP" \
    625  1.1  riastrad     && (eval 'test 2 = $(( 1 + 1 ))') 2>/dev/null \
    626  1.1  riastrad     && _G_HAVE_ARITH_OP=yes
    627  1.1  riastrad 
    628  1.1  riastrad if test yes = "$_G_HAVE_ARITH_OP"; then
    629  1.1  riastrad   eval 'func_arith ()
    630  1.1  riastrad   {
    631  1.1  riastrad     $debug_cmd
    632  1.1  riastrad 
    633  1.1  riastrad     func_arith_result=$(( $* ))
    634  1.1  riastrad   }'
    635  1.1  riastrad else
    636  1.1  riastrad   func_arith ()
    637  1.1  riastrad   {
    638  1.1  riastrad     $debug_cmd
    639  1.1  riastrad 
    640  1.1  riastrad     func_arith_result=`expr "$@"`
    641  1.1  riastrad   }
    642  1.1  riastrad fi
    643  1.1  riastrad 
    644  1.1  riastrad 
    645  1.1  riastrad # func_basename FILE
    646  1.1  riastrad # ------------------
    647  1.1  riastrad # Set func_basename_result to FILE with everything up to and including
    648  1.1  riastrad # the last / stripped.
    649  1.1  riastrad if test yes = "$_G_HAVE_XSI_OPS"; then
    650  1.1  riastrad   # If this shell supports suffix pattern removal, then use it to avoid
    651  1.1  riastrad   # forking. Hide the definitions single quotes in case the shell chokes
    652  1.1  riastrad   # on unsupported syntax...
    653  1.1  riastrad   _b='func_basename_result=${1##*/}'
    654  1.1  riastrad   _d='case $1 in
    655  1.1  riastrad         */*) func_dirname_result=${1%/*}$2 ;;
    656  1.1  riastrad         *  ) func_dirname_result=$3        ;;
    657  1.1  riastrad       esac'
    658  1.1  riastrad 
    659  1.1  riastrad else
    660  1.1  riastrad   # ...otherwise fall back to using sed.
    661  1.1  riastrad   _b='func_basename_result=`$ECHO "$1" |$SED "$sed_basename"`'
    662  1.1  riastrad   _d='func_dirname_result=`$ECHO "$1"  |$SED "$sed_dirname"`
    663  1.1  riastrad       if test "X$func_dirname_result" = "X$1"; then
    664  1.1  riastrad         func_dirname_result=$3
    665  1.1  riastrad       else
    666  1.1  riastrad         func_append func_dirname_result "$2"
    667  1.1  riastrad       fi'
    668  1.1  riastrad fi
    669  1.1  riastrad 
    670  1.1  riastrad eval 'func_basename ()
    671  1.1  riastrad {
    672  1.1  riastrad     $debug_cmd
    673  1.1  riastrad 
    674  1.1  riastrad     '"$_b"'
    675  1.1  riastrad }'
    676  1.1  riastrad 
    677  1.1  riastrad 
    678  1.1  riastrad # func_dirname FILE APPEND NONDIR_REPLACEMENT
    679  1.1  riastrad # -------------------------------------------
    680  1.1  riastrad # Compute the dirname of FILE.  If nonempty, add APPEND to the result,
    681  1.1  riastrad # otherwise set result to NONDIR_REPLACEMENT.
    682  1.1  riastrad eval 'func_dirname ()
    683  1.1  riastrad {
    684  1.1  riastrad     $debug_cmd
    685  1.1  riastrad 
    686  1.1  riastrad     '"$_d"'
    687  1.1  riastrad }'
    688  1.1  riastrad 
    689  1.1  riastrad 
    690  1.1  riastrad # func_dirname_and_basename FILE APPEND NONDIR_REPLACEMENT
    691  1.1  riastrad # --------------------------------------------------------
    692  1.1  riastrad # Perform func_basename and func_dirname in a single function
    693  1.1  riastrad # call:
    694  1.1  riastrad #   dirname:  Compute the dirname of FILE.  If nonempty,
    695  1.1  riastrad #             add APPEND to the result, otherwise set result
    696  1.1  riastrad #             to NONDIR_REPLACEMENT.
    697  1.1  riastrad #             value returned in "$func_dirname_result"
    698  1.1  riastrad #   basename: Compute filename of FILE.
    699  1.1  riastrad #             value retuned in "$func_basename_result"
    700  1.1  riastrad # For efficiency, we do not delegate to the functions above but instead
    701  1.1  riastrad # duplicate the functionality here.
    702  1.1  riastrad eval 'func_dirname_and_basename ()
    703  1.1  riastrad {
    704  1.1  riastrad     $debug_cmd
    705  1.1  riastrad 
    706  1.1  riastrad     '"$_b"'
    707  1.1  riastrad     '"$_d"'
    708  1.1  riastrad }'
    709  1.1  riastrad 
    710  1.1  riastrad 
    711  1.1  riastrad # func_echo ARG...
    712  1.1  riastrad # ----------------
    713  1.1  riastrad # Echo program name prefixed message.
    714  1.1  riastrad func_echo ()
    715  1.1  riastrad {
    716  1.1  riastrad     $debug_cmd
    717  1.1  riastrad 
    718  1.1  riastrad     _G_message=$*
    719  1.1  riastrad 
    720  1.1  riastrad     func_echo_IFS=$IFS
    721  1.1  riastrad     IFS=$nl
    722  1.1  riastrad     for _G_line in $_G_message; do
    723  1.1  riastrad       IFS=$func_echo_IFS
    724  1.1  riastrad       $ECHO "$progname: $_G_line"
    725  1.1  riastrad     done
    726  1.1  riastrad     IFS=$func_echo_IFS
    727  1.1  riastrad }
    728  1.1  riastrad 
    729  1.1  riastrad 
    730  1.1  riastrad # func_echo_all ARG...
    731  1.1  riastrad # --------------------
    732  1.1  riastrad # Invoke $ECHO with all args, space-separated.
    733  1.1  riastrad func_echo_all ()
    734  1.1  riastrad {
    735  1.1  riastrad     $ECHO "$*"
    736  1.1  riastrad }
    737  1.1  riastrad 
    738  1.1  riastrad 
    739  1.1  riastrad # func_echo_infix_1 INFIX ARG...
    740  1.1  riastrad # ------------------------------
    741  1.1  riastrad # Echo program name, followed by INFIX on the first line, with any
    742  1.1  riastrad # additional lines not showing INFIX.
    743  1.1  riastrad func_echo_infix_1 ()
    744  1.1  riastrad {
    745  1.1  riastrad     $debug_cmd
    746  1.1  riastrad 
    747  1.1  riastrad     $require_term_colors
    748  1.1  riastrad 
    749  1.1  riastrad     _G_infix=$1; shift
    750  1.1  riastrad     _G_indent=$_G_infix
    751  1.1  riastrad     _G_prefix="$progname: $_G_infix: "
    752  1.1  riastrad     _G_message=$*
    753  1.1  riastrad 
    754  1.1  riastrad     # Strip color escape sequences before counting printable length
    755  1.1  riastrad     for _G_tc in "$tc_reset" "$tc_bold" "$tc_standout" "$tc_red" "$tc_green" "$tc_blue" "$tc_cyan"
    756  1.1  riastrad     do
    757  1.1  riastrad       test -n "$_G_tc" && {
    758  1.1  riastrad         _G_esc_tc=`$ECHO "$_G_tc" | $SED "$sed_make_literal_regex"`
    759  1.1  riastrad         _G_indent=`$ECHO "$_G_indent" | $SED "s|$_G_esc_tc||g"`
    760  1.1  riastrad       }
    761  1.1  riastrad     done
    762  1.1  riastrad     _G_indent="$progname: "`echo "$_G_indent" | $SED 's|.| |g'`"  " ## exclude from sc_prohibit_nested_quotes
    763  1.1  riastrad 
    764  1.1  riastrad     func_echo_infix_1_IFS=$IFS
    765  1.1  riastrad     IFS=$nl
    766  1.1  riastrad     for _G_line in $_G_message; do
    767  1.1  riastrad       IFS=$func_echo_infix_1_IFS
    768  1.1  riastrad       $ECHO "$_G_prefix$tc_bold$_G_line$tc_reset" >&2
    769  1.1  riastrad       _G_prefix=$_G_indent
    770  1.1  riastrad     done
    771  1.1  riastrad     IFS=$func_echo_infix_1_IFS
    772  1.1  riastrad }
    773  1.1  riastrad 
    774  1.1  riastrad 
    775  1.1  riastrad # func_error ARG...
    776  1.1  riastrad # -----------------
    777  1.1  riastrad # Echo program name prefixed message to standard error.
    778  1.1  riastrad func_error ()
    779  1.1  riastrad {
    780  1.1  riastrad     $debug_cmd
    781  1.1  riastrad 
    782  1.1  riastrad     $require_term_colors
    783  1.1  riastrad 
    784  1.1  riastrad     func_echo_infix_1 "  $tc_standout${tc_red}error$tc_reset" "$*" >&2
    785  1.1  riastrad }
    786  1.1  riastrad 
    787  1.1  riastrad 
    788  1.1  riastrad # func_fatal_error ARG...
    789  1.1  riastrad # -----------------------
    790  1.1  riastrad # Echo program name prefixed message to standard error, and exit.
    791  1.1  riastrad func_fatal_error ()
    792  1.1  riastrad {
    793  1.1  riastrad     $debug_cmd
    794  1.1  riastrad 
    795  1.1  riastrad     func_error "$*"
    796  1.1  riastrad     exit $EXIT_FAILURE
    797  1.1  riastrad }
    798  1.1  riastrad 
    799  1.1  riastrad 
    800  1.1  riastrad # func_grep EXPRESSION FILENAME
    801  1.1  riastrad # -----------------------------
    802  1.1  riastrad # Check whether EXPRESSION matches any line of FILENAME, without output.
    803  1.1  riastrad func_grep ()
    804  1.1  riastrad {
    805  1.1  riastrad     $debug_cmd
    806  1.1  riastrad 
    807  1.1  riastrad     $GREP "$1" "$2" >/dev/null 2>&1
    808  1.1  riastrad }
    809  1.1  riastrad 
    810  1.1  riastrad 
    811  1.1  riastrad # func_len STRING
    812  1.1  riastrad # ---------------
    813  1.1  riastrad # Set func_len_result to the length of STRING. STRING may not
    814  1.1  riastrad # start with a hyphen.
    815  1.1  riastrad   test -z "$_G_HAVE_XSI_OPS" \
    816  1.1  riastrad     && (eval 'x=a/b/c;
    817  1.1  riastrad       test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \
    818  1.1  riastrad     && _G_HAVE_XSI_OPS=yes
    819  1.1  riastrad 
    820  1.1  riastrad if test yes = "$_G_HAVE_XSI_OPS"; then
    821  1.1  riastrad   eval 'func_len ()
    822  1.1  riastrad   {
    823  1.1  riastrad     $debug_cmd
    824  1.1  riastrad 
    825  1.1  riastrad     func_len_result=${#1}
    826  1.1  riastrad   }'
    827  1.1  riastrad else
    828  1.1  riastrad   func_len ()
    829  1.1  riastrad   {
    830  1.1  riastrad     $debug_cmd
    831  1.1  riastrad 
    832  1.1  riastrad     func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len`
    833  1.1  riastrad   }
    834  1.1  riastrad fi
    835  1.1  riastrad 
    836  1.1  riastrad 
    837  1.1  riastrad # func_mkdir_p DIRECTORY-PATH
    838  1.1  riastrad # ---------------------------
    839  1.1  riastrad # Make sure the entire path to DIRECTORY-PATH is available.
    840  1.1  riastrad func_mkdir_p ()
    841  1.1  riastrad {
    842  1.1  riastrad     $debug_cmd
    843  1.1  riastrad 
    844  1.1  riastrad     _G_directory_path=$1
    845  1.1  riastrad     _G_dir_list=
    846  1.1  riastrad 
    847  1.1  riastrad     if test -n "$_G_directory_path" && test : != "$opt_dry_run"; then
    848  1.1  riastrad 
    849  1.1  riastrad       # Protect directory names starting with '-'
    850  1.1  riastrad       case $_G_directory_path in
    851  1.1  riastrad         -*) _G_directory_path=./$_G_directory_path ;;
    852  1.1  riastrad       esac
    853  1.1  riastrad 
    854  1.1  riastrad       # While some portion of DIR does not yet exist...
    855  1.1  riastrad       while test ! -d "$_G_directory_path"; do
    856  1.1  riastrad         # ...make a list in topmost first order.  Use a colon delimited
    857  1.1  riastrad 	# list incase some portion of path contains whitespace.
    858  1.1  riastrad         _G_dir_list=$_G_directory_path:$_G_dir_list
    859  1.1  riastrad 
    860  1.1  riastrad         # If the last portion added has no slash in it, the list is done
    861  1.1  riastrad         case $_G_directory_path in */*) ;; *) break ;; esac
    862  1.1  riastrad 
    863  1.1  riastrad         # ...otherwise throw away the child directory and loop
    864  1.1  riastrad         _G_directory_path=`$ECHO "$_G_directory_path" | $SED -e "$sed_dirname"`
    865  1.1  riastrad       done
    866  1.1  riastrad       _G_dir_list=`$ECHO "$_G_dir_list" | $SED 's|:*$||'`
    867  1.1  riastrad 
    868  1.1  riastrad       func_mkdir_p_IFS=$IFS; IFS=:
    869  1.1  riastrad       for _G_dir in $_G_dir_list; do
    870  1.1  riastrad 	IFS=$func_mkdir_p_IFS
    871  1.1  riastrad         # mkdir can fail with a 'File exist' error if two processes
    872  1.1  riastrad         # try to create one of the directories concurrently.  Don't
    873  1.1  riastrad         # stop in that case!
    874  1.1  riastrad         $MKDIR "$_G_dir" 2>/dev/null || :
    875  1.1  riastrad       done
    876  1.1  riastrad       IFS=$func_mkdir_p_IFS
    877  1.1  riastrad 
    878  1.1  riastrad       # Bail out if we (or some other process) failed to create a directory.
    879  1.1  riastrad       test -d "$_G_directory_path" || \
    880  1.1  riastrad         func_fatal_error "Failed to create '$1'"
    881  1.1  riastrad     fi
    882  1.1  riastrad }
    883  1.1  riastrad 
    884  1.1  riastrad 
    885  1.1  riastrad # func_mktempdir [BASENAME]
    886  1.1  riastrad # -------------------------
    887  1.1  riastrad # Make a temporary directory that won't clash with other running
    888  1.1  riastrad # libtool processes, and avoids race conditions if possible.  If
    889  1.1  riastrad # given, BASENAME is the basename for that directory.
    890  1.1  riastrad func_mktempdir ()
    891  1.1  riastrad {
    892  1.1  riastrad     $debug_cmd
    893  1.1  riastrad 
    894  1.1  riastrad     _G_template=${TMPDIR-/tmp}/${1-$progname}
    895  1.1  riastrad 
    896  1.1  riastrad     if test : = "$opt_dry_run"; then
    897  1.1  riastrad       # Return a directory name, but don't create it in dry-run mode
    898  1.1  riastrad       _G_tmpdir=$_G_template-$$
    899  1.1  riastrad     else
    900  1.1  riastrad 
    901  1.1  riastrad       # If mktemp works, use that first and foremost
    902  1.1  riastrad       _G_tmpdir=`mktemp -d "$_G_template-XXXXXXXX" 2>/dev/null`
    903  1.1  riastrad 
    904  1.1  riastrad       if test ! -d "$_G_tmpdir"; then
    905  1.1  riastrad         # Failing that, at least try and use $RANDOM to avoid a race
    906  1.1  riastrad         _G_tmpdir=$_G_template-${RANDOM-0}$$
    907  1.1  riastrad 
    908  1.1  riastrad         func_mktempdir_umask=`umask`
    909  1.1  riastrad         umask 0077
    910  1.1  riastrad         $MKDIR "$_G_tmpdir"
    911  1.1  riastrad         umask $func_mktempdir_umask
    912  1.1  riastrad       fi
    913  1.1  riastrad 
    914  1.1  riastrad       # If we're not in dry-run mode, bomb out on failure
    915  1.1  riastrad       test -d "$_G_tmpdir" || \
    916  1.1  riastrad         func_fatal_error "cannot create temporary directory '$_G_tmpdir'"
    917  1.1  riastrad     fi
    918  1.1  riastrad 
    919  1.1  riastrad     $ECHO "$_G_tmpdir"
    920  1.1  riastrad }
    921  1.1  riastrad 
    922  1.1  riastrad 
    923  1.1  riastrad # func_normal_abspath PATH
    924  1.1  riastrad # ------------------------
    925  1.1  riastrad # Remove doubled-up and trailing slashes, "." path components,
    926  1.1  riastrad # and cancel out any ".." path components in PATH after making
    927  1.1  riastrad # it an absolute path.
    928  1.1  riastrad func_normal_abspath ()
    929  1.1  riastrad {
    930  1.1  riastrad     $debug_cmd
    931  1.1  riastrad 
    932  1.1  riastrad     # These SED scripts presuppose an absolute path with a trailing slash.
    933  1.1  riastrad     _G_pathcar='s|^/\([^/]*\).*$|\1|'
    934  1.1  riastrad     _G_pathcdr='s|^/[^/]*||'
    935  1.1  riastrad     _G_removedotparts=':dotsl
    936  1.1  riastrad 		s|/\./|/|g
    937  1.1  riastrad 		t dotsl
    938  1.1  riastrad 		s|/\.$|/|'
    939  1.1  riastrad     _G_collapseslashes='s|/\{1,\}|/|g'
    940  1.1  riastrad     _G_finalslash='s|/*$|/|'
    941  1.1  riastrad 
    942  1.1  riastrad     # Start from root dir and reassemble the path.
    943  1.1  riastrad     func_normal_abspath_result=
    944  1.1  riastrad     func_normal_abspath_tpath=$1
    945  1.1  riastrad     func_normal_abspath_altnamespace=
    946  1.1  riastrad     case $func_normal_abspath_tpath in
    947  1.1  riastrad       "")
    948  1.1  riastrad         # Empty path, that just means $cwd.
    949  1.1  riastrad         func_stripname '' '/' "`pwd`"
    950  1.1  riastrad         func_normal_abspath_result=$func_stripname_result
    951  1.1  riastrad         return
    952  1.1  riastrad         ;;
    953  1.1  riastrad       # The next three entries are used to spot a run of precisely
    954  1.1  riastrad       # two leading slashes without using negated character classes;
    955  1.1  riastrad       # we take advantage of case's first-match behaviour.
    956  1.1  riastrad       ///*)
    957  1.1  riastrad         # Unusual form of absolute path, do nothing.
    958  1.1  riastrad         ;;
    959  1.1  riastrad       //*)
    960  1.1  riastrad         # Not necessarily an ordinary path; POSIX reserves leading '//'
    961  1.1  riastrad         # and for example Cygwin uses it to access remote file shares
    962  1.1  riastrad         # over CIFS/SMB, so we conserve a leading double slash if found.
    963  1.1  riastrad         func_normal_abspath_altnamespace=/
    964  1.1  riastrad         ;;
    965  1.1  riastrad       /*)
    966  1.1  riastrad         # Absolute path, do nothing.
    967  1.1  riastrad         ;;
    968  1.1  riastrad       *)
    969  1.1  riastrad         # Relative path, prepend $cwd.
    970  1.1  riastrad         func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath
    971  1.1  riastrad         ;;
    972  1.1  riastrad     esac
    973  1.1  riastrad 
    974  1.1  riastrad     # Cancel out all the simple stuff to save iterations.  We also want
    975  1.1  riastrad     # the path to end with a slash for ease of parsing, so make sure
    976  1.1  riastrad     # there is one (and only one) here.
    977  1.1  riastrad     func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
    978  1.1  riastrad           -e "$_G_removedotparts" -e "$_G_collapseslashes" -e "$_G_finalslash"`
    979  1.1  riastrad     while :; do
    980  1.1  riastrad       # Processed it all yet?
    981  1.1  riastrad       if test / = "$func_normal_abspath_tpath"; then
    982  1.1  riastrad         # If we ascended to the root using ".." the result may be empty now.
    983  1.1  riastrad         if test -z "$func_normal_abspath_result"; then
    984  1.1  riastrad           func_normal_abspath_result=/
    985  1.1  riastrad         fi
    986  1.1  riastrad         break
    987  1.1  riastrad       fi
    988  1.1  riastrad       func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \
    989  1.1  riastrad           -e "$_G_pathcar"`
    990  1.1  riastrad       func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
    991  1.1  riastrad           -e "$_G_pathcdr"`
    992  1.1  riastrad       # Figure out what to do with it
    993  1.1  riastrad       case $func_normal_abspath_tcomponent in
    994  1.1  riastrad         "")
    995  1.1  riastrad           # Trailing empty path component, ignore it.
    996  1.1  riastrad           ;;
    997  1.1  riastrad         ..)
    998  1.1  riastrad           # Parent dir; strip last assembled component from result.
    999  1.1  riastrad           func_dirname "$func_normal_abspath_result"
   1000  1.1  riastrad           func_normal_abspath_result=$func_dirname_result
   1001  1.1  riastrad           ;;
   1002  1.1  riastrad         *)
   1003  1.1  riastrad           # Actual path component, append it.
   1004  1.1  riastrad           func_append func_normal_abspath_result "/$func_normal_abspath_tcomponent"
   1005  1.1  riastrad           ;;
   1006  1.1  riastrad       esac
   1007  1.1  riastrad     done
   1008  1.1  riastrad     # Restore leading double-slash if one was found on entry.
   1009  1.1  riastrad     func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result
   1010  1.1  riastrad }
   1011  1.1  riastrad 
   1012  1.1  riastrad 
   1013  1.1  riastrad # func_notquiet ARG...
   1014  1.1  riastrad # --------------------
   1015  1.1  riastrad # Echo program name prefixed message only when not in quiet mode.
   1016  1.1  riastrad func_notquiet ()
   1017  1.1  riastrad {
   1018  1.1  riastrad     $debug_cmd
   1019  1.1  riastrad 
   1020  1.1  riastrad     $opt_quiet || func_echo ${1+"$@"}
   1021  1.1  riastrad 
   1022  1.1  riastrad     # A bug in bash halts the script if the last line of a function
   1023  1.1  riastrad     # fails when set -e is in force, so we need another command to
   1024  1.1  riastrad     # work around that:
   1025  1.1  riastrad     :
   1026  1.1  riastrad }
   1027  1.1  riastrad 
   1028  1.1  riastrad 
   1029  1.1  riastrad # func_relative_path SRCDIR DSTDIR
   1030  1.1  riastrad # --------------------------------
   1031  1.1  riastrad # Set func_relative_path_result to the relative path from SRCDIR to DSTDIR.
   1032  1.1  riastrad func_relative_path ()
   1033  1.1  riastrad {
   1034  1.1  riastrad     $debug_cmd
   1035  1.1  riastrad 
   1036  1.1  riastrad     func_relative_path_result=
   1037  1.1  riastrad     func_normal_abspath "$1"
   1038  1.1  riastrad     func_relative_path_tlibdir=$func_normal_abspath_result
   1039  1.1  riastrad     func_normal_abspath "$2"
   1040  1.1  riastrad     func_relative_path_tbindir=$func_normal_abspath_result
   1041  1.1  riastrad 
   1042  1.1  riastrad     # Ascend the tree starting from libdir
   1043  1.1  riastrad     while :; do
   1044  1.1  riastrad       # check if we have found a prefix of bindir
   1045  1.1  riastrad       case $func_relative_path_tbindir in
   1046  1.1  riastrad         $func_relative_path_tlibdir)
   1047  1.1  riastrad           # found an exact match
   1048  1.1  riastrad           func_relative_path_tcancelled=
   1049  1.1  riastrad           break
   1050  1.1  riastrad           ;;
   1051  1.1  riastrad         $func_relative_path_tlibdir*)
   1052  1.1  riastrad           # found a matching prefix
   1053  1.1  riastrad           func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir"
   1054  1.1  riastrad           func_relative_path_tcancelled=$func_stripname_result
   1055  1.1  riastrad           if test -z "$func_relative_path_result"; then
   1056  1.1  riastrad             func_relative_path_result=.
   1057  1.1  riastrad           fi
   1058  1.1  riastrad           break
   1059  1.1  riastrad           ;;
   1060  1.1  riastrad         *)
   1061  1.1  riastrad           func_dirname $func_relative_path_tlibdir
   1062  1.1  riastrad           func_relative_path_tlibdir=$func_dirname_result
   1063  1.1  riastrad           if test -z "$func_relative_path_tlibdir"; then
   1064  1.1  riastrad             # Have to descend all the way to the root!
   1065  1.1  riastrad             func_relative_path_result=../$func_relative_path_result
   1066  1.1  riastrad             func_relative_path_tcancelled=$func_relative_path_tbindir
   1067  1.1  riastrad             break
   1068  1.1  riastrad           fi
   1069  1.1  riastrad           func_relative_path_result=../$func_relative_path_result
   1070  1.1  riastrad           ;;
   1071  1.1  riastrad       esac
   1072  1.1  riastrad     done
   1073  1.1  riastrad 
   1074  1.1  riastrad     # Now calculate path; take care to avoid doubling-up slashes.
   1075  1.1  riastrad     func_stripname '' '/' "$func_relative_path_result"
   1076  1.1  riastrad     func_relative_path_result=$func_stripname_result
   1077  1.1  riastrad     func_stripname '/' '/' "$func_relative_path_tcancelled"
   1078  1.1  riastrad     if test -n "$func_stripname_result"; then
   1079  1.1  riastrad       func_append func_relative_path_result "/$func_stripname_result"
   1080  1.1  riastrad     fi
   1081  1.1  riastrad 
   1082  1.1  riastrad     # Normalisation. If bindir is libdir, return '.' else relative path.
   1083  1.1  riastrad     if test -n "$func_relative_path_result"; then
   1084  1.1  riastrad       func_stripname './' '' "$func_relative_path_result"
   1085  1.1  riastrad       func_relative_path_result=$func_stripname_result
   1086  1.1  riastrad     fi
   1087  1.1  riastrad 
   1088  1.1  riastrad     test -n "$func_relative_path_result" || func_relative_path_result=.
   1089  1.1  riastrad 
   1090  1.1  riastrad     :
   1091  1.1  riastrad }
   1092  1.1  riastrad 
   1093  1.1  riastrad 
   1094  1.1  riastrad # func_quote_for_eval ARG...
   1095  1.1  riastrad # --------------------------
   1096  1.1  riastrad # Aesthetically quote ARGs to be evaled later.
   1097  1.1  riastrad # This function returns two values:
   1098  1.1  riastrad #   i) func_quote_for_eval_result
   1099  1.1  riastrad #      double-quoted, suitable for a subsequent eval
   1100  1.1  riastrad #  ii) func_quote_for_eval_unquoted_result
   1101  1.1  riastrad #      has all characters that are still active within double
   1102  1.1  riastrad #      quotes backslashified.
   1103  1.1  riastrad func_quote_for_eval ()
   1104  1.1  riastrad {
   1105  1.1  riastrad     $debug_cmd
   1106  1.1  riastrad 
   1107  1.1  riastrad     func_quote_for_eval_unquoted_result=
   1108  1.1  riastrad     func_quote_for_eval_result=
   1109  1.1  riastrad     while test 0 -lt $#; do
   1110  1.1  riastrad       case $1 in
   1111  1.1  riastrad         *[\\\`\"\$]*)
   1112  1.1  riastrad 	  _G_unquoted_arg=`printf '%s\n' "$1" |$SED "$sed_quote_subst"` ;;
   1113  1.1  riastrad         *)
   1114  1.1  riastrad           _G_unquoted_arg=$1 ;;
   1115  1.1  riastrad       esac
   1116  1.1  riastrad       if test -n "$func_quote_for_eval_unquoted_result"; then
   1117  1.1  riastrad 	func_append func_quote_for_eval_unquoted_result " $_G_unquoted_arg"
   1118  1.1  riastrad       else
   1119  1.1  riastrad         func_append func_quote_for_eval_unquoted_result "$_G_unquoted_arg"
   1120  1.1  riastrad       fi
   1121  1.1  riastrad 
   1122  1.1  riastrad       case $_G_unquoted_arg in
   1123  1.1  riastrad         # Double-quote args containing shell metacharacters to delay
   1124  1.1  riastrad         # word splitting, command substitution and variable expansion
   1125  1.1  riastrad         # for a subsequent eval.
   1126  1.1  riastrad         # Many Bourne shells cannot handle close brackets correctly
   1127  1.1  riastrad         # in scan sets, so we specify it separately.
   1128  1.1  riastrad         *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
   1129  1.1  riastrad           _G_quoted_arg=\"$_G_unquoted_arg\"
   1130  1.1  riastrad           ;;
   1131  1.1  riastrad         *)
   1132  1.1  riastrad           _G_quoted_arg=$_G_unquoted_arg
   1133  1.1  riastrad 	  ;;
   1134  1.1  riastrad       esac
   1135  1.1  riastrad 
   1136  1.1  riastrad       if test -n "$func_quote_for_eval_result"; then
   1137  1.1  riastrad 	func_append func_quote_for_eval_result " $_G_quoted_arg"
   1138  1.1  riastrad       else
   1139  1.1  riastrad         func_append func_quote_for_eval_result "$_G_quoted_arg"
   1140  1.1  riastrad       fi
   1141  1.1  riastrad       shift
   1142  1.1  riastrad     done
   1143  1.1  riastrad }
   1144  1.1  riastrad 
   1145  1.1  riastrad 
   1146  1.1  riastrad # func_quote_for_expand ARG
   1147  1.1  riastrad # -------------------------
   1148  1.1  riastrad # Aesthetically quote ARG to be evaled later; same as above,
   1149  1.1  riastrad # but do not quote variable references.
   1150  1.1  riastrad func_quote_for_expand ()
   1151  1.1  riastrad {
   1152  1.1  riastrad     $debug_cmd
   1153  1.1  riastrad 
   1154  1.1  riastrad     case $1 in
   1155  1.1  riastrad       *[\\\`\"]*)
   1156  1.1  riastrad 	_G_arg=`$ECHO "$1" | $SED \
   1157  1.1  riastrad 	    -e "$sed_double_quote_subst" -e "$sed_double_backslash"` ;;
   1158  1.1  riastrad       *)
   1159  1.1  riastrad         _G_arg=$1 ;;
   1160  1.1  riastrad     esac
   1161  1.1  riastrad 
   1162  1.1  riastrad     case $_G_arg in
   1163  1.1  riastrad       # Double-quote args containing shell metacharacters to delay
   1164  1.1  riastrad       # word splitting and command substitution for a subsequent eval.
   1165  1.1  riastrad       # Many Bourne shells cannot handle close brackets correctly
   1166  1.1  riastrad       # in scan sets, so we specify it separately.
   1167  1.1  riastrad       *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
   1168  1.1  riastrad         _G_arg=\"$_G_arg\"
   1169  1.1  riastrad         ;;
   1170  1.1  riastrad     esac
   1171  1.1  riastrad 
   1172  1.1  riastrad     func_quote_for_expand_result=$_G_arg
   1173  1.1  riastrad }
   1174  1.1  riastrad 
   1175  1.1  riastrad 
   1176  1.1  riastrad # func_stripname PREFIX SUFFIX NAME
   1177  1.1  riastrad # ---------------------------------
   1178  1.1  riastrad # strip PREFIX and SUFFIX from NAME, and store in func_stripname_result.
   1179  1.1  riastrad # PREFIX and SUFFIX must not contain globbing or regex special
   1180  1.1  riastrad # characters, hashes, percent signs, but SUFFIX may contain a leading
   1181  1.1  riastrad # dot (in which case that matches only a dot).
   1182  1.1  riastrad if test yes = "$_G_HAVE_XSI_OPS"; then
   1183  1.1  riastrad   eval 'func_stripname ()
   1184  1.1  riastrad   {
   1185  1.1  riastrad     $debug_cmd
   1186  1.1  riastrad 
   1187  1.1  riastrad     # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
   1188  1.1  riastrad     # positional parameters, so assign one to ordinary variable first.
   1189  1.1  riastrad     func_stripname_result=$3
   1190  1.1  riastrad     func_stripname_result=${func_stripname_result#"$1"}
   1191  1.1  riastrad     func_stripname_result=${func_stripname_result%"$2"}
   1192  1.1  riastrad   }'
   1193  1.1  riastrad else
   1194  1.1  riastrad   func_stripname ()
   1195  1.1  riastrad   {
   1196  1.1  riastrad     $debug_cmd
   1197  1.1  riastrad 
   1198  1.1  riastrad     case $2 in
   1199  1.1  riastrad       .*) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%\\\\$2\$%%"`;;
   1200  1.1  riastrad       *)  func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%$2\$%%"`;;
   1201  1.1  riastrad     esac
   1202  1.1  riastrad   }
   1203  1.1  riastrad fi
   1204  1.1  riastrad 
   1205  1.1  riastrad 
   1206  1.1  riastrad # func_show_eval CMD [FAIL_EXP]
   1207  1.1  riastrad # -----------------------------
   1208  1.1  riastrad # Unless opt_quiet is true, then output CMD.  Then, if opt_dryrun is
   1209  1.1  riastrad # not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
   1210  1.1  riastrad # is given, then evaluate it.
   1211  1.1  riastrad func_show_eval ()
   1212  1.1  riastrad {
   1213  1.1  riastrad     $debug_cmd
   1214  1.1  riastrad 
   1215  1.1  riastrad     _G_cmd=$1
   1216  1.1  riastrad     _G_fail_exp=${2-':'}
   1217  1.1  riastrad 
   1218  1.1  riastrad     func_quote_for_expand "$_G_cmd"
   1219  1.1  riastrad     eval "func_notquiet $func_quote_for_expand_result"
   1220  1.1  riastrad 
   1221  1.1  riastrad     $opt_dry_run || {
   1222  1.1  riastrad       eval "$_G_cmd"
   1223  1.1  riastrad       _G_status=$?
   1224  1.1  riastrad       if test 0 -ne "$_G_status"; then
   1225  1.1  riastrad 	eval "(exit $_G_status); $_G_fail_exp"
   1226  1.1  riastrad       fi
   1227  1.1  riastrad     }
   1228  1.1  riastrad }
   1229  1.1  riastrad 
   1230  1.1  riastrad 
   1231  1.1  riastrad # func_show_eval_locale CMD [FAIL_EXP]
   1232  1.1  riastrad # ------------------------------------
   1233  1.1  riastrad # Unless opt_quiet is true, then output CMD.  Then, if opt_dryrun is
   1234  1.1  riastrad # not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
   1235  1.1  riastrad # is given, then evaluate it.  Use the saved locale for evaluation.
   1236  1.1  riastrad func_show_eval_locale ()
   1237  1.1  riastrad {
   1238  1.1  riastrad     $debug_cmd
   1239  1.1  riastrad 
   1240  1.1  riastrad     _G_cmd=$1
   1241  1.1  riastrad     _G_fail_exp=${2-':'}
   1242  1.1  riastrad 
   1243  1.1  riastrad     $opt_quiet || {
   1244  1.1  riastrad       func_quote_for_expand "$_G_cmd"
   1245  1.1  riastrad       eval "func_echo $func_quote_for_expand_result"
   1246  1.1  riastrad     }
   1247  1.1  riastrad 
   1248  1.1  riastrad     $opt_dry_run || {
   1249  1.1  riastrad       eval "$_G_user_locale
   1250  1.1  riastrad 	    $_G_cmd"
   1251  1.1  riastrad       _G_status=$?
   1252  1.1  riastrad       eval "$_G_safe_locale"
   1253  1.1  riastrad       if test 0 -ne "$_G_status"; then
   1254  1.1  riastrad 	eval "(exit $_G_status); $_G_fail_exp"
   1255  1.1  riastrad       fi
   1256  1.1  riastrad     }
   1257  1.1  riastrad }
   1258  1.1  riastrad 
   1259  1.1  riastrad 
   1260  1.1  riastrad # func_tr_sh
   1261  1.1  riastrad # ----------
   1262  1.1  riastrad # Turn $1 into a string suitable for a shell variable name.
   1263  1.1  riastrad # Result is stored in $func_tr_sh_result.  All characters
   1264  1.1  riastrad # not in the set a-zA-Z0-9_ are replaced with '_'. Further,
   1265  1.1  riastrad # if $1 begins with a digit, a '_' is prepended as well.
   1266  1.1  riastrad func_tr_sh ()
   1267  1.1  riastrad {
   1268  1.1  riastrad     $debug_cmd
   1269  1.1  riastrad 
   1270  1.1  riastrad     case $1 in
   1271  1.1  riastrad     [0-9]* | *[!a-zA-Z0-9_]*)
   1272  1.1  riastrad       func_tr_sh_result=`$ECHO "$1" | $SED -e 's/^\([0-9]\)/_\1/' -e 's/[^a-zA-Z0-9_]/_/g'`
   1273  1.1  riastrad       ;;
   1274  1.1  riastrad     * )
   1275  1.1  riastrad       func_tr_sh_result=$1
   1276  1.1  riastrad       ;;
   1277  1.1  riastrad     esac
   1278  1.1  riastrad }
   1279  1.1  riastrad 
   1280  1.1  riastrad 
   1281  1.1  riastrad # func_verbose ARG...
   1282  1.1  riastrad # -------------------
   1283  1.1  riastrad # Echo program name prefixed message in verbose mode only.
   1284  1.1  riastrad func_verbose ()
   1285  1.1  riastrad {
   1286  1.1  riastrad     $debug_cmd
   1287  1.1  riastrad 
   1288  1.1  riastrad     $opt_verbose && func_echo "$*"
   1289  1.1  riastrad 
   1290  1.1  riastrad     :
   1291  1.1  riastrad }
   1292  1.1  riastrad 
   1293  1.1  riastrad 
   1294  1.1  riastrad # func_warn_and_continue ARG...
   1295  1.1  riastrad # -----------------------------
   1296  1.1  riastrad # Echo program name prefixed warning message to standard error.
   1297  1.1  riastrad func_warn_and_continue ()
   1298  1.1  riastrad {
   1299  1.1  riastrad     $debug_cmd
   1300  1.1  riastrad 
   1301  1.1  riastrad     $require_term_colors
   1302  1.1  riastrad 
   1303  1.1  riastrad     func_echo_infix_1 "${tc_red}warning$tc_reset" "$*" >&2
   1304  1.1  riastrad }
   1305  1.1  riastrad 
   1306  1.1  riastrad 
   1307  1.1  riastrad # func_warning CATEGORY ARG...
   1308  1.1  riastrad # ----------------------------
   1309  1.1  riastrad # Echo program name prefixed warning message to standard error. Warning
   1310  1.1  riastrad # messages can be filtered according to CATEGORY, where this function
   1311  1.1  riastrad # elides messages where CATEGORY is not listed in the global variable
   1312  1.1  riastrad # 'opt_warning_types'.
   1313  1.1  riastrad func_warning ()
   1314  1.1  riastrad {
   1315  1.1  riastrad     $debug_cmd
   1316  1.1  riastrad 
   1317  1.1  riastrad     # CATEGORY must be in the warning_categories list!
   1318  1.1  riastrad     case " $warning_categories " in
   1319  1.1  riastrad       *" $1 "*) ;;
   1320  1.1  riastrad       *) func_internal_error "invalid warning category '$1'" ;;
   1321  1.1  riastrad     esac
   1322  1.1  riastrad 
   1323  1.1  riastrad     _G_category=$1
   1324  1.1  riastrad     shift
   1325  1.1  riastrad 
   1326  1.1  riastrad     case " $opt_warning_types " in
   1327  1.1  riastrad       *" $_G_category "*) $warning_func ${1+"$@"} ;;
   1328  1.1  riastrad     esac
   1329  1.1  riastrad }
   1330  1.1  riastrad 
   1331  1.1  riastrad 
   1332  1.1  riastrad # func_sort_ver VER1 VER2
   1333  1.1  riastrad # -----------------------
   1334  1.1  riastrad # 'sort -V' is not generally available.
   1335  1.1  riastrad # Note this deviates from the version comparison in automake
   1336  1.1  riastrad # in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a
   1337  1.1  riastrad # but this should suffice as we won't be specifying old
   1338  1.1  riastrad # version formats or redundant trailing .0 in bootstrap.conf.
   1339  1.1  riastrad # If we did want full compatibility then we should probably
   1340  1.1  riastrad # use m4_version_compare from autoconf.
   1341  1.1  riastrad func_sort_ver ()
   1342  1.1  riastrad {
   1343  1.1  riastrad     $debug_cmd
   1344  1.1  riastrad 
   1345  1.1  riastrad     printf '%s\n%s\n' "$1" "$2" \
   1346  1.1  riastrad       | 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
   1347  1.1  riastrad }
   1348  1.1  riastrad 
   1349  1.1  riastrad # func_lt_ver PREV CURR
   1350  1.1  riastrad # ---------------------
   1351  1.1  riastrad # Return true if PREV and CURR are in the correct order according to
   1352  1.1  riastrad # func_sort_ver, otherwise false.  Use it like this:
   1353  1.1  riastrad #
   1354  1.1  riastrad #  func_lt_ver "$prev_ver" "$proposed_ver" || func_fatal_error "..."
   1355  1.1  riastrad func_lt_ver ()
   1356  1.1  riastrad {
   1357  1.1  riastrad     $debug_cmd
   1358  1.1  riastrad 
   1359  1.1  riastrad     test "x$1" = x`func_sort_ver "$1" "$2" | $SED 1q`
   1360  1.1  riastrad }
   1361  1.1  riastrad 
   1362  1.1  riastrad 
   1363  1.1  riastrad # Local variables:
   1364  1.1  riastrad # mode: shell-script
   1365  1.1  riastrad # sh-indentation: 2
   1366  1.1  riastrad # eval: (add-hook 'before-save-hook 'time-stamp)
   1367  1.1  riastrad # time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC"
   1368  1.1  riastrad # time-stamp-time-zone: "UTC"
   1369  1.1  riastrad # End:
   1370  1.1  riastrad #! /bin/sh
   1371  1.1  riastrad 
   1372  1.1  riastrad # Set a version string for this script.
   1373  1.1  riastrad scriptversion=2014-01-07.03; # UTC
   1374  1.1  riastrad 
   1375  1.1  riastrad # A portable, pluggable option parser for Bourne shell.
   1376  1.1  riastrad # Written by Gary V. Vaughan, 2010
   1377  1.1  riastrad 
   1378  1.1  riastrad # Copyright (C) 2010-2015 Free Software Foundation, Inc.
   1379  1.1  riastrad # This is free software; see the source for copying conditions.  There is NO
   1380  1.1  riastrad # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
   1381  1.1  riastrad 
   1382  1.1  riastrad # This program is free software: you can redistribute it and/or modify
   1383  1.1  riastrad # it under the terms of the GNU General Public License as published by
   1384  1.1  riastrad # the Free Software Foundation, either version 3 of the License, or
   1385  1.1  riastrad # (at your option) any later version.
   1386  1.1  riastrad 
   1387  1.1  riastrad # This program is distributed in the hope that it will be useful,
   1388  1.1  riastrad # but WITHOUT ANY WARRANTY; without even the implied warranty of
   1389  1.1  riastrad # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   1390  1.1  riastrad # GNU General Public License for more details.
   1391  1.1  riastrad 
   1392  1.1  riastrad # You should have received a copy of the GNU General Public License
   1393  1.1  riastrad # along with this program.  If not, see <http://www.gnu.org/licenses/>.
   1394  1.1  riastrad 
   1395  1.1  riastrad # Please report bugs or propose patches to gary (at] gnu.org.
   1396  1.1  riastrad 
   1397  1.1  riastrad 
   1398  1.1  riastrad ## ------ ##
   1399  1.1  riastrad ## Usage. ##
   1400  1.1  riastrad ## ------ ##
   1401  1.1  riastrad 
   1402  1.1  riastrad # This file is a library for parsing options in your shell scripts along
   1403  1.1  riastrad # with assorted other useful supporting features that you can make use
   1404  1.1  riastrad # of too.
   1405  1.1  riastrad #
   1406  1.1  riastrad # For the simplest scripts you might need only:
   1407  1.1  riastrad #
   1408  1.1  riastrad #   #!/bin/sh
   1409  1.1  riastrad #   . relative/path/to/funclib.sh
   1410  1.1  riastrad #   . relative/path/to/options-parser
   1411  1.1  riastrad #   scriptversion=1.0
   1412  1.1  riastrad #   func_options ${1+"$@"}
   1413  1.1  riastrad #   eval set dummy "$func_options_result"; shift
   1414  1.1  riastrad #   ...rest of your script...
   1415  1.1  riastrad #
   1416  1.1  riastrad # In order for the '--version' option to work, you will need to have a
   1417  1.1  riastrad # suitably formatted comment like the one at the top of this file
   1418  1.1  riastrad # starting with '# Written by ' and ending with '# warranty; '.
   1419  1.1  riastrad #
   1420  1.1  riastrad # For '-h' and '--help' to work, you will also need a one line
   1421  1.1  riastrad # description of your script's purpose in a comment directly above the
   1422  1.1  riastrad # '# Written by ' line, like the one at the top of this file.
   1423  1.1  riastrad #
   1424  1.1  riastrad # The default options also support '--debug', which will turn on shell
   1425  1.1  riastrad # execution tracing (see the comment above debug_cmd below for another
   1426  1.1  riastrad # use), and '--verbose' and the func_verbose function to allow your script
   1427  1.1  riastrad # to display verbose messages only when your user has specified
   1428  1.1  riastrad # '--verbose'.
   1429  1.1  riastrad #
   1430  1.1  riastrad # After sourcing this file, you can plug processing for additional
   1431  1.1  riastrad # options by amending the variables from the 'Configuration' section
   1432  1.1  riastrad # below, and following the instructions in the 'Option parsing'
   1433  1.1  riastrad # section further down.
   1434  1.1  riastrad 
   1435  1.1  riastrad ## -------------- ##
   1436  1.1  riastrad ## Configuration. ##
   1437  1.1  riastrad ## -------------- ##
   1438  1.1  riastrad 
   1439  1.1  riastrad # You should override these variables in your script after sourcing this
   1440  1.1  riastrad # file so that they reflect the customisations you have added to the
   1441  1.1  riastrad # option parser.
   1442  1.1  riastrad 
   1443  1.1  riastrad # The usage line for option parsing errors and the start of '-h' and
   1444  1.1  riastrad # '--help' output messages. You can embed shell variables for delayed
   1445  1.1  riastrad # expansion at the time the message is displayed, but you will need to
   1446  1.1  riastrad # quote other shell meta-characters carefully to prevent them being
   1447  1.1  riastrad # expanded when the contents are evaled.
   1448  1.1  riastrad usage='$progpath [OPTION]...'
   1449  1.1  riastrad 
   1450  1.1  riastrad # Short help message in response to '-h' and '--help'.  Add to this or
   1451  1.1  riastrad # override it after sourcing this library to reflect the full set of
   1452  1.1  riastrad # options your script accepts.
   1453  1.1  riastrad usage_message="\
   1454  1.1  riastrad        --debug        enable verbose shell tracing
   1455  1.1  riastrad    -W, --warnings=CATEGORY
   1456  1.1  riastrad                       report the warnings falling in CATEGORY [all]
   1457  1.1  riastrad    -v, --verbose      verbosely report processing
   1458  1.1  riastrad        --version      print version information and exit
   1459  1.1  riastrad    -h, --help         print short or long help message and exit
   1460  1.1  riastrad "
   1461  1.1  riastrad 
   1462  1.1  riastrad # Additional text appended to 'usage_message' in response to '--help'.
   1463  1.1  riastrad long_help_message="
   1464  1.1  riastrad Warning categories include:
   1465  1.1  riastrad        'all'          show all warnings
   1466  1.1  riastrad        'none'         turn off all the warnings
   1467  1.1  riastrad        'error'        warnings are treated as fatal errors"
   1468  1.1  riastrad 
   1469  1.1  riastrad # Help message printed before fatal option parsing errors.
   1470  1.1  riastrad fatal_help="Try '\$progname --help' for more information."
   1471  1.1  riastrad 
   1472  1.1  riastrad 
   1473  1.1  riastrad 
   1474  1.1  riastrad ## ------------------------- ##
   1475  1.1  riastrad ## Hook function management. ##
   1476  1.1  riastrad ## ------------------------- ##
   1477  1.1  riastrad 
   1478  1.1  riastrad # This section contains functions for adding, removing, and running hooks
   1479  1.1  riastrad # to the main code.  A hook is just a named list of of function, that can
   1480  1.1  riastrad # be run in order later on.
   1481  1.1  riastrad 
   1482  1.1  riastrad # func_hookable FUNC_NAME
   1483  1.1  riastrad # -----------------------
   1484  1.1  riastrad # Declare that FUNC_NAME will run hooks added with
   1485  1.1  riastrad # 'func_add_hook FUNC_NAME ...'.
   1486  1.1  riastrad func_hookable ()
   1487  1.1  riastrad {
   1488  1.1  riastrad     $debug_cmd
   1489  1.1  riastrad 
   1490  1.1  riastrad     func_append hookable_fns " $1"
   1491  1.1  riastrad }
   1492  1.1  riastrad 
   1493  1.1  riastrad 
   1494  1.1  riastrad # func_add_hook FUNC_NAME HOOK_FUNC
   1495  1.1  riastrad # ---------------------------------
   1496  1.1  riastrad # Request that FUNC_NAME call HOOK_FUNC before it returns.  FUNC_NAME must
   1497  1.1  riastrad # first have been declared "hookable" by a call to 'func_hookable'.
   1498  1.1  riastrad func_add_hook ()
   1499  1.1  riastrad {
   1500  1.1  riastrad     $debug_cmd
   1501  1.1  riastrad 
   1502  1.1  riastrad     case " $hookable_fns " in
   1503  1.1  riastrad       *" $1 "*) ;;
   1504  1.1  riastrad       *) func_fatal_error "'$1' does not accept hook functions." ;;
   1505  1.1  riastrad     esac
   1506  1.1  riastrad 
   1507  1.1  riastrad     eval func_append ${1}_hooks '" $2"'
   1508  1.1  riastrad }
   1509  1.1  riastrad 
   1510  1.1  riastrad 
   1511  1.1  riastrad # func_remove_hook FUNC_NAME HOOK_FUNC
   1512  1.1  riastrad # ------------------------------------
   1513  1.1  riastrad # Remove HOOK_FUNC from the list of functions called by FUNC_NAME.
   1514  1.1  riastrad func_remove_hook ()
   1515  1.1  riastrad {
   1516  1.1  riastrad     $debug_cmd
   1517  1.1  riastrad 
   1518  1.1  riastrad     eval ${1}_hooks='`$ECHO "\$'$1'_hooks" |$SED "s| '$2'||"`'
   1519  1.1  riastrad }
   1520  1.1  riastrad 
   1521  1.1  riastrad 
   1522  1.1  riastrad # func_run_hooks FUNC_NAME [ARG]...
   1523  1.1  riastrad # ---------------------------------
   1524  1.1  riastrad # Run all hook functions registered to FUNC_NAME.
   1525  1.1  riastrad # It is assumed that the list of hook functions contains nothing more
   1526  1.1  riastrad # than a whitespace-delimited list of legal shell function names, and
   1527  1.1  riastrad # no effort is wasted trying to catch shell meta-characters or preserve
   1528  1.1  riastrad # whitespace.
   1529  1.1  riastrad func_run_hooks ()
   1530  1.1  riastrad {
   1531  1.1  riastrad     $debug_cmd
   1532  1.1  riastrad 
   1533  1.1  riastrad     case " $hookable_fns " in
   1534  1.1  riastrad       *" $1 "*) ;;
   1535  1.1  riastrad       *) func_fatal_error "'$1' does not support hook funcions.n" ;;
   1536  1.1  riastrad     esac
   1537  1.1  riastrad 
   1538  1.1  riastrad     eval _G_hook_fns=\$$1_hooks; shift
   1539  1.1  riastrad 
   1540  1.1  riastrad     for _G_hook in $_G_hook_fns; do
   1541  1.1  riastrad       eval $_G_hook '"$@"'
   1542  1.1  riastrad 
   1543  1.1  riastrad       # store returned options list back into positional
   1544  1.1  riastrad       # parameters for next 'cmd' execution.
   1545  1.1  riastrad       eval _G_hook_result=\$${_G_hook}_result
   1546  1.1  riastrad       eval set dummy "$_G_hook_result"; shift
   1547  1.1  riastrad     done
   1548  1.1  riastrad 
   1549  1.1  riastrad     func_quote_for_eval ${1+"$@"}
   1550  1.1  riastrad     func_run_hooks_result=$func_quote_for_eval_result
   1551  1.1  riastrad }
   1552  1.1  riastrad 
   1553  1.1  riastrad 
   1554  1.1  riastrad 
   1555  1.1  riastrad ## --------------- ##
   1556  1.1  riastrad ## Option parsing. ##
   1557  1.1  riastrad ## --------------- ##
   1558  1.1  riastrad 
   1559  1.1  riastrad # In order to add your own option parsing hooks, you must accept the
   1560  1.1  riastrad # full positional parameter list in your hook function, remove any
   1561  1.1  riastrad # options that you action, and then pass back the remaining unprocessed
   1562  1.1  riastrad # options in '<hooked_function_name>_result', escaped suitably for
   1563  1.1  riastrad # 'eval'.  Like this:
   1564  1.1  riastrad #
   1565  1.1  riastrad #    my_options_prep ()
   1566  1.1  riastrad #    {
   1567  1.1  riastrad #        $debug_cmd
   1568  1.1  riastrad #
   1569  1.1  riastrad #        # Extend the existing usage message.
   1570  1.1  riastrad #        usage_message=$usage_message'
   1571  1.1  riastrad #      -s, --silent       don'\''t print informational messages
   1572  1.1  riastrad #    '
   1573  1.1  riastrad #
   1574  1.1  riastrad #        func_quote_for_eval ${1+"$@"}
   1575  1.1  riastrad #        my_options_prep_result=$func_quote_for_eval_result
   1576  1.1  riastrad #    }
   1577  1.1  riastrad #    func_add_hook func_options_prep my_options_prep
   1578  1.1  riastrad #
   1579  1.1  riastrad #
   1580  1.1  riastrad #    my_silent_option ()
   1581  1.1  riastrad #    {
   1582  1.1  riastrad #        $debug_cmd
   1583  1.1  riastrad #
   1584  1.1  riastrad #        # Note that for efficiency, we parse as many options as we can
   1585  1.1  riastrad #        # recognise in a loop before passing the remainder back to the
   1586  1.1  riastrad #        # caller on the first unrecognised argument we encounter.
   1587  1.1  riastrad #        while test $# -gt 0; do
   1588  1.1  riastrad #          opt=$1; shift
   1589  1.1  riastrad #          case $opt in
   1590  1.1  riastrad #            --silent|-s) opt_silent=: ;;
   1591  1.1  riastrad #            # Separate non-argument short options:
   1592  1.1  riastrad #            -s*)         func_split_short_opt "$_G_opt"
   1593  1.1  riastrad #                         set dummy "$func_split_short_opt_name" \
   1594  1.1  riastrad #                             "-$func_split_short_opt_arg" ${1+"$@"}
   1595  1.1  riastrad #                         shift
   1596  1.1  riastrad #                         ;;
   1597  1.1  riastrad #            *)            set dummy "$_G_opt" "$*"; shift; break ;;
   1598  1.1  riastrad #          esac
   1599  1.1  riastrad #        done
   1600  1.1  riastrad #
   1601  1.1  riastrad #        func_quote_for_eval ${1+"$@"}
   1602  1.1  riastrad #        my_silent_option_result=$func_quote_for_eval_result
   1603  1.1  riastrad #    }
   1604  1.1  riastrad #    func_add_hook func_parse_options my_silent_option
   1605  1.1  riastrad #
   1606  1.1  riastrad #
   1607  1.1  riastrad #    my_option_validation ()
   1608  1.1  riastrad #    {
   1609  1.1  riastrad #        $debug_cmd
   1610  1.1  riastrad #
   1611  1.1  riastrad #        $opt_silent && $opt_verbose && func_fatal_help "\
   1612  1.1  riastrad #    '--silent' and '--verbose' options are mutually exclusive."
   1613  1.1  riastrad #
   1614  1.1  riastrad #        func_quote_for_eval ${1+"$@"}
   1615  1.1  riastrad #        my_option_validation_result=$func_quote_for_eval_result
   1616  1.1  riastrad #    }
   1617  1.1  riastrad #    func_add_hook func_validate_options my_option_validation
   1618  1.1  riastrad #
   1619  1.1  riastrad # You'll alse need to manually amend $usage_message to reflect the extra
   1620  1.1  riastrad # options you parse.  It's preferable to append if you can, so that
   1621  1.1  riastrad # multiple option parsing hooks can be added safely.
   1622  1.1  riastrad 
   1623  1.1  riastrad 
   1624  1.1  riastrad # func_options [ARG]...
   1625  1.1  riastrad # ---------------------
   1626  1.1  riastrad # All the functions called inside func_options are hookable. See the
   1627  1.1  riastrad # individual implementations for details.
   1628  1.1  riastrad func_hookable func_options
   1629  1.1  riastrad func_options ()
   1630  1.1  riastrad {
   1631  1.1  riastrad     $debug_cmd
   1632  1.1  riastrad 
   1633  1.1  riastrad     func_options_prep ${1+"$@"}
   1634  1.1  riastrad     eval func_parse_options \
   1635  1.1  riastrad         ${func_options_prep_result+"$func_options_prep_result"}
   1636  1.1  riastrad     eval func_validate_options \
   1637  1.1  riastrad         ${func_parse_options_result+"$func_parse_options_result"}
   1638  1.1  riastrad 
   1639  1.1  riastrad     eval func_run_hooks func_options \
   1640  1.1  riastrad         ${func_validate_options_result+"$func_validate_options_result"}
   1641  1.1  riastrad 
   1642  1.1  riastrad     # save modified positional parameters for caller
   1643  1.1  riastrad     func_options_result=$func_run_hooks_result
   1644  1.1  riastrad }
   1645  1.1  riastrad 
   1646  1.1  riastrad 
   1647  1.1  riastrad # func_options_prep [ARG]...
   1648  1.1  riastrad # --------------------------
   1649  1.1  riastrad # All initialisations required before starting the option parse loop.
   1650  1.1  riastrad # Note that when calling hook functions, we pass through the list of
   1651  1.1  riastrad # positional parameters.  If a hook function modifies that list, and
   1652  1.1  riastrad # needs to propogate that back to rest of this script, then the complete
   1653  1.1  riastrad # modified list must be put in 'func_run_hooks_result' before
   1654  1.1  riastrad # returning.
   1655  1.1  riastrad func_hookable func_options_prep
   1656  1.1  riastrad func_options_prep ()
   1657  1.1  riastrad {
   1658  1.1  riastrad     $debug_cmd
   1659  1.1  riastrad 
   1660  1.1  riastrad     # Option defaults:
   1661  1.1  riastrad     opt_verbose=false
   1662  1.1  riastrad     opt_warning_types=
   1663  1.1  riastrad 
   1664  1.1  riastrad     func_run_hooks func_options_prep ${1+"$@"}
   1665  1.1  riastrad 
   1666  1.1  riastrad     # save modified positional parameters for caller
   1667  1.1  riastrad     func_options_prep_result=$func_run_hooks_result
   1668  1.1  riastrad }
   1669  1.1  riastrad 
   1670  1.1  riastrad 
   1671  1.1  riastrad # func_parse_options [ARG]...
   1672  1.1  riastrad # ---------------------------
   1673  1.1  riastrad # The main option parsing loop.
   1674  1.1  riastrad func_hookable func_parse_options
   1675  1.1  riastrad func_parse_options ()
   1676  1.1  riastrad {
   1677  1.1  riastrad     $debug_cmd
   1678  1.1  riastrad 
   1679  1.1  riastrad     func_parse_options_result=
   1680  1.1  riastrad 
   1681  1.1  riastrad     # this just eases exit handling
   1682  1.1  riastrad     while test $# -gt 0; do
   1683  1.1  riastrad       # Defer to hook functions for initial option parsing, so they
   1684  1.1  riastrad       # get priority in the event of reusing an option name.
   1685  1.1  riastrad       func_run_hooks func_parse_options ${1+"$@"}
   1686  1.1  riastrad 
   1687  1.1  riastrad       # Adjust func_parse_options positional parameters to match
   1688  1.1  riastrad       eval set dummy "$func_run_hooks_result"; shift
   1689  1.1  riastrad 
   1690  1.1  riastrad       # Break out of the loop if we already parsed every option.
   1691  1.1  riastrad       test $# -gt 0 || break
   1692  1.1  riastrad 
   1693  1.1  riastrad       _G_opt=$1
   1694  1.1  riastrad       shift
   1695  1.1  riastrad       case $_G_opt in
   1696  1.1  riastrad         --debug|-x)   debug_cmd='set -x'
   1697  1.1  riastrad                       func_echo "enabling shell trace mode"
   1698  1.1  riastrad                       $debug_cmd
   1699  1.1  riastrad                       ;;
   1700  1.1  riastrad 
   1701  1.1  riastrad         --no-warnings|--no-warning|--no-warn)
   1702  1.1  riastrad                       set dummy --warnings none ${1+"$@"}
   1703  1.1  riastrad                       shift
   1704  1.1  riastrad 		      ;;
   1705  1.1  riastrad 
   1706  1.1  riastrad         --warnings|--warning|-W)
   1707  1.1  riastrad                       test $# = 0 && func_missing_arg $_G_opt && break
   1708  1.1  riastrad                       case " $warning_categories $1" in
   1709  1.1  riastrad                         *" $1 "*)
   1710  1.1  riastrad                           # trailing space prevents matching last $1 above
   1711  1.1  riastrad                           func_append_uniq opt_warning_types " $1"
   1712  1.1  riastrad                           ;;
   1713  1.1  riastrad                         *all)
   1714  1.1  riastrad                           opt_warning_types=$warning_categories
   1715  1.1  riastrad                           ;;
   1716  1.1  riastrad                         *none)
   1717  1.1  riastrad                           opt_warning_types=none
   1718  1.1  riastrad                           warning_func=:
   1719  1.1  riastrad                           ;;
   1720  1.1  riastrad                         *error)
   1721  1.1  riastrad                           opt_warning_types=$warning_categories
   1722  1.1  riastrad                           warning_func=func_fatal_error
   1723  1.1  riastrad                           ;;
   1724  1.1  riastrad                         *)
   1725  1.1  riastrad                           func_fatal_error \
   1726  1.1  riastrad                              "unsupported warning category: '$1'"
   1727  1.1  riastrad                           ;;
   1728  1.1  riastrad                       esac
   1729  1.1  riastrad                       shift
   1730  1.1  riastrad                       ;;
   1731  1.1  riastrad 
   1732  1.1  riastrad         --verbose|-v) opt_verbose=: ;;
   1733  1.1  riastrad         --version)    func_version ;;
   1734  1.1  riastrad         -\?|-h)       func_usage ;;
   1735  1.1  riastrad         --help)       func_help ;;
   1736  1.1  riastrad 
   1737  1.1  riastrad 	# Separate optargs to long options (plugins may need this):
   1738  1.1  riastrad 	--*=*)        func_split_equals "$_G_opt"
   1739  1.1  riastrad 	              set dummy "$func_split_equals_lhs" \
   1740  1.1  riastrad                           "$func_split_equals_rhs" ${1+"$@"}
   1741  1.1  riastrad                       shift
   1742  1.1  riastrad                       ;;
   1743  1.1  riastrad 
   1744  1.1  riastrad        # Separate optargs to short options:
   1745  1.1  riastrad         -W*)
   1746  1.1  riastrad                       func_split_short_opt "$_G_opt"
   1747  1.1  riastrad                       set dummy "$func_split_short_opt_name" \
   1748  1.1  riastrad                           "$func_split_short_opt_arg" ${1+"$@"}
   1749  1.1  riastrad                       shift
   1750  1.1  riastrad                       ;;
   1751  1.1  riastrad 
   1752  1.1  riastrad         # Separate non-argument short options:
   1753  1.1  riastrad         -\?*|-h*|-v*|-x*)
   1754  1.1  riastrad                       func_split_short_opt "$_G_opt"
   1755  1.1  riastrad                       set dummy "$func_split_short_opt_name" \
   1756  1.1  riastrad                           "-$func_split_short_opt_arg" ${1+"$@"}
   1757  1.1  riastrad                       shift
   1758  1.1  riastrad                       ;;
   1759  1.1  riastrad 
   1760  1.1  riastrad         --)           break ;;
   1761  1.1  riastrad         -*)           func_fatal_help "unrecognised option: '$_G_opt'" ;;
   1762  1.1  riastrad         *)            set dummy "$_G_opt" ${1+"$@"}; shift; break ;;
   1763  1.1  riastrad       esac
   1764  1.1  riastrad     done
   1765  1.1  riastrad 
   1766  1.1  riastrad     # save modified positional parameters for caller
   1767  1.1  riastrad     func_quote_for_eval ${1+"$@"}
   1768  1.1  riastrad     func_parse_options_result=$func_quote_for_eval_result
   1769  1.1  riastrad }
   1770  1.1  riastrad 
   1771  1.1  riastrad 
   1772  1.1  riastrad # func_validate_options [ARG]...
   1773  1.1  riastrad # ------------------------------
   1774  1.1  riastrad # Perform any sanity checks on option settings and/or unconsumed
   1775  1.1  riastrad # arguments.
   1776  1.1  riastrad func_hookable func_validate_options
   1777  1.1  riastrad func_validate_options ()
   1778  1.1  riastrad {
   1779  1.1  riastrad     $debug_cmd
   1780  1.1  riastrad 
   1781  1.1  riastrad     # Display all warnings if -W was not given.
   1782  1.1  riastrad     test -n "$opt_warning_types" || opt_warning_types=" $warning_categories"
   1783  1.1  riastrad 
   1784  1.1  riastrad     func_run_hooks func_validate_options ${1+"$@"}
   1785  1.1  riastrad 
   1786  1.1  riastrad     # Bail if the options were screwed!
   1787  1.1  riastrad     $exit_cmd $EXIT_FAILURE
   1788  1.1  riastrad 
   1789  1.1  riastrad     # save modified positional parameters for caller
   1790  1.1  riastrad     func_validate_options_result=$func_run_hooks_result
   1791  1.1  riastrad }
   1792  1.1  riastrad 
   1793  1.1  riastrad 
   1794  1.1  riastrad 
   1795  1.1  riastrad ## ----------------- ##
   1796  1.1  riastrad ## Helper functions. ##
   1797  1.1  riastrad ## ----------------- ##
   1798  1.1  riastrad 
   1799  1.1  riastrad # This section contains the helper functions used by the rest of the
   1800  1.1  riastrad # hookable option parser framework in ascii-betical order.
   1801  1.1  riastrad 
   1802  1.1  riastrad 
   1803  1.1  riastrad # func_fatal_help ARG...
   1804  1.1  riastrad # ----------------------
   1805  1.1  riastrad # Echo program name prefixed message to standard error, followed by
   1806  1.1  riastrad # a help hint, and exit.
   1807  1.1  riastrad func_fatal_help ()
   1808  1.1  riastrad {
   1809  1.1  riastrad     $debug_cmd
   1810  1.1  riastrad 
   1811  1.1  riastrad     eval \$ECHO \""Usage: $usage"\"
   1812  1.1  riastrad     eval \$ECHO \""$fatal_help"\"
   1813  1.1  riastrad     func_error ${1+"$@"}
   1814  1.1  riastrad     exit $EXIT_FAILURE
   1815  1.1  riastrad }
   1816  1.1  riastrad 
   1817  1.1  riastrad 
   1818  1.1  riastrad # func_help
   1819  1.1  riastrad # ---------
   1820  1.1  riastrad # Echo long help message to standard output and exit.
   1821  1.1  riastrad func_help ()
   1822  1.1  riastrad {
   1823  1.1  riastrad     $debug_cmd
   1824  1.1  riastrad 
   1825  1.1  riastrad     func_usage_message
   1826  1.1  riastrad     $ECHO "$long_help_message"
   1827  1.1  riastrad     exit 0
   1828  1.1  riastrad }
   1829  1.1  riastrad 
   1830  1.1  riastrad 
   1831  1.1  riastrad # func_missing_arg ARGNAME
   1832  1.1  riastrad # ------------------------
   1833  1.1  riastrad # Echo program name prefixed message to standard error and set global
   1834  1.1  riastrad # exit_cmd.
   1835  1.1  riastrad func_missing_arg ()
   1836  1.1  riastrad {
   1837  1.1  riastrad     $debug_cmd
   1838  1.1  riastrad 
   1839  1.1  riastrad     func_error "Missing argument for '$1'."
   1840  1.1  riastrad     exit_cmd=exit
   1841  1.1  riastrad }
   1842  1.1  riastrad 
   1843  1.1  riastrad 
   1844  1.1  riastrad # func_split_equals STRING
   1845  1.1  riastrad # ------------------------
   1846  1.1  riastrad # Set func_split_equals_lhs and func_split_equals_rhs shell variables after
   1847  1.1  riastrad # splitting STRING at the '=' sign.
   1848  1.1  riastrad test -z "$_G_HAVE_XSI_OPS" \
   1849  1.1  riastrad     && (eval 'x=a/b/c;
   1850  1.1  riastrad       test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \
   1851  1.1  riastrad     && _G_HAVE_XSI_OPS=yes
   1852  1.1  riastrad 
   1853  1.1  riastrad if test yes = "$_G_HAVE_XSI_OPS"
   1854  1.1  riastrad then
   1855  1.1  riastrad   # This is an XSI compatible shell, allowing a faster implementation...
   1856  1.1  riastrad   eval 'func_split_equals ()
   1857  1.1  riastrad   {
   1858  1.1  riastrad       $debug_cmd
   1859  1.1  riastrad 
   1860  1.1  riastrad       func_split_equals_lhs=${1%%=*}
   1861  1.1  riastrad       func_split_equals_rhs=${1#*=}
   1862  1.1  riastrad       test "x$func_split_equals_lhs" = "x$1" \
   1863  1.1  riastrad         && func_split_equals_rhs=
   1864  1.1  riastrad   }'
   1865  1.1  riastrad else
   1866  1.1  riastrad   # ...otherwise fall back to using expr, which is often a shell builtin.
   1867  1.1  riastrad   func_split_equals ()
   1868  1.1  riastrad   {
   1869  1.1  riastrad       $debug_cmd
   1870  1.1  riastrad 
   1871  1.1  riastrad       func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'`
   1872  1.1  riastrad       func_split_equals_rhs=
   1873  1.1  riastrad       test "x$func_split_equals_lhs" = "x$1" \
   1874  1.1  riastrad         || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'`
   1875  1.1  riastrad   }
   1876  1.1  riastrad fi #func_split_equals
   1877  1.1  riastrad 
   1878  1.1  riastrad 
   1879  1.1  riastrad # func_split_short_opt SHORTOPT
   1880  1.1  riastrad # -----------------------------
   1881  1.1  riastrad # Set func_split_short_opt_name and func_split_short_opt_arg shell
   1882  1.1  riastrad # variables after splitting SHORTOPT after the 2nd character.
   1883  1.1  riastrad if test yes = "$_G_HAVE_XSI_OPS"
   1884  1.1  riastrad then
   1885  1.1  riastrad   # This is an XSI compatible shell, allowing a faster implementation...
   1886  1.1  riastrad   eval 'func_split_short_opt ()
   1887  1.1  riastrad   {
   1888  1.1  riastrad       $debug_cmd
   1889  1.1  riastrad 
   1890  1.1  riastrad       func_split_short_opt_arg=${1#??}
   1891  1.1  riastrad       func_split_short_opt_name=${1%"$func_split_short_opt_arg"}
   1892  1.1  riastrad   }'
   1893  1.1  riastrad else
   1894  1.1  riastrad   # ...otherwise fall back to using expr, which is often a shell builtin.
   1895  1.1  riastrad   func_split_short_opt ()
   1896  1.1  riastrad   {
   1897  1.1  riastrad       $debug_cmd
   1898  1.1  riastrad 
   1899  1.1  riastrad       func_split_short_opt_name=`expr "x$1" : 'x-\(.\)'`
   1900  1.1  riastrad       func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'`
   1901  1.1  riastrad   }
   1902  1.1  riastrad fi #func_split_short_opt
   1903  1.1  riastrad 
   1904  1.1  riastrad 
   1905  1.1  riastrad # func_usage
   1906  1.1  riastrad # ----------
   1907  1.1  riastrad # Echo short help message to standard output and exit.
   1908  1.1  riastrad func_usage ()
   1909  1.1  riastrad {
   1910  1.1  riastrad     $debug_cmd
   1911  1.1  riastrad 
   1912  1.1  riastrad     func_usage_message
   1913  1.1  riastrad     $ECHO "Run '$progname --help |${PAGER-more}' for full usage"
   1914  1.1  riastrad     exit 0
   1915  1.1  riastrad }
   1916  1.1  riastrad 
   1917  1.1  riastrad 
   1918  1.1  riastrad # func_usage_message
   1919  1.1  riastrad # ------------------
   1920  1.1  riastrad # Echo short help message to standard output.
   1921  1.1  riastrad func_usage_message ()
   1922  1.1  riastrad {
   1923  1.1  riastrad     $debug_cmd
   1924  1.1  riastrad 
   1925  1.1  riastrad     eval \$ECHO \""Usage: $usage"\"
   1926  1.1  riastrad     echo
   1927  1.1  riastrad     $SED -n 's|^# ||
   1928  1.1  riastrad         /^Written by/{
   1929  1.1  riastrad           x;p;x
   1930  1.1  riastrad         }
   1931  1.1  riastrad 	h
   1932  1.1  riastrad 	/^Written by/q' < "$progpath"
   1933  1.1  riastrad     echo
   1934  1.1  riastrad     eval \$ECHO \""$usage_message"\"
   1935  1.1  riastrad }
   1936  1.1  riastrad 
   1937  1.1  riastrad 
   1938  1.1  riastrad # func_version
   1939  1.1  riastrad # ------------
   1940  1.1  riastrad # Echo version message to standard output and exit.
   1941  1.1  riastrad func_version ()
   1942  1.1  riastrad {
   1943  1.1  riastrad     $debug_cmd
   1944  1.1  riastrad 
   1945  1.1  riastrad     printf '%s\n' "$progname $scriptversion"
   1946  1.1  riastrad     $SED -n '
   1947  1.1  riastrad         /(C)/!b go
   1948  1.1  riastrad         :more
   1949  1.1  riastrad         /\./!{
   1950  1.1  riastrad           N
   1951  1.1  riastrad           s|\n# | |
   1952  1.1  riastrad           b more
   1953  1.1  riastrad         }
   1954  1.1  riastrad         :go
   1955  1.1  riastrad         /^# Written by /,/# warranty; / {
   1956  1.1  riastrad           s|^# ||
   1957  1.1  riastrad           s|^# *$||
   1958  1.1  riastrad           s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2|
   1959  1.1  riastrad           p
   1960  1.1  riastrad         }
   1961  1.1  riastrad         /^# Written by / {
   1962  1.1  riastrad           s|^# ||
   1963  1.1  riastrad           p
   1964  1.1  riastrad         }
   1965  1.1  riastrad         /^warranty; /q' < "$progpath"
   1966  1.1  riastrad 
   1967  1.1  riastrad     exit $?
   1968  1.1  riastrad }
   1969  1.1  riastrad 
   1970  1.1  riastrad 
   1971  1.1  riastrad # Local variables:
   1972  1.1  riastrad # mode: shell-script
   1973  1.1  riastrad # sh-indentation: 2
   1974  1.1  riastrad # eval: (add-hook 'before-save-hook 'time-stamp)
   1975  1.1  riastrad # time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC"
   1976  1.1  riastrad # time-stamp-time-zone: "UTC"
   1977  1.1  riastrad # End:
   1978  1.1  riastrad 
   1979  1.1  riastrad # Set a version string.
   1980  1.1  riastrad scriptversion='(GNU libtool) 2.4.6'
   1981  1.1  riastrad 
   1982  1.1  riastrad 
   1983  1.1  riastrad # func_echo ARG...
   1984  1.1  riastrad # ----------------
   1985  1.1  riastrad # Libtool also displays the current mode in messages, so override
   1986  1.1  riastrad # funclib.sh func_echo with this custom definition.
   1987  1.1  riastrad func_echo ()
   1988  1.1  riastrad {
   1989  1.1  riastrad     $debug_cmd
   1990  1.1  riastrad 
   1991  1.1  riastrad     _G_message=$*
   1992  1.1  riastrad 
   1993  1.1  riastrad     func_echo_IFS=$IFS
   1994  1.1  riastrad     IFS=$nl
   1995  1.1  riastrad     for _G_line in $_G_message; do
   1996  1.1  riastrad       IFS=$func_echo_IFS
   1997  1.1  riastrad       $ECHO "$progname${opt_mode+: $opt_mode}: $_G_line"
   1998  1.1  riastrad     done
   1999  1.1  riastrad     IFS=$func_echo_IFS
   2000  1.1  riastrad }
   2001  1.1  riastrad 
   2002  1.1  riastrad 
   2003  1.1  riastrad # func_warning ARG...
   2004  1.1  riastrad # -------------------
   2005  1.1  riastrad # Libtool warnings are not categorized, so override funclib.sh
   2006  1.1  riastrad # func_warning with this simpler definition.
   2007  1.1  riastrad func_warning ()
   2008  1.1  riastrad {
   2009  1.1  riastrad     $debug_cmd
   2010  1.1  riastrad 
   2011  1.1  riastrad     $warning_func ${1+"$@"}
   2012  1.1  riastrad }
   2013  1.1  riastrad 
   2014  1.1  riastrad 
   2015  1.1  riastrad ## ---------------- ##
   2016  1.1  riastrad ## Options parsing. ##
   2017  1.1  riastrad ## ---------------- ##
   2018  1.1  riastrad 
   2019  1.1  riastrad # Hook in the functions to make sure our own options are parsed during
   2020  1.1  riastrad # the option parsing loop.
   2021  1.1  riastrad 
   2022  1.1  riastrad usage='$progpath [OPTION]... [MODE-ARG]...'
   2023  1.1  riastrad 
   2024  1.1  riastrad # Short help message in response to '-h'.
   2025  1.1  riastrad usage_message="Options:
   2026  1.1  riastrad        --config             show all configuration variables
   2027  1.1  riastrad        --debug              enable verbose shell tracing
   2028  1.1  riastrad    -n, --dry-run            display commands without modifying any files
   2029  1.1  riastrad        --features           display basic configuration information and exit
   2030  1.1  riastrad        --mode=MODE          use operation mode MODE
   2031  1.1  riastrad        --no-warnings        equivalent to '-Wnone'
   2032  1.1  riastrad        --preserve-dup-deps  don't remove duplicate dependency libraries
   2033  1.1  riastrad        --quiet, --silent    don't print informational messages
   2034  1.1  riastrad        --tag=TAG            use configuration variables from tag TAG
   2035  1.1  riastrad    -v, --verbose            print more informational messages than default
   2036  1.1  riastrad        --version            print version information
   2037  1.1  riastrad    -W, --warnings=CATEGORY  report the warnings falling in CATEGORY [all]
   2038  1.1  riastrad    -h, --help, --help-all   print short, long, or detailed help message
   2039  1.1  riastrad "
   2040  1.1  riastrad 
   2041  1.1  riastrad # Additional text appended to 'usage_message' in response to '--help'.
   2042  1.1  riastrad func_help ()
   2043  1.1  riastrad {
   2044  1.1  riastrad     $debug_cmd
   2045  1.1  riastrad 
   2046  1.1  riastrad     func_usage_message
   2047  1.1  riastrad     $ECHO "$long_help_message
   2048  1.1  riastrad 
   2049  1.1  riastrad MODE must be one of the following:
   2050  1.1  riastrad 
   2051  1.1  riastrad        clean           remove files from the build directory
   2052  1.1  riastrad        compile         compile a source file into a libtool object
   2053  1.1  riastrad        execute         automatically set library path, then run a program
   2054  1.1  riastrad        finish          complete the installation of libtool libraries
   2055  1.1  riastrad        install         install libraries or executables
   2056  1.1  riastrad        link            create a library or an executable
   2057  1.1  riastrad        uninstall       remove libraries from an installed directory
   2058  1.1  riastrad 
   2059  1.1  riastrad MODE-ARGS vary depending on the MODE.  When passed as first option,
   2060  1.1  riastrad '--mode=MODE' may be abbreviated as 'MODE' or a unique abbreviation of that.
   2061  1.1  riastrad Try '$progname --help --mode=MODE' for a more detailed description of MODE.
   2062  1.1  riastrad 
   2063  1.1  riastrad When reporting a bug, please describe a test case to reproduce it and
   2064  1.1  riastrad include the following information:
   2065  1.1  riastrad 
   2066  1.1  riastrad        host-triplet:   $host
   2067  1.1  riastrad        shell:          $SHELL
   2068  1.1  riastrad        compiler:       $LTCC
   2069  1.1  riastrad        compiler flags: $LTCFLAGS
   2070  1.1  riastrad        linker:         $LD (gnu? $with_gnu_ld)
   2071  1.1  riastrad        version:        $progname (GNU libtool) 2.4.6
   2072  1.1  riastrad        automake:       `($AUTOMAKE --version) 2>/dev/null |$SED 1q`
   2073  1.1  riastrad        autoconf:       `($AUTOCONF --version) 2>/dev/null |$SED 1q`
   2074  1.1  riastrad 
   2075  1.1  riastrad Report bugs to <bug-libtool (at] gnu.org>.
   2076  1.1  riastrad GNU libtool home page: <http://www.gnu.org/software/libtool/>.
   2077  1.1  riastrad General help using GNU software: <http://www.gnu.org/gethelp/>."
   2078  1.1  riastrad     exit 0
   2079  1.1  riastrad }
   2080  1.1  riastrad 
   2081  1.1  riastrad 
   2082  1.1  riastrad # func_lo2o OBJECT-NAME
   2083  1.1  riastrad # ---------------------
   2084  1.1  riastrad # Transform OBJECT-NAME from a '.lo' suffix to the platform specific
   2085  1.1  riastrad # object suffix.
   2086  1.1  riastrad 
   2087  1.1  riastrad lo2o=s/\\.lo\$/.$objext/
   2088  1.1  riastrad o2lo=s/\\.$objext\$/.lo/
   2089  1.1  riastrad 
   2090  1.1  riastrad if test yes = "$_G_HAVE_XSI_OPS"; then
   2091  1.1  riastrad   eval 'func_lo2o ()
   2092  1.1  riastrad   {
   2093  1.1  riastrad     case $1 in
   2094  1.1  riastrad       *.lo) func_lo2o_result=${1%.lo}.$objext ;;
   2095  1.1  riastrad       *   ) func_lo2o_result=$1               ;;
   2096  1.1  riastrad     esac
   2097  1.1  riastrad   }'
   2098  1.1  riastrad 
   2099  1.1  riastrad   # func_xform LIBOBJ-OR-SOURCE
   2100  1.1  riastrad   # ---------------------------
   2101  1.1  riastrad   # Transform LIBOBJ-OR-SOURCE from a '.o' or '.c' (or otherwise)
   2102  1.1  riastrad   # suffix to a '.lo' libtool-object suffix.
   2103  1.1  riastrad   eval 'func_xform ()
   2104  1.1  riastrad   {
   2105  1.1  riastrad     func_xform_result=${1%.*}.lo
   2106  1.1  riastrad   }'
   2107  1.1  riastrad else
   2108  1.1  riastrad   # ...otherwise fall back to using sed.
   2109  1.1  riastrad   func_lo2o ()
   2110  1.1  riastrad   {
   2111  1.1  riastrad     func_lo2o_result=`$ECHO "$1" | $SED "$lo2o"`
   2112  1.1  riastrad   }
   2113  1.1  riastrad 
   2114  1.1  riastrad   func_xform ()
   2115  1.1  riastrad   {
   2116  1.1  riastrad     func_xform_result=`$ECHO "$1" | $SED 's|\.[^.]*$|.lo|'`
   2117  1.1  riastrad   }
   2118  1.1  riastrad fi
   2119  1.1  riastrad 
   2120  1.1  riastrad 
   2121  1.1  riastrad # func_fatal_configuration ARG...
   2122  1.1  riastrad # -------------------------------
   2123  1.1  riastrad # Echo program name prefixed message to standard error, followed by
   2124  1.1  riastrad # a configuration failure hint, and exit.
   2125  1.1  riastrad func_fatal_configuration ()
   2126  1.1  riastrad {
   2127  1.1  riastrad     func__fatal_error ${1+"$@"} \
   2128  1.1  riastrad       "See the $PACKAGE documentation for more information." \
   2129  1.1  riastrad       "Fatal configuration error."
   2130  1.1  riastrad }
   2131  1.1  riastrad 
   2132  1.1  riastrad 
   2133  1.1  riastrad # func_config
   2134  1.1  riastrad # -----------
   2135  1.1  riastrad # Display the configuration for all the tags in this script.
   2136  1.1  riastrad func_config ()
   2137  1.1  riastrad {
   2138  1.1  riastrad     re_begincf='^# ### BEGIN LIBTOOL'
   2139  1.1  riastrad     re_endcf='^# ### END LIBTOOL'
   2140  1.1  riastrad 
   2141  1.1  riastrad     # Default configuration.
   2142  1.1  riastrad     $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
   2143  1.1  riastrad 
   2144  1.1  riastrad     # Now print the configurations for the tags.
   2145  1.1  riastrad     for tagname in $taglist; do
   2146  1.1  riastrad       $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
   2147  1.1  riastrad     done
   2148  1.1  riastrad 
   2149  1.1  riastrad     exit $?
   2150  1.1  riastrad }
   2151  1.1  riastrad 
   2152  1.1  riastrad 
   2153  1.1  riastrad # func_features
   2154  1.1  riastrad # -------------
   2155  1.1  riastrad # Display the features supported by this script.
   2156  1.1  riastrad func_features ()
   2157  1.1  riastrad {
   2158  1.1  riastrad     echo "host: $host"
   2159  1.1  riastrad     if test yes = "$build_libtool_libs"; then
   2160  1.1  riastrad       echo "enable shared libraries"
   2161  1.1  riastrad     else
   2162  1.1  riastrad       echo "disable shared libraries"
   2163  1.1  riastrad     fi
   2164  1.1  riastrad     if test yes = "$build_old_libs"; then
   2165  1.1  riastrad       echo "enable static libraries"
   2166  1.1  riastrad     else
   2167  1.1  riastrad       echo "disable static libraries"
   2168  1.1  riastrad     fi
   2169  1.1  riastrad 
   2170  1.1  riastrad     exit $?
   2171  1.1  riastrad }
   2172  1.1  riastrad 
   2173  1.1  riastrad 
   2174  1.1  riastrad # func_enable_tag TAGNAME
   2175  1.1  riastrad # -----------------------
   2176  1.1  riastrad # Verify that TAGNAME is valid, and either flag an error and exit, or
   2177  1.1  riastrad # enable the TAGNAME tag.  We also add TAGNAME to the global $taglist
   2178  1.1  riastrad # variable here.
   2179  1.1  riastrad func_enable_tag ()
   2180  1.1  riastrad {
   2181  1.1  riastrad     # Global variable:
   2182  1.1  riastrad     tagname=$1
   2183  1.1  riastrad 
   2184  1.1  riastrad     re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
   2185  1.1  riastrad     re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
   2186  1.1  riastrad     sed_extractcf=/$re_begincf/,/$re_endcf/p
   2187  1.1  riastrad 
   2188  1.1  riastrad     # Validate tagname.
   2189  1.1  riastrad     case $tagname in
   2190  1.1  riastrad       *[!-_A-Za-z0-9,/]*)
   2191  1.1  riastrad         func_fatal_error "invalid tag name: $tagname"
   2192  1.1  riastrad         ;;
   2193  1.1  riastrad     esac
   2194  1.1  riastrad 
   2195  1.1  riastrad     # Don't test for the "default" C tag, as we know it's
   2196  1.1  riastrad     # there but not specially marked.
   2197  1.1  riastrad     case $tagname in
   2198  1.1  riastrad         CC) ;;
   2199  1.1  riastrad     *)
   2200  1.1  riastrad         if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
   2201  1.1  riastrad 	  taglist="$taglist $tagname"
   2202  1.1  riastrad 
   2203  1.1  riastrad 	  # Evaluate the configuration.  Be careful to quote the path
   2204  1.1  riastrad 	  # and the sed script, to avoid splitting on whitespace, but
   2205  1.1  riastrad 	  # also don't use non-portable quotes within backquotes within
   2206  1.1  riastrad 	  # quotes we have to do it in 2 steps:
   2207  1.1  riastrad 	  extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
   2208  1.1  riastrad 	  eval "$extractedcf"
   2209  1.1  riastrad         else
   2210  1.1  riastrad 	  func_error "ignoring unknown tag $tagname"
   2211  1.1  riastrad         fi
   2212  1.1  riastrad         ;;
   2213  1.1  riastrad     esac
   2214  1.1  riastrad }
   2215  1.1  riastrad 
   2216  1.1  riastrad 
   2217  1.1  riastrad # func_check_version_match
   2218  1.1  riastrad # ------------------------
   2219  1.1  riastrad # Ensure that we are using m4 macros, and libtool script from the same
   2220  1.1  riastrad # release of libtool.
   2221  1.1  riastrad func_check_version_match ()
   2222  1.1  riastrad {
   2223  1.1  riastrad     if test "$package_revision" != "$macro_revision"; then
   2224  1.1  riastrad       if test "$VERSION" != "$macro_version"; then
   2225  1.1  riastrad         if test -z "$macro_version"; then
   2226  1.1  riastrad           cat >&2 <<_LT_EOF
   2227  1.1  riastrad $progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
   2228  1.1  riastrad $progname: definition of this LT_INIT comes from an older release.
   2229  1.1  riastrad $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
   2230  1.1  riastrad $progname: and run autoconf again.
   2231  1.1  riastrad _LT_EOF
   2232  1.1  riastrad         else
   2233  1.1  riastrad           cat >&2 <<_LT_EOF
   2234  1.1  riastrad $progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
   2235  1.1  riastrad $progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
   2236  1.1  riastrad $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
   2237  1.1  riastrad $progname: and run autoconf again.
   2238  1.1  riastrad _LT_EOF
   2239  1.1  riastrad         fi
   2240  1.1  riastrad       else
   2241  1.1  riastrad         cat >&2 <<_LT_EOF
   2242  1.1  riastrad $progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision,
   2243  1.1  riastrad $progname: but the definition of this LT_INIT comes from revision $macro_revision.
   2244  1.1  riastrad $progname: You should recreate aclocal.m4 with macros from revision $package_revision
   2245  1.1  riastrad $progname: of $PACKAGE $VERSION and run autoconf again.
   2246  1.1  riastrad _LT_EOF
   2247  1.1  riastrad       fi
   2248  1.1  riastrad 
   2249  1.1  riastrad       exit $EXIT_MISMATCH
   2250  1.1  riastrad     fi
   2251  1.1  riastrad }
   2252  1.1  riastrad 
   2253  1.1  riastrad 
   2254  1.1  riastrad # libtool_options_prep [ARG]...
   2255  1.1  riastrad # -----------------------------
   2256  1.1  riastrad # Preparation for options parsed by libtool.
   2257  1.1  riastrad libtool_options_prep ()
   2258  1.1  riastrad {
   2259  1.1  riastrad     $debug_mode
   2260  1.1  riastrad 
   2261  1.1  riastrad     # Option defaults:
   2262  1.1  riastrad     opt_config=false
   2263  1.1  riastrad     opt_dlopen=
   2264  1.1  riastrad     opt_dry_run=false
   2265  1.1  riastrad     opt_help=false
   2266  1.1  riastrad     opt_mode=
   2267  1.1  riastrad     opt_preserve_dup_deps=false
   2268  1.1  riastrad     opt_quiet=false
   2269  1.1  riastrad 
   2270  1.1  riastrad     nonopt=
   2271  1.1  riastrad     preserve_args=
   2272  1.1  riastrad 
   2273  1.1  riastrad     # Shorthand for --mode=foo, only valid as the first argument
   2274  1.1  riastrad     case $1 in
   2275  1.1  riastrad     clean|clea|cle|cl)
   2276  1.1  riastrad       shift; set dummy --mode clean ${1+"$@"}; shift
   2277  1.1  riastrad       ;;
   2278  1.1  riastrad     compile|compil|compi|comp|com|co|c)
   2279  1.1  riastrad       shift; set dummy --mode compile ${1+"$@"}; shift
   2280  1.1  riastrad       ;;
   2281  1.1  riastrad     execute|execut|execu|exec|exe|ex|e)
   2282  1.1  riastrad       shift; set dummy --mode execute ${1+"$@"}; shift
   2283  1.1  riastrad       ;;
   2284  1.1  riastrad     finish|finis|fini|fin|fi|f)
   2285  1.1  riastrad       shift; set dummy --mode finish ${1+"$@"}; shift
   2286  1.1  riastrad       ;;
   2287  1.1  riastrad     install|instal|insta|inst|ins|in|i)
   2288  1.1  riastrad       shift; set dummy --mode install ${1+"$@"}; shift
   2289  1.1  riastrad       ;;
   2290  1.1  riastrad     link|lin|li|l)
   2291  1.1  riastrad       shift; set dummy --mode link ${1+"$@"}; shift
   2292  1.1  riastrad       ;;
   2293  1.1  riastrad     uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
   2294  1.1  riastrad       shift; set dummy --mode uninstall ${1+"$@"}; shift
   2295  1.1  riastrad       ;;
   2296  1.1  riastrad     esac
   2297  1.1  riastrad 
   2298  1.1  riastrad     # Pass back the list of options.
   2299  1.1  riastrad     func_quote_for_eval ${1+"$@"}
   2300  1.1  riastrad     libtool_options_prep_result=$func_quote_for_eval_result
   2301  1.1  riastrad }
   2302  1.1  riastrad func_add_hook func_options_prep libtool_options_prep
   2303  1.1  riastrad 
   2304  1.1  riastrad 
   2305  1.1  riastrad # libtool_parse_options [ARG]...
   2306  1.1  riastrad # ---------------------------------
   2307  1.1  riastrad # Provide handling for libtool specific options.
   2308  1.1  riastrad libtool_parse_options ()
   2309  1.1  riastrad {
   2310  1.1  riastrad     $debug_cmd
   2311  1.1  riastrad 
   2312  1.1  riastrad     # Perform our own loop to consume as many options as possible in
   2313  1.1  riastrad     # each iteration.
   2314  1.1  riastrad     while test $# -gt 0; do
   2315  1.1  riastrad       _G_opt=$1
   2316  1.1  riastrad       shift
   2317  1.1  riastrad       case $_G_opt in
   2318  1.1  riastrad         --dry-run|--dryrun|-n)
   2319  1.1  riastrad                         opt_dry_run=:
   2320  1.1  riastrad                         ;;
   2321  1.1  riastrad 
   2322  1.1  riastrad         --config)       func_config ;;
   2323  1.1  riastrad 
   2324  1.1  riastrad         --dlopen|-dlopen)
   2325  1.1  riastrad                         opt_dlopen="${opt_dlopen+$opt_dlopen
   2326  1.1  riastrad }$1"
   2327  1.1  riastrad                         shift
   2328  1.1  riastrad                         ;;
   2329  1.1  riastrad 
   2330  1.1  riastrad         --preserve-dup-deps)
   2331  1.1  riastrad                         opt_preserve_dup_deps=: ;;
   2332  1.1  riastrad 
   2333  1.1  riastrad         --features)     func_features ;;
   2334  1.1  riastrad 
   2335  1.1  riastrad         --finish)       set dummy --mode finish ${1+"$@"}; shift ;;
   2336  1.1  riastrad 
   2337  1.1  riastrad         --help)         opt_help=: ;;
   2338  1.1  riastrad 
   2339  1.1  riastrad         --help-all)     opt_help=': help-all' ;;
   2340  1.1  riastrad 
   2341  1.1  riastrad         --mode)         test $# = 0 && func_missing_arg $_G_opt && break
   2342  1.1  riastrad                         opt_mode=$1
   2343  1.1  riastrad                         case $1 in
   2344  1.1  riastrad                           # Valid mode arguments:
   2345  1.1  riastrad                           clean|compile|execute|finish|install|link|relink|uninstall) ;;
   2346  1.1  riastrad 
   2347  1.1  riastrad                           # Catch anything else as an error
   2348  1.1  riastrad                           *) func_error "invalid argument for $_G_opt"
   2349  1.1  riastrad                              exit_cmd=exit
   2350  1.1  riastrad                              break
   2351  1.1  riastrad                              ;;
   2352  1.1  riastrad                         esac
   2353  1.1  riastrad                         shift
   2354  1.1  riastrad                         ;;
   2355  1.1  riastrad 
   2356  1.1  riastrad         --no-silent|--no-quiet)
   2357  1.1  riastrad                         opt_quiet=false
   2358  1.1  riastrad                         func_append preserve_args " $_G_opt"
   2359  1.1  riastrad                         ;;
   2360  1.1  riastrad 
   2361  1.1  riastrad         --no-warnings|--no-warning|--no-warn)
   2362  1.1  riastrad                         opt_warning=false
   2363  1.1  riastrad                         func_append preserve_args " $_G_opt"
   2364  1.1  riastrad                         ;;
   2365  1.1  riastrad 
   2366  1.1  riastrad         --no-verbose)
   2367  1.1  riastrad                         opt_verbose=false
   2368  1.1  riastrad                         func_append preserve_args " $_G_opt"
   2369  1.1  riastrad                         ;;
   2370  1.1  riastrad 
   2371  1.1  riastrad         --silent|--quiet)
   2372  1.1  riastrad                         opt_quiet=:
   2373  1.1  riastrad                         opt_verbose=false
   2374  1.1  riastrad                         func_append preserve_args " $_G_opt"
   2375  1.1  riastrad                         ;;
   2376  1.1  riastrad 
   2377  1.1  riastrad         --tag)          test $# = 0 && func_missing_arg $_G_opt && break
   2378  1.1  riastrad                         opt_tag=$1
   2379  1.1  riastrad                         func_append preserve_args " $_G_opt $1"
   2380  1.1  riastrad                         func_enable_tag "$1"
   2381  1.1  riastrad                         shift
   2382  1.1  riastrad                         ;;
   2383  1.1  riastrad 
   2384  1.1  riastrad         --verbose|-v)   opt_quiet=false
   2385  1.1  riastrad                         opt_verbose=:
   2386  1.1  riastrad                         func_append preserve_args " $_G_opt"
   2387  1.1  riastrad                         ;;
   2388  1.1  riastrad 
   2389  1.1  riastrad 	# An option not handled by this hook function:
   2390  1.1  riastrad         *)		set dummy "$_G_opt" ${1+"$@"};	shift; break  ;;
   2391  1.1  riastrad       esac
   2392  1.1  riastrad     done
   2393  1.1  riastrad 
   2394  1.1  riastrad 
   2395  1.1  riastrad     # save modified positional parameters for caller
   2396  1.1  riastrad     func_quote_for_eval ${1+"$@"}
   2397  1.1  riastrad     libtool_parse_options_result=$func_quote_for_eval_result
   2398  1.1  riastrad }
   2399  1.1  riastrad func_add_hook func_parse_options libtool_parse_options
   2400  1.1  riastrad 
   2401  1.1  riastrad 
   2402  1.1  riastrad 
   2403  1.1  riastrad # libtool_validate_options [ARG]...
   2404  1.1  riastrad # ---------------------------------
   2405  1.1  riastrad # Perform any sanity checks on option settings and/or unconsumed
   2406  1.1  riastrad # arguments.
   2407  1.1  riastrad libtool_validate_options ()
   2408  1.1  riastrad {
   2409  1.1  riastrad     # save first non-option argument
   2410  1.1  riastrad     if test 0 -lt $#; then
   2411  1.1  riastrad       nonopt=$1
   2412  1.1  riastrad       shift
   2413  1.1  riastrad     fi
   2414  1.1  riastrad 
   2415  1.1  riastrad     # preserve --debug
   2416  1.1  riastrad     test : = "$debug_cmd" || func_append preserve_args " --debug"
   2417  1.1  riastrad 
   2418  1.1  riastrad     case $host in
   2419  1.1  riastrad       # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452
   2420  1.1  riastrad       # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788
   2421  1.1  riastrad       *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* | *os2*)
   2422  1.1  riastrad         # don't eliminate duplications in $postdeps and $predeps
   2423  1.1  riastrad         opt_duplicate_compiler_generated_deps=:
   2424  1.1  riastrad         ;;
   2425  1.1  riastrad       *)
   2426  1.1  riastrad         opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps
   2427  1.1  riastrad         ;;
   2428  1.1  riastrad     esac
   2429  1.1  riastrad 
   2430  1.1  riastrad     $opt_help || {
   2431  1.1  riastrad       # Sanity checks first:
   2432  1.1  riastrad       func_check_version_match
   2433  1.1  riastrad 
   2434  1.1  riastrad       test yes != "$build_libtool_libs" \
   2435  1.1  riastrad         && test yes != "$build_old_libs" \
   2436  1.1  riastrad         && func_fatal_configuration "not configured to build any kind of library"
   2437  1.1  riastrad 
   2438  1.1  riastrad       # Darwin sucks
   2439  1.1  riastrad       eval std_shrext=\"$shrext_cmds\"
   2440  1.1  riastrad 
   2441  1.1  riastrad       # Only execute mode is allowed to have -dlopen flags.
   2442  1.1  riastrad       if test -n "$opt_dlopen" && test execute != "$opt_mode"; then
   2443  1.1  riastrad         func_error "unrecognized option '-dlopen'"
   2444  1.1  riastrad         $ECHO "$help" 1>&2
   2445  1.1  riastrad         exit $EXIT_FAILURE
   2446  1.1  riastrad       fi
   2447  1.1  riastrad 
   2448  1.1  riastrad       # Change the help message to a mode-specific one.
   2449  1.1  riastrad       generic_help=$help
   2450  1.1  riastrad       help="Try '$progname --help --mode=$opt_mode' for more information."
   2451  1.1  riastrad     }
   2452  1.1  riastrad 
   2453  1.1  riastrad     # Pass back the unparsed argument list
   2454  1.1  riastrad     func_quote_for_eval ${1+"$@"}
   2455  1.1  riastrad     libtool_validate_options_result=$func_quote_for_eval_result
   2456  1.1  riastrad }
   2457  1.1  riastrad func_add_hook func_validate_options libtool_validate_options
   2458  1.1  riastrad 
   2459  1.1  riastrad 
   2460  1.1  riastrad # Process options as early as possible so that --help and --version
   2461  1.1  riastrad # can return quickly.
   2462  1.1  riastrad func_options ${1+"$@"}
   2463  1.1  riastrad eval set dummy "$func_options_result"; shift
   2464  1.1  riastrad 
   2465  1.1  riastrad 
   2466  1.1  riastrad 
   2467  1.1  riastrad ## ----------- ##
   2468  1.1  riastrad ##    Main.    ##
   2469  1.1  riastrad ## ----------- ##
   2470  1.1  riastrad 
   2471  1.1  riastrad magic='%%%MAGIC variable%%%'
   2472  1.1  riastrad magic_exe='%%%MAGIC EXE variable%%%'
   2473  1.1  riastrad 
   2474  1.1  riastrad # Global variables.
   2475  1.1  riastrad extracted_archives=
   2476  1.1  riastrad extracted_serial=0
   2477  1.1  riastrad 
   2478  1.1  riastrad # If this variable is set in any of the actions, the command in it
   2479  1.1  riastrad # will be execed at the end.  This prevents here-documents from being
   2480  1.1  riastrad # left over by shells.
   2481  1.1  riastrad exec_cmd=
   2482  1.1  riastrad 
   2483  1.1  riastrad 
   2484  1.1  riastrad # A function that is used when there is no print builtin or printf.
   2485  1.1  riastrad func_fallback_echo ()
   2486  1.1  riastrad {
   2487  1.1  riastrad   eval 'cat <<_LTECHO_EOF
   2488  1.1  riastrad $1
   2489  1.1  riastrad _LTECHO_EOF'
   2490  1.1  riastrad }
   2491  1.1  riastrad 
   2492  1.1  riastrad # func_generated_by_libtool
   2493  1.1  riastrad # True iff stdin has been generated by Libtool. This function is only
   2494  1.1  riastrad # a basic sanity check; it will hardly flush out determined imposters.
   2495  1.1  riastrad func_generated_by_libtool_p ()
   2496  1.1  riastrad {
   2497  1.1  riastrad   $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
   2498  1.1  riastrad }
   2499  1.1  riastrad 
   2500  1.1  riastrad # func_lalib_p file
   2501  1.1  riastrad # True iff FILE is a libtool '.la' library or '.lo' object file.
   2502  1.1  riastrad # This function is only a basic sanity check; it will hardly flush out
   2503  1.1  riastrad # determined imposters.
   2504  1.1  riastrad func_lalib_p ()
   2505  1.1  riastrad {
   2506  1.1  riastrad     test -f "$1" &&
   2507  1.1  riastrad       $SED -e 4q "$1" 2>/dev/null | func_generated_by_libtool_p
   2508  1.1  riastrad }
   2509  1.1  riastrad 
   2510  1.1  riastrad # func_lalib_unsafe_p file
   2511  1.1  riastrad # True iff FILE is a libtool '.la' library or '.lo' object file.
   2512  1.1  riastrad # This function implements the same check as func_lalib_p without
   2513  1.1  riastrad # resorting to external programs.  To this end, it redirects stdin and
   2514  1.1  riastrad # closes it afterwards, without saving the original file descriptor.
   2515  1.1  riastrad # As a safety measure, use it only where a negative result would be
   2516  1.1  riastrad # fatal anyway.  Works if 'file' does not exist.
   2517  1.1  riastrad func_lalib_unsafe_p ()
   2518  1.1  riastrad {
   2519  1.1  riastrad     lalib_p=no
   2520  1.1  riastrad     if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
   2521  1.1  riastrad 	for lalib_p_l in 1 2 3 4
   2522  1.1  riastrad 	do
   2523  1.1  riastrad 	    read lalib_p_line
   2524  1.1  riastrad 	    case $lalib_p_line in
   2525  1.1  riastrad 		\#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
   2526  1.1  riastrad 	    esac
   2527  1.1  riastrad 	done
   2528  1.1  riastrad 	exec 0<&5 5<&-
   2529  1.1  riastrad     fi
   2530  1.1  riastrad     test yes = "$lalib_p"
   2531  1.1  riastrad }
   2532  1.1  riastrad 
   2533  1.1  riastrad # func_ltwrapper_script_p file
   2534  1.1  riastrad # True iff FILE is a libtool wrapper script
   2535  1.1  riastrad # This function is only a basic sanity check; it will hardly flush out
   2536  1.1  riastrad # determined imposters.
   2537  1.1  riastrad func_ltwrapper_script_p ()
   2538  1.1  riastrad {
   2539  1.1  riastrad     test -f "$1" &&
   2540  1.1  riastrad       $lt_truncate_bin < "$1" 2>/dev/null | func_generated_by_libtool_p
   2541  1.1  riastrad }
   2542  1.1  riastrad 
   2543  1.1  riastrad # func_ltwrapper_executable_p file
   2544  1.1  riastrad # True iff FILE is a libtool wrapper executable
   2545  1.1  riastrad # This function is only a basic sanity check; it will hardly flush out
   2546  1.1  riastrad # determined imposters.
   2547  1.1  riastrad func_ltwrapper_executable_p ()
   2548  1.1  riastrad {
   2549  1.1  riastrad     func_ltwrapper_exec_suffix=
   2550  1.1  riastrad     case $1 in
   2551  1.1  riastrad     *.exe) ;;
   2552  1.1  riastrad     *) func_ltwrapper_exec_suffix=.exe ;;
   2553  1.1  riastrad     esac
   2554  1.1  riastrad     $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
   2555  1.1  riastrad }
   2556  1.1  riastrad 
   2557  1.1  riastrad # func_ltwrapper_scriptname file
   2558  1.1  riastrad # Assumes file is an ltwrapper_executable
   2559  1.1  riastrad # uses $file to determine the appropriate filename for a
   2560  1.1  riastrad # temporary ltwrapper_script.
   2561  1.1  riastrad func_ltwrapper_scriptname ()
   2562  1.1  riastrad {
   2563  1.1  riastrad     func_dirname_and_basename "$1" "" "."
   2564  1.1  riastrad     func_stripname '' '.exe' "$func_basename_result"
   2565  1.1  riastrad     func_ltwrapper_scriptname_result=$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper
   2566  1.1  riastrad }
   2567  1.1  riastrad 
   2568  1.1  riastrad # func_ltwrapper_p file
   2569  1.1  riastrad # True iff FILE is a libtool wrapper script or wrapper executable
   2570  1.1  riastrad # This function is only a basic sanity check; it will hardly flush out
   2571  1.1  riastrad # determined imposters.
   2572  1.1  riastrad func_ltwrapper_p ()
   2573  1.1  riastrad {
   2574  1.1  riastrad     func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
   2575  1.1  riastrad }
   2576  1.1  riastrad 
   2577  1.1  riastrad 
   2578  1.1  riastrad # func_execute_cmds commands fail_cmd
   2579  1.1  riastrad # Execute tilde-delimited COMMANDS.
   2580  1.1  riastrad # If FAIL_CMD is given, eval that upon failure.
   2581  1.1  riastrad # FAIL_CMD may read-access the current command in variable CMD!
   2582  1.1  riastrad func_execute_cmds ()
   2583  1.1  riastrad {
   2584  1.1  riastrad     $debug_cmd
   2585  1.1  riastrad 
   2586  1.1  riastrad     save_ifs=$IFS; IFS='~'
   2587  1.1  riastrad     for cmd in $1; do
   2588  1.1  riastrad       IFS=$sp$nl
   2589  1.1  riastrad       eval cmd=\"$cmd\"
   2590  1.1  riastrad       IFS=$save_ifs
   2591  1.1  riastrad       func_show_eval "$cmd" "${2-:}"
   2592  1.1  riastrad     done
   2593  1.1  riastrad     IFS=$save_ifs
   2594  1.1  riastrad }
   2595  1.1  riastrad 
   2596  1.1  riastrad 
   2597  1.1  riastrad # func_source file
   2598  1.1  riastrad # Source FILE, adding directory component if necessary.
   2599  1.1  riastrad # Note that it is not necessary on cygwin/mingw to append a dot to
   2600  1.1  riastrad # FILE even if both FILE and FILE.exe exist: automatic-append-.exe
   2601  1.1  riastrad # behavior happens only for exec(3), not for open(2)!  Also, sourcing
   2602  1.1  riastrad # 'FILE.' does not work on cygwin managed mounts.
   2603  1.1  riastrad func_source ()
   2604  1.1  riastrad {
   2605  1.1  riastrad     $debug_cmd
   2606  1.1  riastrad 
   2607  1.1  riastrad     case $1 in
   2608  1.1  riastrad     */* | *\\*)	. "$1" ;;
   2609  1.1  riastrad     *)		. "./$1" ;;
   2610  1.1  riastrad     esac
   2611  1.1  riastrad }
   2612  1.1  riastrad 
   2613  1.1  riastrad 
   2614  1.1  riastrad # func_resolve_sysroot PATH
   2615  1.1  riastrad # Replace a leading = in PATH with a sysroot.  Store the result into
   2616  1.1  riastrad # func_resolve_sysroot_result
   2617  1.1  riastrad func_resolve_sysroot ()
   2618  1.1  riastrad {
   2619  1.1  riastrad   func_resolve_sysroot_result=$1
   2620  1.1  riastrad   case $func_resolve_sysroot_result in
   2621  1.1  riastrad   =*)
   2622  1.1  riastrad     func_stripname '=' '' "$func_resolve_sysroot_result"
   2623  1.1  riastrad     func_resolve_sysroot_result=$lt_sysroot$func_stripname_result
   2624  1.1  riastrad     ;;
   2625  1.1  riastrad   esac
   2626  1.1  riastrad }
   2627  1.1  riastrad 
   2628  1.1  riastrad # func_replace_sysroot PATH
   2629  1.1  riastrad # If PATH begins with the sysroot, replace it with = and
   2630  1.1  riastrad # store the result into func_replace_sysroot_result.
   2631  1.1  riastrad func_replace_sysroot ()
   2632  1.1  riastrad {
   2633  1.1  riastrad   case $lt_sysroot:$1 in
   2634  1.1  riastrad   ?*:"$lt_sysroot"*)
   2635  1.1  riastrad     func_stripname "$lt_sysroot" '' "$1"
   2636  1.1  riastrad     func_replace_sysroot_result='='$func_stripname_result
   2637  1.1  riastrad     ;;
   2638  1.1  riastrad   *)
   2639  1.1  riastrad     # Including no sysroot.
   2640  1.1  riastrad     func_replace_sysroot_result=$1
   2641  1.1  riastrad     ;;
   2642  1.1  riastrad   esac
   2643  1.1  riastrad }
   2644  1.1  riastrad 
   2645  1.1  riastrad # func_infer_tag arg
   2646  1.1  riastrad # Infer tagged configuration to use if any are available and
   2647  1.1  riastrad # if one wasn't chosen via the "--tag" command line option.
   2648  1.1  riastrad # Only attempt this if the compiler in the base compile
   2649  1.1  riastrad # command doesn't match the default compiler.
   2650  1.1  riastrad # arg is usually of the form 'gcc ...'
   2651  1.1  riastrad func_infer_tag ()
   2652  1.1  riastrad {
   2653  1.1  riastrad     $debug_cmd
   2654  1.1  riastrad 
   2655  1.1  riastrad     if test -n "$available_tags" && test -z "$tagname"; then
   2656  1.1  riastrad       CC_quoted=
   2657  1.1  riastrad       for arg in $CC; do
   2658  1.1  riastrad 	func_append_quoted CC_quoted "$arg"
   2659  1.1  riastrad       done
   2660  1.1  riastrad       CC_expanded=`func_echo_all $CC`
   2661  1.1  riastrad       CC_quoted_expanded=`func_echo_all $CC_quoted`
   2662  1.1  riastrad       case $@ in
   2663  1.1  riastrad       # Blanks in the command may have been stripped by the calling shell,
   2664  1.1  riastrad       # but not from the CC environment variable when configure was run.
   2665  1.1  riastrad       " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
   2666  1.1  riastrad       " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;;
   2667  1.1  riastrad       # Blanks at the start of $base_compile will cause this to fail
   2668  1.1  riastrad       # if we don't check for them as well.
   2669  1.1  riastrad       *)
   2670  1.1  riastrad 	for z in $available_tags; do
   2671  1.1  riastrad 	  if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
   2672  1.1  riastrad 	    # Evaluate the configuration.
   2673  1.1  riastrad 	    eval "`$SED -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
   2674  1.1  riastrad 	    CC_quoted=
   2675  1.1  riastrad 	    for arg in $CC; do
   2676  1.1  riastrad 	      # Double-quote args containing other shell metacharacters.
   2677  1.1  riastrad 	      func_append_quoted CC_quoted "$arg"
   2678  1.1  riastrad 	    done
   2679  1.1  riastrad 	    CC_expanded=`func_echo_all $CC`
   2680  1.1  riastrad 	    CC_quoted_expanded=`func_echo_all $CC_quoted`
   2681  1.1  riastrad 	    case "$@ " in
   2682  1.1  riastrad 	    " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
   2683  1.1  riastrad 	    " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*)
   2684  1.1  riastrad 	      # The compiler in the base compile command matches
   2685  1.1  riastrad 	      # the one in the tagged configuration.
   2686  1.1  riastrad 	      # Assume this is the tagged configuration we want.
   2687  1.1  riastrad 	      tagname=$z
   2688  1.1  riastrad 	      break
   2689  1.1  riastrad 	      ;;
   2690  1.1  riastrad 	    esac
   2691  1.1  riastrad 	  fi
   2692  1.1  riastrad 	done
   2693  1.1  riastrad 	# If $tagname still isn't set, then no tagged configuration
   2694  1.1  riastrad 	# was found and let the user know that the "--tag" command
   2695  1.1  riastrad 	# line option must be used.
   2696  1.1  riastrad 	if test -z "$tagname"; then
   2697  1.1  riastrad 	  func_echo "unable to infer tagged configuration"
   2698  1.1  riastrad 	  func_fatal_error "specify a tag with '--tag'"
   2699  1.1  riastrad #	else
   2700  1.1  riastrad #	  func_verbose "using $tagname tagged configuration"
   2701  1.1  riastrad 	fi
   2702  1.1  riastrad 	;;
   2703  1.1  riastrad       esac
   2704  1.1  riastrad     fi
   2705  1.1  riastrad }
   2706  1.1  riastrad 
   2707  1.1  riastrad 
   2708  1.1  riastrad 
   2709  1.1  riastrad # func_write_libtool_object output_name pic_name nonpic_name
   2710  1.1  riastrad # Create a libtool object file (analogous to a ".la" file),
   2711  1.1  riastrad # but don't create it if we're doing a dry run.
   2712  1.1  riastrad func_write_libtool_object ()
   2713  1.1  riastrad {
   2714  1.1  riastrad     write_libobj=$1
   2715  1.1  riastrad     if test yes = "$build_libtool_libs"; then
   2716  1.1  riastrad       write_lobj=\'$2\'
   2717  1.1  riastrad     else
   2718  1.1  riastrad       write_lobj=none
   2719  1.1  riastrad     fi
   2720  1.1  riastrad 
   2721  1.1  riastrad     if test yes = "$build_old_libs"; then
   2722  1.1  riastrad       write_oldobj=\'$3\'
   2723  1.1  riastrad     else
   2724  1.1  riastrad       write_oldobj=none
   2725  1.1  riastrad     fi
   2726  1.1  riastrad 
   2727  1.1  riastrad     $opt_dry_run || {
   2728  1.1  riastrad       cat >${write_libobj}T <<EOF
   2729  1.1  riastrad # $write_libobj - a libtool object file
   2730  1.1  riastrad # Generated by $PROGRAM (GNU $PACKAGE) $VERSION
   2731  1.1  riastrad #
   2732  1.1  riastrad # Please DO NOT delete this file!
   2733  1.1  riastrad # It is necessary for linking the library.
   2734  1.1  riastrad 
   2735  1.1  riastrad # Name of the PIC object.
   2736  1.1  riastrad pic_object=$write_lobj
   2737  1.1  riastrad 
   2738  1.1  riastrad # Name of the non-PIC object
   2739  1.1  riastrad non_pic_object=$write_oldobj
   2740  1.1  riastrad 
   2741  1.1  riastrad EOF
   2742  1.1  riastrad       $MV "${write_libobj}T" "$write_libobj"
   2743  1.1  riastrad     }
   2744  1.1  riastrad }
   2745  1.1  riastrad 
   2746  1.1  riastrad 
   2747  1.1  riastrad ##################################################
   2748  1.1  riastrad # FILE NAME AND PATH CONVERSION HELPER FUNCTIONS #
   2749  1.1  riastrad ##################################################
   2750  1.1  riastrad 
   2751  1.1  riastrad # func_convert_core_file_wine_to_w32 ARG
   2752  1.1  riastrad # Helper function used by file name conversion functions when $build is *nix,
   2753  1.1  riastrad # and $host is mingw, cygwin, or some other w32 environment. Relies on a
   2754  1.1  riastrad # correctly configured wine environment available, with the winepath program
   2755  1.1  riastrad # in $build's $PATH.
   2756  1.1  riastrad #
   2757  1.1  riastrad # ARG is the $build file name to be converted to w32 format.
   2758  1.1  riastrad # Result is available in $func_convert_core_file_wine_to_w32_result, and will
   2759  1.1  riastrad # be empty on error (or when ARG is empty)
   2760  1.1  riastrad func_convert_core_file_wine_to_w32 ()
   2761  1.1  riastrad {
   2762  1.1  riastrad   $debug_cmd
   2763  1.1  riastrad 
   2764  1.1  riastrad   func_convert_core_file_wine_to_w32_result=$1
   2765  1.1  riastrad   if test -n "$1"; then
   2766  1.1  riastrad     # Unfortunately, winepath does not exit with a non-zero error code, so we
   2767  1.1  riastrad     # are forced to check the contents of stdout. On the other hand, if the
   2768  1.1  riastrad     # command is not found, the shell will set an exit code of 127 and print
   2769  1.1  riastrad     # *an error message* to stdout. So we must check for both error code of
   2770  1.1  riastrad     # zero AND non-empty stdout, which explains the odd construction:
   2771  1.1  riastrad     func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null`
   2772  1.1  riastrad     if test "$?" -eq 0 && test -n "$func_convert_core_file_wine_to_w32_tmp"; then
   2773  1.1  riastrad       func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" |
   2774  1.1  riastrad         $SED -e "$sed_naive_backslashify"`
   2775  1.1  riastrad     else
   2776  1.1  riastrad       func_convert_core_file_wine_to_w32_result=
   2777  1.1  riastrad     fi
   2778  1.1  riastrad   fi
   2779  1.1  riastrad }
   2780  1.1  riastrad # end: func_convert_core_file_wine_to_w32
   2781  1.1  riastrad 
   2782  1.1  riastrad 
   2783  1.1  riastrad # func_convert_core_path_wine_to_w32 ARG
   2784  1.1  riastrad # Helper function used by path conversion functions when $build is *nix, and
   2785  1.1  riastrad # $host is mingw, cygwin, or some other w32 environment. Relies on a correctly
   2786  1.1  riastrad # configured wine environment available, with the winepath program in $build's
   2787  1.1  riastrad # $PATH. Assumes ARG has no leading or trailing path separator characters.
   2788  1.1  riastrad #
   2789  1.1  riastrad # ARG is path to be converted from $build format to win32.
   2790  1.1  riastrad # Result is available in $func_convert_core_path_wine_to_w32_result.
   2791  1.1  riastrad # Unconvertible file (directory) names in ARG are skipped; if no directory names
   2792  1.1  riastrad # are convertible, then the result may be empty.
   2793  1.1  riastrad func_convert_core_path_wine_to_w32 ()
   2794  1.1  riastrad {
   2795  1.1  riastrad   $debug_cmd
   2796  1.1  riastrad 
   2797  1.1  riastrad   # unfortunately, winepath doesn't convert paths, only file names
   2798  1.1  riastrad   func_convert_core_path_wine_to_w32_result=
   2799  1.1  riastrad   if test -n "$1"; then
   2800  1.1  riastrad     oldIFS=$IFS
   2801  1.1  riastrad     IFS=:
   2802  1.1  riastrad     for func_convert_core_path_wine_to_w32_f in $1; do
   2803  1.1  riastrad       IFS=$oldIFS
   2804  1.1  riastrad       func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f"
   2805  1.1  riastrad       if test -n "$func_convert_core_file_wine_to_w32_result"; then
   2806  1.1  riastrad         if test -z "$func_convert_core_path_wine_to_w32_result"; then
   2807  1.1  riastrad           func_convert_core_path_wine_to_w32_result=$func_convert_core_file_wine_to_w32_result
   2808  1.1  riastrad         else
   2809  1.1  riastrad           func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result"
   2810  1.1  riastrad         fi
   2811  1.1  riastrad       fi
   2812  1.1  riastrad     done
   2813  1.1  riastrad     IFS=$oldIFS
   2814  1.1  riastrad   fi
   2815  1.1  riastrad }
   2816  1.1  riastrad # end: func_convert_core_path_wine_to_w32
   2817  1.1  riastrad 
   2818  1.1  riastrad 
   2819  1.1  riastrad # func_cygpath ARGS...
   2820  1.1  riastrad # Wrapper around calling the cygpath program via LT_CYGPATH. This is used when
   2821  1.1  riastrad # when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2)
   2822  1.1  riastrad # $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or
   2823  1.1  riastrad # (2), returns the Cygwin file name or path in func_cygpath_result (input
   2824  1.1  riastrad # file name or path is assumed to be in w32 format, as previously converted
   2825  1.1  riastrad # from $build's *nix or MSYS format). In case (3), returns the w32 file name
   2826  1.1  riastrad # or path in func_cygpath_result (input file name or path is assumed to be in
   2827  1.1  riastrad # Cygwin format). Returns an empty string on error.
   2828  1.1  riastrad #
   2829  1.1  riastrad # ARGS are passed to cygpath, with the last one being the file name or path to
   2830  1.1  riastrad # be converted.
   2831  1.1  riastrad #
   2832  1.1  riastrad # Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH
   2833  1.1  riastrad # environment variable; do not put it in $PATH.
   2834  1.1  riastrad func_cygpath ()
   2835  1.1  riastrad {
   2836  1.1  riastrad   $debug_cmd
   2837  1.1  riastrad 
   2838  1.1  riastrad   if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then
   2839  1.1  riastrad     func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null`
   2840  1.1  riastrad     if test "$?" -ne 0; then
   2841  1.1  riastrad       # on failure, ensure result is empty
   2842  1.1  riastrad       func_cygpath_result=
   2843  1.1  riastrad     fi
   2844  1.1  riastrad   else
   2845  1.1  riastrad     func_cygpath_result=
   2846  1.1  riastrad     func_error "LT_CYGPATH is empty or specifies non-existent file: '$LT_CYGPATH'"
   2847  1.1  riastrad   fi
   2848  1.1  riastrad }
   2849  1.1  riastrad #end: func_cygpath
   2850  1.1  riastrad 
   2851  1.1  riastrad 
   2852  1.1  riastrad # func_convert_core_msys_to_w32 ARG
   2853  1.1  riastrad # Convert file name or path ARG from MSYS format to w32 format.  Return
   2854  1.1  riastrad # result in func_convert_core_msys_to_w32_result.
   2855  1.1  riastrad func_convert_core_msys_to_w32 ()
   2856  1.1  riastrad {
   2857  1.1  riastrad   $debug_cmd
   2858  1.1  riastrad 
   2859  1.1  riastrad   # awkward: cmd appends spaces to result
   2860  1.1  riastrad   func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null |
   2861  1.1  riastrad     $SED -e 's/[ ]*$//' -e "$sed_naive_backslashify"`
   2862  1.1  riastrad }
   2863  1.1  riastrad #end: func_convert_core_msys_to_w32
   2864  1.1  riastrad 
   2865  1.1  riastrad 
   2866  1.1  riastrad # func_convert_file_check ARG1 ARG2
   2867  1.1  riastrad # Verify that ARG1 (a file name in $build format) was converted to $host
   2868  1.1  riastrad # format in ARG2. Otherwise, emit an error message, but continue (resetting
   2869  1.1  riastrad # func_to_host_file_result to ARG1).
   2870  1.1  riastrad func_convert_file_check ()
   2871  1.1  riastrad {
   2872  1.1  riastrad   $debug_cmd
   2873  1.1  riastrad 
   2874  1.1  riastrad   if test -z "$2" && test -n "$1"; then
   2875  1.1  riastrad     func_error "Could not determine host file name corresponding to"
   2876  1.1  riastrad     func_error "  '$1'"
   2877  1.1  riastrad     func_error "Continuing, but uninstalled executables may not work."
   2878  1.1  riastrad     # Fallback:
   2879  1.1  riastrad     func_to_host_file_result=$1
   2880  1.1  riastrad   fi
   2881  1.1  riastrad }
   2882  1.1  riastrad # end func_convert_file_check
   2883  1.1  riastrad 
   2884  1.1  riastrad 
   2885  1.1  riastrad # func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH
   2886  1.1  riastrad # Verify that FROM_PATH (a path in $build format) was converted to $host
   2887  1.1  riastrad # format in TO_PATH. Otherwise, emit an error message, but continue, resetting
   2888  1.1  riastrad # func_to_host_file_result to a simplistic fallback value (see below).
   2889  1.1  riastrad func_convert_path_check ()
   2890  1.1  riastrad {
   2891  1.1  riastrad   $debug_cmd
   2892  1.1  riastrad 
   2893  1.1  riastrad   if test -z "$4" && test -n "$3"; then
   2894  1.1  riastrad     func_error "Could not determine the host path corresponding to"
   2895  1.1  riastrad     func_error "  '$3'"
   2896  1.1  riastrad     func_error "Continuing, but uninstalled executables may not work."
   2897  1.1  riastrad     # Fallback.  This is a deliberately simplistic "conversion" and
   2898  1.1  riastrad     # should not be "improved".  See libtool.info.
   2899  1.1  riastrad     if test "x$1" != "x$2"; then
   2900  1.1  riastrad       lt_replace_pathsep_chars="s|$1|$2|g"
   2901  1.1  riastrad       func_to_host_path_result=`echo "$3" |
   2902  1.1  riastrad         $SED -e "$lt_replace_pathsep_chars"`
   2903  1.1  riastrad     else
   2904  1.1  riastrad       func_to_host_path_result=$3
   2905  1.1  riastrad     fi
   2906  1.1  riastrad   fi
   2907  1.1  riastrad }
   2908  1.1  riastrad # end func_convert_path_check
   2909  1.1  riastrad 
   2910  1.1  riastrad 
   2911  1.1  riastrad # func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG
   2912  1.1  riastrad # Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT
   2913  1.1  riastrad # and appending REPL if ORIG matches BACKPAT.
   2914  1.1  riastrad func_convert_path_front_back_pathsep ()
   2915  1.1  riastrad {
   2916  1.1  riastrad   $debug_cmd
   2917  1.1  riastrad 
   2918  1.1  riastrad   case $4 in
   2919  1.1  riastrad   $1 ) func_to_host_path_result=$3$func_to_host_path_result
   2920  1.1  riastrad     ;;
   2921  1.1  riastrad   esac
   2922  1.1  riastrad   case $4 in
   2923  1.1  riastrad   $2 ) func_append func_to_host_path_result "$3"
   2924  1.1  riastrad     ;;
   2925  1.1  riastrad   esac
   2926  1.1  riastrad }
   2927  1.1  riastrad # end func_convert_path_front_back_pathsep
   2928  1.1  riastrad 
   2929  1.1  riastrad 
   2930  1.1  riastrad ##################################################
   2931  1.1  riastrad # $build to $host FILE NAME CONVERSION FUNCTIONS #
   2932  1.1  riastrad ##################################################
   2933  1.1  riastrad # invoked via '$to_host_file_cmd ARG'
   2934  1.1  riastrad #
   2935  1.1  riastrad # In each case, ARG is the path to be converted from $build to $host format.
   2936  1.1  riastrad # Result will be available in $func_to_host_file_result.
   2937  1.1  riastrad 
   2938  1.1  riastrad 
   2939  1.1  riastrad # func_to_host_file ARG
   2940  1.1  riastrad # Converts the file name ARG from $build format to $host format. Return result
   2941  1.1  riastrad # in func_to_host_file_result.
   2942  1.1  riastrad func_to_host_file ()
   2943  1.1  riastrad {
   2944  1.1  riastrad   $debug_cmd
   2945  1.1  riastrad 
   2946  1.1  riastrad   $to_host_file_cmd "$1"
   2947  1.1  riastrad }
   2948  1.1  riastrad # end func_to_host_file
   2949  1.1  riastrad 
   2950  1.1  riastrad 
   2951  1.1  riastrad # func_to_tool_file ARG LAZY
   2952  1.1  riastrad # converts the file name ARG from $build format to toolchain format. Return
   2953  1.1  riastrad # result in func_to_tool_file_result.  If the conversion in use is listed
   2954  1.1  riastrad # in (the comma separated) LAZY, no conversion takes place.
   2955  1.1  riastrad func_to_tool_file ()
   2956  1.1  riastrad {
   2957  1.1  riastrad   $debug_cmd
   2958  1.1  riastrad 
   2959  1.1  riastrad   case ,$2, in
   2960  1.1  riastrad     *,"$to_tool_file_cmd",*)
   2961  1.1  riastrad       func_to_tool_file_result=$1
   2962  1.1  riastrad       ;;
   2963  1.1  riastrad     *)
   2964  1.1  riastrad       $to_tool_file_cmd "$1"
   2965  1.1  riastrad       func_to_tool_file_result=$func_to_host_file_result
   2966  1.1  riastrad       ;;
   2967  1.1  riastrad   esac
   2968  1.1  riastrad }
   2969  1.1  riastrad # end func_to_tool_file
   2970  1.1  riastrad 
   2971  1.1  riastrad 
   2972  1.1  riastrad # func_convert_file_noop ARG
   2973  1.1  riastrad # Copy ARG to func_to_host_file_result.
   2974  1.1  riastrad func_convert_file_noop ()
   2975  1.1  riastrad {
   2976  1.1  riastrad   func_to_host_file_result=$1
   2977  1.1  riastrad }
   2978  1.1  riastrad # end func_convert_file_noop
   2979  1.1  riastrad 
   2980  1.1  riastrad 
   2981  1.1  riastrad # func_convert_file_msys_to_w32 ARG
   2982  1.1  riastrad # Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic
   2983  1.1  riastrad # conversion to w32 is not available inside the cwrapper.  Returns result in
   2984  1.1  riastrad # func_to_host_file_result.
   2985  1.1  riastrad func_convert_file_msys_to_w32 ()
   2986  1.1  riastrad {
   2987  1.1  riastrad   $debug_cmd
   2988  1.1  riastrad 
   2989  1.1  riastrad   func_to_host_file_result=$1
   2990  1.1  riastrad   if test -n "$1"; then
   2991  1.1  riastrad     func_convert_core_msys_to_w32 "$1"
   2992  1.1  riastrad     func_to_host_file_result=$func_convert_core_msys_to_w32_result
   2993  1.1  riastrad   fi
   2994  1.1  riastrad   func_convert_file_check "$1" "$func_to_host_file_result"
   2995  1.1  riastrad }
   2996  1.1  riastrad # end func_convert_file_msys_to_w32
   2997  1.1  riastrad 
   2998  1.1  riastrad 
   2999  1.1  riastrad # func_convert_file_cygwin_to_w32 ARG
   3000  1.1  riastrad # Convert file name ARG from Cygwin to w32 format.  Returns result in
   3001  1.1  riastrad # func_to_host_file_result.
   3002  1.1  riastrad func_convert_file_cygwin_to_w32 ()
   3003  1.1  riastrad {
   3004  1.1  riastrad   $debug_cmd
   3005  1.1  riastrad 
   3006  1.1  riastrad   func_to_host_file_result=$1
   3007  1.1  riastrad   if test -n "$1"; then
   3008  1.1  riastrad     # because $build is cygwin, we call "the" cygpath in $PATH; no need to use
   3009  1.1  riastrad     # LT_CYGPATH in this case.
   3010  1.1  riastrad     func_to_host_file_result=`cygpath -m "$1"`
   3011  1.1  riastrad   fi
   3012  1.1  riastrad   func_convert_file_check "$1" "$func_to_host_file_result"
   3013  1.1  riastrad }
   3014  1.1  riastrad # end func_convert_file_cygwin_to_w32
   3015  1.1  riastrad 
   3016  1.1  riastrad 
   3017  1.1  riastrad # func_convert_file_nix_to_w32 ARG
   3018  1.1  riastrad # Convert file name ARG from *nix to w32 format.  Requires a wine environment
   3019  1.1  riastrad # and a working winepath. Returns result in func_to_host_file_result.
   3020  1.1  riastrad func_convert_file_nix_to_w32 ()
   3021  1.1  riastrad {
   3022  1.1  riastrad   $debug_cmd
   3023  1.1  riastrad 
   3024  1.1  riastrad   func_to_host_file_result=$1
   3025  1.1  riastrad   if test -n "$1"; then
   3026  1.1  riastrad     func_convert_core_file_wine_to_w32 "$1"
   3027  1.1  riastrad     func_to_host_file_result=$func_convert_core_file_wine_to_w32_result
   3028  1.1  riastrad   fi
   3029  1.1  riastrad   func_convert_file_check "$1" "$func_to_host_file_result"
   3030  1.1  riastrad }
   3031  1.1  riastrad # end func_convert_file_nix_to_w32
   3032  1.1  riastrad 
   3033  1.1  riastrad 
   3034  1.1  riastrad # func_convert_file_msys_to_cygwin ARG
   3035  1.1  riastrad # Convert file name ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
   3036  1.1  riastrad # Returns result in func_to_host_file_result.
   3037  1.1  riastrad func_convert_file_msys_to_cygwin ()
   3038  1.1  riastrad {
   3039  1.1  riastrad   $debug_cmd
   3040  1.1  riastrad 
   3041  1.1  riastrad   func_to_host_file_result=$1
   3042  1.1  riastrad   if test -n "$1"; then
   3043  1.1  riastrad     func_convert_core_msys_to_w32 "$1"
   3044  1.1  riastrad     func_cygpath -u "$func_convert_core_msys_to_w32_result"
   3045  1.1  riastrad     func_to_host_file_result=$func_cygpath_result
   3046  1.1  riastrad   fi
   3047  1.1  riastrad   func_convert_file_check "$1" "$func_to_host_file_result"
   3048  1.1  riastrad }
   3049  1.1  riastrad # end func_convert_file_msys_to_cygwin
   3050  1.1  riastrad 
   3051  1.1  riastrad 
   3052  1.1  riastrad # func_convert_file_nix_to_cygwin ARG
   3053  1.1  riastrad # Convert file name ARG from *nix to Cygwin format.  Requires Cygwin installed
   3054  1.1  riastrad # in a wine environment, working winepath, and LT_CYGPATH set.  Returns result
   3055  1.1  riastrad # in func_to_host_file_result.
   3056  1.1  riastrad func_convert_file_nix_to_cygwin ()
   3057  1.1  riastrad {
   3058  1.1  riastrad   $debug_cmd
   3059  1.1  riastrad 
   3060  1.1  riastrad   func_to_host_file_result=$1
   3061  1.1  riastrad   if test -n "$1"; then
   3062  1.1  riastrad     # convert from *nix to w32, then use cygpath to convert from w32 to cygwin.
   3063  1.1  riastrad     func_convert_core_file_wine_to_w32 "$1"
   3064  1.1  riastrad     func_cygpath -u "$func_convert_core_file_wine_to_w32_result"
   3065  1.1  riastrad     func_to_host_file_result=$func_cygpath_result
   3066  1.1  riastrad   fi
   3067  1.1  riastrad   func_convert_file_check "$1" "$func_to_host_file_result"
   3068  1.1  riastrad }
   3069  1.1  riastrad # end func_convert_file_nix_to_cygwin
   3070  1.1  riastrad 
   3071  1.1  riastrad 
   3072  1.1  riastrad #############################################
   3073  1.1  riastrad # $build to $host PATH CONVERSION FUNCTIONS #
   3074  1.1  riastrad #############################################
   3075  1.1  riastrad # invoked via '$to_host_path_cmd ARG'
   3076  1.1  riastrad #
   3077  1.1  riastrad # In each case, ARG is the path to be converted from $build to $host format.
   3078  1.1  riastrad # The result will be available in $func_to_host_path_result.
   3079  1.1  riastrad #
   3080  1.1  riastrad # Path separators are also converted from $build format to $host format.  If
   3081  1.1  riastrad # ARG begins or ends with a path separator character, it is preserved (but
   3082  1.1  riastrad # converted to $host format) on output.
   3083  1.1  riastrad #
   3084  1.1  riastrad # All path conversion functions are named using the following convention:
   3085  1.1  riastrad #   file name conversion function    : func_convert_file_X_to_Y ()
   3086  1.1  riastrad #   path conversion function         : func_convert_path_X_to_Y ()
   3087  1.1  riastrad # where, for any given $build/$host combination the 'X_to_Y' value is the
   3088  1.1  riastrad # same.  If conversion functions are added for new $build/$host combinations,
   3089  1.1  riastrad # the two new functions must follow this pattern, or func_init_to_host_path_cmd
   3090  1.1  riastrad # will break.
   3091  1.1  riastrad 
   3092  1.1  riastrad 
   3093  1.1  riastrad # func_init_to_host_path_cmd
   3094  1.1  riastrad # Ensures that function "pointer" variable $to_host_path_cmd is set to the
   3095  1.1  riastrad # appropriate value, based on the value of $to_host_file_cmd.
   3096  1.1  riastrad to_host_path_cmd=
   3097  1.1  riastrad func_init_to_host_path_cmd ()
   3098  1.1  riastrad {
   3099  1.1  riastrad   $debug_cmd
   3100  1.1  riastrad 
   3101  1.1  riastrad   if test -z "$to_host_path_cmd"; then
   3102  1.1  riastrad     func_stripname 'func_convert_file_' '' "$to_host_file_cmd"
   3103  1.1  riastrad     to_host_path_cmd=func_convert_path_$func_stripname_result
   3104  1.1  riastrad   fi
   3105  1.1  riastrad }
   3106  1.1  riastrad 
   3107  1.1  riastrad 
   3108  1.1  riastrad # func_to_host_path ARG
   3109  1.1  riastrad # Converts the path ARG from $build format to $host format. Return result
   3110  1.1  riastrad # in func_to_host_path_result.
   3111  1.1  riastrad func_to_host_path ()
   3112  1.1  riastrad {
   3113  1.1  riastrad   $debug_cmd
   3114  1.1  riastrad 
   3115  1.1  riastrad   func_init_to_host_path_cmd
   3116  1.1  riastrad   $to_host_path_cmd "$1"
   3117  1.1  riastrad }
   3118  1.1  riastrad # end func_to_host_path
   3119  1.1  riastrad 
   3120  1.1  riastrad 
   3121  1.1  riastrad # func_convert_path_noop ARG
   3122  1.1  riastrad # Copy ARG to func_to_host_path_result.
   3123  1.1  riastrad func_convert_path_noop ()
   3124  1.1  riastrad {
   3125  1.1  riastrad   func_to_host_path_result=$1
   3126  1.1  riastrad }
   3127  1.1  riastrad # end func_convert_path_noop
   3128  1.1  riastrad 
   3129  1.1  riastrad 
   3130  1.1  riastrad # func_convert_path_msys_to_w32 ARG
   3131  1.1  riastrad # Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic
   3132  1.1  riastrad # conversion to w32 is not available inside the cwrapper.  Returns result in
   3133  1.1  riastrad # func_to_host_path_result.
   3134  1.1  riastrad func_convert_path_msys_to_w32 ()
   3135  1.1  riastrad {
   3136  1.1  riastrad   $debug_cmd
   3137  1.1  riastrad 
   3138  1.1  riastrad   func_to_host_path_result=$1
   3139  1.1  riastrad   if test -n "$1"; then
   3140  1.1  riastrad     # Remove leading and trailing path separator characters from ARG.  MSYS
   3141  1.1  riastrad     # behavior is inconsistent here; cygpath turns them into '.;' and ';.';
   3142  1.1  riastrad     # and winepath ignores them completely.
   3143  1.1  riastrad     func_stripname : : "$1"
   3144  1.1  riastrad     func_to_host_path_tmp1=$func_stripname_result
   3145  1.1  riastrad     func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
   3146  1.1  riastrad     func_to_host_path_result=$func_convert_core_msys_to_w32_result
   3147  1.1  riastrad     func_convert_path_check : ";" \
   3148  1.1  riastrad       "$func_to_host_path_tmp1" "$func_to_host_path_result"
   3149  1.1  riastrad     func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
   3150  1.1  riastrad   fi
   3151  1.1  riastrad }
   3152  1.1  riastrad # end func_convert_path_msys_to_w32
   3153  1.1  riastrad 
   3154  1.1  riastrad 
   3155  1.1  riastrad # func_convert_path_cygwin_to_w32 ARG
   3156  1.1  riastrad # Convert path ARG from Cygwin to w32 format.  Returns result in
   3157  1.1  riastrad # func_to_host_file_result.
   3158  1.1  riastrad func_convert_path_cygwin_to_w32 ()
   3159  1.1  riastrad {
   3160  1.1  riastrad   $debug_cmd
   3161  1.1  riastrad 
   3162  1.1  riastrad   func_to_host_path_result=$1
   3163  1.1  riastrad   if test -n "$1"; then
   3164  1.1  riastrad     # See func_convert_path_msys_to_w32:
   3165  1.1  riastrad     func_stripname : : "$1"
   3166  1.1  riastrad     func_to_host_path_tmp1=$func_stripname_result
   3167  1.1  riastrad     func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"`
   3168  1.1  riastrad     func_convert_path_check : ";" \
   3169  1.1  riastrad       "$func_to_host_path_tmp1" "$func_to_host_path_result"
   3170  1.1  riastrad     func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
   3171  1.1  riastrad   fi
   3172  1.1  riastrad }
   3173  1.1  riastrad # end func_convert_path_cygwin_to_w32
   3174  1.1  riastrad 
   3175  1.1  riastrad 
   3176  1.1  riastrad # func_convert_path_nix_to_w32 ARG
   3177  1.1  riastrad # Convert path ARG from *nix to w32 format.  Requires a wine environment and
   3178  1.1  riastrad # a working winepath.  Returns result in func_to_host_file_result.
   3179  1.1  riastrad func_convert_path_nix_to_w32 ()
   3180  1.1  riastrad {
   3181  1.1  riastrad   $debug_cmd
   3182  1.1  riastrad 
   3183  1.1  riastrad   func_to_host_path_result=$1
   3184  1.1  riastrad   if test -n "$1"; then
   3185  1.1  riastrad     # See func_convert_path_msys_to_w32:
   3186  1.1  riastrad     func_stripname : : "$1"
   3187  1.1  riastrad     func_to_host_path_tmp1=$func_stripname_result
   3188  1.1  riastrad     func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
   3189  1.1  riastrad     func_to_host_path_result=$func_convert_core_path_wine_to_w32_result
   3190  1.1  riastrad     func_convert_path_check : ";" \
   3191  1.1  riastrad       "$func_to_host_path_tmp1" "$func_to_host_path_result"
   3192  1.1  riastrad     func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
   3193  1.1  riastrad   fi
   3194  1.1  riastrad }
   3195  1.1  riastrad # end func_convert_path_nix_to_w32
   3196  1.1  riastrad 
   3197  1.1  riastrad 
   3198  1.1  riastrad # func_convert_path_msys_to_cygwin ARG
   3199  1.1  riastrad # Convert path ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
   3200  1.1  riastrad # Returns result in func_to_host_file_result.
   3201  1.1  riastrad func_convert_path_msys_to_cygwin ()
   3202  1.1  riastrad {
   3203  1.1  riastrad   $debug_cmd
   3204  1.1  riastrad 
   3205  1.1  riastrad   func_to_host_path_result=$1
   3206  1.1  riastrad   if test -n "$1"; then
   3207  1.1  riastrad     # See func_convert_path_msys_to_w32:
   3208  1.1  riastrad     func_stripname : : "$1"
   3209  1.1  riastrad     func_to_host_path_tmp1=$func_stripname_result
   3210  1.1  riastrad     func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
   3211  1.1  riastrad     func_cygpath -u -p "$func_convert_core_msys_to_w32_result"
   3212  1.1  riastrad     func_to_host_path_result=$func_cygpath_result
   3213  1.1  riastrad     func_convert_path_check : : \
   3214  1.1  riastrad       "$func_to_host_path_tmp1" "$func_to_host_path_result"
   3215  1.1  riastrad     func_convert_path_front_back_pathsep ":*" "*:" : "$1"
   3216  1.1  riastrad   fi
   3217  1.1  riastrad }
   3218  1.1  riastrad # end func_convert_path_msys_to_cygwin
   3219  1.1  riastrad 
   3220  1.1  riastrad 
   3221  1.1  riastrad # func_convert_path_nix_to_cygwin ARG
   3222  1.1  riastrad # Convert path ARG from *nix to Cygwin format.  Requires Cygwin installed in a
   3223  1.1  riastrad # a wine environment, working winepath, and LT_CYGPATH set.  Returns result in
   3224  1.1  riastrad # func_to_host_file_result.
   3225  1.1  riastrad func_convert_path_nix_to_cygwin ()
   3226  1.1  riastrad {
   3227  1.1  riastrad   $debug_cmd
   3228  1.1  riastrad 
   3229  1.1  riastrad   func_to_host_path_result=$1
   3230  1.1  riastrad   if test -n "$1"; then
   3231  1.1  riastrad     # Remove leading and trailing path separator characters from
   3232  1.1  riastrad     # ARG. msys behavior is inconsistent here, cygpath turns them
   3233  1.1  riastrad     # into '.;' and ';.', and winepath ignores them completely.
   3234  1.1  riastrad     func_stripname : : "$1"
   3235  1.1  riastrad     func_to_host_path_tmp1=$func_stripname_result
   3236  1.1  riastrad     func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
   3237  1.1  riastrad     func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result"
   3238  1.1  riastrad     func_to_host_path_result=$func_cygpath_result
   3239  1.1  riastrad     func_convert_path_check : : \
   3240  1.1  riastrad       "$func_to_host_path_tmp1" "$func_to_host_path_result"
   3241  1.1  riastrad     func_convert_path_front_back_pathsep ":*" "*:" : "$1"
   3242  1.1  riastrad   fi
   3243  1.1  riastrad }
   3244  1.1  riastrad # end func_convert_path_nix_to_cygwin
   3245  1.1  riastrad 
   3246  1.1  riastrad 
   3247  1.1  riastrad # func_dll_def_p FILE
   3248  1.1  riastrad # True iff FILE is a Windows DLL '.def' file.
   3249  1.1  riastrad # Keep in sync with _LT_DLL_DEF_P in libtool.m4
   3250  1.1  riastrad func_dll_def_p ()
   3251  1.1  riastrad {
   3252  1.1  riastrad   $debug_cmd
   3253  1.1  riastrad 
   3254  1.1  riastrad   func_dll_def_p_tmp=`$SED -n \
   3255  1.1  riastrad     -e 's/^[	 ]*//' \
   3256  1.1  riastrad     -e '/^\(;.*\)*$/d' \
   3257  1.1  riastrad     -e 's/^\(EXPORTS\|LIBRARY\)\([	 ].*\)*$/DEF/p' \
   3258  1.1  riastrad     -e q \
   3259  1.1  riastrad     "$1"`
   3260  1.1  riastrad   test DEF = "$func_dll_def_p_tmp"
   3261  1.1  riastrad }
   3262  1.1  riastrad 
   3263  1.1  riastrad 
   3264  1.1  riastrad # func_mode_compile arg...
   3265  1.1  riastrad func_mode_compile ()
   3266  1.1  riastrad {
   3267  1.1  riastrad     $debug_cmd
   3268  1.1  riastrad 
   3269  1.1  riastrad     # Get the compilation command and the source file.
   3270  1.1  riastrad     base_compile=
   3271  1.1  riastrad     srcfile=$nonopt  #  always keep a non-empty value in "srcfile"
   3272  1.1  riastrad     suppress_opt=yes
   3273  1.1  riastrad     suppress_output=
   3274  1.1  riastrad     arg_mode=normal
   3275  1.1  riastrad     libobj=
   3276  1.1  riastrad     later=
   3277  1.1  riastrad     pie_flag=
   3278  1.1  riastrad 
   3279  1.1  riastrad     for arg
   3280  1.1  riastrad     do
   3281  1.1  riastrad       case $arg_mode in
   3282  1.1  riastrad       arg  )
   3283  1.1  riastrad 	# do not "continue".  Instead, add this to base_compile
   3284  1.1  riastrad 	lastarg=$arg
   3285  1.1  riastrad 	arg_mode=normal
   3286  1.1  riastrad 	;;
   3287  1.1  riastrad 
   3288  1.1  riastrad       target )
   3289  1.1  riastrad 	libobj=$arg
   3290  1.1  riastrad 	arg_mode=normal
   3291  1.1  riastrad 	continue
   3292  1.1  riastrad 	;;
   3293  1.1  riastrad 
   3294  1.1  riastrad       normal )
   3295  1.1  riastrad 	# Accept any command-line options.
   3296  1.1  riastrad 	case $arg in
   3297  1.1  riastrad 	-o)
   3298  1.1  riastrad 	  test -n "$libobj" && \
   3299  1.1  riastrad 	    func_fatal_error "you cannot specify '-o' more than once"
   3300  1.1  riastrad 	  arg_mode=target
   3301  1.1  riastrad 	  continue
   3302  1.1  riastrad 	  ;;
   3303  1.1  riastrad 
   3304  1.1  riastrad 	-pie | -fpie | -fPIE)
   3305  1.1  riastrad           func_append pie_flag " $arg"
   3306  1.1  riastrad 	  continue
   3307  1.1  riastrad 	  ;;
   3308  1.1  riastrad 
   3309  1.1  riastrad 	-shared | -static | -prefer-pic | -prefer-non-pic)
   3310  1.1  riastrad 	  func_append later " $arg"
   3311  1.1  riastrad 	  continue
   3312  1.1  riastrad 	  ;;
   3313  1.1  riastrad 
   3314  1.1  riastrad 	-no-suppress)
   3315  1.1  riastrad 	  suppress_opt=no
   3316  1.1  riastrad 	  continue
   3317  1.1  riastrad 	  ;;
   3318  1.1  riastrad 
   3319  1.1  riastrad 	-Xcompiler)
   3320  1.1  riastrad 	  arg_mode=arg  #  the next one goes into the "base_compile" arg list
   3321  1.1  riastrad 	  continue      #  The current "srcfile" will either be retained or
   3322  1.1  riastrad 	  ;;            #  replaced later.  I would guess that would be a bug.
   3323  1.1  riastrad 
   3324  1.1  riastrad 	-Wc,*)
   3325  1.1  riastrad 	  func_stripname '-Wc,' '' "$arg"
   3326  1.1  riastrad 	  args=$func_stripname_result
   3327  1.1  riastrad 	  lastarg=
   3328  1.1  riastrad 	  save_ifs=$IFS; IFS=,
   3329  1.1  riastrad 	  for arg in $args; do
   3330  1.1  riastrad 	    IFS=$save_ifs
   3331  1.1  riastrad 	    func_append_quoted lastarg "$arg"
   3332  1.1  riastrad 	  done
   3333  1.1  riastrad 	  IFS=$save_ifs
   3334  1.1  riastrad 	  func_stripname ' ' '' "$lastarg"
   3335  1.1  riastrad 	  lastarg=$func_stripname_result
   3336  1.1  riastrad 
   3337  1.1  riastrad 	  # Add the arguments to base_compile.
   3338  1.1  riastrad 	  func_append base_compile " $lastarg"
   3339  1.1  riastrad 	  continue
   3340  1.1  riastrad 	  ;;
   3341  1.1  riastrad 
   3342  1.1  riastrad 	*)
   3343  1.1  riastrad 	  # Accept the current argument as the source file.
   3344  1.1  riastrad 	  # The previous "srcfile" becomes the current argument.
   3345  1.1  riastrad 	  #
   3346  1.1  riastrad 	  lastarg=$srcfile
   3347  1.1  riastrad 	  srcfile=$arg
   3348  1.1  riastrad 	  ;;
   3349  1.1  riastrad 	esac  #  case $arg
   3350  1.1  riastrad 	;;
   3351  1.1  riastrad       esac    #  case $arg_mode
   3352  1.1  riastrad 
   3353  1.1  riastrad       # Aesthetically quote the previous argument.
   3354  1.1  riastrad       func_append_quoted base_compile "$lastarg"
   3355  1.1  riastrad     done # for arg
   3356  1.1  riastrad 
   3357  1.1  riastrad     case $arg_mode in
   3358  1.1  riastrad     arg)
   3359  1.1  riastrad       func_fatal_error "you must specify an argument for -Xcompile"
   3360  1.1  riastrad       ;;
   3361  1.1  riastrad     target)
   3362  1.1  riastrad       func_fatal_error "you must specify a target with '-o'"
   3363  1.1  riastrad       ;;
   3364  1.1  riastrad     *)
   3365  1.1  riastrad       # Get the name of the library object.
   3366  1.1  riastrad       test -z "$libobj" && {
   3367  1.1  riastrad 	func_basename "$srcfile"
   3368  1.1  riastrad 	libobj=$func_basename_result
   3369  1.1  riastrad       }
   3370  1.1  riastrad       ;;
   3371  1.1  riastrad     esac
   3372  1.1  riastrad 
   3373  1.1  riastrad     # Recognize several different file suffixes.
   3374  1.1  riastrad     # If the user specifies -o file.o, it is replaced with file.lo
   3375  1.1  riastrad     case $libobj in
   3376  1.1  riastrad     *.[cCFSifmso] | \
   3377  1.1  riastrad     *.ada | *.adb | *.ads | *.asm | \
   3378  1.1  riastrad     *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
   3379  1.1  riastrad     *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup)
   3380  1.1  riastrad       func_xform "$libobj"
   3381  1.1  riastrad       libobj=$func_xform_result
   3382  1.1  riastrad       ;;
   3383  1.1  riastrad     esac
   3384  1.1  riastrad 
   3385  1.1  riastrad     case $libobj in
   3386  1.1  riastrad     *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
   3387  1.1  riastrad     *)
   3388  1.1  riastrad       func_fatal_error "cannot determine name of library object from '$libobj'"
   3389  1.1  riastrad       ;;
   3390  1.1  riastrad     esac
   3391  1.1  riastrad 
   3392  1.1  riastrad     func_infer_tag $base_compile
   3393  1.1  riastrad 
   3394  1.1  riastrad     for arg in $later; do
   3395  1.1  riastrad       case $arg in
   3396  1.1  riastrad       -shared)
   3397  1.1  riastrad 	test yes = "$build_libtool_libs" \
   3398  1.1  riastrad 	  || func_fatal_configuration "cannot build a shared library"
   3399  1.1  riastrad 	build_old_libs=no
   3400  1.1  riastrad 	continue
   3401  1.1  riastrad 	;;
   3402  1.1  riastrad 
   3403  1.1  riastrad       -static)
   3404  1.1  riastrad 	build_libtool_libs=no
   3405  1.1  riastrad 	build_old_libs=yes
   3406  1.1  riastrad 	continue
   3407  1.1  riastrad 	;;
   3408  1.1  riastrad 
   3409  1.1  riastrad       -prefer-pic)
   3410  1.1  riastrad 	pic_mode=yes
   3411  1.1  riastrad 	continue
   3412  1.1  riastrad 	;;
   3413  1.1  riastrad 
   3414  1.1  riastrad       -prefer-non-pic)
   3415  1.1  riastrad 	pic_mode=no
   3416  1.1  riastrad 	continue
   3417  1.1  riastrad 	;;
   3418  1.1  riastrad       esac
   3419  1.1  riastrad     done
   3420  1.1  riastrad 
   3421  1.1  riastrad     func_quote_for_eval "$libobj"
   3422  1.1  riastrad     test "X$libobj" != "X$func_quote_for_eval_result" \
   3423  1.1  riastrad       && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"'	 &()|`$[]' \
   3424  1.1  riastrad       && func_warning "libobj name '$libobj' may not contain shell special characters."
   3425  1.1  riastrad     func_dirname_and_basename "$obj" "/" ""
   3426  1.1  riastrad     objname=$func_basename_result
   3427  1.1  riastrad     xdir=$func_dirname_result
   3428  1.1  riastrad     lobj=$xdir$objdir/$objname
   3429  1.1  riastrad 
   3430  1.1  riastrad     test -z "$base_compile" && \
   3431  1.1  riastrad       func_fatal_help "you must specify a compilation command"
   3432  1.1  riastrad 
   3433  1.1  riastrad     # Delete any leftover library objects.
   3434  1.1  riastrad     if test yes = "$build_old_libs"; then
   3435  1.1  riastrad       removelist="$obj $lobj $libobj ${libobj}T"
   3436  1.1  riastrad     else
   3437  1.1  riastrad       removelist="$lobj $libobj ${libobj}T"
   3438  1.1  riastrad     fi
   3439  1.1  riastrad 
   3440  1.1  riastrad     # On Cygwin there's no "real" PIC flag so we must build both object types
   3441  1.1  riastrad     case $host_os in
   3442  1.1  riastrad     cygwin* | mingw* | pw32* | os2* | cegcc*)
   3443  1.1  riastrad       pic_mode=default
   3444  1.1  riastrad       ;;
   3445  1.1  riastrad     esac
   3446  1.1  riastrad     if test no = "$pic_mode" && test pass_all != "$deplibs_check_method"; then
   3447  1.1  riastrad       # non-PIC code in shared libraries is not supported
   3448  1.1  riastrad       pic_mode=default
   3449  1.1  riastrad     fi
   3450  1.1  riastrad 
   3451  1.1  riastrad     # Calculate the filename of the output object if compiler does
   3452  1.1  riastrad     # not support -o with -c
   3453  1.1  riastrad     if test no = "$compiler_c_o"; then
   3454  1.1  riastrad       output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.$objext
   3455  1.1  riastrad       lockfile=$output_obj.lock
   3456  1.1  riastrad     else
   3457  1.1  riastrad       output_obj=
   3458  1.1  riastrad       need_locks=no
   3459  1.1  riastrad       lockfile=
   3460  1.1  riastrad     fi
   3461  1.1  riastrad 
   3462  1.1  riastrad     # Lock this critical section if it is needed
   3463  1.1  riastrad     # We use this script file to make the link, it avoids creating a new file
   3464  1.1  riastrad     if test yes = "$need_locks"; then
   3465  1.1  riastrad       until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
   3466  1.1  riastrad 	func_echo "Waiting for $lockfile to be removed"
   3467  1.1  riastrad 	sleep 2
   3468  1.1  riastrad       done
   3469  1.1  riastrad     elif test warn = "$need_locks"; then
   3470  1.1  riastrad       if test -f "$lockfile"; then
   3471  1.1  riastrad 	$ECHO "\
   3472  1.1  riastrad *** ERROR, $lockfile exists and contains:
   3473  1.1  riastrad `cat $lockfile 2>/dev/null`
   3474  1.1  riastrad 
   3475  1.1  riastrad This indicates that another process is trying to use the same
   3476  1.1  riastrad temporary object file, and libtool could not work around it because
   3477  1.1  riastrad your compiler does not support '-c' and '-o' together.  If you
   3478  1.1  riastrad repeat this compilation, it may succeed, by chance, but you had better
   3479  1.1  riastrad avoid parallel builds (make -j) in this platform, or get a better
   3480  1.1  riastrad compiler."
   3481  1.1  riastrad 
   3482  1.1  riastrad 	$opt_dry_run || $RM $removelist
   3483  1.1  riastrad 	exit $EXIT_FAILURE
   3484  1.1  riastrad       fi
   3485  1.1  riastrad       func_append removelist " $output_obj"
   3486  1.1  riastrad       $ECHO "$srcfile" > "$lockfile"
   3487  1.1  riastrad     fi
   3488  1.1  riastrad 
   3489  1.1  riastrad     $opt_dry_run || $RM $removelist
   3490  1.1  riastrad     func_append removelist " $lockfile"
   3491  1.1  riastrad     trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
   3492  1.1  riastrad 
   3493  1.1  riastrad     func_to_tool_file "$srcfile" func_convert_file_msys_to_w32
   3494  1.1  riastrad     srcfile=$func_to_tool_file_result
   3495  1.1  riastrad     func_quote_for_eval "$srcfile"
   3496  1.1  riastrad     qsrcfile=$func_quote_for_eval_result
   3497  1.1  riastrad 
   3498  1.1  riastrad     # Only build a PIC object if we are building libtool libraries.
   3499  1.1  riastrad     if test yes = "$build_libtool_libs"; then
   3500  1.1  riastrad       # Without this assignment, base_compile gets emptied.
   3501  1.1  riastrad       fbsd_hideous_sh_bug=$base_compile
   3502  1.1  riastrad 
   3503  1.1  riastrad       if test no != "$pic_mode"; then
   3504  1.1  riastrad 	command="$base_compile $qsrcfile $pic_flag"
   3505  1.1  riastrad       else
   3506  1.1  riastrad 	# Don't build PIC code
   3507  1.1  riastrad 	command="$base_compile $qsrcfile"
   3508  1.1  riastrad       fi
   3509  1.1  riastrad 
   3510  1.1  riastrad       func_mkdir_p "$xdir$objdir"
   3511  1.1  riastrad 
   3512  1.1  riastrad       if test -z "$output_obj"; then
   3513  1.1  riastrad 	# Place PIC objects in $objdir
   3514  1.1  riastrad 	func_append command " -o $lobj"
   3515  1.1  riastrad       fi
   3516  1.1  riastrad 
   3517  1.1  riastrad       func_show_eval_locale "$command"	\
   3518  1.1  riastrad           'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
   3519  1.1  riastrad 
   3520  1.1  riastrad       if test warn = "$need_locks" &&
   3521  1.1  riastrad 	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
   3522  1.1  riastrad 	$ECHO "\
   3523  1.1  riastrad *** ERROR, $lockfile contains:
   3524  1.1  riastrad `cat $lockfile 2>/dev/null`
   3525  1.1  riastrad 
   3526  1.1  riastrad but it should contain:
   3527  1.1  riastrad $srcfile
   3528  1.1  riastrad 
   3529  1.1  riastrad This indicates that another process is trying to use the same
   3530  1.1  riastrad temporary object file, and libtool could not work around it because
   3531  1.1  riastrad your compiler does not support '-c' and '-o' together.  If you
   3532  1.1  riastrad repeat this compilation, it may succeed, by chance, but you had better
   3533  1.1  riastrad avoid parallel builds (make -j) in this platform, or get a better
   3534  1.1  riastrad compiler."
   3535  1.1  riastrad 
   3536  1.1  riastrad 	$opt_dry_run || $RM $removelist
   3537  1.1  riastrad 	exit $EXIT_FAILURE
   3538  1.1  riastrad       fi
   3539  1.1  riastrad 
   3540  1.1  riastrad       # Just move the object if needed, then go on to compile the next one
   3541  1.1  riastrad       if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
   3542  1.1  riastrad 	func_show_eval '$MV "$output_obj" "$lobj"' \
   3543  1.1  riastrad 	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
   3544  1.1  riastrad       fi
   3545  1.1  riastrad 
   3546  1.1  riastrad       # Allow error messages only from the first compilation.
   3547  1.1  riastrad       if test yes = "$suppress_opt"; then
   3548  1.1  riastrad 	suppress_output=' >/dev/null 2>&1'
   3549  1.1  riastrad       fi
   3550  1.1  riastrad     fi
   3551  1.1  riastrad 
   3552  1.1  riastrad     # Only build a position-dependent object if we build old libraries.
   3553  1.1  riastrad     if test yes = "$build_old_libs"; then
   3554  1.1  riastrad       if test yes != "$pic_mode"; then
   3555  1.1  riastrad 	# Don't build PIC code
   3556  1.1  riastrad 	command="$base_compile $qsrcfile$pie_flag"
   3557  1.1  riastrad       else
   3558  1.1  riastrad 	command="$base_compile $qsrcfile $pic_flag"
   3559  1.1  riastrad       fi
   3560  1.1  riastrad       if test yes = "$compiler_c_o"; then
   3561  1.1  riastrad 	func_append command " -o $obj"
   3562  1.1  riastrad       fi
   3563  1.1  riastrad 
   3564  1.1  riastrad       # Suppress compiler output if we already did a PIC compilation.
   3565  1.1  riastrad       func_append command "$suppress_output"
   3566  1.1  riastrad       func_show_eval_locale "$command" \
   3567  1.1  riastrad         '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
   3568  1.1  riastrad 
   3569  1.1  riastrad       if test warn = "$need_locks" &&
   3570  1.1  riastrad 	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
   3571  1.1  riastrad 	$ECHO "\
   3572  1.1  riastrad *** ERROR, $lockfile contains:
   3573  1.1  riastrad `cat $lockfile 2>/dev/null`
   3574  1.1  riastrad 
   3575  1.1  riastrad but it should contain:
   3576  1.1  riastrad $srcfile
   3577  1.1  riastrad 
   3578  1.1  riastrad This indicates that another process is trying to use the same
   3579  1.1  riastrad temporary object file, and libtool could not work around it because
   3580  1.1  riastrad your compiler does not support '-c' and '-o' together.  If you
   3581  1.1  riastrad repeat this compilation, it may succeed, by chance, but you had better
   3582  1.1  riastrad avoid parallel builds (make -j) in this platform, or get a better
   3583  1.1  riastrad compiler."
   3584  1.1  riastrad 
   3585  1.1  riastrad 	$opt_dry_run || $RM $removelist
   3586  1.1  riastrad 	exit $EXIT_FAILURE
   3587  1.1  riastrad       fi
   3588  1.1  riastrad 
   3589  1.1  riastrad       # Just move the object if needed
   3590  1.1  riastrad       if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
   3591  1.1  riastrad 	func_show_eval '$MV "$output_obj" "$obj"' \
   3592  1.1  riastrad 	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
   3593  1.1  riastrad       fi
   3594  1.1  riastrad     fi
   3595  1.1  riastrad 
   3596  1.1  riastrad     $opt_dry_run || {
   3597  1.1  riastrad       func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
   3598  1.1  riastrad 
   3599  1.1  riastrad       # Unlock the critical section if it was locked
   3600  1.1  riastrad       if test no != "$need_locks"; then
   3601  1.1  riastrad 	removelist=$lockfile
   3602  1.1  riastrad         $RM "$lockfile"
   3603  1.1  riastrad       fi
   3604  1.1  riastrad     }
   3605  1.1  riastrad 
   3606  1.1  riastrad     exit $EXIT_SUCCESS
   3607  1.1  riastrad }
   3608  1.1  riastrad 
   3609  1.1  riastrad $opt_help || {
   3610  1.1  riastrad   test compile = "$opt_mode" && func_mode_compile ${1+"$@"}
   3611  1.1  riastrad }
   3612  1.1  riastrad 
   3613  1.1  riastrad func_mode_help ()
   3614  1.1  riastrad {
   3615  1.1  riastrad     # We need to display help for each of the modes.
   3616  1.1  riastrad     case $opt_mode in
   3617  1.1  riastrad       "")
   3618  1.1  riastrad         # Generic help is extracted from the usage comments
   3619  1.1  riastrad         # at the start of this file.
   3620  1.1  riastrad         func_help
   3621  1.1  riastrad         ;;
   3622  1.1  riastrad 
   3623  1.1  riastrad       clean)
   3624  1.1  riastrad         $ECHO \
   3625  1.1  riastrad "Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
   3626  1.1  riastrad 
   3627  1.1  riastrad Remove files from the build directory.
   3628  1.1  riastrad 
   3629  1.1  riastrad RM is the name of the program to use to delete files associated with each FILE
   3630  1.1  riastrad (typically '/bin/rm').  RM-OPTIONS are options (such as '-f') to be passed
   3631  1.1  riastrad to RM.
   3632  1.1  riastrad 
   3633  1.1  riastrad If FILE is a libtool library, object or program, all the files associated
   3634  1.1  riastrad with it are deleted. Otherwise, only FILE itself is deleted using RM."
   3635  1.1  riastrad         ;;
   3636  1.1  riastrad 
   3637  1.1  riastrad       compile)
   3638  1.1  riastrad       $ECHO \
   3639  1.1  riastrad "Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
   3640  1.1  riastrad 
   3641  1.1  riastrad Compile a source file into a libtool library object.
   3642  1.1  riastrad 
   3643  1.1  riastrad This mode accepts the following additional options:
   3644  1.1  riastrad 
   3645  1.1  riastrad   -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
   3646  1.1  riastrad   -no-suppress      do not suppress compiler output for multiple passes
   3647  1.1  riastrad   -prefer-pic       try to build PIC objects only
   3648  1.1  riastrad   -prefer-non-pic   try to build non-PIC objects only
   3649  1.1  riastrad   -shared           do not build a '.o' file suitable for static linking
   3650  1.1  riastrad   -static           only build a '.o' file suitable for static linking
   3651  1.1  riastrad   -Wc,FLAG          pass FLAG directly to the compiler
   3652  1.1  riastrad 
   3653  1.1  riastrad COMPILE-COMMAND is a command to be used in creating a 'standard' object file
   3654  1.1  riastrad from the given SOURCEFILE.
   3655  1.1  riastrad 
   3656  1.1  riastrad The output file name is determined by removing the directory component from
   3657  1.1  riastrad SOURCEFILE, then substituting the C source code suffix '.c' with the
   3658  1.1  riastrad library object suffix, '.lo'."
   3659  1.1  riastrad         ;;
   3660  1.1  riastrad 
   3661  1.1  riastrad       execute)
   3662  1.1  riastrad         $ECHO \
   3663  1.1  riastrad "Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
   3664  1.1  riastrad 
   3665  1.1  riastrad Automatically set library path, then run a program.
   3666  1.1  riastrad 
   3667  1.1  riastrad This mode accepts the following additional options:
   3668  1.1  riastrad 
   3669  1.1  riastrad   -dlopen FILE      add the directory containing FILE to the library path
   3670  1.1  riastrad 
   3671  1.1  riastrad This mode sets the library path environment variable according to '-dlopen'
   3672  1.1  riastrad flags.
   3673  1.1  riastrad 
   3674  1.1  riastrad If any of the ARGS are libtool executable wrappers, then they are translated
   3675  1.1  riastrad into their corresponding uninstalled binary, and any of their required library
   3676  1.1  riastrad directories are added to the library path.
   3677  1.1  riastrad 
   3678  1.1  riastrad Then, COMMAND is executed, with ARGS as arguments."
   3679  1.1  riastrad         ;;
   3680  1.1  riastrad 
   3681  1.1  riastrad       finish)
   3682  1.1  riastrad         $ECHO \
   3683  1.1  riastrad "Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
   3684  1.1  riastrad 
   3685  1.1  riastrad Complete the installation of libtool libraries.
   3686  1.1  riastrad 
   3687  1.1  riastrad Each LIBDIR is a directory that contains libtool libraries.
   3688  1.1  riastrad 
   3689  1.1  riastrad The commands that this mode executes may require superuser privileges.  Use
   3690  1.1  riastrad the '--dry-run' option if you just want to see what would be executed."
   3691  1.1  riastrad         ;;
   3692  1.1  riastrad 
   3693  1.1  riastrad       install)
   3694  1.1  riastrad         $ECHO \
   3695  1.1  riastrad "Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
   3696  1.1  riastrad 
   3697  1.1  riastrad Install executables or libraries.
   3698  1.1  riastrad 
   3699  1.1  riastrad INSTALL-COMMAND is the installation command.  The first component should be
   3700  1.1  riastrad either the 'install' or 'cp' program.
   3701  1.1  riastrad 
   3702  1.1  riastrad The following components of INSTALL-COMMAND are treated specially:
   3703  1.1  riastrad 
   3704  1.1  riastrad   -inst-prefix-dir PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
   3705  1.1  riastrad 
   3706  1.1  riastrad The rest of the components are interpreted as arguments to that command (only
   3707  1.1  riastrad BSD-compatible install options are recognized)."
   3708  1.1  riastrad         ;;
   3709  1.1  riastrad 
   3710  1.1  riastrad       link)
   3711  1.1  riastrad         $ECHO \
   3712  1.1  riastrad "Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
   3713  1.1  riastrad 
   3714  1.1  riastrad Link object files or libraries together to form another library, or to
   3715  1.1  riastrad create an executable program.
   3716  1.1  riastrad 
   3717  1.1  riastrad LINK-COMMAND is a command using the C compiler that you would use to create
   3718  1.1  riastrad a program from several object files.
   3719  1.1  riastrad 
   3720  1.1  riastrad The following components of LINK-COMMAND are treated specially:
   3721  1.1  riastrad 
   3722  1.1  riastrad   -all-static       do not do any dynamic linking at all
   3723  1.1  riastrad   -avoid-version    do not add a version suffix if possible
   3724  1.1  riastrad   -bindir BINDIR    specify path to binaries directory (for systems where
   3725  1.1  riastrad                     libraries must be found in the PATH setting at runtime)
   3726  1.1  riastrad   -dlopen FILE      '-dlpreopen' FILE if it cannot be dlopened at runtime
   3727  1.1  riastrad   -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
   3728  1.1  riastrad   -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
   3729  1.1  riastrad   -export-symbols SYMFILE
   3730  1.1  riastrad                     try to export only the symbols listed in SYMFILE
   3731  1.1  riastrad   -export-symbols-regex REGEX
   3732  1.1  riastrad                     try to export only the symbols matching REGEX
   3733  1.1  riastrad   -LLIBDIR          search LIBDIR for required installed libraries
   3734  1.1  riastrad   -lNAME            OUTPUT-FILE requires the installed library libNAME
   3735  1.1  riastrad   -module           build a library that can dlopened
   3736  1.1  riastrad   -no-fast-install  disable the fast-install mode
   3737  1.1  riastrad   -no-install       link a not-installable executable
   3738  1.1  riastrad   -no-undefined     declare that a library does not refer to external symbols
   3739  1.1  riastrad   -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
   3740  1.1  riastrad   -objectlist FILE  use a list of object files found in FILE to specify objects
   3741  1.1  riastrad   -os2dllname NAME  force a short DLL name on OS/2 (no effect on other OSes)
   3742  1.1  riastrad   -precious-files-regex REGEX
   3743  1.1  riastrad                     don't remove output files matching REGEX
   3744  1.1  riastrad   -release RELEASE  specify package release information
   3745  1.1  riastrad   -rpath LIBDIR     the created library will eventually be installed in LIBDIR
   3746  1.1  riastrad   -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
   3747  1.1  riastrad   -shared           only do dynamic linking of libtool libraries
   3748  1.1  riastrad   -shrext SUFFIX    override the standard shared library file extension
   3749  1.1  riastrad   -static           do not do any dynamic linking of uninstalled libtool libraries
   3750  1.1  riastrad   -static-libtool-libs
   3751  1.1  riastrad                     do not do any dynamic linking of libtool libraries
   3752  1.1  riastrad   -version-info CURRENT[:REVISION[:AGE]]
   3753  1.1  riastrad                     specify library version info [each variable defaults to 0]
   3754  1.1  riastrad   -weak LIBNAME     declare that the target provides the LIBNAME interface
   3755  1.1  riastrad   -Wc,FLAG
   3756  1.1  riastrad   -Xcompiler FLAG   pass linker-specific FLAG directly to the compiler
   3757  1.1  riastrad   -Wl,FLAG
   3758  1.1  riastrad   -Xlinker FLAG     pass linker-specific FLAG directly to the linker
   3759  1.1  riastrad   -XCClinker FLAG   pass link-specific FLAG to the compiler driver (CC)
   3760  1.1  riastrad 
   3761  1.1  riastrad All other options (arguments beginning with '-') are ignored.
   3762  1.1  riastrad 
   3763  1.1  riastrad Every other argument is treated as a filename.  Files ending in '.la' are
   3764  1.1  riastrad treated as uninstalled libtool libraries, other files are standard or library
   3765  1.1  riastrad object files.
   3766  1.1  riastrad 
   3767  1.1  riastrad If the OUTPUT-FILE ends in '.la', then a libtool library is created,
   3768  1.1  riastrad only library objects ('.lo' files) may be specified, and '-rpath' is
   3769  1.1  riastrad required, except when creating a convenience library.
   3770  1.1  riastrad 
   3771  1.1  riastrad If OUTPUT-FILE ends in '.a' or '.lib', then a standard library is created
   3772  1.1  riastrad using 'ar' and 'ranlib', or on Windows using 'lib'.
   3773  1.1  riastrad 
   3774  1.1  riastrad If OUTPUT-FILE ends in '.lo' or '.$objext', then a reloadable object file
   3775  1.1  riastrad is created, otherwise an executable program is created."
   3776  1.1  riastrad         ;;
   3777  1.1  riastrad 
   3778  1.1  riastrad       uninstall)
   3779  1.1  riastrad         $ECHO \
   3780  1.1  riastrad "Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
   3781  1.1  riastrad 
   3782  1.1  riastrad Remove libraries from an installation directory.
   3783  1.1  riastrad 
   3784  1.1  riastrad RM is the name of the program to use to delete files associated with each FILE
   3785  1.1  riastrad (typically '/bin/rm').  RM-OPTIONS are options (such as '-f') to be passed
   3786  1.1  riastrad to RM.
   3787  1.1  riastrad 
   3788  1.1  riastrad If FILE is a libtool library, all the files associated with it are deleted.
   3789  1.1  riastrad Otherwise, only FILE itself is deleted using RM."
   3790  1.1  riastrad         ;;
   3791  1.1  riastrad 
   3792  1.1  riastrad       *)
   3793  1.1  riastrad         func_fatal_help "invalid operation mode '$opt_mode'"
   3794  1.1  riastrad         ;;
   3795  1.1  riastrad     esac
   3796  1.1  riastrad 
   3797  1.1  riastrad     echo
   3798  1.1  riastrad     $ECHO "Try '$progname --help' for more information about other modes."
   3799  1.1  riastrad }
   3800  1.1  riastrad 
   3801  1.1  riastrad # Now that we've collected a possible --mode arg, show help if necessary
   3802  1.1  riastrad if $opt_help; then
   3803  1.1  riastrad   if test : = "$opt_help"; then
   3804  1.1  riastrad     func_mode_help
   3805  1.1  riastrad   else
   3806  1.1  riastrad     {
   3807  1.1  riastrad       func_help noexit
   3808  1.1  riastrad       for opt_mode in compile link execute install finish uninstall clean; do
   3809  1.1  riastrad 	func_mode_help
   3810  1.1  riastrad       done
   3811  1.1  riastrad     } | $SED -n '1p; 2,$s/^Usage:/  or: /p'
   3812  1.1  riastrad     {
   3813  1.1  riastrad       func_help noexit
   3814  1.1  riastrad       for opt_mode in compile link execute install finish uninstall clean; do
   3815  1.1  riastrad 	echo
   3816  1.1  riastrad 	func_mode_help
   3817  1.1  riastrad       done
   3818  1.1  riastrad     } |
   3819  1.1  riastrad     $SED '1d
   3820  1.1  riastrad       /^When reporting/,/^Report/{
   3821  1.1  riastrad 	H
   3822  1.1  riastrad 	d
   3823  1.1  riastrad       }
   3824  1.1  riastrad       $x
   3825  1.1  riastrad       /information about other modes/d
   3826  1.1  riastrad       /more detailed .*MODE/d
   3827  1.1  riastrad       s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/'
   3828  1.1  riastrad   fi
   3829  1.1  riastrad   exit $?
   3830  1.1  riastrad fi
   3831  1.1  riastrad 
   3832  1.1  riastrad 
   3833  1.1  riastrad # func_mode_execute arg...
   3834  1.1  riastrad func_mode_execute ()
   3835  1.1  riastrad {
   3836  1.1  riastrad     $debug_cmd
   3837  1.1  riastrad 
   3838  1.1  riastrad     # The first argument is the command name.
   3839  1.1  riastrad     cmd=$nonopt
   3840  1.1  riastrad     test -z "$cmd" && \
   3841  1.1  riastrad       func_fatal_help "you must specify a COMMAND"
   3842  1.1  riastrad 
   3843  1.1  riastrad     # Handle -dlopen flags immediately.
   3844  1.1  riastrad     for file in $opt_dlopen; do
   3845  1.1  riastrad       test -f "$file" \
   3846  1.1  riastrad 	|| func_fatal_help "'$file' is not a file"
   3847  1.1  riastrad 
   3848  1.1  riastrad       dir=
   3849  1.1  riastrad       case $file in
   3850  1.1  riastrad       *.la)
   3851  1.1  riastrad 	func_resolve_sysroot "$file"
   3852  1.1  riastrad 	file=$func_resolve_sysroot_result
   3853  1.1  riastrad 
   3854  1.1  riastrad 	# Check to see that this really is a libtool archive.
   3855  1.1  riastrad 	func_lalib_unsafe_p "$file" \
   3856  1.1  riastrad 	  || func_fatal_help "'$lib' is not a valid libtool archive"
   3857  1.1  riastrad 
   3858  1.1  riastrad 	# Read the libtool library.
   3859  1.1  riastrad 	dlname=
   3860  1.1  riastrad 	library_names=
   3861  1.1  riastrad 	func_source "$file"
   3862  1.1  riastrad 
   3863  1.1  riastrad 	# Skip this library if it cannot be dlopened.
   3864  1.1  riastrad 	if test -z "$dlname"; then
   3865  1.1  riastrad 	  # Warn if it was a shared library.
   3866  1.1  riastrad 	  test -n "$library_names" && \
   3867  1.1  riastrad 	    func_warning "'$file' was not linked with '-export-dynamic'"
   3868  1.1  riastrad 	  continue
   3869  1.1  riastrad 	fi
   3870  1.1  riastrad 
   3871  1.1  riastrad 	func_dirname "$file" "" "."
   3872  1.1  riastrad 	dir=$func_dirname_result
   3873  1.1  riastrad 
   3874  1.1  riastrad 	if test -f "$dir/$objdir/$dlname"; then
   3875  1.1  riastrad 	  func_append dir "/$objdir"
   3876  1.1  riastrad 	else
   3877  1.1  riastrad 	  if test ! -f "$dir/$dlname"; then
   3878  1.1  riastrad 	    func_fatal_error "cannot find '$dlname' in '$dir' or '$dir/$objdir'"
   3879  1.1  riastrad 	  fi
   3880  1.1  riastrad 	fi
   3881  1.1  riastrad 	;;
   3882  1.1  riastrad 
   3883  1.1  riastrad       *.lo)
   3884  1.1  riastrad 	# Just add the directory containing the .lo file.
   3885  1.1  riastrad 	func_dirname "$file" "" "."
   3886  1.1  riastrad 	dir=$func_dirname_result
   3887  1.1  riastrad 	;;
   3888  1.1  riastrad 
   3889  1.1  riastrad       *)
   3890  1.1  riastrad 	func_warning "'-dlopen' is ignored for non-libtool libraries and objects"
   3891  1.1  riastrad 	continue
   3892  1.1  riastrad 	;;
   3893  1.1  riastrad       esac
   3894  1.1  riastrad 
   3895  1.1  riastrad       # Get the absolute pathname.
   3896  1.1  riastrad       absdir=`cd "$dir" && pwd`
   3897  1.1  riastrad       test -n "$absdir" && dir=$absdir
   3898  1.1  riastrad 
   3899  1.1  riastrad       # Now add the directory to shlibpath_var.
   3900  1.1  riastrad       if eval "test -z \"\$$shlibpath_var\""; then
   3901  1.1  riastrad 	eval "$shlibpath_var=\"\$dir\""
   3902  1.1  riastrad       else
   3903  1.1  riastrad 	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
   3904  1.1  riastrad       fi
   3905  1.1  riastrad     done
   3906  1.1  riastrad 
   3907  1.1  riastrad     # This variable tells wrapper scripts just to set shlibpath_var
   3908  1.1  riastrad     # rather than running their programs.
   3909  1.1  riastrad     libtool_execute_magic=$magic
   3910  1.1  riastrad 
   3911  1.1  riastrad     # Check if any of the arguments is a wrapper script.
   3912  1.1  riastrad     args=
   3913  1.1  riastrad     for file
   3914  1.1  riastrad     do
   3915  1.1  riastrad       case $file in
   3916  1.1  riastrad       -* | *.la | *.lo ) ;;
   3917  1.1  riastrad       *)
   3918  1.1  riastrad 	# Do a test to see if this is really a libtool program.
   3919  1.1  riastrad 	if func_ltwrapper_script_p "$file"; then
   3920  1.1  riastrad 	  func_source "$file"
   3921  1.1  riastrad 	  # Transform arg to wrapped name.
   3922  1.1  riastrad 	  file=$progdir/$program
   3923  1.1  riastrad 	elif func_ltwrapper_executable_p "$file"; then
   3924  1.1  riastrad 	  func_ltwrapper_scriptname "$file"
   3925  1.1  riastrad 	  func_source "$func_ltwrapper_scriptname_result"
   3926  1.1  riastrad 	  # Transform arg to wrapped name.
   3927  1.1  riastrad 	  file=$progdir/$program
   3928  1.1  riastrad 	fi
   3929  1.1  riastrad 	;;
   3930  1.1  riastrad       esac
   3931  1.1  riastrad       # Quote arguments (to preserve shell metacharacters).
   3932  1.1  riastrad       func_append_quoted args "$file"
   3933  1.1  riastrad     done
   3934  1.1  riastrad 
   3935  1.1  riastrad     if $opt_dry_run; then
   3936  1.1  riastrad       # Display what would be done.
   3937  1.1  riastrad       if test -n "$shlibpath_var"; then
   3938  1.1  riastrad 	eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
   3939  1.1  riastrad 	echo "export $shlibpath_var"
   3940  1.1  riastrad       fi
   3941  1.1  riastrad       $ECHO "$cmd$args"
   3942  1.1  riastrad       exit $EXIT_SUCCESS
   3943  1.1  riastrad     else
   3944  1.1  riastrad       if test -n "$shlibpath_var"; then
   3945  1.1  riastrad 	# Export the shlibpath_var.
   3946  1.1  riastrad 	eval "export $shlibpath_var"
   3947  1.1  riastrad       fi
   3948  1.1  riastrad 
   3949  1.1  riastrad       # Restore saved environment variables
   3950  1.1  riastrad       for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
   3951  1.1  riastrad       do
   3952  1.1  riastrad 	eval "if test \"\${save_$lt_var+set}\" = set; then
   3953  1.1  riastrad                 $lt_var=\$save_$lt_var; export $lt_var
   3954  1.1  riastrad 	      else
   3955  1.1  riastrad 		$lt_unset $lt_var
   3956  1.1  riastrad 	      fi"
   3957  1.1  riastrad       done
   3958  1.1  riastrad 
   3959  1.1  riastrad       # Now prepare to actually exec the command.
   3960  1.1  riastrad       exec_cmd=\$cmd$args
   3961  1.1  riastrad     fi
   3962  1.1  riastrad }
   3963  1.1  riastrad 
   3964  1.1  riastrad test execute = "$opt_mode" && func_mode_execute ${1+"$@"}
   3965  1.1  riastrad 
   3966  1.1  riastrad 
   3967  1.1  riastrad # func_mode_finish arg...
   3968  1.1  riastrad func_mode_finish ()
   3969  1.1  riastrad {
   3970  1.1  riastrad     $debug_cmd
   3971  1.1  riastrad 
   3972  1.1  riastrad     libs=
   3973  1.1  riastrad     libdirs=
   3974  1.1  riastrad     admincmds=
   3975  1.1  riastrad 
   3976  1.1  riastrad     for opt in "$nonopt" ${1+"$@"}
   3977  1.1  riastrad     do
   3978  1.1  riastrad       if test -d "$opt"; then
   3979  1.1  riastrad 	func_append libdirs " $opt"
   3980  1.1  riastrad 
   3981  1.1  riastrad       elif test -f "$opt"; then
   3982  1.1  riastrad 	if func_lalib_unsafe_p "$opt"; then
   3983  1.1  riastrad 	  func_append libs " $opt"
   3984  1.1  riastrad 	else
   3985  1.1  riastrad 	  func_warning "'$opt' is not a valid libtool archive"
   3986  1.1  riastrad 	fi
   3987  1.1  riastrad 
   3988  1.1  riastrad       else
   3989  1.1  riastrad 	func_fatal_error "invalid argument '$opt'"
   3990  1.1  riastrad       fi
   3991  1.1  riastrad     done
   3992  1.1  riastrad 
   3993  1.1  riastrad     if test -n "$libs"; then
   3994  1.1  riastrad       if test -n "$lt_sysroot"; then
   3995  1.1  riastrad         sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"`
   3996  1.1  riastrad         sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;"
   3997  1.1  riastrad       else
   3998  1.1  riastrad         sysroot_cmd=
   3999  1.1  riastrad       fi
   4000  1.1  riastrad 
   4001  1.1  riastrad       # Remove sysroot references
   4002  1.1  riastrad       if $opt_dry_run; then
   4003  1.1  riastrad         for lib in $libs; do
   4004  1.1  riastrad           echo "removing references to $lt_sysroot and '=' prefixes from $lib"
   4005  1.1  riastrad         done
   4006  1.1  riastrad       else
   4007  1.1  riastrad         tmpdir=`func_mktempdir`
   4008  1.1  riastrad         for lib in $libs; do
   4009  1.1  riastrad 	  $SED -e "$sysroot_cmd s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \
   4010  1.1  riastrad 	    > $tmpdir/tmp-la
   4011  1.1  riastrad 	  mv -f $tmpdir/tmp-la $lib
   4012  1.1  riastrad 	done
   4013  1.1  riastrad         ${RM}r "$tmpdir"
   4014  1.1  riastrad       fi
   4015  1.1  riastrad     fi
   4016  1.1  riastrad 
   4017  1.1  riastrad     if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
   4018  1.1  riastrad       for libdir in $libdirs; do
   4019  1.1  riastrad 	if test -n "$finish_cmds"; then
   4020  1.1  riastrad 	  # Do each command in the finish commands.
   4021  1.1  riastrad 	  func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
   4022  1.1  riastrad '"$cmd"'"'
   4023  1.1  riastrad 	fi
   4024  1.1  riastrad 	if test -n "$finish_eval"; then
   4025  1.1  riastrad 	  # Do the single finish_eval.
   4026  1.1  riastrad 	  eval cmds=\"$finish_eval\"
   4027  1.1  riastrad 	  $opt_dry_run || eval "$cmds" || func_append admincmds "
   4028  1.1  riastrad        $cmds"
   4029  1.1  riastrad 	fi
   4030  1.1  riastrad       done
   4031  1.1  riastrad     fi
   4032  1.1  riastrad 
   4033  1.1  riastrad     # Exit here if they wanted silent mode.
   4034  1.1  riastrad     $opt_quiet && exit $EXIT_SUCCESS
   4035  1.1  riastrad 
   4036  1.1  riastrad     if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
   4037  1.1  riastrad       echo "----------------------------------------------------------------------"
   4038  1.1  riastrad       echo "Libraries have been installed in:"
   4039  1.1  riastrad       for libdir in $libdirs; do
   4040  1.1  riastrad 	$ECHO "   $libdir"
   4041  1.1  riastrad       done
   4042  1.1  riastrad       echo
   4043  1.1  riastrad       echo "If you ever happen to want to link against installed libraries"
   4044  1.1  riastrad       echo "in a given directory, LIBDIR, you must either use libtool, and"
   4045  1.1  riastrad       echo "specify the full pathname of the library, or use the '-LLIBDIR'"
   4046  1.1  riastrad       echo "flag during linking and do at least one of the following:"
   4047  1.1  riastrad       if test -n "$shlibpath_var"; then
   4048  1.1  riastrad 	echo "   - add LIBDIR to the '$shlibpath_var' environment variable"
   4049  1.1  riastrad 	echo "     during execution"
   4050  1.1  riastrad       fi
   4051  1.1  riastrad       if test -n "$runpath_var"; then
   4052  1.1  riastrad 	echo "   - add LIBDIR to the '$runpath_var' environment variable"
   4053  1.1  riastrad 	echo "     during linking"
   4054  1.1  riastrad       fi
   4055  1.1  riastrad       if test -n "$hardcode_libdir_flag_spec"; then
   4056  1.1  riastrad 	libdir=LIBDIR
   4057  1.1  riastrad 	eval flag=\"$hardcode_libdir_flag_spec\"
   4058  1.1  riastrad 
   4059  1.1  riastrad 	$ECHO "   - use the '$flag' linker flag"
   4060  1.1  riastrad       fi
   4061  1.1  riastrad       if test -n "$admincmds"; then
   4062  1.1  riastrad 	$ECHO "   - have your system administrator run these commands:$admincmds"
   4063  1.1  riastrad       fi
   4064  1.1  riastrad       if test -f /etc/ld.so.conf; then
   4065  1.1  riastrad 	echo "   - have your system administrator add LIBDIR to '/etc/ld.so.conf'"
   4066  1.1  riastrad       fi
   4067  1.1  riastrad       echo
   4068  1.1  riastrad 
   4069  1.1  riastrad       echo "See any operating system documentation about shared libraries for"
   4070  1.1  riastrad       case $host in
   4071  1.1  riastrad 	solaris2.[6789]|solaris2.1[0-9])
   4072  1.1  riastrad 	  echo "more information, such as the ld(1), crle(1) and ld.so(8) manual"
   4073  1.1  riastrad 	  echo "pages."
   4074  1.1  riastrad 	  ;;
   4075  1.1  riastrad 	*)
   4076  1.1  riastrad 	  echo "more information, such as the ld(1) and ld.so(8) manual pages."
   4077  1.1  riastrad 	  ;;
   4078  1.1  riastrad       esac
   4079  1.1  riastrad       echo "----------------------------------------------------------------------"
   4080  1.1  riastrad     fi
   4081  1.1  riastrad     exit $EXIT_SUCCESS
   4082  1.1  riastrad }
   4083  1.1  riastrad 
   4084  1.1  riastrad test finish = "$opt_mode" && func_mode_finish ${1+"$@"}
   4085  1.1  riastrad 
   4086  1.1  riastrad 
   4087  1.1  riastrad # func_mode_install arg...
   4088  1.1  riastrad func_mode_install ()
   4089  1.1  riastrad {
   4090  1.1  riastrad     $debug_cmd
   4091  1.1  riastrad 
   4092  1.1  riastrad     # There may be an optional sh(1) argument at the beginning of
   4093  1.1  riastrad     # install_prog (especially on Windows NT).
   4094  1.1  riastrad     if test "$SHELL" = "$nonopt" || test /bin/sh = "$nonopt" ||
   4095  1.1  riastrad        # Allow the use of GNU shtool's install command.
   4096  1.1  riastrad        case $nonopt in *shtool*) :;; *) false;; esac
   4097  1.1  riastrad     then
   4098  1.1  riastrad       # Aesthetically quote it.
   4099  1.1  riastrad       func_quote_for_eval "$nonopt"
   4100  1.1  riastrad       install_prog="$func_quote_for_eval_result "
   4101  1.1  riastrad       arg=$1
   4102  1.1  riastrad       shift
   4103  1.1  riastrad     else
   4104  1.1  riastrad       install_prog=
   4105  1.1  riastrad       arg=$nonopt
   4106  1.1  riastrad     fi
   4107  1.1  riastrad 
   4108  1.1  riastrad     # The real first argument should be the name of the installation program.
   4109  1.1  riastrad     # Aesthetically quote it.
   4110  1.1  riastrad     func_quote_for_eval "$arg"
   4111  1.1  riastrad     func_append install_prog "$func_quote_for_eval_result"
   4112  1.1  riastrad     install_shared_prog=$install_prog
   4113  1.1  riastrad     case " $install_prog " in
   4114  1.1  riastrad       *[\\\ /]cp\ *) install_cp=: ;;
   4115  1.1  riastrad       *) install_cp=false ;;
   4116  1.1  riastrad     esac
   4117  1.1  riastrad 
   4118  1.1  riastrad     # We need to accept at least all the BSD install flags.
   4119  1.1  riastrad     dest=
   4120  1.1  riastrad     files=
   4121  1.1  riastrad     opts=
   4122  1.1  riastrad     prev=
   4123  1.1  riastrad     install_type=
   4124  1.1  riastrad     isdir=false
   4125  1.1  riastrad     stripme=
   4126  1.1  riastrad     no_mode=:
   4127  1.1  riastrad     for arg
   4128  1.1  riastrad     do
   4129  1.1  riastrad       arg2=
   4130  1.1  riastrad       if test -n "$dest"; then
   4131  1.1  riastrad 	func_append files " $dest"
   4132  1.1  riastrad 	dest=$arg
   4133  1.1  riastrad 	continue
   4134  1.1  riastrad       fi
   4135  1.1  riastrad 
   4136  1.1  riastrad       case $arg in
   4137  1.1  riastrad       -d) isdir=: ;;
   4138  1.1  riastrad       -f)
   4139  1.1  riastrad 	if $install_cp; then :; else
   4140  1.1  riastrad 	  prev=$arg
   4141  1.1  riastrad 	fi
   4142  1.1  riastrad 	;;
   4143  1.1  riastrad       -g | -m | -o)
   4144  1.1  riastrad 	prev=$arg
   4145  1.1  riastrad 	;;
   4146  1.1  riastrad       -s)
   4147  1.1  riastrad 	stripme=" -s"
   4148  1.1  riastrad 	continue
   4149  1.1  riastrad 	;;
   4150  1.1  riastrad       -*)
   4151  1.1  riastrad 	;;
   4152  1.1  riastrad       *)
   4153  1.1  riastrad 	# If the previous option needed an argument, then skip it.
   4154  1.1  riastrad 	if test -n "$prev"; then
   4155  1.1  riastrad 	  if test X-m = "X$prev" && test -n "$install_override_mode"; then
   4156  1.1  riastrad 	    arg2=$install_override_mode
   4157  1.1  riastrad 	    no_mode=false
   4158  1.1  riastrad 	  fi
   4159  1.1  riastrad 	  prev=
   4160  1.1  riastrad 	else
   4161  1.1  riastrad 	  dest=$arg
   4162  1.1  riastrad 	  continue
   4163  1.1  riastrad 	fi
   4164  1.1  riastrad 	;;
   4165  1.1  riastrad       esac
   4166  1.1  riastrad 
   4167  1.1  riastrad       # Aesthetically quote the argument.
   4168  1.1  riastrad       func_quote_for_eval "$arg"
   4169  1.1  riastrad       func_append install_prog " $func_quote_for_eval_result"
   4170  1.1  riastrad       if test -n "$arg2"; then
   4171  1.1  riastrad 	func_quote_for_eval "$arg2"
   4172  1.1  riastrad       fi
   4173  1.1  riastrad       func_append install_shared_prog " $func_quote_for_eval_result"
   4174  1.1  riastrad     done
   4175  1.1  riastrad 
   4176  1.1  riastrad     test -z "$install_prog" && \
   4177  1.1  riastrad       func_fatal_help "you must specify an install program"
   4178  1.1  riastrad 
   4179  1.1  riastrad     test -n "$prev" && \
   4180  1.1  riastrad       func_fatal_help "the '$prev' option requires an argument"
   4181  1.1  riastrad 
   4182  1.1  riastrad     if test -n "$install_override_mode" && $no_mode; then
   4183  1.1  riastrad       if $install_cp; then :; else
   4184  1.1  riastrad 	func_quote_for_eval "$install_override_mode"
   4185  1.1  riastrad 	func_append install_shared_prog " -m $func_quote_for_eval_result"
   4186  1.1  riastrad       fi
   4187  1.1  riastrad     fi
   4188  1.1  riastrad 
   4189  1.1  riastrad     if test -z "$files"; then
   4190  1.1  riastrad       if test -z "$dest"; then
   4191  1.1  riastrad 	func_fatal_help "no file or destination specified"
   4192  1.1  riastrad       else
   4193  1.1  riastrad 	func_fatal_help "you must specify a destination"
   4194  1.1  riastrad       fi
   4195  1.1  riastrad     fi
   4196  1.1  riastrad 
   4197  1.1  riastrad     # Strip any trailing slash from the destination.
   4198  1.1  riastrad     func_stripname '' '/' "$dest"
   4199  1.1  riastrad     dest=$func_stripname_result
   4200  1.1  riastrad 
   4201  1.1  riastrad     # Check to see that the destination is a directory.
   4202  1.1  riastrad     test -d "$dest" && isdir=:
   4203  1.1  riastrad     if $isdir; then
   4204  1.1  riastrad       destdir=$dest
   4205  1.1  riastrad       destname=
   4206  1.1  riastrad     else
   4207  1.1  riastrad       func_dirname_and_basename "$dest" "" "."
   4208  1.1  riastrad       destdir=$func_dirname_result
   4209  1.1  riastrad       destname=$func_basename_result
   4210  1.1  riastrad 
   4211  1.1  riastrad       # Not a directory, so check to see that there is only one file specified.
   4212  1.1  riastrad       set dummy $files; shift
   4213  1.1  riastrad       test "$#" -gt 1 && \
   4214  1.1  riastrad 	func_fatal_help "'$dest' is not a directory"
   4215  1.1  riastrad     fi
   4216  1.1  riastrad     case $destdir in
   4217  1.1  riastrad     [\\/]* | [A-Za-z]:[\\/]*) ;;
   4218  1.1  riastrad     *)
   4219  1.1  riastrad       for file in $files; do
   4220  1.1  riastrad 	case $file in
   4221  1.1  riastrad 	*.lo) ;;
   4222  1.1  riastrad 	*)
   4223  1.1  riastrad 	  func_fatal_help "'$destdir' must be an absolute directory name"
   4224  1.1  riastrad 	  ;;
   4225  1.1  riastrad 	esac
   4226  1.1  riastrad       done
   4227  1.1  riastrad       ;;
   4228  1.1  riastrad     esac
   4229  1.1  riastrad 
   4230  1.1  riastrad     # This variable tells wrapper scripts just to set variables rather
   4231  1.1  riastrad     # than running their programs.
   4232  1.1  riastrad     libtool_install_magic=$magic
   4233  1.1  riastrad 
   4234  1.1  riastrad     staticlibs=
   4235  1.1  riastrad     future_libdirs=
   4236  1.1  riastrad     current_libdirs=
   4237  1.1  riastrad     for file in $files; do
   4238  1.1  riastrad 
   4239  1.1  riastrad       # Do each installation.
   4240  1.1  riastrad       case $file in
   4241  1.1  riastrad       *.$libext)
   4242  1.1  riastrad 	# Do the static libraries later.
   4243  1.1  riastrad 	func_append staticlibs " $file"
   4244  1.1  riastrad 	;;
   4245  1.1  riastrad 
   4246  1.1  riastrad       *.la)
   4247  1.1  riastrad 	func_resolve_sysroot "$file"
   4248  1.1  riastrad 	file=$func_resolve_sysroot_result
   4249  1.1  riastrad 
   4250  1.1  riastrad 	# Check to see that this really is a libtool archive.
   4251  1.1  riastrad 	func_lalib_unsafe_p "$file" \
   4252  1.1  riastrad 	  || func_fatal_help "'$file' is not a valid libtool archive"
   4253  1.1  riastrad 
   4254  1.1  riastrad 	library_names=
   4255  1.1  riastrad 	old_library=
   4256  1.1  riastrad 	relink_command=
   4257  1.1  riastrad 	func_source "$file"
   4258  1.1  riastrad 
   4259  1.1  riastrad 	# Add the libdir to current_libdirs if it is the destination.
   4260  1.1  riastrad 	if test "X$destdir" = "X$libdir"; then
   4261  1.1  riastrad 	  case "$current_libdirs " in
   4262  1.1  riastrad 	  *" $libdir "*) ;;
   4263  1.1  riastrad 	  *) func_append current_libdirs " $libdir" ;;
   4264  1.1  riastrad 	  esac
   4265  1.1  riastrad 	else
   4266  1.1  riastrad 	  # Note the libdir as a future libdir.
   4267  1.1  riastrad 	  case "$future_libdirs " in
   4268  1.1  riastrad 	  *" $libdir "*) ;;
   4269  1.1  riastrad 	  *) func_append future_libdirs " $libdir" ;;
   4270  1.1  riastrad 	  esac
   4271  1.1  riastrad 	fi
   4272  1.1  riastrad 
   4273  1.1  riastrad 	func_dirname "$file" "/" ""
   4274  1.1  riastrad 	dir=$func_dirname_result
   4275  1.1  riastrad 	func_append dir "$objdir"
   4276  1.1  riastrad 
   4277  1.1  riastrad 	if test -n "$relink_command"; then
   4278  1.1  riastrad 	  # Determine the prefix the user has applied to our future dir.
   4279  1.1  riastrad 	  inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"`
   4280  1.1  riastrad 
   4281  1.1  riastrad 	  # Don't allow the user to place us outside of our expected
   4282  1.1  riastrad 	  # location b/c this prevents finding dependent libraries that
   4283  1.1  riastrad 	  # are installed to the same prefix.
   4284  1.1  riastrad 	  # At present, this check doesn't affect windows .dll's that
   4285  1.1  riastrad 	  # are installed into $libdir/../bin (currently, that works fine)
   4286  1.1  riastrad 	  # but it's something to keep an eye on.
   4287  1.1  riastrad 	  test "$inst_prefix_dir" = "$destdir" && \
   4288  1.1  riastrad 	    func_fatal_error "error: cannot install '$file' to a directory not ending in $libdir"
   4289  1.1  riastrad 
   4290  1.1  riastrad 	  if test -n "$inst_prefix_dir"; then
   4291  1.1  riastrad 	    # Stick the inst_prefix_dir data into the link command.
   4292  1.1  riastrad 	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
   4293  1.1  riastrad 	  else
   4294  1.1  riastrad 	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
   4295  1.1  riastrad 	  fi
   4296  1.1  riastrad 
   4297  1.1  riastrad 	  func_warning "relinking '$file'"
   4298  1.1  riastrad 	  func_show_eval "$relink_command" \
   4299  1.1  riastrad 	    'func_fatal_error "error: relink '\''$file'\'' with the above command before installing it"'
   4300  1.1  riastrad 	fi
   4301  1.1  riastrad 
   4302  1.1  riastrad 	# See the names of the shared library.
   4303  1.1  riastrad 	set dummy $library_names; shift
   4304  1.1  riastrad 	if test -n "$1"; then
   4305  1.1  riastrad 	  realname=$1
   4306  1.1  riastrad 	  shift
   4307  1.1  riastrad 
   4308  1.1  riastrad 	  srcname=$realname
   4309  1.1  riastrad 	  test -n "$relink_command" && srcname=${realname}T
   4310  1.1  riastrad 
   4311  1.1  riastrad 	  # Install the shared library and build the symlinks.
   4312  1.1  riastrad 	  func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \
   4313  1.1  riastrad 	      'exit $?'
   4314  1.1  riastrad 	  tstripme=$stripme
   4315  1.1  riastrad 	  case $host_os in
   4316  1.1  riastrad 	  cygwin* | mingw* | pw32* | cegcc*)
   4317  1.1  riastrad 	    case $realname in
   4318  1.1  riastrad 	    *.dll.a)
   4319  1.1  riastrad 	      tstripme=
   4320  1.1  riastrad 	      ;;
   4321  1.1  riastrad 	    esac
   4322  1.1  riastrad 	    ;;
   4323  1.1  riastrad 	  os2*)
   4324  1.1  riastrad 	    case $realname in
   4325  1.1  riastrad 	    *_dll.a)
   4326  1.1  riastrad 	      tstripme=
   4327  1.1  riastrad 	      ;;
   4328  1.1  riastrad 	    esac
   4329  1.1  riastrad 	    ;;
   4330  1.1  riastrad 	  esac
   4331  1.1  riastrad 	  if test -n "$tstripme" && test -n "$striplib"; then
   4332  1.1  riastrad 	    func_show_eval "$striplib $destdir/$realname" 'exit $?'
   4333  1.1  riastrad 	  fi
   4334  1.1  riastrad 
   4335  1.1  riastrad 	  if test "$#" -gt 0; then
   4336  1.1  riastrad 	    # Delete the old symlinks, and create new ones.
   4337  1.1  riastrad 	    # Try 'ln -sf' first, because the 'ln' binary might depend on
   4338  1.1  riastrad 	    # the symlink we replace!  Solaris /bin/ln does not understand -f,
   4339  1.1  riastrad 	    # so we also need to try rm && ln -s.
   4340  1.1  riastrad 	    for linkname
   4341  1.1  riastrad 	    do
   4342  1.1  riastrad 	      test "$linkname" != "$realname" \
   4343  1.1  riastrad 		&& func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
   4344  1.1  riastrad 	    done
   4345  1.1  riastrad 	  fi
   4346  1.1  riastrad 
   4347  1.1  riastrad 	  # Do each command in the postinstall commands.
   4348  1.1  riastrad 	  lib=$destdir/$realname
   4349  1.1  riastrad 	  func_execute_cmds "$postinstall_cmds" 'exit $?'
   4350  1.1  riastrad 	fi
   4351  1.1  riastrad 
   4352  1.1  riastrad 	# Install the pseudo-library for information purposes.
   4353  1.1  riastrad 	func_basename "$file"
   4354  1.1  riastrad 	name=$func_basename_result
   4355  1.1  riastrad 	instname=$dir/${name}i
   4356  1.1  riastrad 	func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
   4357  1.1  riastrad 
   4358  1.1  riastrad 	# Maybe install the static library, too.
   4359  1.1  riastrad 	test -n "$old_library" && func_append staticlibs " $dir/$old_library"
   4360  1.1  riastrad 	;;
   4361  1.1  riastrad 
   4362  1.1  riastrad       *.lo)
   4363  1.1  riastrad 	# Install (i.e. copy) a libtool object.
   4364  1.1  riastrad 
   4365  1.1  riastrad 	# Figure out destination file name, if it wasn't already specified.
   4366  1.1  riastrad 	if test -n "$destname"; then
   4367  1.1  riastrad 	  destfile=$destdir/$destname
   4368  1.1  riastrad 	else
   4369  1.1  riastrad 	  func_basename "$file"
   4370  1.1  riastrad 	  destfile=$func_basename_result
   4371  1.1  riastrad 	  destfile=$destdir/$destfile
   4372  1.1  riastrad 	fi
   4373  1.1  riastrad 
   4374  1.1  riastrad 	# Deduce the name of the destination old-style object file.
   4375  1.1  riastrad 	case $destfile in
   4376  1.1  riastrad 	*.lo)
   4377  1.1  riastrad 	  func_lo2o "$destfile"
   4378  1.1  riastrad 	  staticdest=$func_lo2o_result
   4379  1.1  riastrad 	  ;;
   4380  1.1  riastrad 	*.$objext)
   4381  1.1  riastrad 	  staticdest=$destfile
   4382  1.1  riastrad 	  destfile=
   4383  1.1  riastrad 	  ;;
   4384  1.1  riastrad 	*)
   4385  1.1  riastrad 	  func_fatal_help "cannot copy a libtool object to '$destfile'"
   4386  1.1  riastrad 	  ;;
   4387  1.1  riastrad 	esac
   4388  1.1  riastrad 
   4389  1.1  riastrad 	# Install the libtool object if requested.
   4390  1.1  riastrad 	test -n "$destfile" && \
   4391  1.1  riastrad 	  func_show_eval "$install_prog $file $destfile" 'exit $?'
   4392  1.1  riastrad 
   4393  1.1  riastrad 	# Install the old object if enabled.
   4394  1.1  riastrad 	if test yes = "$build_old_libs"; then
   4395  1.1  riastrad 	  # Deduce the name of the old-style object file.
   4396  1.1  riastrad 	  func_lo2o "$file"
   4397  1.1  riastrad 	  staticobj=$func_lo2o_result
   4398  1.1  riastrad 	  func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
   4399  1.1  riastrad 	fi
   4400  1.1  riastrad 	exit $EXIT_SUCCESS
   4401  1.1  riastrad 	;;
   4402  1.1  riastrad 
   4403  1.1  riastrad       *)
   4404  1.1  riastrad 	# Figure out destination file name, if it wasn't already specified.
   4405  1.1  riastrad 	if test -n "$destname"; then
   4406  1.1  riastrad 	  destfile=$destdir/$destname
   4407  1.1  riastrad 	else
   4408  1.1  riastrad 	  func_basename "$file"
   4409  1.1  riastrad 	  destfile=$func_basename_result
   4410  1.1  riastrad 	  destfile=$destdir/$destfile
   4411  1.1  riastrad 	fi
   4412  1.1  riastrad 
   4413  1.1  riastrad 	# If the file is missing, and there is a .exe on the end, strip it
   4414  1.1  riastrad 	# because it is most likely a libtool script we actually want to
   4415  1.1  riastrad 	# install
   4416  1.1  riastrad 	stripped_ext=
   4417  1.1  riastrad 	case $file in
   4418  1.1  riastrad 	  *.exe)
   4419  1.1  riastrad 	    if test ! -f "$file"; then
   4420  1.1  riastrad 	      func_stripname '' '.exe' "$file"
   4421  1.1  riastrad 	      file=$func_stripname_result
   4422  1.1  riastrad 	      stripped_ext=.exe
   4423  1.1  riastrad 	    fi
   4424  1.1  riastrad 	    ;;
   4425  1.1  riastrad 	esac
   4426  1.1  riastrad 
   4427  1.1  riastrad 	# Do a test to see if this is really a libtool program.
   4428  1.1  riastrad 	case $host in
   4429  1.1  riastrad 	*cygwin* | *mingw*)
   4430  1.1  riastrad 	    if func_ltwrapper_executable_p "$file"; then
   4431  1.1  riastrad 	      func_ltwrapper_scriptname "$file"
   4432  1.1  riastrad 	      wrapper=$func_ltwrapper_scriptname_result
   4433  1.1  riastrad 	    else
   4434  1.1  riastrad 	      func_stripname '' '.exe' "$file"
   4435  1.1  riastrad 	      wrapper=$func_stripname_result
   4436  1.1  riastrad 	    fi
   4437  1.1  riastrad 	    ;;
   4438  1.1  riastrad 	*)
   4439  1.1  riastrad 	    wrapper=$file
   4440  1.1  riastrad 	    ;;
   4441  1.1  riastrad 	esac
   4442  1.1  riastrad 	if func_ltwrapper_script_p "$wrapper"; then
   4443  1.1  riastrad 	  notinst_deplibs=
   4444  1.1  riastrad 	  relink_command=
   4445  1.1  riastrad 
   4446  1.1  riastrad 	  func_source "$wrapper"
   4447  1.1  riastrad 
   4448  1.1  riastrad 	  # Check the variables that should have been set.
   4449  1.1  riastrad 	  test -z "$generated_by_libtool_version" && \
   4450  1.1  riastrad 	    func_fatal_error "invalid libtool wrapper script '$wrapper'"
   4451  1.1  riastrad 
   4452  1.1  riastrad 	  finalize=:
   4453  1.1  riastrad 	  for lib in $notinst_deplibs; do
   4454  1.1  riastrad 	    # Check to see that each library is installed.
   4455  1.1  riastrad 	    libdir=
   4456  1.1  riastrad 	    if test -f "$lib"; then
   4457  1.1  riastrad 	      func_source "$lib"
   4458  1.1  riastrad 	    fi
   4459  1.1  riastrad 	    libfile=$libdir/`$ECHO "$lib" | $SED 's%^.*/%%g'`
   4460  1.1  riastrad 	    if test -n "$libdir" && test ! -f "$libfile"; then
   4461  1.1  riastrad 	      func_warning "'$lib' has not been installed in '$libdir'"
   4462  1.1  riastrad 	      finalize=false
   4463  1.1  riastrad 	    fi
   4464  1.1  riastrad 	  done
   4465  1.1  riastrad 
   4466  1.1  riastrad 	  relink_command=
   4467  1.1  riastrad 	  func_source "$wrapper"
   4468  1.1  riastrad 
   4469  1.1  riastrad 	  outputname=
   4470  1.1  riastrad 	  if test no = "$fast_install" && test -n "$relink_command"; then
   4471  1.1  riastrad 	    $opt_dry_run || {
   4472  1.1  riastrad 	      if $finalize; then
   4473  1.1  riastrad 	        tmpdir=`func_mktempdir`
   4474  1.1  riastrad 		func_basename "$file$stripped_ext"
   4475  1.1  riastrad 		file=$func_basename_result
   4476  1.1  riastrad 	        outputname=$tmpdir/$file
   4477  1.1  riastrad 	        # Replace the output file specification.
   4478  1.1  riastrad 	        relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'`
   4479  1.1  riastrad 
   4480  1.1  riastrad 	        $opt_quiet || {
   4481  1.1  riastrad 	          func_quote_for_expand "$relink_command"
   4482  1.1  riastrad 		  eval "func_echo $func_quote_for_expand_result"
   4483  1.1  riastrad 	        }
   4484  1.1  riastrad 	        if eval "$relink_command"; then :
   4485  1.1  riastrad 	          else
   4486  1.1  riastrad 		  func_error "error: relink '$file' with the above command before installing it"
   4487  1.1  riastrad 		  $opt_dry_run || ${RM}r "$tmpdir"
   4488  1.1  riastrad 		  continue
   4489  1.1  riastrad 	        fi
   4490  1.1  riastrad 	        file=$outputname
   4491  1.1  riastrad 	      else
   4492  1.1  riastrad 	        func_warning "cannot relink '$file'"
   4493  1.1  riastrad 	      fi
   4494  1.1  riastrad 	    }
   4495  1.1  riastrad 	  else
   4496  1.1  riastrad 	    # Install the binary that we compiled earlier.
   4497  1.1  riastrad 	    file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"`
   4498  1.1  riastrad 	  fi
   4499  1.1  riastrad 	fi
   4500  1.1  riastrad 
   4501  1.1  riastrad 	# remove .exe since cygwin /usr/bin/install will append another
   4502  1.1  riastrad 	# one anyway
   4503  1.1  riastrad 	case $install_prog,$host in
   4504  1.1  riastrad 	*/usr/bin/install*,*cygwin*)
   4505  1.1  riastrad 	  case $file:$destfile in
   4506  1.1  riastrad 	  *.exe:*.exe)
   4507  1.1  riastrad 	    # this is ok
   4508  1.1  riastrad 	    ;;
   4509  1.1  riastrad 	  *.exe:*)
   4510  1.1  riastrad 	    destfile=$destfile.exe
   4511  1.1  riastrad 	    ;;
   4512  1.1  riastrad 	  *:*.exe)
   4513  1.1  riastrad 	    func_stripname '' '.exe' "$destfile"
   4514  1.1  riastrad 	    destfile=$func_stripname_result
   4515  1.1  riastrad 	    ;;
   4516  1.1  riastrad 	  esac
   4517  1.1  riastrad 	  ;;
   4518  1.1  riastrad 	esac
   4519  1.1  riastrad 	func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
   4520  1.1  riastrad 	$opt_dry_run || if test -n "$outputname"; then
   4521  1.1  riastrad 	  ${RM}r "$tmpdir"
   4522  1.1  riastrad 	fi
   4523  1.1  riastrad 	;;
   4524  1.1  riastrad       esac
   4525  1.1  riastrad     done
   4526  1.1  riastrad 
   4527  1.1  riastrad     for file in $staticlibs; do
   4528  1.1  riastrad       func_basename "$file"
   4529  1.1  riastrad       name=$func_basename_result
   4530  1.1  riastrad 
   4531  1.1  riastrad       # Set up the ranlib parameters.
   4532  1.1  riastrad       oldlib=$destdir/$name
   4533  1.1  riastrad       func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
   4534  1.1  riastrad       tool_oldlib=$func_to_tool_file_result
   4535  1.1  riastrad 
   4536  1.1  riastrad       func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
   4537  1.1  riastrad 
   4538  1.1  riastrad       if test -n "$stripme" && test -n "$old_striplib"; then
   4539  1.1  riastrad 	func_show_eval "$old_striplib $tool_oldlib" 'exit $?'
   4540  1.1  riastrad       fi
   4541  1.1  riastrad 
   4542  1.1  riastrad       # Do each command in the postinstall commands.
   4543  1.1  riastrad       func_execute_cmds "$old_postinstall_cmds" 'exit $?'
   4544  1.1  riastrad     done
   4545  1.1  riastrad 
   4546  1.1  riastrad     test -n "$future_libdirs" && \
   4547  1.1  riastrad       func_warning "remember to run '$progname --finish$future_libdirs'"
   4548  1.1  riastrad 
   4549  1.1  riastrad     if test -n "$current_libdirs"; then
   4550  1.1  riastrad       # Maybe just do a dry run.
   4551  1.1  riastrad       $opt_dry_run && current_libdirs=" -n$current_libdirs"
   4552  1.1  riastrad       exec_cmd='$SHELL "$progpath" $preserve_args --finish$current_libdirs'
   4553  1.1  riastrad     else
   4554  1.1  riastrad       exit $EXIT_SUCCESS
   4555  1.1  riastrad     fi
   4556  1.1  riastrad }
   4557  1.1  riastrad 
   4558  1.1  riastrad test install = "$opt_mode" && func_mode_install ${1+"$@"}
   4559  1.1  riastrad 
   4560  1.1  riastrad 
   4561  1.1  riastrad # func_generate_dlsyms outputname originator pic_p
   4562  1.1  riastrad # Extract symbols from dlprefiles and create ${outputname}S.o with
   4563  1.1  riastrad # a dlpreopen symbol table.
   4564  1.1  riastrad func_generate_dlsyms ()
   4565  1.1  riastrad {
   4566  1.1  riastrad     $debug_cmd
   4567  1.1  riastrad 
   4568  1.1  riastrad     my_outputname=$1
   4569  1.1  riastrad     my_originator=$2
   4570  1.1  riastrad     my_pic_p=${3-false}
   4571  1.1  riastrad     my_prefix=`$ECHO "$my_originator" | $SED 's%[^a-zA-Z0-9]%_%g'`
   4572  1.1  riastrad     my_dlsyms=
   4573  1.1  riastrad 
   4574  1.1  riastrad     if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then
   4575  1.1  riastrad       if test -n "$NM" && test -n "$global_symbol_pipe"; then
   4576  1.1  riastrad 	my_dlsyms=${my_outputname}S.c
   4577  1.1  riastrad       else
   4578  1.1  riastrad 	func_error "not configured to extract global symbols from dlpreopened files"
   4579  1.1  riastrad       fi
   4580  1.1  riastrad     fi
   4581  1.1  riastrad 
   4582  1.1  riastrad     if test -n "$my_dlsyms"; then
   4583  1.1  riastrad       case $my_dlsyms in
   4584  1.1  riastrad       "") ;;
   4585  1.1  riastrad       *.c)
   4586  1.1  riastrad 	# Discover the nlist of each of the dlfiles.
   4587  1.1  riastrad 	nlist=$output_objdir/$my_outputname.nm
   4588  1.1  riastrad 
   4589  1.1  riastrad 	func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
   4590  1.1  riastrad 
   4591  1.1  riastrad 	# Parse the name list into a source file.
   4592  1.1  riastrad 	func_verbose "creating $output_objdir/$my_dlsyms"
   4593  1.1  riastrad 
   4594  1.1  riastrad 	$opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
   4595  1.1  riastrad /* $my_dlsyms - symbol resolution table for '$my_outputname' dlsym emulation. */
   4596  1.1  riastrad /* Generated by $PROGRAM (GNU $PACKAGE) $VERSION */
   4597  1.1  riastrad 
   4598  1.1  riastrad #ifdef __cplusplus
   4599  1.1  riastrad extern \"C\" {
   4600  1.1  riastrad #endif
   4601  1.1  riastrad 
   4602  1.1  riastrad #if defined __GNUC__ && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4))
   4603  1.1  riastrad #pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
   4604  1.1  riastrad #endif
   4605  1.1  riastrad 
   4606  1.1  riastrad /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
   4607  1.1  riastrad #if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE
   4608  1.1  riastrad /* DATA imports from DLLs on WIN32 can't be const, because runtime
   4609  1.1  riastrad    relocations are performed -- see ld's documentation on pseudo-relocs.  */
   4610  1.1  riastrad # define LT_DLSYM_CONST
   4611  1.1  riastrad #elif defined __osf__
   4612  1.1  riastrad /* This system does not cope well with relocations in const data.  */
   4613  1.1  riastrad # define LT_DLSYM_CONST
   4614  1.1  riastrad #else
   4615  1.1  riastrad # define LT_DLSYM_CONST const
   4616  1.1  riastrad #endif
   4617  1.1  riastrad 
   4618  1.1  riastrad #define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0)
   4619  1.1  riastrad 
   4620  1.1  riastrad /* External symbol declarations for the compiler. */\
   4621  1.1  riastrad "
   4622  1.1  riastrad 
   4623  1.1  riastrad 	if test yes = "$dlself"; then
   4624  1.1  riastrad 	  func_verbose "generating symbol list for '$output'"
   4625  1.1  riastrad 
   4626  1.1  riastrad 	  $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
   4627  1.1  riastrad 
   4628  1.1  riastrad 	  # Add our own program objects to the symbol list.
   4629  1.1  riastrad 	  progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP`
   4630  1.1  riastrad 	  for progfile in $progfiles; do
   4631  1.1  riastrad 	    func_to_tool_file "$progfile" func_convert_file_msys_to_w32
   4632  1.1  riastrad 	    func_verbose "extracting global C symbols from '$func_to_tool_file_result'"
   4633  1.1  riastrad 	    $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'"
   4634  1.1  riastrad 	  done
   4635  1.1  riastrad 
   4636  1.1  riastrad 	  if test -n "$exclude_expsyms"; then
   4637  1.1  riastrad 	    $opt_dry_run || {
   4638  1.1  riastrad 	      eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
   4639  1.1  riastrad 	      eval '$MV "$nlist"T "$nlist"'
   4640  1.1  riastrad 	    }
   4641  1.1  riastrad 	  fi
   4642  1.1  riastrad 
   4643  1.1  riastrad 	  if test -n "$export_symbols_regex"; then
   4644  1.1  riastrad 	    $opt_dry_run || {
   4645  1.1  riastrad 	      eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
   4646  1.1  riastrad 	      eval '$MV "$nlist"T "$nlist"'
   4647  1.1  riastrad 	    }
   4648  1.1  riastrad 	  fi
   4649  1.1  riastrad 
   4650  1.1  riastrad 	  # Prepare the list of exported symbols
   4651  1.1  riastrad 	  if test -z "$export_symbols"; then
   4652  1.1  riastrad 	    export_symbols=$output_objdir/$outputname.exp
   4653  1.1  riastrad 	    $opt_dry_run || {
   4654  1.1  riastrad 	      $RM $export_symbols
   4655  1.1  riastrad 	      eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
   4656  1.1  riastrad 	      case $host in
   4657  1.1  riastrad 	      *cygwin* | *mingw* | *cegcc* )
   4658  1.1  riastrad                 eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
   4659  1.1  riastrad                 eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
   4660  1.1  riastrad 	        ;;
   4661  1.1  riastrad 	      esac
   4662  1.1  riastrad 	    }
   4663  1.1  riastrad 	  else
   4664  1.1  riastrad 	    $opt_dry_run || {
   4665  1.1  riastrad 	      eval "$SED -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
   4666  1.1  riastrad 	      eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
   4667  1.1  riastrad 	      eval '$MV "$nlist"T "$nlist"'
   4668  1.1  riastrad 	      case $host in
   4669  1.1  riastrad 	        *cygwin* | *mingw* | *cegcc* )
   4670  1.1  riastrad 	          eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
   4671  1.1  riastrad 	          eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
   4672  1.1  riastrad 	          ;;
   4673  1.1  riastrad 	      esac
   4674  1.1  riastrad 	    }
   4675  1.1  riastrad 	  fi
   4676  1.1  riastrad 	fi
   4677  1.1  riastrad 
   4678  1.1  riastrad 	for dlprefile in $dlprefiles; do
   4679  1.1  riastrad 	  func_verbose "extracting global C symbols from '$dlprefile'"
   4680  1.1  riastrad 	  func_basename "$dlprefile"
   4681  1.1  riastrad 	  name=$func_basename_result
   4682  1.1  riastrad           case $host in
   4683  1.1  riastrad 	    *cygwin* | *mingw* | *cegcc* )
   4684  1.1  riastrad 	      # if an import library, we need to obtain dlname
   4685  1.1  riastrad 	      if func_win32_import_lib_p "$dlprefile"; then
   4686  1.1  riastrad 	        func_tr_sh "$dlprefile"
   4687  1.1  riastrad 	        eval "curr_lafile=\$libfile_$func_tr_sh_result"
   4688  1.1  riastrad 	        dlprefile_dlbasename=
   4689  1.1  riastrad 	        if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then
   4690  1.1  riastrad 	          # Use subshell, to avoid clobbering current variable values
   4691  1.1  riastrad 	          dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"`
   4692  1.1  riastrad 	          if test -n "$dlprefile_dlname"; then
   4693  1.1  riastrad 	            func_basename "$dlprefile_dlname"
   4694  1.1  riastrad 	            dlprefile_dlbasename=$func_basename_result
   4695  1.1  riastrad 	          else
   4696  1.1  riastrad 	            # no lafile. user explicitly requested -dlpreopen <import library>.
   4697  1.1  riastrad 	            $sharedlib_from_linklib_cmd "$dlprefile"
   4698  1.1  riastrad 	            dlprefile_dlbasename=$sharedlib_from_linklib_result
   4699  1.1  riastrad 	          fi
   4700  1.1  riastrad 	        fi
   4701  1.1  riastrad 	        $opt_dry_run || {
   4702  1.1  riastrad 	          if test -n "$dlprefile_dlbasename"; then
   4703  1.1  riastrad 	            eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"'
   4704  1.1  riastrad 	          else
   4705  1.1  riastrad 	            func_warning "Could not compute DLL name from $name"
   4706  1.1  riastrad 	            eval '$ECHO ": $name " >> "$nlist"'
   4707  1.1  riastrad 	          fi
   4708  1.1  riastrad 	          func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
   4709  1.1  riastrad 	          eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe |
   4710  1.1  riastrad 	            $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'"
   4711  1.1  riastrad 	        }
   4712  1.1  riastrad 	      else # not an import lib
   4713  1.1  riastrad 	        $opt_dry_run || {
   4714  1.1  riastrad 	          eval '$ECHO ": $name " >> "$nlist"'
   4715  1.1  riastrad 	          func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
   4716  1.1  riastrad 	          eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
   4717  1.1  riastrad 	        }
   4718  1.1  riastrad 	      fi
   4719  1.1  riastrad 	    ;;
   4720  1.1  riastrad 	    *)
   4721  1.1  riastrad 	      $opt_dry_run || {
   4722  1.1  riastrad 	        eval '$ECHO ": $name " >> "$nlist"'
   4723  1.1  riastrad 	        func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
   4724  1.1  riastrad 	        eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
   4725  1.1  riastrad 	      }
   4726  1.1  riastrad 	    ;;
   4727  1.1  riastrad           esac
   4728  1.1  riastrad 	done
   4729  1.1  riastrad 
   4730  1.1  riastrad 	$opt_dry_run || {
   4731  1.1  riastrad 	  # Make sure we have at least an empty file.
   4732  1.1  riastrad 	  test -f "$nlist" || : > "$nlist"
   4733  1.1  riastrad 
   4734  1.1  riastrad 	  if test -n "$exclude_expsyms"; then
   4735  1.1  riastrad 	    $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
   4736  1.1  riastrad 	    $MV "$nlist"T "$nlist"
   4737  1.1  riastrad 	  fi
   4738  1.1  riastrad 
   4739  1.1  riastrad 	  # Try sorting and uniquifying the output.
   4740  1.1  riastrad 	  if $GREP -v "^: " < "$nlist" |
   4741  1.1  riastrad 	      if sort -k 3 </dev/null >/dev/null 2>&1; then
   4742  1.1  riastrad 		sort -k 3
   4743  1.1  riastrad 	      else
   4744  1.1  riastrad 		sort +2
   4745  1.1  riastrad 	      fi |
   4746  1.1  riastrad 	      uniq > "$nlist"S; then
   4747  1.1  riastrad 	    :
   4748  1.1  riastrad 	  else
   4749  1.1  riastrad 	    $GREP -v "^: " < "$nlist" > "$nlist"S
   4750  1.1  riastrad 	  fi
   4751  1.1  riastrad 
   4752  1.1  riastrad 	  if test -f "$nlist"S; then
   4753  1.1  riastrad 	    eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
   4754  1.1  riastrad 	  else
   4755  1.1  riastrad 	    echo '/* NONE */' >> "$output_objdir/$my_dlsyms"
   4756  1.1  riastrad 	  fi
   4757  1.1  riastrad 
   4758  1.1  riastrad 	  func_show_eval '$RM "${nlist}I"'
   4759  1.1  riastrad 	  if test -n "$global_symbol_to_import"; then
   4760  1.1  riastrad 	    eval "$global_symbol_to_import"' < "$nlist"S > "$nlist"I'
   4761  1.1  riastrad 	  fi
   4762  1.1  riastrad 
   4763  1.1  riastrad 	  echo >> "$output_objdir/$my_dlsyms" "\
   4764  1.1  riastrad 
   4765  1.1  riastrad /* The mapping between symbol names and symbols.  */
   4766  1.1  riastrad typedef struct {
   4767  1.1  riastrad   const char *name;
   4768  1.1  riastrad   void *address;
   4769  1.1  riastrad } lt_dlsymlist;
   4770  1.1  riastrad extern LT_DLSYM_CONST lt_dlsymlist
   4771  1.1  riastrad lt_${my_prefix}_LTX_preloaded_symbols[];\
   4772  1.1  riastrad "
   4773  1.1  riastrad 
   4774  1.1  riastrad 	  if test -s "$nlist"I; then
   4775  1.1  riastrad 	    echo >> "$output_objdir/$my_dlsyms" "\
   4776  1.1  riastrad static void lt_syminit(void)
   4777  1.1  riastrad {
   4778  1.1  riastrad   LT_DLSYM_CONST lt_dlsymlist *symbol = lt_${my_prefix}_LTX_preloaded_symbols;
   4779  1.1  riastrad   for (; symbol->name; ++symbol)
   4780  1.1  riastrad     {"
   4781  1.1  riastrad 	    $SED 's/.*/      if (STREQ (symbol->name, \"&\")) symbol->address = (void *) \&&;/' < "$nlist"I >> "$output_objdir/$my_dlsyms"
   4782  1.1  riastrad 	    echo >> "$output_objdir/$my_dlsyms" "\
   4783  1.1  riastrad     }
   4784  1.1  riastrad }"
   4785  1.1  riastrad 	  fi
   4786  1.1  riastrad 	  echo >> "$output_objdir/$my_dlsyms" "\
   4787  1.1  riastrad LT_DLSYM_CONST lt_dlsymlist
   4788  1.1  riastrad lt_${my_prefix}_LTX_preloaded_symbols[] =
   4789  1.1  riastrad { {\"$my_originator\", (void *) 0},"
   4790  1.1  riastrad 
   4791  1.1  riastrad 	  if test -s "$nlist"I; then
   4792  1.1  riastrad 	    echo >> "$output_objdir/$my_dlsyms" "\
   4793  1.1  riastrad   {\"@INIT@\", (void *) &lt_syminit},"
   4794  1.1  riastrad 	  fi
   4795  1.1  riastrad 
   4796  1.1  riastrad 	  case $need_lib_prefix in
   4797  1.1  riastrad 	  no)
   4798  1.1  riastrad 	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
   4799  1.1  riastrad 	    ;;
   4800  1.1  riastrad 	  *)
   4801  1.1  riastrad 	    eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
   4802  1.1  riastrad 	    ;;
   4803  1.1  riastrad 	  esac
   4804  1.1  riastrad 	  echo >> "$output_objdir/$my_dlsyms" "\
   4805  1.1  riastrad   {0, (void *) 0}
   4806  1.1  riastrad };
   4807  1.1  riastrad 
   4808  1.1  riastrad /* This works around a problem in FreeBSD linker */
   4809  1.1  riastrad #ifdef FREEBSD_WORKAROUND
   4810  1.1  riastrad static const void *lt_preloaded_setup() {
   4811  1.1  riastrad   return lt_${my_prefix}_LTX_preloaded_symbols;
   4812  1.1  riastrad }
   4813  1.1  riastrad #endif
   4814  1.1  riastrad 
   4815  1.1  riastrad #ifdef __cplusplus
   4816  1.1  riastrad }
   4817  1.1  riastrad #endif\
   4818  1.1  riastrad "
   4819  1.1  riastrad 	} # !$opt_dry_run
   4820  1.1  riastrad 
   4821  1.1  riastrad 	pic_flag_for_symtable=
   4822  1.1  riastrad 	case "$compile_command " in
   4823  1.1  riastrad 	*" -static "*) ;;
   4824  1.1  riastrad 	*)
   4825  1.1  riastrad 	  case $host in
   4826  1.1  riastrad 	  # compiling the symbol table file with pic_flag works around
   4827  1.1  riastrad 	  # a FreeBSD bug that causes programs to crash when -lm is
   4828  1.1  riastrad 	  # linked before any other PIC object.  But we must not use
   4829  1.1  riastrad 	  # pic_flag when linking with -static.  The problem exists in
   4830  1.1  riastrad 	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
   4831  1.1  riastrad 	  *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
   4832  1.1  riastrad 	    pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
   4833  1.1  riastrad 	  *-*-hpux*)
   4834  1.1  riastrad 	    pic_flag_for_symtable=" $pic_flag"  ;;
   4835  1.1  riastrad 	  *)
   4836  1.1  riastrad 	    $my_pic_p && pic_flag_for_symtable=" $pic_flag"
   4837  1.1  riastrad 	    ;;
   4838  1.1  riastrad 	  esac
   4839  1.1  riastrad 	  ;;
   4840  1.1  riastrad 	esac
   4841  1.1  riastrad 	symtab_cflags=
   4842  1.1  riastrad 	for arg in $LTCFLAGS; do
   4843  1.1  riastrad 	  case $arg in
   4844  1.1  riastrad 	  -pie | -fpie | -fPIE) ;;
   4845  1.1  riastrad 	  *) func_append symtab_cflags " $arg" ;;
   4846  1.1  riastrad 	  esac
   4847  1.1  riastrad 	done
   4848  1.1  riastrad 
   4849  1.1  riastrad 	# Now compile the dynamic symbol file.
   4850  1.1  riastrad 	func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
   4851  1.1  riastrad 
   4852  1.1  riastrad 	# Clean up the generated files.
   4853  1.1  riastrad 	func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T" "${nlist}I"'
   4854  1.1  riastrad 
   4855  1.1  riastrad 	# Transform the symbol file into the correct name.
   4856  1.1  riastrad 	symfileobj=$output_objdir/${my_outputname}S.$objext
   4857  1.1  riastrad 	case $host in
   4858  1.1  riastrad 	*cygwin* | *mingw* | *cegcc* )
   4859  1.1  riastrad 	  if test -f "$output_objdir/$my_outputname.def"; then
   4860  1.1  riastrad 	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
   4861  1.1  riastrad 	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
   4862  1.1  riastrad 	  else
   4863  1.1  riastrad 	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
   4864  1.1  riastrad 	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
   4865  1.1  riastrad 	  fi
   4866  1.1  riastrad 	  ;;
   4867  1.1  riastrad 	*)
   4868  1.1  riastrad 	  compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
   4869  1.1  riastrad 	  finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
   4870  1.1  riastrad 	  ;;
   4871  1.1  riastrad 	esac
   4872  1.1  riastrad 	;;
   4873  1.1  riastrad       *)
   4874  1.1  riastrad 	func_fatal_error "unknown suffix for '$my_dlsyms'"
   4875  1.1  riastrad 	;;
   4876  1.1  riastrad       esac
   4877  1.1  riastrad     else
   4878  1.1  riastrad       # We keep going just in case the user didn't refer to
   4879  1.1  riastrad       # lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
   4880  1.1  riastrad       # really was required.
   4881  1.1  riastrad 
   4882  1.1  riastrad       # Nullify the symbol file.
   4883  1.1  riastrad       compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"`
   4884  1.1  riastrad       finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"`
   4885  1.1  riastrad     fi
   4886  1.1  riastrad }
   4887  1.1  riastrad 
   4888  1.1  riastrad # func_cygming_gnu_implib_p ARG
   4889  1.1  riastrad # This predicate returns with zero status (TRUE) if
   4890  1.1  riastrad # ARG is a GNU/binutils-style import library. Returns
   4891  1.1  riastrad # with nonzero status (FALSE) otherwise.
   4892  1.1  riastrad func_cygming_gnu_implib_p ()
   4893  1.1  riastrad {
   4894  1.1  riastrad   $debug_cmd
   4895  1.1  riastrad 
   4896  1.1  riastrad   func_to_tool_file "$1" func_convert_file_msys_to_w32
   4897  1.1  riastrad   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)$'`
   4898  1.1  riastrad   test -n "$func_cygming_gnu_implib_tmp"
   4899  1.1  riastrad }
   4900  1.1  riastrad 
   4901  1.1  riastrad # func_cygming_ms_implib_p ARG
   4902  1.1  riastrad # This predicate returns with zero status (TRUE) if
   4903  1.1  riastrad # ARG is an MS-style import library. Returns
   4904  1.1  riastrad # with nonzero status (FALSE) otherwise.
   4905  1.1  riastrad func_cygming_ms_implib_p ()
   4906  1.1  riastrad {
   4907  1.1  riastrad   $debug_cmd
   4908  1.1  riastrad 
   4909  1.1  riastrad   func_to_tool_file "$1" func_convert_file_msys_to_w32
   4910  1.1  riastrad   func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'`
   4911  1.1  riastrad   test -n "$func_cygming_ms_implib_tmp"
   4912  1.1  riastrad }
   4913  1.1  riastrad 
   4914  1.1  riastrad # func_win32_libid arg
   4915  1.1  riastrad # return the library type of file 'arg'
   4916  1.1  riastrad #
   4917  1.1  riastrad # Need a lot of goo to handle *both* DLLs and import libs
   4918  1.1  riastrad # Has to be a shell function in order to 'eat' the argument
   4919  1.1  riastrad # that is supplied when $file_magic_command is called.
   4920  1.1  riastrad # Despite the name, also deal with 64 bit binaries.
   4921  1.1  riastrad func_win32_libid ()
   4922  1.1  riastrad {
   4923  1.1  riastrad   $debug_cmd
   4924  1.1  riastrad 
   4925  1.1  riastrad   win32_libid_type=unknown
   4926  1.1  riastrad   win32_fileres=`file -L $1 2>/dev/null`
   4927  1.1  riastrad   case $win32_fileres in
   4928  1.1  riastrad   *ar\ archive\ import\ library*) # definitely import
   4929  1.1  riastrad     win32_libid_type="x86 archive import"
   4930  1.1  riastrad     ;;
   4931  1.1  riastrad   *ar\ archive*) # could be an import, or static
   4932  1.1  riastrad     # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD.
   4933  1.1  riastrad     if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
   4934  1.1  riastrad        $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then
   4935  1.1  riastrad       case $nm_interface in
   4936  1.1  riastrad       "MS dumpbin")
   4937  1.1  riastrad 	if func_cygming_ms_implib_p "$1" ||
   4938  1.1  riastrad 	   func_cygming_gnu_implib_p "$1"
   4939  1.1  riastrad 	then
   4940  1.1  riastrad 	  win32_nmres=import
   4941  1.1  riastrad 	else
   4942  1.1  riastrad 	  win32_nmres=
   4943  1.1  riastrad 	fi
   4944  1.1  riastrad 	;;
   4945  1.1  riastrad       *)
   4946  1.1  riastrad 	func_to_tool_file "$1" func_convert_file_msys_to_w32
   4947  1.1  riastrad 	win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" |
   4948  1.1  riastrad 	  $SED -n -e '
   4949  1.1  riastrad 	    1,100{
   4950  1.1  riastrad 		/ I /{
   4951  1.1  riastrad 		    s|.*|import|
   4952  1.1  riastrad 		    p
   4953  1.1  riastrad 		    q
   4954  1.1  riastrad 		}
   4955  1.1  riastrad 	    }'`
   4956  1.1  riastrad 	;;
   4957  1.1  riastrad       esac
   4958  1.1  riastrad       case $win32_nmres in
   4959  1.1  riastrad       import*)  win32_libid_type="x86 archive import";;
   4960  1.1  riastrad       *)        win32_libid_type="x86 archive static";;
   4961  1.1  riastrad       esac
   4962  1.1  riastrad     fi
   4963  1.1  riastrad     ;;
   4964  1.1  riastrad   *DLL*)
   4965  1.1  riastrad     win32_libid_type="x86 DLL"
   4966  1.1  riastrad     ;;
   4967  1.1  riastrad   *executable*) # but shell scripts are "executable" too...
   4968  1.1  riastrad     case $win32_fileres in
   4969  1.1  riastrad     *MS\ Windows\ PE\ Intel*)
   4970  1.1  riastrad       win32_libid_type="x86 DLL"
   4971  1.1  riastrad       ;;
   4972  1.1  riastrad     esac
   4973  1.1  riastrad     ;;
   4974  1.1  riastrad   esac
   4975  1.1  riastrad   $ECHO "$win32_libid_type"
   4976  1.1  riastrad }
   4977  1.1  riastrad 
   4978  1.1  riastrad # func_cygming_dll_for_implib ARG
   4979  1.1  riastrad #
   4980  1.1  riastrad # Platform-specific function to extract the
   4981  1.1  riastrad # name of the DLL associated with the specified
   4982  1.1  riastrad # import library ARG.
   4983  1.1  riastrad # Invoked by eval'ing the libtool variable
   4984  1.1  riastrad #    $sharedlib_from_linklib_cmd
   4985  1.1  riastrad # Result is available in the variable
   4986  1.1  riastrad #    $sharedlib_from_linklib_result
   4987  1.1  riastrad func_cygming_dll_for_implib ()
   4988  1.1  riastrad {
   4989  1.1  riastrad   $debug_cmd
   4990  1.1  riastrad 
   4991  1.1  riastrad   sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"`
   4992  1.1  riastrad }
   4993  1.1  riastrad 
   4994  1.1  riastrad # func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs
   4995  1.1  riastrad #
   4996  1.1  riastrad # The is the core of a fallback implementation of a
   4997  1.1  riastrad # platform-specific function to extract the name of the
   4998  1.1  riastrad # DLL associated with the specified import library LIBNAME.
   4999  1.1  riastrad #
   5000  1.1  riastrad # SECTION_NAME is either .idata$6 or .idata$7, depending
   5001  1.1  riastrad # on the platform and compiler that created the implib.
   5002  1.1  riastrad #
   5003  1.1  riastrad # Echos the name of the DLL associated with the
   5004  1.1  riastrad # specified import library.
   5005  1.1  riastrad func_cygming_dll_for_implib_fallback_core ()
   5006  1.1  riastrad {
   5007  1.1  riastrad   $debug_cmd
   5008  1.1  riastrad 
   5009  1.1  riastrad   match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"`
   5010  1.1  riastrad   $OBJDUMP -s --section "$1" "$2" 2>/dev/null |
   5011  1.1  riastrad     $SED '/^Contents of section '"$match_literal"':/{
   5012  1.1  riastrad       # Place marker at beginning of archive member dllname section
   5013  1.1  riastrad       s/.*/====MARK====/
   5014  1.1  riastrad       p
   5015  1.1  riastrad       d
   5016  1.1  riastrad     }
   5017  1.1  riastrad     # These lines can sometimes be longer than 43 characters, but
   5018  1.1  riastrad     # are always uninteresting
   5019  1.1  riastrad     /:[	 ]*file format pe[i]\{,1\}-/d
   5020  1.1  riastrad     /^In archive [^:]*:/d
   5021  1.1  riastrad     # Ensure marker is printed
   5022  1.1  riastrad     /^====MARK====/p
   5023  1.1  riastrad     # Remove all lines with less than 43 characters
   5024  1.1  riastrad     /^.\{43\}/!d
   5025  1.1  riastrad     # From remaining lines, remove first 43 characters
   5026  1.1  riastrad     s/^.\{43\}//' |
   5027  1.1  riastrad     $SED -n '
   5028  1.1  riastrad       # Join marker and all lines until next marker into a single line
   5029  1.1  riastrad       /^====MARK====/ b para
   5030  1.1  riastrad       H
   5031  1.1  riastrad       $ b para
   5032  1.1  riastrad       b
   5033  1.1  riastrad       :para
   5034  1.1  riastrad       x
   5035  1.1  riastrad       s/\n//g
   5036  1.1  riastrad       # Remove the marker
   5037  1.1  riastrad       s/^====MARK====//
   5038  1.1  riastrad       # Remove trailing dots and whitespace
   5039  1.1  riastrad       s/[\. \t]*$//
   5040  1.1  riastrad       # Print
   5041  1.1  riastrad       /./p' |
   5042  1.1  riastrad     # we now have a list, one entry per line, of the stringified
   5043  1.1  riastrad     # contents of the appropriate section of all members of the
   5044  1.1  riastrad     # archive that possess that section. Heuristic: eliminate
   5045  1.1  riastrad     # all those that have a first or second character that is
   5046  1.1  riastrad     # a '.' (that is, objdump's representation of an unprintable
   5047  1.1  riastrad     # character.) This should work for all archives with less than
   5048  1.1  riastrad     # 0x302f exports -- but will fail for DLLs whose name actually
   5049  1.1  riastrad     # begins with a literal '.' or a single character followed by
   5050  1.1  riastrad     # a '.'.
   5051  1.1  riastrad     #
   5052  1.1  riastrad     # Of those that remain, print the first one.
   5053  1.1  riastrad     $SED -e '/^\./d;/^.\./d;q'
   5054  1.1  riastrad }
   5055  1.1  riastrad 
   5056  1.1  riastrad # func_cygming_dll_for_implib_fallback ARG
   5057  1.1  riastrad # Platform-specific function to extract the
   5058  1.1  riastrad # name of the DLL associated with the specified
   5059  1.1  riastrad # import library ARG.
   5060  1.1  riastrad #
   5061  1.1  riastrad # This fallback implementation is for use when $DLLTOOL
   5062  1.1  riastrad # does not support the --identify-strict option.
   5063  1.1  riastrad # Invoked by eval'ing the libtool variable
   5064  1.1  riastrad #    $sharedlib_from_linklib_cmd
   5065  1.1  riastrad # Result is available in the variable
   5066  1.1  riastrad #    $sharedlib_from_linklib_result
   5067  1.1  riastrad func_cygming_dll_for_implib_fallback ()
   5068  1.1  riastrad {
   5069  1.1  riastrad   $debug_cmd
   5070  1.1  riastrad 
   5071  1.1  riastrad   if func_cygming_gnu_implib_p "$1"; then
   5072  1.1  riastrad     # binutils import library
   5073  1.1  riastrad     sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"`
   5074  1.1  riastrad   elif func_cygming_ms_implib_p "$1"; then
   5075  1.1  riastrad     # ms-generated import library
   5076  1.1  riastrad     sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"`
   5077  1.1  riastrad   else
   5078  1.1  riastrad     # unknown
   5079  1.1  riastrad     sharedlib_from_linklib_result=
   5080  1.1  riastrad   fi
   5081  1.1  riastrad }
   5082  1.1  riastrad 
   5083  1.1  riastrad 
   5084  1.1  riastrad # func_extract_an_archive dir oldlib
   5085  1.1  riastrad func_extract_an_archive ()
   5086  1.1  riastrad {
   5087  1.1  riastrad     $debug_cmd
   5088  1.1  riastrad 
   5089  1.1  riastrad     f_ex_an_ar_dir=$1; shift
   5090  1.1  riastrad     f_ex_an_ar_oldlib=$1
   5091  1.1  riastrad     if test yes = "$lock_old_archive_extraction"; then
   5092  1.1  riastrad       lockfile=$f_ex_an_ar_oldlib.lock
   5093  1.1  riastrad       until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
   5094  1.1  riastrad 	func_echo "Waiting for $lockfile to be removed"
   5095  1.1  riastrad 	sleep 2
   5096  1.1  riastrad       done
   5097  1.1  riastrad     fi
   5098  1.1  riastrad     func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \
   5099  1.1  riastrad 		   'stat=$?; rm -f "$lockfile"; exit $stat'
   5100  1.1  riastrad     if test yes = "$lock_old_archive_extraction"; then
   5101  1.1  riastrad       $opt_dry_run || rm -f "$lockfile"
   5102  1.1  riastrad     fi
   5103  1.1  riastrad     if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
   5104  1.1  riastrad      :
   5105  1.1  riastrad     else
   5106  1.1  riastrad       func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
   5107  1.1  riastrad     fi
   5108  1.1  riastrad }
   5109  1.1  riastrad 
   5110  1.1  riastrad 
   5111  1.1  riastrad # func_extract_archives gentop oldlib ...
   5112  1.1  riastrad func_extract_archives ()
   5113  1.1  riastrad {
   5114  1.1  riastrad     $debug_cmd
   5115  1.1  riastrad 
   5116  1.1  riastrad     my_gentop=$1; shift
   5117  1.1  riastrad     my_oldlibs=${1+"$@"}
   5118  1.1  riastrad     my_oldobjs=
   5119  1.1  riastrad     my_xlib=
   5120  1.1  riastrad     my_xabs=
   5121  1.1  riastrad     my_xdir=
   5122  1.1  riastrad 
   5123  1.1  riastrad     for my_xlib in $my_oldlibs; do
   5124  1.1  riastrad       # Extract the objects.
   5125  1.1  riastrad       case $my_xlib in
   5126  1.1  riastrad 	[\\/]* | [A-Za-z]:[\\/]*) my_xabs=$my_xlib ;;
   5127  1.1  riastrad 	*) my_xabs=`pwd`"/$my_xlib" ;;
   5128  1.1  riastrad       esac
   5129  1.1  riastrad       func_basename "$my_xlib"
   5130  1.1  riastrad       my_xlib=$func_basename_result
   5131  1.1  riastrad       my_xlib_u=$my_xlib
   5132  1.1  riastrad       while :; do
   5133  1.1  riastrad         case " $extracted_archives " in
   5134  1.1  riastrad 	*" $my_xlib_u "*)
   5135  1.1  riastrad 	  func_arith $extracted_serial + 1
   5136  1.1  riastrad 	  extracted_serial=$func_arith_result
   5137  1.1  riastrad 	  my_xlib_u=lt$extracted_serial-$my_xlib ;;
   5138  1.1  riastrad 	*) break ;;
   5139  1.1  riastrad 	esac
   5140  1.1  riastrad       done
   5141  1.1  riastrad       extracted_archives="$extracted_archives $my_xlib_u"
   5142  1.1  riastrad       my_xdir=$my_gentop/$my_xlib_u
   5143  1.1  riastrad 
   5144  1.1  riastrad       func_mkdir_p "$my_xdir"
   5145  1.1  riastrad 
   5146  1.1  riastrad       case $host in
   5147  1.1  riastrad       *-darwin*)
   5148  1.1  riastrad 	func_verbose "Extracting $my_xabs"
   5149  1.1  riastrad 	# Do not bother doing anything if just a dry run
   5150  1.1  riastrad 	$opt_dry_run || {
   5151  1.1  riastrad 	  darwin_orig_dir=`pwd`
   5152  1.1  riastrad 	  cd $my_xdir || exit $?
   5153  1.1  riastrad 	  darwin_archive=$my_xabs
   5154  1.1  riastrad 	  darwin_curdir=`pwd`
   5155  1.1  riastrad 	  func_basename "$darwin_archive"
   5156  1.1  riastrad 	  darwin_base_archive=$func_basename_result
   5157  1.1  riastrad 	  darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
   5158  1.1  riastrad 	  if test -n "$darwin_arches"; then
   5159  1.1  riastrad 	    darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
   5160  1.1  riastrad 	    darwin_arch=
   5161  1.1  riastrad 	    func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
   5162  1.1  riastrad 	    for darwin_arch in  $darwin_arches; do
   5163  1.1  riastrad 	      func_mkdir_p "unfat-$$/$darwin_base_archive-$darwin_arch"
   5164  1.1  riastrad 	      $LIPO -thin $darwin_arch -output "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" "$darwin_archive"
   5165  1.1  riastrad 	      cd "unfat-$$/$darwin_base_archive-$darwin_arch"
   5166  1.1  riastrad 	      func_extract_an_archive "`pwd`" "$darwin_base_archive"
   5167  1.1  riastrad 	      cd "$darwin_curdir"
   5168  1.1  riastrad 	      $RM "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive"
   5169  1.1  riastrad 	    done # $darwin_arches
   5170  1.1  riastrad             ## Okay now we've a bunch of thin objects, gotta fatten them up :)
   5171  1.1  riastrad 	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$sed_basename" | sort -u`
   5172  1.1  riastrad 	    darwin_file=
   5173  1.1  riastrad 	    darwin_files=
   5174  1.1  riastrad 	    for darwin_file in $darwin_filelist; do
   5175  1.1  riastrad 	      darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP`
   5176  1.1  riastrad 	      $LIPO -create -output "$darwin_file" $darwin_files
   5177  1.1  riastrad 	    done # $darwin_filelist
   5178  1.1  riastrad 	    $RM -rf unfat-$$
   5179  1.1  riastrad 	    cd "$darwin_orig_dir"
   5180  1.1  riastrad 	  else
   5181  1.1  riastrad 	    cd $darwin_orig_dir
   5182  1.1  riastrad 	    func_extract_an_archive "$my_xdir" "$my_xabs"
   5183  1.1  riastrad 	  fi # $darwin_arches
   5184  1.1  riastrad 	} # !$opt_dry_run
   5185  1.1  riastrad 	;;
   5186  1.1  riastrad       *)
   5187  1.1  riastrad         func_extract_an_archive "$my_xdir" "$my_xabs"
   5188  1.1  riastrad 	;;
   5189  1.1  riastrad       esac
   5190  1.1  riastrad       my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP`
   5191  1.1  riastrad     done
   5192  1.1  riastrad 
   5193  1.1  riastrad     func_extract_archives_result=$my_oldobjs
   5194  1.1  riastrad }
   5195  1.1  riastrad 
   5196  1.1  riastrad 
   5197  1.1  riastrad # func_emit_wrapper [arg=no]
   5198  1.1  riastrad #
   5199  1.1  riastrad # Emit a libtool wrapper script on stdout.
   5200  1.1  riastrad # Don't directly open a file because we may want to
   5201  1.1  riastrad # incorporate the script contents within a cygwin/mingw
   5202  1.1  riastrad # wrapper executable.  Must ONLY be called from within
   5203  1.1  riastrad # func_mode_link because it depends on a number of variables
   5204  1.1  riastrad # set therein.
   5205  1.1  riastrad #
   5206  1.1  riastrad # ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
   5207  1.1  riastrad # variable will take.  If 'yes', then the emitted script
   5208  1.1  riastrad # will assume that the directory where it is stored is
   5209  1.1  riastrad # the $objdir directory.  This is a cygwin/mingw-specific
   5210  1.1  riastrad # behavior.
   5211  1.1  riastrad func_emit_wrapper ()
   5212  1.1  riastrad {
   5213  1.1  riastrad 	func_emit_wrapper_arg1=${1-no}
   5214  1.1  riastrad 
   5215  1.1  riastrad 	$ECHO "\
   5216  1.1  riastrad #! $SHELL
   5217  1.1  riastrad 
   5218  1.1  riastrad # $output - temporary wrapper script for $objdir/$outputname
   5219  1.1  riastrad # Generated by $PROGRAM (GNU $PACKAGE) $VERSION
   5220  1.1  riastrad #
   5221  1.1  riastrad # The $output program cannot be directly executed until all the libtool
   5222  1.1  riastrad # libraries that it depends on are installed.
   5223  1.1  riastrad #
   5224  1.1  riastrad # This wrapper script should never be moved out of the build directory.
   5225  1.1  riastrad # If it is, it will not operate correctly.
   5226  1.1  riastrad 
   5227  1.1  riastrad # Sed substitution that helps us do robust quoting.  It backslashifies
   5228  1.1  riastrad # metacharacters that are still active within double-quoted strings.
   5229  1.1  riastrad sed_quote_subst='$sed_quote_subst'
   5230  1.1  riastrad 
   5231  1.1  riastrad # Be Bourne compatible
   5232  1.1  riastrad if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
   5233  1.1  riastrad   emulate sh
   5234  1.1  riastrad   NULLCMD=:
   5235  1.1  riastrad   # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
   5236  1.1  riastrad   # is contrary to our usage.  Disable this feature.
   5237  1.1  riastrad   alias -g '\${1+\"\$@\"}'='\"\$@\"'
   5238  1.1  riastrad   setopt NO_GLOB_SUBST
   5239  1.1  riastrad else
   5240  1.1  riastrad   case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
   5241  1.1  riastrad fi
   5242  1.1  riastrad BIN_SH=xpg4; export BIN_SH # for Tru64
   5243  1.1  riastrad DUALCASE=1; export DUALCASE # for MKS sh
   5244  1.1  riastrad 
   5245  1.1  riastrad # The HP-UX ksh and POSIX shell print the target directory to stdout
   5246  1.1  riastrad # if CDPATH is set.
   5247  1.1  riastrad (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
   5248  1.1  riastrad 
   5249  1.1  riastrad relink_command=\"$relink_command\"
   5250  1.1  riastrad 
   5251  1.1  riastrad # This environment variable determines our operation mode.
   5252  1.1  riastrad if test \"\$libtool_install_magic\" = \"$magic\"; then
   5253  1.1  riastrad   # install mode needs the following variables:
   5254  1.1  riastrad   generated_by_libtool_version='$macro_version'
   5255  1.1  riastrad   notinst_deplibs='$notinst_deplibs'
   5256  1.1  riastrad else
   5257  1.1  riastrad   # When we are sourced in execute mode, \$file and \$ECHO are already set.
   5258  1.1  riastrad   if test \"\$libtool_execute_magic\" != \"$magic\"; then
   5259  1.1  riastrad     file=\"\$0\""
   5260  1.1  riastrad 
   5261  1.1  riastrad     qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"`
   5262  1.1  riastrad     $ECHO "\
   5263  1.1  riastrad 
   5264  1.1  riastrad # A function that is used when there is no print builtin or printf.
   5265  1.1  riastrad func_fallback_echo ()
   5266  1.1  riastrad {
   5267  1.1  riastrad   eval 'cat <<_LTECHO_EOF
   5268  1.1  riastrad \$1
   5269  1.1  riastrad _LTECHO_EOF'
   5270  1.1  riastrad }
   5271  1.1  riastrad     ECHO=\"$qECHO\"
   5272  1.1  riastrad   fi
   5273  1.1  riastrad 
   5274  1.1  riastrad # Very basic option parsing. These options are (a) specific to
   5275  1.1  riastrad # the libtool wrapper, (b) are identical between the wrapper
   5276  1.1  riastrad # /script/ and the wrapper /executable/ that is used only on
   5277  1.1  riastrad # windows platforms, and (c) all begin with the string "--lt-"
   5278  1.1  riastrad # (application programs are unlikely to have options that match
   5279  1.1  riastrad # this pattern).
   5280  1.1  riastrad #
   5281  1.1  riastrad # There are only two supported options: --lt-debug and
   5282  1.1  riastrad # --lt-dump-script. There is, deliberately, no --lt-help.
   5283  1.1  riastrad #
   5284  1.1  riastrad # The first argument to this parsing function should be the
   5285  1.1  riastrad # script's $0 value, followed by "$@".
   5286  1.1  riastrad lt_option_debug=
   5287  1.1  riastrad func_parse_lt_options ()
   5288  1.1  riastrad {
   5289  1.1  riastrad   lt_script_arg0=\$0
   5290  1.1  riastrad   shift
   5291  1.1  riastrad   for lt_opt
   5292  1.1  riastrad   do
   5293  1.1  riastrad     case \"\$lt_opt\" in
   5294  1.1  riastrad     --lt-debug) lt_option_debug=1 ;;
   5295  1.1  riastrad     --lt-dump-script)
   5296  1.1  riastrad         lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\`
   5297  1.1  riastrad         test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=.
   5298  1.1  riastrad         lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\`
   5299  1.1  riastrad         cat \"\$lt_dump_D/\$lt_dump_F\"
   5300  1.1  riastrad         exit 0
   5301  1.1  riastrad       ;;
   5302  1.1  riastrad     --lt-*)
   5303  1.1  riastrad         \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2
   5304  1.1  riastrad         exit 1
   5305  1.1  riastrad       ;;
   5306  1.1  riastrad     esac
   5307  1.1  riastrad   done
   5308  1.1  riastrad 
   5309  1.1  riastrad   # Print the debug banner immediately:
   5310  1.1  riastrad   if test -n \"\$lt_option_debug\"; then
   5311  1.1  riastrad     echo \"$outputname:$output:\$LINENO: libtool wrapper (GNU $PACKAGE) $VERSION\" 1>&2
   5312  1.1  riastrad   fi
   5313  1.1  riastrad }
   5314  1.1  riastrad 
   5315  1.1  riastrad # Used when --lt-debug. Prints its arguments to stdout
   5316  1.1  riastrad # (redirection is the responsibility of the caller)
   5317  1.1  riastrad func_lt_dump_args ()
   5318  1.1  riastrad {
   5319  1.1  riastrad   lt_dump_args_N=1;
   5320  1.1  riastrad   for lt_arg
   5321  1.1  riastrad   do
   5322  1.1  riastrad     \$ECHO \"$outputname:$output:\$LINENO: newargv[\$lt_dump_args_N]: \$lt_arg\"
   5323  1.1  riastrad     lt_dump_args_N=\`expr \$lt_dump_args_N + 1\`
   5324  1.1  riastrad   done
   5325  1.1  riastrad }
   5326  1.1  riastrad 
   5327  1.1  riastrad # Core function for launching the target application
   5328  1.1  riastrad func_exec_program_core ()
   5329  1.1  riastrad {
   5330  1.1  riastrad "
   5331  1.1  riastrad   case $host in
   5332  1.1  riastrad   # Backslashes separate directories on plain windows
   5333  1.1  riastrad   *-*-mingw | *-*-os2* | *-cegcc*)
   5334  1.1  riastrad     $ECHO "\
   5335  1.1  riastrad       if test -n \"\$lt_option_debug\"; then
   5336  1.1  riastrad         \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2
   5337  1.1  riastrad         func_lt_dump_args \${1+\"\$@\"} 1>&2
   5338  1.1  riastrad       fi
   5339  1.1  riastrad       exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
   5340  1.1  riastrad "
   5341  1.1  riastrad     ;;
   5342  1.1  riastrad 
   5343  1.1  riastrad   *)
   5344  1.1  riastrad     $ECHO "\
   5345  1.1  riastrad       if test -n \"\$lt_option_debug\"; then
   5346  1.1  riastrad         \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir/\$program\" 1>&2
   5347  1.1  riastrad         func_lt_dump_args \${1+\"\$@\"} 1>&2
   5348  1.1  riastrad       fi
   5349  1.1  riastrad       exec \"\$progdir/\$program\" \${1+\"\$@\"}
   5350  1.1  riastrad "
   5351  1.1  riastrad     ;;
   5352  1.1  riastrad   esac
   5353  1.1  riastrad   $ECHO "\
   5354  1.1  riastrad       \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
   5355  1.1  riastrad       exit 1
   5356  1.1  riastrad }
   5357  1.1  riastrad 
   5358  1.1  riastrad # A function to encapsulate launching the target application
   5359  1.1  riastrad # Strips options in the --lt-* namespace from \$@ and
   5360  1.1  riastrad # launches target application with the remaining arguments.
   5361  1.1  riastrad func_exec_program ()
   5362  1.1  riastrad {
   5363  1.1  riastrad   case \" \$* \" in
   5364  1.1  riastrad   *\\ --lt-*)
   5365  1.1  riastrad     for lt_wr_arg
   5366  1.1  riastrad     do
   5367  1.1  riastrad       case \$lt_wr_arg in
   5368  1.1  riastrad       --lt-*) ;;
   5369  1.1  riastrad       *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
   5370  1.1  riastrad       esac
   5371  1.1  riastrad       shift
   5372  1.1  riastrad     done ;;
   5373  1.1  riastrad   esac
   5374  1.1  riastrad   func_exec_program_core \${1+\"\$@\"}
   5375  1.1  riastrad }
   5376  1.1  riastrad 
   5377  1.1  riastrad   # Parse options
   5378  1.1  riastrad   func_parse_lt_options \"\$0\" \${1+\"\$@\"}
   5379  1.1  riastrad 
   5380  1.1  riastrad   # Find the directory that this script lives in.
   5381  1.1  riastrad   thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\`
   5382  1.1  riastrad   test \"x\$thisdir\" = \"x\$file\" && thisdir=.
   5383  1.1  riastrad 
   5384  1.1  riastrad   # Follow symbolic links until we get to the real thisdir.
   5385  1.1  riastrad   file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\`
   5386  1.1  riastrad   while test -n \"\$file\"; do
   5387  1.1  riastrad     destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\`
   5388  1.1  riastrad 
   5389  1.1  riastrad     # If there was a directory component, then change thisdir.
   5390  1.1  riastrad     if test \"x\$destdir\" != \"x\$file\"; then
   5391  1.1  riastrad       case \"\$destdir\" in
   5392  1.1  riastrad       [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
   5393  1.1  riastrad       *) thisdir=\"\$thisdir/\$destdir\" ;;
   5394  1.1  riastrad       esac
   5395  1.1  riastrad     fi
   5396  1.1  riastrad 
   5397  1.1  riastrad     file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\`
   5398  1.1  riastrad     file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\`
   5399  1.1  riastrad   done
   5400  1.1  riastrad 
   5401  1.1  riastrad   # Usually 'no', except on cygwin/mingw when embedded into
   5402  1.1  riastrad   # the cwrapper.
   5403  1.1  riastrad   WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1
   5404  1.1  riastrad   if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
   5405  1.1  riastrad     # special case for '.'
   5406  1.1  riastrad     if test \"\$thisdir\" = \".\"; then
   5407  1.1  riastrad       thisdir=\`pwd\`
   5408  1.1  riastrad     fi
   5409  1.1  riastrad     # remove .libs from thisdir
   5410  1.1  riastrad     case \"\$thisdir\" in
   5411  1.1  riastrad     *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;;
   5412  1.1  riastrad     $objdir )   thisdir=. ;;
   5413  1.1  riastrad     esac
   5414  1.1  riastrad   fi
   5415  1.1  riastrad 
   5416  1.1  riastrad   # Try to get the absolute directory name.
   5417  1.1  riastrad   absdir=\`cd \"\$thisdir\" && pwd\`
   5418  1.1  riastrad   test -n \"\$absdir\" && thisdir=\"\$absdir\"
   5419  1.1  riastrad "
   5420  1.1  riastrad 
   5421  1.1  riastrad 	if test yes = "$fast_install"; then
   5422  1.1  riastrad 	  $ECHO "\
   5423  1.1  riastrad   program=lt-'$outputname'$exeext
   5424  1.1  riastrad   progdir=\"\$thisdir/$objdir\"
   5425  1.1  riastrad 
   5426  1.1  riastrad   if test ! -f \"\$progdir/\$program\" ||
   5427  1.1  riastrad      { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | $SED 1q\`; \\
   5428  1.1  riastrad        test \"X\$file\" != \"X\$progdir/\$program\"; }; then
   5429  1.1  riastrad 
   5430  1.1  riastrad     file=\"\$\$-\$program\"
   5431  1.1  riastrad 
   5432  1.1  riastrad     if test ! -d \"\$progdir\"; then
   5433  1.1  riastrad       $MKDIR \"\$progdir\"
   5434  1.1  riastrad     else
   5435  1.1  riastrad       $RM \"\$progdir/\$file\"
   5436  1.1  riastrad     fi"
   5437  1.1  riastrad 
   5438  1.1  riastrad 	  $ECHO "\
   5439  1.1  riastrad 
   5440  1.1  riastrad     # relink executable if necessary
   5441  1.1  riastrad     if test -n \"\$relink_command\"; then
   5442  1.1  riastrad       if relink_command_output=\`eval \$relink_command 2>&1\`; then :
   5443  1.1  riastrad       else
   5444  1.1  riastrad 	\$ECHO \"\$relink_command_output\" >&2
   5445  1.1  riastrad 	$RM \"\$progdir/\$file\"
   5446  1.1  riastrad 	exit 1
   5447  1.1  riastrad       fi
   5448  1.1  riastrad     fi
   5449  1.1  riastrad 
   5450  1.1  riastrad     $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
   5451  1.1  riastrad     { $RM \"\$progdir/\$program\";
   5452  1.1  riastrad       $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
   5453  1.1  riastrad     $RM \"\$progdir/\$file\"
   5454  1.1  riastrad   fi"
   5455  1.1  riastrad 	else
   5456  1.1  riastrad 	  $ECHO "\
   5457  1.1  riastrad   program='$outputname'
   5458  1.1  riastrad   progdir=\"\$thisdir/$objdir\"
   5459  1.1  riastrad "
   5460  1.1  riastrad 	fi
   5461  1.1  riastrad 
   5462  1.1  riastrad 	$ECHO "\
   5463  1.1  riastrad 
   5464  1.1  riastrad   if test -f \"\$progdir/\$program\"; then"
   5465  1.1  riastrad 
   5466  1.1  riastrad 	# fixup the dll searchpath if we need to.
   5467  1.1  riastrad 	#
   5468  1.1  riastrad 	# Fix the DLL searchpath if we need to.  Do this before prepending
   5469  1.1  riastrad 	# to shlibpath, because on Windows, both are PATH and uninstalled
   5470  1.1  riastrad 	# libraries must come first.
   5471  1.1  riastrad 	if test -n "$dllsearchpath"; then
   5472  1.1  riastrad 	  $ECHO "\
   5473  1.1  riastrad     # Add the dll search path components to the executable PATH
   5474  1.1  riastrad     PATH=$dllsearchpath:\$PATH
   5475  1.1  riastrad "
   5476  1.1  riastrad 	fi
   5477  1.1  riastrad 
   5478  1.1  riastrad 	# Export our shlibpath_var if we have one.
   5479  1.1  riastrad 	if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
   5480  1.1  riastrad 	  $ECHO "\
   5481  1.1  riastrad     # Add our own library path to $shlibpath_var
   5482  1.1  riastrad     $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
   5483  1.1  riastrad 
   5484  1.1  riastrad     # Some systems cannot cope with colon-terminated $shlibpath_var
   5485  1.1  riastrad     # The second colon is a workaround for a bug in BeOS R4 sed
   5486  1.1  riastrad     $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\`
   5487  1.1  riastrad 
   5488  1.1  riastrad     export $shlibpath_var
   5489  1.1  riastrad "
   5490  1.1  riastrad 	fi
   5491  1.1  riastrad 
   5492  1.1  riastrad 	$ECHO "\
   5493  1.1  riastrad     if test \"\$libtool_execute_magic\" != \"$magic\"; then
   5494  1.1  riastrad       # Run the actual program with our arguments.
   5495  1.1  riastrad       func_exec_program \${1+\"\$@\"}
   5496  1.1  riastrad     fi
   5497  1.1  riastrad   else
   5498  1.1  riastrad     # The program doesn't exist.
   5499  1.1  riastrad     \$ECHO \"\$0: error: '\$progdir/\$program' does not exist\" 1>&2
   5500  1.1  riastrad     \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
   5501  1.1  riastrad     \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
   5502  1.1  riastrad     exit 1
   5503  1.1  riastrad   fi
   5504  1.1  riastrad fi\
   5505  1.1  riastrad "
   5506  1.1  riastrad }
   5507  1.1  riastrad 
   5508  1.1  riastrad 
   5509  1.1  riastrad # func_emit_cwrapperexe_src
   5510  1.1  riastrad # emit the source code for a wrapper executable on stdout
   5511  1.1  riastrad # Must ONLY be called from within func_mode_link because
   5512  1.1  riastrad # it depends on a number of variable set therein.
   5513  1.1  riastrad func_emit_cwrapperexe_src ()
   5514  1.1  riastrad {
   5515  1.1  riastrad 	cat <<EOF
   5516  1.1  riastrad 
   5517  1.1  riastrad /* $cwrappersource - temporary wrapper executable for $objdir/$outputname
   5518  1.1  riastrad    Generated by $PROGRAM (GNU $PACKAGE) $VERSION
   5519  1.1  riastrad 
   5520  1.1  riastrad    The $output program cannot be directly executed until all the libtool
   5521  1.1  riastrad    libraries that it depends on are installed.
   5522  1.1  riastrad 
   5523  1.1  riastrad    This wrapper executable should never be moved out of the build directory.
   5524  1.1  riastrad    If it is, it will not operate correctly.
   5525  1.1  riastrad */
   5526  1.1  riastrad EOF
   5527  1.1  riastrad 	    cat <<"EOF"
   5528  1.1  riastrad #ifdef _MSC_VER
   5529  1.1  riastrad # define _CRT_SECURE_NO_DEPRECATE 1
   5530  1.1  riastrad #endif
   5531  1.1  riastrad #include <stdio.h>
   5532  1.1  riastrad #include <stdlib.h>
   5533  1.1  riastrad #ifdef _MSC_VER
   5534  1.1  riastrad # include <direct.h>
   5535  1.1  riastrad # include <process.h>
   5536  1.1  riastrad # include <io.h>
   5537  1.1  riastrad #else
   5538  1.1  riastrad # include <unistd.h>
   5539  1.1  riastrad # include <stdint.h>
   5540  1.1  riastrad # ifdef __CYGWIN__
   5541  1.1  riastrad #  include <io.h>
   5542  1.1  riastrad # endif
   5543  1.1  riastrad #endif
   5544  1.1  riastrad #include <malloc.h>
   5545  1.1  riastrad #include <stdarg.h>
   5546  1.1  riastrad #include <assert.h>
   5547  1.1  riastrad #include <string.h>
   5548  1.1  riastrad #include <ctype.h>
   5549  1.1  riastrad #include <errno.h>
   5550  1.1  riastrad #include <fcntl.h>
   5551  1.1  riastrad #include <sys/stat.h>
   5552  1.1  riastrad 
   5553  1.1  riastrad #define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0)
   5554  1.1  riastrad 
   5555  1.1  riastrad /* declarations of non-ANSI functions */
   5556  1.1  riastrad #if defined __MINGW32__
   5557  1.1  riastrad # ifdef __STRICT_ANSI__
   5558  1.1  riastrad int _putenv (const char *);
   5559  1.1  riastrad # endif
   5560  1.1  riastrad #elif defined __CYGWIN__
   5561  1.1  riastrad # ifdef __STRICT_ANSI__
   5562  1.1  riastrad char *realpath (const char *, char *);
   5563  1.1  riastrad int putenv (char *);
   5564  1.1  riastrad int setenv (const char *, const char *, int);
   5565  1.1  riastrad # endif
   5566  1.1  riastrad /* #elif defined other_platform || defined ... */
   5567  1.1  riastrad #endif
   5568  1.1  riastrad 
   5569  1.1  riastrad /* portability defines, excluding path handling macros */
   5570  1.1  riastrad #if defined _MSC_VER
   5571  1.1  riastrad # define setmode _setmode
   5572  1.1  riastrad # define stat    _stat
   5573  1.1  riastrad # define chmod   _chmod
   5574  1.1  riastrad # define getcwd  _getcwd
   5575  1.1  riastrad # define putenv  _putenv
   5576  1.1  riastrad # define S_IXUSR _S_IEXEC
   5577  1.1  riastrad #elif defined __MINGW32__
   5578  1.1  riastrad # define setmode _setmode
   5579  1.1  riastrad # define stat    _stat
   5580  1.1  riastrad # define chmod   _chmod
   5581  1.1  riastrad # define getcwd  _getcwd
   5582  1.1  riastrad # define putenv  _putenv
   5583  1.1  riastrad #elif defined __CYGWIN__
   5584  1.1  riastrad # define HAVE_SETENV
   5585  1.1  riastrad # define FOPEN_WB "wb"
   5586  1.1  riastrad /* #elif defined other platforms ... */
   5587  1.1  riastrad #endif
   5588  1.1  riastrad 
   5589  1.1  riastrad #if defined PATH_MAX
   5590  1.1  riastrad # define LT_PATHMAX PATH_MAX
   5591  1.1  riastrad #elif defined MAXPATHLEN
   5592  1.1  riastrad # define LT_PATHMAX MAXPATHLEN
   5593  1.1  riastrad #else
   5594  1.1  riastrad # define LT_PATHMAX 1024
   5595  1.1  riastrad #endif
   5596  1.1  riastrad 
   5597  1.1  riastrad #ifndef S_IXOTH
   5598  1.1  riastrad # define S_IXOTH 0
   5599  1.1  riastrad #endif
   5600  1.1  riastrad #ifndef S_IXGRP
   5601  1.1  riastrad # define S_IXGRP 0
   5602  1.1  riastrad #endif
   5603  1.1  riastrad 
   5604  1.1  riastrad /* path handling portability macros */
   5605  1.1  riastrad #ifndef DIR_SEPARATOR
   5606  1.1  riastrad # define DIR_SEPARATOR '/'
   5607  1.1  riastrad # define PATH_SEPARATOR ':'
   5608  1.1  riastrad #endif
   5609  1.1  riastrad 
   5610  1.1  riastrad #if defined _WIN32 || defined __MSDOS__ || defined __DJGPP__ || \
   5611  1.1  riastrad   defined __OS2__
   5612  1.1  riastrad # define HAVE_DOS_BASED_FILE_SYSTEM
   5613  1.1  riastrad # define FOPEN_WB "wb"
   5614  1.1  riastrad # ifndef DIR_SEPARATOR_2
   5615  1.1  riastrad #  define DIR_SEPARATOR_2 '\\'
   5616  1.1  riastrad # endif
   5617  1.1  riastrad # ifndef PATH_SEPARATOR_2
   5618  1.1  riastrad #  define PATH_SEPARATOR_2 ';'
   5619  1.1  riastrad # endif
   5620  1.1  riastrad #endif
   5621  1.1  riastrad 
   5622  1.1  riastrad #ifndef DIR_SEPARATOR_2
   5623  1.1  riastrad # define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
   5624  1.1  riastrad #else /* DIR_SEPARATOR_2 */
   5625  1.1  riastrad # define IS_DIR_SEPARATOR(ch) \
   5626  1.1  riastrad 	(((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
   5627  1.1  riastrad #endif /* DIR_SEPARATOR_2 */
   5628  1.1  riastrad 
   5629  1.1  riastrad #ifndef PATH_SEPARATOR_2
   5630  1.1  riastrad # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
   5631  1.1  riastrad #else /* PATH_SEPARATOR_2 */
   5632  1.1  riastrad # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
   5633  1.1  riastrad #endif /* PATH_SEPARATOR_2 */
   5634  1.1  riastrad 
   5635  1.1  riastrad #ifndef FOPEN_WB
   5636  1.1  riastrad # define FOPEN_WB "w"
   5637  1.1  riastrad #endif
   5638  1.1  riastrad #ifndef _O_BINARY
   5639  1.1  riastrad # define _O_BINARY 0
   5640  1.1  riastrad #endif
   5641  1.1  riastrad 
   5642  1.1  riastrad #define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
   5643  1.1  riastrad #define XFREE(stale) do { \
   5644  1.1  riastrad   if (stale) { free (stale); stale = 0; } \
   5645  1.1  riastrad } while (0)
   5646  1.1  riastrad 
   5647  1.1  riastrad #if defined LT_DEBUGWRAPPER
   5648  1.1  riastrad static int lt_debug = 1;
   5649  1.1  riastrad #else
   5650  1.1  riastrad static int lt_debug = 0;
   5651  1.1  riastrad #endif
   5652  1.1  riastrad 
   5653  1.1  riastrad const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */
   5654  1.1  riastrad 
   5655  1.1  riastrad void *xmalloc (size_t num);
   5656  1.1  riastrad char *xstrdup (const char *string);
   5657  1.1  riastrad const char *base_name (const char *name);
   5658  1.1  riastrad char *find_executable (const char *wrapper);
   5659  1.1  riastrad char *chase_symlinks (const char *pathspec);
   5660  1.1  riastrad int make_executable (const char *path);
   5661  1.1  riastrad int check_executable (const char *path);
   5662  1.1  riastrad char *strendzap (char *str, const char *pat);
   5663  1.1  riastrad void lt_debugprintf (const char *file, int line, const char *fmt, ...);
   5664  1.1  riastrad void lt_fatal (const char *file, int line, const char *message, ...);
   5665  1.1  riastrad static const char *nonnull (const char *s);
   5666  1.1  riastrad static const char *nonempty (const char *s);
   5667  1.1  riastrad void lt_setenv (const char *name, const char *value);
   5668  1.1  riastrad char *lt_extend_str (const char *orig_value, const char *add, int to_end);
   5669  1.1  riastrad void lt_update_exe_path (const char *name, const char *value);
   5670  1.1  riastrad void lt_update_lib_path (const char *name, const char *value);
   5671  1.1  riastrad char **prepare_spawn (char **argv);
   5672  1.1  riastrad void lt_dump_script (FILE *f);
   5673  1.1  riastrad EOF
   5674  1.1  riastrad 
   5675  1.1  riastrad 	    cat <<EOF
   5676  1.1  riastrad #if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 5)
   5677  1.1  riastrad # define externally_visible volatile
   5678  1.1  riastrad #else
   5679  1.1  riastrad # define externally_visible __attribute__((externally_visible)) volatile
   5680  1.1  riastrad #endif
   5681  1.1  riastrad externally_visible const char * MAGIC_EXE = "$magic_exe";
   5682  1.1  riastrad const char * LIB_PATH_VARNAME = "$shlibpath_var";
   5683  1.1  riastrad EOF
   5684  1.1  riastrad 
   5685  1.1  riastrad 	    if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
   5686  1.1  riastrad               func_to_host_path "$temp_rpath"
   5687  1.1  riastrad 	      cat <<EOF
   5688  1.1  riastrad const char * LIB_PATH_VALUE   = "$func_to_host_path_result";
   5689  1.1  riastrad EOF
   5690  1.1  riastrad 	    else
   5691  1.1  riastrad 	      cat <<"EOF"
   5692  1.1  riastrad const char * LIB_PATH_VALUE   = "";
   5693  1.1  riastrad EOF
   5694  1.1  riastrad 	    fi
   5695  1.1  riastrad 
   5696  1.1  riastrad 	    if test -n "$dllsearchpath"; then
   5697  1.1  riastrad               func_to_host_path "$dllsearchpath:"
   5698  1.1  riastrad 	      cat <<EOF
   5699  1.1  riastrad const char * EXE_PATH_VARNAME = "PATH";
   5700  1.1  riastrad const char * EXE_PATH_VALUE   = "$func_to_host_path_result";
   5701  1.1  riastrad EOF
   5702  1.1  riastrad 	    else
   5703  1.1  riastrad 	      cat <<"EOF"
   5704  1.1  riastrad const char * EXE_PATH_VARNAME = "";
   5705  1.1  riastrad const char * EXE_PATH_VALUE   = "";
   5706  1.1  riastrad EOF
   5707  1.1  riastrad 	    fi
   5708  1.1  riastrad 
   5709  1.1  riastrad 	    if test yes = "$fast_install"; then
   5710  1.1  riastrad 	      cat <<EOF
   5711  1.1  riastrad const char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
   5712  1.1  riastrad EOF
   5713  1.1  riastrad 	    else
   5714  1.1  riastrad 	      cat <<EOF
   5715  1.1  riastrad const char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
   5716  1.1  riastrad EOF
   5717  1.1  riastrad 	    fi
   5718  1.1  riastrad 
   5719  1.1  riastrad 
   5720  1.1  riastrad 	    cat <<"EOF"
   5721  1.1  riastrad 
   5722  1.1  riastrad #define LTWRAPPER_OPTION_PREFIX         "--lt-"
   5723  1.1  riastrad 
   5724  1.1  riastrad static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
   5725  1.1  riastrad static const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX "dump-script";
   5726  1.1  riastrad static const char *debug_opt            = LTWRAPPER_OPTION_PREFIX "debug";
   5727  1.1  riastrad 
   5728  1.1  riastrad int
   5729  1.1  riastrad main (int argc, char *argv[])
   5730  1.1  riastrad {
   5731  1.1  riastrad   char **newargz;
   5732  1.1  riastrad   int  newargc;
   5733  1.1  riastrad   char *tmp_pathspec;
   5734  1.1  riastrad   char *actual_cwrapper_path;
   5735  1.1  riastrad   char *actual_cwrapper_name;
   5736  1.1  riastrad   char *target_name;
   5737  1.1  riastrad   char *lt_argv_zero;
   5738  1.1  riastrad   int rval = 127;
   5739  1.1  riastrad 
   5740  1.1  riastrad   int i;
   5741  1.1  riastrad 
   5742  1.1  riastrad   program_name = (char *) xstrdup (base_name (argv[0]));
   5743  1.1  riastrad   newargz = XMALLOC (char *, (size_t) argc + 1);
   5744  1.1  riastrad 
   5745  1.1  riastrad   /* very simple arg parsing; don't want to rely on getopt
   5746  1.1  riastrad    * also, copy all non cwrapper options to newargz, except
   5747  1.1  riastrad    * argz[0], which is handled differently
   5748  1.1  riastrad    */
   5749  1.1  riastrad   newargc=0;
   5750  1.1  riastrad   for (i = 1; i < argc; i++)
   5751  1.1  riastrad     {
   5752  1.1  riastrad       if (STREQ (argv[i], dumpscript_opt))
   5753  1.1  riastrad 	{
   5754  1.1  riastrad EOF
   5755  1.1  riastrad 	    case $host in
   5756  1.1  riastrad 	      *mingw* | *cygwin* )
   5757  1.1  riastrad 		# make stdout use "unix" line endings
   5758  1.1  riastrad 		echo "          setmode(1,_O_BINARY);"
   5759  1.1  riastrad 		;;
   5760  1.1  riastrad 	      esac
   5761  1.1  riastrad 
   5762  1.1  riastrad 	    cat <<"EOF"
   5763  1.1  riastrad 	  lt_dump_script (stdout);
   5764  1.1  riastrad 	  return 0;
   5765  1.1  riastrad 	}
   5766  1.1  riastrad       if (STREQ (argv[i], debug_opt))
   5767  1.1  riastrad 	{
   5768  1.1  riastrad           lt_debug = 1;
   5769  1.1  riastrad           continue;
   5770  1.1  riastrad 	}
   5771  1.1  riastrad       if (STREQ (argv[i], ltwrapper_option_prefix))
   5772  1.1  riastrad         {
   5773  1.1  riastrad           /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
   5774  1.1  riastrad              namespace, but it is not one of the ones we know about and
   5775  1.1  riastrad              have already dealt with, above (inluding dump-script), then
   5776  1.1  riastrad              report an error. Otherwise, targets might begin to believe
   5777  1.1  riastrad              they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
   5778  1.1  riastrad              namespace. The first time any user complains about this, we'll
   5779  1.1  riastrad              need to make LTWRAPPER_OPTION_PREFIX a configure-time option
   5780  1.1  riastrad              or a configure.ac-settable value.
   5781  1.1  riastrad            */
   5782  1.1  riastrad           lt_fatal (__FILE__, __LINE__,
   5783  1.1  riastrad 		    "unrecognized %s option: '%s'",
   5784  1.1  riastrad                     ltwrapper_option_prefix, argv[i]);
   5785  1.1  riastrad         }
   5786  1.1  riastrad       /* otherwise ... */
   5787  1.1  riastrad       newargz[++newargc] = xstrdup (argv[i]);
   5788  1.1  riastrad     }
   5789  1.1  riastrad   newargz[++newargc] = NULL;
   5790  1.1  riastrad 
   5791  1.1  riastrad EOF
   5792  1.1  riastrad 	    cat <<EOF
   5793  1.1  riastrad   /* The GNU banner must be the first non-error debug message */
   5794  1.1  riastrad   lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE) $VERSION\n");
   5795  1.1  riastrad EOF
   5796  1.1  riastrad 	    cat <<"EOF"
   5797  1.1  riastrad   lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]);
   5798  1.1  riastrad   lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name);
   5799  1.1  riastrad 
   5800  1.1  riastrad   tmp_pathspec = find_executable (argv[0]);
   5801  1.1  riastrad   if (tmp_pathspec == NULL)
   5802  1.1  riastrad     lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]);
   5803  1.1  riastrad   lt_debugprintf (__FILE__, __LINE__,
   5804  1.1  riastrad                   "(main) found exe (before symlink chase) at: %s\n",
   5805  1.1  riastrad 		  tmp_pathspec);
   5806  1.1  riastrad 
   5807  1.1  riastrad   actual_cwrapper_path = chase_symlinks (tmp_pathspec);
   5808  1.1  riastrad   lt_debugprintf (__FILE__, __LINE__,
   5809  1.1  riastrad                   "(main) found exe (after symlink chase) at: %s\n",
   5810  1.1  riastrad 		  actual_cwrapper_path);
   5811  1.1  riastrad   XFREE (tmp_pathspec);
   5812  1.1  riastrad 
   5813  1.1  riastrad   actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path));
   5814  1.1  riastrad   strendzap (actual_cwrapper_path, actual_cwrapper_name);
   5815  1.1  riastrad 
   5816  1.1  riastrad   /* wrapper name transforms */
   5817  1.1  riastrad   strendzap (actual_cwrapper_name, ".exe");
   5818  1.1  riastrad   tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
   5819  1.1  riastrad   XFREE (actual_cwrapper_name);
   5820  1.1  riastrad   actual_cwrapper_name = tmp_pathspec;
   5821  1.1  riastrad   tmp_pathspec = 0;
   5822  1.1  riastrad 
   5823  1.1  riastrad   /* target_name transforms -- use actual target program name; might have lt- prefix */
   5824  1.1  riastrad   target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
   5825  1.1  riastrad   strendzap (target_name, ".exe");
   5826  1.1  riastrad   tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
   5827  1.1  riastrad   XFREE (target_name);
   5828  1.1  riastrad   target_name = tmp_pathspec;
   5829  1.1  riastrad   tmp_pathspec = 0;
   5830  1.1  riastrad 
   5831  1.1  riastrad   lt_debugprintf (__FILE__, __LINE__,
   5832  1.1  riastrad 		  "(main) libtool target name: %s\n",
   5833  1.1  riastrad 		  target_name);
   5834  1.1  riastrad EOF
   5835  1.1  riastrad 
   5836  1.1  riastrad 	    cat <<EOF
   5837  1.1  riastrad   newargz[0] =
   5838  1.1  riastrad     XMALLOC (char, (strlen (actual_cwrapper_path) +
   5839  1.1  riastrad 		    strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
   5840  1.1  riastrad   strcpy (newargz[0], actual_cwrapper_path);
   5841  1.1  riastrad   strcat (newargz[0], "$objdir");
   5842  1.1  riastrad   strcat (newargz[0], "/");
   5843  1.1  riastrad EOF
   5844  1.1  riastrad 
   5845  1.1  riastrad 	    cat <<"EOF"
   5846  1.1  riastrad   /* stop here, and copy so we don't have to do this twice */
   5847  1.1  riastrad   tmp_pathspec = xstrdup (newargz[0]);
   5848  1.1  riastrad 
   5849  1.1  riastrad   /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
   5850  1.1  riastrad   strcat (newargz[0], actual_cwrapper_name);
   5851  1.1  riastrad 
   5852  1.1  riastrad   /* DO want the lt- prefix here if it exists, so use target_name */
   5853  1.1  riastrad   lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
   5854  1.1  riastrad   XFREE (tmp_pathspec);
   5855  1.1  riastrad   tmp_pathspec = NULL;
   5856  1.1  riastrad EOF
   5857  1.1  riastrad 
   5858  1.1  riastrad 	    case $host_os in
   5859  1.1  riastrad 	      mingw*)
   5860  1.1  riastrad 	    cat <<"EOF"
   5861  1.1  riastrad   {
   5862  1.1  riastrad     char* p;
   5863  1.1  riastrad     while ((p = strchr (newargz[0], '\\')) != NULL)
   5864  1.1  riastrad       {
   5865  1.1  riastrad 	*p = '/';
   5866  1.1  riastrad       }
   5867  1.1  riastrad     while ((p = strchr (lt_argv_zero, '\\')) != NULL)
   5868  1.1  riastrad       {
   5869  1.1  riastrad 	*p = '/';
   5870  1.1  riastrad       }
   5871  1.1  riastrad   }
   5872  1.1  riastrad EOF
   5873  1.1  riastrad 	    ;;
   5874  1.1  riastrad 	    esac
   5875  1.1  riastrad 
   5876  1.1  riastrad 	    cat <<"EOF"
   5877  1.1  riastrad   XFREE (target_name);
   5878  1.1  riastrad   XFREE (actual_cwrapper_path);
   5879  1.1  riastrad   XFREE (actual_cwrapper_name);
   5880  1.1  riastrad 
   5881  1.1  riastrad   lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
   5882  1.1  riastrad   lt_setenv ("DUALCASE", "1");  /* for MSK sh */
   5883  1.1  riastrad   /* Update the DLL searchpath.  EXE_PATH_VALUE ($dllsearchpath) must
   5884  1.1  riastrad      be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath)
   5885  1.1  riastrad      because on Windows, both *_VARNAMEs are PATH but uninstalled
   5886  1.1  riastrad      libraries must come first. */
   5887  1.1  riastrad   lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
   5888  1.1  riastrad   lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
   5889  1.1  riastrad 
   5890  1.1  riastrad   lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n",
   5891  1.1  riastrad 		  nonnull (lt_argv_zero));
   5892  1.1  riastrad   for (i = 0; i < newargc; i++)
   5893  1.1  riastrad     {
   5894  1.1  riastrad       lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n",
   5895  1.1  riastrad 		      i, nonnull (newargz[i]));
   5896  1.1  riastrad     }
   5897  1.1  riastrad 
   5898  1.1  riastrad EOF
   5899  1.1  riastrad 
   5900  1.1  riastrad 	    case $host_os in
   5901  1.1  riastrad 	      mingw*)
   5902  1.1  riastrad 		cat <<"EOF"
   5903  1.1  riastrad   /* execv doesn't actually work on mingw as expected on unix */
   5904  1.1  riastrad   newargz = prepare_spawn (newargz);
   5905  1.1  riastrad   rval = (int) _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
   5906  1.1  riastrad   if (rval == -1)
   5907  1.1  riastrad     {
   5908  1.1  riastrad       /* failed to start process */
   5909  1.1  riastrad       lt_debugprintf (__FILE__, __LINE__,
   5910  1.1  riastrad 		      "(main) failed to launch target \"%s\": %s\n",
   5911  1.1  riastrad 		      lt_argv_zero, nonnull (strerror (errno)));
   5912  1.1  riastrad       return 127;
   5913  1.1  riastrad     }
   5914  1.1  riastrad   return rval;
   5915  1.1  riastrad EOF
   5916  1.1  riastrad 		;;
   5917  1.1  riastrad 	      *)
   5918  1.1  riastrad 		cat <<"EOF"
   5919  1.1  riastrad   execv (lt_argv_zero, newargz);
   5920  1.1  riastrad   return rval; /* =127, but avoids unused variable warning */
   5921  1.1  riastrad EOF
   5922  1.1  riastrad 		;;
   5923  1.1  riastrad 	    esac
   5924  1.1  riastrad 
   5925  1.1  riastrad 	    cat <<"EOF"
   5926  1.1  riastrad }
   5927  1.1  riastrad 
   5928  1.1  riastrad void *
   5929  1.1  riastrad xmalloc (size_t num)
   5930  1.1  riastrad {
   5931  1.1  riastrad   void *p = (void *) malloc (num);
   5932  1.1  riastrad   if (!p)
   5933  1.1  riastrad     lt_fatal (__FILE__, __LINE__, "memory exhausted");
   5934  1.1  riastrad 
   5935  1.1  riastrad   return p;
   5936  1.1  riastrad }
   5937  1.1  riastrad 
   5938  1.1  riastrad char *
   5939  1.1  riastrad xstrdup (const char *string)
   5940  1.1  riastrad {
   5941  1.1  riastrad   return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
   5942  1.1  riastrad 			  string) : NULL;
   5943  1.1  riastrad }
   5944  1.1  riastrad 
   5945  1.1  riastrad const char *
   5946  1.1  riastrad base_name (const char *name)
   5947  1.1  riastrad {
   5948  1.1  riastrad   const char *base;
   5949  1.1  riastrad 
   5950  1.1  riastrad #if defined HAVE_DOS_BASED_FILE_SYSTEM
   5951  1.1  riastrad   /* Skip over the disk name in MSDOS pathnames. */
   5952  1.1  riastrad   if (isalpha ((unsigned char) name[0]) && name[1] == ':')
   5953  1.1  riastrad     name += 2;
   5954  1.1  riastrad #endif
   5955  1.1  riastrad 
   5956  1.1  riastrad   for (base = name; *name; name++)
   5957  1.1  riastrad     if (IS_DIR_SEPARATOR (*name))
   5958  1.1  riastrad       base = name + 1;
   5959  1.1  riastrad   return base;
   5960  1.1  riastrad }
   5961  1.1  riastrad 
   5962  1.1  riastrad int
   5963  1.1  riastrad check_executable (const char *path)
   5964  1.1  riastrad {
   5965  1.1  riastrad   struct stat st;
   5966  1.1  riastrad 
   5967  1.1  riastrad   lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n",
   5968  1.1  riastrad                   nonempty (path));
   5969  1.1  riastrad   if ((!path) || (!*path))
   5970  1.1  riastrad     return 0;
   5971  1.1  riastrad 
   5972  1.1  riastrad   if ((stat (path, &st) >= 0)
   5973  1.1  riastrad       && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
   5974  1.1  riastrad     return 1;
   5975  1.1  riastrad   else
   5976  1.1  riastrad     return 0;
   5977  1.1  riastrad }
   5978  1.1  riastrad 
   5979  1.1  riastrad int
   5980  1.1  riastrad make_executable (const char *path)
   5981  1.1  riastrad {
   5982  1.1  riastrad   int rval = 0;
   5983  1.1  riastrad   struct stat st;
   5984  1.1  riastrad 
   5985  1.1  riastrad   lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n",
   5986  1.1  riastrad                   nonempty (path));
   5987  1.1  riastrad   if ((!path) || (!*path))
   5988  1.1  riastrad     return 0;
   5989  1.1  riastrad 
   5990  1.1  riastrad   if (stat (path, &st) >= 0)
   5991  1.1  riastrad     {
   5992  1.1  riastrad       rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
   5993  1.1  riastrad     }
   5994  1.1  riastrad   return rval;
   5995  1.1  riastrad }
   5996  1.1  riastrad 
   5997  1.1  riastrad /* Searches for the full path of the wrapper.  Returns
   5998  1.1  riastrad    newly allocated full path name if found, NULL otherwise
   5999  1.1  riastrad    Does not chase symlinks, even on platforms that support them.
   6000  1.1  riastrad */
   6001  1.1  riastrad char *
   6002  1.1  riastrad find_executable (const char *wrapper)
   6003  1.1  riastrad {
   6004  1.1  riastrad   int has_slash = 0;
   6005  1.1  riastrad   const char *p;
   6006  1.1  riastrad   const char *p_next;
   6007  1.1  riastrad   /* static buffer for getcwd */
   6008  1.1  riastrad   char tmp[LT_PATHMAX + 1];
   6009  1.1  riastrad   size_t tmp_len;
   6010  1.1  riastrad   char *concat_name;
   6011  1.1  riastrad 
   6012  1.1  riastrad   lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n",
   6013  1.1  riastrad                   nonempty (wrapper));
   6014  1.1  riastrad 
   6015  1.1  riastrad   if ((wrapper == NULL) || (*wrapper == '\0'))
   6016  1.1  riastrad     return NULL;
   6017  1.1  riastrad 
   6018  1.1  riastrad   /* Absolute path? */
   6019  1.1  riastrad #if defined HAVE_DOS_BASED_FILE_SYSTEM
   6020  1.1  riastrad   if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
   6021  1.1  riastrad     {
   6022  1.1  riastrad       concat_name = xstrdup (wrapper);
   6023  1.1  riastrad       if (check_executable (concat_name))
   6024  1.1  riastrad 	return concat_name;
   6025  1.1  riastrad       XFREE (concat_name);
   6026  1.1  riastrad     }
   6027  1.1  riastrad   else
   6028  1.1  riastrad     {
   6029  1.1  riastrad #endif
   6030  1.1  riastrad       if (IS_DIR_SEPARATOR (wrapper[0]))
   6031  1.1  riastrad 	{
   6032  1.1  riastrad 	  concat_name = xstrdup (wrapper);
   6033  1.1  riastrad 	  if (check_executable (concat_name))
   6034  1.1  riastrad 	    return concat_name;
   6035  1.1  riastrad 	  XFREE (concat_name);
   6036  1.1  riastrad 	}
   6037  1.1  riastrad #if defined HAVE_DOS_BASED_FILE_SYSTEM
   6038  1.1  riastrad     }
   6039  1.1  riastrad #endif
   6040  1.1  riastrad 
   6041  1.1  riastrad   for (p = wrapper; *p; p++)
   6042  1.1  riastrad     if (*p == '/')
   6043  1.1  riastrad       {
   6044  1.1  riastrad 	has_slash = 1;
   6045  1.1  riastrad 	break;
   6046  1.1  riastrad       }
   6047  1.1  riastrad   if (!has_slash)
   6048  1.1  riastrad     {
   6049  1.1  riastrad       /* no slashes; search PATH */
   6050  1.1  riastrad       const char *path = getenv ("PATH");
   6051  1.1  riastrad       if (path != NULL)
   6052  1.1  riastrad 	{
   6053  1.1  riastrad 	  for (p = path; *p; p = p_next)
   6054  1.1  riastrad 	    {
   6055  1.1  riastrad 	      const char *q;
   6056  1.1  riastrad 	      size_t p_len;
   6057  1.1  riastrad 	      for (q = p; *q; q++)
   6058  1.1  riastrad 		if (IS_PATH_SEPARATOR (*q))
   6059  1.1  riastrad 		  break;
   6060  1.1  riastrad 	      p_len = (size_t) (q - p);
   6061  1.1  riastrad 	      p_next = (*q == '\0' ? q : q + 1);
   6062  1.1  riastrad 	      if (p_len == 0)
   6063  1.1  riastrad 		{
   6064  1.1  riastrad 		  /* empty path: current directory */
   6065  1.1  riastrad 		  if (getcwd (tmp, LT_PATHMAX) == NULL)
   6066  1.1  riastrad 		    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
   6067  1.1  riastrad                               nonnull (strerror (errno)));
   6068  1.1  riastrad 		  tmp_len = strlen (tmp);
   6069  1.1  riastrad 		  concat_name =
   6070  1.1  riastrad 		    XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
   6071  1.1  riastrad 		  memcpy (concat_name, tmp, tmp_len);
   6072  1.1  riastrad 		  concat_name[tmp_len] = '/';
   6073  1.1  riastrad 		  strcpy (concat_name + tmp_len + 1, wrapper);
   6074  1.1  riastrad 		}
   6075  1.1  riastrad 	      else
   6076  1.1  riastrad 		{
   6077  1.1  riastrad 		  concat_name =
   6078  1.1  riastrad 		    XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
   6079  1.1  riastrad 		  memcpy (concat_name, p, p_len);
   6080  1.1  riastrad 		  concat_name[p_len] = '/';
   6081  1.1  riastrad 		  strcpy (concat_name + p_len + 1, wrapper);
   6082  1.1  riastrad 		}
   6083  1.1  riastrad 	      if (check_executable (concat_name))
   6084  1.1  riastrad 		return concat_name;
   6085  1.1  riastrad 	      XFREE (concat_name);
   6086  1.1  riastrad 	    }
   6087  1.1  riastrad 	}
   6088  1.1  riastrad       /* not found in PATH; assume curdir */
   6089  1.1  riastrad     }
   6090  1.1  riastrad   /* Relative path | not found in path: prepend cwd */
   6091  1.1  riastrad   if (getcwd (tmp, LT_PATHMAX) == NULL)
   6092  1.1  riastrad     lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
   6093  1.1  riastrad               nonnull (strerror (errno)));
   6094  1.1  riastrad   tmp_len = strlen (tmp);
   6095  1.1  riastrad   concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
   6096  1.1  riastrad   memcpy (concat_name, tmp, tmp_len);
   6097  1.1  riastrad   concat_name[tmp_len] = '/';
   6098  1.1  riastrad   strcpy (concat_name + tmp_len + 1, wrapper);
   6099  1.1  riastrad 
   6100  1.1  riastrad   if (check_executable (concat_name))
   6101  1.1  riastrad     return concat_name;
   6102  1.1  riastrad   XFREE (concat_name);
   6103  1.1  riastrad   return NULL;
   6104  1.1  riastrad }
   6105  1.1  riastrad 
   6106  1.1  riastrad char *
   6107  1.1  riastrad chase_symlinks (const char *pathspec)
   6108  1.1  riastrad {
   6109  1.1  riastrad #ifndef S_ISLNK
   6110  1.1  riastrad   return xstrdup (pathspec);
   6111  1.1  riastrad #else
   6112  1.1  riastrad   char buf[LT_PATHMAX];
   6113  1.1  riastrad   struct stat s;
   6114  1.1  riastrad   char *tmp_pathspec = xstrdup (pathspec);
   6115  1.1  riastrad   char *p;
   6116  1.1  riastrad   int has_symlinks = 0;
   6117  1.1  riastrad   while (strlen (tmp_pathspec) && !has_symlinks)
   6118  1.1  riastrad     {
   6119  1.1  riastrad       lt_debugprintf (__FILE__, __LINE__,
   6120  1.1  riastrad 		      "checking path component for symlinks: %s\n",
   6121  1.1  riastrad 		      tmp_pathspec);
   6122  1.1  riastrad       if (lstat (tmp_pathspec, &s) == 0)
   6123  1.1  riastrad 	{
   6124  1.1  riastrad 	  if (S_ISLNK (s.st_mode) != 0)
   6125  1.1  riastrad 	    {
   6126  1.1  riastrad 	      has_symlinks = 1;
   6127  1.1  riastrad 	      break;
   6128  1.1  riastrad 	    }
   6129  1.1  riastrad 
   6130  1.1  riastrad 	  /* search backwards for last DIR_SEPARATOR */
   6131  1.1  riastrad 	  p = tmp_pathspec + strlen (tmp_pathspec) - 1;
   6132  1.1  riastrad 	  while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
   6133  1.1  riastrad 	    p--;
   6134  1.1  riastrad 	  if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
   6135  1.1  riastrad 	    {
   6136  1.1  riastrad 	      /* no more DIR_SEPARATORS left */
   6137  1.1  riastrad 	      break;
   6138  1.1  riastrad 	    }
   6139  1.1  riastrad 	  *p = '\0';
   6140  1.1  riastrad 	}
   6141  1.1  riastrad       else
   6142  1.1  riastrad 	{
   6143  1.1  riastrad 	  lt_fatal (__FILE__, __LINE__,
   6144  1.1  riastrad 		    "error accessing file \"%s\": %s",
   6145  1.1  riastrad 		    tmp_pathspec, nonnull (strerror (errno)));
   6146  1.1  riastrad 	}
   6147  1.1  riastrad     }
   6148  1.1  riastrad   XFREE (tmp_pathspec);
   6149  1.1  riastrad 
   6150  1.1  riastrad   if (!has_symlinks)
   6151  1.1  riastrad     {
   6152  1.1  riastrad       return xstrdup (pathspec);
   6153  1.1  riastrad     }
   6154  1.1  riastrad 
   6155  1.1  riastrad   tmp_pathspec = realpath (pathspec, buf);
   6156  1.1  riastrad   if (tmp_pathspec == 0)
   6157  1.1  riastrad     {
   6158  1.1  riastrad       lt_fatal (__FILE__, __LINE__,
   6159  1.1  riastrad 		"could not follow symlinks for %s", pathspec);
   6160  1.1  riastrad     }
   6161  1.1  riastrad   return xstrdup (tmp_pathspec);
   6162  1.1  riastrad #endif
   6163  1.1  riastrad }
   6164  1.1  riastrad 
   6165  1.1  riastrad char *
   6166  1.1  riastrad strendzap (char *str, const char *pat)
   6167  1.1  riastrad {
   6168  1.1  riastrad   size_t len, patlen;
   6169  1.1  riastrad 
   6170  1.1  riastrad   assert (str != NULL);
   6171  1.1  riastrad   assert (pat != NULL);
   6172  1.1  riastrad 
   6173  1.1  riastrad   len = strlen (str);
   6174  1.1  riastrad   patlen = strlen (pat);
   6175  1.1  riastrad 
   6176  1.1  riastrad   if (patlen <= len)
   6177  1.1  riastrad     {
   6178  1.1  riastrad       str += len - patlen;
   6179  1.1  riastrad       if (STREQ (str, pat))
   6180  1.1  riastrad 	*str = '\0';
   6181  1.1  riastrad     }
   6182  1.1  riastrad   return str;
   6183  1.1  riastrad }
   6184  1.1  riastrad 
   6185  1.1  riastrad void
   6186  1.1  riastrad lt_debugprintf (const char *file, int line, const char *fmt, ...)
   6187  1.1  riastrad {
   6188  1.1  riastrad   va_list args;
   6189  1.1  riastrad   if (lt_debug)
   6190  1.1  riastrad     {
   6191  1.1  riastrad       (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line);
   6192  1.1  riastrad       va_start (args, fmt);
   6193  1.1  riastrad       (void) vfprintf (stderr, fmt, args);
   6194  1.1  riastrad       va_end (args);
   6195  1.1  riastrad     }
   6196  1.1  riastrad }
   6197  1.1  riastrad 
   6198  1.1  riastrad static void
   6199  1.1  riastrad lt_error_core (int exit_status, const char *file,
   6200  1.1  riastrad 	       int line, const char *mode,
   6201  1.1  riastrad 	       const char *message, va_list ap)
   6202  1.1  riastrad {
   6203  1.1  riastrad   fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode);
   6204  1.1  riastrad   vfprintf (stderr, message, ap);
   6205  1.1  riastrad   fprintf (stderr, ".\n");
   6206  1.1  riastrad 
   6207  1.1  riastrad   if (exit_status >= 0)
   6208  1.1  riastrad     exit (exit_status);
   6209  1.1  riastrad }
   6210  1.1  riastrad 
   6211  1.1  riastrad void
   6212  1.1  riastrad lt_fatal (const char *file, int line, const char *message, ...)
   6213  1.1  riastrad {
   6214  1.1  riastrad   va_list ap;
   6215  1.1  riastrad   va_start (ap, message);
   6216  1.1  riastrad   lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap);
   6217  1.1  riastrad   va_end (ap);
   6218  1.1  riastrad }
   6219  1.1  riastrad 
   6220  1.1  riastrad static const char *
   6221  1.1  riastrad nonnull (const char *s)
   6222  1.1  riastrad {
   6223  1.1  riastrad   return s ? s : "(null)";
   6224  1.1  riastrad }
   6225  1.1  riastrad 
   6226  1.1  riastrad static const char *
   6227  1.1  riastrad nonempty (const char *s)
   6228  1.1  riastrad {
   6229  1.1  riastrad   return (s && !*s) ? "(empty)" : nonnull (s);
   6230  1.1  riastrad }
   6231  1.1  riastrad 
   6232  1.1  riastrad void
   6233  1.1  riastrad lt_setenv (const char *name, const char *value)
   6234  1.1  riastrad {
   6235  1.1  riastrad   lt_debugprintf (__FILE__, __LINE__,
   6236  1.1  riastrad 		  "(lt_setenv) setting '%s' to '%s'\n",
   6237  1.1  riastrad                   nonnull (name), nonnull (value));
   6238  1.1  riastrad   {
   6239  1.1  riastrad #ifdef HAVE_SETENV
   6240  1.1  riastrad     /* always make a copy, for consistency with !HAVE_SETENV */
   6241  1.1  riastrad     char *str = xstrdup (value);
   6242  1.1  riastrad     setenv (name, str, 1);
   6243  1.1  riastrad #else
   6244  1.1  riastrad     size_t len = strlen (name) + 1 + strlen (value) + 1;
   6245  1.1  riastrad     char *str = XMALLOC (char, len);
   6246  1.1  riastrad     sprintf (str, "%s=%s", name, value);
   6247  1.1  riastrad     if (putenv (str) != EXIT_SUCCESS)
   6248  1.1  riastrad       {
   6249  1.1  riastrad         XFREE (str);
   6250  1.1  riastrad       }
   6251  1.1  riastrad #endif
   6252  1.1  riastrad   }
   6253  1.1  riastrad }
   6254  1.1  riastrad 
   6255  1.1  riastrad char *
   6256  1.1  riastrad lt_extend_str (const char *orig_value, const char *add, int to_end)
   6257  1.1  riastrad {
   6258  1.1  riastrad   char *new_value;
   6259  1.1  riastrad   if (orig_value && *orig_value)
   6260  1.1  riastrad     {
   6261  1.1  riastrad       size_t orig_value_len = strlen (orig_value);
   6262  1.1  riastrad       size_t add_len = strlen (add);
   6263  1.1  riastrad       new_value = XMALLOC (char, add_len + orig_value_len + 1);
   6264  1.1  riastrad       if (to_end)
   6265  1.1  riastrad         {
   6266  1.1  riastrad           strcpy (new_value, orig_value);
   6267  1.1  riastrad           strcpy (new_value + orig_value_len, add);
   6268  1.1  riastrad         }
   6269  1.1  riastrad       else
   6270  1.1  riastrad         {
   6271  1.1  riastrad           strcpy (new_value, add);
   6272  1.1  riastrad           strcpy (new_value + add_len, orig_value);
   6273  1.1  riastrad         }
   6274  1.1  riastrad     }
   6275  1.1  riastrad   else
   6276  1.1  riastrad     {
   6277  1.1  riastrad       new_value = xstrdup (add);
   6278  1.1  riastrad     }
   6279  1.1  riastrad   return new_value;
   6280  1.1  riastrad }
   6281  1.1  riastrad 
   6282  1.1  riastrad void
   6283  1.1  riastrad lt_update_exe_path (const char *name, const char *value)
   6284  1.1  riastrad {
   6285  1.1  riastrad   lt_debugprintf (__FILE__, __LINE__,
   6286  1.1  riastrad 		  "(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
   6287  1.1  riastrad                   nonnull (name), nonnull (value));
   6288  1.1  riastrad 
   6289  1.1  riastrad   if (name && *name && value && *value)
   6290  1.1  riastrad     {
   6291  1.1  riastrad       char *new_value = lt_extend_str (getenv (name), value, 0);
   6292  1.1  riastrad       /* some systems can't cope with a ':'-terminated path #' */
   6293  1.1  riastrad       size_t len = strlen (new_value);
   6294  1.1  riastrad       while ((len > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
   6295  1.1  riastrad         {
   6296  1.1  riastrad           new_value[--len] = '\0';
   6297  1.1  riastrad         }
   6298  1.1  riastrad       lt_setenv (name, new_value);
   6299  1.1  riastrad       XFREE (new_value);
   6300  1.1  riastrad     }
   6301  1.1  riastrad }
   6302  1.1  riastrad 
   6303  1.1  riastrad void
   6304  1.1  riastrad lt_update_lib_path (const char *name, const char *value)
   6305  1.1  riastrad {
   6306  1.1  riastrad   lt_debugprintf (__FILE__, __LINE__,
   6307  1.1  riastrad 		  "(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
   6308  1.1  riastrad                   nonnull (name), nonnull (value));
   6309  1.1  riastrad 
   6310  1.1  riastrad   if (name && *name && value && *value)
   6311  1.1  riastrad     {
   6312  1.1  riastrad       char *new_value = lt_extend_str (getenv (name), value, 0);
   6313  1.1  riastrad       lt_setenv (name, new_value);
   6314  1.1  riastrad       XFREE (new_value);
   6315  1.1  riastrad     }
   6316  1.1  riastrad }
   6317  1.1  riastrad 
   6318  1.1  riastrad EOF
   6319  1.1  riastrad 	    case $host_os in
   6320  1.1  riastrad 	      mingw*)
   6321  1.1  riastrad 		cat <<"EOF"
   6322  1.1  riastrad 
   6323  1.1  riastrad /* Prepares an argument vector before calling spawn().
   6324  1.1  riastrad    Note that spawn() does not by itself call the command interpreter
   6325  1.1  riastrad      (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") :
   6326  1.1  riastrad       ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
   6327  1.1  riastrad          GetVersionEx(&v);
   6328  1.1  riastrad          v.dwPlatformId == VER_PLATFORM_WIN32_NT;
   6329  1.1  riastrad       }) ? "cmd.exe" : "command.com").
   6330  1.1  riastrad    Instead it simply concatenates the arguments, separated by ' ', and calls
   6331  1.1  riastrad    CreateProcess().  We must quote the arguments since Win32 CreateProcess()
   6332  1.1  riastrad    interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a
   6333  1.1  riastrad    special way:
   6334  1.1  riastrad    - Space and tab are interpreted as delimiters. They are not treated as
   6335  1.1  riastrad      delimiters if they are surrounded by double quotes: "...".
   6336  1.1  riastrad    - Unescaped double quotes are removed from the input. Their only effect is
   6337  1.1  riastrad      that within double quotes, space and tab are treated like normal
   6338  1.1  riastrad      characters.
   6339  1.1  riastrad    - Backslashes not followed by double quotes are not special.
   6340  1.1  riastrad    - But 2*n+1 backslashes followed by a double quote become
   6341  1.1  riastrad      n backslashes followed by a double quote (n >= 0):
   6342  1.1  riastrad        \" -> "
   6343  1.1  riastrad        \\\" -> \"
   6344  1.1  riastrad        \\\\\" -> \\"
   6345  1.1  riastrad  */
   6346  1.1  riastrad #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"
   6347  1.1  riastrad #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"
   6348  1.1  riastrad char **
   6349  1.1  riastrad prepare_spawn (char **argv)
   6350  1.1  riastrad {
   6351  1.1  riastrad   size_t argc;
   6352  1.1  riastrad   char **new_argv;
   6353  1.1  riastrad   size_t i;
   6354  1.1  riastrad 
   6355  1.1  riastrad   /* Count number of arguments.  */
   6356  1.1  riastrad   for (argc = 0; argv[argc] != NULL; argc++)
   6357  1.1  riastrad     ;
   6358  1.1  riastrad 
   6359  1.1  riastrad   /* Allocate new argument vector.  */
   6360  1.1  riastrad   new_argv = XMALLOC (char *, argc + 1);
   6361  1.1  riastrad 
   6362  1.1  riastrad   /* Put quoted arguments into the new argument vector.  */
   6363  1.1  riastrad   for (i = 0; i < argc; i++)
   6364  1.1  riastrad     {
   6365  1.1  riastrad       const char *string = argv[i];
   6366  1.1  riastrad 
   6367  1.1  riastrad       if (string[0] == '\0')
   6368  1.1  riastrad 	new_argv[i] = xstrdup ("\"\"");
   6369  1.1  riastrad       else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL)
   6370  1.1  riastrad 	{
   6371  1.1  riastrad 	  int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL);
   6372  1.1  riastrad 	  size_t length;
   6373  1.1  riastrad 	  unsigned int backslashes;
   6374  1.1  riastrad 	  const char *s;
   6375  1.1  riastrad 	  char *quoted_string;
   6376  1.1  riastrad 	  char *p;
   6377  1.1  riastrad 
   6378  1.1  riastrad 	  length = 0;
   6379  1.1  riastrad 	  backslashes = 0;
   6380  1.1  riastrad 	  if (quote_around)
   6381  1.1  riastrad 	    length++;
   6382  1.1  riastrad 	  for (s = string; *s != '\0'; s++)
   6383  1.1  riastrad 	    {
   6384  1.1  riastrad 	      char c = *s;
   6385  1.1  riastrad 	      if (c == '"')
   6386  1.1  riastrad 		length += backslashes + 1;
   6387  1.1  riastrad 	      length++;
   6388  1.1  riastrad 	      if (c == '\\')
   6389  1.1  riastrad 		backslashes++;
   6390  1.1  riastrad 	      else
   6391  1.1  riastrad 		backslashes = 0;
   6392  1.1  riastrad 	    }
   6393  1.1  riastrad 	  if (quote_around)
   6394  1.1  riastrad 	    length += backslashes + 1;
   6395  1.1  riastrad 
   6396  1.1  riastrad 	  quoted_string = XMALLOC (char, length + 1);
   6397  1.1  riastrad 
   6398  1.1  riastrad 	  p = quoted_string;
   6399  1.1  riastrad 	  backslashes = 0;
   6400  1.1  riastrad 	  if (quote_around)
   6401  1.1  riastrad 	    *p++ = '"';
   6402  1.1  riastrad 	  for (s = string; *s != '\0'; s++)
   6403  1.1  riastrad 	    {
   6404  1.1  riastrad 	      char c = *s;
   6405  1.1  riastrad 	      if (c == '"')
   6406  1.1  riastrad 		{
   6407  1.1  riastrad 		  unsigned int j;
   6408  1.1  riastrad 		  for (j = backslashes + 1; j > 0; j--)
   6409  1.1  riastrad 		    *p++ = '\\';
   6410  1.1  riastrad 		}
   6411  1.1  riastrad 	      *p++ = c;
   6412  1.1  riastrad 	      if (c == '\\')
   6413  1.1  riastrad 		backslashes++;
   6414  1.1  riastrad 	      else
   6415  1.1  riastrad 		backslashes = 0;
   6416  1.1  riastrad 	    }
   6417  1.1  riastrad 	  if (quote_around)
   6418  1.1  riastrad 	    {
   6419  1.1  riastrad 	      unsigned int j;
   6420  1.1  riastrad 	      for (j = backslashes; j > 0; j--)
   6421  1.1  riastrad 		*p++ = '\\';
   6422  1.1  riastrad 	      *p++ = '"';
   6423  1.1  riastrad 	    }
   6424  1.1  riastrad 	  *p = '\0';
   6425  1.1  riastrad 
   6426  1.1  riastrad 	  new_argv[i] = quoted_string;
   6427  1.1  riastrad 	}
   6428  1.1  riastrad       else
   6429  1.1  riastrad 	new_argv[i] = (char *) string;
   6430  1.1  riastrad     }
   6431  1.1  riastrad   new_argv[argc] = NULL;
   6432  1.1  riastrad 
   6433  1.1  riastrad   return new_argv;
   6434  1.1  riastrad }
   6435  1.1  riastrad EOF
   6436  1.1  riastrad 		;;
   6437  1.1  riastrad 	    esac
   6438  1.1  riastrad 
   6439  1.1  riastrad             cat <<"EOF"
   6440  1.1  riastrad void lt_dump_script (FILE* f)
   6441  1.1  riastrad {
   6442  1.1  riastrad EOF
   6443  1.1  riastrad 	    func_emit_wrapper yes |
   6444  1.1  riastrad 	      $SED -n -e '
   6445  1.1  riastrad s/^\(.\{79\}\)\(..*\)/\1\
   6446  1.1  riastrad \2/
   6447  1.1  riastrad h
   6448  1.1  riastrad s/\([\\"]\)/\\\1/g
   6449  1.1  riastrad s/$/\\n/
   6450  1.1  riastrad s/\([^\n]*\).*/  fputs ("\1", f);/p
   6451  1.1  riastrad g
   6452  1.1  riastrad D'
   6453  1.1  riastrad             cat <<"EOF"
   6454  1.1  riastrad }
   6455  1.1  riastrad EOF
   6456  1.1  riastrad }
   6457  1.1  riastrad # end: func_emit_cwrapperexe_src
   6458  1.1  riastrad 
   6459  1.1  riastrad # func_win32_import_lib_p ARG
   6460  1.1  riastrad # True if ARG is an import lib, as indicated by $file_magic_cmd
   6461  1.1  riastrad func_win32_import_lib_p ()
   6462  1.1  riastrad {
   6463  1.1  riastrad     $debug_cmd
   6464  1.1  riastrad 
   6465  1.1  riastrad     case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in
   6466  1.1  riastrad     *import*) : ;;
   6467  1.1  riastrad     *) false ;;
   6468  1.1  riastrad     esac
   6469  1.1  riastrad }
   6470  1.1  riastrad 
   6471  1.1  riastrad # func_suncc_cstd_abi
   6472  1.1  riastrad # !!ONLY CALL THIS FOR SUN CC AFTER $compile_command IS FULLY EXPANDED!!
   6473  1.1  riastrad # Several compiler flags select an ABI that is incompatible with the
   6474  1.1  riastrad # Cstd library. Avoid specifying it if any are in CXXFLAGS.
   6475  1.1  riastrad func_suncc_cstd_abi ()
   6476  1.1  riastrad {
   6477  1.1  riastrad     $debug_cmd
   6478  1.1  riastrad 
   6479  1.1  riastrad     case " $compile_command " in
   6480  1.1  riastrad     *" -compat=g "*|*\ -std=c++[0-9][0-9]\ *|*" -library=stdcxx4 "*|*" -library=stlport4 "*)
   6481  1.1  riastrad       suncc_use_cstd_abi=no
   6482  1.1  riastrad       ;;
   6483  1.1  riastrad     *)
   6484  1.1  riastrad       suncc_use_cstd_abi=yes
   6485  1.1  riastrad       ;;
   6486  1.1  riastrad     esac
   6487  1.1  riastrad }
   6488  1.1  riastrad 
   6489  1.1  riastrad # func_mode_link arg...
   6490  1.1  riastrad func_mode_link ()
   6491  1.1  riastrad {
   6492  1.1  riastrad     $debug_cmd
   6493  1.1  riastrad 
   6494  1.1  riastrad     case $host in
   6495  1.1  riastrad     *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
   6496  1.1  riastrad       # It is impossible to link a dll without this setting, and
   6497  1.1  riastrad       # we shouldn't force the makefile maintainer to figure out
   6498  1.1  riastrad       # what system we are compiling for in order to pass an extra
   6499  1.1  riastrad       # flag for every libtool invocation.
   6500  1.1  riastrad       # allow_undefined=no
   6501  1.1  riastrad 
   6502  1.1  riastrad       # FIXME: Unfortunately, there are problems with the above when trying
   6503  1.1  riastrad       # to make a dll that has undefined symbols, in which case not
   6504  1.1  riastrad       # even a static library is built.  For now, we need to specify
   6505  1.1  riastrad       # -no-undefined on the libtool link line when we can be certain
   6506  1.1  riastrad       # that all symbols are satisfied, otherwise we get a static library.
   6507  1.1  riastrad       allow_undefined=yes
   6508  1.1  riastrad       ;;
   6509  1.1  riastrad     *)
   6510  1.1  riastrad       allow_undefined=yes
   6511  1.1  riastrad       ;;
   6512  1.1  riastrad     esac
   6513  1.1  riastrad     libtool_args=$nonopt
   6514  1.1  riastrad     base_compile="$nonopt $@"
   6515  1.1  riastrad     compile_command=$nonopt
   6516  1.1  riastrad     finalize_command=$nonopt
   6517  1.1  riastrad 
   6518  1.1  riastrad     compile_rpath=
   6519  1.1  riastrad     finalize_rpath=
   6520  1.1  riastrad     compile_shlibpath=
   6521  1.1  riastrad     finalize_shlibpath=
   6522  1.1  riastrad     convenience=
   6523  1.1  riastrad     old_convenience=
   6524  1.1  riastrad     deplibs=
   6525  1.1  riastrad     old_deplibs=
   6526  1.1  riastrad     compiler_flags=
   6527  1.1  riastrad     linker_flags=
   6528  1.1  riastrad     dllsearchpath=
   6529  1.1  riastrad     lib_search_path=`pwd`
   6530  1.1  riastrad     inst_prefix_dir=
   6531  1.1  riastrad     new_inherited_linker_flags=
   6532  1.1  riastrad 
   6533  1.1  riastrad     avoid_version=no
   6534  1.1  riastrad     bindir=
   6535  1.1  riastrad     dlfiles=
   6536  1.1  riastrad     dlprefiles=
   6537  1.1  riastrad     dlself=no
   6538  1.1  riastrad     export_dynamic=no
   6539  1.1  riastrad     export_symbols=
   6540  1.1  riastrad     export_symbols_regex=
   6541  1.1  riastrad     generated=
   6542  1.1  riastrad     libobjs=
   6543  1.1  riastrad     ltlibs=
   6544  1.1  riastrad     module=no
   6545  1.1  riastrad     no_install=no
   6546  1.1  riastrad     objs=
   6547  1.1  riastrad     os2dllname=
   6548  1.1  riastrad     non_pic_objects=
   6549  1.1  riastrad     precious_files_regex=
   6550  1.1  riastrad     prefer_static_libs=no
   6551  1.1  riastrad     preload=false
   6552  1.1  riastrad     prev=
   6553  1.1  riastrad     prevarg=
   6554  1.1  riastrad     release=
   6555  1.1  riastrad     rpath=
   6556  1.1  riastrad     xrpath=
   6557  1.1  riastrad     perm_rpath=
   6558  1.1  riastrad     temp_rpath=
   6559  1.1  riastrad     thread_safe=no
   6560  1.1  riastrad     vinfo=
   6561  1.1  riastrad     vinfo_number=no
   6562  1.1  riastrad     weak_libs=
   6563  1.1  riastrad     single_module=$wl-single_module
   6564  1.1  riastrad     func_infer_tag $base_compile
   6565  1.1  riastrad 
   6566  1.1  riastrad     # We need to know -static, to get the right output filenames.
   6567  1.1  riastrad     for arg
   6568  1.1  riastrad     do
   6569  1.1  riastrad       case $arg in
   6570  1.1  riastrad       -shared)
   6571  1.1  riastrad 	test yes != "$build_libtool_libs" \
   6572  1.1  riastrad 	  && func_fatal_configuration "cannot build a shared library"
   6573  1.1  riastrad 	build_old_libs=no
   6574  1.1  riastrad 	break
   6575  1.1  riastrad 	;;
   6576  1.1  riastrad       -all-static | -static | -static-libtool-libs)
   6577  1.1  riastrad 	case $arg in
   6578  1.1  riastrad 	-all-static)
   6579  1.1  riastrad 	  if test yes = "$build_libtool_libs" && test -z "$link_static_flag"; then
   6580  1.1  riastrad 	    func_warning "complete static linking is impossible in this configuration"
   6581  1.1  riastrad 	  fi
   6582  1.1  riastrad 	  if test -n "$link_static_flag"; then
   6583  1.1  riastrad 	    dlopen_self=$dlopen_self_static
   6584  1.1  riastrad 	  fi
   6585  1.1  riastrad 	  prefer_static_libs=yes
   6586  1.1  riastrad 	  ;;
   6587  1.1  riastrad 	-static)
   6588  1.1  riastrad 	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
   6589  1.1  riastrad 	    dlopen_self=$dlopen_self_static
   6590  1.1  riastrad 	  fi
   6591  1.1  riastrad 	  prefer_static_libs=built
   6592  1.1  riastrad 	  ;;
   6593  1.1  riastrad 	-static-libtool-libs)
   6594  1.1  riastrad 	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
   6595  1.1  riastrad 	    dlopen_self=$dlopen_self_static
   6596  1.1  riastrad 	  fi
   6597  1.1  riastrad 	  prefer_static_libs=yes
   6598  1.1  riastrad 	  ;;
   6599  1.1  riastrad 	esac
   6600  1.1  riastrad 	build_libtool_libs=no
   6601  1.1  riastrad 	build_old_libs=yes
   6602  1.1  riastrad 	break
   6603  1.1  riastrad 	;;
   6604  1.1  riastrad       esac
   6605  1.1  riastrad     done
   6606  1.1  riastrad 
   6607  1.1  riastrad     # See if our shared archives depend on static archives.
   6608  1.1  riastrad     test -n "$old_archive_from_new_cmds" && build_old_libs=yes
   6609  1.1  riastrad 
   6610  1.1  riastrad     # Go through the arguments, transforming them on the way.
   6611  1.1  riastrad     while test "$#" -gt 0; do
   6612  1.1  riastrad       arg=$1
   6613  1.1  riastrad       shift
   6614  1.1  riastrad       func_quote_for_eval "$arg"
   6615  1.1  riastrad       qarg=$func_quote_for_eval_unquoted_result
   6616  1.1  riastrad       func_append libtool_args " $func_quote_for_eval_result"
   6617  1.1  riastrad 
   6618  1.1  riastrad       # If the previous option needs an argument, assign it.
   6619  1.1  riastrad       if test -n "$prev"; then
   6620  1.1  riastrad 	case $prev in
   6621  1.1  riastrad 	output)
   6622  1.1  riastrad 	  func_append compile_command " @OUTPUT@"
   6623  1.1  riastrad 	  func_append finalize_command " @OUTPUT@"
   6624  1.1  riastrad 	  ;;
   6625  1.1  riastrad 	esac
   6626  1.1  riastrad 
   6627  1.1  riastrad 	case $prev in
   6628  1.1  riastrad 	bindir)
   6629  1.1  riastrad 	  bindir=$arg
   6630  1.1  riastrad 	  prev=
   6631  1.1  riastrad 	  continue
   6632  1.1  riastrad 	  ;;
   6633  1.1  riastrad 	dlfiles|dlprefiles)
   6634  1.1  riastrad 	  $preload || {
   6635  1.1  riastrad 	    # Add the symbol object into the linking commands.
   6636  1.1  riastrad 	    func_append compile_command " @SYMFILE@"
   6637  1.1  riastrad 	    func_append finalize_command " @SYMFILE@"
   6638  1.1  riastrad 	    preload=:
   6639  1.1  riastrad 	  }
   6640  1.1  riastrad 	  case $arg in
   6641  1.1  riastrad 	  *.la | *.lo) ;;  # We handle these cases below.
   6642  1.1  riastrad 	  force)
   6643  1.1  riastrad 	    if test no = "$dlself"; then
   6644  1.1  riastrad 	      dlself=needless
   6645  1.1  riastrad 	      export_dynamic=yes
   6646  1.1  riastrad 	    fi
   6647  1.1  riastrad 	    prev=
   6648  1.1  riastrad 	    continue
   6649  1.1  riastrad 	    ;;
   6650  1.1  riastrad 	  self)
   6651  1.1  riastrad 	    if test dlprefiles = "$prev"; then
   6652  1.1  riastrad 	      dlself=yes
   6653  1.1  riastrad 	    elif test dlfiles = "$prev" && test yes != "$dlopen_self"; then
   6654  1.1  riastrad 	      dlself=yes
   6655  1.1  riastrad 	    else
   6656  1.1  riastrad 	      dlself=needless
   6657  1.1  riastrad 	      export_dynamic=yes
   6658  1.1  riastrad 	    fi
   6659  1.1  riastrad 	    prev=
   6660  1.1  riastrad 	    continue
   6661  1.1  riastrad 	    ;;
   6662  1.1  riastrad 	  *)
   6663  1.1  riastrad 	    if test dlfiles = "$prev"; then
   6664  1.1  riastrad 	      func_append dlfiles " $arg"
   6665  1.1  riastrad 	    else
   6666  1.1  riastrad 	      func_append dlprefiles " $arg"
   6667  1.1  riastrad 	    fi
   6668  1.1  riastrad 	    prev=
   6669  1.1  riastrad 	    continue
   6670  1.1  riastrad 	    ;;
   6671  1.1  riastrad 	  esac
   6672  1.1  riastrad 	  ;;
   6673  1.1  riastrad 	expsyms)
   6674  1.1  riastrad 	  export_symbols=$arg
   6675  1.1  riastrad 	  test -f "$arg" \
   6676  1.1  riastrad 	    || func_fatal_error "symbol file '$arg' does not exist"
   6677  1.1  riastrad 	  prev=
   6678  1.1  riastrad 	  continue
   6679  1.1  riastrad 	  ;;
   6680  1.1  riastrad 	expsyms_regex)
   6681  1.1  riastrad 	  export_symbols_regex=$arg
   6682  1.1  riastrad 	  prev=
   6683  1.1  riastrad 	  continue
   6684  1.1  riastrad 	  ;;
   6685  1.1  riastrad 	framework)
   6686  1.1  riastrad 	  case $host in
   6687  1.1  riastrad 	    *-*-darwin*)
   6688  1.1  riastrad 	      case "$deplibs " in
   6689  1.1  riastrad 		*" $qarg.ltframework "*) ;;
   6690  1.1  riastrad 		*) func_append deplibs " $qarg.ltframework" # this is fixed later
   6691  1.1  riastrad 		   ;;
   6692  1.1  riastrad 	      esac
   6693  1.1  riastrad 	      ;;
   6694  1.1  riastrad 	  esac
   6695  1.1  riastrad 	  prev=
   6696  1.1  riastrad 	  continue
   6697  1.1  riastrad 	  ;;
   6698  1.1  riastrad 	inst_prefix)
   6699  1.1  riastrad 	  inst_prefix_dir=$arg
   6700  1.1  riastrad 	  prev=
   6701  1.1  riastrad 	  continue
   6702  1.1  riastrad 	  ;;
   6703  1.1  riastrad 	mllvm)
   6704  1.1  riastrad 	  # Clang does not use LLVM to link, so we can simply discard any
   6705  1.1  riastrad 	  # '-mllvm $arg' options when doing the link step.
   6706  1.1  riastrad 	  prev=
   6707  1.1  riastrad 	  continue
   6708  1.1  riastrad 	  ;;
   6709  1.1  riastrad 	objectlist)
   6710  1.1  riastrad 	  if test -f "$arg"; then
   6711  1.1  riastrad 	    save_arg=$arg
   6712  1.1  riastrad 	    moreargs=
   6713  1.1  riastrad 	    for fil in `cat "$save_arg"`
   6714  1.1  riastrad 	    do
   6715  1.1  riastrad #	      func_append moreargs " $fil"
   6716  1.1  riastrad 	      arg=$fil
   6717  1.1  riastrad 	      # A libtool-controlled object.
   6718  1.1  riastrad 
   6719  1.1  riastrad 	      # Check to see that this really is a libtool object.
   6720  1.1  riastrad 	      if func_lalib_unsafe_p "$arg"; then
   6721  1.1  riastrad 		pic_object=
   6722  1.1  riastrad 		non_pic_object=
   6723  1.1  riastrad 
   6724  1.1  riastrad 		# Read the .lo file
   6725  1.1  riastrad 		func_source "$arg"
   6726  1.1  riastrad 
   6727  1.1  riastrad 		if test -z "$pic_object" ||
   6728  1.1  riastrad 		   test -z "$non_pic_object" ||
   6729  1.1  riastrad 		   test none = "$pic_object" &&
   6730  1.1  riastrad 		   test none = "$non_pic_object"; then
   6731  1.1  riastrad 		  func_fatal_error "cannot find name of object for '$arg'"
   6732  1.1  riastrad 		fi
   6733  1.1  riastrad 
   6734  1.1  riastrad 		# Extract subdirectory from the argument.
   6735  1.1  riastrad 		func_dirname "$arg" "/" ""
   6736  1.1  riastrad 		xdir=$func_dirname_result
   6737  1.1  riastrad 
   6738  1.1  riastrad 		if test none != "$pic_object"; then
   6739  1.1  riastrad 		  # Prepend the subdirectory the object is found in.
   6740  1.1  riastrad 		  pic_object=$xdir$pic_object
   6741  1.1  riastrad 
   6742  1.1  riastrad 		  if test dlfiles = "$prev"; then
   6743  1.1  riastrad 		    if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then
   6744  1.1  riastrad 		      func_append dlfiles " $pic_object"
   6745  1.1  riastrad 		      prev=
   6746  1.1  riastrad 		      continue
   6747  1.1  riastrad 		    else
   6748  1.1  riastrad 		      # If libtool objects are unsupported, then we need to preload.
   6749  1.1  riastrad 		      prev=dlprefiles
   6750  1.1  riastrad 		    fi
   6751  1.1  riastrad 		  fi
   6752  1.1  riastrad 
   6753  1.1  riastrad 		  # CHECK ME:  I think I busted this.  -Ossama
   6754  1.1  riastrad 		  if test dlprefiles = "$prev"; then
   6755  1.1  riastrad 		    # Preload the old-style object.
   6756  1.1  riastrad 		    func_append dlprefiles " $pic_object"
   6757  1.1  riastrad 		    prev=
   6758  1.1  riastrad 		  fi
   6759  1.1  riastrad 
   6760  1.1  riastrad 		  # A PIC object.
   6761  1.1  riastrad 		  func_append libobjs " $pic_object"
   6762  1.1  riastrad 		  arg=$pic_object
   6763  1.1  riastrad 		fi
   6764  1.1  riastrad 
   6765  1.1  riastrad 		# Non-PIC object.
   6766  1.1  riastrad 		if test none != "$non_pic_object"; then
   6767  1.1  riastrad 		  # Prepend the subdirectory the object is found in.
   6768  1.1  riastrad 		  non_pic_object=$xdir$non_pic_object
   6769  1.1  riastrad 
   6770  1.1  riastrad 		  # A standard non-PIC object
   6771  1.1  riastrad 		  func_append non_pic_objects " $non_pic_object"
   6772  1.1  riastrad 		  if test -z "$pic_object" || test none = "$pic_object"; then
   6773  1.1  riastrad 		    arg=$non_pic_object
   6774  1.1  riastrad 		  fi
   6775  1.1  riastrad 		else
   6776  1.1  riastrad 		  # If the PIC object exists, use it instead.
   6777  1.1  riastrad 		  # $xdir was prepended to $pic_object above.
   6778  1.1  riastrad 		  non_pic_object=$pic_object
   6779  1.1  riastrad 		  func_append non_pic_objects " $non_pic_object"
   6780  1.1  riastrad 		fi
   6781  1.1  riastrad 	      else
   6782  1.1  riastrad 		# Only an error if not doing a dry-run.
   6783  1.1  riastrad 		if $opt_dry_run; then
   6784  1.1  riastrad 		  # Extract subdirectory from the argument.
   6785  1.1  riastrad 		  func_dirname "$arg" "/" ""
   6786  1.1  riastrad 		  xdir=$func_dirname_result
   6787  1.1  riastrad 
   6788  1.1  riastrad 		  func_lo2o "$arg"
   6789  1.1  riastrad 		  pic_object=$xdir$objdir/$func_lo2o_result
   6790  1.1  riastrad 		  non_pic_object=$xdir$func_lo2o_result
   6791  1.1  riastrad 		  func_append libobjs " $pic_object"
   6792  1.1  riastrad 		  func_append non_pic_objects " $non_pic_object"
   6793  1.1  riastrad 	        else
   6794  1.1  riastrad 		  func_fatal_error "'$arg' is not a valid libtool object"
   6795  1.1  riastrad 		fi
   6796  1.1  riastrad 	      fi
   6797  1.1  riastrad 	    done
   6798  1.1  riastrad 	  else
   6799  1.1  riastrad 	    func_fatal_error "link input file '$arg' does not exist"
   6800  1.1  riastrad 	  fi
   6801  1.1  riastrad 	  arg=$save_arg
   6802  1.1  riastrad 	  prev=
   6803  1.1  riastrad 	  continue
   6804  1.1  riastrad 	  ;;
   6805  1.1  riastrad 	os2dllname)
   6806  1.1  riastrad 	  os2dllname=$arg
   6807  1.1  riastrad 	  prev=
   6808  1.1  riastrad 	  continue
   6809  1.1  riastrad 	  ;;
   6810  1.1  riastrad 	precious_regex)
   6811  1.1  riastrad 	  precious_files_regex=$arg
   6812  1.1  riastrad 	  prev=
   6813  1.1  riastrad 	  continue
   6814  1.1  riastrad 	  ;;
   6815  1.1  riastrad 	release)
   6816  1.1  riastrad 	  release=-$arg
   6817  1.1  riastrad 	  prev=
   6818  1.1  riastrad 	  continue
   6819  1.1  riastrad 	  ;;
   6820  1.1  riastrad 	rpath | xrpath)
   6821  1.1  riastrad 	  # We need an absolute path.
   6822  1.1  riastrad 	  case $arg in
   6823  1.1  riastrad 	  [\\/]* | [A-Za-z]:[\\/]*) ;;
   6824  1.1  riastrad 	  *)
   6825  1.1  riastrad 	    func_fatal_error "only absolute run-paths are allowed"
   6826  1.1  riastrad 	    ;;
   6827  1.1  riastrad 	  esac
   6828  1.1  riastrad 	  if test rpath = "$prev"; then
   6829  1.1  riastrad 	    case "$rpath " in
   6830  1.1  riastrad 	    *" $arg "*) ;;
   6831  1.1  riastrad 	    *) func_append rpath " $arg" ;;
   6832  1.1  riastrad 	    esac
   6833  1.1  riastrad 	  else
   6834  1.1  riastrad 	    case "$xrpath " in
   6835  1.1  riastrad 	    *" $arg "*) ;;
   6836  1.1  riastrad 	    *) func_append xrpath " $arg" ;;
   6837  1.1  riastrad 	    esac
   6838  1.1  riastrad 	  fi
   6839  1.1  riastrad 	  prev=
   6840  1.1  riastrad 	  continue
   6841  1.1  riastrad 	  ;;
   6842  1.1  riastrad 	shrext)
   6843  1.1  riastrad 	  shrext_cmds=$arg
   6844  1.1  riastrad 	  prev=
   6845  1.1  riastrad 	  continue
   6846  1.1  riastrad 	  ;;
   6847  1.1  riastrad 	weak)
   6848  1.1  riastrad 	  func_append weak_libs " $arg"
   6849  1.1  riastrad 	  prev=
   6850  1.1  riastrad 	  continue
   6851  1.1  riastrad 	  ;;
   6852  1.1  riastrad 	xcclinker)
   6853  1.1  riastrad 	  func_append linker_flags " $qarg"
   6854  1.1  riastrad 	  func_append compiler_flags " $qarg"
   6855  1.1  riastrad 	  prev=
   6856  1.1  riastrad 	  func_append compile_command " $qarg"
   6857  1.1  riastrad 	  func_append finalize_command " $qarg"
   6858  1.1  riastrad 	  continue
   6859  1.1  riastrad 	  ;;
   6860  1.1  riastrad 	xcompiler)
   6861  1.1  riastrad 	  func_append compiler_flags " $qarg"
   6862  1.1  riastrad 	  prev=
   6863  1.1  riastrad 	  func_append compile_command " $qarg"
   6864  1.1  riastrad 	  func_append finalize_command " $qarg"
   6865  1.1  riastrad 	  continue
   6866  1.1  riastrad 	  ;;
   6867  1.1  riastrad 	xlinker)
   6868  1.1  riastrad 	  func_append linker_flags " $qarg"
   6869  1.1  riastrad 	  func_append compiler_flags " $wl$qarg"
   6870  1.1  riastrad 	  prev=
   6871  1.1  riastrad 	  func_append compile_command " $wl$qarg"
   6872  1.1  riastrad 	  func_append finalize_command " $wl$qarg"
   6873  1.1  riastrad 	  continue
   6874  1.1  riastrad 	  ;;
   6875  1.1  riastrad 	*)
   6876  1.1  riastrad 	  eval "$prev=\"\$arg\""
   6877  1.1  riastrad 	  prev=
   6878  1.1  riastrad 	  continue
   6879  1.1  riastrad 	  ;;
   6880  1.1  riastrad 	esac
   6881  1.1  riastrad       fi # test -n "$prev"
   6882  1.1  riastrad 
   6883  1.1  riastrad       prevarg=$arg
   6884  1.1  riastrad 
   6885  1.1  riastrad       case $arg in
   6886  1.1  riastrad       -all-static)
   6887  1.1  riastrad 	if test -n "$link_static_flag"; then
   6888  1.1  riastrad 	  # See comment for -static flag below, for more details.
   6889  1.1  riastrad 	  func_append compile_command " $link_static_flag"
   6890  1.1  riastrad 	  func_append finalize_command " $link_static_flag"
   6891  1.1  riastrad 	fi
   6892  1.1  riastrad 	continue
   6893  1.1  riastrad 	;;
   6894  1.1  riastrad 
   6895  1.1  riastrad       -allow-undefined)
   6896  1.1  riastrad 	# FIXME: remove this flag sometime in the future.
   6897  1.1  riastrad 	func_fatal_error "'-allow-undefined' must not be used because it is the default"
   6898  1.1  riastrad 	;;
   6899  1.1  riastrad 
   6900  1.1  riastrad       -avoid-version)
   6901  1.1  riastrad 	avoid_version=yes
   6902  1.1  riastrad 	continue
   6903  1.1  riastrad 	;;
   6904  1.1  riastrad 
   6905  1.1  riastrad       -bindir)
   6906  1.1  riastrad 	prev=bindir
   6907  1.1  riastrad 	continue
   6908  1.1  riastrad 	;;
   6909  1.1  riastrad 
   6910  1.1  riastrad       -dlopen)
   6911  1.1  riastrad 	prev=dlfiles
   6912  1.1  riastrad 	continue
   6913  1.1  riastrad 	;;
   6914  1.1  riastrad 
   6915  1.1  riastrad       -dlpreopen)
   6916  1.1  riastrad 	prev=dlprefiles
   6917  1.1  riastrad 	continue
   6918  1.1  riastrad 	;;
   6919  1.1  riastrad 
   6920  1.1  riastrad       -export-dynamic)
   6921  1.1  riastrad 	export_dynamic=yes
   6922  1.1  riastrad 	continue
   6923  1.1  riastrad 	;;
   6924  1.1  riastrad 
   6925  1.1  riastrad       -export-symbols | -export-symbols-regex)
   6926  1.1  riastrad 	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
   6927  1.1  riastrad 	  func_fatal_error "more than one -exported-symbols argument is not allowed"
   6928  1.1  riastrad 	fi
   6929  1.1  riastrad 	if test X-export-symbols = "X$arg"; then
   6930  1.1  riastrad 	  prev=expsyms
   6931  1.1  riastrad 	else
   6932  1.1  riastrad 	  prev=expsyms_regex
   6933  1.1  riastrad 	fi
   6934  1.1  riastrad 	continue
   6935  1.1  riastrad 	;;
   6936  1.1  riastrad 
   6937  1.1  riastrad       -framework)
   6938  1.1  riastrad 	prev=framework
   6939  1.1  riastrad 	continue
   6940  1.1  riastrad 	;;
   6941  1.1  riastrad 
   6942  1.1  riastrad       -inst-prefix-dir)
   6943  1.1  riastrad 	prev=inst_prefix
   6944  1.1  riastrad 	continue
   6945  1.1  riastrad 	;;
   6946  1.1  riastrad 
   6947  1.1  riastrad       # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
   6948  1.1  riastrad       # so, if we see these flags be careful not to treat them like -L
   6949  1.1  riastrad       -L[A-Z][A-Z]*:*)
   6950  1.1  riastrad 	case $with_gcc/$host in
   6951  1.1  riastrad 	no/*-*-irix* | /*-*-irix*)
   6952  1.1  riastrad 	  func_append compile_command " $arg"
   6953  1.1  riastrad 	  func_append finalize_command " $arg"
   6954  1.1  riastrad 	  ;;
   6955  1.1  riastrad 	esac
   6956  1.1  riastrad 	continue
   6957  1.1  riastrad 	;;
   6958  1.1  riastrad 
   6959  1.1  riastrad       -L*)
   6960  1.1  riastrad 	func_stripname "-L" '' "$arg"
   6961  1.1  riastrad 	if test -z "$func_stripname_result"; then
   6962  1.1  riastrad 	  if test "$#" -gt 0; then
   6963  1.1  riastrad 	    func_fatal_error "require no space between '-L' and '$1'"
   6964  1.1  riastrad 	  else
   6965  1.1  riastrad 	    func_fatal_error "need path for '-L' option"
   6966  1.1  riastrad 	  fi
   6967  1.1  riastrad 	fi
   6968  1.1  riastrad 	func_resolve_sysroot "$func_stripname_result"
   6969  1.1  riastrad 	dir=$func_resolve_sysroot_result
   6970  1.1  riastrad 	# We need an absolute path.
   6971  1.1  riastrad 	case $dir in
   6972  1.1  riastrad 	[\\/]* | [A-Za-z]:[\\/]*) ;;
   6973  1.1  riastrad 	*)
   6974  1.1  riastrad 	  absdir=`cd "$dir" && pwd`
   6975  1.1  riastrad 	  test -z "$absdir" && \
   6976  1.1  riastrad 	    func_fatal_error "cannot determine absolute directory name of '$dir'"
   6977  1.1  riastrad 	  dir=$absdir
   6978  1.1  riastrad 	  ;;
   6979  1.1  riastrad 	esac
   6980  1.1  riastrad 	case "$deplibs " in
   6981  1.1  riastrad 	*" -L$dir "* | *" $arg "*)
   6982  1.1  riastrad 	  # Will only happen for absolute or sysroot arguments
   6983  1.1  riastrad 	  ;;
   6984  1.1  riastrad 	*)
   6985  1.1  riastrad 	  # Preserve sysroot, but never include relative directories
   6986  1.1  riastrad 	  case $dir in
   6987  1.1  riastrad 	    [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;;
   6988  1.1  riastrad 	    *) func_append deplibs " -L$dir" ;;
   6989  1.1  riastrad 	  esac
   6990  1.1  riastrad 	  func_append lib_search_path " $dir"
   6991  1.1  riastrad 	  ;;
   6992  1.1  riastrad 	esac
   6993  1.1  riastrad 	case $host in
   6994  1.1  riastrad 	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
   6995  1.1  riastrad 	  testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'`
   6996  1.1  riastrad 	  case :$dllsearchpath: in
   6997  1.1  riastrad 	  *":$dir:"*) ;;
   6998  1.1  riastrad 	  ::) dllsearchpath=$dir;;
   6999  1.1  riastrad 	  *) func_append dllsearchpath ":$dir";;
   7000  1.1  riastrad 	  esac
   7001  1.1  riastrad 	  case :$dllsearchpath: in
   7002  1.1  riastrad 	  *":$testbindir:"*) ;;
   7003  1.1  riastrad 	  ::) dllsearchpath=$testbindir;;
   7004  1.1  riastrad 	  *) func_append dllsearchpath ":$testbindir";;
   7005  1.1  riastrad 	  esac
   7006  1.1  riastrad 	  ;;
   7007  1.1  riastrad 	esac
   7008  1.1  riastrad 	continue
   7009  1.1  riastrad 	;;
   7010  1.1  riastrad 
   7011  1.1  riastrad       -l*)
   7012  1.1  riastrad 	if test X-lc = "X$arg" || test X-lm = "X$arg"; then
   7013  1.1  riastrad 	  case $host in
   7014  1.1  riastrad 	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*)
   7015  1.1  riastrad 	    # These systems don't actually have a C or math library (as such)
   7016  1.1  riastrad 	    continue
   7017  1.1  riastrad 	    ;;
   7018  1.1  riastrad 	  *-*-os2*)
   7019  1.1  riastrad 	    # These systems don't actually have a C library (as such)
   7020  1.1  riastrad 	    test X-lc = "X$arg" && continue
   7021  1.1  riastrad 	    ;;
   7022  1.1  riastrad 	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*)
   7023  1.1  riastrad 	    # Do not include libc due to us having libc/libc_r.
   7024  1.1  riastrad 	    test X-lc = "X$arg" && continue
   7025  1.1  riastrad 	    ;;
   7026  1.1  riastrad 	  *-*-rhapsody* | *-*-darwin1.[012])
   7027  1.1  riastrad 	    # Rhapsody C and math libraries are in the System framework
   7028  1.1  riastrad 	    func_append deplibs " System.ltframework"
   7029  1.1  riastrad 	    continue
   7030  1.1  riastrad 	    ;;
   7031  1.1  riastrad 	  *-*-sco3.2v5* | *-*-sco5v6*)
   7032  1.1  riastrad 	    # Causes problems with __ctype
   7033  1.1  riastrad 	    test X-lc = "X$arg" && continue
   7034  1.1  riastrad 	    ;;
   7035  1.1  riastrad 	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
   7036  1.1  riastrad 	    # Compiler inserts libc in the correct place for threads to work
   7037  1.1  riastrad 	    test X-lc = "X$arg" && continue
   7038  1.1  riastrad 	    ;;
   7039  1.1  riastrad 	  esac
   7040  1.1  riastrad 	elif test X-lc_r = "X$arg"; then
   7041  1.1  riastrad 	 case $host in
   7042  1.1  riastrad 	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*)
   7043  1.1  riastrad 	   # Do not include libc_r directly, use -pthread flag.
   7044  1.1  riastrad 	   continue
   7045  1.1  riastrad 	   ;;
   7046  1.1  riastrad 	 esac
   7047  1.1  riastrad 	fi
   7048  1.1  riastrad 	func_append deplibs " $arg"
   7049  1.1  riastrad 	continue
   7050  1.1  riastrad 	;;
   7051  1.1  riastrad 
   7052  1.1  riastrad       -mllvm)
   7053  1.1  riastrad 	prev=mllvm
   7054  1.1  riastrad 	continue
   7055  1.1  riastrad 	;;
   7056  1.1  riastrad 
   7057  1.1  riastrad       -module)
   7058  1.1  riastrad 	module=yes
   7059  1.1  riastrad 	continue
   7060  1.1  riastrad 	;;
   7061  1.1  riastrad 
   7062  1.1  riastrad       # Tru64 UNIX uses -model [arg] to determine the layout of C++
   7063  1.1  riastrad       # classes, name mangling, and exception handling.
   7064  1.1  riastrad       # Darwin uses the -arch flag to determine output architecture.
   7065  1.1  riastrad       -model|-arch|-isysroot|--sysroot)
   7066  1.1  riastrad 	func_append compiler_flags " $arg"
   7067  1.1  riastrad 	func_append compile_command " $arg"
   7068  1.1  riastrad 	func_append finalize_command " $arg"
   7069  1.1  riastrad 	prev=xcompiler
   7070  1.1  riastrad 	continue
   7071  1.1  riastrad 	;;
   7072  1.1  riastrad 
   7073  1.1  riastrad       -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
   7074  1.1  riastrad       |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
   7075  1.1  riastrad 	func_append compiler_flags " $arg"
   7076  1.1  riastrad 	func_append compile_command " $arg"
   7077  1.1  riastrad 	func_append finalize_command " $arg"
   7078  1.1  riastrad 	case "$new_inherited_linker_flags " in
   7079  1.1  riastrad 	    *" $arg "*) ;;
   7080  1.1  riastrad 	    * ) func_append new_inherited_linker_flags " $arg" ;;
   7081  1.1  riastrad 	esac
   7082  1.1  riastrad 	continue
   7083  1.1  riastrad 	;;
   7084  1.1  riastrad 
   7085  1.1  riastrad       -multi_module)
   7086  1.1  riastrad 	single_module=$wl-multi_module
   7087  1.1  riastrad 	continue
   7088  1.1  riastrad 	;;
   7089  1.1  riastrad 
   7090  1.1  riastrad       -no-fast-install)
   7091  1.1  riastrad 	fast_install=no
   7092  1.1  riastrad 	continue
   7093  1.1  riastrad 	;;
   7094  1.1  riastrad 
   7095  1.1  riastrad       -no-install)
   7096  1.1  riastrad 	case $host in
   7097  1.1  riastrad 	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
   7098  1.1  riastrad 	  # The PATH hackery in wrapper scripts is required on Windows
   7099  1.1  riastrad 	  # and Darwin in order for the loader to find any dlls it needs.
   7100  1.1  riastrad 	  func_warning "'-no-install' is ignored for $host"
   7101  1.1  riastrad 	  func_warning "assuming '-no-fast-install' instead"
   7102  1.1  riastrad 	  fast_install=no
   7103  1.1  riastrad 	  ;;
   7104  1.1  riastrad 	*) no_install=yes ;;
   7105  1.1  riastrad 	esac
   7106  1.1  riastrad 	continue
   7107  1.1  riastrad 	;;
   7108  1.1  riastrad 
   7109  1.1  riastrad       -no-undefined)
   7110  1.1  riastrad 	allow_undefined=no
   7111  1.1  riastrad 	continue
   7112  1.1  riastrad 	;;
   7113  1.1  riastrad 
   7114  1.1  riastrad       -objectlist)
   7115  1.1  riastrad 	prev=objectlist
   7116  1.1  riastrad 	continue
   7117  1.1  riastrad 	;;
   7118  1.1  riastrad 
   7119  1.1  riastrad       -os2dllname)
   7120  1.1  riastrad 	prev=os2dllname
   7121  1.1  riastrad 	continue
   7122  1.1  riastrad 	;;
   7123  1.1  riastrad 
   7124  1.1  riastrad       -o) prev=output ;;
   7125  1.1  riastrad 
   7126  1.1  riastrad       -precious-files-regex)
   7127  1.1  riastrad 	prev=precious_regex
   7128  1.1  riastrad 	continue
   7129  1.1  riastrad 	;;
   7130  1.1  riastrad 
   7131  1.1  riastrad       -release)
   7132  1.1  riastrad 	prev=release
   7133  1.1  riastrad 	continue
   7134  1.1  riastrad 	;;
   7135  1.1  riastrad 
   7136  1.1  riastrad       -rpath)
   7137  1.1  riastrad 	prev=rpath
   7138  1.1  riastrad 	continue
   7139  1.1  riastrad 	;;
   7140  1.1  riastrad 
   7141  1.1  riastrad       -R)
   7142  1.1  riastrad 	prev=xrpath
   7143  1.1  riastrad 	continue
   7144  1.1  riastrad 	;;
   7145  1.1  riastrad 
   7146  1.1  riastrad       -R*)
   7147  1.1  riastrad 	func_stripname '-R' '' "$arg"
   7148  1.1  riastrad 	dir=$func_stripname_result
   7149  1.1  riastrad 	# We need an absolute path.
   7150  1.1  riastrad 	case $dir in
   7151  1.1  riastrad 	[\\/]* | [A-Za-z]:[\\/]*) ;;
   7152  1.1  riastrad 	=*)
   7153  1.1  riastrad 	  func_stripname '=' '' "$dir"
   7154  1.1  riastrad 	  dir=$lt_sysroot$func_stripname_result
   7155  1.1  riastrad 	  ;;
   7156  1.1  riastrad 	*)
   7157  1.1  riastrad 	  func_fatal_error "only absolute run-paths are allowed"
   7158  1.1  riastrad 	  ;;
   7159  1.1  riastrad 	esac
   7160  1.1  riastrad 	case "$xrpath " in
   7161  1.1  riastrad 	*" $dir "*) ;;
   7162  1.1  riastrad 	*) func_append xrpath " $dir" ;;
   7163  1.1  riastrad 	esac
   7164  1.1  riastrad 	continue
   7165  1.1  riastrad 	;;
   7166  1.1  riastrad 
   7167  1.1  riastrad       -shared)
   7168  1.1  riastrad 	# The effects of -shared are defined in a previous loop.
   7169  1.1  riastrad 	continue
   7170  1.1  riastrad 	;;
   7171  1.1  riastrad 
   7172  1.1  riastrad       -shrext)
   7173  1.1  riastrad 	prev=shrext
   7174  1.1  riastrad 	continue
   7175  1.1  riastrad 	;;
   7176  1.1  riastrad 
   7177  1.1  riastrad       -static | -static-libtool-libs)
   7178  1.1  riastrad 	# The effects of -static are defined in a previous loop.
   7179  1.1  riastrad 	# We used to do the same as -all-static on platforms that
   7180  1.1  riastrad 	# didn't have a PIC flag, but the assumption that the effects
   7181  1.1  riastrad 	# would be equivalent was wrong.  It would break on at least
   7182  1.1  riastrad 	# Digital Unix and AIX.
   7183  1.1  riastrad 	continue
   7184  1.1  riastrad 	;;
   7185  1.1  riastrad 
   7186  1.1  riastrad       -thread-safe)
   7187  1.1  riastrad 	thread_safe=yes
   7188  1.1  riastrad 	continue
   7189  1.1  riastrad 	;;
   7190  1.1  riastrad 
   7191  1.1  riastrad       -version-info)
   7192  1.1  riastrad 	prev=vinfo
   7193  1.1  riastrad 	continue
   7194  1.1  riastrad 	;;
   7195  1.1  riastrad 
   7196  1.1  riastrad       -version-number)
   7197  1.1  riastrad 	prev=vinfo
   7198  1.1  riastrad 	vinfo_number=yes
   7199  1.1  riastrad 	continue
   7200  1.1  riastrad 	;;
   7201  1.1  riastrad 
   7202  1.1  riastrad       -weak)
   7203  1.1  riastrad         prev=weak
   7204  1.1  riastrad 	continue
   7205  1.1  riastrad 	;;
   7206  1.1  riastrad 
   7207  1.1  riastrad       -Wc,*)
   7208  1.1  riastrad 	func_stripname '-Wc,' '' "$arg"
   7209  1.1  riastrad 	args=$func_stripname_result
   7210  1.1  riastrad 	arg=
   7211  1.1  riastrad 	save_ifs=$IFS; IFS=,
   7212  1.1  riastrad 	for flag in $args; do
   7213  1.1  riastrad 	  IFS=$save_ifs
   7214  1.1  riastrad           func_quote_for_eval "$flag"
   7215  1.1  riastrad 	  func_append arg " $func_quote_for_eval_result"
   7216  1.1  riastrad 	  func_append compiler_flags " $func_quote_for_eval_result"
   7217  1.1  riastrad 	done
   7218  1.1  riastrad 	IFS=$save_ifs
   7219  1.1  riastrad 	func_stripname ' ' '' "$arg"
   7220  1.1  riastrad 	arg=$func_stripname_result
   7221  1.1  riastrad 	;;
   7222  1.1  riastrad 
   7223  1.1  riastrad       -Wl,*)
   7224  1.1  riastrad 	func_stripname '-Wl,' '' "$arg"
   7225  1.1  riastrad 	args=$func_stripname_result
   7226  1.1  riastrad 	arg=
   7227  1.1  riastrad 	save_ifs=$IFS; IFS=,
   7228  1.1  riastrad 	for flag in $args; do
   7229  1.1  riastrad 	  IFS=$save_ifs
   7230  1.1  riastrad           func_quote_for_eval "$flag"
   7231  1.1  riastrad 	  func_append arg " $wl$func_quote_for_eval_result"
   7232  1.1  riastrad 	  func_append compiler_flags " $wl$func_quote_for_eval_result"
   7233  1.1  riastrad 	  func_append linker_flags " $func_quote_for_eval_result"
   7234  1.1  riastrad 	done
   7235  1.1  riastrad 	IFS=$save_ifs
   7236  1.1  riastrad 	func_stripname ' ' '' "$arg"
   7237  1.1  riastrad 	arg=$func_stripname_result
   7238  1.1  riastrad 	;;
   7239  1.1  riastrad 
   7240  1.1  riastrad       -Xcompiler)
   7241  1.1  riastrad 	prev=xcompiler
   7242  1.1  riastrad 	continue
   7243  1.1  riastrad 	;;
   7244  1.1  riastrad 
   7245  1.1  riastrad       -Xlinker)
   7246  1.1  riastrad 	prev=xlinker
   7247  1.1  riastrad 	continue
   7248  1.1  riastrad 	;;
   7249  1.1  riastrad 
   7250  1.1  riastrad       -XCClinker)
   7251  1.1  riastrad 	prev=xcclinker
   7252  1.1  riastrad 	continue
   7253  1.1  riastrad 	;;
   7254  1.1  riastrad 
   7255  1.1  riastrad       # -msg_* for osf cc
   7256  1.1  riastrad       -msg_*)
   7257  1.1  riastrad 	func_quote_for_eval "$arg"
   7258  1.1  riastrad 	arg=$func_quote_for_eval_result
   7259  1.1  riastrad 	;;
   7260  1.1  riastrad 
   7261  1.1  riastrad       # Flags to be passed through unchanged, with rationale:
   7262  1.1  riastrad       # -64, -mips[0-9]      enable 64-bit mode for the SGI compiler
   7263  1.1  riastrad       # -r[0-9][0-9]*        specify processor for the SGI compiler
   7264  1.1  riastrad       # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler
   7265  1.1  riastrad       # +DA*, +DD*           enable 64-bit mode for the HP compiler
   7266  1.1  riastrad       # -q*                  compiler args for the IBM compiler
   7267  1.1  riastrad       # -m*, -t[45]*, -txscale* architecture-specific flags for GCC
   7268  1.1  riastrad       # -F/path              path to uninstalled frameworks, gcc on darwin
   7269  1.1  riastrad       # -p, -pg, --coverage, -fprofile-*  profiling flags for GCC
   7270  1.1  riastrad       # -fstack-protector*   stack protector flags for GCC
   7271  1.1  riastrad       # @file                GCC response files
   7272  1.1  riastrad       # -tp=*                Portland pgcc target processor selection
   7273  1.1  riastrad       # --sysroot=*          for sysroot support
   7274  1.1  riastrad       # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
   7275  1.1  riastrad       # -stdlib=*            select c++ std lib with clang
   7276  1.1  riastrad       -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
   7277  1.1  riastrad       -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
   7278  1.1  riastrad       -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*)
   7279  1.1  riastrad         func_quote_for_eval "$arg"
   7280  1.1  riastrad 	arg=$func_quote_for_eval_result
   7281  1.1  riastrad         func_append compile_command " $arg"
   7282  1.1  riastrad         func_append finalize_command " $arg"
   7283  1.1  riastrad         func_append compiler_flags " $arg"
   7284  1.1  riastrad         continue
   7285  1.1  riastrad         ;;
   7286  1.1  riastrad 
   7287  1.1  riastrad       -Z*)
   7288  1.1  riastrad         if test os2 = "`expr $host : '.*\(os2\)'`"; then
   7289  1.1  riastrad           # OS/2 uses -Zxxx to specify OS/2-specific options
   7290  1.1  riastrad 	  compiler_flags="$compiler_flags $arg"
   7291  1.1  riastrad 	  func_append compile_command " $arg"
   7292  1.1  riastrad 	  func_append finalize_command " $arg"
   7293  1.1  riastrad 	  case $arg in
   7294  1.1  riastrad 	  -Zlinker | -Zstack)
   7295  1.1  riastrad 	    prev=xcompiler
   7296  1.1  riastrad 	    ;;
   7297  1.1  riastrad 	  esac
   7298  1.1  riastrad 	  continue
   7299  1.1  riastrad         else
   7300  1.1  riastrad 	  # Otherwise treat like 'Some other compiler flag' below
   7301  1.1  riastrad 	  func_quote_for_eval "$arg"
   7302  1.1  riastrad 	  arg=$func_quote_for_eval_result
   7303  1.1  riastrad         fi
   7304  1.1  riastrad 	;;
   7305  1.1  riastrad 
   7306  1.1  riastrad       # Some other compiler flag.
   7307  1.1  riastrad       -* | +*)
   7308  1.1  riastrad         func_quote_for_eval "$arg"
   7309  1.1  riastrad 	arg=$func_quote_for_eval_result
   7310  1.1  riastrad 	;;
   7311  1.1  riastrad 
   7312  1.1  riastrad       *.$objext)
   7313  1.1  riastrad 	# A standard object.
   7314  1.1  riastrad 	func_append objs " $arg"
   7315  1.1  riastrad 	;;
   7316  1.1  riastrad 
   7317  1.1  riastrad       *.lo)
   7318  1.1  riastrad 	# A libtool-controlled object.
   7319  1.1  riastrad 
   7320  1.1  riastrad 	# Check to see that this really is a libtool object.
   7321  1.1  riastrad 	if func_lalib_unsafe_p "$arg"; then
   7322  1.1  riastrad 	  pic_object=
   7323  1.1  riastrad 	  non_pic_object=
   7324  1.1  riastrad 
   7325  1.1  riastrad 	  # Read the .lo file
   7326  1.1  riastrad 	  func_source "$arg"
   7327  1.1  riastrad 
   7328  1.1  riastrad 	  if test -z "$pic_object" ||
   7329  1.1  riastrad 	     test -z "$non_pic_object" ||
   7330  1.1  riastrad 	     test none = "$pic_object" &&
   7331  1.1  riastrad 	     test none = "$non_pic_object"; then
   7332  1.1  riastrad 	    func_fatal_error "cannot find name of object for '$arg'"
   7333  1.1  riastrad 	  fi
   7334  1.1  riastrad 
   7335  1.1  riastrad 	  # Extract subdirectory from the argument.
   7336  1.1  riastrad 	  func_dirname "$arg" "/" ""
   7337  1.1  riastrad 	  xdir=$func_dirname_result
   7338  1.1  riastrad 
   7339  1.1  riastrad 	  test none = "$pic_object" || {
   7340  1.1  riastrad 	    # Prepend the subdirectory the object is found in.
   7341  1.1  riastrad 	    pic_object=$xdir$pic_object
   7342  1.1  riastrad 
   7343  1.1  riastrad 	    if test dlfiles = "$prev"; then
   7344  1.1  riastrad 	      if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then
   7345  1.1  riastrad 		func_append dlfiles " $pic_object"
   7346  1.1  riastrad 		prev=
   7347  1.1  riastrad 		continue
   7348  1.1  riastrad 	      else
   7349  1.1  riastrad 		# If libtool objects are unsupported, then we need to preload.
   7350  1.1  riastrad 		prev=dlprefiles
   7351  1.1  riastrad 	      fi
   7352  1.1  riastrad 	    fi
   7353  1.1  riastrad 
   7354  1.1  riastrad 	    # CHECK ME:  I think I busted this.  -Ossama
   7355  1.1  riastrad 	    if test dlprefiles = "$prev"; then
   7356  1.1  riastrad 	      # Preload the old-style object.
   7357  1.1  riastrad 	      func_append dlprefiles " $pic_object"
   7358  1.1  riastrad 	      prev=
   7359  1.1  riastrad 	    fi
   7360  1.1  riastrad 
   7361  1.1  riastrad 	    # A PIC object.
   7362  1.1  riastrad 	    func_append libobjs " $pic_object"
   7363  1.1  riastrad 	    arg=$pic_object
   7364  1.1  riastrad 	  }
   7365  1.1  riastrad 
   7366  1.1  riastrad 	  # Non-PIC object.
   7367  1.1  riastrad 	  if test none != "$non_pic_object"; then
   7368  1.1  riastrad 	    # Prepend the subdirectory the object is found in.
   7369  1.1  riastrad 	    non_pic_object=$xdir$non_pic_object
   7370  1.1  riastrad 
   7371  1.1  riastrad 	    # A standard non-PIC object
   7372  1.1  riastrad 	    func_append non_pic_objects " $non_pic_object"
   7373  1.1  riastrad 	    if test -z "$pic_object" || test none = "$pic_object"; then
   7374  1.1  riastrad 	      arg=$non_pic_object
   7375  1.1  riastrad 	    fi
   7376  1.1  riastrad 	  else
   7377  1.1  riastrad 	    # If the PIC object exists, use it instead.
   7378  1.1  riastrad 	    # $xdir was prepended to $pic_object above.
   7379  1.1  riastrad 	    non_pic_object=$pic_object
   7380  1.1  riastrad 	    func_append non_pic_objects " $non_pic_object"
   7381  1.1  riastrad 	  fi
   7382  1.1  riastrad 	else
   7383  1.1  riastrad 	  # Only an error if not doing a dry-run.
   7384  1.1  riastrad 	  if $opt_dry_run; then
   7385  1.1  riastrad 	    # Extract subdirectory from the argument.
   7386  1.1  riastrad 	    func_dirname "$arg" "/" ""
   7387  1.1  riastrad 	    xdir=$func_dirname_result
   7388  1.1  riastrad 
   7389  1.1  riastrad 	    func_lo2o "$arg"
   7390  1.1  riastrad 	    pic_object=$xdir$objdir/$func_lo2o_result
   7391  1.1  riastrad 	    non_pic_object=$xdir$func_lo2o_result
   7392  1.1  riastrad 	    func_append libobjs " $pic_object"
   7393  1.1  riastrad 	    func_append non_pic_objects " $non_pic_object"
   7394  1.1  riastrad 	  else
   7395  1.1  riastrad 	    func_fatal_error "'$arg' is not a valid libtool object"
   7396  1.1  riastrad 	  fi
   7397  1.1  riastrad 	fi
   7398  1.1  riastrad 	;;
   7399  1.1  riastrad 
   7400  1.1  riastrad       *.$libext)
   7401  1.1  riastrad 	# An archive.
   7402  1.1  riastrad 	func_append deplibs " $arg"
   7403  1.1  riastrad 	func_append old_deplibs " $arg"
   7404  1.1  riastrad 	continue
   7405  1.1  riastrad 	;;
   7406  1.1  riastrad 
   7407  1.1  riastrad       *.la)
   7408  1.1  riastrad 	# A libtool-controlled library.
   7409  1.1  riastrad 
   7410  1.1  riastrad 	func_resolve_sysroot "$arg"
   7411  1.1  riastrad 	if test dlfiles = "$prev"; then
   7412  1.1  riastrad 	  # This library was specified with -dlopen.
   7413  1.1  riastrad 	  func_append dlfiles " $func_resolve_sysroot_result"
   7414  1.1  riastrad 	  prev=
   7415  1.1  riastrad 	elif test dlprefiles = "$prev"; then
   7416  1.1  riastrad 	  # The library was specified with -dlpreopen.
   7417  1.1  riastrad 	  func_append dlprefiles " $func_resolve_sysroot_result"
   7418  1.1  riastrad 	  prev=
   7419  1.1  riastrad 	else
   7420  1.1  riastrad 	  func_append deplibs " $func_resolve_sysroot_result"
   7421  1.1  riastrad 	fi
   7422  1.1  riastrad 	continue
   7423  1.1  riastrad 	;;
   7424  1.1  riastrad 
   7425  1.1  riastrad       # Some other compiler argument.
   7426  1.1  riastrad       *)
   7427  1.1  riastrad 	# Unknown arguments in both finalize_command and compile_command need
   7428  1.1  riastrad 	# to be aesthetically quoted because they are evaled later.
   7429  1.1  riastrad 	func_quote_for_eval "$arg"
   7430  1.1  riastrad 	arg=$func_quote_for_eval_result
   7431  1.1  riastrad 	;;
   7432  1.1  riastrad       esac # arg
   7433  1.1  riastrad 
   7434  1.1  riastrad       # Now actually substitute the argument into the commands.
   7435  1.1  riastrad       if test -n "$arg"; then
   7436  1.1  riastrad 	func_append compile_command " $arg"
   7437  1.1  riastrad 	func_append finalize_command " $arg"
   7438  1.1  riastrad       fi
   7439  1.1  riastrad     done # argument parsing loop
   7440  1.1  riastrad 
   7441  1.1  riastrad     test -n "$prev" && \
   7442  1.1  riastrad       func_fatal_help "the '$prevarg' option requires an argument"
   7443  1.1  riastrad 
   7444  1.1  riastrad     if test yes = "$export_dynamic" && test -n "$export_dynamic_flag_spec"; then
   7445  1.1  riastrad       eval arg=\"$export_dynamic_flag_spec\"
   7446  1.1  riastrad       func_append compile_command " $arg"
   7447  1.1  riastrad       func_append finalize_command " $arg"
   7448  1.1  riastrad     fi
   7449  1.1  riastrad 
   7450  1.1  riastrad     oldlibs=
   7451  1.1  riastrad     # calculate the name of the file, without its directory
   7452  1.1  riastrad     func_basename "$output"
   7453  1.1  riastrad     outputname=$func_basename_result
   7454  1.1  riastrad     libobjs_save=$libobjs
   7455  1.1  riastrad 
   7456  1.1  riastrad     if test -n "$shlibpath_var"; then
   7457  1.1  riastrad       # get the directories listed in $shlibpath_var
   7458  1.1  riastrad       eval shlib_search_path=\`\$ECHO \"\$$shlibpath_var\" \| \$SED \'s/:/ /g\'\`
   7459  1.1  riastrad     else
   7460  1.1  riastrad       shlib_search_path=
   7461  1.1  riastrad     fi
   7462  1.1  riastrad     eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
   7463  1.1  riastrad     eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
   7464  1.1  riastrad 
   7465  1.1  riastrad     # Definition is injected by LT_CONFIG during libtool generation.
   7466  1.1  riastrad     func_munge_path_list sys_lib_dlsearch_path "$LT_SYS_LIBRARY_PATH"
   7467  1.1  riastrad 
   7468  1.1  riastrad     func_dirname "$output" "/" ""
   7469  1.1  riastrad     output_objdir=$func_dirname_result$objdir
   7470  1.1  riastrad     func_to_tool_file "$output_objdir/"
   7471  1.1  riastrad     tool_output_objdir=$func_to_tool_file_result
   7472  1.1  riastrad     # Create the object directory.
   7473  1.1  riastrad     func_mkdir_p "$output_objdir"
   7474  1.1  riastrad 
   7475  1.1  riastrad     # Determine the type of output
   7476  1.1  riastrad     case $output in
   7477  1.1  riastrad     "")
   7478  1.1  riastrad       func_fatal_help "you must specify an output file"
   7479  1.1  riastrad       ;;
   7480  1.1  riastrad     *.$libext) linkmode=oldlib ;;
   7481  1.1  riastrad     *.lo | *.$objext) linkmode=obj ;;
   7482  1.1  riastrad     *.la) linkmode=lib ;;
   7483  1.1  riastrad     *) linkmode=prog ;; # Anything else should be a program.
   7484  1.1  riastrad     esac
   7485  1.1  riastrad 
   7486  1.1  riastrad     specialdeplibs=
   7487  1.1  riastrad 
   7488  1.1  riastrad     libs=
   7489  1.1  riastrad     # Find all interdependent deplibs by searching for libraries
   7490  1.1  riastrad     # that are linked more than once (e.g. -la -lb -la)
   7491  1.1  riastrad     for deplib in $deplibs; do
   7492  1.1  riastrad       if $opt_preserve_dup_deps; then
   7493  1.1  riastrad 	case "$libs " in
   7494  1.1  riastrad 	*" $deplib "*) func_append specialdeplibs " $deplib" ;;
   7495  1.1  riastrad 	esac
   7496  1.1  riastrad       fi
   7497  1.1  riastrad       func_append libs " $deplib"
   7498  1.1  riastrad     done
   7499  1.1  riastrad 
   7500  1.1  riastrad     if test lib = "$linkmode"; then
   7501  1.1  riastrad       libs="$predeps $libs $compiler_lib_search_path $postdeps"
   7502  1.1  riastrad 
   7503  1.1  riastrad       # Compute libraries that are listed more than once in $predeps
   7504  1.1  riastrad       # $postdeps and mark them as special (i.e., whose duplicates are
   7505  1.1  riastrad       # not to be eliminated).
   7506  1.1  riastrad       pre_post_deps=
   7507  1.1  riastrad       if $opt_duplicate_compiler_generated_deps; then
   7508  1.1  riastrad 	for pre_post_dep in $predeps $postdeps; do
   7509  1.1  riastrad 	  case "$pre_post_deps " in
   7510  1.1  riastrad 	  *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;;
   7511  1.1  riastrad 	  esac
   7512  1.1  riastrad 	  func_append pre_post_deps " $pre_post_dep"
   7513  1.1  riastrad 	done
   7514  1.1  riastrad       fi
   7515  1.1  riastrad       pre_post_deps=
   7516  1.1  riastrad     fi
   7517  1.1  riastrad 
   7518  1.1  riastrad     deplibs=
   7519  1.1  riastrad     newdependency_libs=
   7520  1.1  riastrad     newlib_search_path=
   7521  1.1  riastrad     need_relink=no # whether we're linking any uninstalled libtool libraries
   7522  1.1  riastrad     notinst_deplibs= # not-installed libtool libraries
   7523  1.1  riastrad     notinst_path= # paths that contain not-installed libtool libraries
   7524  1.1  riastrad 
   7525  1.1  riastrad     case $linkmode in
   7526  1.1  riastrad     lib)
   7527  1.1  riastrad 	passes="conv dlpreopen link"
   7528  1.1  riastrad 	for file in $dlfiles $dlprefiles; do
   7529  1.1  riastrad 	  case $file in
   7530  1.1  riastrad 	  *.la) ;;
   7531  1.1  riastrad 	  *)
   7532  1.1  riastrad 	    func_fatal_help "libraries can '-dlopen' only libtool libraries: $file"
   7533  1.1  riastrad 	    ;;
   7534  1.1  riastrad 	  esac
   7535  1.1  riastrad 	done
   7536  1.1  riastrad 	;;
   7537  1.1  riastrad     prog)
   7538  1.1  riastrad 	compile_deplibs=
   7539  1.1  riastrad 	finalize_deplibs=
   7540  1.1  riastrad 	alldeplibs=false
   7541  1.1  riastrad 	newdlfiles=
   7542  1.1  riastrad 	newdlprefiles=
   7543  1.1  riastrad 	passes="conv scan dlopen dlpreopen link"
   7544  1.1  riastrad 	;;
   7545  1.1  riastrad     *)  passes="conv"
   7546  1.1  riastrad 	;;
   7547  1.1  riastrad     esac
   7548  1.1  riastrad 
   7549  1.1  riastrad     for pass in $passes; do
   7550  1.1  riastrad       # The preopen pass in lib mode reverses $deplibs; put it back here
   7551  1.1  riastrad       # so that -L comes before libs that need it for instance...
   7552  1.1  riastrad       if test lib,link = "$linkmode,$pass"; then
   7553  1.1  riastrad 	## FIXME: Find the place where the list is rebuilt in the wrong
   7554  1.1  riastrad 	##        order, and fix it there properly
   7555  1.1  riastrad         tmp_deplibs=
   7556  1.1  riastrad 	for deplib in $deplibs; do
   7557  1.1  riastrad 	  tmp_deplibs="$deplib $tmp_deplibs"
   7558  1.1  riastrad 	done
   7559  1.1  riastrad 	deplibs=$tmp_deplibs
   7560  1.1  riastrad       fi
   7561  1.1  riastrad 
   7562  1.1  riastrad       if test lib,link = "$linkmode,$pass" ||
   7563  1.1  riastrad 	 test prog,scan = "$linkmode,$pass"; then
   7564  1.1  riastrad 	libs=$deplibs
   7565  1.1  riastrad 	deplibs=
   7566  1.1  riastrad       fi
   7567  1.1  riastrad       if test prog = "$linkmode"; then
   7568  1.1  riastrad 	case $pass in
   7569  1.1  riastrad 	dlopen) libs=$dlfiles ;;
   7570  1.1  riastrad 	dlpreopen) libs=$dlprefiles ;;
   7571  1.1  riastrad 	link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
   7572  1.1  riastrad 	esac
   7573  1.1  riastrad       fi
   7574  1.1  riastrad       if test lib,dlpreopen = "$linkmode,$pass"; then
   7575  1.1  riastrad 	# Collect and forward deplibs of preopened libtool libs
   7576  1.1  riastrad 	for lib in $dlprefiles; do
   7577  1.1  riastrad 	  # Ignore non-libtool-libs
   7578  1.1  riastrad 	  dependency_libs=
   7579  1.1  riastrad 	  func_resolve_sysroot "$lib"
   7580  1.1  riastrad 	  case $lib in
   7581  1.1  riastrad 	  *.la)	func_source "$func_resolve_sysroot_result" ;;
   7582  1.1  riastrad 	  esac
   7583  1.1  riastrad 
   7584  1.1  riastrad 	  # Collect preopened libtool deplibs, except any this library
   7585  1.1  riastrad 	  # has declared as weak libs
   7586  1.1  riastrad 	  for deplib in $dependency_libs; do
   7587  1.1  riastrad 	    func_basename "$deplib"
   7588  1.1  riastrad             deplib_base=$func_basename_result
   7589  1.1  riastrad 	    case " $weak_libs " in
   7590  1.1  riastrad 	    *" $deplib_base "*) ;;
   7591  1.1  riastrad 	    *) func_append deplibs " $deplib" ;;
   7592  1.1  riastrad 	    esac
   7593  1.1  riastrad 	  done
   7594  1.1  riastrad 	done
   7595  1.1  riastrad 	libs=$dlprefiles
   7596  1.1  riastrad       fi
   7597  1.1  riastrad       if test dlopen = "$pass"; then
   7598  1.1  riastrad 	# Collect dlpreopened libraries
   7599  1.1  riastrad 	save_deplibs=$deplibs
   7600  1.1  riastrad 	deplibs=
   7601  1.1  riastrad       fi
   7602  1.1  riastrad 
   7603  1.1  riastrad       for deplib in $libs; do
   7604  1.1  riastrad 	lib=
   7605  1.1  riastrad 	found=false
   7606  1.1  riastrad 	case $deplib in
   7607  1.1  riastrad 	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
   7608  1.1  riastrad         |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
   7609  1.1  riastrad 	  if test prog,link = "$linkmode,$pass"; then
   7610  1.1  riastrad 	    compile_deplibs="$deplib $compile_deplibs"
   7611  1.1  riastrad 	    finalize_deplibs="$deplib $finalize_deplibs"
   7612  1.1  riastrad 	  else
   7613  1.1  riastrad 	    func_append compiler_flags " $deplib"
   7614  1.1  riastrad 	    if test lib = "$linkmode"; then
   7615  1.1  riastrad 		case "$new_inherited_linker_flags " in
   7616  1.1  riastrad 		    *" $deplib "*) ;;
   7617  1.1  riastrad 		    * ) func_append new_inherited_linker_flags " $deplib" ;;
   7618  1.1  riastrad 		esac
   7619  1.1  riastrad 	    fi
   7620  1.1  riastrad 	  fi
   7621  1.1  riastrad 	  continue
   7622  1.1  riastrad 	  ;;
   7623  1.1  riastrad 	-l*)
   7624  1.1  riastrad 	  if test lib != "$linkmode" && test prog != "$linkmode"; then
   7625  1.1  riastrad 	    func_warning "'-l' is ignored for archives/objects"
   7626  1.1  riastrad 	    continue
   7627  1.1  riastrad 	  fi
   7628  1.1  riastrad 	  func_stripname '-l' '' "$deplib"
   7629  1.1  riastrad 	  name=$func_stripname_result
   7630  1.1  riastrad 	  if test lib = "$linkmode"; then
   7631  1.1  riastrad 	    searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
   7632  1.1  riastrad 	  else
   7633  1.1  riastrad 	    searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
   7634  1.1  riastrad 	  fi
   7635  1.1  riastrad 	  for searchdir in $searchdirs; do
   7636  1.1  riastrad 	    for search_ext in .la $std_shrext .so .a; do
   7637  1.1  riastrad 	      # Search the libtool library
   7638  1.1  riastrad 	      lib=$searchdir/lib$name$search_ext
   7639  1.1  riastrad 	      if test -f "$lib"; then
   7640  1.1  riastrad 		if test .la = "$search_ext"; then
   7641  1.1  riastrad 		  found=:
   7642  1.1  riastrad 		else
   7643  1.1  riastrad 		  found=false
   7644  1.1  riastrad 		fi
   7645  1.1  riastrad 		break 2
   7646  1.1  riastrad 	      fi
   7647  1.1  riastrad 	    done
   7648  1.1  riastrad 	  done
   7649  1.1  riastrad 	  if $found; then
   7650  1.1  riastrad 	    # deplib is a libtool library
   7651  1.1  riastrad 	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
   7652  1.1  riastrad 	    # We need to do some special things here, and not later.
   7653  1.1  riastrad 	    if test yes = "$allow_libtool_libs_with_static_runtimes"; then
   7654  1.1  riastrad 	      case " $predeps $postdeps " in
   7655  1.1  riastrad 	      *" $deplib "*)
   7656  1.1  riastrad 		if func_lalib_p "$lib"; then
   7657  1.1  riastrad 		  library_names=
   7658  1.1  riastrad 		  old_library=
   7659  1.1  riastrad 		  func_source "$lib"
   7660  1.1  riastrad 		  for l in $old_library $library_names; do
   7661  1.1  riastrad 		    ll=$l
   7662  1.1  riastrad 		  done
   7663  1.1  riastrad 		  if test "X$ll" = "X$old_library"; then # only static version available
   7664  1.1  riastrad 		    found=false
   7665  1.1  riastrad 		    func_dirname "$lib" "" "."
   7666  1.1  riastrad 		    ladir=$func_dirname_result
   7667  1.1  riastrad 		    lib=$ladir/$old_library
   7668  1.1  riastrad 		    if test prog,link = "$linkmode,$pass"; then
   7669  1.1  riastrad 		      compile_deplibs="$deplib $compile_deplibs"
   7670  1.1  riastrad 		      finalize_deplibs="$deplib $finalize_deplibs"
   7671  1.1  riastrad 		    else
   7672  1.1  riastrad 		      deplibs="$deplib $deplibs"
   7673  1.1  riastrad 		      test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs"
   7674  1.1  riastrad 		    fi
   7675  1.1  riastrad 		    continue
   7676  1.1  riastrad 		  fi
   7677  1.1  riastrad 		fi
   7678  1.1  riastrad 		;;
   7679  1.1  riastrad 	      *) ;;
   7680  1.1  riastrad 	      esac
   7681  1.1  riastrad 	    fi
   7682  1.1  riastrad 	  else
   7683  1.1  riastrad 	    # deplib doesn't seem to be a libtool library
   7684  1.1  riastrad 	    if test prog,link = "$linkmode,$pass"; then
   7685  1.1  riastrad 	      compile_deplibs="$deplib $compile_deplibs"
   7686  1.1  riastrad 	      finalize_deplibs="$deplib $finalize_deplibs"
   7687  1.1  riastrad 	    else
   7688  1.1  riastrad 	      deplibs="$deplib $deplibs"
   7689  1.1  riastrad 	      test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs"
   7690  1.1  riastrad 	    fi
   7691  1.1  riastrad 	    continue
   7692  1.1  riastrad 	  fi
   7693  1.1  riastrad 	  ;; # -l
   7694  1.1  riastrad 	*.ltframework)
   7695  1.1  riastrad 	  if test prog,link = "$linkmode,$pass"; then
   7696  1.1  riastrad 	    compile_deplibs="$deplib $compile_deplibs"
   7697  1.1  riastrad 	    finalize_deplibs="$deplib $finalize_deplibs"
   7698  1.1  riastrad 	  else
   7699  1.1  riastrad 	    deplibs="$deplib $deplibs"
   7700  1.1  riastrad 	    if test lib = "$linkmode"; then
   7701  1.1  riastrad 		case "$new_inherited_linker_flags " in
   7702  1.1  riastrad 		    *" $deplib "*) ;;
   7703  1.1  riastrad 		    * ) func_append new_inherited_linker_flags " $deplib" ;;
   7704  1.1  riastrad 		esac
   7705  1.1  riastrad 	    fi
   7706  1.1  riastrad 	  fi
   7707  1.1  riastrad 	  continue
   7708  1.1  riastrad 	  ;;
   7709  1.1  riastrad 	-L*)
   7710  1.1  riastrad 	  case $linkmode in
   7711  1.1  riastrad 	  lib)
   7712  1.1  riastrad 	    deplibs="$deplib $deplibs"
   7713  1.1  riastrad 	    test conv = "$pass" && continue
   7714  1.1  riastrad 	    newdependency_libs="$deplib $newdependency_libs"
   7715  1.1  riastrad 	    func_stripname '-L' '' "$deplib"
   7716  1.1  riastrad 	    func_resolve_sysroot "$func_stripname_result"
   7717  1.1  riastrad 	    func_append newlib_search_path " $func_resolve_sysroot_result"
   7718  1.1  riastrad 	    ;;
   7719  1.1  riastrad 	  prog)
   7720  1.1  riastrad 	    if test conv = "$pass"; then
   7721  1.1  riastrad 	      deplibs="$deplib $deplibs"
   7722  1.1  riastrad 	      continue
   7723  1.1  riastrad 	    fi
   7724  1.1  riastrad 	    if test scan = "$pass"; then
   7725  1.1  riastrad 	      deplibs="$deplib $deplibs"
   7726  1.1  riastrad 	    else
   7727  1.1  riastrad 	      compile_deplibs="$deplib $compile_deplibs"
   7728  1.1  riastrad 	      finalize_deplibs="$deplib $finalize_deplibs"
   7729  1.1  riastrad 	    fi
   7730  1.1  riastrad 	    func_stripname '-L' '' "$deplib"
   7731  1.1  riastrad 	    func_resolve_sysroot "$func_stripname_result"
   7732  1.1  riastrad 	    func_append newlib_search_path " $func_resolve_sysroot_result"
   7733  1.1  riastrad 	    ;;
   7734  1.1  riastrad 	  *)
   7735  1.1  riastrad 	    func_warning "'-L' is ignored for archives/objects"
   7736  1.1  riastrad 	    ;;
   7737  1.1  riastrad 	  esac # linkmode
   7738  1.1  riastrad 	  continue
   7739  1.1  riastrad 	  ;; # -L
   7740  1.1  riastrad 	-R*)
   7741  1.1  riastrad 	  if test link = "$pass"; then
   7742  1.1  riastrad 	    func_stripname '-R' '' "$deplib"
   7743  1.1  riastrad 	    func_resolve_sysroot "$func_stripname_result"
   7744  1.1  riastrad 	    dir=$func_resolve_sysroot_result
   7745  1.1  riastrad 	    # Make sure the xrpath contains only unique directories.
   7746  1.1  riastrad 	    case "$xrpath " in
   7747  1.1  riastrad 	    *" $dir "*) ;;
   7748  1.1  riastrad 	    *) func_append xrpath " $dir" ;;
   7749  1.1  riastrad 	    esac
   7750  1.1  riastrad 	  fi
   7751  1.1  riastrad 	  deplibs="$deplib $deplibs"
   7752  1.1  riastrad 	  continue
   7753  1.1  riastrad 	  ;;
   7754  1.1  riastrad 	*.la)
   7755  1.1  riastrad 	  func_resolve_sysroot "$deplib"
   7756  1.1  riastrad 	  lib=$func_resolve_sysroot_result
   7757  1.1  riastrad 	  ;;
   7758  1.1  riastrad 	*.$libext)
   7759  1.1  riastrad 	  if test conv = "$pass"; then
   7760  1.1  riastrad 	    deplibs="$deplib $deplibs"
   7761  1.1  riastrad 	    continue
   7762  1.1  riastrad 	  fi
   7763  1.1  riastrad 	  case $linkmode in
   7764  1.1  riastrad 	  lib)
   7765  1.1  riastrad 	    # Linking convenience modules into shared libraries is allowed,
   7766  1.1  riastrad 	    # but linking other static libraries is non-portable.
   7767  1.1  riastrad 	    case " $dlpreconveniencelibs " in
   7768  1.1  riastrad 	    *" $deplib "*) ;;
   7769  1.1  riastrad 	    *)
   7770  1.1  riastrad 	      valid_a_lib=false
   7771  1.1  riastrad 	      case $deplibs_check_method in
   7772  1.1  riastrad 		match_pattern*)
   7773  1.1  riastrad 		  set dummy $deplibs_check_method; shift
   7774  1.1  riastrad 		  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
   7775  1.1  riastrad 		  if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \
   7776  1.1  riastrad 		    | $EGREP "$match_pattern_regex" > /dev/null; then
   7777  1.1  riastrad 		    valid_a_lib=:
   7778  1.1  riastrad 		  fi
   7779  1.1  riastrad 		;;
   7780  1.1  riastrad 		pass_all)
   7781  1.1  riastrad 		  valid_a_lib=:
   7782  1.1  riastrad 		;;
   7783  1.1  riastrad 	      esac
   7784  1.1  riastrad 	      if $valid_a_lib; then
   7785  1.1  riastrad 		echo
   7786  1.1  riastrad 		$ECHO "*** Warning: Linking the shared library $output against the"
   7787  1.1  riastrad 		$ECHO "*** static library $deplib is not portable!"
   7788  1.1  riastrad 		deplibs="$deplib $deplibs"
   7789  1.1  riastrad 	      else
   7790  1.1  riastrad 		echo
   7791  1.1  riastrad 		$ECHO "*** Warning: Trying to link with static lib archive $deplib."
   7792  1.1  riastrad 		echo "*** I have the capability to make that library automatically link in when"
   7793  1.1  riastrad 		echo "*** you link to this library.  But I can only do this if you have a"
   7794  1.1  riastrad 		echo "*** shared version of the library, which you do not appear to have"
   7795  1.1  riastrad 		echo "*** because the file extensions .$libext of this argument makes me believe"
   7796  1.1  riastrad 		echo "*** that it is just a static archive that I should not use here."
   7797  1.1  riastrad 	      fi
   7798  1.1  riastrad 	      ;;
   7799  1.1  riastrad 	    esac
   7800  1.1  riastrad 	    continue
   7801  1.1  riastrad 	    ;;
   7802  1.1  riastrad 	  prog)
   7803  1.1  riastrad 	    if test link != "$pass"; then
   7804  1.1  riastrad 	      deplibs="$deplib $deplibs"
   7805  1.1  riastrad 	    else
   7806  1.1  riastrad 	      compile_deplibs="$deplib $compile_deplibs"
   7807  1.1  riastrad 	      finalize_deplibs="$deplib $finalize_deplibs"
   7808  1.1  riastrad 	    fi
   7809  1.1  riastrad 	    continue
   7810  1.1  riastrad 	    ;;
   7811  1.1  riastrad 	  esac # linkmode
   7812  1.1  riastrad 	  ;; # *.$libext
   7813  1.1  riastrad 	*.lo | *.$objext)
   7814  1.1  riastrad 	  if test conv = "$pass"; then
   7815  1.1  riastrad 	    deplibs="$deplib $deplibs"
   7816  1.1  riastrad 	  elif test prog = "$linkmode"; then
   7817  1.1  riastrad 	    if test dlpreopen = "$pass" || test yes != "$dlopen_support" || test no = "$build_libtool_libs"; then
   7818  1.1  riastrad 	      # If there is no dlopen support or we're linking statically,
   7819  1.1  riastrad 	      # we need to preload.
   7820  1.1  riastrad 	      func_append newdlprefiles " $deplib"
   7821  1.1  riastrad 	      compile_deplibs="$deplib $compile_deplibs"
   7822  1.1  riastrad 	      finalize_deplibs="$deplib $finalize_deplibs"
   7823  1.1  riastrad 	    else
   7824  1.1  riastrad 	      func_append newdlfiles " $deplib"
   7825  1.1  riastrad 	    fi
   7826  1.1  riastrad 	  fi
   7827  1.1  riastrad 	  continue
   7828  1.1  riastrad 	  ;;
   7829  1.1  riastrad 	%DEPLIBS%)
   7830  1.1  riastrad 	  alldeplibs=:
   7831  1.1  riastrad 	  continue
   7832  1.1  riastrad 	  ;;
   7833  1.1  riastrad 	esac # case $deplib
   7834  1.1  riastrad 
   7835  1.1  riastrad 	$found || test -f "$lib" \
   7836  1.1  riastrad 	  || func_fatal_error "cannot find the library '$lib' or unhandled argument '$deplib'"
   7837  1.1  riastrad 
   7838  1.1  riastrad 	# Check to see that this really is a libtool archive.
   7839  1.1  riastrad 	func_lalib_unsafe_p "$lib" \
   7840  1.1  riastrad 	  || func_fatal_error "'$lib' is not a valid libtool archive"
   7841  1.1  riastrad 
   7842  1.1  riastrad 	func_dirname "$lib" "" "."
   7843  1.1  riastrad 	ladir=$func_dirname_result
   7844  1.1  riastrad 
   7845  1.1  riastrad 	dlname=
   7846  1.1  riastrad 	dlopen=
   7847  1.1  riastrad 	dlpreopen=
   7848  1.1  riastrad 	libdir=
   7849  1.1  riastrad 	library_names=
   7850  1.1  riastrad 	old_library=
   7851  1.1  riastrad 	inherited_linker_flags=
   7852  1.1  riastrad 	# If the library was installed with an old release of libtool,
   7853  1.1  riastrad 	# it will not redefine variables installed, or shouldnotlink
   7854  1.1  riastrad 	installed=yes
   7855  1.1  riastrad 	shouldnotlink=no
   7856  1.1  riastrad 	avoidtemprpath=
   7857  1.1  riastrad 
   7858  1.1  riastrad 
   7859  1.1  riastrad 	# Read the .la file
   7860  1.1  riastrad 	func_source "$lib"
   7861  1.1  riastrad 
   7862  1.1  riastrad 	# Convert "-framework foo" to "foo.ltframework"
   7863  1.1  riastrad 	if test -n "$inherited_linker_flags"; then
   7864  1.1  riastrad 	  tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`
   7865  1.1  riastrad 	  for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
   7866  1.1  riastrad 	    case " $new_inherited_linker_flags " in
   7867  1.1  riastrad 	      *" $tmp_inherited_linker_flag "*) ;;
   7868  1.1  riastrad 	      *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";;
   7869  1.1  riastrad 	    esac
   7870  1.1  riastrad 	  done
   7871  1.1  riastrad 	fi
   7872  1.1  riastrad 	dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
   7873  1.1  riastrad 	if test lib,link = "$linkmode,$pass" ||
   7874  1.1  riastrad 	   test prog,scan = "$linkmode,$pass" ||
   7875  1.1  riastrad 	   { test prog != "$linkmode" && test lib != "$linkmode"; }; then
   7876  1.1  riastrad 	  test -n "$dlopen" && func_append dlfiles " $dlopen"
   7877  1.1  riastrad 	  test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen"
   7878  1.1  riastrad 	fi
   7879  1.1  riastrad 
   7880  1.1  riastrad 	if test conv = "$pass"; then
   7881  1.1  riastrad 	  # Only check for convenience libraries
   7882  1.1  riastrad 	  deplibs="$lib $deplibs"
   7883  1.1  riastrad 	  if test -z "$libdir"; then
   7884  1.1  riastrad 	    if test -z "$old_library"; then
   7885  1.1  riastrad 	      func_fatal_error "cannot find name of link library for '$lib'"
   7886  1.1  riastrad 	    fi
   7887  1.1  riastrad 	    # It is a libtool convenience library, so add in its objects.
   7888  1.1  riastrad 	    func_append convenience " $ladir/$objdir/$old_library"
   7889  1.1  riastrad 	    func_append old_convenience " $ladir/$objdir/$old_library"
   7890  1.1  riastrad 	  elif test prog != "$linkmode" && test lib != "$linkmode"; then
   7891  1.1  riastrad 	    func_fatal_error "'$lib' is not a convenience library"
   7892  1.1  riastrad 	  fi
   7893  1.1  riastrad 	  tmp_libs=
   7894  1.1  riastrad 	  for deplib in $dependency_libs; do
   7895  1.1  riastrad 	    deplibs="$deplib $deplibs"
   7896  1.1  riastrad 	    if $opt_preserve_dup_deps; then
   7897  1.1  riastrad 	      case "$tmp_libs " in
   7898  1.1  riastrad 	      *" $deplib "*) func_append specialdeplibs " $deplib" ;;
   7899  1.1  riastrad 	      esac
   7900  1.1  riastrad 	    fi
   7901  1.1  riastrad 	    func_append tmp_libs " $deplib"
   7902  1.1  riastrad 	  done
   7903  1.1  riastrad 	  continue
   7904  1.1  riastrad 	fi # $pass = conv
   7905  1.1  riastrad 
   7906  1.1  riastrad 
   7907  1.1  riastrad 	# Get the name of the library we link against.
   7908  1.1  riastrad 	linklib=
   7909  1.1  riastrad 	if test -n "$old_library" &&
   7910  1.1  riastrad 	   { test yes = "$prefer_static_libs" ||
   7911  1.1  riastrad 	     test built,no = "$prefer_static_libs,$installed"; }; then
   7912  1.1  riastrad 	  linklib=$old_library
   7913  1.1  riastrad 	else
   7914  1.1  riastrad 	  for l in $old_library $library_names; do
   7915  1.1  riastrad 	    linklib=$l
   7916  1.1  riastrad 	  done
   7917  1.1  riastrad 	fi
   7918  1.1  riastrad 	if test -z "$linklib"; then
   7919  1.1  riastrad 	  func_fatal_error "cannot find name of link library for '$lib'"
   7920  1.1  riastrad 	fi
   7921  1.1  riastrad 
   7922  1.1  riastrad 	# This library was specified with -dlopen.
   7923  1.1  riastrad 	if test dlopen = "$pass"; then
   7924  1.1  riastrad 	  test -z "$libdir" \
   7925  1.1  riastrad 	    && func_fatal_error "cannot -dlopen a convenience library: '$lib'"
   7926  1.1  riastrad 	  if test -z "$dlname" ||
   7927  1.1  riastrad 	     test yes != "$dlopen_support" ||
   7928  1.1  riastrad 	     test no = "$build_libtool_libs"
   7929  1.1  riastrad 	  then
   7930  1.1  riastrad 	    # If there is no dlname, no dlopen support or we're linking
   7931  1.1  riastrad 	    # statically, we need to preload.  We also need to preload any
   7932  1.1  riastrad 	    # dependent libraries so libltdl's deplib preloader doesn't
   7933  1.1  riastrad 	    # bomb out in the load deplibs phase.
   7934  1.1  riastrad 	    func_append dlprefiles " $lib $dependency_libs"
   7935  1.1  riastrad 	  else
   7936  1.1  riastrad 	    func_append newdlfiles " $lib"
   7937  1.1  riastrad 	  fi
   7938  1.1  riastrad 	  continue
   7939  1.1  riastrad 	fi # $pass = dlopen
   7940  1.1  riastrad 
   7941  1.1  riastrad 	# We need an absolute path.
   7942  1.1  riastrad 	case $ladir in
   7943  1.1  riastrad 	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir=$ladir ;;
   7944  1.1  riastrad 	*)
   7945  1.1  riastrad 	  abs_ladir=`cd "$ladir" && pwd`
   7946  1.1  riastrad 	  if test -z "$abs_ladir"; then
   7947  1.1  riastrad 	    func_warning "cannot determine absolute directory name of '$ladir'"
   7948  1.1  riastrad 	    func_warning "passing it literally to the linker, although it might fail"
   7949  1.1  riastrad 	    abs_ladir=$ladir
   7950  1.1  riastrad 	  fi
   7951  1.1  riastrad 	  ;;
   7952  1.1  riastrad 	esac
   7953  1.1  riastrad 	func_basename "$lib"
   7954  1.1  riastrad 	laname=$func_basename_result
   7955  1.1  riastrad 
   7956  1.1  riastrad 	# Find the relevant object directory and library name.
   7957  1.1  riastrad 	if test yes = "$installed"; then
   7958  1.1  riastrad 	  if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
   7959  1.1  riastrad 	    func_warning "library '$lib' was moved."
   7960  1.1  riastrad 	    dir=$ladir
   7961  1.1  riastrad 	    absdir=$abs_ladir
   7962  1.1  riastrad 	    libdir=$abs_ladir
   7963  1.1  riastrad 	  else
   7964  1.1  riastrad 	    dir=$lt_sysroot$libdir
   7965  1.1  riastrad 	    absdir=$lt_sysroot$libdir
   7966  1.1  riastrad 	  fi
   7967  1.1  riastrad 	  test yes = "$hardcode_automatic" && avoidtemprpath=yes
   7968  1.1  riastrad 	else
   7969  1.1  riastrad 	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
   7970  1.1  riastrad 	    dir=$ladir
   7971  1.1  riastrad 	    absdir=$abs_ladir
   7972  1.1  riastrad 	    # Remove this search path later
   7973  1.1  riastrad 	    func_append notinst_path " $abs_ladir"
   7974  1.1  riastrad 	  else
   7975  1.1  riastrad 	    dir=$ladir/$objdir
   7976  1.1  riastrad 	    absdir=$abs_ladir/$objdir
   7977  1.1  riastrad 	    # Remove this search path later
   7978  1.1  riastrad 	    func_append notinst_path " $abs_ladir"
   7979  1.1  riastrad 	  fi
   7980  1.1  riastrad 	fi # $installed = yes
   7981  1.1  riastrad 	func_stripname 'lib' '.la' "$laname"
   7982  1.1  riastrad 	name=$func_stripname_result
   7983  1.1  riastrad 
   7984  1.1  riastrad 	# This library was specified with -dlpreopen.
   7985  1.1  riastrad 	if test dlpreopen = "$pass"; then
   7986  1.1  riastrad 	  if test -z "$libdir" && test prog = "$linkmode"; then
   7987  1.1  riastrad 	    func_fatal_error "only libraries may -dlpreopen a convenience library: '$lib'"
   7988  1.1  riastrad 	  fi
   7989  1.1  riastrad 	  case $host in
   7990  1.1  riastrad 	    # special handling for platforms with PE-DLLs.
   7991  1.1  riastrad 	    *cygwin* | *mingw* | *cegcc* )
   7992  1.1  riastrad 	      # Linker will automatically link against shared library if both
   7993  1.1  riastrad 	      # static and shared are present.  Therefore, ensure we extract
   7994  1.1  riastrad 	      # symbols from the import library if a shared library is present
   7995  1.1  riastrad 	      # (otherwise, the dlopen module name will be incorrect).  We do
   7996  1.1  riastrad 	      # this by putting the import library name into $newdlprefiles.
   7997  1.1  riastrad 	      # We recover the dlopen module name by 'saving' the la file
   7998  1.1  riastrad 	      # name in a special purpose variable, and (later) extracting the
   7999  1.1  riastrad 	      # dlname from the la file.
   8000  1.1  riastrad 	      if test -n "$dlname"; then
   8001  1.1  riastrad 	        func_tr_sh "$dir/$linklib"
   8002  1.1  riastrad 	        eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname"
   8003  1.1  riastrad 	        func_append newdlprefiles " $dir/$linklib"
   8004  1.1  riastrad 	      else
   8005  1.1  riastrad 	        func_append newdlprefiles " $dir/$old_library"
   8006  1.1  riastrad 	        # Keep a list of preopened convenience libraries to check
   8007  1.1  riastrad 	        # that they are being used correctly in the link pass.
   8008  1.1  riastrad 	        test -z "$libdir" && \
   8009  1.1  riastrad 	          func_append dlpreconveniencelibs " $dir/$old_library"
   8010  1.1  riastrad 	      fi
   8011  1.1  riastrad 	    ;;
   8012  1.1  riastrad 	    * )
   8013  1.1  riastrad 	      # Prefer using a static library (so that no silly _DYNAMIC symbols
   8014  1.1  riastrad 	      # are required to link).
   8015  1.1  riastrad 	      if test -n "$old_library"; then
   8016  1.1  riastrad 	        func_append newdlprefiles " $dir/$old_library"
   8017  1.1  riastrad 	        # Keep a list of preopened convenience libraries to check
   8018  1.1  riastrad 	        # that they are being used correctly in the link pass.
   8019  1.1  riastrad 	        test -z "$libdir" && \
   8020  1.1  riastrad 	          func_append dlpreconveniencelibs " $dir/$old_library"
   8021  1.1  riastrad 	      # Otherwise, use the dlname, so that lt_dlopen finds it.
   8022  1.1  riastrad 	      elif test -n "$dlname"; then
   8023  1.1  riastrad 	        func_append newdlprefiles " $dir/$dlname"
   8024  1.1  riastrad 	      else
   8025  1.1  riastrad 	        func_append newdlprefiles " $dir/$linklib"
   8026  1.1  riastrad 	      fi
   8027  1.1  riastrad 	    ;;
   8028  1.1  riastrad 	  esac
   8029  1.1  riastrad 	fi # $pass = dlpreopen
   8030  1.1  riastrad 
   8031  1.1  riastrad 	if test -z "$libdir"; then
   8032  1.1  riastrad 	  # Link the convenience library
   8033  1.1  riastrad 	  if test lib = "$linkmode"; then
   8034  1.1  riastrad 	    deplibs="$dir/$old_library $deplibs"
   8035  1.1  riastrad 	  elif test prog,link = "$linkmode,$pass"; then
   8036  1.1  riastrad 	    compile_deplibs="$dir/$old_library $compile_deplibs"
   8037  1.1  riastrad 	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
   8038  1.1  riastrad 	  else
   8039  1.1  riastrad 	    deplibs="$lib $deplibs" # used for prog,scan pass
   8040  1.1  riastrad 	  fi
   8041  1.1  riastrad 	  continue
   8042  1.1  riastrad 	fi
   8043  1.1  riastrad 
   8044  1.1  riastrad 
   8045  1.1  riastrad 	if test prog = "$linkmode" && test link != "$pass"; then
   8046  1.1  riastrad 	  func_append newlib_search_path " $ladir"
   8047  1.1  riastrad 	  deplibs="$lib $deplibs"
   8048  1.1  riastrad 
   8049  1.1  riastrad 	  linkalldeplibs=false
   8050  1.1  riastrad 	  if test no != "$link_all_deplibs" || test -z "$library_names" ||
   8051  1.1  riastrad 	     test no = "$build_libtool_libs"; then
   8052  1.1  riastrad 	    linkalldeplibs=:
   8053  1.1  riastrad 	  fi
   8054  1.1  riastrad 
   8055  1.1  riastrad 	  tmp_libs=
   8056  1.1  riastrad 	  for deplib in $dependency_libs; do
   8057  1.1  riastrad 	    case $deplib in
   8058  1.1  riastrad 	    -L*) func_stripname '-L' '' "$deplib"
   8059  1.1  riastrad 	         func_resolve_sysroot "$func_stripname_result"
   8060  1.1  riastrad 	         func_append newlib_search_path " $func_resolve_sysroot_result"
   8061  1.1  riastrad 		 ;;
   8062  1.1  riastrad 	    esac
   8063  1.1  riastrad 	    # Need to link against all dependency_libs?
   8064  1.1  riastrad 	    if $linkalldeplibs; then
   8065  1.1  riastrad 	      deplibs="$deplib $deplibs"
   8066  1.1  riastrad 	    else
   8067  1.1  riastrad 	      # Need to hardcode shared library paths
   8068  1.1  riastrad 	      # or/and link against static libraries
   8069  1.1  riastrad 	      newdependency_libs="$deplib $newdependency_libs"
   8070  1.1  riastrad 	    fi
   8071  1.1  riastrad 	    if $opt_preserve_dup_deps; then
   8072  1.1  riastrad 	      case "$tmp_libs " in
   8073  1.1  riastrad 	      *" $deplib "*) func_append specialdeplibs " $deplib" ;;
   8074  1.1  riastrad 	      esac
   8075  1.1  riastrad 	    fi
   8076  1.1  riastrad 	    func_append tmp_libs " $deplib"
   8077  1.1  riastrad 	  done # for deplib
   8078  1.1  riastrad 	  continue
   8079  1.1  riastrad 	fi # $linkmode = prog...
   8080  1.1  riastrad 
   8081  1.1  riastrad 	if test prog,link = "$linkmode,$pass"; then
   8082  1.1  riastrad 	  if test -n "$library_names" &&
   8083  1.1  riastrad 	     { { test no = "$prefer_static_libs" ||
   8084  1.1  riastrad 	         test built,yes = "$prefer_static_libs,$installed"; } ||
   8085  1.1  riastrad 	       test -z "$old_library"; }; then
   8086  1.1  riastrad 	    # We need to hardcode the library path
   8087  1.1  riastrad 	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath"; then
   8088  1.1  riastrad 	      # Make sure the rpath contains only unique directories.
   8089  1.1  riastrad 	      case $temp_rpath: in
   8090  1.1  riastrad 	      *"$absdir:"*) ;;
   8091  1.1  riastrad 	      *) func_append temp_rpath "$absdir:" ;;
   8092  1.1  riastrad 	      esac
   8093  1.1  riastrad 	    fi
   8094  1.1  riastrad 
   8095  1.1  riastrad 	    # Hardcode the library path.
   8096  1.1  riastrad 	    # Skip directories that are in the system default run-time
   8097  1.1  riastrad 	    # search path.
   8098  1.1  riastrad 	    case " $sys_lib_dlsearch_path " in
   8099  1.1  riastrad 	    *" $absdir "*) ;;
   8100  1.1  riastrad 	    *)
   8101  1.1  riastrad 	      case "$compile_rpath " in
   8102  1.1  riastrad 	      *" $absdir "*) ;;
   8103  1.1  riastrad 	      *) func_append compile_rpath " $absdir" ;;
   8104  1.1  riastrad 	      esac
   8105  1.1  riastrad 	      ;;
   8106  1.1  riastrad 	    esac
   8107  1.1  riastrad 	    case " $sys_lib_dlsearch_path " in
   8108  1.1  riastrad 	    *" $libdir "*) ;;
   8109  1.1  riastrad 	    *)
   8110  1.1  riastrad 	      case "$finalize_rpath " in
   8111  1.1  riastrad 	      *" $libdir "*) ;;
   8112  1.1  riastrad 	      *) func_append finalize_rpath " $libdir" ;;
   8113  1.1  riastrad 	      esac
   8114  1.1  riastrad 	      ;;
   8115  1.1  riastrad 	    esac
   8116  1.1  riastrad 	  fi # $linkmode,$pass = prog,link...
   8117  1.1  riastrad 
   8118  1.1  riastrad 	  if $alldeplibs &&
   8119  1.1  riastrad 	     { test pass_all = "$deplibs_check_method" ||
   8120  1.1  riastrad 	       { test yes = "$build_libtool_libs" &&
   8121  1.1  riastrad 		 test -n "$library_names"; }; }; then
   8122  1.1  riastrad 	    # We only need to search for static libraries
   8123  1.1  riastrad 	    continue
   8124  1.1  riastrad 	  fi
   8125  1.1  riastrad 	fi
   8126  1.1  riastrad 
   8127  1.1  riastrad 	link_static=no # Whether the deplib will be linked statically
   8128  1.1  riastrad 	use_static_libs=$prefer_static_libs
   8129  1.1  riastrad 	if test built = "$use_static_libs" && test yes = "$installed"; then
   8130  1.1  riastrad 	  use_static_libs=no
   8131  1.1  riastrad 	fi
   8132  1.1  riastrad 	if test -n "$library_names" &&
   8133  1.1  riastrad 	   { test no = "$use_static_libs" || test -z "$old_library"; }; then
   8134  1.1  riastrad 	  case $host in
   8135  1.1  riastrad 	  *cygwin* | *mingw* | *cegcc* | *os2*)
   8136  1.1  riastrad 	      # No point in relinking DLLs because paths are not encoded
   8137  1.1  riastrad 	      func_append notinst_deplibs " $lib"
   8138  1.1  riastrad 	      need_relink=no
   8139  1.1  riastrad 	    ;;
   8140  1.1  riastrad 	  *)
   8141  1.1  riastrad 	    if test no = "$installed"; then
   8142  1.1  riastrad 	      func_append notinst_deplibs " $lib"
   8143  1.1  riastrad 	      need_relink=yes
   8144  1.1  riastrad 	    fi
   8145  1.1  riastrad 	    ;;
   8146  1.1  riastrad 	  esac
   8147  1.1  riastrad 	  # This is a shared library
   8148  1.1  riastrad 
   8149  1.1  riastrad 	  # Warn about portability, can't link against -module's on some
   8150  1.1  riastrad 	  # systems (darwin).  Don't bleat about dlopened modules though!
   8151  1.1  riastrad 	  dlopenmodule=
   8152  1.1  riastrad 	  for dlpremoduletest in $dlprefiles; do
   8153  1.1  riastrad 	    if test "X$dlpremoduletest" = "X$lib"; then
   8154  1.1  riastrad 	      dlopenmodule=$dlpremoduletest
   8155  1.1  riastrad 	      break
   8156  1.1  riastrad 	    fi
   8157  1.1  riastrad 	  done
   8158  1.1  riastrad 	  if test -z "$dlopenmodule" && test yes = "$shouldnotlink" && test link = "$pass"; then
   8159  1.1  riastrad 	    echo
   8160  1.1  riastrad 	    if test prog = "$linkmode"; then
   8161  1.1  riastrad 	      $ECHO "*** Warning: Linking the executable $output against the loadable module"
   8162  1.1  riastrad 	    else
   8163  1.1  riastrad 	      $ECHO "*** Warning: Linking the shared library $output against the loadable module"
   8164  1.1  riastrad 	    fi
   8165  1.1  riastrad 	    $ECHO "*** $linklib is not portable!"
   8166  1.1  riastrad 	  fi
   8167  1.1  riastrad 	  if test lib = "$linkmode" &&
   8168  1.1  riastrad 	     test yes = "$hardcode_into_libs"; then
   8169  1.1  riastrad 	    # Hardcode the library path.
   8170  1.1  riastrad 	    # Skip directories that are in the system default run-time
   8171  1.1  riastrad 	    # search path.
   8172  1.1  riastrad 	    case " $sys_lib_dlsearch_path " in
   8173  1.1  riastrad 	    *" $absdir "*) ;;
   8174  1.1  riastrad 	    *)
   8175  1.1  riastrad 	      case "$compile_rpath " in
   8176  1.1  riastrad 	      *" $absdir "*) ;;
   8177  1.1  riastrad 	      *) func_append compile_rpath " $absdir" ;;
   8178  1.1  riastrad 	      esac
   8179  1.1  riastrad 	      ;;
   8180  1.1  riastrad 	    esac
   8181  1.1  riastrad 	    case " $sys_lib_dlsearch_path " in
   8182  1.1  riastrad 	    *" $libdir "*) ;;
   8183  1.1  riastrad 	    *)
   8184  1.1  riastrad 	      case "$finalize_rpath " in
   8185  1.1  riastrad 	      *" $libdir "*) ;;
   8186  1.1  riastrad 	      *) func_append finalize_rpath " $libdir" ;;
   8187  1.1  riastrad 	      esac
   8188  1.1  riastrad 	      ;;
   8189  1.1  riastrad 	    esac
   8190  1.1  riastrad 	  fi
   8191  1.1  riastrad 
   8192  1.1  riastrad 	  if test -n "$old_archive_from_expsyms_cmds"; then
   8193  1.1  riastrad 	    # figure out the soname
   8194  1.1  riastrad 	    set dummy $library_names
   8195  1.1  riastrad 	    shift
   8196  1.1  riastrad 	    realname=$1
   8197  1.1  riastrad 	    shift
   8198  1.1  riastrad 	    libname=`eval "\\$ECHO \"$libname_spec\""`
   8199  1.1  riastrad 	    # use dlname if we got it. it's perfectly good, no?
   8200  1.1  riastrad 	    if test -n "$dlname"; then
   8201  1.1  riastrad 	      soname=$dlname
   8202  1.1  riastrad 	    elif test -n "$soname_spec"; then
   8203  1.1  riastrad 	      # bleh windows
   8204  1.1  riastrad 	      case $host in
   8205  1.1  riastrad 	      *cygwin* | mingw* | *cegcc* | *os2*)
   8206  1.1  riastrad 	        func_arith $current - $age
   8207  1.1  riastrad 		major=$func_arith_result
   8208  1.1  riastrad 		versuffix=-$major
   8209  1.1  riastrad 		;;
   8210  1.1  riastrad 	      esac
   8211  1.1  riastrad 	      eval soname=\"$soname_spec\"
   8212  1.1  riastrad 	    else
   8213  1.1  riastrad 	      soname=$realname
   8214  1.1  riastrad 	    fi
   8215  1.1  riastrad 
   8216  1.1  riastrad 	    # Make a new name for the extract_expsyms_cmds to use
   8217  1.1  riastrad 	    soroot=$soname
   8218  1.1  riastrad 	    func_basename "$soroot"
   8219  1.1  riastrad 	    soname=$func_basename_result
   8220  1.1  riastrad 	    func_stripname 'lib' '.dll' "$soname"
   8221  1.1  riastrad 	    newlib=libimp-$func_stripname_result.a
   8222  1.1  riastrad 
   8223  1.1  riastrad 	    # If the library has no export list, then create one now
   8224  1.1  riastrad 	    if test -f "$output_objdir/$soname-def"; then :
   8225  1.1  riastrad 	    else
   8226  1.1  riastrad 	      func_verbose "extracting exported symbol list from '$soname'"
   8227  1.1  riastrad 	      func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
   8228  1.1  riastrad 	    fi
   8229  1.1  riastrad 
   8230  1.1  riastrad 	    # Create $newlib
   8231  1.1  riastrad 	    if test -f "$output_objdir/$newlib"; then :; else
   8232  1.1  riastrad 	      func_verbose "generating import library for '$soname'"
   8233  1.1  riastrad 	      func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
   8234  1.1  riastrad 	    fi
   8235  1.1  riastrad 	    # make sure the library variables are pointing to the new library
   8236  1.1  riastrad 	    dir=$output_objdir
   8237  1.1  riastrad 	    linklib=$newlib
   8238  1.1  riastrad 	  fi # test -n "$old_archive_from_expsyms_cmds"
   8239  1.1  riastrad 
   8240  1.1  riastrad 	  if test prog = "$linkmode" || test relink != "$opt_mode"; then
   8241  1.1  riastrad 	    add_shlibpath=
   8242  1.1  riastrad 	    add_dir=
   8243  1.1  riastrad 	    add=
   8244  1.1  riastrad 	    lib_linked=yes
   8245  1.1  riastrad 	    case $hardcode_action in
   8246  1.1  riastrad 	    immediate | unsupported)
   8247  1.1  riastrad 	      if test no = "$hardcode_direct"; then
   8248  1.1  riastrad 		add=$dir/$linklib
   8249  1.1  riastrad 		case $host in
   8250  1.1  riastrad 		  *-*-sco3.2v5.0.[024]*) add_dir=-L$dir ;;
   8251  1.1  riastrad 		  *-*-sysv4*uw2*) add_dir=-L$dir ;;
   8252  1.1  riastrad 		  *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
   8253  1.1  riastrad 		    *-*-unixware7*) add_dir=-L$dir ;;
   8254  1.1  riastrad 		  *-*-darwin* )
   8255  1.1  riastrad 		    # if the lib is a (non-dlopened) module then we cannot
   8256  1.1  riastrad 		    # link against it, someone is ignoring the earlier warnings
   8257  1.1  riastrad 		    if /usr/bin/file -L $add 2> /dev/null |
   8258  1.1  riastrad 			 $GREP ": [^:]* bundle" >/dev/null; then
   8259  1.1  riastrad 		      if test "X$dlopenmodule" != "X$lib"; then
   8260  1.1  riastrad 			$ECHO "*** Warning: lib $linklib is a module, not a shared library"
   8261  1.1  riastrad 			if test -z "$old_library"; then
   8262  1.1  riastrad 			  echo
   8263  1.1  riastrad 			  echo "*** And there doesn't seem to be a static archive available"
   8264  1.1  riastrad 			  echo "*** The link will probably fail, sorry"
   8265  1.1  riastrad 			else
   8266  1.1  riastrad 			  add=$dir/$old_library
   8267  1.1  riastrad 			fi
   8268  1.1  riastrad 		      elif test -n "$old_library"; then
   8269  1.1  riastrad 			add=$dir/$old_library
   8270  1.1  riastrad 		      fi
   8271  1.1  riastrad 		    fi
   8272  1.1  riastrad 		esac
   8273  1.1  riastrad 	      elif test no = "$hardcode_minus_L"; then
   8274  1.1  riastrad 		case $host in
   8275  1.1  riastrad 		*-*-sunos*) add_shlibpath=$dir ;;
   8276  1.1  riastrad 		esac
   8277  1.1  riastrad 		add_dir=-L$dir
   8278  1.1  riastrad 		add=-l$name
   8279  1.1  riastrad 	      elif test no = "$hardcode_shlibpath_var"; then
   8280  1.1  riastrad 		add_shlibpath=$dir
   8281  1.1  riastrad 		add=-l$name
   8282  1.1  riastrad 	      else
   8283  1.1  riastrad 		lib_linked=no
   8284  1.1  riastrad 	      fi
   8285  1.1  riastrad 	      ;;
   8286  1.1  riastrad 	    relink)
   8287  1.1  riastrad 	      if test yes = "$hardcode_direct" &&
   8288  1.1  riastrad 	         test no = "$hardcode_direct_absolute"; then
   8289  1.1  riastrad 		add=$dir/$linklib
   8290  1.1  riastrad 	      elif test yes = "$hardcode_minus_L"; then
   8291  1.1  riastrad 		add_dir=-L$absdir
   8292  1.1  riastrad 		# Try looking first in the location we're being installed to.
   8293  1.1  riastrad 		if test -n "$inst_prefix_dir"; then
   8294  1.1  riastrad 		  case $libdir in
   8295  1.1  riastrad 		    [\\/]*)
   8296  1.1  riastrad 		      func_append add_dir " -L$inst_prefix_dir$libdir"
   8297  1.1  riastrad 		      ;;
   8298  1.1  riastrad 		  esac
   8299  1.1  riastrad 		fi
   8300  1.1  riastrad 		add=-l$name
   8301  1.1  riastrad 	      elif test yes = "$hardcode_shlibpath_var"; then
   8302  1.1  riastrad 		add_shlibpath=$dir
   8303  1.1  riastrad 		add=-l$name
   8304  1.1  riastrad 	      else
   8305  1.1  riastrad 		lib_linked=no
   8306  1.1  riastrad 	      fi
   8307  1.1  riastrad 	      ;;
   8308  1.1  riastrad 	    *) lib_linked=no ;;
   8309  1.1  riastrad 	    esac
   8310  1.1  riastrad 
   8311  1.1  riastrad 	    if test yes != "$lib_linked"; then
   8312  1.1  riastrad 	      func_fatal_configuration "unsupported hardcode properties"
   8313  1.1  riastrad 	    fi
   8314  1.1  riastrad 
   8315  1.1  riastrad 	    if test -n "$add_shlibpath"; then
   8316  1.1  riastrad 	      case :$compile_shlibpath: in
   8317  1.1  riastrad 	      *":$add_shlibpath:"*) ;;
   8318  1.1  riastrad 	      *) func_append compile_shlibpath "$add_shlibpath:" ;;
   8319  1.1  riastrad 	      esac
   8320  1.1  riastrad 	    fi
   8321  1.1  riastrad 	    if test prog = "$linkmode"; then
   8322  1.1  riastrad 	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
   8323  1.1  riastrad 	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
   8324  1.1  riastrad 	    else
   8325  1.1  riastrad 	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
   8326  1.1  riastrad 	      test -n "$add" && deplibs="$add $deplibs"
   8327  1.1  riastrad 	      if test yes != "$hardcode_direct" &&
   8328  1.1  riastrad 		 test yes != "$hardcode_minus_L" &&
   8329  1.1  riastrad 		 test yes = "$hardcode_shlibpath_var"; then
   8330  1.1  riastrad 		case :$finalize_shlibpath: in
   8331  1.1  riastrad 		*":$libdir:"*) ;;
   8332  1.1  riastrad 		*) func_append finalize_shlibpath "$libdir:" ;;
   8333  1.1  riastrad 		esac
   8334  1.1  riastrad 	      fi
   8335  1.1  riastrad 	    fi
   8336  1.1  riastrad 	  fi
   8337  1.1  riastrad 
   8338  1.1  riastrad 	  if test prog = "$linkmode" || test relink = "$opt_mode"; then
   8339  1.1  riastrad 	    add_shlibpath=
   8340  1.1  riastrad 	    add_dir=
   8341  1.1  riastrad 	    add=
   8342  1.1  riastrad 	    # Finalize command for both is simple: just hardcode it.
   8343  1.1  riastrad 	    if test yes = "$hardcode_direct" &&
   8344  1.1  riastrad 	       test no = "$hardcode_direct_absolute"; then
   8345  1.1  riastrad 	      add=$libdir/$linklib
   8346  1.1  riastrad 	    elif test yes = "$hardcode_minus_L"; then
   8347  1.1  riastrad 	      add_dir=-L$libdir
   8348  1.1  riastrad 	      add=-l$name
   8349  1.1  riastrad 	    elif test yes = "$hardcode_shlibpath_var"; then
   8350  1.1  riastrad 	      case :$finalize_shlibpath: in
   8351  1.1  riastrad 	      *":$libdir:"*) ;;
   8352  1.1  riastrad 	      *) func_append finalize_shlibpath "$libdir:" ;;
   8353  1.1  riastrad 	      esac
   8354  1.1  riastrad 	      add=-l$name
   8355  1.1  riastrad 	    elif test yes = "$hardcode_automatic"; then
   8356  1.1  riastrad 	      if test -n "$inst_prefix_dir" &&
   8357  1.1  riastrad 		 test -f "$inst_prefix_dir$libdir/$linklib"; then
   8358  1.1  riastrad 		add=$inst_prefix_dir$libdir/$linklib
   8359  1.1  riastrad 	      else
   8360  1.1  riastrad 		add=$libdir/$linklib
   8361  1.1  riastrad 	      fi
   8362  1.1  riastrad 	    else
   8363  1.1  riastrad 	      # We cannot seem to hardcode it, guess we'll fake it.
   8364  1.1  riastrad 	      add_dir=-L$libdir
   8365  1.1  riastrad 	      # Try looking first in the location we're being installed to.
   8366  1.1  riastrad 	      if test -n "$inst_prefix_dir"; then
   8367  1.1  riastrad 		case $libdir in
   8368  1.1  riastrad 		  [\\/]*)
   8369  1.1  riastrad 		    func_append add_dir " -L$inst_prefix_dir$libdir"
   8370  1.1  riastrad 		    ;;
   8371  1.1  riastrad 		esac
   8372  1.1  riastrad 	      fi
   8373  1.1  riastrad 	      add=-l$name
   8374  1.1  riastrad 	    fi
   8375  1.1  riastrad 
   8376  1.1  riastrad 	    if test prog = "$linkmode"; then
   8377  1.1  riastrad 	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
   8378  1.1  riastrad 	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
   8379  1.1  riastrad 	    else
   8380  1.1  riastrad 	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
   8381  1.1  riastrad 	      test -n "$add" && deplibs="$add $deplibs"
   8382  1.1  riastrad 	    fi
   8383  1.1  riastrad 	  fi
   8384  1.1  riastrad 	elif test prog = "$linkmode"; then
   8385  1.1  riastrad 	  # Here we assume that one of hardcode_direct or hardcode_minus_L
   8386  1.1  riastrad 	  # is not unsupported.  This is valid on all known static and
   8387  1.1  riastrad 	  # shared platforms.
   8388  1.1  riastrad 	  if test unsupported != "$hardcode_direct"; then
   8389  1.1  riastrad 	    test -n "$old_library" && linklib=$old_library
   8390  1.1  riastrad 	    compile_deplibs="$dir/$linklib $compile_deplibs"
   8391  1.1  riastrad 	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
   8392  1.1  riastrad 	  else
   8393  1.1  riastrad 	    compile_deplibs="-l$name -L$dir $compile_deplibs"
   8394  1.1  riastrad 	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
   8395  1.1  riastrad 	  fi
   8396  1.1  riastrad 	elif test yes = "$build_libtool_libs"; then
   8397  1.1  riastrad 	  # Not a shared library
   8398  1.1  riastrad 	  if test pass_all != "$deplibs_check_method"; then
   8399  1.1  riastrad 	    # We're trying link a shared library against a static one
   8400  1.1  riastrad 	    # but the system doesn't support it.
   8401  1.1  riastrad 
   8402  1.1  riastrad 	    # Just print a warning and add the library to dependency_libs so
   8403  1.1  riastrad 	    # that the program can be linked against the static library.
   8404  1.1  riastrad 	    echo
   8405  1.1  riastrad 	    $ECHO "*** Warning: This system cannot link to static lib archive $lib."
   8406  1.1  riastrad 	    echo "*** I have the capability to make that library automatically link in when"
   8407  1.1  riastrad 	    echo "*** you link to this library.  But I can only do this if you have a"
   8408  1.1  riastrad 	    echo "*** shared version of the library, which you do not appear to have."
   8409  1.1  riastrad 	    if test yes = "$module"; then
   8410  1.1  riastrad 	      echo "*** But as you try to build a module library, libtool will still create "
   8411  1.1  riastrad 	      echo "*** a static module, that should work as long as the dlopening application"
   8412  1.1  riastrad 	      echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
   8413  1.1  riastrad 	      if test -z "$global_symbol_pipe"; then
   8414  1.1  riastrad 		echo
   8415  1.1  riastrad 		echo "*** However, this would only work if libtool was able to extract symbol"
   8416  1.1  riastrad 		echo "*** lists from a program, using 'nm' or equivalent, but libtool could"
   8417  1.1  riastrad 		echo "*** not find such a program.  So, this module is probably useless."
   8418  1.1  riastrad 		echo "*** 'nm' from GNU binutils and a full rebuild may help."
   8419  1.1  riastrad 	      fi
   8420  1.1  riastrad 	      if test no = "$build_old_libs"; then
   8421  1.1  riastrad 		build_libtool_libs=module
   8422  1.1  riastrad 		build_old_libs=yes
   8423  1.1  riastrad 	      else
   8424  1.1  riastrad 		build_libtool_libs=no
   8425  1.1  riastrad 	      fi
   8426  1.1  riastrad 	    fi
   8427  1.1  riastrad 	  else
   8428  1.1  riastrad 	    deplibs="$dir/$old_library $deplibs"
   8429  1.1  riastrad 	    link_static=yes
   8430  1.1  riastrad 	  fi
   8431  1.1  riastrad 	fi # link shared/static library?
   8432  1.1  riastrad 
   8433  1.1  riastrad 	if test lib = "$linkmode"; then
   8434  1.1  riastrad 	  if test -n "$dependency_libs" &&
   8435  1.1  riastrad 	     { test yes != "$hardcode_into_libs" ||
   8436  1.1  riastrad 	       test yes = "$build_old_libs" ||
   8437  1.1  riastrad 	       test yes = "$link_static"; }; then
   8438  1.1  riastrad 	    # Extract -R from dependency_libs
   8439  1.1  riastrad 	    temp_deplibs=
   8440  1.1  riastrad 	    for libdir in $dependency_libs; do
   8441  1.1  riastrad 	      case $libdir in
   8442  1.1  riastrad 	      -R*) func_stripname '-R' '' "$libdir"
   8443  1.1  riastrad 	           temp_xrpath=$func_stripname_result
   8444  1.1  riastrad 		   case " $xrpath " in
   8445  1.1  riastrad 		   *" $temp_xrpath "*) ;;
   8446  1.1  riastrad 		   *) func_append xrpath " $temp_xrpath";;
   8447  1.1  riastrad 		   esac;;
   8448  1.1  riastrad 	      *) func_append temp_deplibs " $libdir";;
   8449  1.1  riastrad 	      esac
   8450  1.1  riastrad 	    done
   8451  1.1  riastrad 	    dependency_libs=$temp_deplibs
   8452  1.1  riastrad 	  fi
   8453  1.1  riastrad 
   8454  1.1  riastrad 	  func_append newlib_search_path " $absdir"
   8455  1.1  riastrad 	  # Link against this library
   8456  1.1  riastrad 	  test no = "$link_static" && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
   8457  1.1  riastrad 	  # ... and its dependency_libs
   8458  1.1  riastrad 	  tmp_libs=
   8459  1.1  riastrad 	  for deplib in $dependency_libs; do
   8460  1.1  riastrad 	    newdependency_libs="$deplib $newdependency_libs"
   8461  1.1  riastrad 	    case $deplib in
   8462  1.1  riastrad               -L*) func_stripname '-L' '' "$deplib"
   8463  1.1  riastrad                    func_resolve_sysroot "$func_stripname_result";;
   8464  1.1  riastrad               *) func_resolve_sysroot "$deplib" ;;
   8465  1.1  riastrad             esac
   8466  1.1  riastrad 	    if $opt_preserve_dup_deps; then
   8467  1.1  riastrad 	      case "$tmp_libs " in
   8468  1.1  riastrad 	      *" $func_resolve_sysroot_result "*)
   8469  1.1  riastrad                 func_append specialdeplibs " $func_resolve_sysroot_result" ;;
   8470  1.1  riastrad 	      esac
   8471  1.1  riastrad 	    fi
   8472  1.1  riastrad 	    func_append tmp_libs " $func_resolve_sysroot_result"
   8473  1.1  riastrad 	  done
   8474  1.1  riastrad 
   8475  1.1  riastrad 	  if test no != "$link_all_deplibs"; then
   8476  1.1  riastrad 	    # Add the search paths of all dependency libraries
   8477  1.1  riastrad 	    for deplib in $dependency_libs; do
   8478  1.1  riastrad 	      path=
   8479  1.1  riastrad 	      case $deplib in
   8480  1.1  riastrad 	      -L*) path=$deplib ;;
   8481  1.1  riastrad 	      *.la)
   8482  1.1  riastrad 	        func_resolve_sysroot "$deplib"
   8483  1.1  riastrad 	        deplib=$func_resolve_sysroot_result
   8484  1.1  riastrad 	        func_dirname "$deplib" "" "."
   8485  1.1  riastrad 		dir=$func_dirname_result
   8486  1.1  riastrad 		# We need an absolute path.
   8487  1.1  riastrad 		case $dir in
   8488  1.1  riastrad 		[\\/]* | [A-Za-z]:[\\/]*) absdir=$dir ;;
   8489  1.1  riastrad 		*)
   8490  1.1  riastrad 		  absdir=`cd "$dir" && pwd`
   8491  1.1  riastrad 		  if test -z "$absdir"; then
   8492  1.1  riastrad 		    func_warning "cannot determine absolute directory name of '$dir'"
   8493  1.1  riastrad 		    absdir=$dir
   8494  1.1  riastrad 		  fi
   8495  1.1  riastrad 		  ;;
   8496  1.1  riastrad 		esac
   8497  1.1  riastrad 		if $GREP "^installed=no" $deplib > /dev/null; then
   8498  1.1  riastrad 		case $host in
   8499  1.1  riastrad 		*-*-darwin*)
   8500  1.1  riastrad 		  depdepl=
   8501  1.1  riastrad 		  eval deplibrary_names=`$SED -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
   8502  1.1  riastrad 		  if test -n "$deplibrary_names"; then
   8503  1.1  riastrad 		    for tmp in $deplibrary_names; do
   8504  1.1  riastrad 		      depdepl=$tmp
   8505  1.1  riastrad 		    done
   8506  1.1  riastrad 		    if test -f "$absdir/$objdir/$depdepl"; then
   8507  1.1  riastrad 		      depdepl=$absdir/$objdir/$depdepl
   8508  1.1  riastrad 		      darwin_install_name=`$OTOOL -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
   8509  1.1  riastrad                       if test -z "$darwin_install_name"; then
   8510  1.1  riastrad                           darwin_install_name=`$OTOOL64 -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
   8511  1.1  riastrad                       fi
   8512  1.1  riastrad 		      func_append compiler_flags " $wl-dylib_file $wl$darwin_install_name:$depdepl"
   8513  1.1  riastrad 		      func_append linker_flags " -dylib_file $darwin_install_name:$depdepl"
   8514  1.1  riastrad 		      path=
   8515  1.1  riastrad 		    fi
   8516  1.1  riastrad 		  fi
   8517  1.1  riastrad 		  ;;
   8518  1.1  riastrad 		*)
   8519  1.1  riastrad 		  path=-L$absdir/$objdir
   8520  1.1  riastrad 		  ;;
   8521  1.1  riastrad 		esac
   8522  1.1  riastrad 		else
   8523  1.1  riastrad 		  eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
   8524  1.1  riastrad 		  test -z "$libdir" && \
   8525  1.1  riastrad 		    func_fatal_error "'$deplib' is not a valid libtool archive"
   8526  1.1  riastrad 		  test "$absdir" != "$libdir" && \
   8527  1.1  riastrad 		    func_warning "'$deplib' seems to be moved"
   8528  1.1  riastrad 
   8529  1.1  riastrad 		  path=-L$absdir
   8530  1.1  riastrad 		fi
   8531  1.1  riastrad 		;;
   8532  1.1  riastrad 	      esac
   8533  1.1  riastrad 	      case " $deplibs " in
   8534  1.1  riastrad 	      *" $path "*) ;;
   8535  1.1  riastrad 	      *) deplibs="$path $deplibs" ;;
   8536  1.1  riastrad 	      esac
   8537  1.1  riastrad 	    done
   8538  1.1  riastrad 	  fi # link_all_deplibs != no
   8539  1.1  riastrad 	fi # linkmode = lib
   8540  1.1  riastrad       done # for deplib in $libs
   8541  1.1  riastrad       if test link = "$pass"; then
   8542  1.1  riastrad 	if test prog = "$linkmode"; then
   8543  1.1  riastrad 	  compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
   8544  1.1  riastrad 	  finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
   8545  1.1  riastrad 	else
   8546  1.1  riastrad 	  compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
   8547  1.1  riastrad 	fi
   8548  1.1  riastrad       fi
   8549  1.1  riastrad       dependency_libs=$newdependency_libs
   8550  1.1  riastrad       if test dlpreopen = "$pass"; then
   8551  1.1  riastrad 	# Link the dlpreopened libraries before other libraries
   8552  1.1  riastrad 	for deplib in $save_deplibs; do
   8553  1.1  riastrad 	  deplibs="$deplib $deplibs"
   8554  1.1  riastrad 	done
   8555  1.1  riastrad       fi
   8556  1.1  riastrad       if test dlopen != "$pass"; then
   8557  1.1  riastrad 	test conv = "$pass" || {
   8558  1.1  riastrad 	  # Make sure lib_search_path contains only unique directories.
   8559  1.1  riastrad 	  lib_search_path=
   8560  1.1  riastrad 	  for dir in $newlib_search_path; do
   8561  1.1  riastrad 	    case "$lib_search_path " in
   8562  1.1  riastrad 	    *" $dir "*) ;;
   8563  1.1  riastrad 	    *) func_append lib_search_path " $dir" ;;
   8564  1.1  riastrad 	    esac
   8565  1.1  riastrad 	  done
   8566  1.1  riastrad 	  newlib_search_path=
   8567  1.1  riastrad 	}
   8568  1.1  riastrad 
   8569  1.1  riastrad 	if test prog,link = "$linkmode,$pass"; then
   8570  1.1  riastrad 	  vars="compile_deplibs finalize_deplibs"
   8571  1.1  riastrad 	else
   8572  1.1  riastrad 	  vars=deplibs
   8573  1.1  riastrad 	fi
   8574  1.1  riastrad 	for var in $vars dependency_libs; do
   8575  1.1  riastrad 	  # Add libraries to $var in reverse order
   8576  1.1  riastrad 	  eval tmp_libs=\"\$$var\"
   8577  1.1  riastrad 	  new_libs=
   8578  1.1  riastrad 	  for deplib in $tmp_libs; do
   8579  1.1  riastrad 	    # FIXME: Pedantically, this is the right thing to do, so
   8580  1.1  riastrad 	    #        that some nasty dependency loop isn't accidentally
   8581  1.1  riastrad 	    #        broken:
   8582  1.1  riastrad 	    #new_libs="$deplib $new_libs"
   8583  1.1  riastrad 	    # Pragmatically, this seems to cause very few problems in
   8584  1.1  riastrad 	    # practice:
   8585  1.1  riastrad 	    case $deplib in
   8586  1.1  riastrad 	    -L*) new_libs="$deplib $new_libs" ;;
   8587  1.1  riastrad 	    -R*) ;;
   8588  1.1  riastrad 	    *)
   8589  1.1  riastrad 	      # And here is the reason: when a library appears more
   8590  1.1  riastrad 	      # than once as an explicit dependence of a library, or
   8591  1.1  riastrad 	      # is implicitly linked in more than once by the
   8592  1.1  riastrad 	      # compiler, it is considered special, and multiple
   8593  1.1  riastrad 	      # occurrences thereof are not removed.  Compare this
   8594  1.1  riastrad 	      # with having the same library being listed as a
   8595  1.1  riastrad 	      # dependency of multiple other libraries: in this case,
   8596  1.1  riastrad 	      # we know (pedantically, we assume) the library does not
   8597  1.1  riastrad 	      # need to be listed more than once, so we keep only the
   8598  1.1  riastrad 	      # last copy.  This is not always right, but it is rare
   8599  1.1  riastrad 	      # enough that we require users that really mean to play
   8600  1.1  riastrad 	      # such unportable linking tricks to link the library
   8601  1.1  riastrad 	      # using -Wl,-lname, so that libtool does not consider it
   8602  1.1  riastrad 	      # for duplicate removal.
   8603  1.1  riastrad 	      case " $specialdeplibs " in
   8604  1.1  riastrad 	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
   8605  1.1  riastrad 	      *)
   8606  1.1  riastrad 		case " $new_libs " in
   8607  1.1  riastrad 		*" $deplib "*) ;;
   8608  1.1  riastrad 		*) new_libs="$deplib $new_libs" ;;
   8609  1.1  riastrad 		esac
   8610  1.1  riastrad 		;;
   8611  1.1  riastrad 	      esac
   8612  1.1  riastrad 	      ;;
   8613  1.1  riastrad 	    esac
   8614  1.1  riastrad 	  done
   8615  1.1  riastrad 	  tmp_libs=
   8616  1.1  riastrad 	  for deplib in $new_libs; do
   8617  1.1  riastrad 	    case $deplib in
   8618  1.1  riastrad 	    -L*)
   8619  1.1  riastrad 	      case " $tmp_libs " in
   8620  1.1  riastrad 	      *" $deplib "*) ;;
   8621  1.1  riastrad 	      *) func_append tmp_libs " $deplib" ;;
   8622  1.1  riastrad 	      esac
   8623  1.1  riastrad 	      ;;
   8624  1.1  riastrad 	    *) func_append tmp_libs " $deplib" ;;
   8625  1.1  riastrad 	    esac
   8626  1.1  riastrad 	  done
   8627  1.1  riastrad 	  eval $var=\"$tmp_libs\"
   8628  1.1  riastrad 	done # for var
   8629  1.1  riastrad       fi
   8630  1.1  riastrad 
   8631  1.1  riastrad       # Add Sun CC postdeps if required:
   8632  1.1  riastrad       test CXX = "$tagname" && {
   8633  1.1  riastrad         case $host_os in
   8634  1.1  riastrad         linux*)
   8635  1.1  riastrad           case `$CC -V 2>&1 | sed 5q` in
   8636  1.1  riastrad           *Sun\ C*) # Sun C++ 5.9
   8637  1.1  riastrad             func_suncc_cstd_abi
   8638  1.1  riastrad 
   8639  1.1  riastrad             if test no != "$suncc_use_cstd_abi"; then
   8640  1.1  riastrad               func_append postdeps ' -library=Cstd -library=Crun'
   8641  1.1  riastrad             fi
   8642  1.1  riastrad             ;;
   8643  1.1  riastrad           esac
   8644  1.1  riastrad           ;;
   8645  1.1  riastrad 
   8646  1.1  riastrad         solaris*)
   8647  1.1  riastrad           func_cc_basename "$CC"
   8648  1.1  riastrad           case $func_cc_basename_result in
   8649  1.1  riastrad           CC* | sunCC*)
   8650  1.1  riastrad             func_suncc_cstd_abi
   8651  1.1  riastrad 
   8652  1.1  riastrad             if test no != "$suncc_use_cstd_abi"; then
   8653  1.1  riastrad               func_append postdeps ' -library=Cstd -library=Crun'
   8654  1.1  riastrad             fi
   8655  1.1  riastrad             ;;
   8656  1.1  riastrad           esac
   8657  1.1  riastrad           ;;
   8658  1.1  riastrad         esac
   8659  1.1  riastrad       }
   8660  1.1  riastrad 
   8661  1.1  riastrad       # Last step: remove runtime libs from dependency_libs
   8662  1.1  riastrad       # (they stay in deplibs)
   8663  1.1  riastrad       tmp_libs=
   8664  1.1  riastrad       for i in $dependency_libs; do
   8665  1.1  riastrad 	case " $predeps $postdeps $compiler_lib_search_path " in
   8666  1.1  riastrad 	*" $i "*)
   8667  1.1  riastrad 	  i=
   8668  1.1  riastrad 	  ;;
   8669  1.1  riastrad 	esac
   8670  1.1  riastrad 	if test -n "$i"; then
   8671  1.1  riastrad 	  func_append tmp_libs " $i"
   8672  1.1  riastrad 	fi
   8673  1.1  riastrad       done
   8674  1.1  riastrad       dependency_libs=$tmp_libs
   8675  1.1  riastrad     done # for pass
   8676  1.1  riastrad     if test prog = "$linkmode"; then
   8677  1.1  riastrad       dlfiles=$newdlfiles
   8678  1.1  riastrad     fi
   8679  1.1  riastrad     if test prog = "$linkmode" || test lib = "$linkmode"; then
   8680  1.1  riastrad       dlprefiles=$newdlprefiles
   8681  1.1  riastrad     fi
   8682  1.1  riastrad 
   8683  1.1  riastrad     case $linkmode in
   8684  1.1  riastrad     oldlib)
   8685  1.1  riastrad       if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then
   8686  1.1  riastrad 	func_warning "'-dlopen' is ignored for archives"
   8687  1.1  riastrad       fi
   8688  1.1  riastrad 
   8689  1.1  riastrad       case " $deplibs" in
   8690  1.1  riastrad       *\ -l* | *\ -L*)
   8691  1.1  riastrad 	func_warning "'-l' and '-L' are ignored for archives" ;;
   8692  1.1  riastrad       esac
   8693  1.1  riastrad 
   8694  1.1  riastrad       test -n "$rpath" && \
   8695  1.1  riastrad 	func_warning "'-rpath' is ignored for archives"
   8696  1.1  riastrad 
   8697  1.1  riastrad       test -n "$xrpath" && \
   8698  1.1  riastrad 	func_warning "'-R' is ignored for archives"
   8699  1.1  riastrad 
   8700  1.1  riastrad       test -n "$vinfo" && \
   8701  1.1  riastrad 	func_warning "'-version-info/-version-number' is ignored for archives"
   8702  1.1  riastrad 
   8703  1.1  riastrad       test -n "$release" && \
   8704  1.1  riastrad 	func_warning "'-release' is ignored for archives"
   8705  1.1  riastrad 
   8706  1.1  riastrad       test -n "$export_symbols$export_symbols_regex" && \
   8707  1.1  riastrad 	func_warning "'-export-symbols' is ignored for archives"
   8708  1.1  riastrad 
   8709  1.1  riastrad       # Now set the variables for building old libraries.
   8710  1.1  riastrad       build_libtool_libs=no
   8711  1.1  riastrad       oldlibs=$output
   8712  1.1  riastrad       func_append objs "$old_deplibs"
   8713  1.1  riastrad       ;;
   8714  1.1  riastrad 
   8715  1.1  riastrad     lib)
   8716  1.1  riastrad       # Make sure we only generate libraries of the form 'libNAME.la'.
   8717  1.1  riastrad       case $outputname in
   8718  1.1  riastrad       lib*)
   8719  1.1  riastrad 	func_stripname 'lib' '.la' "$outputname"
   8720  1.1  riastrad 	name=$func_stripname_result
   8721  1.1  riastrad 	eval shared_ext=\"$shrext_cmds\"
   8722  1.1  riastrad 	eval libname=\"$libname_spec\"
   8723  1.1  riastrad 	;;
   8724  1.1  riastrad       *)
   8725  1.1  riastrad 	test no = "$module" \
   8726  1.1  riastrad 	  && func_fatal_help "libtool library '$output' must begin with 'lib'"
   8727  1.1  riastrad 
   8728  1.1  riastrad 	if test no != "$need_lib_prefix"; then
   8729  1.1  riastrad 	  # Add the "lib" prefix for modules if required
   8730  1.1  riastrad 	  func_stripname '' '.la' "$outputname"
   8731  1.1  riastrad 	  name=$func_stripname_result
   8732  1.1  riastrad 	  eval shared_ext=\"$shrext_cmds\"
   8733  1.1  riastrad 	  eval libname=\"$libname_spec\"
   8734  1.1  riastrad 	else
   8735  1.1  riastrad 	  func_stripname '' '.la' "$outputname"
   8736  1.1  riastrad 	  libname=$func_stripname_result
   8737  1.1  riastrad 	fi
   8738  1.1  riastrad 	;;
   8739  1.1  riastrad       esac
   8740  1.1  riastrad 
   8741  1.1  riastrad       if test -n "$objs"; then
   8742  1.1  riastrad 	if test pass_all != "$deplibs_check_method"; then
   8743  1.1  riastrad 	  func_fatal_error "cannot build libtool library '$output' from non-libtool objects on this host:$objs"
   8744  1.1  riastrad 	else
   8745  1.1  riastrad 	  echo
   8746  1.1  riastrad 	  $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
   8747  1.1  riastrad 	  $ECHO "*** objects $objs is not portable!"
   8748  1.1  riastrad 	  func_append libobjs " $objs"
   8749  1.1  riastrad 	fi
   8750  1.1  riastrad       fi
   8751  1.1  riastrad 
   8752  1.1  riastrad       test no = "$dlself" \
   8753  1.1  riastrad 	|| func_warning "'-dlopen self' is ignored for libtool libraries"
   8754  1.1  riastrad 
   8755  1.1  riastrad       set dummy $rpath
   8756  1.1  riastrad       shift
   8757  1.1  riastrad       test 1 -lt "$#" \
   8758  1.1  riastrad 	&& func_warning "ignoring multiple '-rpath's for a libtool library"
   8759  1.1  riastrad 
   8760  1.1  riastrad       install_libdir=$1
   8761  1.1  riastrad 
   8762  1.1  riastrad       oldlibs=
   8763  1.1  riastrad       if test -z "$rpath"; then
   8764  1.1  riastrad 	if test yes = "$build_libtool_libs"; then
   8765  1.1  riastrad 	  # Building a libtool convenience library.
   8766  1.1  riastrad 	  # Some compilers have problems with a '.al' extension so
   8767  1.1  riastrad 	  # convenience libraries should have the same extension an
   8768  1.1  riastrad 	  # archive normally would.
   8769  1.1  riastrad 	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
   8770  1.1  riastrad 	  build_libtool_libs=convenience
   8771  1.1  riastrad 	  build_old_libs=yes
   8772  1.1  riastrad 	fi
   8773  1.1  riastrad 
   8774  1.1  riastrad 	test -n "$vinfo" && \
   8775  1.1  riastrad 	  func_warning "'-version-info/-version-number' is ignored for convenience libraries"
   8776  1.1  riastrad 
   8777  1.1  riastrad 	test -n "$release" && \
   8778  1.1  riastrad 	  func_warning "'-release' is ignored for convenience libraries"
   8779  1.1  riastrad       else
   8780  1.1  riastrad 
   8781  1.1  riastrad 	# Parse the version information argument.
   8782  1.1  riastrad 	save_ifs=$IFS; IFS=:
   8783  1.1  riastrad 	set dummy $vinfo 0 0 0
   8784  1.1  riastrad 	shift
   8785  1.1  riastrad 	IFS=$save_ifs
   8786  1.1  riastrad 
   8787  1.1  riastrad 	test -n "$7" && \
   8788  1.1  riastrad 	  func_fatal_help "too many parameters to '-version-info'"
   8789  1.1  riastrad 
   8790  1.1  riastrad 	# convert absolute version numbers to libtool ages
   8791  1.1  riastrad 	# this retains compatibility with .la files and attempts
   8792  1.1  riastrad 	# to make the code below a bit more comprehensible
   8793  1.1  riastrad 
   8794  1.1  riastrad 	case $vinfo_number in
   8795  1.1  riastrad 	yes)
   8796  1.1  riastrad 	  number_major=$1
   8797  1.1  riastrad 	  number_minor=$2
   8798  1.1  riastrad 	  number_revision=$3
   8799  1.1  riastrad 	  #
   8800  1.1  riastrad 	  # There are really only two kinds -- those that
   8801  1.1  riastrad 	  # use the current revision as the major version
   8802  1.1  riastrad 	  # and those that subtract age and use age as
   8803  1.1  riastrad 	  # a minor version.  But, then there is irix
   8804  1.1  riastrad 	  # that has an extra 1 added just for fun
   8805  1.1  riastrad 	  #
   8806  1.1  riastrad 	  case $version_type in
   8807  1.1  riastrad 	  # correct linux to gnu/linux during the next big refactor
   8808  1.1  riastrad 	  darwin|freebsd-elf|linux|osf|windows|none)
   8809  1.1  riastrad 	    func_arith $number_major + $number_minor
   8810  1.1  riastrad 	    current=$func_arith_result
   8811  1.1  riastrad 	    age=$number_minor
   8812  1.1  riastrad 	    revision=$number_revision
   8813  1.1  riastrad 	    ;;
   8814  1.1  riastrad 	  freebsd-aout|qnx|sunos)
   8815  1.1  riastrad 	    current=$number_major
   8816  1.1  riastrad 	    revision=$number_minor
   8817  1.1  riastrad 	    age=0
   8818  1.1  riastrad 	    ;;
   8819  1.1  riastrad 	  irix|nonstopux)
   8820  1.1  riastrad 	    func_arith $number_major + $number_minor
   8821  1.1  riastrad 	    current=$func_arith_result
   8822  1.1  riastrad 	    age=$number_minor
   8823  1.1  riastrad 	    revision=$number_minor
   8824  1.1  riastrad 	    lt_irix_increment=no
   8825  1.1  riastrad 	    ;;
   8826  1.1  riastrad 	  esac
   8827  1.1  riastrad 	  ;;
   8828  1.1  riastrad 	no)
   8829  1.1  riastrad 	  current=$1
   8830  1.1  riastrad 	  revision=$2
   8831  1.1  riastrad 	  age=$3
   8832  1.1  riastrad 	  ;;
   8833  1.1  riastrad 	esac
   8834  1.1  riastrad 
   8835  1.1  riastrad 	# Check that each of the things are valid numbers.
   8836  1.1  riastrad 	case $current in
   8837  1.1  riastrad 	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]) ;;
   8838  1.1  riastrad 	*)
   8839  1.1  riastrad 	  func_error "CURRENT '$current' must be a nonnegative integer"
   8840  1.1  riastrad 	  func_fatal_error "'$vinfo' is not valid version information"
   8841  1.1  riastrad 	  ;;
   8842  1.1  riastrad 	esac
   8843  1.1  riastrad 
   8844  1.1  riastrad 	case $revision in
   8845  1.1  riastrad 	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]) ;;
   8846  1.1  riastrad 	*)
   8847  1.1  riastrad 	  func_error "REVISION '$revision' must be a nonnegative integer"
   8848  1.1  riastrad 	  func_fatal_error "'$vinfo' is not valid version information"
   8849  1.1  riastrad 	  ;;
   8850  1.1  riastrad 	esac
   8851  1.1  riastrad 
   8852  1.1  riastrad 	case $age in
   8853  1.1  riastrad 	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]) ;;
   8854  1.1  riastrad 	*)
   8855  1.1  riastrad 	  func_error "AGE '$age' must be a nonnegative integer"
   8856  1.1  riastrad 	  func_fatal_error "'$vinfo' is not valid version information"
   8857  1.1  riastrad 	  ;;
   8858  1.1  riastrad 	esac
   8859  1.1  riastrad 
   8860  1.1  riastrad 	if test "$age" -gt "$current"; then
   8861  1.1  riastrad 	  func_error "AGE '$age' is greater than the current interface number '$current'"
   8862  1.1  riastrad 	  func_fatal_error "'$vinfo' is not valid version information"
   8863  1.1  riastrad 	fi
   8864  1.1  riastrad 
   8865  1.1  riastrad 	# Calculate the version variables.
   8866  1.1  riastrad 	major=
   8867  1.1  riastrad 	versuffix=
   8868  1.1  riastrad 	verstring=
   8869  1.1  riastrad 	case $version_type in
   8870  1.1  riastrad 	none) ;;
   8871  1.1  riastrad 
   8872  1.1  riastrad 	darwin)
   8873  1.1  riastrad 	  # Like Linux, but with the current version available in
   8874  1.1  riastrad 	  # verstring for coding it into the library header
   8875  1.1  riastrad 	  func_arith $current - $age
   8876  1.1  riastrad 	  major=.$func_arith_result
   8877  1.1  riastrad 	  versuffix=$major.$age.$revision
   8878  1.1  riastrad 	  # Darwin ld doesn't like 0 for these options...
   8879  1.1  riastrad 	  func_arith $current + 1
   8880  1.1  riastrad 	  minor_current=$func_arith_result
   8881  1.1  riastrad 	  xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision"
   8882  1.1  riastrad 	  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
   8883  1.1  riastrad           # On Darwin other compilers
   8884  1.1  riastrad           case $CC in
   8885  1.1  riastrad               nagfor*)
   8886  1.1  riastrad                   verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision"
   8887  1.1  riastrad                   ;;
   8888  1.1  riastrad               *)
   8889  1.1  riastrad                   verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
   8890  1.1  riastrad                   ;;
   8891  1.1  riastrad           esac
   8892  1.1  riastrad 	  ;;
   8893  1.1  riastrad 
   8894  1.1  riastrad 	freebsd-aout)
   8895  1.1  riastrad 	  major=.$current
   8896  1.1  riastrad 	  versuffix=.$current.$revision
   8897  1.1  riastrad 	  ;;
   8898  1.1  riastrad 
   8899  1.1  riastrad 	freebsd-elf)
   8900  1.1  riastrad 	  func_arith $current - $age
   8901  1.1  riastrad 	  major=.$func_arith_result
   8902  1.1  riastrad 	  versuffix=$major.$age.$revision
   8903  1.1  riastrad 	  ;;
   8904  1.1  riastrad 
   8905  1.1  riastrad 	irix | nonstopux)
   8906  1.1  riastrad 	  if test no = "$lt_irix_increment"; then
   8907  1.1  riastrad 	    func_arith $current - $age
   8908  1.1  riastrad 	  else
   8909  1.1  riastrad 	    func_arith $current - $age + 1
   8910  1.1  riastrad 	  fi
   8911  1.1  riastrad 	  major=$func_arith_result
   8912  1.1  riastrad 
   8913  1.1  riastrad 	  case $version_type in
   8914  1.1  riastrad 	    nonstopux) verstring_prefix=nonstopux ;;
   8915  1.1  riastrad 	    *)         verstring_prefix=sgi ;;
   8916  1.1  riastrad 	  esac
   8917  1.1  riastrad 	  verstring=$verstring_prefix$major.$revision
   8918  1.1  riastrad 
   8919  1.1  riastrad 	  # Add in all the interfaces that we are compatible with.
   8920  1.1  riastrad 	  loop=$revision
   8921  1.1  riastrad 	  while test 0 -ne "$loop"; do
   8922  1.1  riastrad 	    func_arith $revision - $loop
   8923  1.1  riastrad 	    iface=$func_arith_result
   8924  1.1  riastrad 	    func_arith $loop - 1
   8925  1.1  riastrad 	    loop=$func_arith_result
   8926  1.1  riastrad 	    verstring=$verstring_prefix$major.$iface:$verstring
   8927  1.1  riastrad 	  done
   8928  1.1  riastrad 
   8929  1.1  riastrad 	  # Before this point, $major must not contain '.'.
   8930  1.1  riastrad 	  major=.$major
   8931  1.1  riastrad 	  versuffix=$major.$revision
   8932  1.1  riastrad 	  ;;
   8933  1.1  riastrad 
   8934  1.1  riastrad 	linux) # correct to gnu/linux during the next big refactor
   8935  1.1  riastrad 	  func_arith $current - $age
   8936  1.1  riastrad 	  major=.$func_arith_result
   8937  1.1  riastrad 	  versuffix=$major.$age.$revision
   8938  1.1  riastrad 	  ;;
   8939  1.1  riastrad 
   8940  1.1  riastrad 	osf)
   8941  1.1  riastrad 	  func_arith $current - $age
   8942  1.1  riastrad 	  major=.$func_arith_result
   8943  1.1  riastrad 	  versuffix=.$current.$age.$revision
   8944  1.1  riastrad 	  verstring=$current.$age.$revision
   8945  1.1  riastrad 
   8946  1.1  riastrad 	  # Add in all the interfaces that we are compatible with.
   8947  1.1  riastrad 	  loop=$age
   8948  1.1  riastrad 	  while test 0 -ne "$loop"; do
   8949  1.1  riastrad 	    func_arith $current - $loop
   8950  1.1  riastrad 	    iface=$func_arith_result
   8951  1.1  riastrad 	    func_arith $loop - 1
   8952  1.1  riastrad 	    loop=$func_arith_result
   8953  1.1  riastrad 	    verstring=$verstring:$iface.0
   8954  1.1  riastrad 	  done
   8955  1.1  riastrad 
   8956  1.1  riastrad 	  # Make executables depend on our current version.
   8957  1.1  riastrad 	  func_append verstring ":$current.0"
   8958  1.1  riastrad 	  ;;
   8959  1.1  riastrad 
   8960  1.1  riastrad 	qnx)
   8961  1.1  riastrad 	  major=.$current
   8962  1.1  riastrad 	  versuffix=.$current
   8963  1.1  riastrad 	  ;;
   8964  1.1  riastrad 
   8965  1.1  riastrad 	sco)
   8966  1.1  riastrad 	  major=.$current
   8967  1.1  riastrad 	  versuffix=.$current
   8968  1.1  riastrad 	  ;;
   8969  1.1  riastrad 
   8970  1.1  riastrad 	sunos)
   8971  1.1  riastrad 	  major=.$current
   8972  1.1  riastrad 	  versuffix=.$current.$revision
   8973  1.1  riastrad 	  ;;
   8974  1.1  riastrad 
   8975  1.1  riastrad 	windows)
   8976  1.1  riastrad 	  # Use '-' rather than '.', since we only want one
   8977  1.1  riastrad 	  # extension on DOS 8.3 file systems.
   8978  1.1  riastrad 	  func_arith $current - $age
   8979  1.1  riastrad 	  major=$func_arith_result
   8980  1.1  riastrad 	  versuffix=-$major
   8981  1.1  riastrad 	  ;;
   8982  1.1  riastrad 
   8983  1.1  riastrad 	*)
   8984  1.1  riastrad 	  func_fatal_configuration "unknown library version type '$version_type'"
   8985  1.1  riastrad 	  ;;
   8986  1.1  riastrad 	esac
   8987  1.1  riastrad 
   8988  1.1  riastrad 	# Clear the version info if we defaulted, and they specified a release.
   8989  1.1  riastrad 	if test -z "$vinfo" && test -n "$release"; then
   8990  1.1  riastrad 	  major=
   8991  1.1  riastrad 	  case $version_type in
   8992  1.1  riastrad 	  darwin)
   8993  1.1  riastrad 	    # we can't check for "0.0" in archive_cmds due to quoting
   8994  1.1  riastrad 	    # problems, so we reset it completely
   8995  1.1  riastrad 	    verstring=
   8996  1.1  riastrad 	    ;;
   8997  1.1  riastrad 	  *)
   8998  1.1  riastrad 	    verstring=0.0
   8999  1.1  riastrad 	    ;;
   9000  1.1  riastrad 	  esac
   9001  1.1  riastrad 	  if test no = "$need_version"; then
   9002  1.1  riastrad 	    versuffix=
   9003  1.1  riastrad 	  else
   9004  1.1  riastrad 	    versuffix=.0.0
   9005  1.1  riastrad 	  fi
   9006  1.1  riastrad 	fi
   9007  1.1  riastrad 
   9008  1.1  riastrad 	# Remove version info from name if versioning should be avoided
   9009  1.1  riastrad 	if test yes,no = "$avoid_version,$need_version"; then
   9010  1.1  riastrad 	  major=
   9011  1.1  riastrad 	  versuffix=
   9012  1.1  riastrad 	  verstring=
   9013  1.1  riastrad 	fi
   9014  1.1  riastrad 
   9015  1.1  riastrad 	# Check to see if the archive will have undefined symbols.
   9016  1.1  riastrad 	if test yes = "$allow_undefined"; then
   9017  1.1  riastrad 	  if test unsupported = "$allow_undefined_flag"; then
   9018  1.1  riastrad 	    if test yes = "$build_old_libs"; then
   9019  1.1  riastrad 	      func_warning "undefined symbols not allowed in $host shared libraries; building static only"
   9020  1.1  riastrad 	      build_libtool_libs=no
   9021  1.1  riastrad 	    else
   9022  1.1  riastrad 	      func_fatal_error "can't build $host shared library unless -no-undefined is specified"
   9023  1.1  riastrad 	    fi
   9024  1.1  riastrad 	  fi
   9025  1.1  riastrad 	else
   9026  1.1  riastrad 	  # Don't allow undefined symbols.
   9027  1.1  riastrad 	  allow_undefined_flag=$no_undefined_flag
   9028  1.1  riastrad 	fi
   9029  1.1  riastrad 
   9030  1.1  riastrad       fi
   9031  1.1  riastrad 
   9032  1.1  riastrad       func_generate_dlsyms "$libname" "$libname" :
   9033  1.1  riastrad       func_append libobjs " $symfileobj"
   9034  1.1  riastrad       test " " = "$libobjs" && libobjs=
   9035  1.1  riastrad 
   9036  1.1  riastrad       if test relink != "$opt_mode"; then
   9037  1.1  riastrad 	# Remove our outputs, but don't remove object files since they
   9038  1.1  riastrad 	# may have been created when compiling PIC objects.
   9039  1.1  riastrad 	removelist=
   9040  1.1  riastrad 	tempremovelist=`$ECHO "$output_objdir/*"`
   9041  1.1  riastrad 	for p in $tempremovelist; do
   9042  1.1  riastrad 	  case $p in
   9043  1.1  riastrad 	    *.$objext | *.gcno)
   9044  1.1  riastrad 	       ;;
   9045  1.1  riastrad 	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/$libname$release.*)
   9046  1.1  riastrad 	       if test -n "$precious_files_regex"; then
   9047  1.1  riastrad 		 if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
   9048  1.1  riastrad 		 then
   9049  1.1  riastrad 		   continue
   9050  1.1  riastrad 		 fi
   9051  1.1  riastrad 	       fi
   9052  1.1  riastrad 	       func_append removelist " $p"
   9053  1.1  riastrad 	       ;;
   9054  1.1  riastrad 	    *) ;;
   9055  1.1  riastrad 	  esac
   9056  1.1  riastrad 	done
   9057  1.1  riastrad 	test -n "$removelist" && \
   9058  1.1  riastrad 	  func_show_eval "${RM}r \$removelist"
   9059  1.1  riastrad       fi
   9060  1.1  riastrad 
   9061  1.1  riastrad       # Now set the variables for building old libraries.
   9062  1.1  riastrad       if test yes = "$build_old_libs" && test convenience != "$build_libtool_libs"; then
   9063  1.1  riastrad 	func_append oldlibs " $output_objdir/$libname.$libext"
   9064  1.1  riastrad 
   9065  1.1  riastrad 	# Transform .lo files to .o files.
   9066  1.1  riastrad 	oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; $lo2o" | $NL2SP`
   9067  1.1  riastrad       fi
   9068  1.1  riastrad 
   9069  1.1  riastrad       # Eliminate all temporary directories.
   9070  1.1  riastrad       #for path in $notinst_path; do
   9071  1.1  riastrad       #	lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"`
   9072  1.1  riastrad       #	deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"`
   9073  1.1  riastrad       #	dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"`
   9074  1.1  riastrad       #done
   9075  1.1  riastrad 
   9076  1.1  riastrad       if test -n "$xrpath"; then
   9077  1.1  riastrad 	# If the user specified any rpath flags, then add them.
   9078  1.1  riastrad 	temp_xrpath=
   9079  1.1  riastrad 	for libdir in $xrpath; do
   9080  1.1  riastrad 	  func_replace_sysroot "$libdir"
   9081  1.1  riastrad 	  func_append temp_xrpath " -R$func_replace_sysroot_result"
   9082  1.1  riastrad 	  case "$finalize_rpath " in
   9083  1.1  riastrad 	  *" $libdir "*) ;;
   9084  1.1  riastrad 	  *) func_append finalize_rpath " $libdir" ;;
   9085  1.1  riastrad 	  esac
   9086  1.1  riastrad 	done
   9087  1.1  riastrad 	if test yes != "$hardcode_into_libs" || test yes = "$build_old_libs"; then
   9088  1.1  riastrad 	  dependency_libs="$temp_xrpath $dependency_libs"
   9089  1.1  riastrad 	fi
   9090  1.1  riastrad       fi
   9091  1.1  riastrad 
   9092  1.1  riastrad       # Make sure dlfiles contains only unique files that won't be dlpreopened
   9093  1.1  riastrad       old_dlfiles=$dlfiles
   9094  1.1  riastrad       dlfiles=
   9095  1.1  riastrad       for lib in $old_dlfiles; do
   9096  1.1  riastrad 	case " $dlprefiles $dlfiles " in
   9097  1.1  riastrad 	*" $lib "*) ;;
   9098  1.1  riastrad 	*) func_append dlfiles " $lib" ;;
   9099  1.1  riastrad 	esac
   9100  1.1  riastrad       done
   9101  1.1  riastrad 
   9102  1.1  riastrad       # Make sure dlprefiles contains only unique files
   9103  1.1  riastrad       old_dlprefiles=$dlprefiles
   9104  1.1  riastrad       dlprefiles=
   9105  1.1  riastrad       for lib in $old_dlprefiles; do
   9106  1.1  riastrad 	case "$dlprefiles " in
   9107  1.1  riastrad 	*" $lib "*) ;;
   9108  1.1  riastrad 	*) func_append dlprefiles " $lib" ;;
   9109  1.1  riastrad 	esac
   9110  1.1  riastrad       done
   9111  1.1  riastrad 
   9112  1.1  riastrad       if test yes = "$build_libtool_libs"; then
   9113  1.1  riastrad 	if test -n "$rpath"; then
   9114  1.1  riastrad 	  case $host in
   9115  1.1  riastrad 	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*)
   9116  1.1  riastrad 	    # these systems don't actually have a c library (as such)!
   9117  1.1  riastrad 	    ;;
   9118  1.1  riastrad 	  *-*-rhapsody* | *-*-darwin1.[012])
   9119  1.1  riastrad 	    # Rhapsody C library is in the System framework
   9120  1.1  riastrad 	    func_append deplibs " System.ltframework"
   9121  1.1  riastrad 	    ;;
   9122  1.1  riastrad 	  *-*-netbsd*)
   9123  1.1  riastrad 	    # Don't link with libc until the a.out ld.so is fixed.
   9124  1.1  riastrad 	    ;;
   9125  1.1  riastrad 	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
   9126  1.1  riastrad 	    # Do not include libc due to us having libc/libc_r.
   9127  1.1  riastrad 	    ;;
   9128  1.1  riastrad 	  *-*-sco3.2v5* | *-*-sco5v6*)
   9129  1.1  riastrad 	    # Causes problems with __ctype
   9130  1.1  riastrad 	    ;;
   9131  1.1  riastrad 	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
   9132  1.1  riastrad 	    # Compiler inserts libc in the correct place for threads to work
   9133  1.1  riastrad 	    ;;
   9134  1.1  riastrad 	  *)
   9135  1.1  riastrad 	    # Add libc to deplibs on all other systems if necessary.
   9136  1.1  riastrad 	    if test yes = "$build_libtool_need_lc"; then
   9137  1.1  riastrad 	      func_append deplibs " -lc"
   9138  1.1  riastrad 	    fi
   9139  1.1  riastrad 	    ;;
   9140  1.1  riastrad 	  esac
   9141  1.1  riastrad 	fi
   9142  1.1  riastrad 
   9143  1.1  riastrad 	# Transform deplibs into only deplibs that can be linked in shared.
   9144  1.1  riastrad 	name_save=$name
   9145  1.1  riastrad 	libname_save=$libname
   9146  1.1  riastrad 	release_save=$release
   9147  1.1  riastrad 	versuffix_save=$versuffix
   9148  1.1  riastrad 	major_save=$major
   9149  1.1  riastrad 	# I'm not sure if I'm treating the release correctly.  I think
   9150  1.1  riastrad 	# release should show up in the -l (ie -lgmp5) so we don't want to
   9151  1.1  riastrad 	# add it in twice.  Is that correct?
   9152  1.1  riastrad 	release=
   9153  1.1  riastrad 	versuffix=
   9154  1.1  riastrad 	major=
   9155  1.1  riastrad 	newdeplibs=
   9156  1.1  riastrad 	droppeddeps=no
   9157  1.1  riastrad 	case $deplibs_check_method in
   9158  1.1  riastrad 	pass_all)
   9159  1.1  riastrad 	  # Don't check for shared/static.  Everything works.
   9160  1.1  riastrad 	  # This might be a little naive.  We might want to check
   9161  1.1  riastrad 	  # whether the library exists or not.  But this is on
   9162  1.1  riastrad 	  # osf3 & osf4 and I'm not really sure... Just
   9163  1.1  riastrad 	  # implementing what was already the behavior.
   9164  1.1  riastrad 	  newdeplibs=$deplibs
   9165  1.1  riastrad 	  ;;
   9166  1.1  riastrad 	test_compile)
   9167  1.1  riastrad 	  # This code stresses the "libraries are programs" paradigm to its
   9168  1.1  riastrad 	  # limits. Maybe even breaks it.  We compile a program, linking it
   9169  1.1  riastrad 	  # against the deplibs as a proxy for the library.  Then we can check
   9170  1.1  riastrad 	  # whether they linked in statically or dynamically with ldd.
   9171  1.1  riastrad 	  $opt_dry_run || $RM conftest.c
   9172  1.1  riastrad 	  cat > conftest.c <<EOF
   9173  1.1  riastrad 	  int main() { return 0; }
   9174  1.1  riastrad EOF
   9175  1.1  riastrad 	  $opt_dry_run || $RM conftest
   9176  1.1  riastrad 	  if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
   9177  1.1  riastrad 	    ldd_output=`ldd conftest`
   9178  1.1  riastrad 	    for i in $deplibs; do
   9179  1.1  riastrad 	      case $i in
   9180  1.1  riastrad 	      -l*)
   9181  1.1  riastrad 		func_stripname -l '' "$i"
   9182  1.1  riastrad 		name=$func_stripname_result
   9183  1.1  riastrad 		if test yes = "$allow_libtool_libs_with_static_runtimes"; then
   9184  1.1  riastrad 		  case " $predeps $postdeps " in
   9185  1.1  riastrad 		  *" $i "*)
   9186  1.1  riastrad 		    func_append newdeplibs " $i"
   9187  1.1  riastrad 		    i=
   9188  1.1  riastrad 		    ;;
   9189  1.1  riastrad 		  esac
   9190  1.1  riastrad 		fi
   9191  1.1  riastrad 		if test -n "$i"; then
   9192  1.1  riastrad 		  libname=`eval "\\$ECHO \"$libname_spec\""`
   9193  1.1  riastrad 		  deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
   9194  1.1  riastrad 		  set dummy $deplib_matches; shift
   9195  1.1  riastrad 		  deplib_match=$1
   9196  1.1  riastrad 		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0; then
   9197  1.1  riastrad 		    func_append newdeplibs " $i"
   9198  1.1  riastrad 		  else
   9199  1.1  riastrad 		    droppeddeps=yes
   9200  1.1  riastrad 		    echo
   9201  1.1  riastrad 		    $ECHO "*** Warning: dynamic linker does not accept needed library $i."
   9202  1.1  riastrad 		    echo "*** I have the capability to make that library automatically link in when"
   9203  1.1  riastrad 		    echo "*** you link to this library.  But I can only do this if you have a"
   9204  1.1  riastrad 		    echo "*** shared version of the library, which I believe you do not have"
   9205  1.1  riastrad 		    echo "*** because a test_compile did reveal that the linker did not use it for"
   9206  1.1  riastrad 		    echo "*** its dynamic dependency list that programs get resolved with at runtime."
   9207  1.1  riastrad 		  fi
   9208  1.1  riastrad 		fi
   9209  1.1  riastrad 		;;
   9210  1.1  riastrad 	      *)
   9211  1.1  riastrad 		func_append newdeplibs " $i"
   9212  1.1  riastrad 		;;
   9213  1.1  riastrad 	      esac
   9214  1.1  riastrad 	    done
   9215  1.1  riastrad 	  else
   9216  1.1  riastrad 	    # Error occurred in the first compile.  Let's try to salvage
   9217  1.1  riastrad 	    # the situation: Compile a separate program for each library.
   9218  1.1  riastrad 	    for i in $deplibs; do
   9219  1.1  riastrad 	      case $i in
   9220  1.1  riastrad 	      -l*)
   9221  1.1  riastrad 		func_stripname -l '' "$i"
   9222  1.1  riastrad 		name=$func_stripname_result
   9223  1.1  riastrad 		$opt_dry_run || $RM conftest
   9224  1.1  riastrad 		if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
   9225  1.1  riastrad 		  ldd_output=`ldd conftest`
   9226  1.1  riastrad 		  if test yes = "$allow_libtool_libs_with_static_runtimes"; then
   9227  1.1  riastrad 		    case " $predeps $postdeps " in
   9228  1.1  riastrad 		    *" $i "*)
   9229  1.1  riastrad 		      func_append newdeplibs " $i"
   9230  1.1  riastrad 		      i=
   9231  1.1  riastrad 		      ;;
   9232  1.1  riastrad 		    esac
   9233  1.1  riastrad 		  fi
   9234  1.1  riastrad 		  if test -n "$i"; then
   9235  1.1  riastrad 		    libname=`eval "\\$ECHO \"$libname_spec\""`
   9236  1.1  riastrad 		    deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
   9237  1.1  riastrad 		    set dummy $deplib_matches; shift
   9238  1.1  riastrad 		    deplib_match=$1
   9239  1.1  riastrad 		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0; then
   9240  1.1  riastrad 		      func_append newdeplibs " $i"
   9241  1.1  riastrad 		    else
   9242  1.1  riastrad 		      droppeddeps=yes
   9243  1.1  riastrad 		      echo
   9244  1.1  riastrad 		      $ECHO "*** Warning: dynamic linker does not accept needed library $i."
   9245  1.1  riastrad 		      echo "*** I have the capability to make that library automatically link in when"
   9246  1.1  riastrad 		      echo "*** you link to this library.  But I can only do this if you have a"
   9247  1.1  riastrad 		      echo "*** shared version of the library, which you do not appear to have"
   9248  1.1  riastrad 		      echo "*** because a test_compile did reveal that the linker did not use this one"
   9249  1.1  riastrad 		      echo "*** as a dynamic dependency that programs can get resolved with at runtime."
   9250  1.1  riastrad 		    fi
   9251  1.1  riastrad 		  fi
   9252  1.1  riastrad 		else
   9253  1.1  riastrad 		  droppeddeps=yes
   9254  1.1  riastrad 		  echo
   9255  1.1  riastrad 		  $ECHO "*** Warning!  Library $i is needed by this library but I was not able to"
   9256  1.1  riastrad 		  echo "*** make it link in!  You will probably need to install it or some"
   9257  1.1  riastrad 		  echo "*** library that it depends on before this library will be fully"
   9258  1.1  riastrad 		  echo "*** functional.  Installing it before continuing would be even better."
   9259  1.1  riastrad 		fi
   9260  1.1  riastrad 		;;
   9261  1.1  riastrad 	      *)
   9262  1.1  riastrad 		func_append newdeplibs " $i"
   9263  1.1  riastrad 		;;
   9264  1.1  riastrad 	      esac
   9265  1.1  riastrad 	    done
   9266  1.1  riastrad 	  fi
   9267  1.1  riastrad 	  ;;
   9268  1.1  riastrad 	file_magic*)
   9269  1.1  riastrad 	  set dummy $deplibs_check_method; shift
   9270  1.1  riastrad 	  file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
   9271  1.1  riastrad 	  for a_deplib in $deplibs; do
   9272  1.1  riastrad 	    case $a_deplib in
   9273  1.1  riastrad 	    -l*)
   9274  1.1  riastrad 	      func_stripname -l '' "$a_deplib"
   9275  1.1  riastrad 	      name=$func_stripname_result
   9276  1.1  riastrad 	      if test yes = "$allow_libtool_libs_with_static_runtimes"; then
   9277  1.1  riastrad 		case " $predeps $postdeps " in
   9278  1.1  riastrad 		*" $a_deplib "*)
   9279  1.1  riastrad 		  func_append newdeplibs " $a_deplib"
   9280  1.1  riastrad 		  a_deplib=
   9281  1.1  riastrad 		  ;;
   9282  1.1  riastrad 		esac
   9283  1.1  riastrad 	      fi
   9284  1.1  riastrad 	      if test -n "$a_deplib"; then
   9285  1.1  riastrad 		libname=`eval "\\$ECHO \"$libname_spec\""`
   9286  1.1  riastrad 		if test -n "$file_magic_glob"; then
   9287  1.1  riastrad 		  libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob`
   9288  1.1  riastrad 		else
   9289  1.1  riastrad 		  libnameglob=$libname
   9290  1.1  riastrad 		fi
   9291  1.1  riastrad 		test yes = "$want_nocaseglob" && nocaseglob=`shopt -p nocaseglob`
   9292  1.1  riastrad 		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
   9293  1.1  riastrad 		  if test yes = "$want_nocaseglob"; then
   9294  1.1  riastrad 		    shopt -s nocaseglob
   9295  1.1  riastrad 		    potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
   9296  1.1  riastrad 		    $nocaseglob
   9297  1.1  riastrad 		  else
   9298  1.1  riastrad 		    potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
   9299  1.1  riastrad 		  fi
   9300  1.1  riastrad 		  for potent_lib in $potential_libs; do
   9301  1.1  riastrad 		      # Follow soft links.
   9302  1.1  riastrad 		      if ls -lLd "$potent_lib" 2>/dev/null |
   9303  1.1  riastrad 			 $GREP " -> " >/dev/null; then
   9304  1.1  riastrad 			continue
   9305  1.1  riastrad 		      fi
   9306  1.1  riastrad 		      # The statement above tries to avoid entering an
   9307  1.1  riastrad 		      # endless loop below, in case of cyclic links.
   9308  1.1  riastrad 		      # We might still enter an endless loop, since a link
   9309  1.1  riastrad 		      # loop can be closed while we follow links,
   9310  1.1  riastrad 		      # but so what?
   9311  1.1  riastrad 		      potlib=$potent_lib
   9312  1.1  riastrad 		      while test -h "$potlib" 2>/dev/null; do
   9313  1.1  riastrad 			potliblink=`ls -ld $potlib | $SED 's/.* -> //'`
   9314  1.1  riastrad 			case $potliblink in
   9315  1.1  riastrad 			[\\/]* | [A-Za-z]:[\\/]*) potlib=$potliblink;;
   9316  1.1  riastrad 			*) potlib=`$ECHO "$potlib" | $SED 's|[^/]*$||'`"$potliblink";;
   9317  1.1  riastrad 			esac
   9318  1.1  riastrad 		      done
   9319  1.1  riastrad 		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
   9320  1.1  riastrad 			 $SED -e 10q |
   9321  1.1  riastrad 			 $EGREP "$file_magic_regex" > /dev/null; then
   9322  1.1  riastrad 			func_append newdeplibs " $a_deplib"
   9323  1.1  riastrad 			a_deplib=
   9324  1.1  riastrad 			break 2
   9325  1.1  riastrad 		      fi
   9326  1.1  riastrad 		  done
   9327  1.1  riastrad 		done
   9328  1.1  riastrad 	      fi
   9329  1.1  riastrad 	      if test -n "$a_deplib"; then
   9330  1.1  riastrad 		droppeddeps=yes
   9331  1.1  riastrad 		echo
   9332  1.1  riastrad 		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
   9333  1.1  riastrad 		echo "*** I have the capability to make that library automatically link in when"
   9334  1.1  riastrad 		echo "*** you link to this library.  But I can only do this if you have a"
   9335  1.1  riastrad 		echo "*** shared version of the library, which you do not appear to have"
   9336  1.1  riastrad 		echo "*** because I did check the linker path looking for a file starting"
   9337  1.1  riastrad 		if test -z "$potlib"; then
   9338  1.1  riastrad 		  $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
   9339  1.1  riastrad 		else
   9340  1.1  riastrad 		  $ECHO "*** with $libname and none of the candidates passed a file format test"
   9341  1.1  riastrad 		  $ECHO "*** using a file magic. Last file checked: $potlib"
   9342  1.1  riastrad 		fi
   9343  1.1  riastrad 	      fi
   9344  1.1  riastrad 	      ;;
   9345  1.1  riastrad 	    *)
   9346  1.1  riastrad 	      # Add a -L argument.
   9347  1.1  riastrad 	      func_append newdeplibs " $a_deplib"
   9348  1.1  riastrad 	      ;;
   9349  1.1  riastrad 	    esac
   9350  1.1  riastrad 	  done # Gone through all deplibs.
   9351  1.1  riastrad 	  ;;
   9352  1.1  riastrad 	match_pattern*)
   9353  1.1  riastrad 	  set dummy $deplibs_check_method; shift
   9354  1.1  riastrad 	  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
   9355  1.1  riastrad 	  for a_deplib in $deplibs; do
   9356  1.1  riastrad 	    case $a_deplib in
   9357  1.1  riastrad 	    -l*)
   9358  1.1  riastrad 	      func_stripname -l '' "$a_deplib"
   9359  1.1  riastrad 	      name=$func_stripname_result
   9360  1.1  riastrad 	      if test yes = "$allow_libtool_libs_with_static_runtimes"; then
   9361  1.1  riastrad 		case " $predeps $postdeps " in
   9362  1.1  riastrad 		*" $a_deplib "*)
   9363  1.1  riastrad 		  func_append newdeplibs " $a_deplib"
   9364  1.1  riastrad 		  a_deplib=
   9365  1.1  riastrad 		  ;;
   9366  1.1  riastrad 		esac
   9367  1.1  riastrad 	      fi
   9368  1.1  riastrad 	      if test -n "$a_deplib"; then
   9369  1.1  riastrad 		libname=`eval "\\$ECHO \"$libname_spec\""`
   9370  1.1  riastrad 		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
   9371  1.1  riastrad 		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
   9372  1.1  riastrad 		  for potent_lib in $potential_libs; do
   9373  1.1  riastrad 		    potlib=$potent_lib # see symlink-check above in file_magic test
   9374  1.1  riastrad 		    if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \
   9375  1.1  riastrad 		       $EGREP "$match_pattern_regex" > /dev/null; then
   9376  1.1  riastrad 		      func_append newdeplibs " $a_deplib"
   9377  1.1  riastrad 		      a_deplib=
   9378  1.1  riastrad 		      break 2
   9379  1.1  riastrad 		    fi
   9380  1.1  riastrad 		  done
   9381  1.1  riastrad 		done
   9382  1.1  riastrad 	      fi
   9383  1.1  riastrad 	      if test -n "$a_deplib"; then
   9384  1.1  riastrad 		droppeddeps=yes
   9385  1.1  riastrad 		echo
   9386  1.1  riastrad 		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
   9387  1.1  riastrad 		echo "*** I have the capability to make that library automatically link in when"
   9388  1.1  riastrad 		echo "*** you link to this library.  But I can only do this if you have a"
   9389  1.1  riastrad 		echo "*** shared version of the library, which you do not appear to have"
   9390  1.1  riastrad 		echo "*** because I did check the linker path looking for a file starting"
   9391  1.1  riastrad 		if test -z "$potlib"; then
   9392  1.1  riastrad 		  $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
   9393  1.1  riastrad 		else
   9394  1.1  riastrad 		  $ECHO "*** with $libname and none of the candidates passed a file format test"
   9395  1.1  riastrad 		  $ECHO "*** using a regex pattern. Last file checked: $potlib"
   9396  1.1  riastrad 		fi
   9397  1.1  riastrad 	      fi
   9398  1.1  riastrad 	      ;;
   9399  1.1  riastrad 	    *)
   9400  1.1  riastrad 	      # Add a -L argument.
   9401  1.1  riastrad 	      func_append newdeplibs " $a_deplib"
   9402  1.1  riastrad 	      ;;
   9403  1.1  riastrad 	    esac
   9404  1.1  riastrad 	  done # Gone through all deplibs.
   9405  1.1  riastrad 	  ;;
   9406  1.1  riastrad 	none | unknown | *)
   9407  1.1  riastrad 	  newdeplibs=
   9408  1.1  riastrad 	  tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'`
   9409  1.1  riastrad 	  if test yes = "$allow_libtool_libs_with_static_runtimes"; then
   9410  1.1  riastrad 	    for i in $predeps $postdeps; do
   9411  1.1  riastrad 	      # can't use Xsed below, because $i might contain '/'
   9412  1.1  riastrad 	      tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s|$i||"`
   9413  1.1  riastrad 	    done
   9414  1.1  riastrad 	  fi
   9415  1.1  riastrad 	  case $tmp_deplibs in
   9416  1.1  riastrad 	  *[!\	\ ]*)
   9417  1.1  riastrad 	    echo
   9418  1.1  riastrad 	    if test none = "$deplibs_check_method"; then
   9419  1.1  riastrad 	      echo "*** Warning: inter-library dependencies are not supported in this platform."
   9420  1.1  riastrad 	    else
   9421  1.1  riastrad 	      echo "*** Warning: inter-library dependencies are not known to be supported."
   9422  1.1  riastrad 	    fi
   9423  1.1  riastrad 	    echo "*** All declared inter-library dependencies are being dropped."
   9424  1.1  riastrad 	    droppeddeps=yes
   9425  1.1  riastrad 	    ;;
   9426  1.1  riastrad 	  esac
   9427  1.1  riastrad 	  ;;
   9428  1.1  riastrad 	esac
   9429  1.1  riastrad 	versuffix=$versuffix_save
   9430  1.1  riastrad 	major=$major_save
   9431  1.1  riastrad 	release=$release_save
   9432  1.1  riastrad 	libname=$libname_save
   9433  1.1  riastrad 	name=$name_save
   9434  1.1  riastrad 
   9435  1.1  riastrad 	case $host in
   9436  1.1  riastrad 	*-*-rhapsody* | *-*-darwin1.[012])
   9437  1.1  riastrad 	  # On Rhapsody replace the C library with the System framework
   9438  1.1  riastrad 	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'`
   9439  1.1  riastrad 	  ;;
   9440  1.1  riastrad 	esac
   9441  1.1  riastrad 
   9442  1.1  riastrad 	if test yes = "$droppeddeps"; then
   9443  1.1  riastrad 	  if test yes = "$module"; then
   9444  1.1  riastrad 	    echo
   9445  1.1  riastrad 	    echo "*** Warning: libtool could not satisfy all declared inter-library"
   9446  1.1  riastrad 	    $ECHO "*** dependencies of module $libname.  Therefore, libtool will create"
   9447  1.1  riastrad 	    echo "*** a static module, that should work as long as the dlopening"
   9448  1.1  riastrad 	    echo "*** application is linked with the -dlopen flag."
   9449  1.1  riastrad 	    if test -z "$global_symbol_pipe"; then
   9450  1.1  riastrad 	      echo
   9451  1.1  riastrad 	      echo "*** However, this would only work if libtool was able to extract symbol"
   9452  1.1  riastrad 	      echo "*** lists from a program, using 'nm' or equivalent, but libtool could"
   9453  1.1  riastrad 	      echo "*** not find such a program.  So, this module is probably useless."
   9454  1.1  riastrad 	      echo "*** 'nm' from GNU binutils and a full rebuild may help."
   9455  1.1  riastrad 	    fi
   9456  1.1  riastrad 	    if test no = "$build_old_libs"; then
   9457  1.1  riastrad 	      oldlibs=$output_objdir/$libname.$libext
   9458  1.1  riastrad 	      build_libtool_libs=module
   9459  1.1  riastrad 	      build_old_libs=yes
   9460  1.1  riastrad 	    else
   9461  1.1  riastrad 	      build_libtool_libs=no
   9462  1.1  riastrad 	    fi
   9463  1.1  riastrad 	  else
   9464  1.1  riastrad 	    echo "*** The inter-library dependencies that have been dropped here will be"
   9465  1.1  riastrad 	    echo "*** automatically added whenever a program is linked with this library"
   9466  1.1  riastrad 	    echo "*** or is declared to -dlopen it."
   9467  1.1  riastrad 
   9468  1.1  riastrad 	    if test no = "$allow_undefined"; then
   9469  1.1  riastrad 	      echo
   9470  1.1  riastrad 	      echo "*** Since this library must not contain undefined symbols,"
   9471  1.1  riastrad 	      echo "*** because either the platform does not support them or"
   9472  1.1  riastrad 	      echo "*** it was explicitly requested with -no-undefined,"
   9473  1.1  riastrad 	      echo "*** libtool will only create a static version of it."
   9474  1.1  riastrad 	      if test no = "$build_old_libs"; then
   9475  1.1  riastrad 		oldlibs=$output_objdir/$libname.$libext
   9476  1.1  riastrad 		build_libtool_libs=module
   9477  1.1  riastrad 		build_old_libs=yes
   9478  1.1  riastrad 	      else
   9479  1.1  riastrad 		build_libtool_libs=no
   9480  1.1  riastrad 	      fi
   9481  1.1  riastrad 	    fi
   9482  1.1  riastrad 	  fi
   9483  1.1  riastrad 	fi
   9484  1.1  riastrad 	# Done checking deplibs!
   9485  1.1  riastrad 	deplibs=$newdeplibs
   9486  1.1  riastrad       fi
   9487  1.1  riastrad       # Time to change all our "foo.ltframework" stuff back to "-framework foo"
   9488  1.1  riastrad       case $host in
   9489  1.1  riastrad 	*-*-darwin*)
   9490  1.1  riastrad 	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
   9491  1.1  riastrad 	  new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
   9492  1.1  riastrad 	  deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
   9493  1.1  riastrad 	  ;;
   9494  1.1  riastrad       esac
   9495  1.1  riastrad 
   9496  1.1  riastrad       # move library search paths that coincide with paths to not yet
   9497  1.1  riastrad       # installed libraries to the beginning of the library search list
   9498  1.1  riastrad       new_libs=
   9499  1.1  riastrad       for path in $notinst_path; do
   9500  1.1  riastrad 	case " $new_libs " in
   9501  1.1  riastrad 	*" -L$path/$objdir "*) ;;
   9502  1.1  riastrad 	*)
   9503  1.1  riastrad 	  case " $deplibs " in
   9504  1.1  riastrad 	  *" -L$path/$objdir "*)
   9505  1.1  riastrad 	    func_append new_libs " -L$path/$objdir" ;;
   9506  1.1  riastrad 	  esac
   9507  1.1  riastrad 	  ;;
   9508  1.1  riastrad 	esac
   9509  1.1  riastrad       done
   9510  1.1  riastrad       for deplib in $deplibs; do
   9511  1.1  riastrad 	case $deplib in
   9512  1.1  riastrad 	-L*)
   9513  1.1  riastrad 	  case " $new_libs " in
   9514  1.1  riastrad 	  *" $deplib "*) ;;
   9515  1.1  riastrad 	  *) func_append new_libs " $deplib" ;;
   9516  1.1  riastrad 	  esac
   9517  1.1  riastrad 	  ;;
   9518  1.1  riastrad 	*) func_append new_libs " $deplib" ;;
   9519  1.1  riastrad 	esac
   9520  1.1  riastrad       done
   9521  1.1  riastrad       deplibs=$new_libs
   9522  1.1  riastrad 
   9523  1.1  riastrad       # All the library-specific variables (install_libdir is set above).
   9524  1.1  riastrad       library_names=
   9525  1.1  riastrad       old_library=
   9526  1.1  riastrad       dlname=
   9527  1.1  riastrad 
   9528  1.1  riastrad       # Test again, we may have decided not to build it any more
   9529  1.1  riastrad       if test yes = "$build_libtool_libs"; then
   9530  1.1  riastrad 	# Remove $wl instances when linking with ld.
   9531  1.1  riastrad 	# FIXME: should test the right _cmds variable.
   9532  1.1  riastrad 	case $archive_cmds in
   9533  1.1  riastrad 	  *\$LD\ *) wl= ;;
   9534  1.1  riastrad         esac
   9535  1.1  riastrad 	if test yes = "$hardcode_into_libs"; then
   9536  1.1  riastrad 	  # Hardcode the library paths
   9537  1.1  riastrad 	  hardcode_libdirs=
   9538  1.1  riastrad 	  dep_rpath=
   9539  1.1  riastrad 	  rpath=$finalize_rpath
   9540  1.1  riastrad 	  test relink = "$opt_mode" || rpath=$compile_rpath$rpath
   9541  1.1  riastrad 	  for libdir in $rpath; do
   9542  1.1  riastrad 	    if test -n "$hardcode_libdir_flag_spec"; then
   9543  1.1  riastrad 	      if test -n "$hardcode_libdir_separator"; then
   9544  1.1  riastrad 		func_replace_sysroot "$libdir"
   9545  1.1  riastrad 		libdir=$func_replace_sysroot_result
   9546  1.1  riastrad 		if test -z "$hardcode_libdirs"; then
   9547  1.1  riastrad 		  hardcode_libdirs=$libdir
   9548  1.1  riastrad 		else
   9549  1.1  riastrad 		  # Just accumulate the unique libdirs.
   9550  1.1  riastrad 		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
   9551  1.1  riastrad 		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
   9552  1.1  riastrad 		    ;;
   9553  1.1  riastrad 		  *)
   9554  1.1  riastrad 		    func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
   9555  1.1  riastrad 		    ;;
   9556  1.1  riastrad 		  esac
   9557  1.1  riastrad 		fi
   9558  1.1  riastrad 	      else
   9559  1.1  riastrad 		eval flag=\"$hardcode_libdir_flag_spec\"
   9560  1.1  riastrad 		func_append dep_rpath " $flag"
   9561  1.1  riastrad 	      fi
   9562  1.1  riastrad 	    elif test -n "$runpath_var"; then
   9563  1.1  riastrad 	      case "$perm_rpath " in
   9564  1.1  riastrad 	      *" $libdir "*) ;;
   9565  1.1  riastrad 	      *) func_append perm_rpath " $libdir" ;;
   9566  1.1  riastrad 	      esac
   9567  1.1  riastrad 	    fi
   9568  1.1  riastrad 	  done
   9569  1.1  riastrad 	  # Substitute the hardcoded libdirs into the rpath.
   9570  1.1  riastrad 	  if test -n "$hardcode_libdir_separator" &&
   9571  1.1  riastrad 	     test -n "$hardcode_libdirs"; then
   9572  1.1  riastrad 	    libdir=$hardcode_libdirs
   9573  1.1  riastrad 	    eval "dep_rpath=\"$hardcode_libdir_flag_spec\""
   9574  1.1  riastrad 	  fi
   9575  1.1  riastrad 	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
   9576  1.1  riastrad 	    # We should set the runpath_var.
   9577  1.1  riastrad 	    rpath=
   9578  1.1  riastrad 	    for dir in $perm_rpath; do
   9579  1.1  riastrad 	      func_append rpath "$dir:"
   9580  1.1  riastrad 	    done
   9581  1.1  riastrad 	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
   9582  1.1  riastrad 	  fi
   9583  1.1  riastrad 	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
   9584  1.1  riastrad 	fi
   9585  1.1  riastrad 
   9586  1.1  riastrad 	shlibpath=$finalize_shlibpath
   9587  1.1  riastrad 	test relink = "$opt_mode" || shlibpath=$compile_shlibpath$shlibpath
   9588  1.1  riastrad 	if test -n "$shlibpath"; then
   9589  1.1  riastrad 	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
   9590  1.1  riastrad 	fi
   9591  1.1  riastrad 
   9592  1.1  riastrad 	# Get the real and link names of the library.
   9593  1.1  riastrad 	eval shared_ext=\"$shrext_cmds\"
   9594  1.1  riastrad 	eval library_names=\"$library_names_spec\"
   9595  1.1  riastrad 	set dummy $library_names
   9596  1.1  riastrad 	shift
   9597  1.1  riastrad 	realname=$1
   9598  1.1  riastrad 	shift
   9599  1.1  riastrad 
   9600  1.1  riastrad 	if test -n "$soname_spec"; then
   9601  1.1  riastrad 	  eval soname=\"$soname_spec\"
   9602  1.1  riastrad 	else
   9603  1.1  riastrad 	  soname=$realname
   9604  1.1  riastrad 	fi
   9605  1.1  riastrad 	if test -z "$dlname"; then
   9606  1.1  riastrad 	  dlname=$soname
   9607  1.1  riastrad 	fi
   9608  1.1  riastrad 
   9609  1.1  riastrad 	lib=$output_objdir/$realname
   9610  1.1  riastrad 	linknames=
   9611  1.1  riastrad 	for link
   9612  1.1  riastrad 	do
   9613  1.1  riastrad 	  func_append linknames " $link"
   9614  1.1  riastrad 	done
   9615  1.1  riastrad 
   9616  1.1  riastrad 	# Use standard objects if they are pic
   9617  1.1  riastrad 	test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP`
   9618  1.1  riastrad 	test "X$libobjs" = "X " && libobjs=
   9619  1.1  riastrad 
   9620  1.1  riastrad 	delfiles=
   9621  1.1  riastrad 	if test -n "$export_symbols" && test -n "$include_expsyms"; then
   9622  1.1  riastrad 	  $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
   9623  1.1  riastrad 	  export_symbols=$output_objdir/$libname.uexp
   9624  1.1  riastrad 	  func_append delfiles " $export_symbols"
   9625  1.1  riastrad 	fi
   9626  1.1  riastrad 
   9627  1.1  riastrad 	orig_export_symbols=
   9628  1.1  riastrad 	case $host_os in
   9629  1.1  riastrad 	cygwin* | mingw* | cegcc*)
   9630  1.1  riastrad 	  if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
   9631  1.1  riastrad 	    # exporting using user supplied symfile
   9632  1.1  riastrad 	    func_dll_def_p "$export_symbols" || {
   9633  1.1  riastrad 	      # and it's NOT already a .def file. Must figure out
   9634  1.1  riastrad 	      # which of the given symbols are data symbols and tag
   9635  1.1  riastrad 	      # them as such. So, trigger use of export_symbols_cmds.
   9636  1.1  riastrad 	      # export_symbols gets reassigned inside the "prepare
   9637  1.1  riastrad 	      # the list of exported symbols" if statement, so the
   9638  1.1  riastrad 	      # include_expsyms logic still works.
   9639  1.1  riastrad 	      orig_export_symbols=$export_symbols
   9640  1.1  riastrad 	      export_symbols=
   9641  1.1  riastrad 	      always_export_symbols=yes
   9642  1.1  riastrad 	    }
   9643  1.1  riastrad 	  fi
   9644  1.1  riastrad 	  ;;
   9645  1.1  riastrad 	esac
   9646  1.1  riastrad 
   9647  1.1  riastrad 	# Prepare the list of exported symbols
   9648  1.1  riastrad 	if test -z "$export_symbols"; then
   9649  1.1  riastrad 	  if test yes = "$always_export_symbols" || test -n "$export_symbols_regex"; then
   9650  1.1  riastrad 	    func_verbose "generating symbol list for '$libname.la'"
   9651  1.1  riastrad 	    export_symbols=$output_objdir/$libname.exp
   9652  1.1  riastrad 	    $opt_dry_run || $RM $export_symbols
   9653  1.1  riastrad 	    cmds=$export_symbols_cmds
   9654  1.1  riastrad 	    save_ifs=$IFS; IFS='~'
   9655  1.1  riastrad 	    for cmd1 in $cmds; do
   9656  1.1  riastrad 	      IFS=$save_ifs
   9657  1.1  riastrad 	      # Take the normal branch if the nm_file_list_spec branch
   9658  1.1  riastrad 	      # doesn't work or if tool conversion is not needed.
   9659  1.1  riastrad 	      case $nm_file_list_spec~$to_tool_file_cmd in
   9660  1.1  riastrad 		*~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*)
   9661  1.1  riastrad 		  try_normal_branch=yes
   9662  1.1  riastrad 		  eval cmd=\"$cmd1\"
   9663  1.1  riastrad 		  func_len " $cmd"
   9664  1.1  riastrad 		  len=$func_len_result
   9665  1.1  riastrad 		  ;;
   9666  1.1  riastrad 		*)
   9667  1.1  riastrad 		  try_normal_branch=no
   9668  1.1  riastrad 		  ;;
   9669  1.1  riastrad 	      esac
   9670  1.1  riastrad 	      if test yes = "$try_normal_branch" \
   9671  1.1  riastrad 		 && { test "$len" -lt "$max_cmd_len" \
   9672  1.1  riastrad 		      || test "$max_cmd_len" -le -1; }
   9673  1.1  riastrad 	      then
   9674  1.1  riastrad 		func_show_eval "$cmd" 'exit $?'
   9675  1.1  riastrad 		skipped_export=false
   9676  1.1  riastrad 	      elif test -n "$nm_file_list_spec"; then
   9677  1.1  riastrad 		func_basename "$output"
   9678  1.1  riastrad 		output_la=$func_basename_result
   9679  1.1  riastrad 		save_libobjs=$libobjs
   9680  1.1  riastrad 		save_output=$output
   9681  1.1  riastrad 		output=$output_objdir/$output_la.nm
   9682  1.1  riastrad 		func_to_tool_file "$output"
   9683  1.1  riastrad 		libobjs=$nm_file_list_spec$func_to_tool_file_result
   9684  1.1  riastrad 		func_append delfiles " $output"
   9685  1.1  riastrad 		func_verbose "creating $NM input file list: $output"
   9686  1.1  riastrad 		for obj in $save_libobjs; do
   9687  1.1  riastrad 		  func_to_tool_file "$obj"
   9688  1.1  riastrad 		  $ECHO "$func_to_tool_file_result"
   9689  1.1  riastrad 		done > "$output"
   9690  1.1  riastrad 		eval cmd=\"$cmd1\"
   9691  1.1  riastrad 		func_show_eval "$cmd" 'exit $?'
   9692  1.1  riastrad 		output=$save_output
   9693  1.1  riastrad 		libobjs=$save_libobjs
   9694  1.1  riastrad 		skipped_export=false
   9695  1.1  riastrad 	      else
   9696  1.1  riastrad 		# The command line is too long to execute in one step.
   9697  1.1  riastrad 		func_verbose "using reloadable object file for export list..."
   9698  1.1  riastrad 		skipped_export=:
   9699  1.1  riastrad 		# Break out early, otherwise skipped_export may be
   9700  1.1  riastrad 		# set to false by a later but shorter cmd.
   9701  1.1  riastrad 		break
   9702  1.1  riastrad 	      fi
   9703  1.1  riastrad 	    done
   9704  1.1  riastrad 	    IFS=$save_ifs
   9705  1.1  riastrad 	    if test -n "$export_symbols_regex" && test : != "$skipped_export"; then
   9706  1.1  riastrad 	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
   9707  1.1  riastrad 	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
   9708  1.1  riastrad 	    fi
   9709  1.1  riastrad 	  fi
   9710  1.1  riastrad 	fi
   9711  1.1  riastrad 
   9712  1.1  riastrad 	if test -n "$export_symbols" && test -n "$include_expsyms"; then
   9713  1.1  riastrad 	  tmp_export_symbols=$export_symbols
   9714  1.1  riastrad 	  test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols
   9715  1.1  riastrad 	  $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
   9716  1.1  riastrad 	fi
   9717  1.1  riastrad 
   9718  1.1  riastrad 	if test : != "$skipped_export" && test -n "$orig_export_symbols"; then
   9719  1.1  riastrad 	  # The given exports_symbols file has to be filtered, so filter it.
   9720  1.1  riastrad 	  func_verbose "filter symbol list for '$libname.la' to tag DATA exports"
   9721  1.1  riastrad 	  # FIXME: $output_objdir/$libname.filter potentially contains lots of
   9722  1.1  riastrad 	  # 's' commands, which not all seds can handle. GNU sed should be fine
   9723  1.1  riastrad 	  # though. Also, the filter scales superlinearly with the number of
   9724  1.1  riastrad 	  # global variables. join(1) would be nice here, but unfortunately
   9725  1.1  riastrad 	  # isn't a blessed tool.
   9726  1.1  riastrad 	  $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
   9727  1.1  riastrad 	  func_append delfiles " $export_symbols $output_objdir/$libname.filter"
   9728  1.1  riastrad 	  export_symbols=$output_objdir/$libname.def
   9729  1.1  riastrad 	  $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
   9730  1.1  riastrad 	fi
   9731  1.1  riastrad 
   9732  1.1  riastrad 	tmp_deplibs=
   9733  1.1  riastrad 	for test_deplib in $deplibs; do
   9734  1.1  riastrad 	  case " $convenience " in
   9735  1.1  riastrad 	  *" $test_deplib "*) ;;
   9736  1.1  riastrad 	  *)
   9737  1.1  riastrad 	    func_append tmp_deplibs " $test_deplib"
   9738  1.1  riastrad 	    ;;
   9739  1.1  riastrad 	  esac
   9740  1.1  riastrad 	done
   9741  1.1  riastrad 	deplibs=$tmp_deplibs
   9742  1.1  riastrad 
   9743  1.1  riastrad 	if test -n "$convenience"; then
   9744  1.1  riastrad 	  if test -n "$whole_archive_flag_spec" &&
   9745  1.1  riastrad 	    test yes = "$compiler_needs_object" &&
   9746  1.1  riastrad 	    test -z "$libobjs"; then
   9747  1.1  riastrad 	    # extract the archives, so we have objects to list.
   9748  1.1  riastrad 	    # TODO: could optimize this to just extract one archive.
   9749  1.1  riastrad 	    whole_archive_flag_spec=
   9750  1.1  riastrad 	  fi
   9751  1.1  riastrad 	  if test -n "$whole_archive_flag_spec"; then
   9752  1.1  riastrad 	    save_libobjs=$libobjs
   9753  1.1  riastrad 	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
   9754  1.1  riastrad 	    test "X$libobjs" = "X " && libobjs=
   9755  1.1  riastrad 	  else
   9756  1.1  riastrad 	    gentop=$output_objdir/${outputname}x
   9757  1.1  riastrad 	    func_append generated " $gentop"
   9758  1.1  riastrad 
   9759  1.1  riastrad 	    func_extract_archives $gentop $convenience
   9760  1.1  riastrad 	    func_append libobjs " $func_extract_archives_result"
   9761  1.1  riastrad 	    test "X$libobjs" = "X " && libobjs=
   9762  1.1  riastrad 	  fi
   9763  1.1  riastrad 	fi
   9764  1.1  riastrad 
   9765  1.1  riastrad 	if test yes = "$thread_safe" && test -n "$thread_safe_flag_spec"; then
   9766  1.1  riastrad 	  eval flag=\"$thread_safe_flag_spec\"
   9767  1.1  riastrad 	  func_append linker_flags " $flag"
   9768  1.1  riastrad 	fi
   9769  1.1  riastrad 
   9770  1.1  riastrad 	# Make a backup of the uninstalled library when relinking
   9771  1.1  riastrad 	if test relink = "$opt_mode"; then
   9772  1.1  riastrad 	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
   9773  1.1  riastrad 	fi
   9774  1.1  riastrad 
   9775  1.1  riastrad 	# Do each of the archive commands.
   9776  1.1  riastrad 	if test yes = "$module" && test -n "$module_cmds"; then
   9777  1.1  riastrad 	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
   9778  1.1  riastrad 	    eval test_cmds=\"$module_expsym_cmds\"
   9779  1.1  riastrad 	    cmds=$module_expsym_cmds
   9780  1.1  riastrad 	  else
   9781  1.1  riastrad 	    eval test_cmds=\"$module_cmds\"
   9782  1.1  riastrad 	    cmds=$module_cmds
   9783  1.1  riastrad 	  fi
   9784  1.1  riastrad 	else
   9785  1.1  riastrad 	  if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
   9786  1.1  riastrad 	    eval test_cmds=\"$archive_expsym_cmds\"
   9787  1.1  riastrad 	    cmds=$archive_expsym_cmds
   9788  1.1  riastrad 	  else
   9789  1.1  riastrad 	    eval test_cmds=\"$archive_cmds\"
   9790  1.1  riastrad 	    cmds=$archive_cmds
   9791  1.1  riastrad 	  fi
   9792  1.1  riastrad 	fi
   9793  1.1  riastrad 
   9794  1.1  riastrad 	if test : != "$skipped_export" &&
   9795  1.1  riastrad 	   func_len " $test_cmds" &&
   9796  1.1  riastrad 	   len=$func_len_result &&
   9797  1.1  riastrad 	   test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
   9798  1.1  riastrad 	  :
   9799  1.1  riastrad 	else
   9800  1.1  riastrad 	  # The command line is too long to link in one step, link piecewise
   9801  1.1  riastrad 	  # or, if using GNU ld and skipped_export is not :, use a linker
   9802  1.1  riastrad 	  # script.
   9803  1.1  riastrad 
   9804  1.1  riastrad 	  # Save the value of $output and $libobjs because we want to
   9805  1.1  riastrad 	  # use them later.  If we have whole_archive_flag_spec, we
   9806  1.1  riastrad 	  # want to use save_libobjs as it was before
   9807  1.1  riastrad 	  # whole_archive_flag_spec was expanded, because we can't
   9808  1.1  riastrad 	  # assume the linker understands whole_archive_flag_spec.
   9809  1.1  riastrad 	  # This may have to be revisited, in case too many
   9810  1.1  riastrad 	  # convenience libraries get linked in and end up exceeding
   9811  1.1  riastrad 	  # the spec.
   9812  1.1  riastrad 	  if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
   9813  1.1  riastrad 	    save_libobjs=$libobjs
   9814  1.1  riastrad 	  fi
   9815  1.1  riastrad 	  save_output=$output
   9816  1.1  riastrad 	  func_basename "$output"
   9817  1.1  riastrad 	  output_la=$func_basename_result
   9818  1.1  riastrad 
   9819  1.1  riastrad 	  # Clear the reloadable object creation command queue and
   9820  1.1  riastrad 	  # initialize k to one.
   9821  1.1  riastrad 	  test_cmds=
   9822  1.1  riastrad 	  concat_cmds=
   9823  1.1  riastrad 	  objlist=
   9824  1.1  riastrad 	  last_robj=
   9825  1.1  riastrad 	  k=1
   9826  1.1  riastrad 
   9827  1.1  riastrad 	  if test -n "$save_libobjs" && test : != "$skipped_export" && test yes = "$with_gnu_ld"; then
   9828  1.1  riastrad 	    output=$output_objdir/$output_la.lnkscript
   9829  1.1  riastrad 	    func_verbose "creating GNU ld script: $output"
   9830  1.1  riastrad 	    echo 'INPUT (' > $output
   9831  1.1  riastrad 	    for obj in $save_libobjs
   9832  1.1  riastrad 	    do
   9833  1.1  riastrad 	      func_to_tool_file "$obj"
   9834  1.1  riastrad 	      $ECHO "$func_to_tool_file_result" >> $output
   9835  1.1  riastrad 	    done
   9836  1.1  riastrad 	    echo ')' >> $output
   9837  1.1  riastrad 	    func_append delfiles " $output"
   9838  1.1  riastrad 	    func_to_tool_file "$output"
   9839  1.1  riastrad 	    output=$func_to_tool_file_result
   9840  1.1  riastrad 	  elif test -n "$save_libobjs" && test : != "$skipped_export" && test -n "$file_list_spec"; then
   9841  1.1  riastrad 	    output=$output_objdir/$output_la.lnk
   9842  1.1  riastrad 	    func_verbose "creating linker input file list: $output"
   9843  1.1  riastrad 	    : > $output
   9844  1.1  riastrad 	    set x $save_libobjs
   9845  1.1  riastrad 	    shift
   9846  1.1  riastrad 	    firstobj=
   9847  1.1  riastrad 	    if test yes = "$compiler_needs_object"; then
   9848  1.1  riastrad 	      firstobj="$1 "
   9849  1.1  riastrad 	      shift
   9850  1.1  riastrad 	    fi
   9851  1.1  riastrad 	    for obj
   9852  1.1  riastrad 	    do
   9853  1.1  riastrad 	      func_to_tool_file "$obj"
   9854  1.1  riastrad 	      $ECHO "$func_to_tool_file_result" >> $output
   9855  1.1  riastrad 	    done
   9856  1.1  riastrad 	    func_append delfiles " $output"
   9857  1.1  riastrad 	    func_to_tool_file "$output"
   9858  1.1  riastrad 	    output=$firstobj\"$file_list_spec$func_to_tool_file_result\"
   9859  1.1  riastrad 	  else
   9860  1.1  riastrad 	    if test -n "$save_libobjs"; then
   9861  1.1  riastrad 	      func_verbose "creating reloadable object files..."
   9862  1.1  riastrad 	      output=$output_objdir/$output_la-$k.$objext
   9863  1.1  riastrad 	      eval test_cmds=\"$reload_cmds\"
   9864  1.1  riastrad 	      func_len " $test_cmds"
   9865  1.1  riastrad 	      len0=$func_len_result
   9866  1.1  riastrad 	      len=$len0
   9867  1.1  riastrad 
   9868  1.1  riastrad 	      # Loop over the list of objects to be linked.
   9869  1.1  riastrad 	      for obj in $save_libobjs
   9870  1.1  riastrad 	      do
   9871  1.1  riastrad 		func_len " $obj"
   9872  1.1  riastrad 		func_arith $len + $func_len_result
   9873  1.1  riastrad 		len=$func_arith_result
   9874  1.1  riastrad 		if test -z "$objlist" ||
   9875  1.1  riastrad 		   test "$len" -lt "$max_cmd_len"; then
   9876  1.1  riastrad 		  func_append objlist " $obj"
   9877  1.1  riastrad 		else
   9878  1.1  riastrad 		  # The command $test_cmds is almost too long, add a
   9879  1.1  riastrad 		  # command to the queue.
   9880  1.1  riastrad 		  if test 1 -eq "$k"; then
   9881  1.1  riastrad 		    # The first file doesn't have a previous command to add.
   9882  1.1  riastrad 		    reload_objs=$objlist
   9883  1.1  riastrad 		    eval concat_cmds=\"$reload_cmds\"
   9884  1.1  riastrad 		  else
   9885  1.1  riastrad 		    # All subsequent reloadable object files will link in
   9886  1.1  riastrad 		    # the last one created.
   9887  1.1  riastrad 		    reload_objs="$objlist $last_robj"
   9888  1.1  riastrad 		    eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\"
   9889  1.1  riastrad 		  fi
   9890  1.1  riastrad 		  last_robj=$output_objdir/$output_la-$k.$objext
   9891  1.1  riastrad 		  func_arith $k + 1
   9892  1.1  riastrad 		  k=$func_arith_result
   9893  1.1  riastrad 		  output=$output_objdir/$output_la-$k.$objext
   9894  1.1  riastrad 		  objlist=" $obj"
   9895  1.1  riastrad 		  func_len " $last_robj"
   9896  1.1  riastrad 		  func_arith $len0 + $func_len_result
   9897  1.1  riastrad 		  len=$func_arith_result
   9898  1.1  riastrad 		fi
   9899  1.1  riastrad 	      done
   9900  1.1  riastrad 	      # Handle the remaining objects by creating one last
   9901  1.1  riastrad 	      # reloadable object file.  All subsequent reloadable object
   9902  1.1  riastrad 	      # files will link in the last one created.
   9903  1.1  riastrad 	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
   9904  1.1  riastrad 	      reload_objs="$objlist $last_robj"
   9905  1.1  riastrad 	      eval concat_cmds=\"\$concat_cmds$reload_cmds\"
   9906  1.1  riastrad 	      if test -n "$last_robj"; then
   9907  1.1  riastrad 	        eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
   9908  1.1  riastrad 	      fi
   9909  1.1  riastrad 	      func_append delfiles " $output"
   9910  1.1  riastrad 
   9911  1.1  riastrad 	    else
   9912  1.1  riastrad 	      output=
   9913  1.1  riastrad 	    fi
   9914  1.1  riastrad 
   9915  1.1  riastrad 	    ${skipped_export-false} && {
   9916  1.1  riastrad 	      func_verbose "generating symbol list for '$libname.la'"
   9917  1.1  riastrad 	      export_symbols=$output_objdir/$libname.exp
   9918  1.1  riastrad 	      $opt_dry_run || $RM $export_symbols
   9919  1.1  riastrad 	      libobjs=$output
   9920  1.1  riastrad 	      # Append the command to create the export file.
   9921  1.1  riastrad 	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
   9922  1.1  riastrad 	      eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
   9923  1.1  riastrad 	      if test -n "$last_robj"; then
   9924  1.1  riastrad 		eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
   9925  1.1  riastrad 	      fi
   9926  1.1  riastrad 	    }
   9927  1.1  riastrad 
   9928  1.1  riastrad 	    test -n "$save_libobjs" &&
   9929  1.1  riastrad 	      func_verbose "creating a temporary reloadable object file: $output"
   9930  1.1  riastrad 
   9931  1.1  riastrad 	    # Loop through the commands generated above and execute them.
   9932  1.1  riastrad 	    save_ifs=$IFS; IFS='~'
   9933  1.1  riastrad 	    for cmd in $concat_cmds; do
   9934  1.1  riastrad 	      IFS=$save_ifs
   9935  1.1  riastrad 	      $opt_quiet || {
   9936  1.1  riastrad 		  func_quote_for_expand "$cmd"
   9937  1.1  riastrad 		  eval "func_echo $func_quote_for_expand_result"
   9938  1.1  riastrad 	      }
   9939  1.1  riastrad 	      $opt_dry_run || eval "$cmd" || {
   9940  1.1  riastrad 		lt_exit=$?
   9941  1.1  riastrad 
   9942  1.1  riastrad 		# Restore the uninstalled library and exit
   9943  1.1  riastrad 		if test relink = "$opt_mode"; then
   9944  1.1  riastrad 		  ( cd "$output_objdir" && \
   9945  1.1  riastrad 		    $RM "${realname}T" && \
   9946  1.1  riastrad 		    $MV "${realname}U" "$realname" )
   9947  1.1  riastrad 		fi
   9948  1.1  riastrad 
   9949  1.1  riastrad 		exit $lt_exit
   9950  1.1  riastrad 	      }
   9951  1.1  riastrad 	    done
   9952  1.1  riastrad 	    IFS=$save_ifs
   9953  1.1  riastrad 
   9954  1.1  riastrad 	    if test -n "$export_symbols_regex" && ${skipped_export-false}; then
   9955  1.1  riastrad 	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
   9956  1.1  riastrad 	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
   9957  1.1  riastrad 	    fi
   9958  1.1  riastrad 	  fi
   9959  1.1  riastrad 
   9960  1.1  riastrad           ${skipped_export-false} && {
   9961  1.1  riastrad 	    if test -n "$export_symbols" && test -n "$include_expsyms"; then
   9962  1.1  riastrad 	      tmp_export_symbols=$export_symbols
   9963  1.1  riastrad 	      test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols
   9964  1.1  riastrad 	      $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
   9965  1.1  riastrad 	    fi
   9966  1.1  riastrad 
   9967  1.1  riastrad 	    if test -n "$orig_export_symbols"; then
   9968  1.1  riastrad 	      # The given exports_symbols file has to be filtered, so filter it.
   9969  1.1  riastrad 	      func_verbose "filter symbol list for '$libname.la' to tag DATA exports"
   9970  1.1  riastrad 	      # FIXME: $output_objdir/$libname.filter potentially contains lots of
   9971  1.1  riastrad 	      # 's' commands, which not all seds can handle. GNU sed should be fine
   9972  1.1  riastrad 	      # though. Also, the filter scales superlinearly with the number of
   9973  1.1  riastrad 	      # global variables. join(1) would be nice here, but unfortunately
   9974  1.1  riastrad 	      # isn't a blessed tool.
   9975  1.1  riastrad 	      $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
   9976  1.1  riastrad 	      func_append delfiles " $export_symbols $output_objdir/$libname.filter"
   9977  1.1  riastrad 	      export_symbols=$output_objdir/$libname.def
   9978  1.1  riastrad 	      $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
   9979  1.1  riastrad 	    fi
   9980  1.1  riastrad 	  }
   9981  1.1  riastrad 
   9982  1.1  riastrad 	  libobjs=$output
   9983  1.1  riastrad 	  # Restore the value of output.
   9984  1.1  riastrad 	  output=$save_output
   9985  1.1  riastrad 
   9986  1.1  riastrad 	  if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
   9987  1.1  riastrad 	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
   9988  1.1  riastrad 	    test "X$libobjs" = "X " && libobjs=
   9989  1.1  riastrad 	  fi
   9990  1.1  riastrad 	  # Expand the library linking commands again to reset the
   9991  1.1  riastrad 	  # value of $libobjs for piecewise linking.
   9992  1.1  riastrad 
   9993  1.1  riastrad 	  # Do each of the archive commands.
   9994  1.1  riastrad 	  if test yes = "$module" && test -n "$module_cmds"; then
   9995  1.1  riastrad 	    if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
   9996  1.1  riastrad 	      cmds=$module_expsym_cmds
   9997  1.1  riastrad 	    else
   9998  1.1  riastrad 	      cmds=$module_cmds
   9999  1.1  riastrad 	    fi
   10000  1.1  riastrad 	  else
   10001  1.1  riastrad 	    if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
   10002  1.1  riastrad 	      cmds=$archive_expsym_cmds
   10003  1.1  riastrad 	    else
   10004  1.1  riastrad 	      cmds=$archive_cmds
   10005  1.1  riastrad 	    fi
   10006  1.1  riastrad 	  fi
   10007  1.1  riastrad 	fi
   10008  1.1  riastrad 
   10009  1.1  riastrad 	if test -n "$delfiles"; then
   10010  1.1  riastrad 	  # Append the command to remove temporary files to $cmds.
   10011  1.1  riastrad 	  eval cmds=\"\$cmds~\$RM $delfiles\"
   10012  1.1  riastrad 	fi
   10013  1.1  riastrad 
   10014  1.1  riastrad 	# Add any objects from preloaded convenience libraries
   10015  1.1  riastrad 	if test -n "$dlprefiles"; then
   10016  1.1  riastrad 	  gentop=$output_objdir/${outputname}x
   10017  1.1  riastrad 	  func_append generated " $gentop"
   10018  1.1  riastrad 
   10019  1.1  riastrad 	  func_extract_archives $gentop $dlprefiles
   10020  1.1  riastrad 	  func_append libobjs " $func_extract_archives_result"
   10021  1.1  riastrad 	  test "X$libobjs" = "X " && libobjs=
   10022  1.1  riastrad 	fi
   10023  1.1  riastrad 
   10024  1.1  riastrad 	save_ifs=$IFS; IFS='~'
   10025  1.1  riastrad 	for cmd in $cmds; do
   10026  1.1  riastrad 	  IFS=$sp$nl
   10027  1.1  riastrad 	  eval cmd=\"$cmd\"
   10028  1.1  riastrad 	  IFS=$save_ifs
   10029  1.1  riastrad 	  $opt_quiet || {
   10030  1.1  riastrad 	    func_quote_for_expand "$cmd"
   10031  1.1  riastrad 	    eval "func_echo $func_quote_for_expand_result"
   10032  1.1  riastrad 	  }
   10033  1.1  riastrad 	  $opt_dry_run || eval "$cmd" || {
   10034  1.1  riastrad 	    lt_exit=$?
   10035  1.1  riastrad 
   10036  1.1  riastrad 	    # Restore the uninstalled library and exit
   10037  1.1  riastrad 	    if test relink = "$opt_mode"; then
   10038  1.1  riastrad 	      ( cd "$output_objdir" && \
   10039  1.1  riastrad 	        $RM "${realname}T" && \
   10040  1.1  riastrad 		$MV "${realname}U" "$realname" )
   10041  1.1  riastrad 	    fi
   10042  1.1  riastrad 
   10043  1.1  riastrad 	    exit $lt_exit
   10044  1.1  riastrad 	  }
   10045  1.1  riastrad 	done
   10046  1.1  riastrad 	IFS=$save_ifs
   10047  1.1  riastrad 
   10048  1.1  riastrad 	# Restore the uninstalled library and exit
   10049  1.1  riastrad 	if test relink = "$opt_mode"; then
   10050  1.1  riastrad 	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
   10051  1.1  riastrad 
   10052  1.1  riastrad 	  if test -n "$convenience"; then
   10053  1.1  riastrad 	    if test -z "$whole_archive_flag_spec"; then
   10054  1.1  riastrad 	      func_show_eval '${RM}r "$gentop"'
   10055  1.1  riastrad 	    fi
   10056  1.1  riastrad 	  fi
   10057  1.1  riastrad 
   10058  1.1  riastrad 	  exit $EXIT_SUCCESS
   10059  1.1  riastrad 	fi
   10060  1.1  riastrad 
   10061  1.1  riastrad 	# Create links to the real library.
   10062  1.1  riastrad 	for linkname in $linknames; do
   10063  1.1  riastrad 	  if test "$realname" != "$linkname"; then
   10064  1.1  riastrad 	    func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
   10065  1.1  riastrad 	  fi
   10066  1.1  riastrad 	done
   10067  1.1  riastrad 
   10068  1.1  riastrad 	# If -module or -export-dynamic was specified, set the dlname.
   10069  1.1  riastrad 	if test yes = "$module" || test yes = "$export_dynamic"; then
   10070  1.1  riastrad 	  # On all known operating systems, these are identical.
   10071  1.1  riastrad 	  dlname=$soname
   10072  1.1  riastrad 	fi
   10073  1.1  riastrad       fi
   10074  1.1  riastrad       ;;
   10075  1.1  riastrad 
   10076  1.1  riastrad     obj)
   10077  1.1  riastrad       if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then
   10078  1.1  riastrad 	func_warning "'-dlopen' is ignored for objects"
   10079  1.1  riastrad       fi
   10080  1.1  riastrad 
   10081  1.1  riastrad       case " $deplibs" in
   10082  1.1  riastrad       *\ -l* | *\ -L*)
   10083  1.1  riastrad 	func_warning "'-l' and '-L' are ignored for objects" ;;
   10084  1.1  riastrad       esac
   10085  1.1  riastrad 
   10086  1.1  riastrad       test -n "$rpath" && \
   10087  1.1  riastrad 	func_warning "'-rpath' is ignored for objects"
   10088  1.1  riastrad 
   10089  1.1  riastrad       test -n "$xrpath" && \
   10090  1.1  riastrad 	func_warning "'-R' is ignored for objects"
   10091  1.1  riastrad 
   10092  1.1  riastrad       test -n "$vinfo" && \
   10093  1.1  riastrad 	func_warning "'-version-info' is ignored for objects"
   10094  1.1  riastrad 
   10095  1.1  riastrad       test -n "$release" && \
   10096  1.1  riastrad 	func_warning "'-release' is ignored for objects"
   10097  1.1  riastrad 
   10098  1.1  riastrad       case $output in
   10099  1.1  riastrad       *.lo)
   10100  1.1  riastrad 	test -n "$objs$old_deplibs" && \
   10101  1.1  riastrad 	  func_fatal_error "cannot build library object '$output' from non-libtool objects"
   10102  1.1  riastrad 
   10103  1.1  riastrad 	libobj=$output
   10104  1.1  riastrad 	func_lo2o "$libobj"
   10105  1.1  riastrad 	obj=$func_lo2o_result
   10106  1.1  riastrad 	;;
   10107  1.1  riastrad       *)
   10108  1.1  riastrad 	libobj=
   10109  1.1  riastrad 	obj=$output
   10110  1.1  riastrad 	;;
   10111  1.1  riastrad       esac
   10112  1.1  riastrad 
   10113  1.1  riastrad       # Delete the old objects.
   10114  1.1  riastrad       $opt_dry_run || $RM $obj $libobj
   10115  1.1  riastrad 
   10116  1.1  riastrad       # Objects from convenience libraries.  This assumes
   10117  1.1  riastrad       # single-version convenience libraries.  Whenever we create
   10118  1.1  riastrad       # different ones for PIC/non-PIC, this we'll have to duplicate
   10119  1.1  riastrad       # the extraction.
   10120  1.1  riastrad       reload_conv_objs=
   10121  1.1  riastrad       gentop=
   10122  1.1  riastrad       # if reload_cmds runs $LD directly, get rid of -Wl from
   10123  1.1  riastrad       # whole_archive_flag_spec and hope we can get by with turning comma
   10124  1.1  riastrad       # into space.
   10125  1.1  riastrad       case $reload_cmds in
   10126  1.1  riastrad         *\$LD[\ \$]*) wl= ;;
   10127  1.1  riastrad       esac
   10128  1.1  riastrad       if test -n "$convenience"; then
   10129  1.1  riastrad 	if test -n "$whole_archive_flag_spec"; then
   10130  1.1  riastrad 	  eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
   10131  1.1  riastrad 	  test -n "$wl" || tmp_whole_archive_flags=`$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'`
   10132  1.1  riastrad 	  reload_conv_objs=$reload_objs\ $tmp_whole_archive_flags
   10133  1.1  riastrad 	else
   10134  1.1  riastrad 	  gentop=$output_objdir/${obj}x
   10135  1.1  riastrad 	  func_append generated " $gentop"
   10136  1.1  riastrad 
   10137  1.1  riastrad 	  func_extract_archives $gentop $convenience
   10138  1.1  riastrad 	  reload_conv_objs="$reload_objs $func_extract_archives_result"
   10139  1.1  riastrad 	fi
   10140  1.1  riastrad       fi
   10141  1.1  riastrad 
   10142  1.1  riastrad       # If we're not building shared, we need to use non_pic_objs
   10143  1.1  riastrad       test yes = "$build_libtool_libs" || libobjs=$non_pic_objects
   10144  1.1  riastrad 
   10145  1.1  riastrad       # Create the old-style object.
   10146  1.1  riastrad       reload_objs=$objs$old_deplibs' '`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; /\.lib$/d; $lo2o" | $NL2SP`' '$reload_conv_objs
   10147  1.1  riastrad 
   10148  1.1  riastrad       output=$obj
   10149  1.1  riastrad       func_execute_cmds "$reload_cmds" 'exit $?'
   10150  1.1  riastrad 
   10151  1.1  riastrad       # Exit if we aren't doing a library object file.
   10152  1.1  riastrad       if test -z "$libobj"; then
   10153  1.1  riastrad 	if test -n "$gentop"; then
   10154  1.1  riastrad 	  func_show_eval '${RM}r "$gentop"'
   10155  1.1  riastrad 	fi
   10156  1.1  riastrad 
   10157  1.1  riastrad 	exit $EXIT_SUCCESS
   10158  1.1  riastrad       fi
   10159  1.1  riastrad 
   10160  1.1  riastrad       test yes = "$build_libtool_libs" || {
   10161  1.1  riastrad 	if test -n "$gentop"; then
   10162  1.1  riastrad 	  func_show_eval '${RM}r "$gentop"'
   10163  1.1  riastrad 	fi
   10164  1.1  riastrad 
   10165  1.1  riastrad 	# Create an invalid libtool object if no PIC, so that we don't
   10166  1.1  riastrad 	# accidentally link it into a program.
   10167  1.1  riastrad 	# $show "echo timestamp > $libobj"
   10168  1.1  riastrad 	# $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
   10169  1.1  riastrad 	exit $EXIT_SUCCESS
   10170  1.1  riastrad       }
   10171  1.1  riastrad 
   10172  1.1  riastrad       if test -n "$pic_flag" || test default != "$pic_mode"; then
   10173  1.1  riastrad 	# Only do commands if we really have different PIC objects.
   10174  1.1  riastrad 	reload_objs="$libobjs $reload_conv_objs"
   10175  1.1  riastrad 	output=$libobj
   10176  1.1  riastrad 	func_execute_cmds "$reload_cmds" 'exit $?'
   10177  1.1  riastrad       fi
   10178  1.1  riastrad 
   10179  1.1  riastrad       if test -n "$gentop"; then
   10180  1.1  riastrad 	func_show_eval '${RM}r "$gentop"'
   10181  1.1  riastrad       fi
   10182  1.1  riastrad 
   10183  1.1  riastrad       exit $EXIT_SUCCESS
   10184  1.1  riastrad       ;;
   10185  1.1  riastrad 
   10186  1.1  riastrad     prog)
   10187  1.1  riastrad       case $host in
   10188  1.1  riastrad 	*cygwin*) func_stripname '' '.exe' "$output"
   10189  1.1  riastrad 	          output=$func_stripname_result.exe;;
   10190  1.1  riastrad       esac
   10191  1.1  riastrad       test -n "$vinfo" && \
   10192  1.1  riastrad 	func_warning "'-version-info' is ignored for programs"
   10193  1.1  riastrad 
   10194  1.1  riastrad       test -n "$release" && \
   10195  1.1  riastrad 	func_warning "'-release' is ignored for programs"
   10196  1.1  riastrad 
   10197  1.1  riastrad       $preload \
   10198  1.1  riastrad 	&& test unknown,unknown,unknown = "$dlopen_support,$dlopen_self,$dlopen_self_static" \
   10199  1.1  riastrad 	&& func_warning "'LT_INIT([dlopen])' not used. Assuming no dlopen support."
   10200  1.1  riastrad 
   10201  1.1  riastrad       case $host in
   10202  1.1  riastrad       *-*-rhapsody* | *-*-darwin1.[012])
   10203  1.1  riastrad 	# On Rhapsody replace the C library is the System framework
   10204  1.1  riastrad 	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'`
   10205  1.1  riastrad 	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'`
   10206  1.1  riastrad 	;;
   10207  1.1  riastrad       esac
   10208  1.1  riastrad 
   10209  1.1  riastrad       case $host in
   10210  1.1  riastrad       *-*-darwin*)
   10211  1.1  riastrad 	# Don't allow lazy linking, it breaks C++ global constructors
   10212  1.1  riastrad 	# But is supposedly fixed on 10.4 or later (yay!).
   10213  1.1  riastrad 	if test CXX = "$tagname"; then
   10214  1.1  riastrad 	  case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
   10215  1.1  riastrad 	    10.[0123])
   10216  1.1  riastrad 	      func_append compile_command " $wl-bind_at_load"
   10217  1.1  riastrad 	      func_append finalize_command " $wl-bind_at_load"
   10218  1.1  riastrad 	    ;;
   10219  1.1  riastrad 	  esac
   10220  1.1  riastrad 	fi
   10221  1.1  riastrad 	# Time to change all our "foo.ltframework" stuff back to "-framework foo"
   10222  1.1  riastrad 	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
   10223  1.1  riastrad 	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
   10224  1.1  riastrad 	;;
   10225  1.1  riastrad       esac
   10226  1.1  riastrad 
   10227  1.1  riastrad 
   10228  1.1  riastrad       # move library search paths that coincide with paths to not yet
   10229  1.1  riastrad       # installed libraries to the beginning of the library search list
   10230  1.1  riastrad       new_libs=
   10231  1.1  riastrad       for path in $notinst_path; do
   10232  1.1  riastrad 	case " $new_libs " in
   10233  1.1  riastrad 	*" -L$path/$objdir "*) ;;
   10234  1.1  riastrad 	*)
   10235  1.1  riastrad 	  case " $compile_deplibs " in
   10236  1.1  riastrad 	  *" -L$path/$objdir "*)
   10237  1.1  riastrad 	    func_append new_libs " -L$path/$objdir" ;;
   10238  1.1  riastrad 	  esac
   10239  1.1  riastrad 	  ;;
   10240  1.1  riastrad 	esac
   10241  1.1  riastrad       done
   10242  1.1  riastrad       for deplib in $compile_deplibs; do
   10243  1.1  riastrad 	case $deplib in
   10244  1.1  riastrad 	-L*)
   10245  1.1  riastrad 	  case " $new_libs " in
   10246  1.1  riastrad 	  *" $deplib "*) ;;
   10247  1.1  riastrad 	  *) func_append new_libs " $deplib" ;;
   10248  1.1  riastrad 	  esac
   10249  1.1  riastrad 	  ;;
   10250  1.1  riastrad 	*) func_append new_libs " $deplib" ;;
   10251  1.1  riastrad 	esac
   10252  1.1  riastrad       done
   10253  1.1  riastrad       compile_deplibs=$new_libs
   10254  1.1  riastrad 
   10255  1.1  riastrad 
   10256  1.1  riastrad       func_append compile_command " $compile_deplibs"
   10257  1.1  riastrad       func_append finalize_command " $finalize_deplibs"
   10258  1.1  riastrad 
   10259  1.1  riastrad       if test -n "$rpath$xrpath"; then
   10260  1.1  riastrad 	# If the user specified any rpath flags, then add them.
   10261  1.1  riastrad 	for libdir in $rpath $xrpath; do
   10262  1.1  riastrad 	  # This is the magic to use -rpath.
   10263  1.1  riastrad 	  case "$finalize_rpath " in
   10264  1.1  riastrad 	  *" $libdir "*) ;;
   10265  1.1  riastrad 	  *) func_append finalize_rpath " $libdir" ;;
   10266  1.1  riastrad 	  esac
   10267  1.1  riastrad 	done
   10268  1.1  riastrad       fi
   10269  1.1  riastrad 
   10270  1.1  riastrad       # Now hardcode the library paths
   10271  1.1  riastrad       rpath=
   10272  1.1  riastrad       hardcode_libdirs=
   10273  1.1  riastrad       for libdir in $compile_rpath $finalize_rpath; do
   10274  1.1  riastrad 	if test -n "$hardcode_libdir_flag_spec"; then
   10275  1.1  riastrad 	  if test -n "$hardcode_libdir_separator"; then
   10276  1.1  riastrad 	    if test -z "$hardcode_libdirs"; then
   10277  1.1  riastrad 	      hardcode_libdirs=$libdir
   10278  1.1  riastrad 	    else
   10279  1.1  riastrad 	      # Just accumulate the unique libdirs.
   10280  1.1  riastrad 	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
   10281  1.1  riastrad 	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
   10282  1.1  riastrad 		;;
   10283  1.1  riastrad 	      *)
   10284  1.1  riastrad 		func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
   10285  1.1  riastrad 		;;
   10286  1.1  riastrad 	      esac
   10287  1.1  riastrad 	    fi
   10288  1.1  riastrad 	  else
   10289  1.1  riastrad 	    eval flag=\"$hardcode_libdir_flag_spec\"
   10290  1.1  riastrad 	    func_append rpath " $flag"
   10291  1.1  riastrad 	  fi
   10292  1.1  riastrad 	elif test -n "$runpath_var"; then
   10293  1.1  riastrad 	  case "$perm_rpath " in
   10294  1.1  riastrad 	  *" $libdir "*) ;;
   10295  1.1  riastrad 	  *) func_append perm_rpath " $libdir" ;;
   10296  1.1  riastrad 	  esac
   10297  1.1  riastrad 	fi
   10298  1.1  riastrad 	case $host in
   10299  1.1  riastrad 	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
   10300  1.1  riastrad 	  testbindir=`$ECHO "$libdir" | $SED -e 's*/lib$*/bin*'`
   10301  1.1  riastrad 	  case :$dllsearchpath: in
   10302  1.1  riastrad 	  *":$libdir:"*) ;;
   10303  1.1  riastrad 	  ::) dllsearchpath=$libdir;;
   10304  1.1  riastrad 	  *) func_append dllsearchpath ":$libdir";;
   10305  1.1  riastrad 	  esac
   10306  1.1  riastrad 	  case :$dllsearchpath: in
   10307  1.1  riastrad 	  *":$testbindir:"*) ;;
   10308  1.1  riastrad 	  ::) dllsearchpath=$testbindir;;
   10309  1.1  riastrad 	  *) func_append dllsearchpath ":$testbindir";;
   10310  1.1  riastrad 	  esac
   10311  1.1  riastrad 	  ;;
   10312  1.1  riastrad 	esac
   10313  1.1  riastrad       done
   10314  1.1  riastrad       # Substitute the hardcoded libdirs into the rpath.
   10315  1.1  riastrad       if test -n "$hardcode_libdir_separator" &&
   10316  1.1  riastrad 	 test -n "$hardcode_libdirs"; then
   10317  1.1  riastrad 	libdir=$hardcode_libdirs
   10318  1.1  riastrad 	eval rpath=\" $hardcode_libdir_flag_spec\"
   10319  1.1  riastrad       fi
   10320  1.1  riastrad       compile_rpath=$rpath
   10321  1.1  riastrad 
   10322  1.1  riastrad       rpath=
   10323  1.1  riastrad       hardcode_libdirs=
   10324  1.1  riastrad       for libdir in $finalize_rpath; do
   10325  1.1  riastrad 	if test -n "$hardcode_libdir_flag_spec"; then
   10326  1.1  riastrad 	  if test -n "$hardcode_libdir_separator"; then
   10327  1.1  riastrad 	    if test -z "$hardcode_libdirs"; then
   10328  1.1  riastrad 	      hardcode_libdirs=$libdir
   10329  1.1  riastrad 	    else
   10330  1.1  riastrad 	      # Just accumulate the unique libdirs.
   10331  1.1  riastrad 	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
   10332  1.1  riastrad 	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
   10333  1.1  riastrad 		;;
   10334  1.1  riastrad 	      *)
   10335  1.1  riastrad 		func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
   10336  1.1  riastrad 		;;
   10337  1.1  riastrad 	      esac
   10338  1.1  riastrad 	    fi
   10339  1.1  riastrad 	  else
   10340  1.1  riastrad 	    eval flag=\"$hardcode_libdir_flag_spec\"
   10341  1.1  riastrad 	    func_append rpath " $flag"
   10342  1.1  riastrad 	  fi
   10343  1.1  riastrad 	elif test -n "$runpath_var"; then
   10344  1.1  riastrad 	  case "$finalize_perm_rpath " in
   10345  1.1  riastrad 	  *" $libdir "*) ;;
   10346  1.1  riastrad 	  *) func_append finalize_perm_rpath " $libdir" ;;
   10347  1.1  riastrad 	  esac
   10348  1.1  riastrad 	fi
   10349  1.1  riastrad       done
   10350  1.1  riastrad       # Substitute the hardcoded libdirs into the rpath.
   10351  1.1  riastrad       if test -n "$hardcode_libdir_separator" &&
   10352  1.1  riastrad 	 test -n "$hardcode_libdirs"; then
   10353  1.1  riastrad 	libdir=$hardcode_libdirs
   10354  1.1  riastrad 	eval rpath=\" $hardcode_libdir_flag_spec\"
   10355  1.1  riastrad       fi
   10356  1.1  riastrad       finalize_rpath=$rpath
   10357  1.1  riastrad 
   10358  1.1  riastrad       if test -n "$libobjs" && test yes = "$build_old_libs"; then
   10359  1.1  riastrad 	# Transform all the library objects into standard objects.
   10360  1.1  riastrad 	compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
   10361  1.1  riastrad 	finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
   10362  1.1  riastrad       fi
   10363  1.1  riastrad 
   10364  1.1  riastrad       func_generate_dlsyms "$outputname" "@PROGRAM@" false
   10365  1.1  riastrad 
   10366  1.1  riastrad       # template prelinking step
   10367  1.1  riastrad       if test -n "$prelink_cmds"; then
   10368  1.1  riastrad 	func_execute_cmds "$prelink_cmds" 'exit $?'
   10369  1.1  riastrad       fi
   10370  1.1  riastrad 
   10371  1.1  riastrad       wrappers_required=:
   10372  1.1  riastrad       case $host in
   10373  1.1  riastrad       *cegcc* | *mingw32ce*)
   10374  1.1  riastrad         # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway.
   10375  1.1  riastrad         wrappers_required=false
   10376  1.1  riastrad         ;;
   10377  1.1  riastrad       *cygwin* | *mingw* )
   10378  1.1  riastrad         test yes = "$build_libtool_libs" || wrappers_required=false
   10379  1.1  riastrad         ;;
   10380  1.1  riastrad       *)
   10381  1.1  riastrad         if test no = "$need_relink" || test yes != "$build_libtool_libs"; then
   10382  1.1  riastrad           wrappers_required=false
   10383  1.1  riastrad         fi
   10384  1.1  riastrad         ;;
   10385  1.1  riastrad       esac
   10386  1.1  riastrad       $wrappers_required || {
   10387  1.1  riastrad 	# Replace the output file specification.
   10388  1.1  riastrad 	compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
   10389  1.1  riastrad 	link_command=$compile_command$compile_rpath
   10390  1.1  riastrad 
   10391  1.1  riastrad 	# We have no uninstalled library dependencies, so finalize right now.
   10392  1.1  riastrad 	exit_status=0
   10393  1.1  riastrad 	func_show_eval "$link_command" 'exit_status=$?'
   10394  1.1  riastrad 
   10395  1.1  riastrad 	if test -n "$postlink_cmds"; then
   10396  1.1  riastrad 	  func_to_tool_file "$output"
   10397  1.1  riastrad 	  postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
   10398  1.1  riastrad 	  func_execute_cmds "$postlink_cmds" 'exit $?'
   10399  1.1  riastrad 	fi
   10400  1.1  riastrad 
   10401  1.1  riastrad 	# Delete the generated files.
   10402  1.1  riastrad 	if test -f "$output_objdir/${outputname}S.$objext"; then
   10403  1.1  riastrad 	  func_show_eval '$RM "$output_objdir/${outputname}S.$objext"'
   10404  1.1  riastrad 	fi
   10405  1.1  riastrad 
   10406  1.1  riastrad 	exit $exit_status
   10407  1.1  riastrad       }
   10408  1.1  riastrad 
   10409  1.1  riastrad       if test -n "$compile_shlibpath$finalize_shlibpath"; then
   10410  1.1  riastrad 	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
   10411  1.1  riastrad       fi
   10412  1.1  riastrad       if test -n "$finalize_shlibpath"; then
   10413  1.1  riastrad 	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
   10414  1.1  riastrad       fi
   10415  1.1  riastrad 
   10416  1.1  riastrad       compile_var=
   10417  1.1  riastrad       finalize_var=
   10418  1.1  riastrad       if test -n "$runpath_var"; then
   10419  1.1  riastrad 	if test -n "$perm_rpath"; then
   10420  1.1  riastrad 	  # We should set the runpath_var.
   10421  1.1  riastrad 	  rpath=
   10422  1.1  riastrad 	  for dir in $perm_rpath; do
   10423  1.1  riastrad 	    func_append rpath "$dir:"
   10424  1.1  riastrad 	  done
   10425  1.1  riastrad 	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
   10426  1.1  riastrad 	fi
   10427  1.1  riastrad 	if test -n "$finalize_perm_rpath"; then
   10428  1.1  riastrad 	  # We should set the runpath_var.
   10429  1.1  riastrad 	  rpath=
   10430  1.1  riastrad 	  for dir in $finalize_perm_rpath; do
   10431  1.1  riastrad 	    func_append rpath "$dir:"
   10432  1.1  riastrad 	  done
   10433  1.1  riastrad 	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
   10434  1.1  riastrad 	fi
   10435  1.1  riastrad       fi
   10436  1.1  riastrad 
   10437  1.1  riastrad       if test yes = "$no_install"; then
   10438  1.1  riastrad 	# We don't need to create a wrapper script.
   10439  1.1  riastrad 	link_command=$compile_var$compile_command$compile_rpath
   10440  1.1  riastrad 	# Replace the output file specification.
   10441  1.1  riastrad 	link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
   10442  1.1  riastrad 	# Delete the old output file.
   10443  1.1  riastrad 	$opt_dry_run || $RM $output
   10444  1.1  riastrad 	# Link the executable and exit
   10445  1.1  riastrad 	func_show_eval "$link_command" 'exit $?'
   10446  1.1  riastrad 
   10447  1.1  riastrad 	if test -n "$postlink_cmds"; then
   10448  1.1  riastrad 	  func_to_tool_file "$output"
   10449  1.1  riastrad 	  postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
   10450  1.1  riastrad 	  func_execute_cmds "$postlink_cmds" 'exit $?'
   10451  1.1  riastrad 	fi
   10452  1.1  riastrad 
   10453  1.1  riastrad 	exit $EXIT_SUCCESS
   10454  1.1  riastrad       fi
   10455  1.1  riastrad 
   10456  1.1  riastrad       case $hardcode_action,$fast_install in
   10457  1.1  riastrad         relink,*)
   10458  1.1  riastrad 	  # Fast installation is not supported
   10459  1.1  riastrad 	  link_command=$compile_var$compile_command$compile_rpath
   10460  1.1  riastrad 	  relink_command=$finalize_var$finalize_command$finalize_rpath
   10461  1.1  riastrad 
   10462  1.1  riastrad 	  func_warning "this platform does not like uninstalled shared libraries"
   10463  1.1  riastrad 	  func_warning "'$output' will be relinked during installation"
   10464  1.1  riastrad 	  ;;
   10465  1.1  riastrad         *,yes)
   10466  1.1  riastrad 	  link_command=$finalize_var$compile_command$finalize_rpath
   10467  1.1  riastrad 	  relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'`
   10468  1.1  riastrad           ;;
   10469  1.1  riastrad 	*,no)
   10470  1.1  riastrad 	  link_command=$compile_var$compile_command$compile_rpath
   10471  1.1  riastrad 	  relink_command=$finalize_var$finalize_command$finalize_rpath
   10472  1.1  riastrad           ;;
   10473  1.1  riastrad 	*,needless)
   10474  1.1  riastrad 	  link_command=$finalize_var$compile_command$finalize_rpath
   10475  1.1  riastrad 	  relink_command=
   10476  1.1  riastrad           ;;
   10477  1.1  riastrad       esac
   10478  1.1  riastrad 
   10479  1.1  riastrad       # Replace the output file specification.
   10480  1.1  riastrad       link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
   10481  1.1  riastrad 
   10482  1.1  riastrad       # Delete the old output files.
   10483  1.1  riastrad       $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
   10484  1.1  riastrad 
   10485  1.1  riastrad       func_show_eval "$link_command" 'exit $?'
   10486  1.1  riastrad 
   10487  1.1  riastrad       if test -n "$postlink_cmds"; then
   10488  1.1  riastrad 	func_to_tool_file "$output_objdir/$outputname"
   10489  1.1  riastrad 	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'`
   10490  1.1  riastrad 	func_execute_cmds "$postlink_cmds" 'exit $?'
   10491  1.1  riastrad       fi
   10492  1.1  riastrad 
   10493  1.1  riastrad       # Now create the wrapper script.
   10494  1.1  riastrad       func_verbose "creating $output"
   10495  1.1  riastrad 
   10496  1.1  riastrad       # Quote the relink command for shipping.
   10497  1.1  riastrad       if test -n "$relink_command"; then
   10498  1.1  riastrad 	# Preserve any variables that may affect compiler behavior
   10499  1.1  riastrad 	for var in $variables_saved_for_relink; do
   10500  1.1  riastrad 	  if eval test -z \"\${$var+set}\"; then
   10501  1.1  riastrad 	    relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
   10502  1.1  riastrad 	  elif eval var_value=\$$var; test -z "$var_value"; then
   10503  1.1  riastrad 	    relink_command="$var=; export $var; $relink_command"
   10504  1.1  riastrad 	  else
   10505  1.1  riastrad 	    func_quote_for_eval "$var_value"
   10506  1.1  riastrad 	    relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
   10507  1.1  riastrad 	  fi
   10508  1.1  riastrad 	done
   10509  1.1  riastrad 	relink_command="(cd `pwd`; $relink_command)"
   10510  1.1  riastrad 	relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
   10511  1.1  riastrad       fi
   10512  1.1  riastrad 
   10513  1.1  riastrad       # Only actually do things if not in dry run mode.
   10514  1.1  riastrad       $opt_dry_run || {
   10515  1.1  riastrad 	# win32 will think the script is a binary if it has
   10516  1.1  riastrad 	# a .exe suffix, so we strip it off here.
   10517  1.1  riastrad 	case $output in
   10518  1.1  riastrad 	  *.exe) func_stripname '' '.exe' "$output"
   10519  1.1  riastrad 	         output=$func_stripname_result ;;
   10520  1.1  riastrad 	esac
   10521  1.1  riastrad 	# test for cygwin because mv fails w/o .exe extensions
   10522  1.1  riastrad 	case $host in
   10523  1.1  riastrad 	  *cygwin*)
   10524  1.1  riastrad 	    exeext=.exe
   10525  1.1  riastrad 	    func_stripname '' '.exe' "$outputname"
   10526  1.1  riastrad 	    outputname=$func_stripname_result ;;
   10527  1.1  riastrad 	  *) exeext= ;;
   10528  1.1  riastrad 	esac
   10529  1.1  riastrad 	case $host in
   10530  1.1  riastrad 	  *cygwin* | *mingw* )
   10531  1.1  riastrad 	    func_dirname_and_basename "$output" "" "."
   10532  1.1  riastrad 	    output_name=$func_basename_result
   10533  1.1  riastrad 	    output_path=$func_dirname_result
   10534  1.1  riastrad 	    cwrappersource=$output_path/$objdir/lt-$output_name.c
   10535  1.1  riastrad 	    cwrapper=$output_path/$output_name.exe
   10536  1.1  riastrad 	    $RM $cwrappersource $cwrapper
   10537  1.1  riastrad 	    trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
   10538  1.1  riastrad 
   10539  1.1  riastrad 	    func_emit_cwrapperexe_src > $cwrappersource
   10540  1.1  riastrad 
   10541  1.1  riastrad 	    # The wrapper executable is built using the $host compiler,
   10542  1.1  riastrad 	    # because it contains $host paths and files. If cross-
   10543  1.1  riastrad 	    # compiling, it, like the target executable, must be
   10544  1.1  riastrad 	    # executed on the $host or under an emulation environment.
   10545  1.1  riastrad 	    $opt_dry_run || {
   10546  1.1  riastrad 	      $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
   10547  1.1  riastrad 	      $STRIP $cwrapper
   10548  1.1  riastrad 	    }
   10549  1.1  riastrad 
   10550  1.1  riastrad 	    # Now, create the wrapper script for func_source use:
   10551  1.1  riastrad 	    func_ltwrapper_scriptname $cwrapper
   10552  1.1  riastrad 	    $RM $func_ltwrapper_scriptname_result
   10553  1.1  riastrad 	    trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
   10554  1.1  riastrad 	    $opt_dry_run || {
   10555  1.1  riastrad 	      # note: this script will not be executed, so do not chmod.
   10556  1.1  riastrad 	      if test "x$build" = "x$host"; then
   10557  1.1  riastrad 		$cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
   10558  1.1  riastrad 	      else
   10559  1.1  riastrad 		func_emit_wrapper no > $func_ltwrapper_scriptname_result
   10560  1.1  riastrad 	      fi
   10561  1.1  riastrad 	    }
   10562  1.1  riastrad 	  ;;
   10563  1.1  riastrad 	  * )
   10564  1.1  riastrad 	    $RM $output
   10565  1.1  riastrad 	    trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
   10566  1.1  riastrad 
   10567  1.1  riastrad 	    func_emit_wrapper no > $output
   10568  1.1  riastrad 	    chmod +x $output
   10569  1.1  riastrad 	  ;;
   10570  1.1  riastrad 	esac
   10571  1.1  riastrad       }
   10572  1.1  riastrad       exit $EXIT_SUCCESS
   10573  1.1  riastrad       ;;
   10574  1.1  riastrad     esac
   10575  1.1  riastrad 
   10576  1.1  riastrad     # See if we need to build an old-fashioned archive.
   10577  1.1  riastrad     for oldlib in $oldlibs; do
   10578  1.1  riastrad 
   10579  1.1  riastrad       case $build_libtool_libs in
   10580  1.1  riastrad         convenience)
   10581  1.1  riastrad 	  oldobjs="$libobjs_save $symfileobj"
   10582  1.1  riastrad 	  addlibs=$convenience
   10583  1.1  riastrad 	  build_libtool_libs=no
   10584  1.1  riastrad 	  ;;
   10585  1.1  riastrad 	module)
   10586  1.1  riastrad 	  oldobjs=$libobjs_save
   10587  1.1  riastrad 	  addlibs=$old_convenience
   10588  1.1  riastrad 	  build_libtool_libs=no
   10589  1.1  riastrad           ;;
   10590  1.1  riastrad 	*)
   10591  1.1  riastrad 	  oldobjs="$old_deplibs $non_pic_objects"
   10592  1.1  riastrad 	  $preload && test -f "$symfileobj" \
   10593  1.1  riastrad 	    && func_append oldobjs " $symfileobj"
   10594  1.1  riastrad 	  addlibs=$old_convenience
   10595  1.1  riastrad 	  ;;
   10596  1.1  riastrad       esac
   10597  1.1  riastrad 
   10598  1.1  riastrad       if test -n "$addlibs"; then
   10599  1.1  riastrad 	gentop=$output_objdir/${outputname}x
   10600  1.1  riastrad 	func_append generated " $gentop"
   10601  1.1  riastrad 
   10602  1.1  riastrad 	func_extract_archives $gentop $addlibs
   10603  1.1  riastrad 	func_append oldobjs " $func_extract_archives_result"
   10604  1.1  riastrad       fi
   10605  1.1  riastrad 
   10606  1.1  riastrad       # Do each command in the archive commands.
   10607  1.1  riastrad       if test -n "$old_archive_from_new_cmds" && test yes = "$build_libtool_libs"; then
   10608  1.1  riastrad 	cmds=$old_archive_from_new_cmds
   10609  1.1  riastrad       else
   10610  1.1  riastrad 
   10611  1.1  riastrad 	# Add any objects from preloaded convenience libraries
   10612  1.1  riastrad 	if test -n "$dlprefiles"; then
   10613  1.1  riastrad 	  gentop=$output_objdir/${outputname}x
   10614  1.1  riastrad 	  func_append generated " $gentop"
   10615  1.1  riastrad 
   10616  1.1  riastrad 	  func_extract_archives $gentop $dlprefiles
   10617  1.1  riastrad 	  func_append oldobjs " $func_extract_archives_result"
   10618  1.1  riastrad 	fi
   10619  1.1  riastrad 
   10620  1.1  riastrad 	# POSIX demands no paths to be encoded in archives.  We have
   10621  1.1  riastrad 	# to avoid creating archives with duplicate basenames if we
   10622  1.1  riastrad 	# might have to extract them afterwards, e.g., when creating a
   10623  1.1  riastrad 	# static archive out of a convenience library, or when linking
   10624  1.1  riastrad 	# the entirety of a libtool archive into another (currently
   10625  1.1  riastrad 	# not supported by libtool).
   10626  1.1  riastrad 	if (for obj in $oldobjs
   10627  1.1  riastrad 	    do
   10628  1.1  riastrad 	      func_basename "$obj"
   10629  1.1  riastrad 	      $ECHO "$func_basename_result"
   10630  1.1  riastrad 	    done | sort | sort -uc >/dev/null 2>&1); then
   10631  1.1  riastrad 	  :
   10632  1.1  riastrad 	else
   10633  1.1  riastrad 	  echo "copying selected object files to avoid basename conflicts..."
   10634  1.1  riastrad 	  gentop=$output_objdir/${outputname}x
   10635  1.1  riastrad 	  func_append generated " $gentop"
   10636  1.1  riastrad 	  func_mkdir_p "$gentop"
   10637  1.1  riastrad 	  save_oldobjs=$oldobjs
   10638  1.1  riastrad 	  oldobjs=
   10639  1.1  riastrad 	  counter=1
   10640  1.1  riastrad 	  for obj in $save_oldobjs
   10641  1.1  riastrad 	  do
   10642  1.1  riastrad 	    func_basename "$obj"
   10643  1.1  riastrad 	    objbase=$func_basename_result
   10644  1.1  riastrad 	    case " $oldobjs " in
   10645  1.1  riastrad 	    " ") oldobjs=$obj ;;
   10646  1.1  riastrad 	    *[\ /]"$objbase "*)
   10647  1.1  riastrad 	      while :; do
   10648  1.1  riastrad 		# Make sure we don't pick an alternate name that also
   10649  1.1  riastrad 		# overlaps.
   10650  1.1  riastrad 		newobj=lt$counter-$objbase
   10651  1.1  riastrad 		func_arith $counter + 1
   10652  1.1  riastrad 		counter=$func_arith_result
   10653  1.1  riastrad 		case " $oldobjs " in
   10654  1.1  riastrad 		*[\ /]"$newobj "*) ;;
   10655  1.1  riastrad 		*) if test ! -f "$gentop/$newobj"; then break; fi ;;
   10656  1.1  riastrad 		esac
   10657  1.1  riastrad 	      done
   10658  1.1  riastrad 	      func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
   10659  1.1  riastrad 	      func_append oldobjs " $gentop/$newobj"
   10660  1.1  riastrad 	      ;;
   10661  1.1  riastrad 	    *) func_append oldobjs " $obj" ;;
   10662  1.1  riastrad 	    esac
   10663  1.1  riastrad 	  done
   10664  1.1  riastrad 	fi
   10665  1.1  riastrad 	func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
   10666  1.1  riastrad 	tool_oldlib=$func_to_tool_file_result
   10667  1.1  riastrad 	eval cmds=\"$old_archive_cmds\"
   10668  1.1  riastrad 
   10669  1.1  riastrad 	func_len " $cmds"
   10670  1.1  riastrad 	len=$func_len_result
   10671  1.1  riastrad 	if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
   10672  1.1  riastrad 	  cmds=$old_archive_cmds
   10673  1.1  riastrad 	elif test -n "$archiver_list_spec"; then
   10674  1.1  riastrad 	  func_verbose "using command file archive linking..."
   10675  1.1  riastrad 	  for obj in $oldobjs
   10676  1.1  riastrad 	  do
   10677  1.1  riastrad 	    func_to_tool_file "$obj"
   10678  1.1  riastrad 	    $ECHO "$func_to_tool_file_result"
   10679  1.1  riastrad 	  done > $output_objdir/$libname.libcmd
   10680  1.1  riastrad 	  func_to_tool_file "$output_objdir/$libname.libcmd"
   10681  1.1  riastrad 	  oldobjs=" $archiver_list_spec$func_to_tool_file_result"
   10682  1.1  riastrad 	  cmds=$old_archive_cmds
   10683  1.1  riastrad 	else
   10684  1.1  riastrad 	  # the command line is too long to link in one step, link in parts
   10685  1.1  riastrad 	  func_verbose "using piecewise archive linking..."
   10686  1.1  riastrad 	  save_RANLIB=$RANLIB
   10687  1.1  riastrad 	  RANLIB=:
   10688  1.1  riastrad 	  objlist=
   10689  1.1  riastrad 	  concat_cmds=
   10690  1.1  riastrad 	  save_oldobjs=$oldobjs
   10691  1.1  riastrad 	  oldobjs=
   10692  1.1  riastrad 	  # Is there a better way of finding the last object in the list?
   10693  1.1  riastrad 	  for obj in $save_oldobjs
   10694  1.1  riastrad 	  do
   10695  1.1  riastrad 	    last_oldobj=$obj
   10696  1.1  riastrad 	  done
   10697  1.1  riastrad 	  eval test_cmds=\"$old_archive_cmds\"
   10698  1.1  riastrad 	  func_len " $test_cmds"
   10699  1.1  riastrad 	  len0=$func_len_result
   10700  1.1  riastrad 	  len=$len0
   10701  1.1  riastrad 	  for obj in $save_oldobjs
   10702  1.1  riastrad 	  do
   10703  1.1  riastrad 	    func_len " $obj"
   10704  1.1  riastrad 	    func_arith $len + $func_len_result
   10705  1.1  riastrad 	    len=$func_arith_result
   10706  1.1  riastrad 	    func_append objlist " $obj"
   10707  1.1  riastrad 	    if test "$len" -lt "$max_cmd_len"; then
   10708  1.1  riastrad 	      :
   10709  1.1  riastrad 	    else
   10710  1.1  riastrad 	      # the above command should be used before it gets too long
   10711  1.1  riastrad 	      oldobjs=$objlist
   10712  1.1  riastrad 	      if test "$obj" = "$last_oldobj"; then
   10713  1.1  riastrad 		RANLIB=$save_RANLIB
   10714  1.1  riastrad 	      fi
   10715  1.1  riastrad 	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
   10716  1.1  riastrad 	      eval concat_cmds=\"\$concat_cmds$old_archive_cmds\"
   10717  1.1  riastrad 	      objlist=
   10718  1.1  riastrad 	      len=$len0
   10719  1.1  riastrad 	    fi
   10720  1.1  riastrad 	  done
   10721  1.1  riastrad 	  RANLIB=$save_RANLIB
   10722  1.1  riastrad 	  oldobjs=$objlist
   10723  1.1  riastrad 	  if test -z "$oldobjs"; then
   10724  1.1  riastrad 	    eval cmds=\"\$concat_cmds\"
   10725  1.1  riastrad 	  else
   10726  1.1  riastrad 	    eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
   10727  1.1  riastrad 	  fi
   10728  1.1  riastrad 	fi
   10729  1.1  riastrad       fi
   10730  1.1  riastrad       func_execute_cmds "$cmds" 'exit $?'
   10731  1.1  riastrad     done
   10732  1.1  riastrad 
   10733  1.1  riastrad     test -n "$generated" && \
   10734  1.1  riastrad       func_show_eval "${RM}r$generated"
   10735  1.1  riastrad 
   10736  1.1  riastrad     # Now create the libtool archive.
   10737  1.1  riastrad     case $output in
   10738  1.1  riastrad     *.la)
   10739  1.1  riastrad       old_library=
   10740  1.1  riastrad       test yes = "$build_old_libs" && old_library=$libname.$libext
   10741  1.1  riastrad       func_verbose "creating $output"
   10742  1.1  riastrad 
   10743  1.1  riastrad       # Preserve any variables that may affect compiler behavior
   10744  1.1  riastrad       for var in $variables_saved_for_relink; do
   10745  1.1  riastrad 	if eval test -z \"\${$var+set}\"; then
   10746  1.1  riastrad 	  relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
   10747  1.1  riastrad 	elif eval var_value=\$$var; test -z "$var_value"; then
   10748  1.1  riastrad 	  relink_command="$var=; export $var; $relink_command"
   10749  1.1  riastrad 	else
   10750  1.1  riastrad 	  func_quote_for_eval "$var_value"
   10751  1.1  riastrad 	  relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
   10752  1.1  riastrad 	fi
   10753  1.1  riastrad       done
   10754  1.1  riastrad       # Quote the link command for shipping.
   10755  1.1  riastrad       relink_command="(cd `pwd`; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
   10756  1.1  riastrad       relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
   10757  1.1  riastrad       if test yes = "$hardcode_automatic"; then
   10758  1.1  riastrad 	relink_command=
   10759  1.1  riastrad       fi
   10760  1.1  riastrad 
   10761  1.1  riastrad       # Only create the output if not a dry run.
   10762  1.1  riastrad       $opt_dry_run || {
   10763  1.1  riastrad 	for installed in no yes; do
   10764  1.1  riastrad 	  if test yes = "$installed"; then
   10765  1.1  riastrad 	    if test -z "$install_libdir"; then
   10766  1.1  riastrad 	      break
   10767  1.1  riastrad 	    fi
   10768  1.1  riastrad 	    output=$output_objdir/${outputname}i
   10769  1.1  riastrad 	    # Replace all uninstalled libtool libraries with the installed ones
   10770  1.1  riastrad 	    newdependency_libs=
   10771  1.1  riastrad 	    for deplib in $dependency_libs; do
   10772  1.1  riastrad 	      case $deplib in
   10773  1.1  riastrad 	      *.la)
   10774  1.1  riastrad 		func_basename "$deplib"
   10775  1.1  riastrad 		name=$func_basename_result
   10776  1.1  riastrad 		func_resolve_sysroot "$deplib"
   10777  1.1  riastrad 		eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
   10778  1.1  riastrad 		test -z "$libdir" && \
   10779  1.1  riastrad 		  func_fatal_error "'$deplib' is not a valid libtool archive"
   10780  1.1  riastrad 		func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name"
   10781  1.1  riastrad 		;;
   10782  1.1  riastrad 	      -L*)
   10783  1.1  riastrad 		func_stripname -L '' "$deplib"
   10784  1.1  riastrad 		func_replace_sysroot "$func_stripname_result"
   10785  1.1  riastrad 		func_append newdependency_libs " -L$func_replace_sysroot_result"
   10786  1.1  riastrad 		;;
   10787  1.1  riastrad 	      -R*)
   10788  1.1  riastrad 		func_stripname -R '' "$deplib"
   10789  1.1  riastrad 		func_replace_sysroot "$func_stripname_result"
   10790  1.1  riastrad 		func_append newdependency_libs " -R$func_replace_sysroot_result"
   10791  1.1  riastrad 		;;
   10792  1.1  riastrad 	      *) func_append newdependency_libs " $deplib" ;;
   10793  1.1  riastrad 	      esac
   10794  1.1  riastrad 	    done
   10795  1.1  riastrad 	    dependency_libs=$newdependency_libs
   10796  1.1  riastrad 	    newdlfiles=
   10797  1.1  riastrad 
   10798  1.1  riastrad 	    for lib in $dlfiles; do
   10799  1.1  riastrad 	      case $lib in
   10800  1.1  riastrad 	      *.la)
   10801  1.1  riastrad 	        func_basename "$lib"
   10802  1.1  riastrad 		name=$func_basename_result
   10803  1.1  riastrad 		eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
   10804  1.1  riastrad 		test -z "$libdir" && \
   10805  1.1  riastrad 		  func_fatal_error "'$lib' is not a valid libtool archive"
   10806  1.1  riastrad 		func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name"
   10807  1.1  riastrad 		;;
   10808  1.1  riastrad 	      *) func_append newdlfiles " $lib" ;;
   10809  1.1  riastrad 	      esac
   10810  1.1  riastrad 	    done
   10811  1.1  riastrad 	    dlfiles=$newdlfiles
   10812  1.1  riastrad 	    newdlprefiles=
   10813  1.1  riastrad 	    for lib in $dlprefiles; do
   10814  1.1  riastrad 	      case $lib in
   10815  1.1  riastrad 	      *.la)
   10816  1.1  riastrad 		# Only pass preopened files to the pseudo-archive (for
   10817  1.1  riastrad 		# eventual linking with the app. that links it) if we
   10818  1.1  riastrad 		# didn't already link the preopened objects directly into
   10819  1.1  riastrad 		# the library:
   10820  1.1  riastrad 		func_basename "$lib"
   10821  1.1  riastrad 		name=$func_basename_result
   10822  1.1  riastrad 		eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
   10823  1.1  riastrad 		test -z "$libdir" && \
   10824  1.1  riastrad 		  func_fatal_error "'$lib' is not a valid libtool archive"
   10825  1.1  riastrad 		func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name"
   10826  1.1  riastrad 		;;
   10827  1.1  riastrad 	      esac
   10828  1.1  riastrad 	    done
   10829  1.1  riastrad 	    dlprefiles=$newdlprefiles
   10830  1.1  riastrad 	  else
   10831  1.1  riastrad 	    newdlfiles=
   10832  1.1  riastrad 	    for lib in $dlfiles; do
   10833  1.1  riastrad 	      case $lib in
   10834  1.1  riastrad 		[\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;;
   10835  1.1  riastrad 		*) abs=`pwd`"/$lib" ;;
   10836  1.1  riastrad 	      esac
   10837  1.1  riastrad 	      func_append newdlfiles " $abs"
   10838  1.1  riastrad 	    done
   10839  1.1  riastrad 	    dlfiles=$newdlfiles
   10840  1.1  riastrad 	    newdlprefiles=
   10841  1.1  riastrad 	    for lib in $dlprefiles; do
   10842  1.1  riastrad 	      case $lib in
   10843  1.1  riastrad 		[\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;;
   10844  1.1  riastrad 		*) abs=`pwd`"/$lib" ;;
   10845  1.1  riastrad 	      esac
   10846  1.1  riastrad 	      func_append newdlprefiles " $abs"
   10847  1.1  riastrad 	    done
   10848  1.1  riastrad 	    dlprefiles=$newdlprefiles
   10849  1.1  riastrad 	  fi
   10850  1.1  riastrad 	  $RM $output
   10851  1.1  riastrad 	  # place dlname in correct position for cygwin
   10852  1.1  riastrad 	  # In fact, it would be nice if we could use this code for all target
   10853  1.1  riastrad 	  # systems that can't hard-code library paths into their executables
   10854  1.1  riastrad 	  # and that have no shared library path variable independent of PATH,
   10855  1.1  riastrad 	  # but it turns out we can't easily determine that from inspecting
   10856  1.1  riastrad 	  # libtool variables, so we have to hard-code the OSs to which it
   10857  1.1  riastrad 	  # applies here; at the moment, that means platforms that use the PE
   10858  1.1  riastrad 	  # object format with DLL files.  See the long comment at the top of
   10859  1.1  riastrad 	  # tests/bindir.at for full details.
   10860  1.1  riastrad 	  tdlname=$dlname
   10861  1.1  riastrad 	  case $host,$output,$installed,$module,$dlname in
   10862  1.1  riastrad 	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll)
   10863  1.1  riastrad 	      # If a -bindir argument was supplied, place the dll there.
   10864  1.1  riastrad 	      if test -n "$bindir"; then
   10865  1.1  riastrad 		func_relative_path "$install_libdir" "$bindir"
   10866  1.1  riastrad 		tdlname=$func_relative_path_result/$dlname
   10867  1.1  riastrad 	      else
   10868  1.1  riastrad 		# Otherwise fall back on heuristic.
   10869  1.1  riastrad 		tdlname=../bin/$dlname
   10870  1.1  riastrad 	      fi
   10871  1.1  riastrad 	      ;;
   10872  1.1  riastrad 	  esac
   10873  1.1  riastrad 	  $ECHO > $output "\
   10874  1.1  riastrad # $outputname - a libtool library file
   10875  1.1  riastrad # Generated by $PROGRAM (GNU $PACKAGE) $VERSION
   10876  1.1  riastrad #
   10877  1.1  riastrad # Please DO NOT delete this file!
   10878  1.1  riastrad # It is necessary for linking the library.
   10879  1.1  riastrad 
   10880  1.1  riastrad # The name that we can dlopen(3).
   10881  1.1  riastrad dlname='$tdlname'
   10882  1.1  riastrad 
   10883  1.1  riastrad # Names of this library.
   10884  1.1  riastrad library_names='$library_names'
   10885  1.1  riastrad 
   10886  1.1  riastrad # The name of the static archive.
   10887  1.1  riastrad old_library='$old_library'
   10888  1.1  riastrad 
   10889  1.1  riastrad # Linker flags that cannot go in dependency_libs.
   10890  1.1  riastrad inherited_linker_flags='$new_inherited_linker_flags'
   10891  1.1  riastrad 
   10892  1.1  riastrad # Libraries that this one depends upon.
   10893  1.1  riastrad dependency_libs='$dependency_libs'
   10894  1.1  riastrad 
   10895  1.1  riastrad # Names of additional weak libraries provided by this library
   10896  1.1  riastrad weak_library_names='$weak_libs'
   10897  1.1  riastrad 
   10898  1.1  riastrad # Version information for $libname.
   10899  1.1  riastrad current=$current
   10900  1.1  riastrad age=$age
   10901  1.1  riastrad revision=$revision
   10902  1.1  riastrad 
   10903  1.1  riastrad # Is this an already installed library?
   10904  1.1  riastrad installed=$installed
   10905  1.1  riastrad 
   10906  1.1  riastrad # Should we warn about portability when linking against -modules?
   10907  1.1  riastrad shouldnotlink=$module
   10908  1.1  riastrad 
   10909  1.1  riastrad # Files to dlopen/dlpreopen
   10910  1.1  riastrad dlopen='$dlfiles'
   10911  1.1  riastrad dlpreopen='$dlprefiles'
   10912  1.1  riastrad 
   10913  1.1  riastrad # Directory that this library needs to be installed in:
   10914  1.1  riastrad libdir='$install_libdir'"
   10915  1.1  riastrad 	  if test no,yes = "$installed,$need_relink"; then
   10916  1.1  riastrad 	    $ECHO >> $output "\
   10917  1.1  riastrad relink_command=\"$relink_command\""
   10918  1.1  riastrad 	  fi
   10919  1.1  riastrad 	done
   10920  1.1  riastrad       }
   10921  1.1  riastrad 
   10922  1.1  riastrad       # Do a symbolic link so that the libtool archive can be found in
   10923  1.1  riastrad       # LD_LIBRARY_PATH before the program is installed.
   10924  1.1  riastrad       func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
   10925  1.1  riastrad       ;;
   10926  1.1  riastrad     esac
   10927  1.1  riastrad     exit $EXIT_SUCCESS
   10928  1.1  riastrad }
   10929  1.1  riastrad 
   10930  1.1  riastrad if test link = "$opt_mode" || test relink = "$opt_mode"; then
   10931  1.1  riastrad   func_mode_link ${1+"$@"}
   10932  1.1  riastrad fi
   10933  1.1  riastrad 
   10934  1.1  riastrad 
   10935  1.1  riastrad # func_mode_uninstall arg...
   10936  1.1  riastrad func_mode_uninstall ()
   10937  1.1  riastrad {
   10938  1.1  riastrad     $debug_cmd
   10939  1.1  riastrad 
   10940  1.1  riastrad     RM=$nonopt
   10941  1.1  riastrad     files=
   10942  1.1  riastrad     rmforce=false
   10943  1.1  riastrad     exit_status=0
   10944  1.1  riastrad 
   10945  1.1  riastrad     # This variable tells wrapper scripts just to set variables rather
   10946  1.1  riastrad     # than running their programs.
   10947  1.1  riastrad     libtool_install_magic=$magic
   10948  1.1  riastrad 
   10949  1.1  riastrad     for arg
   10950  1.1  riastrad     do
   10951  1.1  riastrad       case $arg in
   10952  1.1  riastrad       -f) func_append RM " $arg"; rmforce=: ;;
   10953  1.1  riastrad       -*) func_append RM " $arg" ;;
   10954  1.1  riastrad       *) func_append files " $arg" ;;
   10955  1.1  riastrad       esac
   10956  1.1  riastrad     done
   10957  1.1  riastrad 
   10958  1.1  riastrad     test -z "$RM" && \
   10959  1.1  riastrad       func_fatal_help "you must specify an RM program"
   10960  1.1  riastrad 
   10961  1.1  riastrad     rmdirs=
   10962  1.1  riastrad 
   10963  1.1  riastrad     for file in $files; do
   10964  1.1  riastrad       func_dirname "$file" "" "."
   10965  1.1  riastrad       dir=$func_dirname_result
   10966  1.1  riastrad       if test . = "$dir"; then
   10967  1.1  riastrad 	odir=$objdir
   10968  1.1  riastrad       else
   10969  1.1  riastrad 	odir=$dir/$objdir
   10970  1.1  riastrad       fi
   10971  1.1  riastrad       func_basename "$file"
   10972  1.1  riastrad       name=$func_basename_result
   10973  1.1  riastrad       test uninstall = "$opt_mode" && odir=$dir
   10974  1.1  riastrad 
   10975  1.1  riastrad       # Remember odir for removal later, being careful to avoid duplicates
   10976  1.1  riastrad       if test clean = "$opt_mode"; then
   10977  1.1  riastrad 	case " $rmdirs " in
   10978  1.1  riastrad 	  *" $odir "*) ;;
   10979  1.1  riastrad 	  *) func_append rmdirs " $odir" ;;
   10980  1.1  riastrad 	esac
   10981  1.1  riastrad       fi
   10982  1.1  riastrad 
   10983  1.1  riastrad       # Don't error if the file doesn't exist and rm -f was used.
   10984  1.1  riastrad       if { test -L "$file"; } >/dev/null 2>&1 ||
   10985  1.1  riastrad 	 { test -h "$file"; } >/dev/null 2>&1 ||
   10986  1.1  riastrad 	 test -f "$file"; then
   10987  1.1  riastrad 	:
   10988  1.1  riastrad       elif test -d "$file"; then
   10989  1.1  riastrad 	exit_status=1
   10990  1.1  riastrad 	continue
   10991  1.1  riastrad       elif $rmforce; then
   10992  1.1  riastrad 	continue
   10993  1.1  riastrad       fi
   10994  1.1  riastrad 
   10995  1.1  riastrad       rmfiles=$file
   10996  1.1  riastrad 
   10997  1.1  riastrad       case $name in
   10998  1.1  riastrad       *.la)
   10999  1.1  riastrad 	# Possibly a libtool archive, so verify it.
   11000  1.1  riastrad 	if func_lalib_p "$file"; then
   11001  1.1  riastrad 	  func_source $dir/$name
   11002  1.1  riastrad 
   11003  1.1  riastrad 	  # Delete the libtool libraries and symlinks.
   11004  1.1  riastrad 	  for n in $library_names; do
   11005  1.1  riastrad 	    func_append rmfiles " $odir/$n"
   11006  1.1  riastrad 	  done
   11007  1.1  riastrad 	  test -n "$old_library" && func_append rmfiles " $odir/$old_library"
   11008  1.1  riastrad 
   11009  1.1  riastrad 	  case $opt_mode in
   11010  1.1  riastrad 	  clean)
   11011  1.1  riastrad 	    case " $library_names " in
   11012  1.1  riastrad 	    *" $dlname "*) ;;
   11013  1.1  riastrad 	    *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;;
   11014  1.1  riastrad 	    esac
   11015  1.1  riastrad 	    test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i"
   11016  1.1  riastrad 	    ;;
   11017  1.1  riastrad 	  uninstall)
   11018  1.1  riastrad 	    if test -n "$library_names"; then
   11019  1.1  riastrad 	      # Do each command in the postuninstall commands.
   11020  1.1  riastrad 	      func_execute_cmds "$postuninstall_cmds" '$rmforce || exit_status=1'
   11021  1.1  riastrad 	    fi
   11022  1.1  riastrad 
   11023  1.1  riastrad 	    if test -n "$old_library"; then
   11024  1.1  riastrad 	      # Do each command in the old_postuninstall commands.
   11025  1.1  riastrad 	      func_execute_cmds "$old_postuninstall_cmds" '$rmforce || exit_status=1'
   11026  1.1  riastrad 	    fi
   11027  1.1  riastrad 	    # FIXME: should reinstall the best remaining shared library.
   11028  1.1  riastrad 	    ;;
   11029  1.1  riastrad 	  esac
   11030  1.1  riastrad 	fi
   11031  1.1  riastrad 	;;
   11032  1.1  riastrad 
   11033  1.1  riastrad       *.lo)
   11034  1.1  riastrad 	# Possibly a libtool object, so verify it.
   11035  1.1  riastrad 	if func_lalib_p "$file"; then
   11036  1.1  riastrad 
   11037  1.1  riastrad 	  # Read the .lo file
   11038  1.1  riastrad 	  func_source $dir/$name
   11039  1.1  riastrad 
   11040  1.1  riastrad 	  # Add PIC object to the list of files to remove.
   11041  1.1  riastrad 	  if test -n "$pic_object" && test none != "$pic_object"; then
   11042  1.1  riastrad 	    func_append rmfiles " $dir/$pic_object"
   11043  1.1  riastrad 	  fi
   11044  1.1  riastrad 
   11045  1.1  riastrad 	  # Add non-PIC object to the list of files to remove.
   11046  1.1  riastrad 	  if test -n "$non_pic_object" && test none != "$non_pic_object"; then
   11047  1.1  riastrad 	    func_append rmfiles " $dir/$non_pic_object"
   11048  1.1  riastrad 	  fi
   11049  1.1  riastrad 	fi
   11050  1.1  riastrad 	;;
   11051  1.1  riastrad 
   11052  1.1  riastrad       *)
   11053  1.1  riastrad 	if test clean = "$opt_mode"; then
   11054  1.1  riastrad 	  noexename=$name
   11055  1.1  riastrad 	  case $file in
   11056  1.1  riastrad 	  *.exe)
   11057  1.1  riastrad 	    func_stripname '' '.exe' "$file"
   11058  1.1  riastrad 	    file=$func_stripname_result
   11059  1.1  riastrad 	    func_stripname '' '.exe' "$name"
   11060  1.1  riastrad 	    noexename=$func_stripname_result
   11061  1.1  riastrad 	    # $file with .exe has already been added to rmfiles,
   11062  1.1  riastrad 	    # add $file without .exe
   11063  1.1  riastrad 	    func_append rmfiles " $file"
   11064  1.1  riastrad 	    ;;
   11065  1.1  riastrad 	  esac
   11066  1.1  riastrad 	  # Do a test to see if this is a libtool program.
   11067  1.1  riastrad 	  if func_ltwrapper_p "$file"; then
   11068  1.1  riastrad 	    if func_ltwrapper_executable_p "$file"; then
   11069  1.1  riastrad 	      func_ltwrapper_scriptname "$file"
   11070  1.1  riastrad 	      relink_command=
   11071  1.1  riastrad 	      func_source $func_ltwrapper_scriptname_result
   11072  1.1  riastrad 	      func_append rmfiles " $func_ltwrapper_scriptname_result"
   11073  1.1  riastrad 	    else
   11074  1.1  riastrad 	      relink_command=
   11075  1.1  riastrad 	      func_source $dir/$noexename
   11076  1.1  riastrad 	    fi
   11077  1.1  riastrad 
   11078  1.1  riastrad 	    # note $name still contains .exe if it was in $file originally
   11079  1.1  riastrad 	    # as does the version of $file that was added into $rmfiles
   11080  1.1  riastrad 	    func_append rmfiles " $odir/$name $odir/${name}S.$objext"
   11081  1.1  riastrad 	    if test yes = "$fast_install" && test -n "$relink_command"; then
   11082  1.1  riastrad 	      func_append rmfiles " $odir/lt-$name"
   11083  1.1  riastrad 	    fi
   11084  1.1  riastrad 	    if test "X$noexename" != "X$name"; then
   11085  1.1  riastrad 	      func_append rmfiles " $odir/lt-$noexename.c"
   11086  1.1  riastrad 	    fi
   11087  1.1  riastrad 	  fi
   11088  1.1  riastrad 	fi
   11089  1.1  riastrad 	;;
   11090  1.1  riastrad       esac
   11091  1.1  riastrad       func_show_eval "$RM $rmfiles" 'exit_status=1'
   11092  1.1  riastrad     done
   11093  1.1  riastrad 
   11094  1.1  riastrad     # Try to remove the $objdir's in the directories where we deleted files
   11095  1.1  riastrad     for dir in $rmdirs; do
   11096  1.1  riastrad       if test -d "$dir"; then
   11097  1.1  riastrad 	func_show_eval "rmdir $dir >/dev/null 2>&1"
   11098  1.1  riastrad       fi
   11099  1.1  riastrad     done
   11100  1.1  riastrad 
   11101  1.1  riastrad     exit $exit_status
   11102  1.1  riastrad }
   11103  1.1  riastrad 
   11104  1.1  riastrad if test uninstall = "$opt_mode" || test clean = "$opt_mode"; then
   11105  1.1  riastrad   func_mode_uninstall ${1+"$@"}
   11106  1.1  riastrad fi
   11107  1.1  riastrad 
   11108  1.1  riastrad test -z "$opt_mode" && {
   11109  1.1  riastrad   help=$generic_help
   11110  1.1  riastrad   func_fatal_help "you must specify a MODE"
   11111  1.1  riastrad }
   11112  1.1  riastrad 
   11113  1.1  riastrad test -z "$exec_cmd" && \
   11114  1.1  riastrad   func_fatal_help "invalid operation mode '$opt_mode'"
   11115  1.1  riastrad 
   11116  1.1  riastrad if test -n "$exec_cmd"; then
   11117  1.1  riastrad   eval exec "$exec_cmd"
   11118  1.1  riastrad   exit $EXIT_FAILURE
   11119  1.1  riastrad fi
   11120  1.1  riastrad 
   11121  1.1  riastrad exit $exit_status
   11122  1.1  riastrad 
   11123  1.1  riastrad 
   11124  1.1  riastrad # The TAGs below are defined such that we never get into a situation
   11125  1.1  riastrad # where we disable both kinds of libraries.  Given conflicting
   11126  1.1  riastrad # choices, we go for a static library, that is the most portable,
   11127  1.1  riastrad # since we can't tell whether shared libraries were disabled because
   11128  1.1  riastrad # the user asked for that or because the platform doesn't support
   11129  1.1  riastrad # them.  This is particularly important on AIX, because we don't
   11130  1.1  riastrad # support having both static and shared libraries enabled at the same
   11131  1.1  riastrad # time on that platform, so we default to a shared-only configuration.
   11132  1.1  riastrad # If a disable-shared tag is given, we'll fallback to a static-only
   11133  1.1  riastrad # configuration.  But we'll never go from static-only to shared-only.
   11134  1.1  riastrad 
   11135  1.1  riastrad # ### BEGIN LIBTOOL TAG CONFIG: disable-shared
   11136  1.1  riastrad build_libtool_libs=no
   11137  1.1  riastrad build_old_libs=yes
   11138  1.1  riastrad # ### END LIBTOOL TAG CONFIG: disable-shared
   11139  1.1  riastrad 
   11140  1.1  riastrad # ### BEGIN LIBTOOL TAG CONFIG: disable-static
   11141  1.1  riastrad build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
   11142  1.1  riastrad # ### END LIBTOOL TAG CONFIG: disable-static
   11143  1.1  riastrad 
   11144  1.1  riastrad # Local Variables:
   11145  1.1  riastrad # mode:shell-script
   11146  1.1  riastrad # sh-indentation:2
   11147  1.1  riastrad # End:
   11148