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