xref: /freebsd/contrib/openpam/ltmain.sh (revision 02e9120893770924227138ba49df1edb3896112a)
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.4.7
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-2022 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.4.7
35package_revision=2.4.7
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 Bootstrap Authors
76#
77# This file is dual licensed under the terms of the MIT license
78# <https://opensource.org/license/MIT>, and GPL version 2 or later
79# <http://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 retarded 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  # useable 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 retuned 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 incase 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 Bootstrap Authors
1540#
1541# This file is dual licensed under the terms of the MIT license
1542# <https://opensource.org/license/MIT>, and GPL version 2 or later
1543# <http://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.4.7'
2219
2220
2221# func_echo ARG...
2222# ----------------
2223# Libtool also displays the current mode in messages, so override
2224# funclib.sh func_echo with this custom definition.
2225func_echo ()
2226{
2227    $debug_cmd
2228
2229    _G_message=$*
2230
2231    func_echo_IFS=$IFS
2232    IFS=$nl
2233    for _G_line in $_G_message; do
2234      IFS=$func_echo_IFS
2235      $ECHO "$progname${opt_mode+: $opt_mode}: $_G_line"
2236    done
2237    IFS=$func_echo_IFS
2238}
2239
2240
2241# func_warning ARG...
2242# -------------------
2243# Libtool warnings are not categorized, so override funclib.sh
2244# func_warning with this simpler definition.
2245func_warning ()
2246{
2247    $debug_cmd
2248
2249    $warning_func ${1+"$@"}
2250}
2251
2252
2253## ---------------- ##
2254## Options parsing. ##
2255## ---------------- ##
2256
2257# Hook in the functions to make sure our own options are parsed during
2258# the option parsing loop.
2259
2260usage='$progpath [OPTION]... [MODE-ARG]...'
2261
2262# Short help message in response to '-h'.
2263usage_message="Options:
2264       --config             show all configuration variables
2265       --debug              enable verbose shell tracing
2266   -n, --dry-run            display commands without modifying any files
2267       --features           display basic configuration information and exit
2268       --mode=MODE          use operation mode MODE
2269       --no-warnings        equivalent to '-Wnone'
2270       --preserve-dup-deps  don't remove duplicate dependency libraries
2271       --quiet, --silent    don't print informational messages
2272       --tag=TAG            use configuration variables from tag TAG
2273   -v, --verbose            print more informational messages than default
2274       --version            print version information
2275   -W, --warnings=CATEGORY  report the warnings falling in CATEGORY [all]
2276   -h, --help, --help-all   print short, long, or detailed help message
2277"
2278
2279# Additional text appended to 'usage_message' in response to '--help'.
2280func_help ()
2281{
2282    $debug_cmd
2283
2284    func_usage_message
2285    $ECHO "$long_help_message
2286
2287MODE must be one of the following:
2288
2289       clean           remove files from the build directory
2290       compile         compile a source file into a libtool object
2291       execute         automatically set library path, then run a program
2292       finish          complete the installation of libtool libraries
2293       install         install libraries or executables
2294       link            create a library or an executable
2295       uninstall       remove libraries from an installed directory
2296
2297MODE-ARGS vary depending on the MODE.  When passed as first option,
2298'--mode=MODE' may be abbreviated as 'MODE' or a unique abbreviation of that.
2299Try '$progname --help --mode=MODE' for a more detailed description of MODE.
2300
2301When reporting a bug, please describe a test case to reproduce it and
2302include the following information:
2303
2304       host-triplet:   $host
2305       shell:          $SHELL
2306       compiler:       $LTCC
2307       compiler flags: $LTCFLAGS
2308       linker:         $LD (gnu? $with_gnu_ld)
2309       version:        $progname (GNU libtool) 2.4.7
2310       automake:       `($AUTOMAKE --version) 2>/dev/null |$SED 1q`
2311       autoconf:       `($AUTOCONF --version) 2>/dev/null |$SED 1q`
2312
2313Report bugs to <bug-libtool@gnu.org>.
2314GNU libtool home page: <http://www.gnu.org/software/libtool/>.
2315General help using GNU software: <http://www.gnu.org/gethelp/>."
2316    exit 0
2317}
2318
2319
2320# func_lo2o OBJECT-NAME
2321# ---------------------
2322# Transform OBJECT-NAME from a '.lo' suffix to the platform specific
2323# object suffix.
2324
2325lo2o=s/\\.lo\$/.$objext/
2326o2lo=s/\\.$objext\$/.lo/
2327
2328if test yes = "$_G_HAVE_XSI_OPS"; then
2329  eval 'func_lo2o ()
2330  {
2331    case $1 in
2332      *.lo) func_lo2o_result=${1%.lo}.$objext ;;
2333      *   ) func_lo2o_result=$1               ;;
2334    esac
2335  }'
2336
2337  # func_xform LIBOBJ-OR-SOURCE
2338  # ---------------------------
2339  # Transform LIBOBJ-OR-SOURCE from a '.o' or '.c' (or otherwise)
2340  # suffix to a '.lo' libtool-object suffix.
2341  eval 'func_xform ()
2342  {
2343    func_xform_result=${1%.*}.lo
2344  }'
2345else
2346  # ...otherwise fall back to using sed.
2347  func_lo2o ()
2348  {
2349    func_lo2o_result=`$ECHO "$1" | $SED "$lo2o"`
2350  }
2351
2352  func_xform ()
2353  {
2354    func_xform_result=`$ECHO "$1" | $SED 's|\.[^.]*$|.lo|'`
2355  }
2356fi
2357
2358
2359# func_fatal_configuration ARG...
2360# -------------------------------
2361# Echo program name prefixed message to standard error, followed by
2362# a configuration failure hint, and exit.
2363func_fatal_configuration ()
2364{
2365    func_fatal_error ${1+"$@"} \
2366      "See the $PACKAGE documentation for more information." \
2367      "Fatal configuration error."
2368}
2369
2370
2371# func_config
2372# -----------
2373# Display the configuration for all the tags in this script.
2374func_config ()
2375{
2376    re_begincf='^# ### BEGIN LIBTOOL'
2377    re_endcf='^# ### END LIBTOOL'
2378
2379    # Default configuration.
2380    $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
2381
2382    # Now print the configurations for the tags.
2383    for tagname in $taglist; do
2384      $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
2385    done
2386
2387    exit $?
2388}
2389
2390
2391# func_features
2392# -------------
2393# Display the features supported by this script.
2394func_features ()
2395{
2396    echo "host: $host"
2397    if test yes = "$build_libtool_libs"; then
2398      echo "enable shared libraries"
2399    else
2400      echo "disable shared libraries"
2401    fi
2402    if test yes = "$build_old_libs"; then
2403      echo "enable static libraries"
2404    else
2405      echo "disable static libraries"
2406    fi
2407
2408    exit $?
2409}
2410
2411
2412# func_enable_tag TAGNAME
2413# -----------------------
2414# Verify that TAGNAME is valid, and either flag an error and exit, or
2415# enable the TAGNAME tag.  We also add TAGNAME to the global $taglist
2416# variable here.
2417func_enable_tag ()
2418{
2419    # Global variable:
2420    tagname=$1
2421
2422    re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
2423    re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
2424    sed_extractcf=/$re_begincf/,/$re_endcf/p
2425
2426    # Validate tagname.
2427    case $tagname in
2428      *[!-_A-Za-z0-9,/]*)
2429        func_fatal_error "invalid tag name: $tagname"
2430        ;;
2431    esac
2432
2433    # Don't test for the "default" C tag, as we know it's
2434    # there but not specially marked.
2435    case $tagname in
2436        CC) ;;
2437    *)
2438        if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
2439	  taglist="$taglist $tagname"
2440
2441	  # Evaluate the configuration.  Be careful to quote the path
2442	  # and the sed script, to avoid splitting on whitespace, but
2443	  # also don't use non-portable quotes within backquotes within
2444	  # quotes we have to do it in 2 steps:
2445	  extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
2446	  eval "$extractedcf"
2447        else
2448	  func_error "ignoring unknown tag $tagname"
2449        fi
2450        ;;
2451    esac
2452}
2453
2454
2455# func_check_version_match
2456# ------------------------
2457# Ensure that we are using m4 macros, and libtool script from the same
2458# release of libtool.
2459func_check_version_match ()
2460{
2461    if test "$package_revision" != "$macro_revision"; then
2462      if test "$VERSION" != "$macro_version"; then
2463        if test -z "$macro_version"; then
2464          cat >&2 <<_LT_EOF
2465$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
2466$progname: definition of this LT_INIT comes from an older release.
2467$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
2468$progname: and run autoconf again.
2469_LT_EOF
2470        else
2471          cat >&2 <<_LT_EOF
2472$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
2473$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
2474$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
2475$progname: and run autoconf again.
2476_LT_EOF
2477        fi
2478      else
2479        cat >&2 <<_LT_EOF
2480$progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision,
2481$progname: but the definition of this LT_INIT comes from revision $macro_revision.
2482$progname: You should recreate aclocal.m4 with macros from revision $package_revision
2483$progname: of $PACKAGE $VERSION and run autoconf again.
2484_LT_EOF
2485      fi
2486
2487      exit $EXIT_MISMATCH
2488    fi
2489}
2490
2491
2492# libtool_options_prep [ARG]...
2493# -----------------------------
2494# Preparation for options parsed by libtool.
2495libtool_options_prep ()
2496{
2497    $debug_mode
2498
2499    # Option defaults:
2500    opt_config=false
2501    opt_dlopen=
2502    opt_dry_run=false
2503    opt_help=false
2504    opt_mode=
2505    opt_preserve_dup_deps=false
2506    opt_quiet=false
2507
2508    nonopt=
2509    preserve_args=
2510
2511    _G_rc_lt_options_prep=:
2512
2513    # Shorthand for --mode=foo, only valid as the first argument
2514    case $1 in
2515    clean|clea|cle|cl)
2516      shift; set dummy --mode clean ${1+"$@"}; shift
2517      ;;
2518    compile|compil|compi|comp|com|co|c)
2519      shift; set dummy --mode compile ${1+"$@"}; shift
2520      ;;
2521    execute|execut|execu|exec|exe|ex|e)
2522      shift; set dummy --mode execute ${1+"$@"}; shift
2523      ;;
2524    finish|finis|fini|fin|fi|f)
2525      shift; set dummy --mode finish ${1+"$@"}; shift
2526      ;;
2527    install|instal|insta|inst|ins|in|i)
2528      shift; set dummy --mode install ${1+"$@"}; shift
2529      ;;
2530    link|lin|li|l)
2531      shift; set dummy --mode link ${1+"$@"}; shift
2532      ;;
2533    uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
2534      shift; set dummy --mode uninstall ${1+"$@"}; shift
2535      ;;
2536    *)
2537      _G_rc_lt_options_prep=false
2538      ;;
2539    esac
2540
2541    if $_G_rc_lt_options_prep; then
2542      # Pass back the list of options.
2543      func_quote eval ${1+"$@"}
2544      libtool_options_prep_result=$func_quote_result
2545    fi
2546}
2547func_add_hook func_options_prep libtool_options_prep
2548
2549
2550# libtool_parse_options [ARG]...
2551# ---------------------------------
2552# Provide handling for libtool specific options.
2553libtool_parse_options ()
2554{
2555    $debug_cmd
2556
2557    _G_rc_lt_parse_options=false
2558
2559    # Perform our own loop to consume as many options as possible in
2560    # each iteration.
2561    while test $# -gt 0; do
2562      _G_match_lt_parse_options=:
2563      _G_opt=$1
2564      shift
2565      case $_G_opt in
2566        --dry-run|--dryrun|-n)
2567                        opt_dry_run=:
2568                        ;;
2569
2570        --config)       func_config ;;
2571
2572        --dlopen|-dlopen)
2573                        opt_dlopen="${opt_dlopen+$opt_dlopen
2574}$1"
2575                        shift
2576                        ;;
2577
2578        --preserve-dup-deps)
2579                        opt_preserve_dup_deps=: ;;
2580
2581        --features)     func_features ;;
2582
2583        --finish)       set dummy --mode finish ${1+"$@"}; shift ;;
2584
2585        --help)         opt_help=: ;;
2586
2587        --help-all)     opt_help=': help-all' ;;
2588
2589        --mode)         test $# = 0 && func_missing_arg $_G_opt && break
2590                        opt_mode=$1
2591                        case $1 in
2592                          # Valid mode arguments:
2593                          clean|compile|execute|finish|install|link|relink|uninstall) ;;
2594
2595                          # Catch anything else as an error
2596                          *) func_error "invalid argument for $_G_opt"
2597                             exit_cmd=exit
2598                             break
2599                             ;;
2600                        esac
2601                        shift
2602                        ;;
2603
2604        --no-silent|--no-quiet)
2605                        opt_quiet=false
2606                        func_append preserve_args " $_G_opt"
2607                        ;;
2608
2609        --no-warnings|--no-warning|--no-warn)
2610                        opt_warning=false
2611                        func_append preserve_args " $_G_opt"
2612                        ;;
2613
2614        --no-verbose)
2615                        opt_verbose=false
2616                        func_append preserve_args " $_G_opt"
2617                        ;;
2618
2619        --silent|--quiet)
2620                        opt_quiet=:
2621                        opt_verbose=false
2622                        func_append preserve_args " $_G_opt"
2623                        ;;
2624
2625        --tag)          test $# = 0 && func_missing_arg $_G_opt && break
2626                        opt_tag=$1
2627                        func_append preserve_args " $_G_opt $1"
2628                        func_enable_tag "$1"
2629                        shift
2630                        ;;
2631
2632        --verbose|-v)   opt_quiet=false
2633                        opt_verbose=:
2634                        func_append preserve_args " $_G_opt"
2635                        ;;
2636
2637        # An option not handled by this hook function:
2638        *)              set dummy "$_G_opt" ${1+"$@"} ; shift
2639                        _G_match_lt_parse_options=false
2640                        break
2641                        ;;
2642      esac
2643      $_G_match_lt_parse_options && _G_rc_lt_parse_options=:
2644    done
2645
2646    if $_G_rc_lt_parse_options; then
2647      # save modified positional parameters for caller
2648      func_quote eval ${1+"$@"}
2649      libtool_parse_options_result=$func_quote_result
2650    fi
2651}
2652func_add_hook func_parse_options libtool_parse_options
2653
2654
2655
2656# libtool_validate_options [ARG]...
2657# ---------------------------------
2658# Perform any sanity checks on option settings and/or unconsumed
2659# arguments.
2660libtool_validate_options ()
2661{
2662    # save first non-option argument
2663    if test 0 -lt $#; then
2664      nonopt=$1
2665      shift
2666    fi
2667
2668    # preserve --debug
2669    test : = "$debug_cmd" || func_append preserve_args " --debug"
2670
2671    case $host in
2672      # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452
2673      # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788
2674      *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* | *os2*)
2675        # don't eliminate duplications in $postdeps and $predeps
2676        opt_duplicate_compiler_generated_deps=:
2677        ;;
2678      *)
2679        opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps
2680        ;;
2681    esac
2682
2683    $opt_help || {
2684      # Sanity checks first:
2685      func_check_version_match
2686
2687      test yes != "$build_libtool_libs" \
2688        && test yes != "$build_old_libs" \
2689        && func_fatal_configuration "not configured to build any kind of library"
2690
2691      # Darwin sucks
2692      eval std_shrext=\"$shrext_cmds\"
2693
2694      # Only execute mode is allowed to have -dlopen flags.
2695      if test -n "$opt_dlopen" && test execute != "$opt_mode"; then
2696        func_error "unrecognized option '-dlopen'"
2697        $ECHO "$help" 1>&2
2698        exit $EXIT_FAILURE
2699      fi
2700
2701      # Change the help message to a mode-specific one.
2702      generic_help=$help
2703      help="Try '$progname --help --mode=$opt_mode' for more information."
2704    }
2705
2706    # Pass back the unparsed argument list
2707    func_quote eval ${1+"$@"}
2708    libtool_validate_options_result=$func_quote_result
2709}
2710func_add_hook func_validate_options libtool_validate_options
2711
2712
2713# Process options as early as possible so that --help and --version
2714# can return quickly.
2715func_options ${1+"$@"}
2716eval set dummy "$func_options_result"; shift
2717
2718
2719
2720## ----------- ##
2721##    Main.    ##
2722## ----------- ##
2723
2724magic='%%%MAGIC variable%%%'
2725magic_exe='%%%MAGIC EXE variable%%%'
2726
2727# Global variables.
2728extracted_archives=
2729extracted_serial=0
2730
2731# If this variable is set in any of the actions, the command in it
2732# will be execed at the end.  This prevents here-documents from being
2733# left over by shells.
2734exec_cmd=
2735
2736
2737# A function that is used when there is no print builtin or printf.
2738func_fallback_echo ()
2739{
2740  eval 'cat <<_LTECHO_EOF
2741$1
2742_LTECHO_EOF'
2743}
2744
2745# func_generated_by_libtool
2746# True iff stdin has been generated by Libtool. This function is only
2747# a basic sanity check; it will hardly flush out determined imposters.
2748func_generated_by_libtool_p ()
2749{
2750  $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
2751}
2752
2753# func_lalib_p file
2754# True iff FILE is a libtool '.la' library or '.lo' object file.
2755# This function is only a basic sanity check; it will hardly flush out
2756# determined imposters.
2757func_lalib_p ()
2758{
2759    test -f "$1" &&
2760      $SED -e 4q "$1" 2>/dev/null | func_generated_by_libtool_p
2761}
2762
2763# func_lalib_unsafe_p file
2764# True iff FILE is a libtool '.la' library or '.lo' object file.
2765# This function implements the same check as func_lalib_p without
2766# resorting to external programs.  To this end, it redirects stdin and
2767# closes it afterwards, without saving the original file descriptor.
2768# As a safety measure, use it only where a negative result would be
2769# fatal anyway.  Works if 'file' does not exist.
2770func_lalib_unsafe_p ()
2771{
2772    lalib_p=no
2773    if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
2774	for lalib_p_l in 1 2 3 4
2775	do
2776	    read lalib_p_line
2777	    case $lalib_p_line in
2778		\#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
2779	    esac
2780	done
2781	exec 0<&5 5<&-
2782    fi
2783    test yes = "$lalib_p"
2784}
2785
2786# func_ltwrapper_script_p file
2787# True iff FILE is a libtool wrapper script
2788# This function is only a basic sanity check; it will hardly flush out
2789# determined imposters.
2790func_ltwrapper_script_p ()
2791{
2792    test -f "$1" &&
2793      $lt_truncate_bin < "$1" 2>/dev/null | func_generated_by_libtool_p
2794}
2795
2796# func_ltwrapper_executable_p file
2797# True iff FILE is a libtool wrapper executable
2798# This function is only a basic sanity check; it will hardly flush out
2799# determined imposters.
2800func_ltwrapper_executable_p ()
2801{
2802    func_ltwrapper_exec_suffix=
2803    case $1 in
2804    *.exe) ;;
2805    *) func_ltwrapper_exec_suffix=.exe ;;
2806    esac
2807    $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
2808}
2809
2810# func_ltwrapper_scriptname file
2811# Assumes file is an ltwrapper_executable
2812# uses $file to determine the appropriate filename for a
2813# temporary ltwrapper_script.
2814func_ltwrapper_scriptname ()
2815{
2816    func_dirname_and_basename "$1" "" "."
2817    func_stripname '' '.exe' "$func_basename_result"
2818    func_ltwrapper_scriptname_result=$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper
2819}
2820
2821# func_ltwrapper_p file
2822# True iff FILE is a libtool wrapper script or wrapper executable
2823# This function is only a basic sanity check; it will hardly flush out
2824# determined imposters.
2825func_ltwrapper_p ()
2826{
2827    func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
2828}
2829
2830
2831# func_execute_cmds commands fail_cmd
2832# Execute tilde-delimited COMMANDS.
2833# If FAIL_CMD is given, eval that upon failure.
2834# FAIL_CMD may read-access the current command in variable CMD!
2835func_execute_cmds ()
2836{
2837    $debug_cmd
2838
2839    save_ifs=$IFS; IFS='~'
2840    for cmd in $1; do
2841      IFS=$sp$nl
2842      eval cmd=\"$cmd\"
2843      IFS=$save_ifs
2844      func_show_eval "$cmd" "${2-:}"
2845    done
2846    IFS=$save_ifs
2847}
2848
2849
2850# func_source file
2851# Source FILE, adding directory component if necessary.
2852# Note that it is not necessary on cygwin/mingw to append a dot to
2853# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
2854# behavior happens only for exec(3), not for open(2)!  Also, sourcing
2855# 'FILE.' does not work on cygwin managed mounts.
2856func_source ()
2857{
2858    $debug_cmd
2859
2860    case $1 in
2861    */* | *\\*)	. "$1" ;;
2862    *)		. "./$1" ;;
2863    esac
2864}
2865
2866
2867# func_resolve_sysroot PATH
2868# Replace a leading = in PATH with a sysroot.  Store the result into
2869# func_resolve_sysroot_result
2870func_resolve_sysroot ()
2871{
2872  func_resolve_sysroot_result=$1
2873  case $func_resolve_sysroot_result in
2874  =*)
2875    func_stripname '=' '' "$func_resolve_sysroot_result"
2876    func_resolve_sysroot_result=$lt_sysroot$func_stripname_result
2877    ;;
2878  esac
2879}
2880
2881# func_replace_sysroot PATH
2882# If PATH begins with the sysroot, replace it with = and
2883# store the result into func_replace_sysroot_result.
2884func_replace_sysroot ()
2885{
2886  case $lt_sysroot:$1 in
2887  ?*:"$lt_sysroot"*)
2888    func_stripname "$lt_sysroot" '' "$1"
2889    func_replace_sysroot_result='='$func_stripname_result
2890    ;;
2891  *)
2892    # Including no sysroot.
2893    func_replace_sysroot_result=$1
2894    ;;
2895  esac
2896}
2897
2898# func_infer_tag arg
2899# Infer tagged configuration to use if any are available and
2900# if one wasn't chosen via the "--tag" command line option.
2901# Only attempt this if the compiler in the base compile
2902# command doesn't match the default compiler.
2903# arg is usually of the form 'gcc ...'
2904func_infer_tag ()
2905{
2906    $debug_cmd
2907
2908    if test -n "$available_tags" && test -z "$tagname"; then
2909      CC_quoted=
2910      for arg in $CC; do
2911	func_append_quoted CC_quoted "$arg"
2912      done
2913      CC_expanded=`func_echo_all $CC`
2914      CC_quoted_expanded=`func_echo_all $CC_quoted`
2915      case $@ in
2916      # Blanks in the command may have been stripped by the calling shell,
2917      # but not from the CC environment variable when configure was run.
2918      " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
2919      " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;;
2920      # Blanks at the start of $base_compile will cause this to fail
2921      # if we don't check for them as well.
2922      *)
2923	for z in $available_tags; do
2924	  if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
2925	    # Evaluate the configuration.
2926	    eval "`$SED -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
2927	    CC_quoted=
2928	    for arg in $CC; do
2929	      # Double-quote args containing other shell metacharacters.
2930	      func_append_quoted CC_quoted "$arg"
2931	    done
2932	    CC_expanded=`func_echo_all $CC`
2933	    CC_quoted_expanded=`func_echo_all $CC_quoted`
2934	    case "$@ " in
2935	    " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
2936	    " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*)
2937	      # The compiler in the base compile command matches
2938	      # the one in the tagged configuration.
2939	      # Assume this is the tagged configuration we want.
2940	      tagname=$z
2941	      break
2942	      ;;
2943	    esac
2944	  fi
2945	done
2946	# If $tagname still isn't set, then no tagged configuration
2947	# was found and let the user know that the "--tag" command
2948	# line option must be used.
2949	if test -z "$tagname"; then
2950	  func_echo "unable to infer tagged configuration"
2951	  func_fatal_error "specify a tag with '--tag'"
2952#	else
2953#	  func_verbose "using $tagname tagged configuration"
2954	fi
2955	;;
2956      esac
2957    fi
2958}
2959
2960
2961
2962# func_write_libtool_object output_name pic_name nonpic_name
2963# Create a libtool object file (analogous to a ".la" file),
2964# but don't create it if we're doing a dry run.
2965func_write_libtool_object ()
2966{
2967    write_libobj=$1
2968    if test yes = "$build_libtool_libs"; then
2969      write_lobj=\'$2\'
2970    else
2971      write_lobj=none
2972    fi
2973
2974    if test yes = "$build_old_libs"; then
2975      write_oldobj=\'$3\'
2976    else
2977      write_oldobj=none
2978    fi
2979
2980    $opt_dry_run || {
2981      cat >${write_libobj}T <<EOF
2982# $write_libobj - a libtool object file
2983# Generated by $PROGRAM (GNU $PACKAGE) $VERSION
2984#
2985# Please DO NOT delete this file!
2986# It is necessary for linking the library.
2987
2988# Name of the PIC object.
2989pic_object=$write_lobj
2990
2991# Name of the non-PIC object
2992non_pic_object=$write_oldobj
2993
2994EOF
2995      $MV "${write_libobj}T" "$write_libobj"
2996    }
2997}
2998
2999
3000##################################################
3001# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS #
3002##################################################
3003
3004# func_convert_core_file_wine_to_w32 ARG
3005# Helper function used by file name conversion functions when $build is *nix,
3006# and $host is mingw, cygwin, or some other w32 environment. Relies on a
3007# correctly configured wine environment available, with the winepath program
3008# in $build's $PATH.
3009#
3010# ARG is the $build file name to be converted to w32 format.
3011# Result is available in $func_convert_core_file_wine_to_w32_result, and will
3012# be empty on error (or when ARG is empty)
3013func_convert_core_file_wine_to_w32 ()
3014{
3015  $debug_cmd
3016
3017  func_convert_core_file_wine_to_w32_result=$1
3018  if test -n "$1"; then
3019    # Unfortunately, winepath does not exit with a non-zero error code, so we
3020    # are forced to check the contents of stdout. On the other hand, if the
3021    # command is not found, the shell will set an exit code of 127 and print
3022    # *an error message* to stdout. So we must check for both error code of
3023    # zero AND non-empty stdout, which explains the odd construction:
3024    func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null`
3025    if test "$?" -eq 0 && test -n "$func_convert_core_file_wine_to_w32_tmp"; then
3026      func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" |
3027        $SED -e "$sed_naive_backslashify"`
3028    else
3029      func_convert_core_file_wine_to_w32_result=
3030    fi
3031  fi
3032}
3033# end: func_convert_core_file_wine_to_w32
3034
3035
3036# func_convert_core_path_wine_to_w32 ARG
3037# Helper function used by path conversion functions when $build is *nix, and
3038# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly
3039# configured wine environment available, with the winepath program in $build's
3040# $PATH. Assumes ARG has no leading or trailing path separator characters.
3041#
3042# ARG is path to be converted from $build format to win32.
3043# Result is available in $func_convert_core_path_wine_to_w32_result.
3044# Unconvertible file (directory) names in ARG are skipped; if no directory names
3045# are convertible, then the result may be empty.
3046func_convert_core_path_wine_to_w32 ()
3047{
3048  $debug_cmd
3049
3050  # unfortunately, winepath doesn't convert paths, only file names
3051  func_convert_core_path_wine_to_w32_result=
3052  if test -n "$1"; then
3053    oldIFS=$IFS
3054    IFS=:
3055    for func_convert_core_path_wine_to_w32_f in $1; do
3056      IFS=$oldIFS
3057      func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f"
3058      if test -n "$func_convert_core_file_wine_to_w32_result"; then
3059        if test -z "$func_convert_core_path_wine_to_w32_result"; then
3060          func_convert_core_path_wine_to_w32_result=$func_convert_core_file_wine_to_w32_result
3061        else
3062          func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result"
3063        fi
3064      fi
3065    done
3066    IFS=$oldIFS
3067  fi
3068}
3069# end: func_convert_core_path_wine_to_w32
3070
3071
3072# func_cygpath ARGS...
3073# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when
3074# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2)
3075# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or
3076# (2), returns the Cygwin file name or path in func_cygpath_result (input
3077# file name or path is assumed to be in w32 format, as previously converted
3078# from $build's *nix or MSYS format). In case (3), returns the w32 file name
3079# or path in func_cygpath_result (input file name or path is assumed to be in
3080# Cygwin format). Returns an empty string on error.
3081#
3082# ARGS are passed to cygpath, with the last one being the file name or path to
3083# be converted.
3084#
3085# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH
3086# environment variable; do not put it in $PATH.
3087func_cygpath ()
3088{
3089  $debug_cmd
3090
3091  if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then
3092    func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null`
3093    if test "$?" -ne 0; then
3094      # on failure, ensure result is empty
3095      func_cygpath_result=
3096    fi
3097  else
3098    func_cygpath_result=
3099    func_error "LT_CYGPATH is empty or specifies non-existent file: '$LT_CYGPATH'"
3100  fi
3101}
3102#end: func_cygpath
3103
3104
3105# func_convert_core_msys_to_w32 ARG
3106# Convert file name or path ARG from MSYS format to w32 format.  Return
3107# result in func_convert_core_msys_to_w32_result.
3108func_convert_core_msys_to_w32 ()
3109{
3110  $debug_cmd
3111
3112  # awkward: cmd appends spaces to result
3113  func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null |
3114    $SED -e 's/[ ]*$//' -e "$sed_naive_backslashify"`
3115}
3116#end: func_convert_core_msys_to_w32
3117
3118
3119# func_convert_file_check ARG1 ARG2
3120# Verify that ARG1 (a file name in $build format) was converted to $host
3121# format in ARG2. Otherwise, emit an error message, but continue (resetting
3122# func_to_host_file_result to ARG1).
3123func_convert_file_check ()
3124{
3125  $debug_cmd
3126
3127  if test -z "$2" && test -n "$1"; then
3128    func_error "Could not determine host file name corresponding to"
3129    func_error "  '$1'"
3130    func_error "Continuing, but uninstalled executables may not work."
3131    # Fallback:
3132    func_to_host_file_result=$1
3133  fi
3134}
3135# end func_convert_file_check
3136
3137
3138# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH
3139# Verify that FROM_PATH (a path in $build format) was converted to $host
3140# format in TO_PATH. Otherwise, emit an error message, but continue, resetting
3141# func_to_host_file_result to a simplistic fallback value (see below).
3142func_convert_path_check ()
3143{
3144  $debug_cmd
3145
3146  if test -z "$4" && test -n "$3"; then
3147    func_error "Could not determine the host path corresponding to"
3148    func_error "  '$3'"
3149    func_error "Continuing, but uninstalled executables may not work."
3150    # Fallback.  This is a deliberately simplistic "conversion" and
3151    # should not be "improved".  See libtool.info.
3152    if test "x$1" != "x$2"; then
3153      lt_replace_pathsep_chars="s|$1|$2|g"
3154      func_to_host_path_result=`echo "$3" |
3155        $SED -e "$lt_replace_pathsep_chars"`
3156    else
3157      func_to_host_path_result=$3
3158    fi
3159  fi
3160}
3161# end func_convert_path_check
3162
3163
3164# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG
3165# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT
3166# and appending REPL if ORIG matches BACKPAT.
3167func_convert_path_front_back_pathsep ()
3168{
3169  $debug_cmd
3170
3171  case $4 in
3172  $1 ) func_to_host_path_result=$3$func_to_host_path_result
3173    ;;
3174  esac
3175  case $4 in
3176  $2 ) func_append func_to_host_path_result "$3"
3177    ;;
3178  esac
3179}
3180# end func_convert_path_front_back_pathsep
3181
3182
3183##################################################
3184# $build to $host FILE NAME CONVERSION FUNCTIONS #
3185##################################################
3186# invoked via '$to_host_file_cmd ARG'
3187#
3188# In each case, ARG is the path to be converted from $build to $host format.
3189# Result will be available in $func_to_host_file_result.
3190
3191
3192# func_to_host_file ARG
3193# Converts the file name ARG from $build format to $host format. Return result
3194# in func_to_host_file_result.
3195func_to_host_file ()
3196{
3197  $debug_cmd
3198
3199  $to_host_file_cmd "$1"
3200}
3201# end func_to_host_file
3202
3203
3204# func_to_tool_file ARG LAZY
3205# converts the file name ARG from $build format to toolchain format. Return
3206# result in func_to_tool_file_result.  If the conversion in use is listed
3207# in (the comma separated) LAZY, no conversion takes place.
3208func_to_tool_file ()
3209{
3210  $debug_cmd
3211
3212  case ,$2, in
3213    *,"$to_tool_file_cmd",*)
3214      func_to_tool_file_result=$1
3215      ;;
3216    *)
3217      $to_tool_file_cmd "$1"
3218      func_to_tool_file_result=$func_to_host_file_result
3219      ;;
3220  esac
3221}
3222# end func_to_tool_file
3223
3224
3225# func_convert_file_noop ARG
3226# Copy ARG to func_to_host_file_result.
3227func_convert_file_noop ()
3228{
3229  func_to_host_file_result=$1
3230}
3231# end func_convert_file_noop
3232
3233
3234# func_convert_file_msys_to_w32 ARG
3235# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic
3236# conversion to w32 is not available inside the cwrapper.  Returns result in
3237# func_to_host_file_result.
3238func_convert_file_msys_to_w32 ()
3239{
3240  $debug_cmd
3241
3242  func_to_host_file_result=$1
3243  if test -n "$1"; then
3244    func_convert_core_msys_to_w32 "$1"
3245    func_to_host_file_result=$func_convert_core_msys_to_w32_result
3246  fi
3247  func_convert_file_check "$1" "$func_to_host_file_result"
3248}
3249# end func_convert_file_msys_to_w32
3250
3251
3252# func_convert_file_cygwin_to_w32 ARG
3253# Convert file name ARG from Cygwin to w32 format.  Returns result in
3254# func_to_host_file_result.
3255func_convert_file_cygwin_to_w32 ()
3256{
3257  $debug_cmd
3258
3259  func_to_host_file_result=$1
3260  if test -n "$1"; then
3261    # because $build is cygwin, we call "the" cygpath in $PATH; no need to use
3262    # LT_CYGPATH in this case.
3263    func_to_host_file_result=`cygpath -m "$1"`
3264  fi
3265  func_convert_file_check "$1" "$func_to_host_file_result"
3266}
3267# end func_convert_file_cygwin_to_w32
3268
3269
3270# func_convert_file_nix_to_w32 ARG
3271# Convert file name ARG from *nix to w32 format.  Requires a wine environment
3272# and a working winepath. Returns result in func_to_host_file_result.
3273func_convert_file_nix_to_w32 ()
3274{
3275  $debug_cmd
3276
3277  func_to_host_file_result=$1
3278  if test -n "$1"; then
3279    func_convert_core_file_wine_to_w32 "$1"
3280    func_to_host_file_result=$func_convert_core_file_wine_to_w32_result
3281  fi
3282  func_convert_file_check "$1" "$func_to_host_file_result"
3283}
3284# end func_convert_file_nix_to_w32
3285
3286
3287# func_convert_file_msys_to_cygwin ARG
3288# Convert file name ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
3289# Returns result in func_to_host_file_result.
3290func_convert_file_msys_to_cygwin ()
3291{
3292  $debug_cmd
3293
3294  func_to_host_file_result=$1
3295  if test -n "$1"; then
3296    func_convert_core_msys_to_w32 "$1"
3297    func_cygpath -u "$func_convert_core_msys_to_w32_result"
3298    func_to_host_file_result=$func_cygpath_result
3299  fi
3300  func_convert_file_check "$1" "$func_to_host_file_result"
3301}
3302# end func_convert_file_msys_to_cygwin
3303
3304
3305# func_convert_file_nix_to_cygwin ARG
3306# Convert file name ARG from *nix to Cygwin format.  Requires Cygwin installed
3307# in a wine environment, working winepath, and LT_CYGPATH set.  Returns result
3308# in func_to_host_file_result.
3309func_convert_file_nix_to_cygwin ()
3310{
3311  $debug_cmd
3312
3313  func_to_host_file_result=$1
3314  if test -n "$1"; then
3315    # convert from *nix to w32, then use cygpath to convert from w32 to cygwin.
3316    func_convert_core_file_wine_to_w32 "$1"
3317    func_cygpath -u "$func_convert_core_file_wine_to_w32_result"
3318    func_to_host_file_result=$func_cygpath_result
3319  fi
3320  func_convert_file_check "$1" "$func_to_host_file_result"
3321}
3322# end func_convert_file_nix_to_cygwin
3323
3324
3325#############################################
3326# $build to $host PATH CONVERSION FUNCTIONS #
3327#############################################
3328# invoked via '$to_host_path_cmd ARG'
3329#
3330# In each case, ARG is the path to be converted from $build to $host format.
3331# The result will be available in $func_to_host_path_result.
3332#
3333# Path separators are also converted from $build format to $host format.  If
3334# ARG begins or ends with a path separator character, it is preserved (but
3335# converted to $host format) on output.
3336#
3337# All path conversion functions are named using the following convention:
3338#   file name conversion function    : func_convert_file_X_to_Y ()
3339#   path conversion function         : func_convert_path_X_to_Y ()
3340# where, for any given $build/$host combination the 'X_to_Y' value is the
3341# same.  If conversion functions are added for new $build/$host combinations,
3342# the two new functions must follow this pattern, or func_init_to_host_path_cmd
3343# will break.
3344
3345
3346# func_init_to_host_path_cmd
3347# Ensures that function "pointer" variable $to_host_path_cmd is set to the
3348# appropriate value, based on the value of $to_host_file_cmd.
3349to_host_path_cmd=
3350func_init_to_host_path_cmd ()
3351{
3352  $debug_cmd
3353
3354  if test -z "$to_host_path_cmd"; then
3355    func_stripname 'func_convert_file_' '' "$to_host_file_cmd"
3356    to_host_path_cmd=func_convert_path_$func_stripname_result
3357  fi
3358}
3359
3360
3361# func_to_host_path ARG
3362# Converts the path ARG from $build format to $host format. Return result
3363# in func_to_host_path_result.
3364func_to_host_path ()
3365{
3366  $debug_cmd
3367
3368  func_init_to_host_path_cmd
3369  $to_host_path_cmd "$1"
3370}
3371# end func_to_host_path
3372
3373
3374# func_convert_path_noop ARG
3375# Copy ARG to func_to_host_path_result.
3376func_convert_path_noop ()
3377{
3378  func_to_host_path_result=$1
3379}
3380# end func_convert_path_noop
3381
3382
3383# func_convert_path_msys_to_w32 ARG
3384# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic
3385# conversion to w32 is not available inside the cwrapper.  Returns result in
3386# func_to_host_path_result.
3387func_convert_path_msys_to_w32 ()
3388{
3389  $debug_cmd
3390
3391  func_to_host_path_result=$1
3392  if test -n "$1"; then
3393    # Remove leading and trailing path separator characters from ARG.  MSYS
3394    # behavior is inconsistent here; cygpath turns them into '.;' and ';.';
3395    # and winepath ignores them completely.
3396    func_stripname : : "$1"
3397    func_to_host_path_tmp1=$func_stripname_result
3398    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
3399    func_to_host_path_result=$func_convert_core_msys_to_w32_result
3400    func_convert_path_check : ";" \
3401      "$func_to_host_path_tmp1" "$func_to_host_path_result"
3402    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
3403  fi
3404}
3405# end func_convert_path_msys_to_w32
3406
3407
3408# func_convert_path_cygwin_to_w32 ARG
3409# Convert path ARG from Cygwin to w32 format.  Returns result in
3410# func_to_host_file_result.
3411func_convert_path_cygwin_to_w32 ()
3412{
3413  $debug_cmd
3414
3415  func_to_host_path_result=$1
3416  if test -n "$1"; then
3417    # See func_convert_path_msys_to_w32:
3418    func_stripname : : "$1"
3419    func_to_host_path_tmp1=$func_stripname_result
3420    func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"`
3421    func_convert_path_check : ";" \
3422      "$func_to_host_path_tmp1" "$func_to_host_path_result"
3423    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
3424  fi
3425}
3426# end func_convert_path_cygwin_to_w32
3427
3428
3429# func_convert_path_nix_to_w32 ARG
3430# Convert path ARG from *nix to w32 format.  Requires a wine environment and
3431# a working winepath.  Returns result in func_to_host_file_result.
3432func_convert_path_nix_to_w32 ()
3433{
3434  $debug_cmd
3435
3436  func_to_host_path_result=$1
3437  if test -n "$1"; then
3438    # See func_convert_path_msys_to_w32:
3439    func_stripname : : "$1"
3440    func_to_host_path_tmp1=$func_stripname_result
3441    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
3442    func_to_host_path_result=$func_convert_core_path_wine_to_w32_result
3443    func_convert_path_check : ";" \
3444      "$func_to_host_path_tmp1" "$func_to_host_path_result"
3445    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
3446  fi
3447}
3448# end func_convert_path_nix_to_w32
3449
3450
3451# func_convert_path_msys_to_cygwin ARG
3452# Convert path ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
3453# Returns result in func_to_host_file_result.
3454func_convert_path_msys_to_cygwin ()
3455{
3456  $debug_cmd
3457
3458  func_to_host_path_result=$1
3459  if test -n "$1"; then
3460    # See func_convert_path_msys_to_w32:
3461    func_stripname : : "$1"
3462    func_to_host_path_tmp1=$func_stripname_result
3463    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
3464    func_cygpath -u -p "$func_convert_core_msys_to_w32_result"
3465    func_to_host_path_result=$func_cygpath_result
3466    func_convert_path_check : : \
3467      "$func_to_host_path_tmp1" "$func_to_host_path_result"
3468    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
3469  fi
3470}
3471# end func_convert_path_msys_to_cygwin
3472
3473
3474# func_convert_path_nix_to_cygwin ARG
3475# Convert path ARG from *nix to Cygwin format.  Requires Cygwin installed in a
3476# a wine environment, working winepath, and LT_CYGPATH set.  Returns result in
3477# func_to_host_file_result.
3478func_convert_path_nix_to_cygwin ()
3479{
3480  $debug_cmd
3481
3482  func_to_host_path_result=$1
3483  if test -n "$1"; then
3484    # Remove leading and trailing path separator characters from
3485    # ARG. msys behavior is inconsistent here, cygpath turns them
3486    # into '.;' and ';.', and winepath ignores them completely.
3487    func_stripname : : "$1"
3488    func_to_host_path_tmp1=$func_stripname_result
3489    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
3490    func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result"
3491    func_to_host_path_result=$func_cygpath_result
3492    func_convert_path_check : : \
3493      "$func_to_host_path_tmp1" "$func_to_host_path_result"
3494    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
3495  fi
3496}
3497# end func_convert_path_nix_to_cygwin
3498
3499
3500# func_dll_def_p FILE
3501# True iff FILE is a Windows DLL '.def' file.
3502# Keep in sync with _LT_DLL_DEF_P in libtool.m4
3503func_dll_def_p ()
3504{
3505  $debug_cmd
3506
3507  func_dll_def_p_tmp=`$SED -n \
3508    -e 's/^[	 ]*//' \
3509    -e '/^\(;.*\)*$/d' \
3510    -e 's/^\(EXPORTS\|LIBRARY\)\([	 ].*\)*$/DEF/p' \
3511    -e q \
3512    "$1"`
3513  test DEF = "$func_dll_def_p_tmp"
3514}
3515
3516
3517# func_mode_compile arg...
3518func_mode_compile ()
3519{
3520    $debug_cmd
3521
3522    # Get the compilation command and the source file.
3523    base_compile=
3524    srcfile=$nonopt  #  always keep a non-empty value in "srcfile"
3525    suppress_opt=yes
3526    suppress_output=
3527    arg_mode=normal
3528    libobj=
3529    later=
3530    pie_flag=
3531
3532    for arg
3533    do
3534      case $arg_mode in
3535      arg  )
3536	# do not "continue".  Instead, add this to base_compile
3537	lastarg=$arg
3538	arg_mode=normal
3539	;;
3540
3541      target )
3542	libobj=$arg
3543	arg_mode=normal
3544	continue
3545	;;
3546
3547      normal )
3548	# Accept any command-line options.
3549	case $arg in
3550	-o)
3551	  test -n "$libobj" && \
3552	    func_fatal_error "you cannot specify '-o' more than once"
3553	  arg_mode=target
3554	  continue
3555	  ;;
3556
3557	-pie | -fpie | -fPIE)
3558          func_append pie_flag " $arg"
3559	  continue
3560	  ;;
3561
3562	-shared | -static | -prefer-pic | -prefer-non-pic)
3563	  func_append later " $arg"
3564	  continue
3565	  ;;
3566
3567	-no-suppress)
3568	  suppress_opt=no
3569	  continue
3570	  ;;
3571
3572	-Xcompiler)
3573	  arg_mode=arg  #  the next one goes into the "base_compile" arg list
3574	  continue      #  The current "srcfile" will either be retained or
3575	  ;;            #  replaced later.  I would guess that would be a bug.
3576
3577	-Wc,*)
3578	  func_stripname '-Wc,' '' "$arg"
3579	  args=$func_stripname_result
3580	  lastarg=
3581	  save_ifs=$IFS; IFS=,
3582	  for arg in $args; do
3583	    IFS=$save_ifs
3584	    func_append_quoted lastarg "$arg"
3585	  done
3586	  IFS=$save_ifs
3587	  func_stripname ' ' '' "$lastarg"
3588	  lastarg=$func_stripname_result
3589
3590	  # Add the arguments to base_compile.
3591	  func_append base_compile " $lastarg"
3592	  continue
3593	  ;;
3594
3595	*)
3596	  # Accept the current argument as the source file.
3597	  # The previous "srcfile" becomes the current argument.
3598	  #
3599	  lastarg=$srcfile
3600	  srcfile=$arg
3601	  ;;
3602	esac  #  case $arg
3603	;;
3604      esac    #  case $arg_mode
3605
3606      # Aesthetically quote the previous argument.
3607      func_append_quoted base_compile "$lastarg"
3608    done # for arg
3609
3610    case $arg_mode in
3611    arg)
3612      func_fatal_error "you must specify an argument for -Xcompile"
3613      ;;
3614    target)
3615      func_fatal_error "you must specify a target with '-o'"
3616      ;;
3617    *)
3618      # Get the name of the library object.
3619      test -z "$libobj" && {
3620	func_basename "$srcfile"
3621	libobj=$func_basename_result
3622      }
3623      ;;
3624    esac
3625
3626    # Recognize several different file suffixes.
3627    # If the user specifies -o file.o, it is replaced with file.lo
3628    case $libobj in
3629    *.[cCFSifmso] | \
3630    *.ada | *.adb | *.ads | *.asm | \
3631    *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
3632    *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup)
3633      func_xform "$libobj"
3634      libobj=$func_xform_result
3635      ;;
3636    esac
3637
3638    case $libobj in
3639    *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
3640    *)
3641      func_fatal_error "cannot determine name of library object from '$libobj'"
3642      ;;
3643    esac
3644
3645    func_infer_tag $base_compile
3646
3647    for arg in $later; do
3648      case $arg in
3649      -shared)
3650	test yes = "$build_libtool_libs" \
3651	  || func_fatal_configuration "cannot build a shared library"
3652	build_old_libs=no
3653	continue
3654	;;
3655
3656      -static)
3657	build_libtool_libs=no
3658	build_old_libs=yes
3659	continue
3660	;;
3661
3662      -prefer-pic)
3663	pic_mode=yes
3664	continue
3665	;;
3666
3667      -prefer-non-pic)
3668	pic_mode=no
3669	continue
3670	;;
3671      esac
3672    done
3673
3674    func_quote_arg pretty "$libobj"
3675    test "X$libobj" != "X$func_quote_arg_result" \
3676      && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"'	 &()|`$[]' \
3677      && func_warning "libobj name '$libobj' may not contain shell special characters."
3678    func_dirname_and_basename "$obj" "/" ""
3679    objname=$func_basename_result
3680    xdir=$func_dirname_result
3681    lobj=$xdir$objdir/$objname
3682
3683    test -z "$base_compile" && \
3684      func_fatal_help "you must specify a compilation command"
3685
3686    # Delete any leftover library objects.
3687    if test yes = "$build_old_libs"; then
3688      removelist="$obj $lobj $libobj ${libobj}T"
3689    else
3690      removelist="$lobj $libobj ${libobj}T"
3691    fi
3692
3693    # On Cygwin there's no "real" PIC flag so we must build both object types
3694    case $host_os in
3695    cygwin* | mingw* | pw32* | os2* | cegcc*)
3696      pic_mode=default
3697      ;;
3698    esac
3699    if test no = "$pic_mode" && test pass_all != "$deplibs_check_method"; then
3700      # non-PIC code in shared libraries is not supported
3701      pic_mode=default
3702    fi
3703
3704    # Calculate the filename of the output object if compiler does
3705    # not support -o with -c
3706    if test no = "$compiler_c_o"; then
3707      output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.$objext
3708      lockfile=$output_obj.lock
3709    else
3710      output_obj=
3711      need_locks=no
3712      lockfile=
3713    fi
3714
3715    # Lock this critical section if it is needed
3716    # We use this script file to make the link, it avoids creating a new file
3717    if test yes = "$need_locks"; then
3718      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
3719	func_echo "Waiting for $lockfile to be removed"
3720	sleep 2
3721      done
3722    elif test warn = "$need_locks"; then
3723      if test -f "$lockfile"; then
3724	$ECHO "\
3725*** ERROR, $lockfile exists and contains:
3726`cat $lockfile 2>/dev/null`
3727
3728This indicates that another process is trying to use the same
3729temporary object file, and libtool could not work around it because
3730your compiler does not support '-c' and '-o' together.  If you
3731repeat this compilation, it may succeed, by chance, but you had better
3732avoid parallel builds (make -j) in this platform, or get a better
3733compiler."
3734
3735	$opt_dry_run || $RM $removelist
3736	exit $EXIT_FAILURE
3737      fi
3738      func_append removelist " $output_obj"
3739      $ECHO "$srcfile" > "$lockfile"
3740    fi
3741
3742    $opt_dry_run || $RM $removelist
3743    func_append removelist " $lockfile"
3744    trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
3745
3746    func_to_tool_file "$srcfile" func_convert_file_msys_to_w32
3747    srcfile=$func_to_tool_file_result
3748    func_quote_arg pretty "$srcfile"
3749    qsrcfile=$func_quote_arg_result
3750
3751    # Only build a PIC object if we are building libtool libraries.
3752    if test yes = "$build_libtool_libs"; then
3753      # Without this assignment, base_compile gets emptied.
3754      fbsd_hideous_sh_bug=$base_compile
3755
3756      if test no != "$pic_mode"; then
3757	command="$base_compile $qsrcfile $pic_flag"
3758      else
3759	# Don't build PIC code
3760	command="$base_compile $qsrcfile"
3761      fi
3762
3763      func_mkdir_p "$xdir$objdir"
3764
3765      if test -z "$output_obj"; then
3766	# Place PIC objects in $objdir
3767	func_append command " -o $lobj"
3768      fi
3769
3770      func_show_eval_locale "$command"	\
3771          'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
3772
3773      if test warn = "$need_locks" &&
3774	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
3775	$ECHO "\
3776*** ERROR, $lockfile contains:
3777`cat $lockfile 2>/dev/null`
3778
3779but it should contain:
3780$srcfile
3781
3782This indicates that another process is trying to use the same
3783temporary object file, and libtool could not work around it because
3784your compiler does not support '-c' and '-o' together.  If you
3785repeat this compilation, it may succeed, by chance, but you had better
3786avoid parallel builds (make -j) in this platform, or get a better
3787compiler."
3788
3789	$opt_dry_run || $RM $removelist
3790	exit $EXIT_FAILURE
3791      fi
3792
3793      # Just move the object if needed, then go on to compile the next one
3794      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
3795	func_show_eval '$MV "$output_obj" "$lobj"' \
3796	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
3797      fi
3798
3799      # Allow error messages only from the first compilation.
3800      if test yes = "$suppress_opt"; then
3801	suppress_output=' >/dev/null 2>&1'
3802      fi
3803    fi
3804
3805    # Only build a position-dependent object if we build old libraries.
3806    if test yes = "$build_old_libs"; then
3807      if test yes != "$pic_mode"; then
3808	# Don't build PIC code
3809	command="$base_compile $qsrcfile$pie_flag"
3810      else
3811	command="$base_compile $qsrcfile $pic_flag"
3812      fi
3813      if test yes = "$compiler_c_o"; then
3814	func_append command " -o $obj"
3815      fi
3816
3817      # Suppress compiler output if we already did a PIC compilation.
3818      func_append command "$suppress_output"
3819      func_show_eval_locale "$command" \
3820        '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
3821
3822      if test warn = "$need_locks" &&
3823	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
3824	$ECHO "\
3825*** ERROR, $lockfile contains:
3826`cat $lockfile 2>/dev/null`
3827
3828but it should contain:
3829$srcfile
3830
3831This indicates that another process is trying to use the same
3832temporary object file, and libtool could not work around it because
3833your compiler does not support '-c' and '-o' together.  If you
3834repeat this compilation, it may succeed, by chance, but you had better
3835avoid parallel builds (make -j) in this platform, or get a better
3836compiler."
3837
3838	$opt_dry_run || $RM $removelist
3839	exit $EXIT_FAILURE
3840      fi
3841
3842      # Just move the object if needed
3843      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
3844	func_show_eval '$MV "$output_obj" "$obj"' \
3845	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
3846      fi
3847    fi
3848
3849    $opt_dry_run || {
3850      func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
3851
3852      # Unlock the critical section if it was locked
3853      if test no != "$need_locks"; then
3854	removelist=$lockfile
3855        $RM "$lockfile"
3856      fi
3857    }
3858
3859    exit $EXIT_SUCCESS
3860}
3861
3862$opt_help || {
3863  test compile = "$opt_mode" && func_mode_compile ${1+"$@"}
3864}
3865
3866func_mode_help ()
3867{
3868    # We need to display help for each of the modes.
3869    case $opt_mode in
3870      "")
3871        # Generic help is extracted from the usage comments
3872        # at the start of this file.
3873        func_help
3874        ;;
3875
3876      clean)
3877        $ECHO \
3878"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
3879
3880Remove files from the build directory.
3881
3882RM is the name of the program to use to delete files associated with each FILE
3883(typically '/bin/rm').  RM-OPTIONS are options (such as '-f') to be passed
3884to RM.
3885
3886If FILE is a libtool library, object or program, all the files associated
3887with it are deleted. Otherwise, only FILE itself is deleted using RM."
3888        ;;
3889
3890      compile)
3891      $ECHO \
3892"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
3893
3894Compile a source file into a libtool library object.
3895
3896This mode accepts the following additional options:
3897
3898  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
3899  -no-suppress      do not suppress compiler output for multiple passes
3900  -prefer-pic       try to build PIC objects only
3901  -prefer-non-pic   try to build non-PIC objects only
3902  -shared           do not build a '.o' file suitable for static linking
3903  -static           only build a '.o' file suitable for static linking
3904  -Wc,FLAG
3905  -Xcompiler FLAG   pass FLAG directly to the compiler
3906
3907COMPILE-COMMAND is a command to be used in creating a 'standard' object file
3908from the given SOURCEFILE.
3909
3910The output file name is determined by removing the directory component from
3911SOURCEFILE, then substituting the C source code suffix '.c' with the
3912library object suffix, '.lo'."
3913        ;;
3914
3915      execute)
3916        $ECHO \
3917"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
3918
3919Automatically set library path, then run a program.
3920
3921This mode accepts the following additional options:
3922
3923  -dlopen FILE      add the directory containing FILE to the library path
3924
3925This mode sets the library path environment variable according to '-dlopen'
3926flags.
3927
3928If any of the ARGS are libtool executable wrappers, then they are translated
3929into their corresponding uninstalled binary, and any of their required library
3930directories are added to the library path.
3931
3932Then, COMMAND is executed, with ARGS as arguments."
3933        ;;
3934
3935      finish)
3936        $ECHO \
3937"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
3938
3939Complete the installation of libtool libraries.
3940
3941Each LIBDIR is a directory that contains libtool libraries.
3942
3943The commands that this mode executes may require superuser privileges.  Use
3944the '--dry-run' option if you just want to see what would be executed."
3945        ;;
3946
3947      install)
3948        $ECHO \
3949"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
3950
3951Install executables or libraries.
3952
3953INSTALL-COMMAND is the installation command.  The first component should be
3954either the 'install' or 'cp' program.
3955
3956The following components of INSTALL-COMMAND are treated specially:
3957
3958  -inst-prefix-dir PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
3959
3960The rest of the components are interpreted as arguments to that command (only
3961BSD-compatible install options are recognized)."
3962        ;;
3963
3964      link)
3965        $ECHO \
3966"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
3967
3968Link object files or libraries together to form another library, or to
3969create an executable program.
3970
3971LINK-COMMAND is a command using the C compiler that you would use to create
3972a program from several object files.
3973
3974The following components of LINK-COMMAND are treated specially:
3975
3976  -all-static       do not do any dynamic linking at all
3977  -avoid-version    do not add a version suffix if possible
3978  -bindir BINDIR    specify path to binaries directory (for systems where
3979                    libraries must be found in the PATH setting at runtime)
3980  -dlopen FILE      '-dlpreopen' FILE if it cannot be dlopened at runtime
3981  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
3982  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
3983  -export-symbols SYMFILE
3984                    try to export only the symbols listed in SYMFILE
3985  -export-symbols-regex REGEX
3986                    try to export only the symbols matching REGEX
3987  -LLIBDIR          search LIBDIR for required installed libraries
3988  -lNAME            OUTPUT-FILE requires the installed library libNAME
3989  -module           build a library that can dlopened
3990  -no-fast-install  disable the fast-install mode
3991  -no-install       link a not-installable executable
3992  -no-undefined     declare that a library does not refer to external symbols
3993  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
3994  -objectlist FILE  use a list of object files found in FILE to specify objects
3995  -os2dllname NAME  force a short DLL name on OS/2 (no effect on other OSes)
3996  -precious-files-regex REGEX
3997                    don't remove output files matching REGEX
3998  -release RELEASE  specify package release information
3999  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
4000  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
4001  -shared           only do dynamic linking of libtool libraries
4002  -shrext SUFFIX    override the standard shared library file extension
4003  -static           do not do any dynamic linking of uninstalled libtool libraries
4004  -static-libtool-libs
4005                    do not do any dynamic linking of libtool libraries
4006  -version-info CURRENT[:REVISION[:AGE]]
4007                    specify library version info [each variable defaults to 0]
4008  -weak LIBNAME     declare that the target provides the LIBNAME interface
4009  -Wc,FLAG
4010  -Xcompiler FLAG   pass linker-specific FLAG directly to the compiler
4011  -Wa,FLAG
4012  -Xassembler FLAG  pass linker-specific FLAG directly to the assembler
4013  -Wl,FLAG
4014  -Xlinker FLAG     pass linker-specific FLAG directly to the linker
4015  -XCClinker FLAG   pass link-specific FLAG to the compiler driver (CC)
4016
4017All other options (arguments beginning with '-') are ignored.
4018
4019Every other argument is treated as a filename.  Files ending in '.la' are
4020treated as uninstalled libtool libraries, other files are standard or library
4021object files.
4022
4023If the OUTPUT-FILE ends in '.la', then a libtool library is created,
4024only library objects ('.lo' files) may be specified, and '-rpath' is
4025required, except when creating a convenience library.
4026
4027If OUTPUT-FILE ends in '.a' or '.lib', then a standard library is created
4028using 'ar' and 'ranlib', or on Windows using 'lib'.
4029
4030If OUTPUT-FILE ends in '.lo' or '.$objext', then a reloadable object file
4031is created, otherwise an executable program is created."
4032        ;;
4033
4034      uninstall)
4035        $ECHO \
4036"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
4037
4038Remove libraries from an installation directory.
4039
4040RM is the name of the program to use to delete files associated with each FILE
4041(typically '/bin/rm').  RM-OPTIONS are options (such as '-f') to be passed
4042to RM.
4043
4044If FILE is a libtool library, all the files associated with it are deleted.
4045Otherwise, only FILE itself is deleted using RM."
4046        ;;
4047
4048      *)
4049        func_fatal_help "invalid operation mode '$opt_mode'"
4050        ;;
4051    esac
4052
4053    echo
4054    $ECHO "Try '$progname --help' for more information about other modes."
4055}
4056
4057# Now that we've collected a possible --mode arg, show help if necessary
4058if $opt_help; then
4059  if test : = "$opt_help"; then
4060    func_mode_help
4061  else
4062    {
4063      func_help noexit
4064      for opt_mode in compile link execute install finish uninstall clean; do
4065	func_mode_help
4066      done
4067    } | $SED -n '1p; 2,$s/^Usage:/  or: /p'
4068    {
4069      func_help noexit
4070      for opt_mode in compile link execute install finish uninstall clean; do
4071	echo
4072	func_mode_help
4073      done
4074    } |
4075    $SED '1d
4076      /^When reporting/,/^Report/{
4077	H
4078	d
4079      }
4080      $x
4081      /information about other modes/d
4082      /more detailed .*MODE/d
4083      s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/'
4084  fi
4085  exit $?
4086fi
4087
4088
4089# func_mode_execute arg...
4090func_mode_execute ()
4091{
4092    $debug_cmd
4093
4094    # The first argument is the command name.
4095    cmd=$nonopt
4096    test -z "$cmd" && \
4097      func_fatal_help "you must specify a COMMAND"
4098
4099    # Handle -dlopen flags immediately.
4100    for file in $opt_dlopen; do
4101      test -f "$file" \
4102	|| func_fatal_help "'$file' is not a file"
4103
4104      dir=
4105      case $file in
4106      *.la)
4107	func_resolve_sysroot "$file"
4108	file=$func_resolve_sysroot_result
4109
4110	# Check to see that this really is a libtool archive.
4111	func_lalib_unsafe_p "$file" \
4112	  || func_fatal_help "'$lib' is not a valid libtool archive"
4113
4114	# Read the libtool library.
4115	dlname=
4116	library_names=
4117	func_source "$file"
4118
4119	# Skip this library if it cannot be dlopened.
4120	if test -z "$dlname"; then
4121	  # Warn if it was a shared library.
4122	  test -n "$library_names" && \
4123	    func_warning "'$file' was not linked with '-export-dynamic'"
4124	  continue
4125	fi
4126
4127	func_dirname "$file" "" "."
4128	dir=$func_dirname_result
4129
4130	if test -f "$dir/$objdir/$dlname"; then
4131	  func_append dir "/$objdir"
4132	else
4133	  if test ! -f "$dir/$dlname"; then
4134	    func_fatal_error "cannot find '$dlname' in '$dir' or '$dir/$objdir'"
4135	  fi
4136	fi
4137	;;
4138
4139      *.lo)
4140	# Just add the directory containing the .lo file.
4141	func_dirname "$file" "" "."
4142	dir=$func_dirname_result
4143	;;
4144
4145      *)
4146	func_warning "'-dlopen' is ignored for non-libtool libraries and objects"
4147	continue
4148	;;
4149      esac
4150
4151      # Get the absolute pathname.
4152      absdir=`cd "$dir" && pwd`
4153      test -n "$absdir" && dir=$absdir
4154
4155      # Now add the directory to shlibpath_var.
4156      if eval "test -z \"\$$shlibpath_var\""; then
4157	eval "$shlibpath_var=\"\$dir\""
4158      else
4159	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
4160      fi
4161    done
4162
4163    # This variable tells wrapper scripts just to set shlibpath_var
4164    # rather than running their programs.
4165    libtool_execute_magic=$magic
4166
4167    # Check if any of the arguments is a wrapper script.
4168    args=
4169    for file
4170    do
4171      case $file in
4172      -* | *.la | *.lo ) ;;
4173      *)
4174	# Do a test to see if this is really a libtool program.
4175	if func_ltwrapper_script_p "$file"; then
4176	  func_source "$file"
4177	  # Transform arg to wrapped name.
4178	  file=$progdir/$program
4179	elif func_ltwrapper_executable_p "$file"; then
4180	  func_ltwrapper_scriptname "$file"
4181	  func_source "$func_ltwrapper_scriptname_result"
4182	  # Transform arg to wrapped name.
4183	  file=$progdir/$program
4184	fi
4185	;;
4186      esac
4187      # Quote arguments (to preserve shell metacharacters).
4188      func_append_quoted args "$file"
4189    done
4190
4191    if $opt_dry_run; then
4192      # Display what would be done.
4193      if test -n "$shlibpath_var"; then
4194	eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
4195	echo "export $shlibpath_var"
4196      fi
4197      $ECHO "$cmd$args"
4198      exit $EXIT_SUCCESS
4199    else
4200      if test -n "$shlibpath_var"; then
4201	# Export the shlibpath_var.
4202	eval "export $shlibpath_var"
4203      fi
4204
4205      # Restore saved environment variables
4206      for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
4207      do
4208	eval "if test \"\${save_$lt_var+set}\" = set; then
4209                $lt_var=\$save_$lt_var; export $lt_var
4210	      else
4211		$lt_unset $lt_var
4212	      fi"
4213      done
4214
4215      # Now prepare to actually exec the command.
4216      exec_cmd=\$cmd$args
4217    fi
4218}
4219
4220test execute = "$opt_mode" && func_mode_execute ${1+"$@"}
4221
4222
4223# func_mode_finish arg...
4224func_mode_finish ()
4225{
4226    $debug_cmd
4227
4228    libs=
4229    libdirs=
4230    admincmds=
4231
4232    for opt in "$nonopt" ${1+"$@"}
4233    do
4234      if test -d "$opt"; then
4235	func_append libdirs " $opt"
4236
4237      elif test -f "$opt"; then
4238	if func_lalib_unsafe_p "$opt"; then
4239	  func_append libs " $opt"
4240	else
4241	  func_warning "'$opt' is not a valid libtool archive"
4242	fi
4243
4244      else
4245	func_fatal_error "invalid argument '$opt'"
4246      fi
4247    done
4248
4249    if test -n "$libs"; then
4250      if test -n "$lt_sysroot"; then
4251        sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"`
4252        sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;"
4253      else
4254        sysroot_cmd=
4255      fi
4256
4257      # Remove sysroot references
4258      if $opt_dry_run; then
4259        for lib in $libs; do
4260          echo "removing references to $lt_sysroot and '=' prefixes from $lib"
4261        done
4262      else
4263        tmpdir=`func_mktempdir`
4264        for lib in $libs; do
4265	  $SED -e "$sysroot_cmd s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \
4266	    > $tmpdir/tmp-la
4267	  mv -f $tmpdir/tmp-la $lib
4268	done
4269        ${RM}r "$tmpdir"
4270      fi
4271    fi
4272
4273    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
4274      for libdir in $libdirs; do
4275	if test -n "$finish_cmds"; then
4276	  # Do each command in the finish commands.
4277	  func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
4278'"$cmd"'"'
4279	fi
4280	if test -n "$finish_eval"; then
4281	  # Do the single finish_eval.
4282	  eval cmds=\"$finish_eval\"
4283	  $opt_dry_run || eval "$cmds" || func_append admincmds "
4284       $cmds"
4285	fi
4286      done
4287    fi
4288
4289    # Exit here if they wanted silent mode.
4290    $opt_quiet && exit $EXIT_SUCCESS
4291
4292    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
4293      echo "----------------------------------------------------------------------"
4294      echo "Libraries have been installed in:"
4295      for libdir in $libdirs; do
4296	$ECHO "   $libdir"
4297      done
4298      echo
4299      echo "If you ever happen to want to link against installed libraries"
4300      echo "in a given directory, LIBDIR, you must either use libtool, and"
4301      echo "specify the full pathname of the library, or use the '-LLIBDIR'"
4302      echo "flag during linking and do at least one of the following:"
4303      if test -n "$shlibpath_var"; then
4304	echo "   - add LIBDIR to the '$shlibpath_var' environment variable"
4305	echo "     during execution"
4306      fi
4307      if test -n "$runpath_var"; then
4308	echo "   - add LIBDIR to the '$runpath_var' environment variable"
4309	echo "     during linking"
4310      fi
4311      if test -n "$hardcode_libdir_flag_spec"; then
4312	libdir=LIBDIR
4313	eval flag=\"$hardcode_libdir_flag_spec\"
4314
4315	$ECHO "   - use the '$flag' linker flag"
4316      fi
4317      if test -n "$admincmds"; then
4318	$ECHO "   - have your system administrator run these commands:$admincmds"
4319      fi
4320      if test -f /etc/ld.so.conf; then
4321	echo "   - have your system administrator add LIBDIR to '/etc/ld.so.conf'"
4322      fi
4323      echo
4324
4325      echo "See any operating system documentation about shared libraries for"
4326      case $host in
4327	solaris2.[6789]|solaris2.1[0-9])
4328	  echo "more information, such as the ld(1), crle(1) and ld.so(8) manual"
4329	  echo "pages."
4330	  ;;
4331	*)
4332	  echo "more information, such as the ld(1) and ld.so(8) manual pages."
4333	  ;;
4334      esac
4335      echo "----------------------------------------------------------------------"
4336    fi
4337    exit $EXIT_SUCCESS
4338}
4339
4340test finish = "$opt_mode" && func_mode_finish ${1+"$@"}
4341
4342
4343# func_mode_install arg...
4344func_mode_install ()
4345{
4346    $debug_cmd
4347
4348    # There may be an optional sh(1) argument at the beginning of
4349    # install_prog (especially on Windows NT).
4350    if test "$SHELL" = "$nonopt" || test /bin/sh = "$nonopt" ||
4351       # Allow the use of GNU shtool's install command.
4352       case $nonopt in *shtool*) :;; *) false;; esac
4353    then
4354      # Aesthetically quote it.
4355      func_quote_arg pretty "$nonopt"
4356      install_prog="$func_quote_arg_result "
4357      arg=$1
4358      shift
4359    else
4360      install_prog=
4361      arg=$nonopt
4362    fi
4363
4364    # The real first argument should be the name of the installation program.
4365    # Aesthetically quote it.
4366    func_quote_arg pretty "$arg"
4367    func_append install_prog "$func_quote_arg_result"
4368    install_shared_prog=$install_prog
4369    case " $install_prog " in
4370      *[\\\ /]cp\ *) install_cp=: ;;
4371      *) install_cp=false ;;
4372    esac
4373
4374    # We need to accept at least all the BSD install flags.
4375    dest=
4376    files=
4377    opts=
4378    prev=
4379    install_type=
4380    isdir=false
4381    stripme=
4382    no_mode=:
4383    for arg
4384    do
4385      arg2=
4386      if test -n "$dest"; then
4387	func_append files " $dest"
4388	dest=$arg
4389	continue
4390      fi
4391
4392      case $arg in
4393      -d) isdir=: ;;
4394      -f)
4395	if $install_cp; then :; else
4396	  prev=$arg
4397	fi
4398	;;
4399      -g | -m | -o)
4400	prev=$arg
4401	;;
4402      -s)
4403	stripme=" -s"
4404	continue
4405	;;
4406      -*)
4407	;;
4408      *)
4409	# If the previous option needed an argument, then skip it.
4410	if test -n "$prev"; then
4411	  if test X-m = "X$prev" && test -n "$install_override_mode"; then
4412	    arg2=$install_override_mode
4413	    no_mode=false
4414	  fi
4415	  prev=
4416	else
4417	  dest=$arg
4418	  continue
4419	fi
4420	;;
4421      esac
4422
4423      # Aesthetically quote the argument.
4424      func_quote_arg pretty "$arg"
4425      func_append install_prog " $func_quote_arg_result"
4426      if test -n "$arg2"; then
4427	func_quote_arg pretty "$arg2"
4428      fi
4429      func_append install_shared_prog " $func_quote_arg_result"
4430    done
4431
4432    test -z "$install_prog" && \
4433      func_fatal_help "you must specify an install program"
4434
4435    test -n "$prev" && \
4436      func_fatal_help "the '$prev' option requires an argument"
4437
4438    if test -n "$install_override_mode" && $no_mode; then
4439      if $install_cp; then :; else
4440	func_quote_arg pretty "$install_override_mode"
4441	func_append install_shared_prog " -m $func_quote_arg_result"
4442      fi
4443    fi
4444
4445    if test -z "$files"; then
4446      if test -z "$dest"; then
4447	func_fatal_help "no file or destination specified"
4448      else
4449	func_fatal_help "you must specify a destination"
4450      fi
4451    fi
4452
4453    # Strip any trailing slash from the destination.
4454    func_stripname '' '/' "$dest"
4455    dest=$func_stripname_result
4456
4457    # Check to see that the destination is a directory.
4458    test -d "$dest" && isdir=:
4459    if $isdir; then
4460      destdir=$dest
4461      destname=
4462    else
4463      func_dirname_and_basename "$dest" "" "."
4464      destdir=$func_dirname_result
4465      destname=$func_basename_result
4466
4467      # Not a directory, so check to see that there is only one file specified.
4468      set dummy $files; shift
4469      test "$#" -gt 1 && \
4470	func_fatal_help "'$dest' is not a directory"
4471    fi
4472    case $destdir in
4473    [\\/]* | [A-Za-z]:[\\/]*) ;;
4474    *)
4475      for file in $files; do
4476	case $file in
4477	*.lo) ;;
4478	*)
4479	  func_fatal_help "'$destdir' must be an absolute directory name"
4480	  ;;
4481	esac
4482      done
4483      ;;
4484    esac
4485
4486    # This variable tells wrapper scripts just to set variables rather
4487    # than running their programs.
4488    libtool_install_magic=$magic
4489
4490    staticlibs=
4491    future_libdirs=
4492    current_libdirs=
4493    for file in $files; do
4494
4495      # Do each installation.
4496      case $file in
4497      *.$libext)
4498	# Do the static libraries later.
4499	func_append staticlibs " $file"
4500	;;
4501
4502      *.la)
4503	func_resolve_sysroot "$file"
4504	file=$func_resolve_sysroot_result
4505
4506	# Check to see that this really is a libtool archive.
4507	func_lalib_unsafe_p "$file" \
4508	  || func_fatal_help "'$file' is not a valid libtool archive"
4509
4510	library_names=
4511	old_library=
4512	relink_command=
4513	func_source "$file"
4514
4515	# Add the libdir to current_libdirs if it is the destination.
4516	if test "X$destdir" = "X$libdir"; then
4517	  case "$current_libdirs " in
4518	  *" $libdir "*) ;;
4519	  *) func_append current_libdirs " $libdir" ;;
4520	  esac
4521	else
4522	  # Note the libdir as a future libdir.
4523	  case "$future_libdirs " in
4524	  *" $libdir "*) ;;
4525	  *) func_append future_libdirs " $libdir" ;;
4526	  esac
4527	fi
4528
4529	func_dirname "$file" "/" ""
4530	dir=$func_dirname_result
4531	func_append dir "$objdir"
4532
4533	if test -n "$relink_command"; then
4534	  # Determine the prefix the user has applied to our future dir.
4535	  inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"`
4536
4537	  # Don't allow the user to place us outside of our expected
4538	  # location b/c this prevents finding dependent libraries that
4539	  # are installed to the same prefix.
4540	  # At present, this check doesn't affect windows .dll's that
4541	  # are installed into $libdir/../bin (currently, that works fine)
4542	  # but it's something to keep an eye on.
4543	  test "$inst_prefix_dir" = "$destdir" && \
4544	    func_fatal_error "error: cannot install '$file' to a directory not ending in $libdir"
4545
4546	  if test -n "$inst_prefix_dir"; then
4547	    # Stick the inst_prefix_dir data into the link command.
4548	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
4549	  else
4550	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
4551	  fi
4552
4553	  func_warning "relinking '$file'"
4554	  func_show_eval "$relink_command" \
4555	    'func_fatal_error "error: relink '\''$file'\'' with the above command before installing it"'
4556	fi
4557
4558	# See the names of the shared library.
4559	set dummy $library_names; shift
4560	if test -n "$1"; then
4561	  realname=$1
4562	  shift
4563
4564	  srcname=$realname
4565	  test -n "$relink_command" && srcname=${realname}T
4566
4567	  # Install the shared library and build the symlinks.
4568	  func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \
4569	      'exit $?'
4570	  tstripme=$stripme
4571	  case $host_os in
4572	  cygwin* | mingw* | pw32* | cegcc*)
4573	    case $realname in
4574	    *.dll.a)
4575	      tstripme=
4576	      ;;
4577	    esac
4578	    ;;
4579	  os2*)
4580	    case $realname in
4581	    *_dll.a)
4582	      tstripme=
4583	      ;;
4584	    esac
4585	    ;;
4586	  esac
4587	  if test -n "$tstripme" && test -n "$striplib"; then
4588	    func_show_eval "$striplib $destdir/$realname" 'exit $?'
4589	  fi
4590
4591	  if test "$#" -gt 0; then
4592	    # Delete the old symlinks, and create new ones.
4593	    # Try 'ln -sf' first, because the 'ln' binary might depend on
4594	    # the symlink we replace!  Solaris /bin/ln does not understand -f,
4595	    # so we also need to try rm && ln -s.
4596	    for linkname
4597	    do
4598	      test "$linkname" != "$realname" \
4599		&& func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
4600	    done
4601	  fi
4602
4603	  # Do each command in the postinstall commands.
4604	  lib=$destdir/$realname
4605	  func_execute_cmds "$postinstall_cmds" 'exit $?'
4606	fi
4607
4608	# Install the pseudo-library for information purposes.
4609	func_basename "$file"
4610	name=$func_basename_result
4611	instname=$dir/${name}i
4612	func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
4613
4614	# Maybe install the static library, too.
4615	test -n "$old_library" && func_append staticlibs " $dir/$old_library"
4616	;;
4617
4618      *.lo)
4619	# Install (i.e. copy) a libtool object.
4620
4621	# Figure out destination file name, if it wasn't already specified.
4622	if test -n "$destname"; then
4623	  destfile=$destdir/$destname
4624	else
4625	  func_basename "$file"
4626	  destfile=$func_basename_result
4627	  destfile=$destdir/$destfile
4628	fi
4629
4630	# Deduce the name of the destination old-style object file.
4631	case $destfile in
4632	*.lo)
4633	  func_lo2o "$destfile"
4634	  staticdest=$func_lo2o_result
4635	  ;;
4636	*.$objext)
4637	  staticdest=$destfile
4638	  destfile=
4639	  ;;
4640	*)
4641	  func_fatal_help "cannot copy a libtool object to '$destfile'"
4642	  ;;
4643	esac
4644
4645	# Install the libtool object if requested.
4646	test -n "$destfile" && \
4647	  func_show_eval "$install_prog $file $destfile" 'exit $?'
4648
4649	# Install the old object if enabled.
4650	if test yes = "$build_old_libs"; then
4651	  # Deduce the name of the old-style object file.
4652	  func_lo2o "$file"
4653	  staticobj=$func_lo2o_result
4654	  func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
4655	fi
4656	exit $EXIT_SUCCESS
4657	;;
4658
4659      *)
4660	# Figure out destination file name, if it wasn't already specified.
4661	if test -n "$destname"; then
4662	  destfile=$destdir/$destname
4663	else
4664	  func_basename "$file"
4665	  destfile=$func_basename_result
4666	  destfile=$destdir/$destfile
4667	fi
4668
4669	# If the file is missing, and there is a .exe on the end, strip it
4670	# because it is most likely a libtool script we actually want to
4671	# install
4672	stripped_ext=
4673	case $file in
4674	  *.exe)
4675	    if test ! -f "$file"; then
4676	      func_stripname '' '.exe' "$file"
4677	      file=$func_stripname_result
4678	      stripped_ext=.exe
4679	    fi
4680	    ;;
4681	esac
4682
4683	# Do a test to see if this is really a libtool program.
4684	case $host in
4685	*cygwin* | *mingw*)
4686	    if func_ltwrapper_executable_p "$file"; then
4687	      func_ltwrapper_scriptname "$file"
4688	      wrapper=$func_ltwrapper_scriptname_result
4689	    else
4690	      func_stripname '' '.exe' "$file"
4691	      wrapper=$func_stripname_result
4692	    fi
4693	    ;;
4694	*)
4695	    wrapper=$file
4696	    ;;
4697	esac
4698	if func_ltwrapper_script_p "$wrapper"; then
4699	  notinst_deplibs=
4700	  relink_command=
4701
4702	  func_source "$wrapper"
4703
4704	  # Check the variables that should have been set.
4705	  test -z "$generated_by_libtool_version" && \
4706	    func_fatal_error "invalid libtool wrapper script '$wrapper'"
4707
4708	  finalize=:
4709	  for lib in $notinst_deplibs; do
4710	    # Check to see that each library is installed.
4711	    libdir=
4712	    if test -f "$lib"; then
4713	      func_source "$lib"
4714	    fi
4715	    libfile=$libdir/`$ECHO "$lib" | $SED 's%^.*/%%g'`
4716	    if test -n "$libdir" && test ! -f "$libfile"; then
4717	      func_warning "'$lib' has not been installed in '$libdir'"
4718	      finalize=false
4719	    fi
4720	  done
4721
4722	  relink_command=
4723	  func_source "$wrapper"
4724
4725	  outputname=
4726	  if test no = "$fast_install" && test -n "$relink_command"; then
4727	    $opt_dry_run || {
4728	      if $finalize; then
4729	        tmpdir=`func_mktempdir`
4730		func_basename "$file$stripped_ext"
4731		file=$func_basename_result
4732	        outputname=$tmpdir/$file
4733	        # Replace the output file specification.
4734	        relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'`
4735
4736	        $opt_quiet || {
4737	          func_quote_arg expand,pretty "$relink_command"
4738		  eval "func_echo $func_quote_arg_result"
4739	        }
4740	        if eval "$relink_command"; then :
4741	          else
4742		  func_error "error: relink '$file' with the above command before installing it"
4743		  $opt_dry_run || ${RM}r "$tmpdir"
4744		  continue
4745	        fi
4746	        file=$outputname
4747	      else
4748	        func_warning "cannot relink '$file'"
4749	      fi
4750	    }
4751	  else
4752	    # Install the binary that we compiled earlier.
4753	    file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"`
4754	  fi
4755	fi
4756
4757	# remove .exe since cygwin /usr/bin/install will append another
4758	# one anyway
4759	case $install_prog,$host in
4760	*/usr/bin/install*,*cygwin*)
4761	  case $file:$destfile in
4762	  *.exe:*.exe)
4763	    # this is ok
4764	    ;;
4765	  *.exe:*)
4766	    destfile=$destfile.exe
4767	    ;;
4768	  *:*.exe)
4769	    func_stripname '' '.exe' "$destfile"
4770	    destfile=$func_stripname_result
4771	    ;;
4772	  esac
4773	  ;;
4774	esac
4775	func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
4776	$opt_dry_run || if test -n "$outputname"; then
4777	  ${RM}r "$tmpdir"
4778	fi
4779	;;
4780      esac
4781    done
4782
4783    for file in $staticlibs; do
4784      func_basename "$file"
4785      name=$func_basename_result
4786
4787      # Set up the ranlib parameters.
4788      oldlib=$destdir/$name
4789      func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
4790      tool_oldlib=$func_to_tool_file_result
4791
4792      func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
4793
4794      if test -n "$stripme" && test -n "$old_striplib"; then
4795	func_show_eval "$old_striplib $tool_oldlib" 'exit $?'
4796      fi
4797
4798      # Do each command in the postinstall commands.
4799      func_execute_cmds "$old_postinstall_cmds" 'exit $?'
4800    done
4801
4802    test -n "$future_libdirs" && \
4803      func_warning "remember to run '$progname --finish$future_libdirs'"
4804
4805    if test -n "$current_libdirs"; then
4806      # Maybe just do a dry run.
4807      $opt_dry_run && current_libdirs=" -n$current_libdirs"
4808      exec_cmd='$SHELL "$progpath" $preserve_args --finish$current_libdirs'
4809    else
4810      exit $EXIT_SUCCESS
4811    fi
4812}
4813
4814test install = "$opt_mode" && func_mode_install ${1+"$@"}
4815
4816
4817# func_generate_dlsyms outputname originator pic_p
4818# Extract symbols from dlprefiles and create ${outputname}S.o with
4819# a dlpreopen symbol table.
4820func_generate_dlsyms ()
4821{
4822    $debug_cmd
4823
4824    my_outputname=$1
4825    my_originator=$2
4826    my_pic_p=${3-false}
4827    my_prefix=`$ECHO "$my_originator" | $SED 's%[^a-zA-Z0-9]%_%g'`
4828    my_dlsyms=
4829
4830    if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then
4831      if test -n "$NM" && test -n "$global_symbol_pipe"; then
4832	my_dlsyms=${my_outputname}S.c
4833      else
4834	func_error "not configured to extract global symbols from dlpreopened files"
4835      fi
4836    fi
4837
4838    if test -n "$my_dlsyms"; then
4839      case $my_dlsyms in
4840      "") ;;
4841      *.c)
4842	# Discover the nlist of each of the dlfiles.
4843	nlist=$output_objdir/$my_outputname.nm
4844
4845	func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
4846
4847	# Parse the name list into a source file.
4848	func_verbose "creating $output_objdir/$my_dlsyms"
4849
4850	$opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
4851/* $my_dlsyms - symbol resolution table for '$my_outputname' dlsym emulation. */
4852/* Generated by $PROGRAM (GNU $PACKAGE) $VERSION */
4853
4854#ifdef __cplusplus
4855extern \"C\" {
4856#endif
4857
4858#if defined __GNUC__ && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4))
4859#pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
4860#endif
4861
4862/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
4863#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE
4864/* DATA imports from DLLs on WIN32 can't be const, because runtime
4865   relocations are performed -- see ld's documentation on pseudo-relocs.  */
4866# define LT_DLSYM_CONST
4867#elif defined __osf__
4868/* This system does not cope well with relocations in const data.  */
4869# define LT_DLSYM_CONST
4870#else
4871# define LT_DLSYM_CONST const
4872#endif
4873
4874#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0)
4875
4876/* External symbol declarations for the compiler. */\
4877"
4878
4879	if test yes = "$dlself"; then
4880	  func_verbose "generating symbol list for '$output'"
4881
4882	  $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
4883
4884	  # Add our own program objects to the symbol list.
4885	  progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP`
4886	  for progfile in $progfiles; do
4887	    func_to_tool_file "$progfile" func_convert_file_msys_to_w32
4888	    func_verbose "extracting global C symbols from '$func_to_tool_file_result'"
4889	    $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'"
4890	  done
4891
4892	  if test -n "$exclude_expsyms"; then
4893	    $opt_dry_run || {
4894	      eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
4895	      eval '$MV "$nlist"T "$nlist"'
4896	    }
4897	  fi
4898
4899	  if test -n "$export_symbols_regex"; then
4900	    $opt_dry_run || {
4901	      eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
4902	      eval '$MV "$nlist"T "$nlist"'
4903	    }
4904	  fi
4905
4906	  # Prepare the list of exported symbols
4907	  if test -z "$export_symbols"; then
4908	    export_symbols=$output_objdir/$outputname.exp
4909	    $opt_dry_run || {
4910	      $RM $export_symbols
4911	      eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
4912	      case $host in
4913	      *cygwin* | *mingw* | *cegcc* )
4914                eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
4915                eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
4916	        ;;
4917	      esac
4918	    }
4919	  else
4920	    $opt_dry_run || {
4921	      eval "$SED -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
4922	      eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
4923	      eval '$MV "$nlist"T "$nlist"'
4924	      case $host in
4925	        *cygwin* | *mingw* | *cegcc* )
4926	          eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
4927	          eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
4928	          ;;
4929	      esac
4930	    }
4931	  fi
4932	fi
4933
4934	for dlprefile in $dlprefiles; do
4935	  func_verbose "extracting global C symbols from '$dlprefile'"
4936	  func_basename "$dlprefile"
4937	  name=$func_basename_result
4938          case $host in
4939	    *cygwin* | *mingw* | *cegcc* )
4940	      # if an import library, we need to obtain dlname
4941	      if func_win32_import_lib_p "$dlprefile"; then
4942	        func_tr_sh "$dlprefile"
4943	        eval "curr_lafile=\$libfile_$func_tr_sh_result"
4944	        dlprefile_dlbasename=
4945	        if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then
4946	          # Use subshell, to avoid clobbering current variable values
4947	          dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"`
4948	          if test -n "$dlprefile_dlname"; then
4949	            func_basename "$dlprefile_dlname"
4950	            dlprefile_dlbasename=$func_basename_result
4951	          else
4952	            # no lafile. user explicitly requested -dlpreopen <import library>.
4953	            $sharedlib_from_linklib_cmd "$dlprefile"
4954	            dlprefile_dlbasename=$sharedlib_from_linklib_result
4955	          fi
4956	        fi
4957	        $opt_dry_run || {
4958	          if test -n "$dlprefile_dlbasename"; then
4959	            eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"'
4960	          else
4961	            func_warning "Could not compute DLL name from $name"
4962	            eval '$ECHO ": $name " >> "$nlist"'
4963	          fi
4964	          func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
4965	          eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe |
4966	            $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'"
4967	        }
4968	      else # not an import lib
4969	        $opt_dry_run || {
4970	          eval '$ECHO ": $name " >> "$nlist"'
4971	          func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
4972	          eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
4973	        }
4974	      fi
4975	    ;;
4976	    *)
4977	      $opt_dry_run || {
4978	        eval '$ECHO ": $name " >> "$nlist"'
4979	        func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
4980	        eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
4981	      }
4982	    ;;
4983          esac
4984	done
4985
4986	$opt_dry_run || {
4987	  # Make sure we have at least an empty file.
4988	  test -f "$nlist" || : > "$nlist"
4989
4990	  if test -n "$exclude_expsyms"; then
4991	    $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
4992	    $MV "$nlist"T "$nlist"
4993	  fi
4994
4995	  # Try sorting and uniquifying the output.
4996	  if $GREP -v "^: " < "$nlist" |
4997	      if sort -k 3 </dev/null >/dev/null 2>&1; then
4998		sort -k 3
4999	      else
5000		sort +2
5001	      fi |
5002	      uniq > "$nlist"S; then
5003	    :
5004	  else
5005	    $GREP -v "^: " < "$nlist" > "$nlist"S
5006	  fi
5007
5008	  if test -f "$nlist"S; then
5009	    eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
5010	  else
5011	    echo '/* NONE */' >> "$output_objdir/$my_dlsyms"
5012	  fi
5013
5014	  func_show_eval '$RM "${nlist}I"'
5015	  if test -n "$global_symbol_to_import"; then
5016	    eval "$global_symbol_to_import"' < "$nlist"S > "$nlist"I'
5017	  fi
5018
5019	  echo >> "$output_objdir/$my_dlsyms" "\
5020
5021/* The mapping between symbol names and symbols.  */
5022typedef struct {
5023  const char *name;
5024  void *address;
5025} lt_dlsymlist;
5026extern LT_DLSYM_CONST lt_dlsymlist
5027lt_${my_prefix}_LTX_preloaded_symbols[];\
5028"
5029
5030	  if test -s "$nlist"I; then
5031	    echo >> "$output_objdir/$my_dlsyms" "\
5032static void lt_syminit(void)
5033{
5034  LT_DLSYM_CONST lt_dlsymlist *symbol = lt_${my_prefix}_LTX_preloaded_symbols;
5035  for (; symbol->name; ++symbol)
5036    {"
5037	    $SED 's/.*/      if (STREQ (symbol->name, \"&\")) symbol->address = (void *) \&&;/' < "$nlist"I >> "$output_objdir/$my_dlsyms"
5038	    echo >> "$output_objdir/$my_dlsyms" "\
5039    }
5040}"
5041	  fi
5042	  echo >> "$output_objdir/$my_dlsyms" "\
5043LT_DLSYM_CONST lt_dlsymlist
5044lt_${my_prefix}_LTX_preloaded_symbols[] =
5045{ {\"$my_originator\", (void *) 0},"
5046
5047	  if test -s "$nlist"I; then
5048	    echo >> "$output_objdir/$my_dlsyms" "\
5049  {\"@INIT@\", (void *) &lt_syminit},"
5050	  fi
5051
5052	  case $need_lib_prefix in
5053	  no)
5054	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
5055	    ;;
5056	  *)
5057	    eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
5058	    ;;
5059	  esac
5060	  echo >> "$output_objdir/$my_dlsyms" "\
5061  {0, (void *) 0}
5062};
5063
5064/* This works around a problem in FreeBSD linker */
5065#ifdef FREEBSD_WORKAROUND
5066static const void *lt_preloaded_setup() {
5067  return lt_${my_prefix}_LTX_preloaded_symbols;
5068}
5069#endif
5070
5071#ifdef __cplusplus
5072}
5073#endif\
5074"
5075	} # !$opt_dry_run
5076
5077	pic_flag_for_symtable=
5078	case "$compile_command " in
5079	*" -static "*) ;;
5080	*)
5081	  case $host in
5082	  # compiling the symbol table file with pic_flag works around
5083	  # a FreeBSD bug that causes programs to crash when -lm is
5084	  # linked before any other PIC object.  But we must not use
5085	  # pic_flag when linking with -static.  The problem exists in
5086	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
5087	  *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
5088	    pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
5089	  *-*-hpux*)
5090	    pic_flag_for_symtable=" $pic_flag"  ;;
5091	  *)
5092	    $my_pic_p && pic_flag_for_symtable=" $pic_flag"
5093	    ;;
5094	  esac
5095	  ;;
5096	esac
5097	symtab_cflags=
5098	for arg in $LTCFLAGS; do
5099	  case $arg in
5100	  -pie | -fpie | -fPIE) ;;
5101	  *) func_append symtab_cflags " $arg" ;;
5102	  esac
5103	done
5104
5105	# Now compile the dynamic symbol file.
5106	func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
5107
5108	# Clean up the generated files.
5109	func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T" "${nlist}I"'
5110
5111	# Transform the symbol file into the correct name.
5112	symfileobj=$output_objdir/${my_outputname}S.$objext
5113	case $host in
5114	*cygwin* | *mingw* | *cegcc* )
5115	  if test -f "$output_objdir/$my_outputname.def"; then
5116	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
5117	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
5118	  else
5119	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
5120	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
5121	  fi
5122	  ;;
5123	*)
5124	  compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
5125	  finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
5126	  ;;
5127	esac
5128	;;
5129      *)
5130	func_fatal_error "unknown suffix for '$my_dlsyms'"
5131	;;
5132      esac
5133    else
5134      # We keep going just in case the user didn't refer to
5135      # lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
5136      # really was required.
5137
5138      # Nullify the symbol file.
5139      compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"`
5140      finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"`
5141    fi
5142}
5143
5144# func_cygming_gnu_implib_p ARG
5145# This predicate returns with zero status (TRUE) if
5146# ARG is a GNU/binutils-style import library. Returns
5147# with nonzero status (FALSE) otherwise.
5148func_cygming_gnu_implib_p ()
5149{
5150  $debug_cmd
5151
5152  func_to_tool_file "$1" func_convert_file_msys_to_w32
5153  func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'`
5154  test -n "$func_cygming_gnu_implib_tmp"
5155}
5156
5157# func_cygming_ms_implib_p ARG
5158# This predicate returns with zero status (TRUE) if
5159# ARG is an MS-style import library. Returns
5160# with nonzero status (FALSE) otherwise.
5161func_cygming_ms_implib_p ()
5162{
5163  $debug_cmd
5164
5165  func_to_tool_file "$1" func_convert_file_msys_to_w32
5166  func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'`
5167  test -n "$func_cygming_ms_implib_tmp"
5168}
5169
5170# func_win32_libid arg
5171# return the library type of file 'arg'
5172#
5173# Need a lot of goo to handle *both* DLLs and import libs
5174# Has to be a shell function in order to 'eat' the argument
5175# that is supplied when $file_magic_command is called.
5176# Despite the name, also deal with 64 bit binaries.
5177func_win32_libid ()
5178{
5179  $debug_cmd
5180
5181  win32_libid_type=unknown
5182  win32_fileres=`file -L $1 2>/dev/null`
5183  case $win32_fileres in
5184  *ar\ archive\ import\ library*) # definitely import
5185    win32_libid_type="x86 archive import"
5186    ;;
5187  *ar\ archive*) # could be an import, or static
5188    # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD.
5189    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
5190       $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then
5191      case $nm_interface in
5192      "MS dumpbin")
5193	if func_cygming_ms_implib_p "$1" ||
5194	   func_cygming_gnu_implib_p "$1"
5195	then
5196	  win32_nmres=import
5197	else
5198	  win32_nmres=
5199	fi
5200	;;
5201      *)
5202	func_to_tool_file "$1" func_convert_file_msys_to_w32
5203	win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" |
5204	  $SED -n -e '
5205	    1,100{
5206		/ I /{
5207		    s|.*|import|
5208		    p
5209		    q
5210		}
5211	    }'`
5212	;;
5213      esac
5214      case $win32_nmres in
5215      import*)  win32_libid_type="x86 archive import";;
5216      *)        win32_libid_type="x86 archive static";;
5217      esac
5218    fi
5219    ;;
5220  *DLL*)
5221    win32_libid_type="x86 DLL"
5222    ;;
5223  *executable*) # but shell scripts are "executable" too...
5224    case $win32_fileres in
5225    *MS\ Windows\ PE\ Intel*)
5226      win32_libid_type="x86 DLL"
5227      ;;
5228    esac
5229    ;;
5230  esac
5231  $ECHO "$win32_libid_type"
5232}
5233
5234# func_cygming_dll_for_implib ARG
5235#
5236# Platform-specific function to extract the
5237# name of the DLL associated with the specified
5238# import library ARG.
5239# Invoked by eval'ing the libtool variable
5240#    $sharedlib_from_linklib_cmd
5241# Result is available in the variable
5242#    $sharedlib_from_linklib_result
5243func_cygming_dll_for_implib ()
5244{
5245  $debug_cmd
5246
5247  sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"`
5248}
5249
5250# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs
5251#
5252# The is the core of a fallback implementation of a
5253# platform-specific function to extract the name of the
5254# DLL associated with the specified import library LIBNAME.
5255#
5256# SECTION_NAME is either .idata$6 or .idata$7, depending
5257# on the platform and compiler that created the implib.
5258#
5259# Echos the name of the DLL associated with the
5260# specified import library.
5261func_cygming_dll_for_implib_fallback_core ()
5262{
5263  $debug_cmd
5264
5265  match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"`
5266  $OBJDUMP -s --section "$1" "$2" 2>/dev/null |
5267    $SED '/^Contents of section '"$match_literal"':/{
5268      # Place marker at beginning of archive member dllname section
5269      s/.*/====MARK====/
5270      p
5271      d
5272    }
5273    # These lines can sometimes be longer than 43 characters, but
5274    # are always uninteresting
5275    /:[	 ]*file format pe[i]\{,1\}-/d
5276    /^In archive [^:]*:/d
5277    # Ensure marker is printed
5278    /^====MARK====/p
5279    # Remove all lines with less than 43 characters
5280    /^.\{43\}/!d
5281    # From remaining lines, remove first 43 characters
5282    s/^.\{43\}//' |
5283    $SED -n '
5284      # Join marker and all lines until next marker into a single line
5285      /^====MARK====/ b para
5286      H
5287      $ b para
5288      b
5289      :para
5290      x
5291      s/\n//g
5292      # Remove the marker
5293      s/^====MARK====//
5294      # Remove trailing dots and whitespace
5295      s/[\. \t]*$//
5296      # Print
5297      /./p' |
5298    # we now have a list, one entry per line, of the stringified
5299    # contents of the appropriate section of all members of the
5300    # archive that possess that section. Heuristic: eliminate
5301    # all those that have a first or second character that is
5302    # a '.' (that is, objdump's representation of an unprintable
5303    # character.) This should work for all archives with less than
5304    # 0x302f exports -- but will fail for DLLs whose name actually
5305    # begins with a literal '.' or a single character followed by
5306    # a '.'.
5307    #
5308    # Of those that remain, print the first one.
5309    $SED -e '/^\./d;/^.\./d;q'
5310}
5311
5312# func_cygming_dll_for_implib_fallback ARG
5313# Platform-specific function to extract the
5314# name of the DLL associated with the specified
5315# import library ARG.
5316#
5317# This fallback implementation is for use when $DLLTOOL
5318# does not support the --identify-strict option.
5319# Invoked by eval'ing the libtool variable
5320#    $sharedlib_from_linklib_cmd
5321# Result is available in the variable
5322#    $sharedlib_from_linklib_result
5323func_cygming_dll_for_implib_fallback ()
5324{
5325  $debug_cmd
5326
5327  if func_cygming_gnu_implib_p "$1"; then
5328    # binutils import library
5329    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"`
5330  elif func_cygming_ms_implib_p "$1"; then
5331    # ms-generated import library
5332    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"`
5333  else
5334    # unknown
5335    sharedlib_from_linklib_result=
5336  fi
5337}
5338
5339
5340# func_extract_an_archive dir oldlib
5341func_extract_an_archive ()
5342{
5343    $debug_cmd
5344
5345    f_ex_an_ar_dir=$1; shift
5346    f_ex_an_ar_oldlib=$1
5347    if test yes = "$lock_old_archive_extraction"; then
5348      lockfile=$f_ex_an_ar_oldlib.lock
5349      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
5350	func_echo "Waiting for $lockfile to be removed"
5351	sleep 2
5352      done
5353    fi
5354    func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \
5355		   'stat=$?; rm -f "$lockfile"; exit $stat'
5356    if test yes = "$lock_old_archive_extraction"; then
5357      $opt_dry_run || rm -f "$lockfile"
5358    fi
5359    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
5360     :
5361    else
5362      func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
5363    fi
5364}
5365
5366
5367# func_extract_archives gentop oldlib ...
5368func_extract_archives ()
5369{
5370    $debug_cmd
5371
5372    my_gentop=$1; shift
5373    my_oldlibs=${1+"$@"}
5374    my_oldobjs=
5375    my_xlib=
5376    my_xabs=
5377    my_xdir=
5378
5379    for my_xlib in $my_oldlibs; do
5380      # Extract the objects.
5381      case $my_xlib in
5382	[\\/]* | [A-Za-z]:[\\/]*) my_xabs=$my_xlib ;;
5383	*) my_xabs=`pwd`"/$my_xlib" ;;
5384      esac
5385      func_basename "$my_xlib"
5386      my_xlib=$func_basename_result
5387      my_xlib_u=$my_xlib
5388      while :; do
5389        case " $extracted_archives " in
5390	*" $my_xlib_u "*)
5391	  func_arith $extracted_serial + 1
5392	  extracted_serial=$func_arith_result
5393	  my_xlib_u=lt$extracted_serial-$my_xlib ;;
5394	*) break ;;
5395	esac
5396      done
5397      extracted_archives="$extracted_archives $my_xlib_u"
5398      my_xdir=$my_gentop/$my_xlib_u
5399
5400      func_mkdir_p "$my_xdir"
5401
5402      case $host in
5403      *-darwin*)
5404	func_verbose "Extracting $my_xabs"
5405	# Do not bother doing anything if just a dry run
5406	$opt_dry_run || {
5407	  darwin_orig_dir=`pwd`
5408	  cd $my_xdir || exit $?
5409	  darwin_archive=$my_xabs
5410	  darwin_curdir=`pwd`
5411	  func_basename "$darwin_archive"
5412	  darwin_base_archive=$func_basename_result
5413	  darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
5414	  if test -n "$darwin_arches"; then
5415	    darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
5416	    darwin_arch=
5417	    func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
5418	    for darwin_arch in  $darwin_arches; do
5419	      func_mkdir_p "unfat-$$/$darwin_base_archive-$darwin_arch"
5420	      $LIPO -thin $darwin_arch -output "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" "$darwin_archive"
5421	      cd "unfat-$$/$darwin_base_archive-$darwin_arch"
5422	      func_extract_an_archive "`pwd`" "$darwin_base_archive"
5423	      cd "$darwin_curdir"
5424	      $RM "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive"
5425	    done # $darwin_arches
5426            ## Okay now we've a bunch of thin objects, gotta fatten them up :)
5427	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$sed_basename" | sort -u`
5428	    darwin_file=
5429	    darwin_files=
5430	    for darwin_file in $darwin_filelist; do
5431	      darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP`
5432	      $LIPO -create -output "$darwin_file" $darwin_files
5433	    done # $darwin_filelist
5434	    $RM -rf unfat-$$
5435	    cd "$darwin_orig_dir"
5436	  else
5437	    cd $darwin_orig_dir
5438	    func_extract_an_archive "$my_xdir" "$my_xabs"
5439	  fi # $darwin_arches
5440	} # !$opt_dry_run
5441	;;
5442      *)
5443        func_extract_an_archive "$my_xdir" "$my_xabs"
5444	;;
5445      esac
5446      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP`
5447    done
5448
5449    func_extract_archives_result=$my_oldobjs
5450}
5451
5452
5453# func_emit_wrapper [arg=no]
5454#
5455# Emit a libtool wrapper script on stdout.
5456# Don't directly open a file because we may want to
5457# incorporate the script contents within a cygwin/mingw
5458# wrapper executable.  Must ONLY be called from within
5459# func_mode_link because it depends on a number of variables
5460# set therein.
5461#
5462# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
5463# variable will take.  If 'yes', then the emitted script
5464# will assume that the directory where it is stored is
5465# the $objdir directory.  This is a cygwin/mingw-specific
5466# behavior.
5467func_emit_wrapper ()
5468{
5469	func_emit_wrapper_arg1=${1-no}
5470
5471	$ECHO "\
5472#! $SHELL
5473
5474# $output - temporary wrapper script for $objdir/$outputname
5475# Generated by $PROGRAM (GNU $PACKAGE) $VERSION
5476#
5477# The $output program cannot be directly executed until all the libtool
5478# libraries that it depends on are installed.
5479#
5480# This wrapper script should never be moved out of the build directory.
5481# If it is, it will not operate correctly.
5482
5483# Sed substitution that helps us do robust quoting.  It backslashifies
5484# metacharacters that are still active within double-quoted strings.
5485sed_quote_subst='$sed_quote_subst'
5486
5487# Be Bourne compatible
5488if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
5489  emulate sh
5490  NULLCMD=:
5491  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
5492  # is contrary to our usage.  Disable this feature.
5493  alias -g '\${1+\"\$@\"}'='\"\$@\"'
5494  setopt NO_GLOB_SUBST
5495else
5496  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
5497fi
5498BIN_SH=xpg4; export BIN_SH # for Tru64
5499DUALCASE=1; export DUALCASE # for MKS sh
5500
5501# The HP-UX ksh and POSIX shell print the target directory to stdout
5502# if CDPATH is set.
5503(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
5504
5505relink_command=\"$relink_command\"
5506
5507# This environment variable determines our operation mode.
5508if test \"\$libtool_install_magic\" = \"$magic\"; then
5509  # install mode needs the following variables:
5510  generated_by_libtool_version='$macro_version'
5511  notinst_deplibs='$notinst_deplibs'
5512else
5513  # When we are sourced in execute mode, \$file and \$ECHO are already set.
5514  if test \"\$libtool_execute_magic\" != \"$magic\"; then
5515    file=\"\$0\""
5516
5517    func_quote_arg pretty "$ECHO"
5518    qECHO=$func_quote_arg_result
5519    $ECHO "\
5520
5521# A function that is used when there is no print builtin or printf.
5522func_fallback_echo ()
5523{
5524  eval 'cat <<_LTECHO_EOF
5525\$1
5526_LTECHO_EOF'
5527}
5528    ECHO=$qECHO
5529  fi
5530
5531# Very basic option parsing. These options are (a) specific to
5532# the libtool wrapper, (b) are identical between the wrapper
5533# /script/ and the wrapper /executable/ that is used only on
5534# windows platforms, and (c) all begin with the string "--lt-"
5535# (application programs are unlikely to have options that match
5536# this pattern).
5537#
5538# There are only two supported options: --lt-debug and
5539# --lt-dump-script. There is, deliberately, no --lt-help.
5540#
5541# The first argument to this parsing function should be the
5542# script's $0 value, followed by "$@".
5543lt_option_debug=
5544func_parse_lt_options ()
5545{
5546  lt_script_arg0=\$0
5547  shift
5548  for lt_opt
5549  do
5550    case \"\$lt_opt\" in
5551    --lt-debug) lt_option_debug=1 ;;
5552    --lt-dump-script)
5553        lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\`
5554        test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=.
5555        lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\`
5556        cat \"\$lt_dump_D/\$lt_dump_F\"
5557        exit 0
5558      ;;
5559    --lt-*)
5560        \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2
5561        exit 1
5562      ;;
5563    esac
5564  done
5565
5566  # Print the debug banner immediately:
5567  if test -n \"\$lt_option_debug\"; then
5568    echo \"$outputname:$output:\$LINENO: libtool wrapper (GNU $PACKAGE) $VERSION\" 1>&2
5569  fi
5570}
5571
5572# Used when --lt-debug. Prints its arguments to stdout
5573# (redirection is the responsibility of the caller)
5574func_lt_dump_args ()
5575{
5576  lt_dump_args_N=1;
5577  for lt_arg
5578  do
5579    \$ECHO \"$outputname:$output:\$LINENO: newargv[\$lt_dump_args_N]: \$lt_arg\"
5580    lt_dump_args_N=\`expr \$lt_dump_args_N + 1\`
5581  done
5582}
5583
5584# Core function for launching the target application
5585func_exec_program_core ()
5586{
5587"
5588  case $host in
5589  # Backslashes separate directories on plain windows
5590  *-*-mingw | *-*-os2* | *-cegcc*)
5591    $ECHO "\
5592      if test -n \"\$lt_option_debug\"; then
5593        \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2
5594        func_lt_dump_args \${1+\"\$@\"} 1>&2
5595      fi
5596      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
5597"
5598    ;;
5599
5600  *)
5601    $ECHO "\
5602      if test -n \"\$lt_option_debug\"; then
5603        \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir/\$program\" 1>&2
5604        func_lt_dump_args \${1+\"\$@\"} 1>&2
5605      fi
5606      exec \"\$progdir/\$program\" \${1+\"\$@\"}
5607"
5608    ;;
5609  esac
5610  $ECHO "\
5611      \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
5612      exit 1
5613}
5614
5615# A function to encapsulate launching the target application
5616# Strips options in the --lt-* namespace from \$@ and
5617# launches target application with the remaining arguments.
5618func_exec_program ()
5619{
5620  case \" \$* \" in
5621  *\\ --lt-*)
5622    for lt_wr_arg
5623    do
5624      case \$lt_wr_arg in
5625      --lt-*) ;;
5626      *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
5627      esac
5628      shift
5629    done ;;
5630  esac
5631  func_exec_program_core \${1+\"\$@\"}
5632}
5633
5634  # Parse options
5635  func_parse_lt_options \"\$0\" \${1+\"\$@\"}
5636
5637  # Find the directory that this script lives in.
5638  thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\`
5639  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
5640
5641  # Follow symbolic links until we get to the real thisdir.
5642  file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\`
5643  while test -n \"\$file\"; do
5644    destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\`
5645
5646    # If there was a directory component, then change thisdir.
5647    if test \"x\$destdir\" != \"x\$file\"; then
5648      case \"\$destdir\" in
5649      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
5650      *) thisdir=\"\$thisdir/\$destdir\" ;;
5651      esac
5652    fi
5653
5654    file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\`
5655    file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\`
5656  done
5657
5658  # Usually 'no', except on cygwin/mingw when embedded into
5659  # the cwrapper.
5660  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1
5661  if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
5662    # special case for '.'
5663    if test \"\$thisdir\" = \".\"; then
5664      thisdir=\`pwd\`
5665    fi
5666    # remove .libs from thisdir
5667    case \"\$thisdir\" in
5668    *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;;
5669    $objdir )   thisdir=. ;;
5670    esac
5671  fi
5672
5673  # Try to get the absolute directory name.
5674  absdir=\`cd \"\$thisdir\" && pwd\`
5675  test -n \"\$absdir\" && thisdir=\"\$absdir\"
5676"
5677
5678	if test yes = "$fast_install"; then
5679	  $ECHO "\
5680  program=lt-'$outputname'$exeext
5681  progdir=\"\$thisdir/$objdir\"
5682
5683  if test ! -f \"\$progdir/\$program\" ||
5684     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | $SED 1q\`; \\
5685       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
5686
5687    file=\"\$\$-\$program\"
5688
5689    if test ! -d \"\$progdir\"; then
5690      $MKDIR \"\$progdir\"
5691    else
5692      $RM \"\$progdir/\$file\"
5693    fi"
5694
5695	  $ECHO "\
5696
5697    # relink executable if necessary
5698    if test -n \"\$relink_command\"; then
5699      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
5700      else
5701	\$ECHO \"\$relink_command_output\" >&2
5702	$RM \"\$progdir/\$file\"
5703	exit 1
5704      fi
5705    fi
5706
5707    $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
5708    { $RM \"\$progdir/\$program\";
5709      $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
5710    $RM \"\$progdir/\$file\"
5711  fi"
5712	else
5713	  $ECHO "\
5714  program='$outputname'
5715  progdir=\"\$thisdir/$objdir\"
5716"
5717	fi
5718
5719	$ECHO "\
5720
5721  if test -f \"\$progdir/\$program\"; then"
5722
5723	# fixup the dll searchpath if we need to.
5724	#
5725	# Fix the DLL searchpath if we need to.  Do this before prepending
5726	# to shlibpath, because on Windows, both are PATH and uninstalled
5727	# libraries must come first.
5728	if test -n "$dllsearchpath"; then
5729	  $ECHO "\
5730    # Add the dll search path components to the executable PATH
5731    PATH=$dllsearchpath:\$PATH
5732"
5733	fi
5734
5735	# Export our shlibpath_var if we have one.
5736	if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
5737	  $ECHO "\
5738    # Add our own library path to $shlibpath_var
5739    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
5740
5741    # Some systems cannot cope with colon-terminated $shlibpath_var
5742    # The second colon is a workaround for a bug in BeOS R4 sed
5743    $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\`
5744
5745    export $shlibpath_var
5746"
5747	fi
5748
5749	$ECHO "\
5750    if test \"\$libtool_execute_magic\" != \"$magic\"; then
5751      # Run the actual program with our arguments.
5752      func_exec_program \${1+\"\$@\"}
5753    fi
5754  else
5755    # The program doesn't exist.
5756    \$ECHO \"\$0: error: '\$progdir/\$program' does not exist\" 1>&2
5757    \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
5758    \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
5759    exit 1
5760  fi
5761fi\
5762"
5763}
5764
5765
5766# func_emit_cwrapperexe_src
5767# emit the source code for a wrapper executable on stdout
5768# Must ONLY be called from within func_mode_link because
5769# it depends on a number of variable set therein.
5770func_emit_cwrapperexe_src ()
5771{
5772	cat <<EOF
5773
5774/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
5775   Generated by $PROGRAM (GNU $PACKAGE) $VERSION
5776
5777   The $output program cannot be directly executed until all the libtool
5778   libraries that it depends on are installed.
5779
5780   This wrapper executable should never be moved out of the build directory.
5781   If it is, it will not operate correctly.
5782*/
5783EOF
5784	    cat <<"EOF"
5785#ifdef _MSC_VER
5786# define _CRT_SECURE_NO_DEPRECATE 1
5787#endif
5788#include <stdio.h>
5789#include <stdlib.h>
5790#ifdef _MSC_VER
5791# include <direct.h>
5792# include <process.h>
5793# include <io.h>
5794#else
5795# include <unistd.h>
5796# include <stdint.h>
5797# ifdef __CYGWIN__
5798#  include <io.h>
5799# endif
5800#endif
5801#include <malloc.h>
5802#include <stdarg.h>
5803#include <assert.h>
5804#include <string.h>
5805#include <ctype.h>
5806#include <errno.h>
5807#include <fcntl.h>
5808#include <sys/stat.h>
5809
5810#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0)
5811
5812/* declarations of non-ANSI functions */
5813#if defined __MINGW32__
5814# ifdef __STRICT_ANSI__
5815int _putenv (const char *);
5816# endif
5817#elif defined __CYGWIN__
5818# ifdef __STRICT_ANSI__
5819char *realpath (const char *, char *);
5820int putenv (char *);
5821int setenv (const char *, const char *, int);
5822# endif
5823/* #elif defined other_platform || defined ... */
5824#endif
5825
5826/* portability defines, excluding path handling macros */
5827#if defined _MSC_VER
5828# define setmode _setmode
5829# define stat    _stat
5830# define chmod   _chmod
5831# define getcwd  _getcwd
5832# define putenv  _putenv
5833# define S_IXUSR _S_IEXEC
5834#elif defined __MINGW32__
5835# define setmode _setmode
5836# define stat    _stat
5837# define chmod   _chmod
5838# define getcwd  _getcwd
5839# define putenv  _putenv
5840#elif defined __CYGWIN__
5841# define HAVE_SETENV
5842# define FOPEN_WB "wb"
5843/* #elif defined other platforms ... */
5844#endif
5845
5846#if defined PATH_MAX
5847# define LT_PATHMAX PATH_MAX
5848#elif defined MAXPATHLEN
5849# define LT_PATHMAX MAXPATHLEN
5850#else
5851# define LT_PATHMAX 1024
5852#endif
5853
5854#ifndef S_IXOTH
5855# define S_IXOTH 0
5856#endif
5857#ifndef S_IXGRP
5858# define S_IXGRP 0
5859#endif
5860
5861/* path handling portability macros */
5862#ifndef DIR_SEPARATOR
5863# define DIR_SEPARATOR '/'
5864# define PATH_SEPARATOR ':'
5865#endif
5866
5867#if defined _WIN32 || defined __MSDOS__ || defined __DJGPP__ || \
5868  defined __OS2__
5869# define HAVE_DOS_BASED_FILE_SYSTEM
5870# define FOPEN_WB "wb"
5871# ifndef DIR_SEPARATOR_2
5872#  define DIR_SEPARATOR_2 '\\'
5873# endif
5874# ifndef PATH_SEPARATOR_2
5875#  define PATH_SEPARATOR_2 ';'
5876# endif
5877#endif
5878
5879#ifndef DIR_SEPARATOR_2
5880# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
5881#else /* DIR_SEPARATOR_2 */
5882# define IS_DIR_SEPARATOR(ch) \
5883	(((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
5884#endif /* DIR_SEPARATOR_2 */
5885
5886#ifndef PATH_SEPARATOR_2
5887# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
5888#else /* PATH_SEPARATOR_2 */
5889# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
5890#endif /* PATH_SEPARATOR_2 */
5891
5892#ifndef FOPEN_WB
5893# define FOPEN_WB "w"
5894#endif
5895#ifndef _O_BINARY
5896# define _O_BINARY 0
5897#endif
5898
5899#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
5900#define XFREE(stale) do { \
5901  if (stale) { free (stale); stale = 0; } \
5902} while (0)
5903
5904#if defined LT_DEBUGWRAPPER
5905static int lt_debug = 1;
5906#else
5907static int lt_debug = 0;
5908#endif
5909
5910const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */
5911
5912void *xmalloc (size_t num);
5913char *xstrdup (const char *string);
5914const char *base_name (const char *name);
5915char *find_executable (const char *wrapper);
5916char *chase_symlinks (const char *pathspec);
5917int make_executable (const char *path);
5918int check_executable (const char *path);
5919char *strendzap (char *str, const char *pat);
5920void lt_debugprintf (const char *file, int line, const char *fmt, ...);
5921void lt_fatal (const char *file, int line, const char *message, ...);
5922static const char *nonnull (const char *s);
5923static const char *nonempty (const char *s);
5924void lt_setenv (const char *name, const char *value);
5925char *lt_extend_str (const char *orig_value, const char *add, int to_end);
5926void lt_update_exe_path (const char *name, const char *value);
5927void lt_update_lib_path (const char *name, const char *value);
5928char **prepare_spawn (char **argv);
5929void lt_dump_script (FILE *f);
5930EOF
5931
5932	    cat <<EOF
5933#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 5)
5934# define externally_visible volatile
5935#else
5936# define externally_visible __attribute__((externally_visible)) volatile
5937#endif
5938externally_visible const char * MAGIC_EXE = "$magic_exe";
5939const char * LIB_PATH_VARNAME = "$shlibpath_var";
5940EOF
5941
5942	    if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
5943              func_to_host_path "$temp_rpath"
5944	      cat <<EOF
5945const char * LIB_PATH_VALUE   = "$func_to_host_path_result";
5946EOF
5947	    else
5948	      cat <<"EOF"
5949const char * LIB_PATH_VALUE   = "";
5950EOF
5951	    fi
5952
5953	    if test -n "$dllsearchpath"; then
5954              func_to_host_path "$dllsearchpath:"
5955	      cat <<EOF
5956const char * EXE_PATH_VARNAME = "PATH";
5957const char * EXE_PATH_VALUE   = "$func_to_host_path_result";
5958EOF
5959	    else
5960	      cat <<"EOF"
5961const char * EXE_PATH_VARNAME = "";
5962const char * EXE_PATH_VALUE   = "";
5963EOF
5964	    fi
5965
5966	    if test yes = "$fast_install"; then
5967	      cat <<EOF
5968const char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
5969EOF
5970	    else
5971	      cat <<EOF
5972const char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
5973EOF
5974	    fi
5975
5976
5977	    cat <<"EOF"
5978
5979#define LTWRAPPER_OPTION_PREFIX         "--lt-"
5980
5981static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
5982static const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX "dump-script";
5983static const char *debug_opt            = LTWRAPPER_OPTION_PREFIX "debug";
5984
5985int
5986main (int argc, char *argv[])
5987{
5988  char **newargz;
5989  int  newargc;
5990  char *tmp_pathspec;
5991  char *actual_cwrapper_path;
5992  char *actual_cwrapper_name;
5993  char *target_name;
5994  char *lt_argv_zero;
5995  int rval = 127;
5996
5997  int i;
5998
5999  program_name = (char *) xstrdup (base_name (argv[0]));
6000  newargz = XMALLOC (char *, (size_t) argc + 1);
6001
6002  /* very simple arg parsing; don't want to rely on getopt
6003   * also, copy all non cwrapper options to newargz, except
6004   * argz[0], which is handled differently
6005   */
6006  newargc=0;
6007  for (i = 1; i < argc; i++)
6008    {
6009      if (STREQ (argv[i], dumpscript_opt))
6010	{
6011EOF
6012	    case $host in
6013	      *mingw* | *cygwin* )
6014		# make stdout use "unix" line endings
6015		echo "          setmode(1,_O_BINARY);"
6016		;;
6017	      esac
6018
6019	    cat <<"EOF"
6020	  lt_dump_script (stdout);
6021	  return 0;
6022	}
6023      if (STREQ (argv[i], debug_opt))
6024	{
6025          lt_debug = 1;
6026          continue;
6027	}
6028      if (STREQ (argv[i], ltwrapper_option_prefix))
6029        {
6030          /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
6031             namespace, but it is not one of the ones we know about and
6032             have already dealt with, above (inluding dump-script), then
6033             report an error. Otherwise, targets might begin to believe
6034             they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
6035             namespace. The first time any user complains about this, we'll
6036             need to make LTWRAPPER_OPTION_PREFIX a configure-time option
6037             or a configure.ac-settable value.
6038           */
6039          lt_fatal (__FILE__, __LINE__,
6040		    "unrecognized %s option: '%s'",
6041                    ltwrapper_option_prefix, argv[i]);
6042        }
6043      /* otherwise ... */
6044      newargz[++newargc] = xstrdup (argv[i]);
6045    }
6046  newargz[++newargc] = NULL;
6047
6048EOF
6049	    cat <<EOF
6050  /* The GNU banner must be the first non-error debug message */
6051  lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE) $VERSION\n");
6052EOF
6053	    cat <<"EOF"
6054  lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]);
6055  lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name);
6056
6057  tmp_pathspec = find_executable (argv[0]);
6058  if (tmp_pathspec == NULL)
6059    lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]);
6060  lt_debugprintf (__FILE__, __LINE__,
6061                  "(main) found exe (before symlink chase) at: %s\n",
6062		  tmp_pathspec);
6063
6064  actual_cwrapper_path = chase_symlinks (tmp_pathspec);
6065  lt_debugprintf (__FILE__, __LINE__,
6066                  "(main) found exe (after symlink chase) at: %s\n",
6067		  actual_cwrapper_path);
6068  XFREE (tmp_pathspec);
6069
6070  actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path));
6071  strendzap (actual_cwrapper_path, actual_cwrapper_name);
6072
6073  /* wrapper name transforms */
6074  strendzap (actual_cwrapper_name, ".exe");
6075  tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
6076  XFREE (actual_cwrapper_name);
6077  actual_cwrapper_name = tmp_pathspec;
6078  tmp_pathspec = 0;
6079
6080  /* target_name transforms -- use actual target program name; might have lt- prefix */
6081  target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
6082  strendzap (target_name, ".exe");
6083  tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
6084  XFREE (target_name);
6085  target_name = tmp_pathspec;
6086  tmp_pathspec = 0;
6087
6088  lt_debugprintf (__FILE__, __LINE__,
6089		  "(main) libtool target name: %s\n",
6090		  target_name);
6091EOF
6092
6093	    cat <<EOF
6094  newargz[0] =
6095    XMALLOC (char, (strlen (actual_cwrapper_path) +
6096		    strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
6097  strcpy (newargz[0], actual_cwrapper_path);
6098  strcat (newargz[0], "$objdir");
6099  strcat (newargz[0], "/");
6100EOF
6101
6102	    cat <<"EOF"
6103  /* stop here, and copy so we don't have to do this twice */
6104  tmp_pathspec = xstrdup (newargz[0]);
6105
6106  /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
6107  strcat (newargz[0], actual_cwrapper_name);
6108
6109  /* DO want the lt- prefix here if it exists, so use target_name */
6110  lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
6111  XFREE (tmp_pathspec);
6112  tmp_pathspec = NULL;
6113EOF
6114
6115	    case $host_os in
6116	      mingw*)
6117	    cat <<"EOF"
6118  {
6119    char* p;
6120    while ((p = strchr (newargz[0], '\\')) != NULL)
6121      {
6122	*p = '/';
6123      }
6124    while ((p = strchr (lt_argv_zero, '\\')) != NULL)
6125      {
6126	*p = '/';
6127      }
6128  }
6129EOF
6130	    ;;
6131	    esac
6132
6133	    cat <<"EOF"
6134  XFREE (target_name);
6135  XFREE (actual_cwrapper_path);
6136  XFREE (actual_cwrapper_name);
6137
6138  lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
6139  lt_setenv ("DUALCASE", "1");  /* for MSK sh */
6140  /* Update the DLL searchpath.  EXE_PATH_VALUE ($dllsearchpath) must
6141     be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath)
6142     because on Windows, both *_VARNAMEs are PATH but uninstalled
6143     libraries must come first. */
6144  lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
6145  lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
6146
6147  lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n",
6148		  nonnull (lt_argv_zero));
6149  for (i = 0; i < newargc; i++)
6150    {
6151      lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n",
6152		      i, nonnull (newargz[i]));
6153    }
6154
6155EOF
6156
6157	    case $host_os in
6158	      mingw*)
6159		cat <<"EOF"
6160  /* execv doesn't actually work on mingw as expected on unix */
6161  newargz = prepare_spawn (newargz);
6162  rval = (int) _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
6163  if (rval == -1)
6164    {
6165      /* failed to start process */
6166      lt_debugprintf (__FILE__, __LINE__,
6167		      "(main) failed to launch target \"%s\": %s\n",
6168		      lt_argv_zero, nonnull (strerror (errno)));
6169      return 127;
6170    }
6171  return rval;
6172EOF
6173		;;
6174	      *)
6175		cat <<"EOF"
6176  execv (lt_argv_zero, newargz);
6177  return rval; /* =127, but avoids unused variable warning */
6178EOF
6179		;;
6180	    esac
6181
6182	    cat <<"EOF"
6183}
6184
6185void *
6186xmalloc (size_t num)
6187{
6188  void *p = (void *) malloc (num);
6189  if (!p)
6190    lt_fatal (__FILE__, __LINE__, "memory exhausted");
6191
6192  return p;
6193}
6194
6195char *
6196xstrdup (const char *string)
6197{
6198  return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
6199			  string) : NULL;
6200}
6201
6202const char *
6203base_name (const char *name)
6204{
6205  const char *base;
6206
6207#if defined HAVE_DOS_BASED_FILE_SYSTEM
6208  /* Skip over the disk name in MSDOS pathnames. */
6209  if (isalpha ((unsigned char) name[0]) && name[1] == ':')
6210    name += 2;
6211#endif
6212
6213  for (base = name; *name; name++)
6214    if (IS_DIR_SEPARATOR (*name))
6215      base = name + 1;
6216  return base;
6217}
6218
6219int
6220check_executable (const char *path)
6221{
6222  struct stat st;
6223
6224  lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n",
6225                  nonempty (path));
6226  if ((!path) || (!*path))
6227    return 0;
6228
6229  if ((stat (path, &st) >= 0)
6230      && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
6231    return 1;
6232  else
6233    return 0;
6234}
6235
6236int
6237make_executable (const char *path)
6238{
6239  int rval = 0;
6240  struct stat st;
6241
6242  lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n",
6243                  nonempty (path));
6244  if ((!path) || (!*path))
6245    return 0;
6246
6247  if (stat (path, &st) >= 0)
6248    {
6249      rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
6250    }
6251  return rval;
6252}
6253
6254/* Searches for the full path of the wrapper.  Returns
6255   newly allocated full path name if found, NULL otherwise
6256   Does not chase symlinks, even on platforms that support them.
6257*/
6258char *
6259find_executable (const char *wrapper)
6260{
6261  int has_slash = 0;
6262  const char *p;
6263  const char *p_next;
6264  /* static buffer for getcwd */
6265  char tmp[LT_PATHMAX + 1];
6266  size_t tmp_len;
6267  char *concat_name;
6268
6269  lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n",
6270                  nonempty (wrapper));
6271
6272  if ((wrapper == NULL) || (*wrapper == '\0'))
6273    return NULL;
6274
6275  /* Absolute path? */
6276#if defined HAVE_DOS_BASED_FILE_SYSTEM
6277  if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
6278    {
6279      concat_name = xstrdup (wrapper);
6280      if (check_executable (concat_name))
6281	return concat_name;
6282      XFREE (concat_name);
6283    }
6284  else
6285    {
6286#endif
6287      if (IS_DIR_SEPARATOR (wrapper[0]))
6288	{
6289	  concat_name = xstrdup (wrapper);
6290	  if (check_executable (concat_name))
6291	    return concat_name;
6292	  XFREE (concat_name);
6293	}
6294#if defined HAVE_DOS_BASED_FILE_SYSTEM
6295    }
6296#endif
6297
6298  for (p = wrapper; *p; p++)
6299    if (*p == '/')
6300      {
6301	has_slash = 1;
6302	break;
6303      }
6304  if (!has_slash)
6305    {
6306      /* no slashes; search PATH */
6307      const char *path = getenv ("PATH");
6308      if (path != NULL)
6309	{
6310	  for (p = path; *p; p = p_next)
6311	    {
6312	      const char *q;
6313	      size_t p_len;
6314	      for (q = p; *q; q++)
6315		if (IS_PATH_SEPARATOR (*q))
6316		  break;
6317	      p_len = (size_t) (q - p);
6318	      p_next = (*q == '\0' ? q : q + 1);
6319	      if (p_len == 0)
6320		{
6321		  /* empty path: current directory */
6322		  if (getcwd (tmp, LT_PATHMAX) == NULL)
6323		    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
6324                              nonnull (strerror (errno)));
6325		  tmp_len = strlen (tmp);
6326		  concat_name =
6327		    XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
6328		  memcpy (concat_name, tmp, tmp_len);
6329		  concat_name[tmp_len] = '/';
6330		  strcpy (concat_name + tmp_len + 1, wrapper);
6331		}
6332	      else
6333		{
6334		  concat_name =
6335		    XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
6336		  memcpy (concat_name, p, p_len);
6337		  concat_name[p_len] = '/';
6338		  strcpy (concat_name + p_len + 1, wrapper);
6339		}
6340	      if (check_executable (concat_name))
6341		return concat_name;
6342	      XFREE (concat_name);
6343	    }
6344	}
6345      /* not found in PATH; assume curdir */
6346    }
6347  /* Relative path | not found in path: prepend cwd */
6348  if (getcwd (tmp, LT_PATHMAX) == NULL)
6349    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
6350              nonnull (strerror (errno)));
6351  tmp_len = strlen (tmp);
6352  concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
6353  memcpy (concat_name, tmp, tmp_len);
6354  concat_name[tmp_len] = '/';
6355  strcpy (concat_name + tmp_len + 1, wrapper);
6356
6357  if (check_executable (concat_name))
6358    return concat_name;
6359  XFREE (concat_name);
6360  return NULL;
6361}
6362
6363char *
6364chase_symlinks (const char *pathspec)
6365{
6366#ifndef S_ISLNK
6367  return xstrdup (pathspec);
6368#else
6369  char buf[LT_PATHMAX];
6370  struct stat s;
6371  char *tmp_pathspec = xstrdup (pathspec);
6372  char *p;
6373  int has_symlinks = 0;
6374  while (strlen (tmp_pathspec) && !has_symlinks)
6375    {
6376      lt_debugprintf (__FILE__, __LINE__,
6377		      "checking path component for symlinks: %s\n",
6378		      tmp_pathspec);
6379      if (lstat (tmp_pathspec, &s) == 0)
6380	{
6381	  if (S_ISLNK (s.st_mode) != 0)
6382	    {
6383	      has_symlinks = 1;
6384	      break;
6385	    }
6386
6387	  /* search backwards for last DIR_SEPARATOR */
6388	  p = tmp_pathspec + strlen (tmp_pathspec) - 1;
6389	  while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
6390	    p--;
6391	  if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
6392	    {
6393	      /* no more DIR_SEPARATORS left */
6394	      break;
6395	    }
6396	  *p = '\0';
6397	}
6398      else
6399	{
6400	  lt_fatal (__FILE__, __LINE__,
6401		    "error accessing file \"%s\": %s",
6402		    tmp_pathspec, nonnull (strerror (errno)));
6403	}
6404    }
6405  XFREE (tmp_pathspec);
6406
6407  if (!has_symlinks)
6408    {
6409      return xstrdup (pathspec);
6410    }
6411
6412  tmp_pathspec = realpath (pathspec, buf);
6413  if (tmp_pathspec == 0)
6414    {
6415      lt_fatal (__FILE__, __LINE__,
6416		"could not follow symlinks for %s", pathspec);
6417    }
6418  return xstrdup (tmp_pathspec);
6419#endif
6420}
6421
6422char *
6423strendzap (char *str, const char *pat)
6424{
6425  size_t len, patlen;
6426
6427  assert (str != NULL);
6428  assert (pat != NULL);
6429
6430  len = strlen (str);
6431  patlen = strlen (pat);
6432
6433  if (patlen <= len)
6434    {
6435      str += len - patlen;
6436      if (STREQ (str, pat))
6437	*str = '\0';
6438    }
6439  return str;
6440}
6441
6442void
6443lt_debugprintf (const char *file, int line, const char *fmt, ...)
6444{
6445  va_list args;
6446  if (lt_debug)
6447    {
6448      (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line);
6449      va_start (args, fmt);
6450      (void) vfprintf (stderr, fmt, args);
6451      va_end (args);
6452    }
6453}
6454
6455static void
6456lt_error_core (int exit_status, const char *file,
6457	       int line, const char *mode,
6458	       const char *message, va_list ap)
6459{
6460  fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode);
6461  vfprintf (stderr, message, ap);
6462  fprintf (stderr, ".\n");
6463
6464  if (exit_status >= 0)
6465    exit (exit_status);
6466}
6467
6468void
6469lt_fatal (const char *file, int line, const char *message, ...)
6470{
6471  va_list ap;
6472  va_start (ap, message);
6473  lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap);
6474  va_end (ap);
6475}
6476
6477static const char *
6478nonnull (const char *s)
6479{
6480  return s ? s : "(null)";
6481}
6482
6483static const char *
6484nonempty (const char *s)
6485{
6486  return (s && !*s) ? "(empty)" : nonnull (s);
6487}
6488
6489void
6490lt_setenv (const char *name, const char *value)
6491{
6492  lt_debugprintf (__FILE__, __LINE__,
6493		  "(lt_setenv) setting '%s' to '%s'\n",
6494                  nonnull (name), nonnull (value));
6495  {
6496#ifdef HAVE_SETENV
6497    /* always make a copy, for consistency with !HAVE_SETENV */
6498    char *str = xstrdup (value);
6499    setenv (name, str, 1);
6500#else
6501    size_t len = strlen (name) + 1 + strlen (value) + 1;
6502    char *str = XMALLOC (char, len);
6503    sprintf (str, "%s=%s", name, value);
6504    if (putenv (str) != EXIT_SUCCESS)
6505      {
6506        XFREE (str);
6507      }
6508#endif
6509  }
6510}
6511
6512char *
6513lt_extend_str (const char *orig_value, const char *add, int to_end)
6514{
6515  char *new_value;
6516  if (orig_value && *orig_value)
6517    {
6518      size_t orig_value_len = strlen (orig_value);
6519      size_t add_len = strlen (add);
6520      new_value = XMALLOC (char, add_len + orig_value_len + 1);
6521      if (to_end)
6522        {
6523          strcpy (new_value, orig_value);
6524          strcpy (new_value + orig_value_len, add);
6525        }
6526      else
6527        {
6528          strcpy (new_value, add);
6529          strcpy (new_value + add_len, orig_value);
6530        }
6531    }
6532  else
6533    {
6534      new_value = xstrdup (add);
6535    }
6536  return new_value;
6537}
6538
6539void
6540lt_update_exe_path (const char *name, const char *value)
6541{
6542  lt_debugprintf (__FILE__, __LINE__,
6543		  "(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
6544                  nonnull (name), nonnull (value));
6545
6546  if (name && *name && value && *value)
6547    {
6548      char *new_value = lt_extend_str (getenv (name), value, 0);
6549      /* some systems can't cope with a ':'-terminated path #' */
6550      size_t len = strlen (new_value);
6551      while ((len > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
6552        {
6553          new_value[--len] = '\0';
6554        }
6555      lt_setenv (name, new_value);
6556      XFREE (new_value);
6557    }
6558}
6559
6560void
6561lt_update_lib_path (const char *name, const char *value)
6562{
6563  lt_debugprintf (__FILE__, __LINE__,
6564		  "(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
6565                  nonnull (name), nonnull (value));
6566
6567  if (name && *name && value && *value)
6568    {
6569      char *new_value = lt_extend_str (getenv (name), value, 0);
6570      lt_setenv (name, new_value);
6571      XFREE (new_value);
6572    }
6573}
6574
6575EOF
6576	    case $host_os in
6577	      mingw*)
6578		cat <<"EOF"
6579
6580/* Prepares an argument vector before calling spawn().
6581   Note that spawn() does not by itself call the command interpreter
6582     (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") :
6583      ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
6584         GetVersionEx(&v);
6585         v.dwPlatformId == VER_PLATFORM_WIN32_NT;
6586      }) ? "cmd.exe" : "command.com").
6587   Instead it simply concatenates the arguments, separated by ' ', and calls
6588   CreateProcess().  We must quote the arguments since Win32 CreateProcess()
6589   interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a
6590   special way:
6591   - Space and tab are interpreted as delimiters. They are not treated as
6592     delimiters if they are surrounded by double quotes: "...".
6593   - Unescaped double quotes are removed from the input. Their only effect is
6594     that within double quotes, space and tab are treated like normal
6595     characters.
6596   - Backslashes not followed by double quotes are not special.
6597   - But 2*n+1 backslashes followed by a double quote become
6598     n backslashes followed by a double quote (n >= 0):
6599       \" -> "
6600       \\\" -> \"
6601       \\\\\" -> \\"
6602 */
6603#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
6604#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"
6605char **
6606prepare_spawn (char **argv)
6607{
6608  size_t argc;
6609  char **new_argv;
6610  size_t i;
6611
6612  /* Count number of arguments.  */
6613  for (argc = 0; argv[argc] != NULL; argc++)
6614    ;
6615
6616  /* Allocate new argument vector.  */
6617  new_argv = XMALLOC (char *, argc + 1);
6618
6619  /* Put quoted arguments into the new argument vector.  */
6620  for (i = 0; i < argc; i++)
6621    {
6622      const char *string = argv[i];
6623
6624      if (string[0] == '\0')
6625	new_argv[i] = xstrdup ("\"\"");
6626      else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL)
6627	{
6628	  int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL);
6629	  size_t length;
6630	  unsigned int backslashes;
6631	  const char *s;
6632	  char *quoted_string;
6633	  char *p;
6634
6635	  length = 0;
6636	  backslashes = 0;
6637	  if (quote_around)
6638	    length++;
6639	  for (s = string; *s != '\0'; s++)
6640	    {
6641	      char c = *s;
6642	      if (c == '"')
6643		length += backslashes + 1;
6644	      length++;
6645	      if (c == '\\')
6646		backslashes++;
6647	      else
6648		backslashes = 0;
6649	    }
6650	  if (quote_around)
6651	    length += backslashes + 1;
6652
6653	  quoted_string = XMALLOC (char, length + 1);
6654
6655	  p = quoted_string;
6656	  backslashes = 0;
6657	  if (quote_around)
6658	    *p++ = '"';
6659	  for (s = string; *s != '\0'; s++)
6660	    {
6661	      char c = *s;
6662	      if (c == '"')
6663		{
6664		  unsigned int j;
6665		  for (j = backslashes + 1; j > 0; j--)
6666		    *p++ = '\\';
6667		}
6668	      *p++ = c;
6669	      if (c == '\\')
6670		backslashes++;
6671	      else
6672		backslashes = 0;
6673	    }
6674	  if (quote_around)
6675	    {
6676	      unsigned int j;
6677	      for (j = backslashes; j > 0; j--)
6678		*p++ = '\\';
6679	      *p++ = '"';
6680	    }
6681	  *p = '\0';
6682
6683	  new_argv[i] = quoted_string;
6684	}
6685      else
6686	new_argv[i] = (char *) string;
6687    }
6688  new_argv[argc] = NULL;
6689
6690  return new_argv;
6691}
6692EOF
6693		;;
6694	    esac
6695
6696            cat <<"EOF"
6697void lt_dump_script (FILE* f)
6698{
6699EOF
6700	    func_emit_wrapper yes |
6701	      $SED -n -e '
6702s/^\(.\{79\}\)\(..*\)/\1\
6703\2/
6704h
6705s/\([\\"]\)/\\\1/g
6706s/$/\\n/
6707s/\([^\n]*\).*/  fputs ("\1", f);/p
6708g
6709D'
6710            cat <<"EOF"
6711}
6712EOF
6713}
6714# end: func_emit_cwrapperexe_src
6715
6716# func_win32_import_lib_p ARG
6717# True if ARG is an import lib, as indicated by $file_magic_cmd
6718func_win32_import_lib_p ()
6719{
6720    $debug_cmd
6721
6722    case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in
6723    *import*) : ;;
6724    *) false ;;
6725    esac
6726}
6727
6728# func_suncc_cstd_abi
6729# !!ONLY CALL THIS FOR SUN CC AFTER $compile_command IS FULLY EXPANDED!!
6730# Several compiler flags select an ABI that is incompatible with the
6731# Cstd library. Avoid specifying it if any are in CXXFLAGS.
6732func_suncc_cstd_abi ()
6733{
6734    $debug_cmd
6735
6736    case " $compile_command " in
6737    *" -compat=g "*|*\ -std=c++[0-9][0-9]\ *|*" -library=stdcxx4 "*|*" -library=stlport4 "*)
6738      suncc_use_cstd_abi=no
6739      ;;
6740    *)
6741      suncc_use_cstd_abi=yes
6742      ;;
6743    esac
6744}
6745
6746# func_mode_link arg...
6747func_mode_link ()
6748{
6749    $debug_cmd
6750
6751    case $host in
6752    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
6753      # It is impossible to link a dll without this setting, and
6754      # we shouldn't force the makefile maintainer to figure out
6755      # what system we are compiling for in order to pass an extra
6756      # flag for every libtool invocation.
6757      # allow_undefined=no
6758
6759      # FIXME: Unfortunately, there are problems with the above when trying
6760      # to make a dll that has undefined symbols, in which case not
6761      # even a static library is built.  For now, we need to specify
6762      # -no-undefined on the libtool link line when we can be certain
6763      # that all symbols are satisfied, otherwise we get a static library.
6764      allow_undefined=yes
6765      ;;
6766    *)
6767      allow_undefined=yes
6768      ;;
6769    esac
6770    libtool_args=$nonopt
6771    base_compile="$nonopt $@"
6772    compile_command=$nonopt
6773    finalize_command=$nonopt
6774
6775    compile_rpath=
6776    finalize_rpath=
6777    compile_shlibpath=
6778    finalize_shlibpath=
6779    convenience=
6780    old_convenience=
6781    deplibs=
6782    old_deplibs=
6783    compiler_flags=
6784    linker_flags=
6785    dllsearchpath=
6786    lib_search_path=`pwd`
6787    inst_prefix_dir=
6788    new_inherited_linker_flags=
6789
6790    avoid_version=no
6791    bindir=
6792    dlfiles=
6793    dlprefiles=
6794    dlself=no
6795    export_dynamic=no
6796    export_symbols=
6797    export_symbols_regex=
6798    generated=
6799    libobjs=
6800    ltlibs=
6801    module=no
6802    no_install=no
6803    objs=
6804    os2dllname=
6805    non_pic_objects=
6806    precious_files_regex=
6807    prefer_static_libs=no
6808    preload=false
6809    prev=
6810    prevarg=
6811    release=
6812    rpath=
6813    xrpath=
6814    perm_rpath=
6815    temp_rpath=
6816    thread_safe=no
6817    vinfo=
6818    vinfo_number=no
6819    weak_libs=
6820    single_module=$wl-single_module
6821    func_infer_tag $base_compile
6822
6823    # We need to know -static, to get the right output filenames.
6824    for arg
6825    do
6826      case $arg in
6827      -shared)
6828	test yes != "$build_libtool_libs" \
6829	  && func_fatal_configuration "cannot build a shared library"
6830	build_old_libs=no
6831	break
6832	;;
6833      -all-static | -static | -static-libtool-libs)
6834	case $arg in
6835	-all-static)
6836	  if test yes = "$build_libtool_libs" && test -z "$link_static_flag"; then
6837	    func_warning "complete static linking is impossible in this configuration"
6838	  fi
6839	  if test -n "$link_static_flag"; then
6840	    dlopen_self=$dlopen_self_static
6841	  fi
6842	  prefer_static_libs=yes
6843	  ;;
6844	-static)
6845	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
6846	    dlopen_self=$dlopen_self_static
6847	  fi
6848	  prefer_static_libs=built
6849	  ;;
6850	-static-libtool-libs)
6851	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
6852	    dlopen_self=$dlopen_self_static
6853	  fi
6854	  prefer_static_libs=yes
6855	  ;;
6856	esac
6857	build_libtool_libs=no
6858	build_old_libs=yes
6859	break
6860	;;
6861      esac
6862    done
6863
6864    # See if our shared archives depend on static archives.
6865    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
6866
6867    # Go through the arguments, transforming them on the way.
6868    while test "$#" -gt 0; do
6869      arg=$1
6870      shift
6871      func_quote_arg pretty,unquoted "$arg"
6872      qarg=$func_quote_arg_unquoted_result
6873      func_append libtool_args " $func_quote_arg_result"
6874
6875      # If the previous option needs an argument, assign it.
6876      if test -n "$prev"; then
6877	case $prev in
6878	output)
6879	  func_append compile_command " @OUTPUT@"
6880	  func_append finalize_command " @OUTPUT@"
6881	  ;;
6882	esac
6883
6884	case $prev in
6885	bindir)
6886	  bindir=$arg
6887	  prev=
6888	  continue
6889	  ;;
6890	dlfiles|dlprefiles)
6891	  $preload || {
6892	    # Add the symbol object into the linking commands.
6893	    func_append compile_command " @SYMFILE@"
6894	    func_append finalize_command " @SYMFILE@"
6895	    preload=:
6896	  }
6897	  case $arg in
6898	  *.la | *.lo) ;;  # We handle these cases below.
6899	  force)
6900	    if test no = "$dlself"; then
6901	      dlself=needless
6902	      export_dynamic=yes
6903	    fi
6904	    prev=
6905	    continue
6906	    ;;
6907	  self)
6908	    if test dlprefiles = "$prev"; then
6909	      dlself=yes
6910	    elif test dlfiles = "$prev" && test yes != "$dlopen_self"; then
6911	      dlself=yes
6912	    else
6913	      dlself=needless
6914	      export_dynamic=yes
6915	    fi
6916	    prev=
6917	    continue
6918	    ;;
6919	  *)
6920	    if test dlfiles = "$prev"; then
6921	      func_append dlfiles " $arg"
6922	    else
6923	      func_append dlprefiles " $arg"
6924	    fi
6925	    prev=
6926	    continue
6927	    ;;
6928	  esac
6929	  ;;
6930	expsyms)
6931	  export_symbols=$arg
6932	  test -f "$arg" \
6933	    || func_fatal_error "symbol file '$arg' does not exist"
6934	  prev=
6935	  continue
6936	  ;;
6937	expsyms_regex)
6938	  export_symbols_regex=$arg
6939	  prev=
6940	  continue
6941	  ;;
6942	framework)
6943	  case $host in
6944	    *-*-darwin*)
6945	      case "$deplibs " in
6946		*" $qarg.ltframework "*) ;;
6947		*) func_append deplibs " $qarg.ltframework" # this is fixed later
6948		   ;;
6949	      esac
6950	      ;;
6951	  esac
6952	  prev=
6953	  continue
6954	  ;;
6955	inst_prefix)
6956	  inst_prefix_dir=$arg
6957	  prev=
6958	  continue
6959	  ;;
6960	mllvm)
6961	  # Clang does not use LLVM to link, so we can simply discard any
6962	  # '-mllvm $arg' options when doing the link step.
6963	  prev=
6964	  continue
6965	  ;;
6966	objectlist)
6967	  if test -f "$arg"; then
6968	    save_arg=$arg
6969	    moreargs=
6970	    for fil in `cat "$save_arg"`
6971	    do
6972#	      func_append moreargs " $fil"
6973	      arg=$fil
6974	      # A libtool-controlled object.
6975
6976	      # Check to see that this really is a libtool object.
6977	      if func_lalib_unsafe_p "$arg"; then
6978		pic_object=
6979		non_pic_object=
6980
6981		# Read the .lo file
6982		func_source "$arg"
6983
6984		if test -z "$pic_object" ||
6985		   test -z "$non_pic_object" ||
6986		   test none = "$pic_object" &&
6987		   test none = "$non_pic_object"; then
6988		  func_fatal_error "cannot find name of object for '$arg'"
6989		fi
6990
6991		# Extract subdirectory from the argument.
6992		func_dirname "$arg" "/" ""
6993		xdir=$func_dirname_result
6994
6995		if test none != "$pic_object"; then
6996		  # Prepend the subdirectory the object is found in.
6997		  pic_object=$xdir$pic_object
6998
6999		  if test dlfiles = "$prev"; then
7000		    if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then
7001		      func_append dlfiles " $pic_object"
7002		      prev=
7003		      continue
7004		    else
7005		      # If libtool objects are unsupported, then we need to preload.
7006		      prev=dlprefiles
7007		    fi
7008		  fi
7009
7010		  # CHECK ME:  I think I busted this.  -Ossama
7011		  if test dlprefiles = "$prev"; then
7012		    # Preload the old-style object.
7013		    func_append dlprefiles " $pic_object"
7014		    prev=
7015		  fi
7016
7017		  # A PIC object.
7018		  func_append libobjs " $pic_object"
7019		  arg=$pic_object
7020		fi
7021
7022		# Non-PIC object.
7023		if test none != "$non_pic_object"; then
7024		  # Prepend the subdirectory the object is found in.
7025		  non_pic_object=$xdir$non_pic_object
7026
7027		  # A standard non-PIC object
7028		  func_append non_pic_objects " $non_pic_object"
7029		  if test -z "$pic_object" || test none = "$pic_object"; then
7030		    arg=$non_pic_object
7031		  fi
7032		else
7033		  # If the PIC object exists, use it instead.
7034		  # $xdir was prepended to $pic_object above.
7035		  non_pic_object=$pic_object
7036		  func_append non_pic_objects " $non_pic_object"
7037		fi
7038	      else
7039		# Only an error if not doing a dry-run.
7040		if $opt_dry_run; then
7041		  # Extract subdirectory from the argument.
7042		  func_dirname "$arg" "/" ""
7043		  xdir=$func_dirname_result
7044
7045		  func_lo2o "$arg"
7046		  pic_object=$xdir$objdir/$func_lo2o_result
7047		  non_pic_object=$xdir$func_lo2o_result
7048		  func_append libobjs " $pic_object"
7049		  func_append non_pic_objects " $non_pic_object"
7050	        else
7051		  func_fatal_error "'$arg' is not a valid libtool object"
7052		fi
7053	      fi
7054	    done
7055	  else
7056	    func_fatal_error "link input file '$arg' does not exist"
7057	  fi
7058	  arg=$save_arg
7059	  prev=
7060	  continue
7061	  ;;
7062	os2dllname)
7063	  os2dllname=$arg
7064	  prev=
7065	  continue
7066	  ;;
7067	precious_regex)
7068	  precious_files_regex=$arg
7069	  prev=
7070	  continue
7071	  ;;
7072	release)
7073	  release=-$arg
7074	  prev=
7075	  continue
7076	  ;;
7077	rpath | xrpath)
7078	  # We need an absolute path.
7079	  case $arg in
7080	  [\\/]* | [A-Za-z]:[\\/]*) ;;
7081	  *)
7082	    func_fatal_error "only absolute run-paths are allowed"
7083	    ;;
7084	  esac
7085	  if test rpath = "$prev"; then
7086	    case "$rpath " in
7087	    *" $arg "*) ;;
7088	    *) func_append rpath " $arg" ;;
7089	    esac
7090	  else
7091	    case "$xrpath " in
7092	    *" $arg "*) ;;
7093	    *) func_append xrpath " $arg" ;;
7094	    esac
7095	  fi
7096	  prev=
7097	  continue
7098	  ;;
7099	shrext)
7100	  shrext_cmds=$arg
7101	  prev=
7102	  continue
7103	  ;;
7104	weak)
7105	  func_append weak_libs " $arg"
7106	  prev=
7107	  continue
7108	  ;;
7109	xassembler)
7110	  func_append compiler_flags " -Xassembler $qarg"
7111	  prev=
7112	  func_append compile_command " -Xassembler $qarg"
7113	  func_append finalize_command " -Xassembler $qarg"
7114	  continue
7115	  ;;
7116	xcclinker)
7117	  func_append linker_flags " $qarg"
7118	  func_append compiler_flags " $qarg"
7119	  prev=
7120	  func_append compile_command " $qarg"
7121	  func_append finalize_command " $qarg"
7122	  continue
7123	  ;;
7124	xcompiler)
7125	  func_append compiler_flags " $qarg"
7126	  prev=
7127	  func_append compile_command " $qarg"
7128	  func_append finalize_command " $qarg"
7129	  continue
7130	  ;;
7131	xlinker)
7132	  func_append linker_flags " $qarg"
7133	  func_append compiler_flags " $wl$qarg"
7134	  prev=
7135	  func_append compile_command " $wl$qarg"
7136	  func_append finalize_command " $wl$qarg"
7137	  continue
7138	  ;;
7139	*)
7140	  eval "$prev=\"\$arg\""
7141	  prev=
7142	  continue
7143	  ;;
7144	esac
7145      fi # test -n "$prev"
7146
7147      prevarg=$arg
7148
7149      case $arg in
7150      -all-static)
7151	if test -n "$link_static_flag"; then
7152	  # See comment for -static flag below, for more details.
7153	  func_append compile_command " $link_static_flag"
7154	  func_append finalize_command " $link_static_flag"
7155	fi
7156	continue
7157	;;
7158
7159      -allow-undefined)
7160	# FIXME: remove this flag sometime in the future.
7161	func_fatal_error "'-allow-undefined' must not be used because it is the default"
7162	;;
7163
7164      -avoid-version)
7165	avoid_version=yes
7166	continue
7167	;;
7168
7169      -bindir)
7170	prev=bindir
7171	continue
7172	;;
7173
7174      -dlopen)
7175	prev=dlfiles
7176	continue
7177	;;
7178
7179      -dlpreopen)
7180	prev=dlprefiles
7181	continue
7182	;;
7183
7184      -export-dynamic)
7185	export_dynamic=yes
7186	continue
7187	;;
7188
7189      -export-symbols | -export-symbols-regex)
7190	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
7191	  func_fatal_error "more than one -exported-symbols argument is not allowed"
7192	fi
7193	if test X-export-symbols = "X$arg"; then
7194	  prev=expsyms
7195	else
7196	  prev=expsyms_regex
7197	fi
7198	continue
7199	;;
7200
7201      -framework)
7202	prev=framework
7203	continue
7204	;;
7205
7206      -inst-prefix-dir)
7207	prev=inst_prefix
7208	continue
7209	;;
7210
7211      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
7212      # so, if we see these flags be careful not to treat them like -L
7213      -L[A-Z][A-Z]*:*)
7214	case $with_gcc/$host in
7215	no/*-*-irix* | /*-*-irix*)
7216	  func_append compile_command " $arg"
7217	  func_append finalize_command " $arg"
7218	  ;;
7219	esac
7220	continue
7221	;;
7222
7223      -L*)
7224	func_stripname "-L" '' "$arg"
7225	if test -z "$func_stripname_result"; then
7226	  if test "$#" -gt 0; then
7227	    func_fatal_error "require no space between '-L' and '$1'"
7228	  else
7229	    func_fatal_error "need path for '-L' option"
7230	  fi
7231	fi
7232	func_resolve_sysroot "$func_stripname_result"
7233	dir=$func_resolve_sysroot_result
7234	# We need an absolute path.
7235	case $dir in
7236	[\\/]* | [A-Za-z]:[\\/]*) ;;
7237	*)
7238	  absdir=`cd "$dir" && pwd`
7239	  test -z "$absdir" && \
7240	    func_fatal_error "cannot determine absolute directory name of '$dir'"
7241	  dir=$absdir
7242	  ;;
7243	esac
7244	case "$deplibs " in
7245	*" -L$dir "* | *" $arg "*)
7246	  # Will only happen for absolute or sysroot arguments
7247	  ;;
7248	*)
7249	  # Preserve sysroot, but never include relative directories
7250	  case $dir in
7251	    [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;;
7252	    *) func_append deplibs " -L$dir" ;;
7253	  esac
7254	  func_append lib_search_path " $dir"
7255	  ;;
7256	esac
7257	case $host in
7258	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
7259	  testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'`
7260	  case :$dllsearchpath: in
7261	  *":$dir:"*) ;;
7262	  ::) dllsearchpath=$dir;;
7263	  *) func_append dllsearchpath ":$dir";;
7264	  esac
7265	  case :$dllsearchpath: in
7266	  *":$testbindir:"*) ;;
7267	  ::) dllsearchpath=$testbindir;;
7268	  *) func_append dllsearchpath ":$testbindir";;
7269	  esac
7270	  ;;
7271	esac
7272	continue
7273	;;
7274
7275      -l*)
7276	if test X-lc = "X$arg" || test X-lm = "X$arg"; then
7277	  case $host in
7278	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*)
7279	    # These systems don't actually have a C or math library (as such)
7280	    continue
7281	    ;;
7282	  *-*-os2*)
7283	    # These systems don't actually have a C library (as such)
7284	    test X-lc = "X$arg" && continue
7285	    ;;
7286	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig* | *-*-midnightbsd*)
7287	    # Do not include libc due to us having libc/libc_r.
7288	    test X-lc = "X$arg" && continue
7289	    ;;
7290	  *-*-rhapsody* | *-*-darwin1.[012])
7291	    # Rhapsody C and math libraries are in the System framework
7292	    func_append deplibs " System.ltframework"
7293	    continue
7294	    ;;
7295	  *-*-sco3.2v5* | *-*-sco5v6*)
7296	    # Causes problems with __ctype
7297	    test X-lc = "X$arg" && continue
7298	    ;;
7299	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
7300	    # Compiler inserts libc in the correct place for threads to work
7301	    test X-lc = "X$arg" && continue
7302	    ;;
7303	  esac
7304	elif test X-lc_r = "X$arg"; then
7305	 case $host in
7306	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig* | *-*-midnightbsd*)
7307	   # Do not include libc_r directly, use -pthread flag.
7308	   continue
7309	   ;;
7310	 esac
7311	fi
7312	func_append deplibs " $arg"
7313	continue
7314	;;
7315
7316      -mllvm)
7317	prev=mllvm
7318	continue
7319	;;
7320
7321      -module)
7322	module=yes
7323	continue
7324	;;
7325
7326      # Tru64 UNIX uses -model [arg] to determine the layout of C++
7327      # classes, name mangling, and exception handling.
7328      # Darwin uses the -arch flag to determine output architecture.
7329      -model|-arch|-isysroot|--sysroot)
7330	func_append compiler_flags " $arg"
7331	func_append compile_command " $arg"
7332	func_append finalize_command " $arg"
7333	prev=xcompiler
7334	continue
7335	;;
7336     # Solaris ld rejects as of 11.4. Refer to Oracle bug 22985199.
7337     -pthread)
7338	case $host in
7339	  *solaris2*) ;;
7340	  *)
7341	    case "$new_inherited_linker_flags " in
7342	        *" $arg "*) ;;
7343	        * ) func_append new_inherited_linker_flags " $arg" ;;
7344	    esac
7345	  ;;
7346	esac
7347	continue
7348	;;
7349      -mt|-mthreads|-kthread|-Kthread|-pthreads|--thread-safe \
7350      |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
7351	func_append compiler_flags " $arg"
7352	func_append compile_command " $arg"
7353	func_append finalize_command " $arg"
7354	case "$new_inherited_linker_flags " in
7355	    *" $arg "*) ;;
7356	    * ) func_append new_inherited_linker_flags " $arg" ;;
7357	esac
7358	continue
7359	;;
7360
7361      -multi_module)
7362	single_module=$wl-multi_module
7363	continue
7364	;;
7365
7366      -no-fast-install)
7367	fast_install=no
7368	continue
7369	;;
7370
7371      -no-install)
7372	case $host in
7373	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
7374	  # The PATH hackery in wrapper scripts is required on Windows
7375	  # and Darwin in order for the loader to find any dlls it needs.
7376	  func_warning "'-no-install' is ignored for $host"
7377	  func_warning "assuming '-no-fast-install' instead"
7378	  fast_install=no
7379	  ;;
7380	*) no_install=yes ;;
7381	esac
7382	continue
7383	;;
7384
7385      -no-undefined)
7386	allow_undefined=no
7387	continue
7388	;;
7389
7390      -objectlist)
7391	prev=objectlist
7392	continue
7393	;;
7394
7395      -os2dllname)
7396	prev=os2dllname
7397	continue
7398	;;
7399
7400      -o) prev=output ;;
7401
7402      -precious-files-regex)
7403	prev=precious_regex
7404	continue
7405	;;
7406
7407      -release)
7408	prev=release
7409	continue
7410	;;
7411
7412      -rpath)
7413	prev=rpath
7414	continue
7415	;;
7416
7417      -R)
7418	prev=xrpath
7419	continue
7420	;;
7421
7422      -R*)
7423	func_stripname '-R' '' "$arg"
7424	dir=$func_stripname_result
7425	# We need an absolute path.
7426	case $dir in
7427	[\\/]* | [A-Za-z]:[\\/]*) ;;
7428	=*)
7429	  func_stripname '=' '' "$dir"
7430	  dir=$lt_sysroot$func_stripname_result
7431	  ;;
7432	*)
7433	  func_fatal_error "only absolute run-paths are allowed"
7434	  ;;
7435	esac
7436	case "$xrpath " in
7437	*" $dir "*) ;;
7438	*) func_append xrpath " $dir" ;;
7439	esac
7440	continue
7441	;;
7442
7443      -shared)
7444	# The effects of -shared are defined in a previous loop.
7445	continue
7446	;;
7447
7448      -shrext)
7449	prev=shrext
7450	continue
7451	;;
7452
7453      -static | -static-libtool-libs)
7454	# The effects of -static are defined in a previous loop.
7455	# We used to do the same as -all-static on platforms that
7456	# didn't have a PIC flag, but the assumption that the effects
7457	# would be equivalent was wrong.  It would break on at least
7458	# Digital Unix and AIX.
7459	continue
7460	;;
7461
7462      -thread-safe)
7463	thread_safe=yes
7464	continue
7465	;;
7466
7467      -version-info)
7468	prev=vinfo
7469	continue
7470	;;
7471
7472      -version-number)
7473	prev=vinfo
7474	vinfo_number=yes
7475	continue
7476	;;
7477
7478      -weak)
7479        prev=weak
7480	continue
7481	;;
7482
7483      -Wc,*)
7484	func_stripname '-Wc,' '' "$arg"
7485	args=$func_stripname_result
7486	arg=
7487	save_ifs=$IFS; IFS=,
7488	for flag in $args; do
7489	  IFS=$save_ifs
7490          func_quote_arg pretty "$flag"
7491	  func_append arg " $func_quote_arg_result"
7492	  func_append compiler_flags " $func_quote_arg_result"
7493	done
7494	IFS=$save_ifs
7495	func_stripname ' ' '' "$arg"
7496	arg=$func_stripname_result
7497	;;
7498
7499      -Wl,*)
7500	func_stripname '-Wl,' '' "$arg"
7501	args=$func_stripname_result
7502	arg=
7503	save_ifs=$IFS; IFS=,
7504	for flag in $args; do
7505	  IFS=$save_ifs
7506          func_quote_arg pretty "$flag"
7507	  func_append arg " $wl$func_quote_arg_result"
7508	  func_append compiler_flags " $wl$func_quote_arg_result"
7509	  func_append linker_flags " $func_quote_arg_result"
7510	done
7511	IFS=$save_ifs
7512	func_stripname ' ' '' "$arg"
7513	arg=$func_stripname_result
7514	;;
7515
7516      -Xassembler)
7517        prev=xassembler
7518        continue
7519        ;;
7520
7521      -Xcompiler)
7522	prev=xcompiler
7523	continue
7524	;;
7525
7526      -Xlinker)
7527	prev=xlinker
7528	continue
7529	;;
7530
7531      -XCClinker)
7532	prev=xcclinker
7533	continue
7534	;;
7535
7536      # -msg_* for osf cc
7537      -msg_*)
7538	func_quote_arg pretty "$arg"
7539	arg=$func_quote_arg_result
7540	;;
7541
7542      # Flags to be passed through unchanged, with rationale:
7543      # -64, -mips[0-9]      enable 64-bit mode for the SGI compiler
7544      # -r[0-9][0-9]*        specify processor for the SGI compiler
7545      # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler
7546      # +DA*, +DD*           enable 64-bit mode for the HP compiler
7547      # -q*                  compiler args for the IBM compiler
7548      # -m*, -t[45]*, -txscale* architecture-specific flags for GCC
7549      # -F/path              path to uninstalled frameworks, gcc on darwin
7550      # -p, -pg, --coverage, -fprofile-*  profiling flags for GCC
7551      # -fstack-protector*   stack protector flags for GCC
7552      # @file                GCC response files
7553      # -tp=*                Portland pgcc target processor selection
7554      # --sysroot=*          for sysroot support
7555      # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
7556      # -specs=*             GCC specs files
7557      # -stdlib=*            select c++ std lib with clang
7558      # -fsanitize=*         Clang/GCC memory and address sanitizer
7559      # -fuse-ld=*           Linker select flags for GCC
7560      # -Wa,*                Pass flags directly to the assembler
7561      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
7562      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
7563      -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \
7564      -specs=*|-fsanitize=*|-fuse-ld=*|-Wa,*)
7565        func_quote_arg pretty "$arg"
7566	arg=$func_quote_arg_result
7567        func_append compile_command " $arg"
7568        func_append finalize_command " $arg"
7569        func_append compiler_flags " $arg"
7570        continue
7571        ;;
7572
7573      -Z*)
7574        if test os2 = "`expr $host : '.*\(os2\)'`"; then
7575          # OS/2 uses -Zxxx to specify OS/2-specific options
7576	  compiler_flags="$compiler_flags $arg"
7577	  func_append compile_command " $arg"
7578	  func_append finalize_command " $arg"
7579	  case $arg in
7580	  -Zlinker | -Zstack)
7581	    prev=xcompiler
7582	    ;;
7583	  esac
7584	  continue
7585        else
7586	  # Otherwise treat like 'Some other compiler flag' below
7587	  func_quote_arg pretty "$arg"
7588	  arg=$func_quote_arg_result
7589        fi
7590	;;
7591
7592      # Some other compiler flag.
7593      -* | +*)
7594        func_quote_arg pretty "$arg"
7595	arg=$func_quote_arg_result
7596	;;
7597
7598      *.$objext)
7599	# A standard object.
7600	func_append objs " $arg"
7601	;;
7602
7603      *.lo)
7604	# A libtool-controlled object.
7605
7606	# Check to see that this really is a libtool object.
7607	if func_lalib_unsafe_p "$arg"; then
7608	  pic_object=
7609	  non_pic_object=
7610
7611	  # Read the .lo file
7612	  func_source "$arg"
7613
7614	  if test -z "$pic_object" ||
7615	     test -z "$non_pic_object" ||
7616	     test none = "$pic_object" &&
7617	     test none = "$non_pic_object"; then
7618	    func_fatal_error "cannot find name of object for '$arg'"
7619	  fi
7620
7621	  # Extract subdirectory from the argument.
7622	  func_dirname "$arg" "/" ""
7623	  xdir=$func_dirname_result
7624
7625	  test none = "$pic_object" || {
7626	    # Prepend the subdirectory the object is found in.
7627	    pic_object=$xdir$pic_object
7628
7629	    if test dlfiles = "$prev"; then
7630	      if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then
7631		func_append dlfiles " $pic_object"
7632		prev=
7633		continue
7634	      else
7635		# If libtool objects are unsupported, then we need to preload.
7636		prev=dlprefiles
7637	      fi
7638	    fi
7639
7640	    # CHECK ME:  I think I busted this.  -Ossama
7641	    if test dlprefiles = "$prev"; then
7642	      # Preload the old-style object.
7643	      func_append dlprefiles " $pic_object"
7644	      prev=
7645	    fi
7646
7647	    # A PIC object.
7648	    func_append libobjs " $pic_object"
7649	    arg=$pic_object
7650	  }
7651
7652	  # Non-PIC object.
7653	  if test none != "$non_pic_object"; then
7654	    # Prepend the subdirectory the object is found in.
7655	    non_pic_object=$xdir$non_pic_object
7656
7657	    # A standard non-PIC object
7658	    func_append non_pic_objects " $non_pic_object"
7659	    if test -z "$pic_object" || test none = "$pic_object"; then
7660	      arg=$non_pic_object
7661	    fi
7662	  else
7663	    # If the PIC object exists, use it instead.
7664	    # $xdir was prepended to $pic_object above.
7665	    non_pic_object=$pic_object
7666	    func_append non_pic_objects " $non_pic_object"
7667	  fi
7668	else
7669	  # Only an error if not doing a dry-run.
7670	  if $opt_dry_run; then
7671	    # Extract subdirectory from the argument.
7672	    func_dirname "$arg" "/" ""
7673	    xdir=$func_dirname_result
7674
7675	    func_lo2o "$arg"
7676	    pic_object=$xdir$objdir/$func_lo2o_result
7677	    non_pic_object=$xdir$func_lo2o_result
7678	    func_append libobjs " $pic_object"
7679	    func_append non_pic_objects " $non_pic_object"
7680	  else
7681	    func_fatal_error "'$arg' is not a valid libtool object"
7682	  fi
7683	fi
7684	;;
7685
7686      *.$libext)
7687	# An archive.
7688	func_append deplibs " $arg"
7689	func_append old_deplibs " $arg"
7690	continue
7691	;;
7692
7693      *.la)
7694	# A libtool-controlled library.
7695
7696	func_resolve_sysroot "$arg"
7697	if test dlfiles = "$prev"; then
7698	  # This library was specified with -dlopen.
7699	  func_append dlfiles " $func_resolve_sysroot_result"
7700	  prev=
7701	elif test dlprefiles = "$prev"; then
7702	  # The library was specified with -dlpreopen.
7703	  func_append dlprefiles " $func_resolve_sysroot_result"
7704	  prev=
7705	else
7706	  func_append deplibs " $func_resolve_sysroot_result"
7707	fi
7708	continue
7709	;;
7710
7711      # Some other compiler argument.
7712      *)
7713	# Unknown arguments in both finalize_command and compile_command need
7714	# to be aesthetically quoted because they are evaled later.
7715	func_quote_arg pretty "$arg"
7716	arg=$func_quote_arg_result
7717	;;
7718      esac # arg
7719
7720      # Now actually substitute the argument into the commands.
7721      if test -n "$arg"; then
7722	func_append compile_command " $arg"
7723	func_append finalize_command " $arg"
7724      fi
7725    done # argument parsing loop
7726
7727    test -n "$prev" && \
7728      func_fatal_help "the '$prevarg' option requires an argument"
7729
7730    if test yes = "$export_dynamic" && test -n "$export_dynamic_flag_spec"; then
7731      eval arg=\"$export_dynamic_flag_spec\"
7732      func_append compile_command " $arg"
7733      func_append finalize_command " $arg"
7734    fi
7735
7736    oldlibs=
7737    # calculate the name of the file, without its directory
7738    func_basename "$output"
7739    outputname=$func_basename_result
7740    libobjs_save=$libobjs
7741
7742    if test -n "$shlibpath_var"; then
7743      # get the directories listed in $shlibpath_var
7744      eval shlib_search_path=\`\$ECHO \"\$$shlibpath_var\" \| \$SED \'s/:/ /g\'\`
7745    else
7746      shlib_search_path=
7747    fi
7748    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
7749    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
7750
7751    # Definition is injected by LT_CONFIG during libtool generation.
7752    func_munge_path_list sys_lib_dlsearch_path "$LT_SYS_LIBRARY_PATH"
7753
7754    func_dirname "$output" "/" ""
7755    output_objdir=$func_dirname_result$objdir
7756    func_to_tool_file "$output_objdir/"
7757    tool_output_objdir=$func_to_tool_file_result
7758    # Create the object directory.
7759    func_mkdir_p "$output_objdir"
7760
7761    # Determine the type of output
7762    case $output in
7763    "")
7764      func_fatal_help "you must specify an output file"
7765      ;;
7766    *.$libext) linkmode=oldlib ;;
7767    *.lo | *.$objext) linkmode=obj ;;
7768    *.la) linkmode=lib ;;
7769    *) linkmode=prog ;; # Anything else should be a program.
7770    esac
7771
7772    specialdeplibs=
7773
7774    libs=
7775    # Find all interdependent deplibs by searching for libraries
7776    # that are linked more than once (e.g. -la -lb -la)
7777    for deplib in $deplibs; do
7778      if $opt_preserve_dup_deps; then
7779	case "$libs " in
7780	*" $deplib "*) func_append specialdeplibs " $deplib" ;;
7781	esac
7782      fi
7783      func_append libs " $deplib"
7784    done
7785
7786    if test lib = "$linkmode"; then
7787      libs="$predeps $libs $compiler_lib_search_path $postdeps"
7788
7789      # Compute libraries that are listed more than once in $predeps
7790      # $postdeps and mark them as special (i.e., whose duplicates are
7791      # not to be eliminated).
7792      pre_post_deps=
7793      if $opt_duplicate_compiler_generated_deps; then
7794	for pre_post_dep in $predeps $postdeps; do
7795	  case "$pre_post_deps " in
7796	  *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;;
7797	  esac
7798	  func_append pre_post_deps " $pre_post_dep"
7799	done
7800      fi
7801      pre_post_deps=
7802    fi
7803
7804    deplibs=
7805    newdependency_libs=
7806    newlib_search_path=
7807    need_relink=no # whether we're linking any uninstalled libtool libraries
7808    notinst_deplibs= # not-installed libtool libraries
7809    notinst_path= # paths that contain not-installed libtool libraries
7810
7811    case $linkmode in
7812    lib)
7813	passes="conv dlpreopen link"
7814	for file in $dlfiles $dlprefiles; do
7815	  case $file in
7816	  *.la) ;;
7817	  *)
7818	    func_fatal_help "libraries can '-dlopen' only libtool libraries: $file"
7819	    ;;
7820	  esac
7821	done
7822	;;
7823    prog)
7824	compile_deplibs=
7825	finalize_deplibs=
7826	alldeplibs=false
7827	newdlfiles=
7828	newdlprefiles=
7829	passes="conv scan dlopen dlpreopen link"
7830	;;
7831    *)  passes="conv"
7832	;;
7833    esac
7834
7835    for pass in $passes; do
7836      # The preopen pass in lib mode reverses $deplibs; put it back here
7837      # so that -L comes before libs that need it for instance...
7838      if test lib,link = "$linkmode,$pass"; then
7839	## FIXME: Find the place where the list is rebuilt in the wrong
7840	##        order, and fix it there properly
7841        tmp_deplibs=
7842	for deplib in $deplibs; do
7843	  tmp_deplibs="$deplib $tmp_deplibs"
7844	done
7845	deplibs=$tmp_deplibs
7846      fi
7847
7848      if test lib,link = "$linkmode,$pass" ||
7849	 test prog,scan = "$linkmode,$pass"; then
7850	libs=$deplibs
7851	deplibs=
7852      fi
7853      if test prog = "$linkmode"; then
7854	case $pass in
7855	dlopen) libs=$dlfiles ;;
7856	dlpreopen) libs=$dlprefiles ;;
7857	link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
7858	esac
7859      fi
7860      if test lib,dlpreopen = "$linkmode,$pass"; then
7861	# Collect and forward deplibs of preopened libtool libs
7862	for lib in $dlprefiles; do
7863	  # Ignore non-libtool-libs
7864	  dependency_libs=
7865	  func_resolve_sysroot "$lib"
7866	  case $lib in
7867	  *.la)	func_source "$func_resolve_sysroot_result" ;;
7868	  esac
7869
7870	  # Collect preopened libtool deplibs, except any this library
7871	  # has declared as weak libs
7872	  for deplib in $dependency_libs; do
7873	    func_basename "$deplib"
7874            deplib_base=$func_basename_result
7875	    case " $weak_libs " in
7876	    *" $deplib_base "*) ;;
7877	    *) func_append deplibs " $deplib" ;;
7878	    esac
7879	  done
7880	done
7881	libs=$dlprefiles
7882      fi
7883      if test dlopen = "$pass"; then
7884	# Collect dlpreopened libraries
7885	save_deplibs=$deplibs
7886	deplibs=
7887      fi
7888
7889      for deplib in $libs; do
7890	lib=
7891	found=false
7892	case $deplib in
7893	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
7894        |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
7895	  if test prog,link = "$linkmode,$pass"; then
7896	    compile_deplibs="$deplib $compile_deplibs"
7897	    finalize_deplibs="$deplib $finalize_deplibs"
7898	  else
7899	    func_append compiler_flags " $deplib"
7900	    if test lib = "$linkmode"; then
7901		case "$new_inherited_linker_flags " in
7902		    *" $deplib "*) ;;
7903		    * ) func_append new_inherited_linker_flags " $deplib" ;;
7904		esac
7905	    fi
7906	  fi
7907	  continue
7908	  ;;
7909	-l*)
7910	  if test lib != "$linkmode" && test prog != "$linkmode"; then
7911	    func_warning "'-l' is ignored for archives/objects"
7912	    continue
7913	  fi
7914	  func_stripname '-l' '' "$deplib"
7915	  name=$func_stripname_result
7916	  if test lib = "$linkmode"; then
7917	    searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
7918	  else
7919	    searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
7920	  fi
7921	  for searchdir in $searchdirs; do
7922	    for search_ext in .la $std_shrext .so .a; do
7923	      # Search the libtool library
7924	      lib=$searchdir/lib$name$search_ext
7925	      if test -f "$lib"; then
7926		if test .la = "$search_ext"; then
7927		  found=:
7928		else
7929		  found=false
7930		fi
7931		break 2
7932	      fi
7933	    done
7934	  done
7935	  if $found; then
7936	    # deplib is a libtool library
7937	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
7938	    # We need to do some special things here, and not later.
7939	    if test yes = "$allow_libtool_libs_with_static_runtimes"; then
7940	      case " $predeps $postdeps " in
7941	      *" $deplib "*)
7942		if func_lalib_p "$lib"; then
7943		  library_names=
7944		  old_library=
7945		  func_source "$lib"
7946		  for l in $old_library $library_names; do
7947		    ll=$l
7948		  done
7949		  if test "X$ll" = "X$old_library"; then # only static version available
7950		    found=false
7951		    func_dirname "$lib" "" "."
7952		    ladir=$func_dirname_result
7953		    lib=$ladir/$old_library
7954		    if test prog,link = "$linkmode,$pass"; then
7955		      compile_deplibs="$deplib $compile_deplibs"
7956		      finalize_deplibs="$deplib $finalize_deplibs"
7957		    else
7958		      deplibs="$deplib $deplibs"
7959		      test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs"
7960		    fi
7961		    continue
7962		  fi
7963		fi
7964		;;
7965	      *) ;;
7966	      esac
7967	    fi
7968	  else
7969	    # deplib doesn't seem to be a libtool library
7970	    if test prog,link = "$linkmode,$pass"; then
7971	      compile_deplibs="$deplib $compile_deplibs"
7972	      finalize_deplibs="$deplib $finalize_deplibs"
7973	    else
7974	      deplibs="$deplib $deplibs"
7975	      test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs"
7976	    fi
7977	    continue
7978	  fi
7979	  ;; # -l
7980	*.ltframework)
7981	  if test prog,link = "$linkmode,$pass"; then
7982	    compile_deplibs="$deplib $compile_deplibs"
7983	    finalize_deplibs="$deplib $finalize_deplibs"
7984	  else
7985	    deplibs="$deplib $deplibs"
7986	    if test lib = "$linkmode"; then
7987		case "$new_inherited_linker_flags " in
7988		    *" $deplib "*) ;;
7989		    * ) func_append new_inherited_linker_flags " $deplib" ;;
7990		esac
7991	    fi
7992	  fi
7993	  continue
7994	  ;;
7995	-L*)
7996	  case $linkmode in
7997	  lib)
7998	    deplibs="$deplib $deplibs"
7999	    test conv = "$pass" && continue
8000	    newdependency_libs="$deplib $newdependency_libs"
8001	    func_stripname '-L' '' "$deplib"
8002	    func_resolve_sysroot "$func_stripname_result"
8003	    func_append newlib_search_path " $func_resolve_sysroot_result"
8004	    ;;
8005	  prog)
8006	    if test conv = "$pass"; then
8007	      deplibs="$deplib $deplibs"
8008	      continue
8009	    fi
8010	    if test scan = "$pass"; then
8011	      deplibs="$deplib $deplibs"
8012	    else
8013	      compile_deplibs="$deplib $compile_deplibs"
8014	      finalize_deplibs="$deplib $finalize_deplibs"
8015	    fi
8016	    func_stripname '-L' '' "$deplib"
8017	    func_resolve_sysroot "$func_stripname_result"
8018	    func_append newlib_search_path " $func_resolve_sysroot_result"
8019	    ;;
8020	  *)
8021	    func_warning "'-L' is ignored for archives/objects"
8022	    ;;
8023	  esac # linkmode
8024	  continue
8025	  ;; # -L
8026	-R*)
8027	  if test link = "$pass"; then
8028	    func_stripname '-R' '' "$deplib"
8029	    func_resolve_sysroot "$func_stripname_result"
8030	    dir=$func_resolve_sysroot_result
8031	    # Make sure the xrpath contains only unique directories.
8032	    case "$xrpath " in
8033	    *" $dir "*) ;;
8034	    *) func_append xrpath " $dir" ;;
8035	    esac
8036	  fi
8037	  deplibs="$deplib $deplibs"
8038	  continue
8039	  ;;
8040	*.la)
8041	  func_resolve_sysroot "$deplib"
8042	  lib=$func_resolve_sysroot_result
8043	  ;;
8044	*.$libext)
8045	  if test conv = "$pass"; then
8046	    deplibs="$deplib $deplibs"
8047	    continue
8048	  fi
8049	  case $linkmode in
8050	  lib)
8051	    # Linking convenience modules into shared libraries is allowed,
8052	    # but linking other static libraries is non-portable.
8053	    case " $dlpreconveniencelibs " in
8054	    *" $deplib "*) ;;
8055	    *)
8056	      valid_a_lib=false
8057	      case $deplibs_check_method in
8058		match_pattern*)
8059		  set dummy $deplibs_check_method; shift
8060		  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
8061		  if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \
8062		    | $EGREP "$match_pattern_regex" > /dev/null; then
8063		    valid_a_lib=:
8064		  fi
8065		;;
8066		pass_all)
8067		  valid_a_lib=:
8068		;;
8069	      esac
8070	      if $valid_a_lib; then
8071		echo
8072		$ECHO "*** Warning: Linking the shared library $output against the"
8073		$ECHO "*** static library $deplib is not portable!"
8074		deplibs="$deplib $deplibs"
8075	      else
8076		echo
8077		$ECHO "*** Warning: Trying to link with static lib archive $deplib."
8078		echo "*** I have the capability to make that library automatically link in when"
8079		echo "*** you link to this library.  But I can only do this if you have a"
8080		echo "*** shared version of the library, which you do not appear to have"
8081		echo "*** because the file extensions .$libext of this argument makes me believe"
8082		echo "*** that it is just a static archive that I should not use here."
8083	      fi
8084	      ;;
8085	    esac
8086	    continue
8087	    ;;
8088	  prog)
8089	    if test link != "$pass"; then
8090	      deplibs="$deplib $deplibs"
8091	    else
8092	      compile_deplibs="$deplib $compile_deplibs"
8093	      finalize_deplibs="$deplib $finalize_deplibs"
8094	    fi
8095	    continue
8096	    ;;
8097	  esac # linkmode
8098	  ;; # *.$libext
8099	*.lo | *.$objext)
8100	  if test conv = "$pass"; then
8101	    deplibs="$deplib $deplibs"
8102	  elif test prog = "$linkmode"; then
8103	    if test dlpreopen = "$pass" || test yes != "$dlopen_support" || test no = "$build_libtool_libs"; then
8104	      # If there is no dlopen support or we're linking statically,
8105	      # we need to preload.
8106	      func_append newdlprefiles " $deplib"
8107	      compile_deplibs="$deplib $compile_deplibs"
8108	      finalize_deplibs="$deplib $finalize_deplibs"
8109	    else
8110	      func_append newdlfiles " $deplib"
8111	    fi
8112	  fi
8113	  continue
8114	  ;;
8115	%DEPLIBS%)
8116	  alldeplibs=:
8117	  continue
8118	  ;;
8119	esac # case $deplib
8120
8121	$found || test -f "$lib" \
8122	  || func_fatal_error "cannot find the library '$lib' or unhandled argument '$deplib'"
8123
8124	# Check to see that this really is a libtool archive.
8125	func_lalib_unsafe_p "$lib" \
8126	  || func_fatal_error "'$lib' is not a valid libtool archive"
8127
8128	func_dirname "$lib" "" "."
8129	ladir=$func_dirname_result
8130
8131	dlname=
8132	dlopen=
8133	dlpreopen=
8134	libdir=
8135	library_names=
8136	old_library=
8137	inherited_linker_flags=
8138	# If the library was installed with an old release of libtool,
8139	# it will not redefine variables installed, or shouldnotlink
8140	installed=yes
8141	shouldnotlink=no
8142	avoidtemprpath=
8143
8144
8145	# Read the .la file
8146	func_source "$lib"
8147
8148	# Convert "-framework foo" to "foo.ltframework"
8149	if test -n "$inherited_linker_flags"; then
8150	  tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`
8151	  for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
8152	    case " $new_inherited_linker_flags " in
8153	      *" $tmp_inherited_linker_flag "*) ;;
8154	      *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";;
8155	    esac
8156	  done
8157	fi
8158	dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
8159	if test lib,link = "$linkmode,$pass" ||
8160	   test prog,scan = "$linkmode,$pass" ||
8161	   { test prog != "$linkmode" && test lib != "$linkmode"; }; then
8162	  test -n "$dlopen" && func_append dlfiles " $dlopen"
8163	  test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen"
8164	fi
8165
8166	if test conv = "$pass"; then
8167	  # Only check for convenience libraries
8168	  deplibs="$lib $deplibs"
8169	  if test -z "$libdir"; then
8170	    if test -z "$old_library"; then
8171	      func_fatal_error "cannot find name of link library for '$lib'"
8172	    fi
8173	    # It is a libtool convenience library, so add in its objects.
8174	    func_append convenience " $ladir/$objdir/$old_library"
8175	    func_append old_convenience " $ladir/$objdir/$old_library"
8176	  elif test prog != "$linkmode" && test lib != "$linkmode"; then
8177	    func_fatal_error "'$lib' is not a convenience library"
8178	  fi
8179	  tmp_libs=
8180	  for deplib in $dependency_libs; do
8181	    deplibs="$deplib $deplibs"
8182	    if $opt_preserve_dup_deps; then
8183	      case "$tmp_libs " in
8184	      *" $deplib "*) func_append specialdeplibs " $deplib" ;;
8185	      esac
8186	    fi
8187	    func_append tmp_libs " $deplib"
8188	  done
8189	  continue
8190	fi # $pass = conv
8191
8192
8193	# Get the name of the library we link against.
8194	linklib=
8195	if test -n "$old_library" &&
8196	   { test yes = "$prefer_static_libs" ||
8197	     test built,no = "$prefer_static_libs,$installed"; }; then
8198	  linklib=$old_library
8199	else
8200	  for l in $old_library $library_names; do
8201	    linklib=$l
8202	  done
8203	fi
8204	if test -z "$linklib"; then
8205	  func_fatal_error "cannot find name of link library for '$lib'"
8206	fi
8207
8208	# This library was specified with -dlopen.
8209	if test dlopen = "$pass"; then
8210	  test -z "$libdir" \
8211	    && func_fatal_error "cannot -dlopen a convenience library: '$lib'"
8212	  if test -z "$dlname" ||
8213	     test yes != "$dlopen_support" ||
8214	     test no = "$build_libtool_libs"
8215	  then
8216	    # If there is no dlname, no dlopen support or we're linking
8217	    # statically, we need to preload.  We also need to preload any
8218	    # dependent libraries so libltdl's deplib preloader doesn't
8219	    # bomb out in the load deplibs phase.
8220	    func_append dlprefiles " $lib $dependency_libs"
8221	  else
8222	    func_append newdlfiles " $lib"
8223	  fi
8224	  continue
8225	fi # $pass = dlopen
8226
8227	# We need an absolute path.
8228	case $ladir in
8229	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir=$ladir ;;
8230	*)
8231	  abs_ladir=`cd "$ladir" && pwd`
8232	  if test -z "$abs_ladir"; then
8233	    func_warning "cannot determine absolute directory name of '$ladir'"
8234	    func_warning "passing it literally to the linker, although it might fail"
8235	    abs_ladir=$ladir
8236	  fi
8237	  ;;
8238	esac
8239	func_basename "$lib"
8240	laname=$func_basename_result
8241
8242	# Find the relevant object directory and library name.
8243	if test yes = "$installed"; then
8244	  if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
8245	    func_warning "library '$lib' was moved."
8246	    dir=$ladir
8247	    absdir=$abs_ladir
8248	    libdir=$abs_ladir
8249	  else
8250	    dir=$lt_sysroot$libdir
8251	    absdir=$lt_sysroot$libdir
8252	  fi
8253	  test yes = "$hardcode_automatic" && avoidtemprpath=yes
8254	else
8255	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
8256	    dir=$ladir
8257	    absdir=$abs_ladir
8258	    # Remove this search path later
8259	    func_append notinst_path " $abs_ladir"
8260	  else
8261	    dir=$ladir/$objdir
8262	    absdir=$abs_ladir/$objdir
8263	    # Remove this search path later
8264	    func_append notinst_path " $abs_ladir"
8265	  fi
8266	fi # $installed = yes
8267	func_stripname 'lib' '.la' "$laname"
8268	name=$func_stripname_result
8269
8270	# This library was specified with -dlpreopen.
8271	if test dlpreopen = "$pass"; then
8272	  if test -z "$libdir" && test prog = "$linkmode"; then
8273	    func_fatal_error "only libraries may -dlpreopen a convenience library: '$lib'"
8274	  fi
8275	  case $host in
8276	    # special handling for platforms with PE-DLLs.
8277	    *cygwin* | *mingw* | *cegcc* )
8278	      # Linker will automatically link against shared library if both
8279	      # static and shared are present.  Therefore, ensure we extract
8280	      # symbols from the import library if a shared library is present
8281	      # (otherwise, the dlopen module name will be incorrect).  We do
8282	      # this by putting the import library name into $newdlprefiles.
8283	      # We recover the dlopen module name by 'saving' the la file
8284	      # name in a special purpose variable, and (later) extracting the
8285	      # dlname from the la file.
8286	      if test -n "$dlname"; then
8287	        func_tr_sh "$dir/$linklib"
8288	        eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname"
8289	        func_append newdlprefiles " $dir/$linklib"
8290	      else
8291	        func_append newdlprefiles " $dir/$old_library"
8292	        # Keep a list of preopened convenience libraries to check
8293	        # that they are being used correctly in the link pass.
8294	        test -z "$libdir" && \
8295	          func_append dlpreconveniencelibs " $dir/$old_library"
8296	      fi
8297	    ;;
8298	    * )
8299	      # Prefer using a static library (so that no silly _DYNAMIC symbols
8300	      # are required to link).
8301	      if test -n "$old_library"; then
8302	        func_append newdlprefiles " $dir/$old_library"
8303	        # Keep a list of preopened convenience libraries to check
8304	        # that they are being used correctly in the link pass.
8305	        test -z "$libdir" && \
8306	          func_append dlpreconveniencelibs " $dir/$old_library"
8307	      # Otherwise, use the dlname, so that lt_dlopen finds it.
8308	      elif test -n "$dlname"; then
8309	        func_append newdlprefiles " $dir/$dlname"
8310	      else
8311	        func_append newdlprefiles " $dir/$linklib"
8312	      fi
8313	    ;;
8314	  esac
8315	fi # $pass = dlpreopen
8316
8317	if test -z "$libdir"; then
8318	  # Link the convenience library
8319	  if test lib = "$linkmode"; then
8320	    deplibs="$dir/$old_library $deplibs"
8321	  elif test prog,link = "$linkmode,$pass"; then
8322	    compile_deplibs="$dir/$old_library $compile_deplibs"
8323	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
8324	  else
8325	    deplibs="$lib $deplibs" # used for prog,scan pass
8326	  fi
8327	  continue
8328	fi
8329
8330
8331	if test prog = "$linkmode" && test link != "$pass"; then
8332	  func_append newlib_search_path " $ladir"
8333	  deplibs="$lib $deplibs"
8334
8335	  linkalldeplibs=false
8336	  if test no != "$link_all_deplibs" || test -z "$library_names" ||
8337	     test no = "$build_libtool_libs"; then
8338	    linkalldeplibs=:
8339	  fi
8340
8341	  tmp_libs=
8342	  for deplib in $dependency_libs; do
8343	    case $deplib in
8344	    -L*) func_stripname '-L' '' "$deplib"
8345	         func_resolve_sysroot "$func_stripname_result"
8346	         func_append newlib_search_path " $func_resolve_sysroot_result"
8347		 ;;
8348	    esac
8349	    # Need to link against all dependency_libs?
8350	    if $linkalldeplibs; then
8351	      deplibs="$deplib $deplibs"
8352	    else
8353	      # Need to hardcode shared library paths
8354	      # or/and link against static libraries
8355	      newdependency_libs="$deplib $newdependency_libs"
8356	    fi
8357	    if $opt_preserve_dup_deps; then
8358	      case "$tmp_libs " in
8359	      *" $deplib "*) func_append specialdeplibs " $deplib" ;;
8360	      esac
8361	    fi
8362	    func_append tmp_libs " $deplib"
8363	  done # for deplib
8364	  continue
8365	fi # $linkmode = prog...
8366
8367	if test prog,link = "$linkmode,$pass"; then
8368	  if test -n "$library_names" &&
8369	     { { test no = "$prefer_static_libs" ||
8370	         test built,yes = "$prefer_static_libs,$installed"; } ||
8371	       test -z "$old_library"; }; then
8372	    # We need to hardcode the library path
8373	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath"; then
8374	      # Make sure the rpath contains only unique directories.
8375	      case $temp_rpath: in
8376	      *"$absdir:"*) ;;
8377	      *) func_append temp_rpath "$absdir:" ;;
8378	      esac
8379	    fi
8380
8381	    # Hardcode the library path.
8382	    # Skip directories that are in the system default run-time
8383	    # search path.
8384	    case " $sys_lib_dlsearch_path " in
8385	    *" $absdir "*) ;;
8386	    *)
8387	      case "$compile_rpath " in
8388	      *" $absdir "*) ;;
8389	      *) func_append compile_rpath " $absdir" ;;
8390	      esac
8391	      ;;
8392	    esac
8393	    case " $sys_lib_dlsearch_path " in
8394	    *" $libdir "*) ;;
8395	    *)
8396	      case "$finalize_rpath " in
8397	      *" $libdir "*) ;;
8398	      *) func_append finalize_rpath " $libdir" ;;
8399	      esac
8400	      ;;
8401	    esac
8402	  fi # $linkmode,$pass = prog,link...
8403
8404	  if $alldeplibs &&
8405	     { test pass_all = "$deplibs_check_method" ||
8406	       { test yes = "$build_libtool_libs" &&
8407		 test -n "$library_names"; }; }; then
8408	    # We only need to search for static libraries
8409	    continue
8410	  fi
8411	fi
8412
8413	link_static=no # Whether the deplib will be linked statically
8414	use_static_libs=$prefer_static_libs
8415	if test built = "$use_static_libs" && test yes = "$installed"; then
8416	  use_static_libs=no
8417	fi
8418	if test -n "$library_names" &&
8419	   { test no = "$use_static_libs" || test -z "$old_library"; }; then
8420	  case $host in
8421	  *cygwin* | *mingw* | *cegcc* | *os2*)
8422	      # No point in relinking DLLs because paths are not encoded
8423	      func_append notinst_deplibs " $lib"
8424	      need_relink=no
8425	    ;;
8426	  *)
8427	    if test no = "$installed"; then
8428	      func_append notinst_deplibs " $lib"
8429	      need_relink=yes
8430	    fi
8431	    ;;
8432	  esac
8433	  # This is a shared library
8434
8435	  # Warn about portability, can't link against -module's on some
8436	  # systems (darwin).  Don't bleat about dlopened modules though!
8437	  dlopenmodule=
8438	  for dlpremoduletest in $dlprefiles; do
8439	    if test "X$dlpremoduletest" = "X$lib"; then
8440	      dlopenmodule=$dlpremoduletest
8441	      break
8442	    fi
8443	  done
8444	  if test -z "$dlopenmodule" && test yes = "$shouldnotlink" && test link = "$pass"; then
8445	    echo
8446	    if test prog = "$linkmode"; then
8447	      $ECHO "*** Warning: Linking the executable $output against the loadable module"
8448	    else
8449	      $ECHO "*** Warning: Linking the shared library $output against the loadable module"
8450	    fi
8451	    $ECHO "*** $linklib is not portable!"
8452	  fi
8453	  if test lib = "$linkmode" &&
8454	     test yes = "$hardcode_into_libs"; then
8455	    # Hardcode the library path.
8456	    # Skip directories that are in the system default run-time
8457	    # search path.
8458	    case " $sys_lib_dlsearch_path " in
8459	    *" $absdir "*) ;;
8460	    *)
8461	      case "$compile_rpath " in
8462	      *" $absdir "*) ;;
8463	      *) func_append compile_rpath " $absdir" ;;
8464	      esac
8465	      ;;
8466	    esac
8467	    case " $sys_lib_dlsearch_path " in
8468	    *" $libdir "*) ;;
8469	    *)
8470	      case "$finalize_rpath " in
8471	      *" $libdir "*) ;;
8472	      *) func_append finalize_rpath " $libdir" ;;
8473	      esac
8474	      ;;
8475	    esac
8476	  fi
8477
8478	  if test -n "$old_archive_from_expsyms_cmds"; then
8479	    # figure out the soname
8480	    set dummy $library_names
8481	    shift
8482	    realname=$1
8483	    shift
8484	    libname=`eval "\\$ECHO \"$libname_spec\""`
8485	    # use dlname if we got it. it's perfectly good, no?
8486	    if test -n "$dlname"; then
8487	      soname=$dlname
8488	    elif test -n "$soname_spec"; then
8489	      # bleh windows
8490	      case $host in
8491	      *cygwin* | mingw* | *cegcc* | *os2*)
8492	        func_arith $current - $age
8493		major=$func_arith_result
8494		versuffix=-$major
8495		;;
8496	      esac
8497	      eval soname=\"$soname_spec\"
8498	    else
8499	      soname=$realname
8500	    fi
8501
8502	    # Make a new name for the extract_expsyms_cmds to use
8503	    soroot=$soname
8504	    func_basename "$soroot"
8505	    soname=$func_basename_result
8506	    func_stripname 'lib' '.dll' "$soname"
8507	    newlib=libimp-$func_stripname_result.a
8508
8509	    # If the library has no export list, then create one now
8510	    if test -f "$output_objdir/$soname-def"; then :
8511	    else
8512	      func_verbose "extracting exported symbol list from '$soname'"
8513	      func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
8514	    fi
8515
8516	    # Create $newlib
8517	    if test -f "$output_objdir/$newlib"; then :; else
8518	      func_verbose "generating import library for '$soname'"
8519	      func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
8520	    fi
8521	    # make sure the library variables are pointing to the new library
8522	    dir=$output_objdir
8523	    linklib=$newlib
8524	  fi # test -n "$old_archive_from_expsyms_cmds"
8525
8526	  if test prog = "$linkmode" || test relink != "$opt_mode"; then
8527	    add_shlibpath=
8528	    add_dir=
8529	    add=
8530	    lib_linked=yes
8531	    case $hardcode_action in
8532	    immediate | unsupported)
8533	      if test no = "$hardcode_direct"; then
8534		add=$dir/$linklib
8535		case $host in
8536		  *-*-sco3.2v5.0.[024]*) add_dir=-L$dir ;;
8537		  *-*-sysv4*uw2*) add_dir=-L$dir ;;
8538		  *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
8539		    *-*-unixware7*) add_dir=-L$dir ;;
8540		  *-*-darwin* )
8541		    # if the lib is a (non-dlopened) module then we cannot
8542		    # link against it, someone is ignoring the earlier warnings
8543		    if /usr/bin/file -L $add 2> /dev/null |
8544			 $GREP ": [^:]* bundle" >/dev/null; then
8545		      if test "X$dlopenmodule" != "X$lib"; then
8546			$ECHO "*** Warning: lib $linklib is a module, not a shared library"
8547			if test -z "$old_library"; then
8548			  echo
8549			  echo "*** And there doesn't seem to be a static archive available"
8550			  echo "*** The link will probably fail, sorry"
8551			else
8552			  add=$dir/$old_library
8553			fi
8554		      elif test -n "$old_library"; then
8555			add=$dir/$old_library
8556		      fi
8557		    fi
8558		esac
8559	      elif test no = "$hardcode_minus_L"; then
8560		case $host in
8561		*-*-sunos*) add_shlibpath=$dir ;;
8562		esac
8563		add_dir=-L$dir
8564		add=-l$name
8565	      elif test no = "$hardcode_shlibpath_var"; then
8566		add_shlibpath=$dir
8567		add=-l$name
8568	      else
8569		lib_linked=no
8570	      fi
8571	      ;;
8572	    relink)
8573	      if test yes = "$hardcode_direct" &&
8574	         test no = "$hardcode_direct_absolute"; then
8575		add=$dir/$linklib
8576	      elif test yes = "$hardcode_minus_L"; then
8577		add_dir=-L$absdir
8578		# Try looking first in the location we're being installed to.
8579		if test -n "$inst_prefix_dir"; then
8580		  case $libdir in
8581		    [\\/]*)
8582		      func_append add_dir " -L$inst_prefix_dir$libdir"
8583		      ;;
8584		  esac
8585		fi
8586		add=-l$name
8587	      elif test yes = "$hardcode_shlibpath_var"; then
8588		add_shlibpath=$dir
8589		add=-l$name
8590	      else
8591		lib_linked=no
8592	      fi
8593	      ;;
8594	    *) lib_linked=no ;;
8595	    esac
8596
8597	    if test yes != "$lib_linked"; then
8598	      func_fatal_configuration "unsupported hardcode properties"
8599	    fi
8600
8601	    if test -n "$add_shlibpath"; then
8602	      case :$compile_shlibpath: in
8603	      *":$add_shlibpath:"*) ;;
8604	      *) func_append compile_shlibpath "$add_shlibpath:" ;;
8605	      esac
8606	    fi
8607	    if test prog = "$linkmode"; then
8608	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
8609	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
8610	    else
8611	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
8612	      test -n "$add" && deplibs="$add $deplibs"
8613	      if test yes != "$hardcode_direct" &&
8614		 test yes != "$hardcode_minus_L" &&
8615		 test yes = "$hardcode_shlibpath_var"; then
8616		case :$finalize_shlibpath: in
8617		*":$libdir:"*) ;;
8618		*) func_append finalize_shlibpath "$libdir:" ;;
8619		esac
8620	      fi
8621	    fi
8622	  fi
8623
8624	  if test prog = "$linkmode" || test relink = "$opt_mode"; then
8625	    add_shlibpath=
8626	    add_dir=
8627	    add=
8628	    # Finalize command for both is simple: just hardcode it.
8629	    if test yes = "$hardcode_direct" &&
8630	       test no = "$hardcode_direct_absolute"; then
8631	      add=$libdir/$linklib
8632	    elif test yes = "$hardcode_minus_L"; then
8633	      add_dir=-L$libdir
8634	      add=-l$name
8635	    elif test yes = "$hardcode_shlibpath_var"; then
8636	      case :$finalize_shlibpath: in
8637	      *":$libdir:"*) ;;
8638	      *) func_append finalize_shlibpath "$libdir:" ;;
8639	      esac
8640	      add=-l$name
8641	    elif test yes = "$hardcode_automatic"; then
8642	      if test -n "$inst_prefix_dir" &&
8643		 test -f "$inst_prefix_dir$libdir/$linklib"; then
8644		add=$inst_prefix_dir$libdir/$linklib
8645	      else
8646		add=$libdir/$linklib
8647	      fi
8648	    else
8649	      # We cannot seem to hardcode it, guess we'll fake it.
8650	      add_dir=-L$libdir
8651	      # Try looking first in the location we're being installed to.
8652	      if test -n "$inst_prefix_dir"; then
8653		case $libdir in
8654		  [\\/]*)
8655		    func_append add_dir " -L$inst_prefix_dir$libdir"
8656		    ;;
8657		esac
8658	      fi
8659	      add=-l$name
8660	    fi
8661
8662	    if test prog = "$linkmode"; then
8663	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
8664	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
8665	    else
8666	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
8667	      test -n "$add" && deplibs="$add $deplibs"
8668	    fi
8669	  fi
8670	elif test prog = "$linkmode"; then
8671	  # Here we assume that one of hardcode_direct or hardcode_minus_L
8672	  # is not unsupported.  This is valid on all known static and
8673	  # shared platforms.
8674	  if test unsupported != "$hardcode_direct"; then
8675	    test -n "$old_library" && linklib=$old_library
8676	    compile_deplibs="$dir/$linklib $compile_deplibs"
8677	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
8678	  else
8679	    compile_deplibs="-l$name -L$dir $compile_deplibs"
8680	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
8681	  fi
8682	elif test yes = "$build_libtool_libs"; then
8683	  # Not a shared library
8684	  if test pass_all != "$deplibs_check_method"; then
8685	    # We're trying link a shared library against a static one
8686	    # but the system doesn't support it.
8687
8688	    # Just print a warning and add the library to dependency_libs so
8689	    # that the program can be linked against the static library.
8690	    echo
8691	    $ECHO "*** Warning: This system cannot link to static lib archive $lib."
8692	    echo "*** I have the capability to make that library automatically link in when"
8693	    echo "*** you link to this library.  But I can only do this if you have a"
8694	    echo "*** shared version of the library, which you do not appear to have."
8695	    if test yes = "$module"; then
8696	      echo "*** But as you try to build a module library, libtool will still create "
8697	      echo "*** a static module, that should work as long as the dlopening application"
8698	      echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
8699	      if test -z "$global_symbol_pipe"; then
8700		echo
8701		echo "*** However, this would only work if libtool was able to extract symbol"
8702		echo "*** lists from a program, using 'nm' or equivalent, but libtool could"
8703		echo "*** not find such a program.  So, this module is probably useless."
8704		echo "*** 'nm' from GNU binutils and a full rebuild may help."
8705	      fi
8706	      if test no = "$build_old_libs"; then
8707		build_libtool_libs=module
8708		build_old_libs=yes
8709	      else
8710		build_libtool_libs=no
8711	      fi
8712	    fi
8713	  else
8714	    deplibs="$dir/$old_library $deplibs"
8715	    link_static=yes
8716	  fi
8717	fi # link shared/static library?
8718
8719	if test lib = "$linkmode"; then
8720	  if test -n "$dependency_libs" &&
8721	     { test yes != "$hardcode_into_libs" ||
8722	       test yes = "$build_old_libs" ||
8723	       test yes = "$link_static"; }; then
8724	    # Extract -R from dependency_libs
8725	    temp_deplibs=
8726	    for libdir in $dependency_libs; do
8727	      case $libdir in
8728	      -R*) func_stripname '-R' '' "$libdir"
8729	           temp_xrpath=$func_stripname_result
8730		   case " $xrpath " in
8731		   *" $temp_xrpath "*) ;;
8732		   *) func_append xrpath " $temp_xrpath";;
8733		   esac;;
8734	      *) func_append temp_deplibs " $libdir";;
8735	      esac
8736	    done
8737	    dependency_libs=$temp_deplibs
8738	  fi
8739
8740	  func_append newlib_search_path " $absdir"
8741	  # Link against this library
8742	  test no = "$link_static" && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
8743	  # ... and its dependency_libs
8744	  tmp_libs=
8745	  for deplib in $dependency_libs; do
8746	    newdependency_libs="$deplib $newdependency_libs"
8747	    case $deplib in
8748              -L*) func_stripname '-L' '' "$deplib"
8749                   func_resolve_sysroot "$func_stripname_result";;
8750              *) func_resolve_sysroot "$deplib" ;;
8751            esac
8752	    if $opt_preserve_dup_deps; then
8753	      case "$tmp_libs " in
8754	      *" $func_resolve_sysroot_result "*)
8755                func_append specialdeplibs " $func_resolve_sysroot_result" ;;
8756	      esac
8757	    fi
8758	    func_append tmp_libs " $func_resolve_sysroot_result"
8759	  done
8760
8761	  if test no != "$link_all_deplibs"; then
8762	    # Add the search paths of all dependency libraries
8763	    for deplib in $dependency_libs; do
8764	      path=
8765	      case $deplib in
8766	      -L*) path=$deplib ;;
8767	      *.la)
8768	        func_resolve_sysroot "$deplib"
8769	        deplib=$func_resolve_sysroot_result
8770	        func_dirname "$deplib" "" "."
8771		dir=$func_dirname_result
8772		# We need an absolute path.
8773		case $dir in
8774		[\\/]* | [A-Za-z]:[\\/]*) absdir=$dir ;;
8775		*)
8776		  absdir=`cd "$dir" && pwd`
8777		  if test -z "$absdir"; then
8778		    func_warning "cannot determine absolute directory name of '$dir'"
8779		    absdir=$dir
8780		  fi
8781		  ;;
8782		esac
8783		if $GREP "^installed=no" $deplib > /dev/null; then
8784		case $host in
8785		*-*-darwin*)
8786		  depdepl=
8787		  eval deplibrary_names=`$SED -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
8788		  if test -n "$deplibrary_names"; then
8789		    for tmp in $deplibrary_names; do
8790		      depdepl=$tmp
8791		    done
8792		    if test -f "$absdir/$objdir/$depdepl"; then
8793		      depdepl=$absdir/$objdir/$depdepl
8794		      darwin_install_name=`$OTOOL -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
8795                      if test -z "$darwin_install_name"; then
8796                          darwin_install_name=`$OTOOL64 -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
8797                      fi
8798		      func_append compiler_flags " $wl-dylib_file $wl$darwin_install_name:$depdepl"
8799		      func_append linker_flags " -dylib_file $darwin_install_name:$depdepl"
8800		      path=
8801		    fi
8802		  fi
8803		  ;;
8804		*)
8805		  path=-L$absdir/$objdir
8806		  ;;
8807		esac
8808		else
8809		  eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
8810		  test -z "$libdir" && \
8811		    func_fatal_error "'$deplib' is not a valid libtool archive"
8812		  test "$absdir" != "$libdir" && \
8813		    func_warning "'$deplib' seems to be moved"
8814
8815		  path=-L$absdir
8816		fi
8817		;;
8818	      esac
8819	      case " $deplibs " in
8820	      *" $path "*) ;;
8821	      *) deplibs="$path $deplibs" ;;
8822	      esac
8823	    done
8824	  fi # link_all_deplibs != no
8825	fi # linkmode = lib
8826      done # for deplib in $libs
8827      if test link = "$pass"; then
8828	if test prog = "$linkmode"; then
8829	  compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
8830	  finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
8831	else
8832	  compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
8833	fi
8834      fi
8835      dependency_libs=$newdependency_libs
8836      if test dlpreopen = "$pass"; then
8837	# Link the dlpreopened libraries before other libraries
8838	for deplib in $save_deplibs; do
8839	  deplibs="$deplib $deplibs"
8840	done
8841      fi
8842      if test dlopen != "$pass"; then
8843	test conv = "$pass" || {
8844	  # Make sure lib_search_path contains only unique directories.
8845	  lib_search_path=
8846	  for dir in $newlib_search_path; do
8847	    case "$lib_search_path " in
8848	    *" $dir "*) ;;
8849	    *) func_append lib_search_path " $dir" ;;
8850	    esac
8851	  done
8852	  newlib_search_path=
8853	}
8854
8855	if test prog,link = "$linkmode,$pass"; then
8856	  vars="compile_deplibs finalize_deplibs"
8857	else
8858	  vars=deplibs
8859	fi
8860	for var in $vars dependency_libs; do
8861	  # Add libraries to $var in reverse order
8862	  eval tmp_libs=\"\$$var\"
8863	  new_libs=
8864	  for deplib in $tmp_libs; do
8865	    # FIXME: Pedantically, this is the right thing to do, so
8866	    #        that some nasty dependency loop isn't accidentally
8867	    #        broken:
8868	    #new_libs="$deplib $new_libs"
8869	    # Pragmatically, this seems to cause very few problems in
8870	    # practice:
8871	    case $deplib in
8872	    -L*) new_libs="$deplib $new_libs" ;;
8873	    -R*) ;;
8874	    *)
8875	      # And here is the reason: when a library appears more
8876	      # than once as an explicit dependence of a library, or
8877	      # is implicitly linked in more than once by the
8878	      # compiler, it is considered special, and multiple
8879	      # occurrences thereof are not removed.  Compare this
8880	      # with having the same library being listed as a
8881	      # dependency of multiple other libraries: in this case,
8882	      # we know (pedantically, we assume) the library does not
8883	      # need to be listed more than once, so we keep only the
8884	      # last copy.  This is not always right, but it is rare
8885	      # enough that we require users that really mean to play
8886	      # such unportable linking tricks to link the library
8887	      # using -Wl,-lname, so that libtool does not consider it
8888	      # for duplicate removal.
8889	      case " $specialdeplibs " in
8890	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
8891	      *)
8892		case " $new_libs " in
8893		*" $deplib "*) ;;
8894		*) new_libs="$deplib $new_libs" ;;
8895		esac
8896		;;
8897	      esac
8898	      ;;
8899	    esac
8900	  done
8901	  tmp_libs=
8902	  for deplib in $new_libs; do
8903	    case $deplib in
8904	    -L*)
8905	      case " $tmp_libs " in
8906	      *" $deplib "*) ;;
8907	      *) func_append tmp_libs " $deplib" ;;
8908	      esac
8909	      ;;
8910	    *) func_append tmp_libs " $deplib" ;;
8911	    esac
8912	  done
8913	  eval $var=\"$tmp_libs\"
8914	done # for var
8915      fi
8916
8917      # Add Sun CC postdeps if required:
8918      test CXX = "$tagname" && {
8919        case $host_os in
8920        linux*)
8921          case `$CC -V 2>&1 | $SED 5q` in
8922          *Sun\ C*) # Sun C++ 5.9
8923            func_suncc_cstd_abi
8924
8925            if test no != "$suncc_use_cstd_abi"; then
8926              func_append postdeps ' -library=Cstd -library=Crun'
8927            fi
8928            ;;
8929          esac
8930          ;;
8931
8932        solaris*)
8933          func_cc_basename "$CC"
8934          case $func_cc_basename_result in
8935          CC* | sunCC*)
8936            func_suncc_cstd_abi
8937
8938            if test no != "$suncc_use_cstd_abi"; then
8939              func_append postdeps ' -library=Cstd -library=Crun'
8940            fi
8941            ;;
8942          esac
8943          ;;
8944        esac
8945      }
8946
8947      # Last step: remove runtime libs from dependency_libs
8948      # (they stay in deplibs)
8949      tmp_libs=
8950      for i in $dependency_libs; do
8951	case " $predeps $postdeps $compiler_lib_search_path " in
8952	*" $i "*)
8953	  i=
8954	  ;;
8955	esac
8956	if test -n "$i"; then
8957	  func_append tmp_libs " $i"
8958	fi
8959      done
8960      dependency_libs=$tmp_libs
8961    done # for pass
8962    if test prog = "$linkmode"; then
8963      dlfiles=$newdlfiles
8964    fi
8965    if test prog = "$linkmode" || test lib = "$linkmode"; then
8966      dlprefiles=$newdlprefiles
8967    fi
8968
8969    case $linkmode in
8970    oldlib)
8971      if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then
8972	func_warning "'-dlopen' is ignored for archives"
8973      fi
8974
8975      case " $deplibs" in
8976      *\ -l* | *\ -L*)
8977	func_warning "'-l' and '-L' are ignored for archives" ;;
8978      esac
8979
8980      test -n "$rpath" && \
8981	func_warning "'-rpath' is ignored for archives"
8982
8983      test -n "$xrpath" && \
8984	func_warning "'-R' is ignored for archives"
8985
8986      test -n "$vinfo" && \
8987	func_warning "'-version-info/-version-number' is ignored for archives"
8988
8989      test -n "$release" && \
8990	func_warning "'-release' is ignored for archives"
8991
8992      test -n "$export_symbols$export_symbols_regex" && \
8993	func_warning "'-export-symbols' is ignored for archives"
8994
8995      # Now set the variables for building old libraries.
8996      build_libtool_libs=no
8997      oldlibs=$output
8998      func_append objs "$old_deplibs"
8999      ;;
9000
9001    lib)
9002      # Make sure we only generate libraries of the form 'libNAME.la'.
9003      case $outputname in
9004      lib*)
9005	func_stripname 'lib' '.la' "$outputname"
9006	name=$func_stripname_result
9007	eval shared_ext=\"$shrext_cmds\"
9008	eval libname=\"$libname_spec\"
9009	;;
9010      *)
9011	test no = "$module" \
9012	  && func_fatal_help "libtool library '$output' must begin with 'lib'"
9013
9014	if test no != "$need_lib_prefix"; then
9015	  # Add the "lib" prefix for modules if required
9016	  func_stripname '' '.la' "$outputname"
9017	  name=$func_stripname_result
9018	  eval shared_ext=\"$shrext_cmds\"
9019	  eval libname=\"$libname_spec\"
9020	else
9021	  func_stripname '' '.la' "$outputname"
9022	  libname=$func_stripname_result
9023	fi
9024	;;
9025      esac
9026
9027      if test -n "$objs"; then
9028	if test pass_all != "$deplibs_check_method"; then
9029	  func_fatal_error "cannot build libtool library '$output' from non-libtool objects on this host:$objs"
9030	else
9031	  echo
9032	  $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
9033	  $ECHO "*** objects $objs is not portable!"
9034	  func_append libobjs " $objs"
9035	fi
9036      fi
9037
9038      test no = "$dlself" \
9039	|| func_warning "'-dlopen self' is ignored for libtool libraries"
9040
9041      set dummy $rpath
9042      shift
9043      test 1 -lt "$#" \
9044	&& func_warning "ignoring multiple '-rpath's for a libtool library"
9045
9046      install_libdir=$1
9047
9048      oldlibs=
9049      if test -z "$rpath"; then
9050	if test yes = "$build_libtool_libs"; then
9051	  # Building a libtool convenience library.
9052	  # Some compilers have problems with a '.al' extension so
9053	  # convenience libraries should have the same extension an
9054	  # archive normally would.
9055	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
9056	  build_libtool_libs=convenience
9057	  build_old_libs=yes
9058	fi
9059
9060	test -n "$vinfo" && \
9061	  func_warning "'-version-info/-version-number' is ignored for convenience libraries"
9062
9063	test -n "$release" && \
9064	  func_warning "'-release' is ignored for convenience libraries"
9065      else
9066
9067	# Parse the version information argument.
9068	save_ifs=$IFS; IFS=:
9069	set dummy $vinfo 0 0 0
9070	shift
9071	IFS=$save_ifs
9072
9073	test -n "$7" && \
9074	  func_fatal_help "too many parameters to '-version-info'"
9075
9076	# convert absolute version numbers to libtool ages
9077	# this retains compatibility with .la files and attempts
9078	# to make the code below a bit more comprehensible
9079
9080	case $vinfo_number in
9081	yes)
9082	  number_major=$1
9083	  number_minor=$2
9084	  number_revision=$3
9085	  #
9086	  # There are really only two kinds -- those that
9087	  # use the current revision as the major version
9088	  # and those that subtract age and use age as
9089	  # a minor version.  But, then there is irix
9090	  # that has an extra 1 added just for fun
9091	  #
9092	  case $version_type in
9093	  # correct linux to gnu/linux during the next big refactor
9094	  darwin|freebsd-elf|linux|midnightbsd-elf|osf|windows|none)
9095	    func_arith $number_major + $number_minor
9096	    current=$func_arith_result
9097	    age=$number_minor
9098	    revision=$number_revision
9099	    ;;
9100	  freebsd-aout|qnx|sunos)
9101	    current=$number_major
9102	    revision=$number_minor
9103	    age=0
9104	    ;;
9105	  irix|nonstopux)
9106	    func_arith $number_major + $number_minor
9107	    current=$func_arith_result
9108	    age=$number_minor
9109	    revision=$number_minor
9110	    lt_irix_increment=no
9111	    ;;
9112	  esac
9113	  ;;
9114	no)
9115	  current=$1
9116	  revision=$2
9117	  age=$3
9118	  ;;
9119	esac
9120
9121	# Check that each of the things are valid numbers.
9122	case $current in
9123	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
9124	*)
9125	  func_error "CURRENT '$current' must be a nonnegative integer"
9126	  func_fatal_error "'$vinfo' is not valid version information"
9127	  ;;
9128	esac
9129
9130	case $revision in
9131	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
9132	*)
9133	  func_error "REVISION '$revision' must be a nonnegative integer"
9134	  func_fatal_error "'$vinfo' is not valid version information"
9135	  ;;
9136	esac
9137
9138	case $age in
9139	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
9140	*)
9141	  func_error "AGE '$age' must be a nonnegative integer"
9142	  func_fatal_error "'$vinfo' is not valid version information"
9143	  ;;
9144	esac
9145
9146	if test "$age" -gt "$current"; then
9147	  func_error "AGE '$age' is greater than the current interface number '$current'"
9148	  func_fatal_error "'$vinfo' is not valid version information"
9149	fi
9150
9151	# Calculate the version variables.
9152	major=
9153	versuffix=
9154	verstring=
9155	case $version_type in
9156	none) ;;
9157
9158	darwin)
9159	  # Like Linux, but with the current version available in
9160	  # verstring for coding it into the library header
9161	  func_arith $current - $age
9162	  major=.$func_arith_result
9163	  versuffix=$major.$age.$revision
9164	  # Darwin ld doesn't like 0 for these options...
9165	  func_arith $current + 1
9166	  minor_current=$func_arith_result
9167	  xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision"
9168	  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
9169          # On Darwin other compilers
9170          case $CC in
9171              nagfor*)
9172                  verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision"
9173                  ;;
9174              *)
9175                  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
9176                  ;;
9177          esac
9178	  ;;
9179
9180	freebsd-aout)
9181	  major=.$current
9182	  versuffix=.$current.$revision
9183	  ;;
9184
9185	freebsd-elf | midnightbsd-elf)
9186	  func_arith $current - $age
9187	  major=.$func_arith_result
9188	  versuffix=$major.$age.$revision
9189	  ;;
9190
9191	irix | nonstopux)
9192	  if test no = "$lt_irix_increment"; then
9193	    func_arith $current - $age
9194	  else
9195	    func_arith $current - $age + 1
9196	  fi
9197	  major=$func_arith_result
9198
9199	  case $version_type in
9200	    nonstopux) verstring_prefix=nonstopux ;;
9201	    *)         verstring_prefix=sgi ;;
9202	  esac
9203	  verstring=$verstring_prefix$major.$revision
9204
9205	  # Add in all the interfaces that we are compatible with.
9206	  loop=$revision
9207	  while test 0 -ne "$loop"; do
9208	    func_arith $revision - $loop
9209	    iface=$func_arith_result
9210	    func_arith $loop - 1
9211	    loop=$func_arith_result
9212	    verstring=$verstring_prefix$major.$iface:$verstring
9213	  done
9214
9215	  # Before this point, $major must not contain '.'.
9216	  major=.$major
9217	  versuffix=$major.$revision
9218	  ;;
9219
9220	linux) # correct to gnu/linux during the next big refactor
9221	  func_arith $current - $age
9222	  major=.$func_arith_result
9223	  versuffix=$major.$age.$revision
9224	  ;;
9225
9226	osf)
9227	  func_arith $current - $age
9228	  major=.$func_arith_result
9229	  versuffix=.$current.$age.$revision
9230	  verstring=$current.$age.$revision
9231
9232	  # Add in all the interfaces that we are compatible with.
9233	  loop=$age
9234	  while test 0 -ne "$loop"; do
9235	    func_arith $current - $loop
9236	    iface=$func_arith_result
9237	    func_arith $loop - 1
9238	    loop=$func_arith_result
9239	    verstring=$verstring:$iface.0
9240	  done
9241
9242	  # Make executables depend on our current version.
9243	  func_append verstring ":$current.0"
9244	  ;;
9245
9246	qnx)
9247	  major=.$current
9248	  versuffix=.$current
9249	  ;;
9250
9251	sco)
9252	  major=.$current
9253	  versuffix=.$current
9254	  ;;
9255
9256	sunos)
9257	  major=.$current
9258	  versuffix=.$current.$revision
9259	  ;;
9260
9261	windows)
9262	  # Use '-' rather than '.', since we only want one
9263	  # extension on DOS 8.3 file systems.
9264	  func_arith $current - $age
9265	  major=$func_arith_result
9266	  versuffix=-$major
9267	  ;;
9268
9269	*)
9270	  func_fatal_configuration "unknown library version type '$version_type'"
9271	  ;;
9272	esac
9273
9274	# Clear the version info if we defaulted, and they specified a release.
9275	if test -z "$vinfo" && test -n "$release"; then
9276	  major=
9277	  case $version_type in
9278	  darwin)
9279	    # we can't check for "0.0" in archive_cmds due to quoting
9280	    # problems, so we reset it completely
9281	    verstring=
9282	    ;;
9283	  *)
9284	    verstring=0.0
9285	    ;;
9286	  esac
9287	  if test no = "$need_version"; then
9288	    versuffix=
9289	  else
9290	    versuffix=.0.0
9291	  fi
9292	fi
9293
9294	# Remove version info from name if versioning should be avoided
9295	if test yes,no = "$avoid_version,$need_version"; then
9296	  major=
9297	  versuffix=
9298	  verstring=
9299	fi
9300
9301	# Check to see if the archive will have undefined symbols.
9302	if test yes = "$allow_undefined"; then
9303	  if test unsupported = "$allow_undefined_flag"; then
9304	    if test yes = "$build_old_libs"; then
9305	      func_warning "undefined symbols not allowed in $host shared libraries; building static only"
9306	      build_libtool_libs=no
9307	    else
9308	      func_fatal_error "can't build $host shared library unless -no-undefined is specified"
9309	    fi
9310	  fi
9311	else
9312	  # Don't allow undefined symbols.
9313	  allow_undefined_flag=$no_undefined_flag
9314	fi
9315
9316      fi
9317
9318      func_generate_dlsyms "$libname" "$libname" :
9319      func_append libobjs " $symfileobj"
9320      test " " = "$libobjs" && libobjs=
9321
9322      if test relink != "$opt_mode"; then
9323	# Remove our outputs, but don't remove object files since they
9324	# may have been created when compiling PIC objects.
9325	removelist=
9326	tempremovelist=`$ECHO "$output_objdir/*"`
9327	for p in $tempremovelist; do
9328	  case $p in
9329	    *.$objext | *.gcno)
9330	       ;;
9331	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/$libname$release.*)
9332	       if test -n "$precious_files_regex"; then
9333		 if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
9334		 then
9335		   continue
9336		 fi
9337	       fi
9338	       func_append removelist " $p"
9339	       ;;
9340	    *) ;;
9341	  esac
9342	done
9343	test -n "$removelist" && \
9344	  func_show_eval "${RM}r \$removelist"
9345      fi
9346
9347      # Now set the variables for building old libraries.
9348      if test yes = "$build_old_libs" && test convenience != "$build_libtool_libs"; then
9349	func_append oldlibs " $output_objdir/$libname.$libext"
9350
9351	# Transform .lo files to .o files.
9352	oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; $lo2o" | $NL2SP`
9353      fi
9354
9355      # Eliminate all temporary directories.
9356      #for path in $notinst_path; do
9357      #	lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"`
9358      #	deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"`
9359      #	dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"`
9360      #done
9361
9362      if test -n "$xrpath"; then
9363	# If the user specified any rpath flags, then add them.
9364	temp_xrpath=
9365	for libdir in $xrpath; do
9366	  func_replace_sysroot "$libdir"
9367	  func_append temp_xrpath " -R$func_replace_sysroot_result"
9368	  case "$finalize_rpath " in
9369	  *" $libdir "*) ;;
9370	  *) func_append finalize_rpath " $libdir" ;;
9371	  esac
9372	done
9373	if test yes != "$hardcode_into_libs" || test yes = "$build_old_libs"; then
9374	  dependency_libs="$temp_xrpath $dependency_libs"
9375	fi
9376      fi
9377
9378      # Make sure dlfiles contains only unique files that won't be dlpreopened
9379      old_dlfiles=$dlfiles
9380      dlfiles=
9381      for lib in $old_dlfiles; do
9382	case " $dlprefiles $dlfiles " in
9383	*" $lib "*) ;;
9384	*) func_append dlfiles " $lib" ;;
9385	esac
9386      done
9387
9388      # Make sure dlprefiles contains only unique files
9389      old_dlprefiles=$dlprefiles
9390      dlprefiles=
9391      for lib in $old_dlprefiles; do
9392	case "$dlprefiles " in
9393	*" $lib "*) ;;
9394	*) func_append dlprefiles " $lib" ;;
9395	esac
9396      done
9397
9398      if test yes = "$build_libtool_libs"; then
9399	if test -n "$rpath"; then
9400	  case $host in
9401	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*)
9402	    # these systems don't actually have a c library (as such)!
9403	    ;;
9404	  *-*-rhapsody* | *-*-darwin1.[012])
9405	    # Rhapsody C library is in the System framework
9406	    func_append deplibs " System.ltframework"
9407	    ;;
9408	  *-*-netbsd*)
9409	    # Don't link with libc until the a.out ld.so is fixed.
9410	    ;;
9411	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-midnightbsd*)
9412	    # Do not include libc due to us having libc/libc_r.
9413	    ;;
9414	  *-*-sco3.2v5* | *-*-sco5v6*)
9415	    # Causes problems with __ctype
9416	    ;;
9417	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
9418	    # Compiler inserts libc in the correct place for threads to work
9419	    ;;
9420	  *)
9421	    # Add libc to deplibs on all other systems if necessary.
9422	    if test yes = "$build_libtool_need_lc"; then
9423	      func_append deplibs " -lc"
9424	    fi
9425	    ;;
9426	  esac
9427	fi
9428
9429	# Transform deplibs into only deplibs that can be linked in shared.
9430	name_save=$name
9431	libname_save=$libname
9432	release_save=$release
9433	versuffix_save=$versuffix
9434	major_save=$major
9435	# I'm not sure if I'm treating the release correctly.  I think
9436	# release should show up in the -l (ie -lgmp5) so we don't want to
9437	# add it in twice.  Is that correct?
9438	release=
9439	versuffix=
9440	major=
9441	newdeplibs=
9442	droppeddeps=no
9443	case $deplibs_check_method in
9444	pass_all)
9445	  # Don't check for shared/static.  Everything works.
9446	  # This might be a little naive.  We might want to check
9447	  # whether the library exists or not.  But this is on
9448	  # osf3 & osf4 and I'm not really sure... Just
9449	  # implementing what was already the behavior.
9450	  newdeplibs=$deplibs
9451	  ;;
9452	test_compile)
9453	  # This code stresses the "libraries are programs" paradigm to its
9454	  # limits. Maybe even breaks it.  We compile a program, linking it
9455	  # against the deplibs as a proxy for the library.  Then we can check
9456	  # whether they linked in statically or dynamically with ldd.
9457	  $opt_dry_run || $RM conftest.c
9458	  cat > conftest.c <<EOF
9459	  int main() { return 0; }
9460EOF
9461	  $opt_dry_run || $RM conftest
9462	  if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
9463	    ldd_output=`ldd conftest`
9464	    for i in $deplibs; do
9465	      case $i in
9466	      -l*)
9467		func_stripname -l '' "$i"
9468		name=$func_stripname_result
9469		if test yes = "$allow_libtool_libs_with_static_runtimes"; then
9470		  case " $predeps $postdeps " in
9471		  *" $i "*)
9472		    func_append newdeplibs " $i"
9473		    i=
9474		    ;;
9475		  esac
9476		fi
9477		if test -n "$i"; then
9478		  libname=`eval "\\$ECHO \"$libname_spec\""`
9479		  deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
9480		  set dummy $deplib_matches; shift
9481		  deplib_match=$1
9482		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0; then
9483		    func_append newdeplibs " $i"
9484		  else
9485		    droppeddeps=yes
9486		    echo
9487		    $ECHO "*** Warning: dynamic linker does not accept needed library $i."
9488		    echo "*** I have the capability to make that library automatically link in when"
9489		    echo "*** you link to this library.  But I can only do this if you have a"
9490		    echo "*** shared version of the library, which I believe you do not have"
9491		    echo "*** because a test_compile did reveal that the linker did not use it for"
9492		    echo "*** its dynamic dependency list that programs get resolved with at runtime."
9493		  fi
9494		fi
9495		;;
9496	      *)
9497		func_append newdeplibs " $i"
9498		;;
9499	      esac
9500	    done
9501	  else
9502	    # Error occurred in the first compile.  Let's try to salvage
9503	    # the situation: Compile a separate program for each library.
9504	    for i in $deplibs; do
9505	      case $i in
9506	      -l*)
9507		func_stripname -l '' "$i"
9508		name=$func_stripname_result
9509		$opt_dry_run || $RM conftest
9510		if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
9511		  ldd_output=`ldd conftest`
9512		  if test yes = "$allow_libtool_libs_with_static_runtimes"; then
9513		    case " $predeps $postdeps " in
9514		    *" $i "*)
9515		      func_append newdeplibs " $i"
9516		      i=
9517		      ;;
9518		    esac
9519		  fi
9520		  if test -n "$i"; then
9521		    libname=`eval "\\$ECHO \"$libname_spec\""`
9522		    deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
9523		    set dummy $deplib_matches; shift
9524		    deplib_match=$1
9525		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0; then
9526		      func_append newdeplibs " $i"
9527		    else
9528		      droppeddeps=yes
9529		      echo
9530		      $ECHO "*** Warning: dynamic linker does not accept needed library $i."
9531		      echo "*** I have the capability to make that library automatically link in when"
9532		      echo "*** you link to this library.  But I can only do this if you have a"
9533		      echo "*** shared version of the library, which you do not appear to have"
9534		      echo "*** because a test_compile did reveal that the linker did not use this one"
9535		      echo "*** as a dynamic dependency that programs can get resolved with at runtime."
9536		    fi
9537		  fi
9538		else
9539		  droppeddeps=yes
9540		  echo
9541		  $ECHO "*** Warning!  Library $i is needed by this library but I was not able to"
9542		  echo "*** make it link in!  You will probably need to install it or some"
9543		  echo "*** library that it depends on before this library will be fully"
9544		  echo "*** functional.  Installing it before continuing would be even better."
9545		fi
9546		;;
9547	      *)
9548		func_append newdeplibs " $i"
9549		;;
9550	      esac
9551	    done
9552	  fi
9553	  ;;
9554	file_magic*)
9555	  set dummy $deplibs_check_method; shift
9556	  file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
9557	  for a_deplib in $deplibs; do
9558	    case $a_deplib in
9559	    -l*)
9560	      func_stripname -l '' "$a_deplib"
9561	      name=$func_stripname_result
9562	      if test yes = "$allow_libtool_libs_with_static_runtimes"; then
9563		case " $predeps $postdeps " in
9564		*" $a_deplib "*)
9565		  func_append newdeplibs " $a_deplib"
9566		  a_deplib=
9567		  ;;
9568		esac
9569	      fi
9570	      if test -n "$a_deplib"; then
9571		libname=`eval "\\$ECHO \"$libname_spec\""`
9572		if test -n "$file_magic_glob"; then
9573		  libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob`
9574		else
9575		  libnameglob=$libname
9576		fi
9577		test yes = "$want_nocaseglob" && nocaseglob=`shopt -p nocaseglob`
9578		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
9579		  if test yes = "$want_nocaseglob"; then
9580		    shopt -s nocaseglob
9581		    potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
9582		    $nocaseglob
9583		  else
9584		    potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
9585		  fi
9586		  for potent_lib in $potential_libs; do
9587		      # Follow soft links.
9588		      if ls -lLd "$potent_lib" 2>/dev/null |
9589			 $GREP " -> " >/dev/null; then
9590			continue
9591		      fi
9592		      # The statement above tries to avoid entering an
9593		      # endless loop below, in case of cyclic links.
9594		      # We might still enter an endless loop, since a link
9595		      # loop can be closed while we follow links,
9596		      # but so what?
9597		      potlib=$potent_lib
9598		      while test -h "$potlib" 2>/dev/null; do
9599			potliblink=`ls -ld $potlib | $SED 's/.* -> //'`
9600			case $potliblink in
9601			[\\/]* | [A-Za-z]:[\\/]*) potlib=$potliblink;;
9602			*) potlib=`$ECHO "$potlib" | $SED 's|[^/]*$||'`"$potliblink";;
9603			esac
9604		      done
9605		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
9606			 $SED -e 10q |
9607			 $EGREP "$file_magic_regex" > /dev/null; then
9608			func_append newdeplibs " $a_deplib"
9609			a_deplib=
9610			break 2
9611		      fi
9612		  done
9613		done
9614	      fi
9615	      if test -n "$a_deplib"; then
9616		droppeddeps=yes
9617		echo
9618		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
9619		echo "*** I have the capability to make that library automatically link in when"
9620		echo "*** you link to this library.  But I can only do this if you have a"
9621		echo "*** shared version of the library, which you do not appear to have"
9622		echo "*** because I did check the linker path looking for a file starting"
9623		if test -z "$potlib"; then
9624		  $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
9625		else
9626		  $ECHO "*** with $libname and none of the candidates passed a file format test"
9627		  $ECHO "*** using a file magic. Last file checked: $potlib"
9628		fi
9629	      fi
9630	      ;;
9631	    *)
9632	      # Add a -L argument.
9633	      func_append newdeplibs " $a_deplib"
9634	      ;;
9635	    esac
9636	  done # Gone through all deplibs.
9637	  ;;
9638	match_pattern*)
9639	  set dummy $deplibs_check_method; shift
9640	  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
9641	  for a_deplib in $deplibs; do
9642	    case $a_deplib in
9643	    -l*)
9644	      func_stripname -l '' "$a_deplib"
9645	      name=$func_stripname_result
9646	      if test yes = "$allow_libtool_libs_with_static_runtimes"; then
9647		case " $predeps $postdeps " in
9648		*" $a_deplib "*)
9649		  func_append newdeplibs " $a_deplib"
9650		  a_deplib=
9651		  ;;
9652		esac
9653	      fi
9654	      if test -n "$a_deplib"; then
9655		libname=`eval "\\$ECHO \"$libname_spec\""`
9656		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
9657		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
9658		  for potent_lib in $potential_libs; do
9659		    potlib=$potent_lib # see symlink-check above in file_magic test
9660		    if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \
9661		       $EGREP "$match_pattern_regex" > /dev/null; then
9662		      func_append newdeplibs " $a_deplib"
9663		      a_deplib=
9664		      break 2
9665		    fi
9666		  done
9667		done
9668	      fi
9669	      if test -n "$a_deplib"; then
9670		droppeddeps=yes
9671		echo
9672		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
9673		echo "*** I have the capability to make that library automatically link in when"
9674		echo "*** you link to this library.  But I can only do this if you have a"
9675		echo "*** shared version of the library, which you do not appear to have"
9676		echo "*** because I did check the linker path looking for a file starting"
9677		if test -z "$potlib"; then
9678		  $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
9679		else
9680		  $ECHO "*** with $libname and none of the candidates passed a file format test"
9681		  $ECHO "*** using a regex pattern. Last file checked: $potlib"
9682		fi
9683	      fi
9684	      ;;
9685	    *)
9686	      # Add a -L argument.
9687	      func_append newdeplibs " $a_deplib"
9688	      ;;
9689	    esac
9690	  done # Gone through all deplibs.
9691	  ;;
9692	none | unknown | *)
9693	  newdeplibs=
9694	  tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'`
9695	  if test yes = "$allow_libtool_libs_with_static_runtimes"; then
9696	    for i in $predeps $postdeps; do
9697	      # can't use Xsed below, because $i might contain '/'
9698	      tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s|$i||"`
9699	    done
9700	  fi
9701	  case $tmp_deplibs in
9702	  *[!\	\ ]*)
9703	    echo
9704	    if test none = "$deplibs_check_method"; then
9705	      echo "*** Warning: inter-library dependencies are not supported in this platform."
9706	    else
9707	      echo "*** Warning: inter-library dependencies are not known to be supported."
9708	    fi
9709	    echo "*** All declared inter-library dependencies are being dropped."
9710	    droppeddeps=yes
9711	    ;;
9712	  esac
9713	  ;;
9714	esac
9715	versuffix=$versuffix_save
9716	major=$major_save
9717	release=$release_save
9718	libname=$libname_save
9719	name=$name_save
9720
9721	case $host in
9722	*-*-rhapsody* | *-*-darwin1.[012])
9723	  # On Rhapsody replace the C library with the System framework
9724	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'`
9725	  ;;
9726	esac
9727
9728	if test yes = "$droppeddeps"; then
9729	  if test yes = "$module"; then
9730	    echo
9731	    echo "*** Warning: libtool could not satisfy all declared inter-library"
9732	    $ECHO "*** dependencies of module $libname.  Therefore, libtool will create"
9733	    echo "*** a static module, that should work as long as the dlopening"
9734	    echo "*** application is linked with the -dlopen flag."
9735	    if test -z "$global_symbol_pipe"; then
9736	      echo
9737	      echo "*** However, this would only work if libtool was able to extract symbol"
9738	      echo "*** lists from a program, using 'nm' or equivalent, but libtool could"
9739	      echo "*** not find such a program.  So, this module is probably useless."
9740	      echo "*** 'nm' from GNU binutils and a full rebuild may help."
9741	    fi
9742	    if test no = "$build_old_libs"; then
9743	      oldlibs=$output_objdir/$libname.$libext
9744	      build_libtool_libs=module
9745	      build_old_libs=yes
9746	    else
9747	      build_libtool_libs=no
9748	    fi
9749	  else
9750	    echo "*** The inter-library dependencies that have been dropped here will be"
9751	    echo "*** automatically added whenever a program is linked with this library"
9752	    echo "*** or is declared to -dlopen it."
9753
9754	    if test no = "$allow_undefined"; then
9755	      echo
9756	      echo "*** Since this library must not contain undefined symbols,"
9757	      echo "*** because either the platform does not support them or"
9758	      echo "*** it was explicitly requested with -no-undefined,"
9759	      echo "*** libtool will only create a static version of it."
9760	      if test no = "$build_old_libs"; then
9761		oldlibs=$output_objdir/$libname.$libext
9762		build_libtool_libs=module
9763		build_old_libs=yes
9764	      else
9765		build_libtool_libs=no
9766	      fi
9767	    fi
9768	  fi
9769	fi
9770	# Done checking deplibs!
9771	deplibs=$newdeplibs
9772      fi
9773      # Time to change all our "foo.ltframework" stuff back to "-framework foo"
9774      case $host in
9775	*-*-darwin*)
9776	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
9777	  new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
9778	  deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
9779	  ;;
9780      esac
9781
9782      # move library search paths that coincide with paths to not yet
9783      # installed libraries to the beginning of the library search list
9784      new_libs=
9785      for path in $notinst_path; do
9786	case " $new_libs " in
9787	*" -L$path/$objdir "*) ;;
9788	*)
9789	  case " $deplibs " in
9790	  *" -L$path/$objdir "*)
9791	    func_append new_libs " -L$path/$objdir" ;;
9792	  esac
9793	  ;;
9794	esac
9795      done
9796      for deplib in $deplibs; do
9797	case $deplib in
9798	-L*)
9799	  case " $new_libs " in
9800	  *" $deplib "*) ;;
9801	  *) func_append new_libs " $deplib" ;;
9802	  esac
9803	  ;;
9804	*) func_append new_libs " $deplib" ;;
9805	esac
9806      done
9807      deplibs=$new_libs
9808
9809      # All the library-specific variables (install_libdir is set above).
9810      library_names=
9811      old_library=
9812      dlname=
9813
9814      # Test again, we may have decided not to build it any more
9815      if test yes = "$build_libtool_libs"; then
9816	# Remove $wl instances when linking with ld.
9817	# FIXME: should test the right _cmds variable.
9818	case $archive_cmds in
9819	  *\$LD\ *) wl= ;;
9820        esac
9821	if test yes = "$hardcode_into_libs"; then
9822	  # Hardcode the library paths
9823	  hardcode_libdirs=
9824	  dep_rpath=
9825	  rpath=$finalize_rpath
9826	  test relink = "$opt_mode" || rpath=$compile_rpath$rpath
9827	  for libdir in $rpath; do
9828	    if test -n "$hardcode_libdir_flag_spec"; then
9829	      if test -n "$hardcode_libdir_separator"; then
9830		func_replace_sysroot "$libdir"
9831		libdir=$func_replace_sysroot_result
9832		if test -z "$hardcode_libdirs"; then
9833		  hardcode_libdirs=$libdir
9834		else
9835		  # Just accumulate the unique libdirs.
9836		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
9837		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
9838		    ;;
9839		  *)
9840		    func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
9841		    ;;
9842		  esac
9843		fi
9844	      else
9845		eval flag=\"$hardcode_libdir_flag_spec\"
9846		func_append dep_rpath " $flag"
9847	      fi
9848	    elif test -n "$runpath_var"; then
9849	      case "$perm_rpath " in
9850	      *" $libdir "*) ;;
9851	      *) func_append perm_rpath " $libdir" ;;
9852	      esac
9853	    fi
9854	  done
9855	  # Substitute the hardcoded libdirs into the rpath.
9856	  if test -n "$hardcode_libdir_separator" &&
9857	     test -n "$hardcode_libdirs"; then
9858	    libdir=$hardcode_libdirs
9859	    eval "dep_rpath=\"$hardcode_libdir_flag_spec\""
9860	  fi
9861	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
9862	    # We should set the runpath_var.
9863	    rpath=
9864	    for dir in $perm_rpath; do
9865	      func_append rpath "$dir:"
9866	    done
9867	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
9868	  fi
9869	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
9870	fi
9871
9872	shlibpath=$finalize_shlibpath
9873	test relink = "$opt_mode" || shlibpath=$compile_shlibpath$shlibpath
9874	if test -n "$shlibpath"; then
9875	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
9876	fi
9877
9878	# Get the real and link names of the library.
9879	eval shared_ext=\"$shrext_cmds\"
9880	eval library_names=\"$library_names_spec\"
9881	set dummy $library_names
9882	shift
9883	realname=$1
9884	shift
9885
9886	if test -n "$soname_spec"; then
9887	  eval soname=\"$soname_spec\"
9888	else
9889	  soname=$realname
9890	fi
9891	if test -z "$dlname"; then
9892	  dlname=$soname
9893	fi
9894
9895	lib=$output_objdir/$realname
9896	linknames=
9897	for link
9898	do
9899	  func_append linknames " $link"
9900	done
9901
9902	# Use standard objects if they are pic
9903	test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP`
9904	test "X$libobjs" = "X " && libobjs=
9905
9906	delfiles=
9907	if test -n "$export_symbols" && test -n "$include_expsyms"; then
9908	  $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
9909	  export_symbols=$output_objdir/$libname.uexp
9910	  func_append delfiles " $export_symbols"
9911	fi
9912
9913	orig_export_symbols=
9914	case $host_os in
9915	cygwin* | mingw* | cegcc*)
9916	  if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
9917	    # exporting using user supplied symfile
9918	    func_dll_def_p "$export_symbols" || {
9919	      # and it's NOT already a .def file. Must figure out
9920	      # which of the given symbols are data symbols and tag
9921	      # them as such. So, trigger use of export_symbols_cmds.
9922	      # export_symbols gets reassigned inside the "prepare
9923	      # the list of exported symbols" if statement, so the
9924	      # include_expsyms logic still works.
9925	      orig_export_symbols=$export_symbols
9926	      export_symbols=
9927	      always_export_symbols=yes
9928	    }
9929	  fi
9930	  ;;
9931	esac
9932
9933	# Prepare the list of exported symbols
9934	if test -z "$export_symbols"; then
9935	  if test yes = "$always_export_symbols" || test -n "$export_symbols_regex"; then
9936	    func_verbose "generating symbol list for '$libname.la'"
9937	    export_symbols=$output_objdir/$libname.exp
9938	    $opt_dry_run || $RM $export_symbols
9939	    cmds=$export_symbols_cmds
9940	    save_ifs=$IFS; IFS='~'
9941	    for cmd1 in $cmds; do
9942	      IFS=$save_ifs
9943	      # Take the normal branch if the nm_file_list_spec branch
9944	      # doesn't work or if tool conversion is not needed.
9945	      case $nm_file_list_spec~$to_tool_file_cmd in
9946		*~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*)
9947		  try_normal_branch=yes
9948		  eval cmd=\"$cmd1\"
9949		  func_len " $cmd"
9950		  len=$func_len_result
9951		  ;;
9952		*)
9953		  try_normal_branch=no
9954		  ;;
9955	      esac
9956	      if test yes = "$try_normal_branch" \
9957		 && { test "$len" -lt "$max_cmd_len" \
9958		      || test "$max_cmd_len" -le -1; }
9959	      then
9960		func_show_eval "$cmd" 'exit $?'
9961		skipped_export=false
9962	      elif test -n "$nm_file_list_spec"; then
9963		func_basename "$output"
9964		output_la=$func_basename_result
9965		save_libobjs=$libobjs
9966		save_output=$output
9967		output=$output_objdir/$output_la.nm
9968		func_to_tool_file "$output"
9969		libobjs=$nm_file_list_spec$func_to_tool_file_result
9970		func_append delfiles " $output"
9971		func_verbose "creating $NM input file list: $output"
9972		for obj in $save_libobjs; do
9973		  func_to_tool_file "$obj"
9974		  $ECHO "$func_to_tool_file_result"
9975		done > "$output"
9976		eval cmd=\"$cmd1\"
9977		func_show_eval "$cmd" 'exit $?'
9978		output=$save_output
9979		libobjs=$save_libobjs
9980		skipped_export=false
9981	      else
9982		# The command line is too long to execute in one step.
9983		func_verbose "using reloadable object file for export list..."
9984		skipped_export=:
9985		# Break out early, otherwise skipped_export may be
9986		# set to false by a later but shorter cmd.
9987		break
9988	      fi
9989	    done
9990	    IFS=$save_ifs
9991	    if test -n "$export_symbols_regex" && test : != "$skipped_export"; then
9992	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
9993	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
9994	    fi
9995	  fi
9996	fi
9997
9998	if test -n "$export_symbols" && test -n "$include_expsyms"; then
9999	  tmp_export_symbols=$export_symbols
10000	  test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols
10001	  $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
10002	fi
10003
10004	if test : != "$skipped_export" && test -n "$orig_export_symbols"; then
10005	  # The given exports_symbols file has to be filtered, so filter it.
10006	  func_verbose "filter symbol list for '$libname.la' to tag DATA exports"
10007	  # FIXME: $output_objdir/$libname.filter potentially contains lots of
10008	  # 's' commands, which not all seds can handle. GNU sed should be fine
10009	  # though. Also, the filter scales superlinearly with the number of
10010	  # global variables. join(1) would be nice here, but unfortunately
10011	  # isn't a blessed tool.
10012	  $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
10013	  func_append delfiles " $export_symbols $output_objdir/$libname.filter"
10014	  export_symbols=$output_objdir/$libname.def
10015	  $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
10016	fi
10017
10018	tmp_deplibs=
10019	for test_deplib in $deplibs; do
10020	  case " $convenience " in
10021	  *" $test_deplib "*) ;;
10022	  *)
10023	    func_append tmp_deplibs " $test_deplib"
10024	    ;;
10025	  esac
10026	done
10027	deplibs=$tmp_deplibs
10028
10029	if test -n "$convenience"; then
10030	  if test -n "$whole_archive_flag_spec" &&
10031	    test yes = "$compiler_needs_object" &&
10032	    test -z "$libobjs"; then
10033	    # extract the archives, so we have objects to list.
10034	    # TODO: could optimize this to just extract one archive.
10035	    whole_archive_flag_spec=
10036	  fi
10037	  if test -n "$whole_archive_flag_spec"; then
10038	    save_libobjs=$libobjs
10039	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
10040	    test "X$libobjs" = "X " && libobjs=
10041	  else
10042	    gentop=$output_objdir/${outputname}x
10043	    func_append generated " $gentop"
10044
10045	    func_extract_archives $gentop $convenience
10046	    func_append libobjs " $func_extract_archives_result"
10047	    test "X$libobjs" = "X " && libobjs=
10048	  fi
10049	fi
10050
10051	if test yes = "$thread_safe" && test -n "$thread_safe_flag_spec"; then
10052	  eval flag=\"$thread_safe_flag_spec\"
10053	  func_append linker_flags " $flag"
10054	fi
10055
10056	# Make a backup of the uninstalled library when relinking
10057	if test relink = "$opt_mode"; then
10058	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
10059	fi
10060
10061	# Do each of the archive commands.
10062	if test yes = "$module" && test -n "$module_cmds"; then
10063	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
10064	    eval test_cmds=\"$module_expsym_cmds\"
10065	    cmds=$module_expsym_cmds
10066	  else
10067	    eval test_cmds=\"$module_cmds\"
10068	    cmds=$module_cmds
10069	  fi
10070	else
10071	  if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
10072	    eval test_cmds=\"$archive_expsym_cmds\"
10073	    cmds=$archive_expsym_cmds
10074	  else
10075	    eval test_cmds=\"$archive_cmds\"
10076	    cmds=$archive_cmds
10077	  fi
10078	fi
10079
10080	if test : != "$skipped_export" &&
10081	   func_len " $test_cmds" &&
10082	   len=$func_len_result &&
10083	   test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
10084	  :
10085	else
10086	  # The command line is too long to link in one step, link piecewise
10087	  # or, if using GNU ld and skipped_export is not :, use a linker
10088	  # script.
10089
10090	  # Save the value of $output and $libobjs because we want to
10091	  # use them later.  If we have whole_archive_flag_spec, we
10092	  # want to use save_libobjs as it was before
10093	  # whole_archive_flag_spec was expanded, because we can't
10094	  # assume the linker understands whole_archive_flag_spec.
10095	  # This may have to be revisited, in case too many
10096	  # convenience libraries get linked in and end up exceeding
10097	  # the spec.
10098	  if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
10099	    save_libobjs=$libobjs
10100	  fi
10101	  save_output=$output
10102	  func_basename "$output"
10103	  output_la=$func_basename_result
10104
10105	  # Clear the reloadable object creation command queue and
10106	  # initialize k to one.
10107	  test_cmds=
10108	  concat_cmds=
10109	  objlist=
10110	  last_robj=
10111	  k=1
10112
10113	  if test -n "$save_libobjs" && test : != "$skipped_export" && test yes = "$with_gnu_ld"; then
10114	    output=$output_objdir/$output_la.lnkscript
10115	    func_verbose "creating GNU ld script: $output"
10116	    echo 'INPUT (' > $output
10117	    for obj in $save_libobjs
10118	    do
10119	      func_to_tool_file "$obj"
10120	      $ECHO "$func_to_tool_file_result" >> $output
10121	    done
10122	    echo ')' >> $output
10123	    func_append delfiles " $output"
10124	    func_to_tool_file "$output"
10125	    output=$func_to_tool_file_result
10126	  elif test -n "$save_libobjs" && test : != "$skipped_export" && test -n "$file_list_spec"; then
10127	    output=$output_objdir/$output_la.lnk
10128	    func_verbose "creating linker input file list: $output"
10129	    : > $output
10130	    set x $save_libobjs
10131	    shift
10132	    firstobj=
10133	    if test yes = "$compiler_needs_object"; then
10134	      firstobj="$1 "
10135	      shift
10136	    fi
10137	    for obj
10138	    do
10139	      func_to_tool_file "$obj"
10140	      $ECHO "$func_to_tool_file_result" >> $output
10141	    done
10142	    func_append delfiles " $output"
10143	    func_to_tool_file "$output"
10144	    output=$firstobj\"$file_list_spec$func_to_tool_file_result\"
10145	  else
10146	    if test -n "$save_libobjs"; then
10147	      func_verbose "creating reloadable object files..."
10148	      output=$output_objdir/$output_la-$k.$objext
10149	      eval test_cmds=\"$reload_cmds\"
10150	      func_len " $test_cmds"
10151	      len0=$func_len_result
10152	      len=$len0
10153
10154	      # Loop over the list of objects to be linked.
10155	      for obj in $save_libobjs
10156	      do
10157		func_len " $obj"
10158		func_arith $len + $func_len_result
10159		len=$func_arith_result
10160		if test -z "$objlist" ||
10161		   test "$len" -lt "$max_cmd_len"; then
10162		  func_append objlist " $obj"
10163		else
10164		  # The command $test_cmds is almost too long, add a
10165		  # command to the queue.
10166		  if test 1 -eq "$k"; then
10167		    # The first file doesn't have a previous command to add.
10168		    reload_objs=$objlist
10169		    eval concat_cmds=\"$reload_cmds\"
10170		  else
10171		    # All subsequent reloadable object files will link in
10172		    # the last one created.
10173		    reload_objs="$objlist $last_robj"
10174		    eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\"
10175		  fi
10176		  last_robj=$output_objdir/$output_la-$k.$objext
10177		  func_arith $k + 1
10178		  k=$func_arith_result
10179		  output=$output_objdir/$output_la-$k.$objext
10180		  objlist=" $obj"
10181		  func_len " $last_robj"
10182		  func_arith $len0 + $func_len_result
10183		  len=$func_arith_result
10184		fi
10185	      done
10186	      # Handle the remaining objects by creating one last
10187	      # reloadable object file.  All subsequent reloadable object
10188	      # files will link in the last one created.
10189	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
10190	      reload_objs="$objlist $last_robj"
10191	      eval concat_cmds=\"\$concat_cmds$reload_cmds\"
10192	      if test -n "$last_robj"; then
10193	        eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
10194	      fi
10195	      func_append delfiles " $output"
10196
10197	    else
10198	      output=
10199	    fi
10200
10201	    ${skipped_export-false} && {
10202	      func_verbose "generating symbol list for '$libname.la'"
10203	      export_symbols=$output_objdir/$libname.exp
10204	      $opt_dry_run || $RM $export_symbols
10205	      libobjs=$output
10206	      # Append the command to create the export file.
10207	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
10208	      eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
10209	      if test -n "$last_robj"; then
10210		eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
10211	      fi
10212	    }
10213
10214	    test -n "$save_libobjs" &&
10215	      func_verbose "creating a temporary reloadable object file: $output"
10216
10217	    # Loop through the commands generated above and execute them.
10218	    save_ifs=$IFS; IFS='~'
10219	    for cmd in $concat_cmds; do
10220	      IFS=$save_ifs
10221	      $opt_quiet || {
10222		  func_quote_arg expand,pretty "$cmd"
10223		  eval "func_echo $func_quote_arg_result"
10224	      }
10225	      $opt_dry_run || eval "$cmd" || {
10226		lt_exit=$?
10227
10228		# Restore the uninstalled library and exit
10229		if test relink = "$opt_mode"; then
10230		  ( cd "$output_objdir" && \
10231		    $RM "${realname}T" && \
10232		    $MV "${realname}U" "$realname" )
10233		fi
10234
10235		exit $lt_exit
10236	      }
10237	    done
10238	    IFS=$save_ifs
10239
10240	    if test -n "$export_symbols_regex" && ${skipped_export-false}; then
10241	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
10242	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
10243	    fi
10244	  fi
10245
10246          ${skipped_export-false} && {
10247	    if test -n "$export_symbols" && test -n "$include_expsyms"; then
10248	      tmp_export_symbols=$export_symbols
10249	      test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols
10250	      $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
10251	    fi
10252
10253	    if test -n "$orig_export_symbols"; then
10254	      # The given exports_symbols file has to be filtered, so filter it.
10255	      func_verbose "filter symbol list for '$libname.la' to tag DATA exports"
10256	      # FIXME: $output_objdir/$libname.filter potentially contains lots of
10257	      # 's' commands, which not all seds can handle. GNU sed should be fine
10258	      # though. Also, the filter scales superlinearly with the number of
10259	      # global variables. join(1) would be nice here, but unfortunately
10260	      # isn't a blessed tool.
10261	      $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
10262	      func_append delfiles " $export_symbols $output_objdir/$libname.filter"
10263	      export_symbols=$output_objdir/$libname.def
10264	      $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
10265	    fi
10266	  }
10267
10268	  libobjs=$output
10269	  # Restore the value of output.
10270	  output=$save_output
10271
10272	  if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
10273	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
10274	    test "X$libobjs" = "X " && libobjs=
10275	  fi
10276	  # Expand the library linking commands again to reset the
10277	  # value of $libobjs for piecewise linking.
10278
10279	  # Do each of the archive commands.
10280	  if test yes = "$module" && test -n "$module_cmds"; then
10281	    if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
10282	      cmds=$module_expsym_cmds
10283	    else
10284	      cmds=$module_cmds
10285	    fi
10286	  else
10287	    if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
10288	      cmds=$archive_expsym_cmds
10289	    else
10290	      cmds=$archive_cmds
10291	    fi
10292	  fi
10293	fi
10294
10295	if test -n "$delfiles"; then
10296	  # Append the command to remove temporary files to $cmds.
10297	  eval cmds=\"\$cmds~\$RM $delfiles\"
10298	fi
10299
10300	# Add any objects from preloaded convenience libraries
10301	if test -n "$dlprefiles"; then
10302	  gentop=$output_objdir/${outputname}x
10303	  func_append generated " $gentop"
10304
10305	  func_extract_archives $gentop $dlprefiles
10306	  func_append libobjs " $func_extract_archives_result"
10307	  test "X$libobjs" = "X " && libobjs=
10308	fi
10309
10310	save_ifs=$IFS; IFS='~'
10311	for cmd in $cmds; do
10312	  IFS=$sp$nl
10313	  eval cmd=\"$cmd\"
10314	  IFS=$save_ifs
10315	  $opt_quiet || {
10316	    func_quote_arg expand,pretty "$cmd"
10317	    eval "func_echo $func_quote_arg_result"
10318	  }
10319	  $opt_dry_run || eval "$cmd" || {
10320	    lt_exit=$?
10321
10322	    # Restore the uninstalled library and exit
10323	    if test relink = "$opt_mode"; then
10324	      ( cd "$output_objdir" && \
10325	        $RM "${realname}T" && \
10326		$MV "${realname}U" "$realname" )
10327	    fi
10328
10329	    exit $lt_exit
10330	  }
10331	done
10332	IFS=$save_ifs
10333
10334	# Restore the uninstalled library and exit
10335	if test relink = "$opt_mode"; then
10336	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
10337
10338	  if test -n "$convenience"; then
10339	    if test -z "$whole_archive_flag_spec"; then
10340	      func_show_eval '${RM}r "$gentop"'
10341	    fi
10342	  fi
10343
10344	  exit $EXIT_SUCCESS
10345	fi
10346
10347	# Create links to the real library.
10348	for linkname in $linknames; do
10349	  if test "$realname" != "$linkname"; then
10350	    func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
10351	  fi
10352	done
10353
10354	# If -module or -export-dynamic was specified, set the dlname.
10355	if test yes = "$module" || test yes = "$export_dynamic"; then
10356	  # On all known operating systems, these are identical.
10357	  dlname=$soname
10358	fi
10359      fi
10360      ;;
10361
10362    obj)
10363      if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then
10364	func_warning "'-dlopen' is ignored for objects"
10365      fi
10366
10367      case " $deplibs" in
10368      *\ -l* | *\ -L*)
10369	func_warning "'-l' and '-L' are ignored for objects" ;;
10370      esac
10371
10372      test -n "$rpath" && \
10373	func_warning "'-rpath' is ignored for objects"
10374
10375      test -n "$xrpath" && \
10376	func_warning "'-R' is ignored for objects"
10377
10378      test -n "$vinfo" && \
10379	func_warning "'-version-info' is ignored for objects"
10380
10381      test -n "$release" && \
10382	func_warning "'-release' is ignored for objects"
10383
10384      case $output in
10385      *.lo)
10386	test -n "$objs$old_deplibs" && \
10387	  func_fatal_error "cannot build library object '$output' from non-libtool objects"
10388
10389	libobj=$output
10390	func_lo2o "$libobj"
10391	obj=$func_lo2o_result
10392	;;
10393      *)
10394	libobj=
10395	obj=$output
10396	;;
10397      esac
10398
10399      # Delete the old objects.
10400      $opt_dry_run || $RM $obj $libobj
10401
10402      # Objects from convenience libraries.  This assumes
10403      # single-version convenience libraries.  Whenever we create
10404      # different ones for PIC/non-PIC, this we'll have to duplicate
10405      # the extraction.
10406      reload_conv_objs=
10407      gentop=
10408      # if reload_cmds runs $LD directly, get rid of -Wl from
10409      # whole_archive_flag_spec and hope we can get by with turning comma
10410      # into space.
10411      case $reload_cmds in
10412        *\$LD[\ \$]*) wl= ;;
10413      esac
10414      if test -n "$convenience"; then
10415	if test -n "$whole_archive_flag_spec"; then
10416	  eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
10417	  test -n "$wl" || tmp_whole_archive_flags=`$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'`
10418	  reload_conv_objs=$reload_objs\ $tmp_whole_archive_flags
10419	else
10420	  gentop=$output_objdir/${obj}x
10421	  func_append generated " $gentop"
10422
10423	  func_extract_archives $gentop $convenience
10424	  reload_conv_objs="$reload_objs $func_extract_archives_result"
10425	fi
10426      fi
10427
10428      # If we're not building shared, we need to use non_pic_objs
10429      test yes = "$build_libtool_libs" || libobjs=$non_pic_objects
10430
10431      # Create the old-style object.
10432      reload_objs=$objs$old_deplibs' '`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; /\.lib$/d; $lo2o" | $NL2SP`' '$reload_conv_objs
10433
10434      output=$obj
10435      func_execute_cmds "$reload_cmds" 'exit $?'
10436
10437      # Exit if we aren't doing a library object file.
10438      if test -z "$libobj"; then
10439	if test -n "$gentop"; then
10440	  func_show_eval '${RM}r "$gentop"'
10441	fi
10442
10443	exit $EXIT_SUCCESS
10444      fi
10445
10446      test yes = "$build_libtool_libs" || {
10447	if test -n "$gentop"; then
10448	  func_show_eval '${RM}r "$gentop"'
10449	fi
10450
10451	# Create an invalid libtool object if no PIC, so that we don't
10452	# accidentally link it into a program.
10453	# $show "echo timestamp > $libobj"
10454	# $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
10455	exit $EXIT_SUCCESS
10456      }
10457
10458      if test -n "$pic_flag" || test default != "$pic_mode"; then
10459	# Only do commands if we really have different PIC objects.
10460	reload_objs="$libobjs $reload_conv_objs"
10461	output=$libobj
10462	func_execute_cmds "$reload_cmds" 'exit $?'
10463      fi
10464
10465      if test -n "$gentop"; then
10466	func_show_eval '${RM}r "$gentop"'
10467      fi
10468
10469      exit $EXIT_SUCCESS
10470      ;;
10471
10472    prog)
10473      case $host in
10474	*cygwin*) func_stripname '' '.exe' "$output"
10475	          output=$func_stripname_result.exe;;
10476      esac
10477      test -n "$vinfo" && \
10478	func_warning "'-version-info' is ignored for programs"
10479
10480      test -n "$release" && \
10481	func_warning "'-release' is ignored for programs"
10482
10483      $preload \
10484	&& test unknown,unknown,unknown = "$dlopen_support,$dlopen_self,$dlopen_self_static" \
10485	&& func_warning "'LT_INIT([dlopen])' not used. Assuming no dlopen support."
10486
10487      case $host in
10488      *-*-rhapsody* | *-*-darwin1.[012])
10489	# On Rhapsody replace the C library is the System framework
10490	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'`
10491	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'`
10492	;;
10493      esac
10494
10495      case $host in
10496      *-*-darwin*)
10497	# Don't allow lazy linking, it breaks C++ global constructors
10498	# But is supposedly fixed on 10.4 or later (yay!).
10499	if test CXX = "$tagname"; then
10500	  case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
10501	    10.[0123])
10502	      func_append compile_command " $wl-bind_at_load"
10503	      func_append finalize_command " $wl-bind_at_load"
10504	    ;;
10505	  esac
10506	fi
10507	# Time to change all our "foo.ltframework" stuff back to "-framework foo"
10508	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
10509	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
10510	;;
10511      esac
10512
10513
10514      # move library search paths that coincide with paths to not yet
10515      # installed libraries to the beginning of the library search list
10516      new_libs=
10517      for path in $notinst_path; do
10518	case " $new_libs " in
10519	*" -L$path/$objdir "*) ;;
10520	*)
10521	  case " $compile_deplibs " in
10522	  *" -L$path/$objdir "*)
10523	    func_append new_libs " -L$path/$objdir" ;;
10524	  esac
10525	  ;;
10526	esac
10527      done
10528      for deplib in $compile_deplibs; do
10529	case $deplib in
10530	-L*)
10531	  case " $new_libs " in
10532	  *" $deplib "*) ;;
10533	  *) func_append new_libs " $deplib" ;;
10534	  esac
10535	  ;;
10536	*) func_append new_libs " $deplib" ;;
10537	esac
10538      done
10539      compile_deplibs=$new_libs
10540
10541
10542      func_append compile_command " $compile_deplibs"
10543      func_append finalize_command " $finalize_deplibs"
10544
10545      if test -n "$rpath$xrpath"; then
10546	# If the user specified any rpath flags, then add them.
10547	for libdir in $rpath $xrpath; do
10548	  # This is the magic to use -rpath.
10549	  case "$finalize_rpath " in
10550	  *" $libdir "*) ;;
10551	  *) func_append finalize_rpath " $libdir" ;;
10552	  esac
10553	done
10554      fi
10555
10556      # Now hardcode the library paths
10557      rpath=
10558      hardcode_libdirs=
10559      for libdir in $compile_rpath $finalize_rpath; do
10560	if test -n "$hardcode_libdir_flag_spec"; then
10561	  if test -n "$hardcode_libdir_separator"; then
10562	    if test -z "$hardcode_libdirs"; then
10563	      hardcode_libdirs=$libdir
10564	    else
10565	      # Just accumulate the unique libdirs.
10566	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
10567	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
10568		;;
10569	      *)
10570		func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
10571		;;
10572	      esac
10573	    fi
10574	  else
10575	    eval flag=\"$hardcode_libdir_flag_spec\"
10576	    func_append rpath " $flag"
10577	  fi
10578	elif test -n "$runpath_var"; then
10579	  case "$perm_rpath " in
10580	  *" $libdir "*) ;;
10581	  *) func_append perm_rpath " $libdir" ;;
10582	  esac
10583	fi
10584	case $host in
10585	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
10586	  testbindir=`$ECHO "$libdir" | $SED -e 's*/lib$*/bin*'`
10587	  case :$dllsearchpath: in
10588	  *":$libdir:"*) ;;
10589	  ::) dllsearchpath=$libdir;;
10590	  *) func_append dllsearchpath ":$libdir";;
10591	  esac
10592	  case :$dllsearchpath: in
10593	  *":$testbindir:"*) ;;
10594	  ::) dllsearchpath=$testbindir;;
10595	  *) func_append dllsearchpath ":$testbindir";;
10596	  esac
10597	  ;;
10598	esac
10599      done
10600      # Substitute the hardcoded libdirs into the rpath.
10601      if test -n "$hardcode_libdir_separator" &&
10602	 test -n "$hardcode_libdirs"; then
10603	libdir=$hardcode_libdirs
10604	eval rpath=\" $hardcode_libdir_flag_spec\"
10605      fi
10606      compile_rpath=$rpath
10607
10608      rpath=
10609      hardcode_libdirs=
10610      for libdir in $finalize_rpath; do
10611	if test -n "$hardcode_libdir_flag_spec"; then
10612	  if test -n "$hardcode_libdir_separator"; then
10613	    if test -z "$hardcode_libdirs"; then
10614	      hardcode_libdirs=$libdir
10615	    else
10616	      # Just accumulate the unique libdirs.
10617	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
10618	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
10619		;;
10620	      *)
10621		func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
10622		;;
10623	      esac
10624	    fi
10625	  else
10626	    eval flag=\"$hardcode_libdir_flag_spec\"
10627	    func_append rpath " $flag"
10628	  fi
10629	elif test -n "$runpath_var"; then
10630	  case "$finalize_perm_rpath " in
10631	  *" $libdir "*) ;;
10632	  *) func_append finalize_perm_rpath " $libdir" ;;
10633	  esac
10634	fi
10635      done
10636      # Substitute the hardcoded libdirs into the rpath.
10637      if test -n "$hardcode_libdir_separator" &&
10638	 test -n "$hardcode_libdirs"; then
10639	libdir=$hardcode_libdirs
10640	eval rpath=\" $hardcode_libdir_flag_spec\"
10641      fi
10642      finalize_rpath=$rpath
10643
10644      if test -n "$libobjs" && test yes = "$build_old_libs"; then
10645	# Transform all the library objects into standard objects.
10646	compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
10647	finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
10648      fi
10649
10650      func_generate_dlsyms "$outputname" "@PROGRAM@" false
10651
10652      # template prelinking step
10653      if test -n "$prelink_cmds"; then
10654	func_execute_cmds "$prelink_cmds" 'exit $?'
10655      fi
10656
10657      wrappers_required=:
10658      case $host in
10659      *cegcc* | *mingw32ce*)
10660        # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway.
10661        wrappers_required=false
10662        ;;
10663      *cygwin* | *mingw* )
10664        test yes = "$build_libtool_libs" || wrappers_required=false
10665        ;;
10666      *)
10667        if test no = "$need_relink" || test yes != "$build_libtool_libs"; then
10668          wrappers_required=false
10669        fi
10670        ;;
10671      esac
10672      $wrappers_required || {
10673	# Replace the output file specification.
10674	compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
10675	link_command=$compile_command$compile_rpath
10676
10677	# We have no uninstalled library dependencies, so finalize right now.
10678	exit_status=0
10679	func_show_eval "$link_command" 'exit_status=$?'
10680
10681	if test -n "$postlink_cmds"; then
10682	  func_to_tool_file "$output"
10683	  postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
10684	  func_execute_cmds "$postlink_cmds" 'exit $?'
10685	fi
10686
10687	# Delete the generated files.
10688	if test -f "$output_objdir/${outputname}S.$objext"; then
10689	  func_show_eval '$RM "$output_objdir/${outputname}S.$objext"'
10690	fi
10691
10692	exit $exit_status
10693      }
10694
10695      if test -n "$compile_shlibpath$finalize_shlibpath"; then
10696	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
10697      fi
10698      if test -n "$finalize_shlibpath"; then
10699	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
10700      fi
10701
10702      compile_var=
10703      finalize_var=
10704      if test -n "$runpath_var"; then
10705	if test -n "$perm_rpath"; then
10706	  # We should set the runpath_var.
10707	  rpath=
10708	  for dir in $perm_rpath; do
10709	    func_append rpath "$dir:"
10710	  done
10711	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
10712	fi
10713	if test -n "$finalize_perm_rpath"; then
10714	  # We should set the runpath_var.
10715	  rpath=
10716	  for dir in $finalize_perm_rpath; do
10717	    func_append rpath "$dir:"
10718	  done
10719	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
10720	fi
10721      fi
10722
10723      if test yes = "$no_install"; then
10724	# We don't need to create a wrapper script.
10725	link_command=$compile_var$compile_command$compile_rpath
10726	# Replace the output file specification.
10727	link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
10728	# Delete the old output file.
10729	$opt_dry_run || $RM $output
10730	# Link the executable and exit
10731	func_show_eval "$link_command" 'exit $?'
10732
10733	if test -n "$postlink_cmds"; then
10734	  func_to_tool_file "$output"
10735	  postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
10736	  func_execute_cmds "$postlink_cmds" 'exit $?'
10737	fi
10738
10739	exit $EXIT_SUCCESS
10740      fi
10741
10742      case $hardcode_action,$fast_install in
10743        relink,*)
10744	  # Fast installation is not supported
10745	  link_command=$compile_var$compile_command$compile_rpath
10746	  relink_command=$finalize_var$finalize_command$finalize_rpath
10747
10748	  func_warning "this platform does not like uninstalled shared libraries"
10749	  func_warning "'$output' will be relinked during installation"
10750	  ;;
10751        *,yes)
10752	  link_command=$finalize_var$compile_command$finalize_rpath
10753	  relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'`
10754          ;;
10755	*,no)
10756	  link_command=$compile_var$compile_command$compile_rpath
10757	  relink_command=$finalize_var$finalize_command$finalize_rpath
10758          ;;
10759	*,needless)
10760	  link_command=$finalize_var$compile_command$finalize_rpath
10761	  relink_command=
10762          ;;
10763      esac
10764
10765      # Replace the output file specification.
10766      link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
10767
10768      # Delete the old output files.
10769      $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
10770
10771      func_show_eval "$link_command" 'exit $?'
10772
10773      if test -n "$postlink_cmds"; then
10774	func_to_tool_file "$output_objdir/$outputname"
10775	postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
10776	func_execute_cmds "$postlink_cmds" 'exit $?'
10777      fi
10778
10779      # Now create the wrapper script.
10780      func_verbose "creating $output"
10781
10782      # Quote the relink command for shipping.
10783      if test -n "$relink_command"; then
10784	# Preserve any variables that may affect compiler behavior
10785	for var in $variables_saved_for_relink; do
10786	  if eval test -z \"\${$var+set}\"; then
10787	    relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
10788	  elif eval var_value=\$$var; test -z "$var_value"; then
10789	    relink_command="$var=; export $var; $relink_command"
10790	  else
10791	    func_quote_arg pretty "$var_value"
10792	    relink_command="$var=$func_quote_arg_result; export $var; $relink_command"
10793	  fi
10794	done
10795	func_quote eval cd "`pwd`"
10796	func_quote_arg pretty,unquoted "($func_quote_result; $relink_command)"
10797	relink_command=$func_quote_arg_unquoted_result
10798      fi
10799
10800      # Only actually do things if not in dry run mode.
10801      $opt_dry_run || {
10802	# win32 will think the script is a binary if it has
10803	# a .exe suffix, so we strip it off here.
10804	case $output in
10805	  *.exe) func_stripname '' '.exe' "$output"
10806	         output=$func_stripname_result ;;
10807	esac
10808	# test for cygwin because mv fails w/o .exe extensions
10809	case $host in
10810	  *cygwin*)
10811	    exeext=.exe
10812	    func_stripname '' '.exe' "$outputname"
10813	    outputname=$func_stripname_result ;;
10814	  *) exeext= ;;
10815	esac
10816	case $host in
10817	  *cygwin* | *mingw* )
10818	    func_dirname_and_basename "$output" "" "."
10819	    output_name=$func_basename_result
10820	    output_path=$func_dirname_result
10821	    cwrappersource=$output_path/$objdir/lt-$output_name.c
10822	    cwrapper=$output_path/$output_name.exe
10823	    $RM $cwrappersource $cwrapper
10824	    trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
10825
10826	    func_emit_cwrapperexe_src > $cwrappersource
10827
10828	    # The wrapper executable is built using the $host compiler,
10829	    # because it contains $host paths and files. If cross-
10830	    # compiling, it, like the target executable, must be
10831	    # executed on the $host or under an emulation environment.
10832	    $opt_dry_run || {
10833	      $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
10834	      $STRIP $cwrapper
10835	    }
10836
10837	    # Now, create the wrapper script for func_source use:
10838	    func_ltwrapper_scriptname $cwrapper
10839	    $RM $func_ltwrapper_scriptname_result
10840	    trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
10841	    $opt_dry_run || {
10842	      # note: this script will not be executed, so do not chmod.
10843	      if test "x$build" = "x$host"; then
10844		$cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
10845	      else
10846		func_emit_wrapper no > $func_ltwrapper_scriptname_result
10847	      fi
10848	    }
10849	  ;;
10850	  * )
10851	    $RM $output
10852	    trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
10853
10854	    func_emit_wrapper no > $output
10855	    chmod +x $output
10856	  ;;
10857	esac
10858      }
10859      exit $EXIT_SUCCESS
10860      ;;
10861    esac
10862
10863    # See if we need to build an old-fashioned archive.
10864    for oldlib in $oldlibs; do
10865
10866      case $build_libtool_libs in
10867        convenience)
10868	  oldobjs="$libobjs_save $symfileobj"
10869	  addlibs=$convenience
10870	  build_libtool_libs=no
10871	  ;;
10872	module)
10873	  oldobjs=$libobjs_save
10874	  addlibs=$old_convenience
10875	  build_libtool_libs=no
10876          ;;
10877	*)
10878	  oldobjs="$old_deplibs $non_pic_objects"
10879	  $preload && test -f "$symfileobj" \
10880	    && func_append oldobjs " $symfileobj"
10881	  addlibs=$old_convenience
10882	  ;;
10883      esac
10884
10885      if test -n "$addlibs"; then
10886	gentop=$output_objdir/${outputname}x
10887	func_append generated " $gentop"
10888
10889	func_extract_archives $gentop $addlibs
10890	func_append oldobjs " $func_extract_archives_result"
10891      fi
10892
10893      # Do each command in the archive commands.
10894      if test -n "$old_archive_from_new_cmds" && test yes = "$build_libtool_libs"; then
10895	cmds=$old_archive_from_new_cmds
10896      else
10897
10898	# Add any objects from preloaded convenience libraries
10899	if test -n "$dlprefiles"; then
10900	  gentop=$output_objdir/${outputname}x
10901	  func_append generated " $gentop"
10902
10903	  func_extract_archives $gentop $dlprefiles
10904	  func_append oldobjs " $func_extract_archives_result"
10905	fi
10906
10907	# POSIX demands no paths to be encoded in archives.  We have
10908	# to avoid creating archives with duplicate basenames if we
10909	# might have to extract them afterwards, e.g., when creating a
10910	# static archive out of a convenience library, or when linking
10911	# the entirety of a libtool archive into another (currently
10912	# not supported by libtool).
10913	if (for obj in $oldobjs
10914	    do
10915	      func_basename "$obj"
10916	      $ECHO "$func_basename_result"
10917	    done | sort | sort -uc >/dev/null 2>&1); then
10918	  :
10919	else
10920	  echo "copying selected object files to avoid basename conflicts..."
10921	  gentop=$output_objdir/${outputname}x
10922	  func_append generated " $gentop"
10923	  func_mkdir_p "$gentop"
10924	  save_oldobjs=$oldobjs
10925	  oldobjs=
10926	  counter=1
10927	  for obj in $save_oldobjs
10928	  do
10929	    func_basename "$obj"
10930	    objbase=$func_basename_result
10931	    case " $oldobjs " in
10932	    " ") oldobjs=$obj ;;
10933	    *[\ /]"$objbase "*)
10934	      while :; do
10935		# Make sure we don't pick an alternate name that also
10936		# overlaps.
10937		newobj=lt$counter-$objbase
10938		func_arith $counter + 1
10939		counter=$func_arith_result
10940		case " $oldobjs " in
10941		*[\ /]"$newobj "*) ;;
10942		*) if test ! -f "$gentop/$newobj"; then break; fi ;;
10943		esac
10944	      done
10945	      func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
10946	      func_append oldobjs " $gentop/$newobj"
10947	      ;;
10948	    *) func_append oldobjs " $obj" ;;
10949	    esac
10950	  done
10951	fi
10952	func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
10953	tool_oldlib=$func_to_tool_file_result
10954	eval cmds=\"$old_archive_cmds\"
10955
10956	func_len " $cmds"
10957	len=$func_len_result
10958	if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
10959	  cmds=$old_archive_cmds
10960	elif test -n "$archiver_list_spec"; then
10961	  func_verbose "using command file archive linking..."
10962	  for obj in $oldobjs
10963	  do
10964	    func_to_tool_file "$obj"
10965	    $ECHO "$func_to_tool_file_result"
10966	  done > $output_objdir/$libname.libcmd
10967	  func_to_tool_file "$output_objdir/$libname.libcmd"
10968	  oldobjs=" $archiver_list_spec$func_to_tool_file_result"
10969	  cmds=$old_archive_cmds
10970	else
10971	  # the command line is too long to link in one step, link in parts
10972	  func_verbose "using piecewise archive linking..."
10973	  save_RANLIB=$RANLIB
10974	  RANLIB=:
10975	  objlist=
10976	  concat_cmds=
10977	  save_oldobjs=$oldobjs
10978	  oldobjs=
10979	  # Is there a better way of finding the last object in the list?
10980	  for obj in $save_oldobjs
10981	  do
10982	    last_oldobj=$obj
10983	  done
10984	  eval test_cmds=\"$old_archive_cmds\"
10985	  func_len " $test_cmds"
10986	  len0=$func_len_result
10987	  len=$len0
10988	  for obj in $save_oldobjs
10989	  do
10990	    func_len " $obj"
10991	    func_arith $len + $func_len_result
10992	    len=$func_arith_result
10993	    func_append objlist " $obj"
10994	    if test "$len" -lt "$max_cmd_len"; then
10995	      :
10996	    else
10997	      # the above command should be used before it gets too long
10998	      oldobjs=$objlist
10999	      if test "$obj" = "$last_oldobj"; then
11000		RANLIB=$save_RANLIB
11001	      fi
11002	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
11003	      eval concat_cmds=\"\$concat_cmds$old_archive_cmds\"
11004	      objlist=
11005	      len=$len0
11006	    fi
11007	  done
11008	  RANLIB=$save_RANLIB
11009	  oldobjs=$objlist
11010	  if test -z "$oldobjs"; then
11011	    eval cmds=\"\$concat_cmds\"
11012	  else
11013	    eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
11014	  fi
11015	fi
11016      fi
11017      func_execute_cmds "$cmds" 'exit $?'
11018    done
11019
11020    test -n "$generated" && \
11021      func_show_eval "${RM}r$generated"
11022
11023    # Now create the libtool archive.
11024    case $output in
11025    *.la)
11026      old_library=
11027      test yes = "$build_old_libs" && old_library=$libname.$libext
11028      func_verbose "creating $output"
11029
11030      # Preserve any variables that may affect compiler behavior
11031      for var in $variables_saved_for_relink; do
11032	if eval test -z \"\${$var+set}\"; then
11033	  relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
11034	elif eval var_value=\$$var; test -z "$var_value"; then
11035	  relink_command="$var=; export $var; $relink_command"
11036	else
11037	  func_quote_arg pretty,unquoted "$var_value"
11038	  relink_command="$var=$func_quote_arg_unquoted_result; export $var; $relink_command"
11039	fi
11040      done
11041      # Quote the link command for shipping.
11042      func_quote eval cd "`pwd`"
11043      relink_command="($func_quote_result; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
11044      func_quote_arg pretty,unquoted "$relink_command"
11045      relink_command=$func_quote_arg_unquoted_result
11046      if test yes = "$hardcode_automatic"; then
11047	relink_command=
11048      fi
11049
11050      # Only create the output if not a dry run.
11051      $opt_dry_run || {
11052	for installed in no yes; do
11053	  if test yes = "$installed"; then
11054	    if test -z "$install_libdir"; then
11055	      break
11056	    fi
11057	    output=$output_objdir/${outputname}i
11058	    # Replace all uninstalled libtool libraries with the installed ones
11059	    newdependency_libs=
11060	    for deplib in $dependency_libs; do
11061	      case $deplib in
11062	      *.la)
11063		func_basename "$deplib"
11064		name=$func_basename_result
11065		func_resolve_sysroot "$deplib"
11066		eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
11067		test -z "$libdir" && \
11068		  func_fatal_error "'$deplib' is not a valid libtool archive"
11069		func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name"
11070		;;
11071	      -L*)
11072		func_stripname -L '' "$deplib"
11073		func_replace_sysroot "$func_stripname_result"
11074		func_append newdependency_libs " -L$func_replace_sysroot_result"
11075		;;
11076	      -R*)
11077		func_stripname -R '' "$deplib"
11078		func_replace_sysroot "$func_stripname_result"
11079		func_append newdependency_libs " -R$func_replace_sysroot_result"
11080		;;
11081	      *) func_append newdependency_libs " $deplib" ;;
11082	      esac
11083	    done
11084	    dependency_libs=$newdependency_libs
11085	    newdlfiles=
11086
11087	    for lib in $dlfiles; do
11088	      case $lib in
11089	      *.la)
11090	        func_basename "$lib"
11091		name=$func_basename_result
11092		eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
11093		test -z "$libdir" && \
11094		  func_fatal_error "'$lib' is not a valid libtool archive"
11095		func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name"
11096		;;
11097	      *) func_append newdlfiles " $lib" ;;
11098	      esac
11099	    done
11100	    dlfiles=$newdlfiles
11101	    newdlprefiles=
11102	    for lib in $dlprefiles; do
11103	      case $lib in
11104	      *.la)
11105		# Only pass preopened files to the pseudo-archive (for
11106		# eventual linking with the app. that links it) if we
11107		# didn't already link the preopened objects directly into
11108		# the library:
11109		func_basename "$lib"
11110		name=$func_basename_result
11111		eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
11112		test -z "$libdir" && \
11113		  func_fatal_error "'$lib' is not a valid libtool archive"
11114		func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name"
11115		;;
11116	      esac
11117	    done
11118	    dlprefiles=$newdlprefiles
11119	  else
11120	    newdlfiles=
11121	    for lib in $dlfiles; do
11122	      case $lib in
11123		[\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;;
11124		*) abs=`pwd`"/$lib" ;;
11125	      esac
11126	      func_append newdlfiles " $abs"
11127	    done
11128	    dlfiles=$newdlfiles
11129	    newdlprefiles=
11130	    for lib in $dlprefiles; do
11131	      case $lib in
11132		[\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;;
11133		*) abs=`pwd`"/$lib" ;;
11134	      esac
11135	      func_append newdlprefiles " $abs"
11136	    done
11137	    dlprefiles=$newdlprefiles
11138	  fi
11139	  $RM $output
11140	  # place dlname in correct position for cygwin
11141	  # In fact, it would be nice if we could use this code for all target
11142	  # systems that can't hard-code library paths into their executables
11143	  # and that have no shared library path variable independent of PATH,
11144	  # but it turns out we can't easily determine that from inspecting
11145	  # libtool variables, so we have to hard-code the OSs to which it
11146	  # applies here; at the moment, that means platforms that use the PE
11147	  # object format with DLL files.  See the long comment at the top of
11148	  # tests/bindir.at for full details.
11149	  tdlname=$dlname
11150	  case $host,$output,$installed,$module,$dlname in
11151	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll)
11152	      # If a -bindir argument was supplied, place the dll there.
11153	      if test -n "$bindir"; then
11154		func_relative_path "$install_libdir" "$bindir"
11155		tdlname=$func_relative_path_result/$dlname
11156	      else
11157		# Otherwise fall back on heuristic.
11158		tdlname=../bin/$dlname
11159	      fi
11160	      ;;
11161	  esac
11162	  $ECHO > $output "\
11163# $outputname - a libtool library file
11164# Generated by $PROGRAM (GNU $PACKAGE) $VERSION
11165#
11166# Please DO NOT delete this file!
11167# It is necessary for linking the library.
11168
11169# The name that we can dlopen(3).
11170dlname='$tdlname'
11171
11172# Names of this library.
11173library_names='$library_names'
11174
11175# The name of the static archive.
11176old_library='$old_library'
11177
11178# Linker flags that cannot go in dependency_libs.
11179inherited_linker_flags='$new_inherited_linker_flags'
11180
11181# Libraries that this one depends upon.
11182dependency_libs='$dependency_libs'
11183
11184# Names of additional weak libraries provided by this library
11185weak_library_names='$weak_libs'
11186
11187# Version information for $libname.
11188current=$current
11189age=$age
11190revision=$revision
11191
11192# Is this an already installed library?
11193installed=$installed
11194
11195# Should we warn about portability when linking against -modules?
11196shouldnotlink=$module
11197
11198# Files to dlopen/dlpreopen
11199dlopen='$dlfiles'
11200dlpreopen='$dlprefiles'
11201
11202# Directory that this library needs to be installed in:
11203libdir='$install_libdir'"
11204	  if test no,yes = "$installed,$need_relink"; then
11205	    $ECHO >> $output "\
11206relink_command=\"$relink_command\""
11207	  fi
11208	done
11209      }
11210
11211      # Do a symbolic link so that the libtool archive can be found in
11212      # LD_LIBRARY_PATH before the program is installed.
11213      func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
11214      ;;
11215    esac
11216    exit $EXIT_SUCCESS
11217}
11218
11219if test link = "$opt_mode" || test relink = "$opt_mode"; then
11220  func_mode_link ${1+"$@"}
11221fi
11222
11223
11224# func_mode_uninstall arg...
11225func_mode_uninstall ()
11226{
11227    $debug_cmd
11228
11229    RM=$nonopt
11230    files=
11231    rmforce=false
11232    exit_status=0
11233
11234    # This variable tells wrapper scripts just to set variables rather
11235    # than running their programs.
11236    libtool_install_magic=$magic
11237
11238    for arg
11239    do
11240      case $arg in
11241      -f) func_append RM " $arg"; rmforce=: ;;
11242      -*) func_append RM " $arg" ;;
11243      *) func_append files " $arg" ;;
11244      esac
11245    done
11246
11247    test -z "$RM" && \
11248      func_fatal_help "you must specify an RM program"
11249
11250    rmdirs=
11251
11252    for file in $files; do
11253      func_dirname "$file" "" "."
11254      dir=$func_dirname_result
11255      if test . = "$dir"; then
11256	odir=$objdir
11257      else
11258	odir=$dir/$objdir
11259      fi
11260      func_basename "$file"
11261      name=$func_basename_result
11262      test uninstall = "$opt_mode" && odir=$dir
11263
11264      # Remember odir for removal later, being careful to avoid duplicates
11265      if test clean = "$opt_mode"; then
11266	case " $rmdirs " in
11267	  *" $odir "*) ;;
11268	  *) func_append rmdirs " $odir" ;;
11269	esac
11270      fi
11271
11272      # Don't error if the file doesn't exist and rm -f was used.
11273      if { test -L "$file"; } >/dev/null 2>&1 ||
11274	 { test -h "$file"; } >/dev/null 2>&1 ||
11275	 test -f "$file"; then
11276	:
11277      elif test -d "$file"; then
11278	exit_status=1
11279	continue
11280      elif $rmforce; then
11281	continue
11282      fi
11283
11284      rmfiles=$file
11285
11286      case $name in
11287      *.la)
11288	# Possibly a libtool archive, so verify it.
11289	if func_lalib_p "$file"; then
11290	  func_source $dir/$name
11291
11292	  # Delete the libtool libraries and symlinks.
11293	  for n in $library_names; do
11294	    func_append rmfiles " $odir/$n"
11295	  done
11296	  test -n "$old_library" && func_append rmfiles " $odir/$old_library"
11297
11298	  case $opt_mode in
11299	  clean)
11300	    case " $library_names " in
11301	    *" $dlname "*) ;;
11302	    *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;;
11303	    esac
11304	    test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i"
11305	    ;;
11306	  uninstall)
11307	    if test -n "$library_names"; then
11308	      # Do each command in the postuninstall commands.
11309	      func_execute_cmds "$postuninstall_cmds" '$rmforce || exit_status=1'
11310	    fi
11311
11312	    if test -n "$old_library"; then
11313	      # Do each command in the old_postuninstall commands.
11314	      func_execute_cmds "$old_postuninstall_cmds" '$rmforce || exit_status=1'
11315	    fi
11316	    # FIXME: should reinstall the best remaining shared library.
11317	    ;;
11318	  esac
11319	fi
11320	;;
11321
11322      *.lo)
11323	# Possibly a libtool object, so verify it.
11324	if func_lalib_p "$file"; then
11325
11326	  # Read the .lo file
11327	  func_source $dir/$name
11328
11329	  # Add PIC object to the list of files to remove.
11330	  if test -n "$pic_object" && test none != "$pic_object"; then
11331	    func_append rmfiles " $dir/$pic_object"
11332	  fi
11333
11334	  # Add non-PIC object to the list of files to remove.
11335	  if test -n "$non_pic_object" && test none != "$non_pic_object"; then
11336	    func_append rmfiles " $dir/$non_pic_object"
11337	  fi
11338	fi
11339	;;
11340
11341      *)
11342	if test clean = "$opt_mode"; then
11343	  noexename=$name
11344	  case $file in
11345	  *.exe)
11346	    func_stripname '' '.exe' "$file"
11347	    file=$func_stripname_result
11348	    func_stripname '' '.exe' "$name"
11349	    noexename=$func_stripname_result
11350	    # $file with .exe has already been added to rmfiles,
11351	    # add $file without .exe
11352	    func_append rmfiles " $file"
11353	    ;;
11354	  esac
11355	  # Do a test to see if this is a libtool program.
11356	  if func_ltwrapper_p "$file"; then
11357	    if func_ltwrapper_executable_p "$file"; then
11358	      func_ltwrapper_scriptname "$file"
11359	      relink_command=
11360	      func_source $func_ltwrapper_scriptname_result
11361	      func_append rmfiles " $func_ltwrapper_scriptname_result"
11362	    else
11363	      relink_command=
11364	      func_source $dir/$noexename
11365	    fi
11366
11367	    # note $name still contains .exe if it was in $file originally
11368	    # as does the version of $file that was added into $rmfiles
11369	    func_append rmfiles " $odir/$name $odir/${name}S.$objext"
11370	    if test yes = "$fast_install" && test -n "$relink_command"; then
11371	      func_append rmfiles " $odir/lt-$name"
11372	    fi
11373	    if test "X$noexename" != "X$name"; then
11374	      func_append rmfiles " $odir/lt-$noexename.c"
11375	    fi
11376	  fi
11377	fi
11378	;;
11379      esac
11380      func_show_eval "$RM $rmfiles" 'exit_status=1'
11381    done
11382
11383    # Try to remove the $objdir's in the directories where we deleted files
11384    for dir in $rmdirs; do
11385      if test -d "$dir"; then
11386	func_show_eval "rmdir $dir >/dev/null 2>&1"
11387      fi
11388    done
11389
11390    exit $exit_status
11391}
11392
11393if test uninstall = "$opt_mode" || test clean = "$opt_mode"; then
11394  func_mode_uninstall ${1+"$@"}
11395fi
11396
11397test -z "$opt_mode" && {
11398  help=$generic_help
11399  func_fatal_help "you must specify a MODE"
11400}
11401
11402test -z "$exec_cmd" && \
11403  func_fatal_help "invalid operation mode '$opt_mode'"
11404
11405if test -n "$exec_cmd"; then
11406  eval exec "$exec_cmd"
11407  exit $EXIT_FAILURE
11408fi
11409
11410exit $exit_status
11411
11412
11413# The TAGs below are defined such that we never get into a situation
11414# where we disable both kinds of libraries.  Given conflicting
11415# choices, we go for a static library, that is the most portable,
11416# since we can't tell whether shared libraries were disabled because
11417# the user asked for that or because the platform doesn't support
11418# them.  This is particularly important on AIX, because we don't
11419# support having both static and shared libraries enabled at the same
11420# time on that platform, so we default to a shared-only configuration.
11421# If a disable-shared tag is given, we'll fallback to a static-only
11422# configuration.  But we'll never go from static-only to shared-only.
11423
11424# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
11425build_libtool_libs=no
11426build_old_libs=yes
11427# ### END LIBTOOL TAG CONFIG: disable-shared
11428
11429# ### BEGIN LIBTOOL TAG CONFIG: disable-static
11430build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
11431# ### END LIBTOOL TAG CONFIG: disable-static
11432
11433# Local Variables:
11434# mode:shell-script
11435# sh-indentation:2
11436# End:
11437