xref: /aosp_15_r20/external/curl/ltmain.sh (revision 6236dae45794135f37c4eb022389c904c8b0090d)
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 <[email protected]>, 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 Debian-2.4.7-7+build1"
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='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  # _G_HAVE_PLUSEQ_OP
576  # Can be empty, in which case the shell is probed, "yes" if += is
577  # useable or anything else if it does not work.
578  if test -z "$_G_HAVE_PLUSEQ_OP" &&  \
579      __PLUSEQ_TEST="a" &&  \
580      __PLUSEQ_TEST+=" b" 2>/dev/null &&  \
581      test "a b" = "$__PLUSEQ_TEST"; then
582    _G_HAVE_PLUSEQ_OP=yes
583  fi
584
585if test yes = "$_G_HAVE_PLUSEQ_OP"
586then
587  # This is an XSI compatible shell, allowing a faster implementation...
588  eval 'func_append ()
589  {
590    $debug_cmd
591
592    eval "$1+=\$2"
593  }'
594else
595  # ...otherwise fall back to using expr, which is often a shell builtin.
596  func_append ()
597  {
598    $debug_cmd
599
600    eval "$1=\$$1\$2"
601  }
602fi
603
604
605# func_append_quoted VAR VALUE
606# ----------------------------
607# Quote VALUE and append to the end of shell variable VAR, separated
608# by a space.
609if test yes = "$_G_HAVE_PLUSEQ_OP"; then
610  eval 'func_append_quoted ()
611  {
612    $debug_cmd
613
614    func_quote_arg pretty "$2"
615    eval "$1+=\\ \$func_quote_arg_result"
616  }'
617else
618  func_append_quoted ()
619  {
620    $debug_cmd
621
622    func_quote_arg pretty "$2"
623    eval "$1=\$$1\\ \$func_quote_arg_result"
624  }
625fi
626
627
628# func_append_uniq VAR VALUE
629# --------------------------
630# Append unique VALUE onto the existing contents of VAR, assuming
631# entries are delimited by the first character of VALUE.  For example:
632#
633#   func_append_uniq options " --another-option option-argument"
634#
635# will only append to $options if " --another-option option-argument "
636# is not already present somewhere in $options already (note spaces at
637# each end implied by leading space in second argument).
638func_append_uniq ()
639{
640    $debug_cmd
641
642    eval _G_current_value='`$ECHO $'$1'`'
643    _G_delim=`expr "$2" : '\(.\)'`
644
645    case $_G_delim$_G_current_value$_G_delim in
646      *"$2$_G_delim"*) ;;
647      *) func_append "$@" ;;
648    esac
649}
650
651
652# func_arith TERM...
653# ------------------
654# Set func_arith_result to the result of evaluating TERMs.
655  test -z "$_G_HAVE_ARITH_OP" \
656    && (eval 'test 2 = $(( 1 + 1 ))') 2>/dev/null \
657    && _G_HAVE_ARITH_OP=yes
658
659if test yes = "$_G_HAVE_ARITH_OP"; then
660  eval 'func_arith ()
661  {
662    $debug_cmd
663
664    func_arith_result=$(( $* ))
665  }'
666else
667  func_arith ()
668  {
669    $debug_cmd
670
671    func_arith_result=`expr "$@"`
672  }
673fi
674
675
676# func_basename FILE
677# ------------------
678# Set func_basename_result to FILE with everything up to and including
679# the last / stripped.
680if test yes = "$_G_HAVE_XSI_OPS"; then
681  # If this shell supports suffix pattern removal, then use it to avoid
682  # forking. Hide the definitions single quotes in case the shell chokes
683  # on unsupported syntax...
684  _b='func_basename_result=${1##*/}'
685  _d='case $1 in
686        */*) func_dirname_result=${1%/*}$2 ;;
687        *  ) func_dirname_result=$3        ;;
688      esac'
689
690else
691  # ...otherwise fall back to using sed.
692  _b='func_basename_result=`$ECHO "$1" |$SED "$sed_basename"`'
693  _d='func_dirname_result=`$ECHO "$1"  |$SED "$sed_dirname"`
694      if test "X$func_dirname_result" = "X$1"; then
695        func_dirname_result=$3
696      else
697        func_append func_dirname_result "$2"
698      fi'
699fi
700
701eval 'func_basename ()
702{
703    $debug_cmd
704
705    '"$_b"'
706}'
707
708
709# func_dirname FILE APPEND NONDIR_REPLACEMENT
710# -------------------------------------------
711# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
712# otherwise set result to NONDIR_REPLACEMENT.
713eval 'func_dirname ()
714{
715    $debug_cmd
716
717    '"$_d"'
718}'
719
720
721# func_dirname_and_basename FILE APPEND NONDIR_REPLACEMENT
722# --------------------------------------------------------
723# Perform func_basename and func_dirname in a single function
724# call:
725#   dirname:  Compute the dirname of FILE.  If nonempty,
726#             add APPEND to the result, otherwise set result
727#             to NONDIR_REPLACEMENT.
728#             value returned in "$func_dirname_result"
729#   basename: Compute filename of FILE.
730#             value retuned in "$func_basename_result"
731# For efficiency, we do not delegate to the functions above but instead
732# duplicate the functionality here.
733eval 'func_dirname_and_basename ()
734{
735    $debug_cmd
736
737    '"$_b"'
738    '"$_d"'
739}'
740
741
742# func_echo ARG...
743# ----------------
744# Echo program name prefixed message.
745func_echo ()
746{
747    $debug_cmd
748
749    _G_message=$*
750
751    func_echo_IFS=$IFS
752    IFS=$nl
753    for _G_line in $_G_message; do
754      IFS=$func_echo_IFS
755      $ECHO "$progname: $_G_line"
756    done
757    IFS=$func_echo_IFS
758}
759
760
761# func_echo_all ARG...
762# --------------------
763# Invoke $ECHO with all args, space-separated.
764func_echo_all ()
765{
766    $ECHO "$*"
767}
768
769
770# func_echo_infix_1 INFIX ARG...
771# ------------------------------
772# Echo program name, followed by INFIX on the first line, with any
773# additional lines not showing INFIX.
774func_echo_infix_1 ()
775{
776    $debug_cmd
777
778    $require_term_colors
779
780    _G_infix=$1; shift
781    _G_indent=$_G_infix
782    _G_prefix="$progname: $_G_infix: "
783    _G_message=$*
784
785    # Strip color escape sequences before counting printable length
786    for _G_tc in "$tc_reset" "$tc_bold" "$tc_standout" "$tc_red" "$tc_green" "$tc_blue" "$tc_cyan"
787    do
788      test -n "$_G_tc" && {
789        _G_esc_tc=`$ECHO "$_G_tc" | $SED "$sed_make_literal_regex"`
790        _G_indent=`$ECHO "$_G_indent" | $SED "s|$_G_esc_tc||g"`
791      }
792    done
793    _G_indent="$progname: "`echo "$_G_indent" | $SED 's|.| |g'`"  " ## exclude from sc_prohibit_nested_quotes
794
795    func_echo_infix_1_IFS=$IFS
796    IFS=$nl
797    for _G_line in $_G_message; do
798      IFS=$func_echo_infix_1_IFS
799      $ECHO "$_G_prefix$tc_bold$_G_line$tc_reset" >&2
800      _G_prefix=$_G_indent
801    done
802    IFS=$func_echo_infix_1_IFS
803}
804
805
806# func_error ARG...
807# -----------------
808# Echo program name prefixed message to standard error.
809func_error ()
810{
811    $debug_cmd
812
813    $require_term_colors
814
815    func_echo_infix_1 "  $tc_standout${tc_red}error$tc_reset" "$*" >&2
816}
817
818
819# func_fatal_error ARG...
820# -----------------------
821# Echo program name prefixed message to standard error, and exit.
822func_fatal_error ()
823{
824    $debug_cmd
825
826    func_error "$*"
827    exit $EXIT_FAILURE
828}
829
830
831# func_grep EXPRESSION FILENAME
832# -----------------------------
833# Check whether EXPRESSION matches any line of FILENAME, without output.
834func_grep ()
835{
836    $debug_cmd
837
838    $GREP "$1" "$2" >/dev/null 2>&1
839}
840
841
842# func_len STRING
843# ---------------
844# Set func_len_result to the length of STRING. STRING may not
845# start with a hyphen.
846  test -z "$_G_HAVE_XSI_OPS" \
847    && (eval 'x=a/b/c;
848      test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \
849    && _G_HAVE_XSI_OPS=yes
850
851if test yes = "$_G_HAVE_XSI_OPS"; then
852  eval 'func_len ()
853  {
854    $debug_cmd
855
856    func_len_result=${#1}
857  }'
858else
859  func_len ()
860  {
861    $debug_cmd
862
863    func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len`
864  }
865fi
866
867
868# func_mkdir_p DIRECTORY-PATH
869# ---------------------------
870# Make sure the entire path to DIRECTORY-PATH is available.
871func_mkdir_p ()
872{
873    $debug_cmd
874
875    _G_directory_path=$1
876    _G_dir_list=
877
878    if test -n "$_G_directory_path" && test : != "$opt_dry_run"; then
879
880      # Protect directory names starting with '-'
881      case $_G_directory_path in
882        -*) _G_directory_path=./$_G_directory_path ;;
883      esac
884
885      # While some portion of DIR does not yet exist...
886      while test ! -d "$_G_directory_path"; do
887        # ...make a list in topmost first order.  Use a colon delimited
888	# list incase some portion of path contains whitespace.
889        _G_dir_list=$_G_directory_path:$_G_dir_list
890
891        # If the last portion added has no slash in it, the list is done
892        case $_G_directory_path in */*) ;; *) break ;; esac
893
894        # ...otherwise throw away the child directory and loop
895        _G_directory_path=`$ECHO "$_G_directory_path" | $SED -e "$sed_dirname"`
896      done
897      _G_dir_list=`$ECHO "$_G_dir_list" | $SED 's|:*$||'`
898
899      func_mkdir_p_IFS=$IFS; IFS=:
900      for _G_dir in $_G_dir_list; do
901	IFS=$func_mkdir_p_IFS
902        # mkdir can fail with a 'File exist' error if two processes
903        # try to create one of the directories concurrently.  Don't
904        # stop in that case!
905        $MKDIR "$_G_dir" 2>/dev/null || :
906      done
907      IFS=$func_mkdir_p_IFS
908
909      # Bail out if we (or some other process) failed to create a directory.
910      test -d "$_G_directory_path" || \
911        func_fatal_error "Failed to create '$1'"
912    fi
913}
914
915
916# func_mktempdir [BASENAME]
917# -------------------------
918# Make a temporary directory that won't clash with other running
919# libtool processes, and avoids race conditions if possible.  If
920# given, BASENAME is the basename for that directory.
921func_mktempdir ()
922{
923    $debug_cmd
924
925    _G_template=${TMPDIR-/tmp}/${1-$progname}
926
927    if test : = "$opt_dry_run"; then
928      # Return a directory name, but don't create it in dry-run mode
929      _G_tmpdir=$_G_template-$$
930    else
931
932      # If mktemp works, use that first and foremost
933      _G_tmpdir=`mktemp -d "$_G_template-XXXXXXXX" 2>/dev/null`
934
935      if test ! -d "$_G_tmpdir"; then
936        # Failing that, at least try and use $RANDOM to avoid a race
937        _G_tmpdir=$_G_template-${RANDOM-0}$$
938
939        func_mktempdir_umask=`umask`
940        umask 0077
941        $MKDIR "$_G_tmpdir"
942        umask $func_mktempdir_umask
943      fi
944
945      # If we're not in dry-run mode, bomb out on failure
946      test -d "$_G_tmpdir" || \
947        func_fatal_error "cannot create temporary directory '$_G_tmpdir'"
948    fi
949
950    $ECHO "$_G_tmpdir"
951}
952
953
954# func_normal_abspath PATH
955# ------------------------
956# Remove doubled-up and trailing slashes, "." path components,
957# and cancel out any ".." path components in PATH after making
958# it an absolute path.
959func_normal_abspath ()
960{
961    $debug_cmd
962
963    # These SED scripts presuppose an absolute path with a trailing slash.
964    _G_pathcar='s|^/\([^/]*\).*$|\1|'
965    _G_pathcdr='s|^/[^/]*||'
966    _G_removedotparts=':dotsl
967		s|/\./|/|g
968		t dotsl
969		s|/\.$|/|'
970    _G_collapseslashes='s|/\{1,\}|/|g'
971    _G_finalslash='s|/*$|/|'
972
973    # Start from root dir and reassemble the path.
974    func_normal_abspath_result=
975    func_normal_abspath_tpath=$1
976    func_normal_abspath_altnamespace=
977    case $func_normal_abspath_tpath in
978      "")
979        # Empty path, that just means $cwd.
980        func_stripname '' '/' "`pwd`"
981        func_normal_abspath_result=$func_stripname_result
982        return
983        ;;
984      # The next three entries are used to spot a run of precisely
985      # two leading slashes without using negated character classes;
986      # we take advantage of case's first-match behaviour.
987      ///*)
988        # Unusual form of absolute path, do nothing.
989        ;;
990      //*)
991        # Not necessarily an ordinary path; POSIX reserves leading '//'
992        # and for example Cygwin uses it to access remote file shares
993        # over CIFS/SMB, so we conserve a leading double slash if found.
994        func_normal_abspath_altnamespace=/
995        ;;
996      /*)
997        # Absolute path, do nothing.
998        ;;
999      *)
1000        # Relative path, prepend $cwd.
1001        func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath
1002        ;;
1003    esac
1004
1005    # Cancel out all the simple stuff to save iterations.  We also want
1006    # the path to end with a slash for ease of parsing, so make sure
1007    # there is one (and only one) here.
1008    func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
1009          -e "$_G_removedotparts" -e "$_G_collapseslashes" -e "$_G_finalslash"`
1010    while :; do
1011      # Processed it all yet?
1012      if test / = "$func_normal_abspath_tpath"; then
1013        # If we ascended to the root using ".." the result may be empty now.
1014        if test -z "$func_normal_abspath_result"; then
1015          func_normal_abspath_result=/
1016        fi
1017        break
1018      fi
1019      func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \
1020          -e "$_G_pathcar"`
1021      func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
1022          -e "$_G_pathcdr"`
1023      # Figure out what to do with it
1024      case $func_normal_abspath_tcomponent in
1025        "")
1026          # Trailing empty path component, ignore it.
1027          ;;
1028        ..)
1029          # Parent dir; strip last assembled component from result.
1030          func_dirname "$func_normal_abspath_result"
1031          func_normal_abspath_result=$func_dirname_result
1032          ;;
1033        *)
1034          # Actual path component, append it.
1035          func_append func_normal_abspath_result "/$func_normal_abspath_tcomponent"
1036          ;;
1037      esac
1038    done
1039    # Restore leading double-slash if one was found on entry.
1040    func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result
1041}
1042
1043
1044# func_notquiet ARG...
1045# --------------------
1046# Echo program name prefixed message only when not in quiet mode.
1047func_notquiet ()
1048{
1049    $debug_cmd
1050
1051    $opt_quiet || func_echo ${1+"$@"}
1052
1053    # A bug in bash halts the script if the last line of a function
1054    # fails when set -e is in force, so we need another command to
1055    # work around that:
1056    :
1057}
1058
1059
1060# func_relative_path SRCDIR DSTDIR
1061# --------------------------------
1062# Set func_relative_path_result to the relative path from SRCDIR to DSTDIR.
1063func_relative_path ()
1064{
1065    $debug_cmd
1066
1067    func_relative_path_result=
1068    func_normal_abspath "$1"
1069    func_relative_path_tlibdir=$func_normal_abspath_result
1070    func_normal_abspath "$2"
1071    func_relative_path_tbindir=$func_normal_abspath_result
1072
1073    # Ascend the tree starting from libdir
1074    while :; do
1075      # check if we have found a prefix of bindir
1076      case $func_relative_path_tbindir in
1077        $func_relative_path_tlibdir)
1078          # found an exact match
1079          func_relative_path_tcancelled=
1080          break
1081          ;;
1082        $func_relative_path_tlibdir*)
1083          # found a matching prefix
1084          func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir"
1085          func_relative_path_tcancelled=$func_stripname_result
1086          if test -z "$func_relative_path_result"; then
1087            func_relative_path_result=.
1088          fi
1089          break
1090          ;;
1091        *)
1092          func_dirname $func_relative_path_tlibdir
1093          func_relative_path_tlibdir=$func_dirname_result
1094          if test -z "$func_relative_path_tlibdir"; then
1095            # Have to descend all the way to the root!
1096            func_relative_path_result=../$func_relative_path_result
1097            func_relative_path_tcancelled=$func_relative_path_tbindir
1098            break
1099          fi
1100          func_relative_path_result=../$func_relative_path_result
1101          ;;
1102      esac
1103    done
1104
1105    # Now calculate path; take care to avoid doubling-up slashes.
1106    func_stripname '' '/' "$func_relative_path_result"
1107    func_relative_path_result=$func_stripname_result
1108    func_stripname '/' '/' "$func_relative_path_tcancelled"
1109    if test -n "$func_stripname_result"; then
1110      func_append func_relative_path_result "/$func_stripname_result"
1111    fi
1112
1113    # Normalisation. If bindir is libdir, return '.' else relative path.
1114    if test -n "$func_relative_path_result"; then
1115      func_stripname './' '' "$func_relative_path_result"
1116      func_relative_path_result=$func_stripname_result
1117    fi
1118
1119    test -n "$func_relative_path_result" || func_relative_path_result=.
1120
1121    :
1122}
1123
1124
1125# func_quote_portable EVAL ARG
1126# ----------------------------
1127# Internal function to portably implement func_quote_arg.  Note that we still
1128# keep attention to performance here so we as much as possible try to avoid
1129# calling sed binary (so far O(N) complexity as long as func_append is O(1)).
1130func_quote_portable ()
1131{
1132    $debug_cmd
1133
1134    $require_check_ifs_backslash
1135
1136    func_quote_portable_result=$2
1137
1138    # one-time-loop (easy break)
1139    while true
1140    do
1141      if $1; then
1142        func_quote_portable_result=`$ECHO "$2" | $SED \
1143          -e "$sed_double_quote_subst" -e "$sed_double_backslash"`
1144        break
1145      fi
1146
1147      # Quote for eval.
1148      case $func_quote_portable_result in
1149        *[\\\`\"\$]*)
1150          # Fallback to sed for $func_check_bs_ifs_broken=:, or when the string
1151          # contains the shell wildcard characters.
1152          case $check_ifs_backshlash_broken$func_quote_portable_result in
1153            :*|*[\[\*\?]*)
1154              func_quote_portable_result=`$ECHO "$func_quote_portable_result" \
1155                  | $SED "$sed_quote_subst"`
1156              break
1157              ;;
1158          esac
1159
1160          func_quote_portable_old_IFS=$IFS
1161          for _G_char in '\' '`' '"' '$'
1162          do
1163            # STATE($1) PREV($2) SEPARATOR($3)
1164            set start "" ""
1165            func_quote_portable_result=dummy"$_G_char$func_quote_portable_result$_G_char"dummy
1166            IFS=$_G_char
1167            for _G_part in $func_quote_portable_result
1168            do
1169              case $1 in
1170              quote)
1171                func_append func_quote_portable_result "$3$2"
1172                set quote "$_G_part" "\\$_G_char"
1173                ;;
1174              start)
1175                set first "" ""
1176                func_quote_portable_result=
1177                ;;
1178              first)
1179                set quote "$_G_part" ""
1180                ;;
1181              esac
1182            done
1183          done
1184          IFS=$func_quote_portable_old_IFS
1185          ;;
1186        *) ;;
1187      esac
1188      break
1189    done
1190
1191    func_quote_portable_unquoted_result=$func_quote_portable_result
1192    case $func_quote_portable_result in
1193      # double-quote args containing shell metacharacters to delay
1194      # word splitting, command substitution and variable expansion
1195      # for a subsequent eval.
1196      # many bourne shells cannot handle close brackets correctly
1197      # in scan sets, so we specify it separately.
1198      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
1199        func_quote_portable_result=\"$func_quote_portable_result\"
1200        ;;
1201    esac
1202}
1203
1204
1205# func_quotefast_eval ARG
1206# -----------------------
1207# Quote one ARG (internal).  This is equivalent to 'func_quote_arg eval ARG',
1208# but optimized for speed.  Result is stored in $func_quotefast_eval.
1209if test xyes = `(x=; printf -v x %q yes; echo x"$x") 2>/dev/null`; then
1210  printf -v _GL_test_printf_tilde %q '~'
1211  if test '\~' = "$_GL_test_printf_tilde"; then
1212    func_quotefast_eval ()
1213    {
1214      printf -v func_quotefast_eval_result %q "$1"
1215    }
1216  else
1217    # Broken older Bash implementations.  Make those faster too if possible.
1218    func_quotefast_eval ()
1219    {
1220      case $1 in
1221        '~'*)
1222          func_quote_portable false "$1"
1223          func_quotefast_eval_result=$func_quote_portable_result
1224          ;;
1225        *)
1226          printf -v func_quotefast_eval_result %q "$1"
1227          ;;
1228      esac
1229    }
1230  fi
1231else
1232  func_quotefast_eval ()
1233  {
1234    func_quote_portable false "$1"
1235    func_quotefast_eval_result=$func_quote_portable_result
1236  }
1237fi
1238
1239
1240# func_quote_arg MODEs ARG
1241# ------------------------
1242# Quote one ARG to be evaled later.  MODEs argument may contain zero or more
1243# specifiers listed below separated by ',' character.  This function returns two
1244# values:
1245#   i) func_quote_arg_result
1246#      double-quoted (when needed), suitable for a subsequent eval
1247#  ii) func_quote_arg_unquoted_result
1248#      has all characters that are still active within double
1249#      quotes backslashified.  Available only if 'unquoted' is specified.
1250#
1251# Available modes:
1252# ----------------
1253# 'eval' (default)
1254#       - escape shell special characters
1255# 'expand'
1256#       - the same as 'eval';  but do not quote variable references
1257# 'pretty'
1258#       - request aesthetic output, i.e. '"a b"' instead of 'a\ b'.  This might
1259#         be used later in func_quote to get output like: 'echo "a b"' instead
1260#         of 'echo a\ b'.  This is slower than default on some shells.
1261# 'unquoted'
1262#       - produce also $func_quote_arg_unquoted_result which does not contain
1263#         wrapping double-quotes.
1264#
1265# Examples for 'func_quote_arg pretty,unquoted string':
1266#
1267#   string      | *_result              | *_unquoted_result
1268#   ------------+-----------------------+-------------------
1269#   "           | \"                    | \"
1270#   a b         | "a b"                 | a b
1271#   "a b"       | "\"a b\""             | \"a b\"
1272#   *           | "*"                   | *
1273#   z="${x-$y}" | "z=\"\${x-\$y}\""     | z=\"\${x-\$y}\"
1274#
1275# Examples for 'func_quote_arg pretty,unquoted,expand string':
1276#
1277#   string        |   *_result          |  *_unquoted_result
1278#   --------------+---------------------+--------------------
1279#   z="${x-$y}"   | "z=\"${x-$y}\""     | z=\"${x-$y}\"
1280func_quote_arg ()
1281{
1282    _G_quote_expand=false
1283    case ,$1, in
1284      *,expand,*)
1285        _G_quote_expand=:
1286        ;;
1287    esac
1288
1289    case ,$1, in
1290      *,pretty,*|*,expand,*|*,unquoted,*)
1291        func_quote_portable $_G_quote_expand "$2"
1292        func_quote_arg_result=$func_quote_portable_result
1293        func_quote_arg_unquoted_result=$func_quote_portable_unquoted_result
1294        ;;
1295      *)
1296        # Faster quote-for-eval for some shells.
1297        func_quotefast_eval "$2"
1298        func_quote_arg_result=$func_quotefast_eval_result
1299        ;;
1300    esac
1301}
1302
1303
1304# func_quote MODEs ARGs...
1305# ------------------------
1306# Quote all ARGs to be evaled later and join them into single command.  See
1307# func_quote_arg's description for more info.
1308func_quote ()
1309{
1310    $debug_cmd
1311    _G_func_quote_mode=$1 ; shift
1312    func_quote_result=
1313    while test 0 -lt $#; do
1314      func_quote_arg "$_G_func_quote_mode" "$1"
1315      if test -n "$func_quote_result"; then
1316        func_append func_quote_result " $func_quote_arg_result"
1317      else
1318        func_append func_quote_result "$func_quote_arg_result"
1319      fi
1320      shift
1321    done
1322}
1323
1324
1325# func_stripname PREFIX SUFFIX NAME
1326# ---------------------------------
1327# strip PREFIX and SUFFIX from NAME, and store in func_stripname_result.
1328# PREFIX and SUFFIX must not contain globbing or regex special
1329# characters, hashes, percent signs, but SUFFIX may contain a leading
1330# dot (in which case that matches only a dot).
1331if test yes = "$_G_HAVE_XSI_OPS"; then
1332  eval 'func_stripname ()
1333  {
1334    $debug_cmd
1335
1336    # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
1337    # positional parameters, so assign one to ordinary variable first.
1338    func_stripname_result=$3
1339    func_stripname_result=${func_stripname_result#"$1"}
1340    func_stripname_result=${func_stripname_result%"$2"}
1341  }'
1342else
1343  func_stripname ()
1344  {
1345    $debug_cmd
1346
1347    case $2 in
1348      .*) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%\\\\$2\$%%"`;;
1349      *)  func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%$2\$%%"`;;
1350    esac
1351  }
1352fi
1353
1354
1355# func_show_eval CMD [FAIL_EXP]
1356# -----------------------------
1357# Unless opt_quiet is true, then output CMD.  Then, if opt_dryrun is
1358# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
1359# is given, then evaluate it.
1360func_show_eval ()
1361{
1362    $debug_cmd
1363
1364    _G_cmd=$1
1365    _G_fail_exp=${2-':'}
1366
1367    func_quote_arg pretty,expand "$_G_cmd"
1368    eval "func_notquiet $func_quote_arg_result"
1369
1370    $opt_dry_run || {
1371      eval "$_G_cmd"
1372      _G_status=$?
1373      if test 0 -ne "$_G_status"; then
1374	eval "(exit $_G_status); $_G_fail_exp"
1375      fi
1376    }
1377}
1378
1379
1380# func_show_eval_locale CMD [FAIL_EXP]
1381# ------------------------------------
1382# Unless opt_quiet is true, then output CMD.  Then, if opt_dryrun is
1383# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
1384# is given, then evaluate it.  Use the saved locale for evaluation.
1385func_show_eval_locale ()
1386{
1387    $debug_cmd
1388
1389    _G_cmd=$1
1390    _G_fail_exp=${2-':'}
1391
1392    $opt_quiet || {
1393      func_quote_arg expand,pretty "$_G_cmd"
1394      eval "func_echo $func_quote_arg_result"
1395    }
1396
1397    $opt_dry_run || {
1398      eval "$_G_user_locale
1399	    $_G_cmd"
1400      _G_status=$?
1401      eval "$_G_safe_locale"
1402      if test 0 -ne "$_G_status"; then
1403	eval "(exit $_G_status); $_G_fail_exp"
1404      fi
1405    }
1406}
1407
1408
1409# func_tr_sh
1410# ----------
1411# Turn $1 into a string suitable for a shell variable name.
1412# Result is stored in $func_tr_sh_result.  All characters
1413# not in the set a-zA-Z0-9_ are replaced with '_'. Further,
1414# if $1 begins with a digit, a '_' is prepended as well.
1415func_tr_sh ()
1416{
1417    $debug_cmd
1418
1419    case $1 in
1420    [0-9]* | *[!a-zA-Z0-9_]*)
1421      func_tr_sh_result=`$ECHO "$1" | $SED -e 's/^\([0-9]\)/_\1/' -e 's/[^a-zA-Z0-9_]/_/g'`
1422      ;;
1423    * )
1424      func_tr_sh_result=$1
1425      ;;
1426    esac
1427}
1428
1429
1430# func_verbose ARG...
1431# -------------------
1432# Echo program name prefixed message in verbose mode only.
1433func_verbose ()
1434{
1435    $debug_cmd
1436
1437    $opt_verbose && func_echo "$*"
1438
1439    :
1440}
1441
1442
1443# func_warn_and_continue ARG...
1444# -----------------------------
1445# Echo program name prefixed warning message to standard error.
1446func_warn_and_continue ()
1447{
1448    $debug_cmd
1449
1450    $require_term_colors
1451
1452    func_echo_infix_1 "${tc_red}warning$tc_reset" "$*" >&2
1453}
1454
1455
1456# func_warning CATEGORY ARG...
1457# ----------------------------
1458# Echo program name prefixed warning message to standard error. Warning
1459# messages can be filtered according to CATEGORY, where this function
1460# elides messages where CATEGORY is not listed in the global variable
1461# 'opt_warning_types'.
1462func_warning ()
1463{
1464    $debug_cmd
1465
1466    # CATEGORY must be in the warning_categories list!
1467    case " $warning_categories " in
1468      *" $1 "*) ;;
1469      *) func_internal_error "invalid warning category '$1'" ;;
1470    esac
1471
1472    _G_category=$1
1473    shift
1474
1475    case " $opt_warning_types " in
1476      *" $_G_category "*) $warning_func ${1+"$@"} ;;
1477    esac
1478}
1479
1480
1481# func_sort_ver VER1 VER2
1482# -----------------------
1483# 'sort -V' is not generally available.
1484# Note this deviates from the version comparison in automake
1485# in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a
1486# but this should suffice as we won't be specifying old
1487# version formats or redundant trailing .0 in bootstrap.conf.
1488# If we did want full compatibility then we should probably
1489# use m4_version_compare from autoconf.
1490func_sort_ver ()
1491{
1492    $debug_cmd
1493
1494    printf '%s\n%s\n' "$1" "$2" \
1495      | 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
1496}
1497
1498# func_lt_ver PREV CURR
1499# ---------------------
1500# Return true if PREV and CURR are in the correct order according to
1501# func_sort_ver, otherwise false.  Use it like this:
1502#
1503#  func_lt_ver "$prev_ver" "$proposed_ver" || func_fatal_error "..."
1504func_lt_ver ()
1505{
1506    $debug_cmd
1507
1508    test "x$1" = x`func_sort_ver "$1" "$2" | $SED 1q`
1509}
1510
1511
1512# Local variables:
1513# mode: shell-script
1514# sh-indentation: 2
1515# eval: (add-hook 'before-save-hook 'time-stamp)
1516# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC"
1517# time-stamp-time-zone: "UTC"
1518# End:
1519#! /bin/sh
1520
1521# A portable, pluggable option parser for Bourne shell.
1522# Written by Gary V. Vaughan, 2010
1523
1524# This is free software.  There is NO warranty; not even for
1525# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
1526#
1527# Copyright (C) 2010-2019, 2021 Bootstrap Authors
1528#
1529# This file is dual licensed under the terms of the MIT license
1530# <https://opensource.org/license/MIT>, and GPL version 2 or later
1531# <http://www.gnu.org/licenses/gpl-2.0.html>.  You must apply one of
1532# these licenses when using or redistributing this software or any of
1533# the files within it.  See the URLs above, or the file `LICENSE`
1534# included in the Bootstrap distribution for the full license texts.
1535
1536# Please report bugs or propose patches to:
1537# <https://github.com/gnulib-modules/bootstrap/issues>
1538
1539# Set a version string for this script.
1540scriptversion=2019-02-19.15; # UTC
1541
1542
1543## ------ ##
1544## Usage. ##
1545## ------ ##
1546
1547# This file is a library for parsing options in your shell scripts along
1548# with assorted other useful supporting features that you can make use
1549# of too.
1550#
1551# For the simplest scripts you might need only:
1552#
1553#   #!/bin/sh
1554#   . relative/path/to/funclib.sh
1555#   . relative/path/to/options-parser
1556#   scriptversion=1.0
1557#   func_options ${1+"$@"}
1558#   eval set dummy "$func_options_result"; shift
1559#   ...rest of your script...
1560#
1561# In order for the '--version' option to work, you will need to have a
1562# suitably formatted comment like the one at the top of this file
1563# starting with '# Written by ' and ending with '# Copyright'.
1564#
1565# For '-h' and '--help' to work, you will also need a one line
1566# description of your script's purpose in a comment directly above the
1567# '# Written by ' line, like the one at the top of this file.
1568#
1569# The default options also support '--debug', which will turn on shell
1570# execution tracing (see the comment above debug_cmd below for another
1571# use), and '--verbose' and the func_verbose function to allow your script
1572# to display verbose messages only when your user has specified
1573# '--verbose'.
1574#
1575# After sourcing this file, you can plug in processing for additional
1576# options by amending the variables from the 'Configuration' section
1577# below, and following the instructions in the 'Option parsing'
1578# section further down.
1579
1580## -------------- ##
1581## Configuration. ##
1582## -------------- ##
1583
1584# You should override these variables in your script after sourcing this
1585# file so that they reflect the customisations you have added to the
1586# option parser.
1587
1588# The usage line for option parsing errors and the start of '-h' and
1589# '--help' output messages. You can embed shell variables for delayed
1590# expansion at the time the message is displayed, but you will need to
1591# quote other shell meta-characters carefully to prevent them being
1592# expanded when the contents are evaled.
1593usage='$progpath [OPTION]...'
1594
1595# Short help message in response to '-h' and '--help'.  Add to this or
1596# override it after sourcing this library to reflect the full set of
1597# options your script accepts.
1598usage_message="\
1599       --debug        enable verbose shell tracing
1600   -W, --warnings=CATEGORY
1601                      report the warnings falling in CATEGORY [all]
1602   -v, --verbose      verbosely report processing
1603       --version      print version information and exit
1604   -h, --help         print short or long help message and exit
1605"
1606
1607# Additional text appended to 'usage_message' in response to '--help'.
1608long_help_message="
1609Warning categories include:
1610       'all'          show all warnings
1611       'none'         turn off all the warnings
1612       'error'        warnings are treated as fatal errors"
1613
1614# Help message printed before fatal option parsing errors.
1615fatal_help="Try '\$progname --help' for more information."
1616
1617
1618
1619## ------------------------- ##
1620## Hook function management. ##
1621## ------------------------- ##
1622
1623# This section contains functions for adding, removing, and running hooks
1624# in the main code.  A hook is just a list of function names that can be
1625# run in order later on.
1626
1627# func_hookable FUNC_NAME
1628# -----------------------
1629# Declare that FUNC_NAME will run hooks added with
1630# 'func_add_hook FUNC_NAME ...'.
1631func_hookable ()
1632{
1633    $debug_cmd
1634
1635    func_append hookable_fns " $1"
1636}
1637
1638
1639# func_add_hook FUNC_NAME HOOK_FUNC
1640# ---------------------------------
1641# Request that FUNC_NAME call HOOK_FUNC before it returns.  FUNC_NAME must
1642# first have been declared "hookable" by a call to 'func_hookable'.
1643func_add_hook ()
1644{
1645    $debug_cmd
1646
1647    case " $hookable_fns " in
1648      *" $1 "*) ;;
1649      *) func_fatal_error "'$1' does not accept hook functions." ;;
1650    esac
1651
1652    eval func_append ${1}_hooks '" $2"'
1653}
1654
1655
1656# func_remove_hook FUNC_NAME HOOK_FUNC
1657# ------------------------------------
1658# Remove HOOK_FUNC from the list of hook functions to be called by
1659# FUNC_NAME.
1660func_remove_hook ()
1661{
1662    $debug_cmd
1663
1664    eval ${1}_hooks='`$ECHO "\$'$1'_hooks" |$SED "s| '$2'||"`'
1665}
1666
1667
1668# func_propagate_result FUNC_NAME_A FUNC_NAME_B
1669# ---------------------------------------------
1670# If the *_result variable of FUNC_NAME_A _is set_, assign its value to
1671# *_result variable of FUNC_NAME_B.
1672func_propagate_result ()
1673{
1674    $debug_cmd
1675
1676    func_propagate_result_result=:
1677    if eval "test \"\${${1}_result+set}\" = set"
1678    then
1679      eval "${2}_result=\$${1}_result"
1680    else
1681      func_propagate_result_result=false
1682    fi
1683}
1684
1685
1686# func_run_hooks FUNC_NAME [ARG]...
1687# ---------------------------------
1688# Run all hook functions registered to FUNC_NAME.
1689# It's assumed that the list of hook functions contains nothing more
1690# than a whitespace-delimited list of legal shell function names, and
1691# no effort is wasted trying to catch shell meta-characters or preserve
1692# whitespace.
1693func_run_hooks ()
1694{
1695    $debug_cmd
1696
1697    _G_rc_run_hooks=false
1698
1699    case " $hookable_fns " in
1700      *" $1 "*) ;;
1701      *) func_fatal_error "'$1' does not support hook functions." ;;
1702    esac
1703
1704    eval _G_hook_fns=\$$1_hooks; shift
1705
1706    for _G_hook in $_G_hook_fns; do
1707      func_unset "${_G_hook}_result"
1708      eval $_G_hook '${1+"$@"}'
1709      func_propagate_result $_G_hook func_run_hooks
1710      if $func_propagate_result_result; then
1711        eval set dummy "$func_run_hooks_result"; shift
1712      fi
1713    done
1714}
1715
1716
1717
1718## --------------- ##
1719## Option parsing. ##
1720## --------------- ##
1721
1722# In order to add your own option parsing hooks, you must accept the
1723# full positional parameter list from your hook function.  You may remove
1724# or edit any options that you action, and then pass back the remaining
1725# unprocessed options in '<hooked_function_name>_result', escaped
1726# suitably for 'eval'.
1727#
1728# The '<hooked_function_name>_result' variable is automatically unset
1729# before your hook gets called; for best performance, only set the
1730# *_result variable when necessary (i.e. don't call the 'func_quote'
1731# function unnecessarily because it can be an expensive operation on some
1732# machines).
1733#
1734# Like this:
1735#
1736#    my_options_prep ()
1737#    {
1738#        $debug_cmd
1739#
1740#        # Extend the existing usage message.
1741#        usage_message=$usage_message'
1742#      -s, --silent       don'\''t print informational messages
1743#    '
1744#        # No change in '$@' (ignored completely by this hook).  Leave
1745#        # my_options_prep_result variable intact.
1746#    }
1747#    func_add_hook func_options_prep my_options_prep
1748#
1749#
1750#    my_silent_option ()
1751#    {
1752#        $debug_cmd
1753#
1754#        args_changed=false
1755#
1756#        # Note that, for efficiency, we parse as many options as we can
1757#        # recognise in a loop before passing the remainder back to the
1758#        # caller on the first unrecognised argument we encounter.
1759#        while test $# -gt 0; do
1760#          opt=$1; shift
1761#          case $opt in
1762#            --silent|-s) opt_silent=:
1763#                         args_changed=:
1764#                         ;;
1765#            # Separate non-argument short options:
1766#            -s*)         func_split_short_opt "$_G_opt"
1767#                         set dummy "$func_split_short_opt_name" \
1768#                             "-$func_split_short_opt_arg" ${1+"$@"}
1769#                         shift
1770#                         args_changed=:
1771#                         ;;
1772#            *)           # Make sure the first unrecognised option "$_G_opt"
1773#                         # is added back to "$@" in case we need it later,
1774#                         # if $args_changed was set to 'true'.
1775#                         set dummy "$_G_opt" ${1+"$@"}; shift; break ;;
1776#          esac
1777#        done
1778#
1779#        # Only call 'func_quote' here if we processed at least one argument.
1780#        if $args_changed; then
1781#          func_quote eval ${1+"$@"}
1782#          my_silent_option_result=$func_quote_result
1783#        fi
1784#    }
1785#    func_add_hook func_parse_options my_silent_option
1786#
1787#
1788#    my_option_validation ()
1789#    {
1790#        $debug_cmd
1791#
1792#        $opt_silent && $opt_verbose && func_fatal_help "\
1793#    '--silent' and '--verbose' options are mutually exclusive."
1794#    }
1795#    func_add_hook func_validate_options my_option_validation
1796#
1797# You'll also need to manually amend $usage_message to reflect the extra
1798# options you parse.  It's preferable to append if you can, so that
1799# multiple option parsing hooks can be added safely.
1800
1801
1802# func_options_finish [ARG]...
1803# ----------------------------
1804# Finishing the option parse loop (call 'func_options' hooks ATM).
1805func_options_finish ()
1806{
1807    $debug_cmd
1808
1809    func_run_hooks func_options ${1+"$@"}
1810    func_propagate_result func_run_hooks func_options_finish
1811}
1812
1813
1814# func_options [ARG]...
1815# ---------------------
1816# All the functions called inside func_options are hookable. See the
1817# individual implementations for details.
1818func_hookable func_options
1819func_options ()
1820{
1821    $debug_cmd
1822
1823    _G_options_quoted=false
1824
1825    for my_func in options_prep parse_options validate_options options_finish
1826    do
1827      func_unset func_${my_func}_result
1828      func_unset func_run_hooks_result
1829      eval func_$my_func '${1+"$@"}'
1830      func_propagate_result func_$my_func func_options
1831      if $func_propagate_result_result; then
1832        eval set dummy "$func_options_result"; shift
1833        _G_options_quoted=:
1834      fi
1835    done
1836
1837    $_G_options_quoted || {
1838      # As we (func_options) are top-level options-parser function and
1839      # nobody quoted "$@" for us yet, we need to do it explicitly for
1840      # caller.
1841      func_quote eval ${1+"$@"}
1842      func_options_result=$func_quote_result
1843    }
1844}
1845
1846
1847# func_options_prep [ARG]...
1848# --------------------------
1849# All initialisations required before starting the option parse loop.
1850# Note that when calling hook functions, we pass through the list of
1851# positional parameters.  If a hook function modifies that list, and
1852# needs to propagate that back to rest of this script, then the complete
1853# modified list must be put in 'func_run_hooks_result' before returning.
1854func_hookable func_options_prep
1855func_options_prep ()
1856{
1857    $debug_cmd
1858
1859    # Option defaults:
1860    opt_verbose=false
1861    opt_warning_types=
1862
1863    func_run_hooks func_options_prep ${1+"$@"}
1864    func_propagate_result func_run_hooks func_options_prep
1865}
1866
1867
1868# func_parse_options [ARG]...
1869# ---------------------------
1870# The main option parsing loop.
1871func_hookable func_parse_options
1872func_parse_options ()
1873{
1874    $debug_cmd
1875
1876    _G_parse_options_requote=false
1877    # this just eases exit handling
1878    while test $# -gt 0; do
1879      # Defer to hook functions for initial option parsing, so they
1880      # get priority in the event of reusing an option name.
1881      func_run_hooks func_parse_options ${1+"$@"}
1882      func_propagate_result func_run_hooks func_parse_options
1883      if $func_propagate_result_result; then
1884        eval set dummy "$func_parse_options_result"; shift
1885        # Even though we may have changed "$@", we passed the "$@" array
1886        # down into the hook and it quoted it for us (because we are in
1887        # this if-branch).  No need to quote it again.
1888        _G_parse_options_requote=false
1889      fi
1890
1891      # Break out of the loop if we already parsed every option.
1892      test $# -gt 0 || break
1893
1894      # We expect that one of the options parsed in this function matches
1895      # and thus we remove _G_opt from "$@" and need to re-quote.
1896      _G_match_parse_options=:
1897      _G_opt=$1
1898      shift
1899      case $_G_opt in
1900        --debug|-x)   debug_cmd='set -x'
1901                      func_echo "enabling shell trace mode" >&2
1902                      $debug_cmd
1903                      ;;
1904
1905        --no-warnings|--no-warning|--no-warn)
1906                      set dummy --warnings none ${1+"$@"}
1907                      shift
1908		      ;;
1909
1910        --warnings|--warning|-W)
1911                      if test $# = 0 && func_missing_arg $_G_opt; then
1912                        _G_parse_options_requote=:
1913                        break
1914                      fi
1915                      case " $warning_categories $1" in
1916                        *" $1 "*)
1917                          # trailing space prevents matching last $1 above
1918                          func_append_uniq opt_warning_types " $1"
1919                          ;;
1920                        *all)
1921                          opt_warning_types=$warning_categories
1922                          ;;
1923                        *none)
1924                          opt_warning_types=none
1925                          warning_func=:
1926                          ;;
1927                        *error)
1928                          opt_warning_types=$warning_categories
1929                          warning_func=func_fatal_error
1930                          ;;
1931                        *)
1932                          func_fatal_error \
1933                             "unsupported warning category: '$1'"
1934                          ;;
1935                      esac
1936                      shift
1937                      ;;
1938
1939        --verbose|-v) opt_verbose=: ;;
1940        --version)    func_version ;;
1941        -\?|-h)       func_usage ;;
1942        --help)       func_help ;;
1943
1944	# Separate optargs to long options (plugins may need this):
1945	--*=*)        func_split_equals "$_G_opt"
1946	              set dummy "$func_split_equals_lhs" \
1947                          "$func_split_equals_rhs" ${1+"$@"}
1948                      shift
1949                      ;;
1950
1951       # Separate optargs to short options:
1952        -W*)
1953                      func_split_short_opt "$_G_opt"
1954                      set dummy "$func_split_short_opt_name" \
1955                          "$func_split_short_opt_arg" ${1+"$@"}
1956                      shift
1957                      ;;
1958
1959        # Separate non-argument short options:
1960        -\?*|-h*|-v*|-x*)
1961                      func_split_short_opt "$_G_opt"
1962                      set dummy "$func_split_short_opt_name" \
1963                          "-$func_split_short_opt_arg" ${1+"$@"}
1964                      shift
1965                      ;;
1966
1967        --)           _G_parse_options_requote=: ; break ;;
1968        -*)           func_fatal_help "unrecognised option: '$_G_opt'" ;;
1969        *)            set dummy "$_G_opt" ${1+"$@"}; shift
1970                      _G_match_parse_options=false
1971                      break
1972                      ;;
1973      esac
1974
1975      if $_G_match_parse_options; then
1976        _G_parse_options_requote=:
1977      fi
1978    done
1979
1980    if $_G_parse_options_requote; then
1981      # save modified positional parameters for caller
1982      func_quote eval ${1+"$@"}
1983      func_parse_options_result=$func_quote_result
1984    fi
1985}
1986
1987
1988# func_validate_options [ARG]...
1989# ------------------------------
1990# Perform any sanity checks on option settings and/or unconsumed
1991# arguments.
1992func_hookable func_validate_options
1993func_validate_options ()
1994{
1995    $debug_cmd
1996
1997    # Display all warnings if -W was not given.
1998    test -n "$opt_warning_types" || opt_warning_types=" $warning_categories"
1999
2000    func_run_hooks func_validate_options ${1+"$@"}
2001    func_propagate_result func_run_hooks func_validate_options
2002
2003    # Bail if the options were screwed!
2004    $exit_cmd $EXIT_FAILURE
2005}
2006
2007
2008
2009## ----------------- ##
2010## Helper functions. ##
2011## ----------------- ##
2012
2013# This section contains the helper functions used by the rest of the
2014# hookable option parser framework in ascii-betical order.
2015
2016
2017# func_fatal_help ARG...
2018# ----------------------
2019# Echo program name prefixed message to standard error, followed by
2020# a help hint, and exit.
2021func_fatal_help ()
2022{
2023    $debug_cmd
2024
2025    eval \$ECHO \""Usage: $usage"\"
2026    eval \$ECHO \""$fatal_help"\"
2027    func_error ${1+"$@"}
2028    exit $EXIT_FAILURE
2029}
2030
2031
2032# func_help
2033# ---------
2034# Echo long help message to standard output and exit.
2035func_help ()
2036{
2037    $debug_cmd
2038
2039    func_usage_message
2040    $ECHO "$long_help_message"
2041    exit 0
2042}
2043
2044
2045# func_missing_arg ARGNAME
2046# ------------------------
2047# Echo program name prefixed message to standard error and set global
2048# exit_cmd.
2049func_missing_arg ()
2050{
2051    $debug_cmd
2052
2053    func_error "Missing argument for '$1'."
2054    exit_cmd=exit
2055}
2056
2057
2058# func_split_equals STRING
2059# ------------------------
2060# Set func_split_equals_lhs and func_split_equals_rhs shell variables
2061# after splitting STRING at the '=' sign.
2062test -z "$_G_HAVE_XSI_OPS" \
2063    && (eval 'x=a/b/c;
2064      test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \
2065    && _G_HAVE_XSI_OPS=yes
2066
2067if test yes = "$_G_HAVE_XSI_OPS"
2068then
2069  # This is an XSI compatible shell, allowing a faster implementation...
2070  eval 'func_split_equals ()
2071  {
2072      $debug_cmd
2073
2074      func_split_equals_lhs=${1%%=*}
2075      func_split_equals_rhs=${1#*=}
2076      if test "x$func_split_equals_lhs" = "x$1"; then
2077        func_split_equals_rhs=
2078      fi
2079  }'
2080else
2081  # ...otherwise fall back to using expr, which is often a shell builtin.
2082  func_split_equals ()
2083  {
2084      $debug_cmd
2085
2086      func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'`
2087      func_split_equals_rhs=
2088      test "x$func_split_equals_lhs=" = "x$1" \
2089        || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'`
2090  }
2091fi #func_split_equals
2092
2093
2094# func_split_short_opt SHORTOPT
2095# -----------------------------
2096# Set func_split_short_opt_name and func_split_short_opt_arg shell
2097# variables after splitting SHORTOPT after the 2nd character.
2098if test yes = "$_G_HAVE_XSI_OPS"
2099then
2100  # This is an XSI compatible shell, allowing a faster implementation...
2101  eval 'func_split_short_opt ()
2102  {
2103      $debug_cmd
2104
2105      func_split_short_opt_arg=${1#??}
2106      func_split_short_opt_name=${1%"$func_split_short_opt_arg"}
2107  }'
2108else
2109  # ...otherwise fall back to using expr, which is often a shell builtin.
2110  func_split_short_opt ()
2111  {
2112      $debug_cmd
2113
2114      func_split_short_opt_name=`expr "x$1" : 'x\(-.\)'`
2115      func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'`
2116  }
2117fi #func_split_short_opt
2118
2119
2120# func_usage
2121# ----------
2122# Echo short help message to standard output and exit.
2123func_usage ()
2124{
2125    $debug_cmd
2126
2127    func_usage_message
2128    $ECHO "Run '$progname --help |${PAGER-more}' for full usage"
2129    exit 0
2130}
2131
2132
2133# func_usage_message
2134# ------------------
2135# Echo short help message to standard output.
2136func_usage_message ()
2137{
2138    $debug_cmd
2139
2140    eval \$ECHO \""Usage: $usage"\"
2141    echo
2142    $SED -n 's|^# ||
2143        /^Written by/{
2144          x;p;x
2145        }
2146	h
2147	/^Written by/q' < "$progpath"
2148    echo
2149    eval \$ECHO \""$usage_message"\"
2150}
2151
2152
2153# func_version
2154# ------------
2155# Echo version message to standard output and exit.
2156# The version message is extracted from the calling file's header
2157# comments, with leading '# ' stripped:
2158#   1. First display the progname and version
2159#   2. Followed by the header comment line matching  /^# Written by /
2160#   3. Then a blank line followed by the first following line matching
2161#      /^# Copyright /
2162#   4. Immediately followed by any lines between the previous matches,
2163#      except lines preceding the intervening completely blank line.
2164# For example, see the header comments of this file.
2165func_version ()
2166{
2167    $debug_cmd
2168
2169    printf '%s\n' "$progname $scriptversion"
2170    $SED -n '
2171        /^# Written by /!b
2172        s|^# ||; p; n
2173
2174        :fwd2blnk
2175        /./ {
2176          n
2177          b fwd2blnk
2178        }
2179        p; n
2180
2181        :holdwrnt
2182        s|^# ||
2183        s|^# *$||
2184        /^Copyright /!{
2185          /./H
2186          n
2187          b holdwrnt
2188        }
2189
2190        s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2|
2191        G
2192        s|\(\n\)\n*|\1|g
2193        p; q' < "$progpath"
2194
2195    exit $?
2196}
2197
2198
2199# Local variables:
2200# mode: shell-script
2201# sh-indentation: 2
2202# eval: (add-hook 'before-save-hook 'time-stamp)
2203# time-stamp-pattern: "30/scriptversion=%:y-%02m-%02d.%02H; # UTC"
2204# time-stamp-time-zone: "UTC"
2205# End:
2206
2207# Set a version string.
2208scriptversion='(GNU libtool) 2.4.7'
2209
2210
2211# func_echo ARG...
2212# ----------------
2213# Libtool also displays the current mode in messages, so override
2214# funclib.sh func_echo with this custom definition.
2215func_echo ()
2216{
2217    $debug_cmd
2218
2219    _G_message=$*
2220
2221    func_echo_IFS=$IFS
2222    IFS=$nl
2223    for _G_line in $_G_message; do
2224      IFS=$func_echo_IFS
2225      $ECHO "$progname${opt_mode+: $opt_mode}: $_G_line"
2226    done
2227    IFS=$func_echo_IFS
2228}
2229
2230
2231# func_warning ARG...
2232# -------------------
2233# Libtool warnings are not categorized, so override funclib.sh
2234# func_warning with this simpler definition.
2235func_warning ()
2236{
2237    $debug_cmd
2238
2239    $warning_func ${1+"$@"}
2240}
2241
2242
2243## ---------------- ##
2244## Options parsing. ##
2245## ---------------- ##
2246
2247# Hook in the functions to make sure our own options are parsed during
2248# the option parsing loop.
2249
2250usage='$progpath [OPTION]... [MODE-ARG]...'
2251
2252# Short help message in response to '-h'.
2253usage_message="Options:
2254       --config             show all configuration variables
2255       --debug              enable verbose shell tracing
2256   -n, --dry-run            display commands without modifying any files
2257       --features           display basic configuration information and exit
2258       --mode=MODE          use operation mode MODE
2259       --no-warnings        equivalent to '-Wnone'
2260       --preserve-dup-deps  don't remove duplicate dependency libraries
2261       --quiet, --silent    don't print informational messages
2262       --tag=TAG            use configuration variables from tag TAG
2263   -v, --verbose            print more informational messages than default
2264       --version            print version information
2265   -W, --warnings=CATEGORY  report the warnings falling in CATEGORY [all]
2266   -h, --help, --help-all   print short, long, or detailed help message
2267"
2268
2269# Additional text appended to 'usage_message' in response to '--help'.
2270func_help ()
2271{
2272    $debug_cmd
2273
2274    func_usage_message
2275    $ECHO "$long_help_message
2276
2277MODE must be one of the following:
2278
2279       clean           remove files from the build directory
2280       compile         compile a source file into a libtool object
2281       execute         automatically set library path, then run a program
2282       finish          complete the installation of libtool libraries
2283       install         install libraries or executables
2284       link            create a library or an executable
2285       uninstall       remove libraries from an installed directory
2286
2287MODE-ARGS vary depending on the MODE.  When passed as first option,
2288'--mode=MODE' may be abbreviated as 'MODE' or a unique abbreviation of that.
2289Try '$progname --help --mode=MODE' for a more detailed description of MODE.
2290
2291When reporting a bug, please describe a test case to reproduce it and
2292include the following information:
2293
2294       host-triplet:   $host
2295       shell:          $SHELL
2296       compiler:       $LTCC
2297       compiler flags: $LTCFLAGS
2298       linker:         $LD (gnu? $with_gnu_ld)
2299       version:        $progname $scriptversion Debian-2.4.7-7+build1
2300       automake:       `($AUTOMAKE --version) 2>/dev/null |$SED 1q`
2301       autoconf:       `($AUTOCONF --version) 2>/dev/null |$SED 1q`
2302
2303Report bugs to <[email protected]>.
2304GNU libtool home page: <http://www.gnu.org/s/libtool/>.
2305General help using GNU software: <http://www.gnu.org/gethelp/>."
2306    exit 0
2307}
2308
2309
2310# func_lo2o OBJECT-NAME
2311# ---------------------
2312# Transform OBJECT-NAME from a '.lo' suffix to the platform specific
2313# object suffix.
2314
2315lo2o=s/\\.lo\$/.$objext/
2316o2lo=s/\\.$objext\$/.lo/
2317
2318if test yes = "$_G_HAVE_XSI_OPS"; then
2319  eval 'func_lo2o ()
2320  {
2321    case $1 in
2322      *.lo) func_lo2o_result=${1%.lo}.$objext ;;
2323      *   ) func_lo2o_result=$1               ;;
2324    esac
2325  }'
2326
2327  # func_xform LIBOBJ-OR-SOURCE
2328  # ---------------------------
2329  # Transform LIBOBJ-OR-SOURCE from a '.o' or '.c' (or otherwise)
2330  # suffix to a '.lo' libtool-object suffix.
2331  eval 'func_xform ()
2332  {
2333    func_xform_result=${1%.*}.lo
2334  }'
2335else
2336  # ...otherwise fall back to using sed.
2337  func_lo2o ()
2338  {
2339    func_lo2o_result=`$ECHO "$1" | $SED "$lo2o"`
2340  }
2341
2342  func_xform ()
2343  {
2344    func_xform_result=`$ECHO "$1" | $SED 's|\.[^.]*$|.lo|'`
2345  }
2346fi
2347
2348
2349# func_fatal_configuration ARG...
2350# -------------------------------
2351# Echo program name prefixed message to standard error, followed by
2352# a configuration failure hint, and exit.
2353func_fatal_configuration ()
2354{
2355    func_fatal_error ${1+"$@"} \
2356      "See the $PACKAGE documentation for more information." \
2357      "Fatal configuration error."
2358}
2359
2360
2361# func_config
2362# -----------
2363# Display the configuration for all the tags in this script.
2364func_config ()
2365{
2366    re_begincf='^# ### BEGIN LIBTOOL'
2367    re_endcf='^# ### END LIBTOOL'
2368
2369    # Default configuration.
2370    $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
2371
2372    # Now print the configurations for the tags.
2373    for tagname in $taglist; do
2374      $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
2375    done
2376
2377    exit $?
2378}
2379
2380
2381# func_features
2382# -------------
2383# Display the features supported by this script.
2384func_features ()
2385{
2386    echo "host: $host"
2387    if test yes = "$build_libtool_libs"; then
2388      echo "enable shared libraries"
2389    else
2390      echo "disable shared libraries"
2391    fi
2392    if test yes = "$build_old_libs"; then
2393      echo "enable static libraries"
2394    else
2395      echo "disable static libraries"
2396    fi
2397
2398    exit $?
2399}
2400
2401
2402# func_enable_tag TAGNAME
2403# -----------------------
2404# Verify that TAGNAME is valid, and either flag an error and exit, or
2405# enable the TAGNAME tag.  We also add TAGNAME to the global $taglist
2406# variable here.
2407func_enable_tag ()
2408{
2409    # Global variable:
2410    tagname=$1
2411
2412    re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
2413    re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
2414    sed_extractcf=/$re_begincf/,/$re_endcf/p
2415
2416    # Validate tagname.
2417    case $tagname in
2418      *[!-_A-Za-z0-9,/]*)
2419        func_fatal_error "invalid tag name: $tagname"
2420        ;;
2421    esac
2422
2423    # Don't test for the "default" C tag, as we know it's
2424    # there but not specially marked.
2425    case $tagname in
2426        CC) ;;
2427    *)
2428        if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
2429	  taglist="$taglist $tagname"
2430
2431	  # Evaluate the configuration.  Be careful to quote the path
2432	  # and the sed script, to avoid splitting on whitespace, but
2433	  # also don't use non-portable quotes within backquotes within
2434	  # quotes we have to do it in 2 steps:
2435	  extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
2436	  eval "$extractedcf"
2437        else
2438	  func_error "ignoring unknown tag $tagname"
2439        fi
2440        ;;
2441    esac
2442}
2443
2444
2445# func_check_version_match
2446# ------------------------
2447# Ensure that we are using m4 macros, and libtool script from the same
2448# release of libtool.
2449func_check_version_match ()
2450{
2451    if test "$package_revision" != "$macro_revision"; then
2452      if test "$VERSION" != "$macro_version"; then
2453        if test -z "$macro_version"; then
2454          cat >&2 <<_LT_EOF
2455$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
2456$progname: definition of this LT_INIT comes from an older release.
2457$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
2458$progname: and run autoconf again.
2459_LT_EOF
2460        else
2461          cat >&2 <<_LT_EOF
2462$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
2463$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
2464$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
2465$progname: and run autoconf again.
2466_LT_EOF
2467        fi
2468      else
2469        cat >&2 <<_LT_EOF
2470$progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision,
2471$progname: but the definition of this LT_INIT comes from revision $macro_revision.
2472$progname: You should recreate aclocal.m4 with macros from revision $package_revision
2473$progname: of $PACKAGE $VERSION and run autoconf again.
2474_LT_EOF
2475      fi
2476
2477      exit $EXIT_MISMATCH
2478    fi
2479}
2480
2481
2482# libtool_options_prep [ARG]...
2483# -----------------------------
2484# Preparation for options parsed by libtool.
2485libtool_options_prep ()
2486{
2487    $debug_mode
2488
2489    # Option defaults:
2490    opt_config=false
2491    opt_dlopen=
2492    opt_dry_run=false
2493    opt_help=false
2494    opt_mode=
2495    opt_preserve_dup_deps=false
2496    opt_quiet=false
2497
2498    nonopt=
2499    preserve_args=
2500
2501    _G_rc_lt_options_prep=:
2502
2503    _G_rc_lt_options_prep=:
2504
2505    # Shorthand for --mode=foo, only valid as the first argument
2506    case $1 in
2507    clean|clea|cle|cl)
2508      shift; set dummy --mode clean ${1+"$@"}; shift
2509      ;;
2510    compile|compil|compi|comp|com|co|c)
2511      shift; set dummy --mode compile ${1+"$@"}; shift
2512      ;;
2513    execute|execut|execu|exec|exe|ex|e)
2514      shift; set dummy --mode execute ${1+"$@"}; shift
2515      ;;
2516    finish|finis|fini|fin|fi|f)
2517      shift; set dummy --mode finish ${1+"$@"}; shift
2518      ;;
2519    install|instal|insta|inst|ins|in|i)
2520      shift; set dummy --mode install ${1+"$@"}; shift
2521      ;;
2522    link|lin|li|l)
2523      shift; set dummy --mode link ${1+"$@"}; shift
2524      ;;
2525    uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
2526      shift; set dummy --mode uninstall ${1+"$@"}; shift
2527      ;;
2528    *)
2529      _G_rc_lt_options_prep=false
2530      ;;
2531    esac
2532
2533    if $_G_rc_lt_options_prep; then
2534      # Pass back the list of options.
2535      func_quote eval ${1+"$@"}
2536      libtool_options_prep_result=$func_quote_result
2537    fi
2538}
2539func_add_hook func_options_prep libtool_options_prep
2540
2541
2542# libtool_parse_options [ARG]...
2543# ---------------------------------
2544# Provide handling for libtool specific options.
2545libtool_parse_options ()
2546{
2547    $debug_cmd
2548
2549    _G_rc_lt_parse_options=false
2550
2551    # Perform our own loop to consume as many options as possible in
2552    # each iteration.
2553    while test $# -gt 0; do
2554      _G_match_lt_parse_options=:
2555      _G_opt=$1
2556      shift
2557      case $_G_opt in
2558        --dry-run|--dryrun|-n)
2559                        opt_dry_run=:
2560                        ;;
2561
2562        --config)       func_config ;;
2563
2564        --dlopen|-dlopen)
2565                        opt_dlopen="${opt_dlopen+$opt_dlopen
2566}$1"
2567                        shift
2568                        ;;
2569
2570        --preserve-dup-deps)
2571                        opt_preserve_dup_deps=: ;;
2572
2573        --features)     func_features ;;
2574
2575        --finish)       set dummy --mode finish ${1+"$@"}; shift ;;
2576
2577        --help)         opt_help=: ;;
2578
2579        --help-all)     opt_help=': help-all' ;;
2580
2581        --mode)         test $# = 0 && func_missing_arg $_G_opt && break
2582                        opt_mode=$1
2583                        case $1 in
2584                          # Valid mode arguments:
2585                          clean|compile|execute|finish|install|link|relink|uninstall) ;;
2586
2587                          # Catch anything else as an error
2588                          *) func_error "invalid argument for $_G_opt"
2589                             exit_cmd=exit
2590                             break
2591                             ;;
2592                        esac
2593                        shift
2594                        ;;
2595
2596        --no-silent|--no-quiet)
2597                        opt_quiet=false
2598                        func_append preserve_args " $_G_opt"
2599                        ;;
2600
2601        --no-warnings|--no-warning|--no-warn)
2602                        opt_warning=false
2603                        func_append preserve_args " $_G_opt"
2604                        ;;
2605
2606        --no-verbose)
2607                        opt_verbose=false
2608                        func_append preserve_args " $_G_opt"
2609                        ;;
2610
2611        --silent|--quiet)
2612                        opt_quiet=:
2613                        opt_verbose=false
2614                        func_append preserve_args " $_G_opt"
2615                        ;;
2616
2617        --tag)          test $# = 0 && func_missing_arg $_G_opt && break
2618                        opt_tag=$1
2619                        func_append preserve_args " $_G_opt $1"
2620                        func_enable_tag "$1"
2621                        shift
2622                        ;;
2623
2624        --verbose|-v)   opt_quiet=false
2625                        opt_verbose=:
2626                        func_append preserve_args " $_G_opt"
2627                        ;;
2628
2629        # An option not handled by this hook function:
2630        *)              set dummy "$_G_opt" ${1+"$@"} ; shift
2631                        _G_match_lt_parse_options=false
2632                        break
2633                        ;;
2634      esac
2635      $_G_match_lt_parse_options && _G_rc_lt_parse_options=:
2636    done
2637
2638    if $_G_rc_lt_parse_options; then
2639      # save modified positional parameters for caller
2640      func_quote eval ${1+"$@"}
2641      libtool_parse_options_result=$func_quote_result
2642    fi
2643}
2644func_add_hook func_parse_options libtool_parse_options
2645
2646
2647
2648# libtool_validate_options [ARG]...
2649# ---------------------------------
2650# Perform any sanity checks on option settings and/or unconsumed
2651# arguments.
2652libtool_validate_options ()
2653{
2654    # save first non-option argument
2655    if test 0 -lt $#; then
2656      nonopt=$1
2657      shift
2658    fi
2659
2660    # preserve --debug
2661    test : = "$debug_cmd" || func_append preserve_args " --debug"
2662
2663    case $host in
2664      # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452
2665      # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788
2666      *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* | *os2*)
2667        # don't eliminate duplications in $postdeps and $predeps
2668        opt_duplicate_compiler_generated_deps=:
2669        ;;
2670      *)
2671        opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps
2672        ;;
2673    esac
2674
2675    $opt_help || {
2676      # Sanity checks first:
2677      func_check_version_match
2678
2679      test yes != "$build_libtool_libs" \
2680        && test yes != "$build_old_libs" \
2681        && func_fatal_configuration "not configured to build any kind of library"
2682
2683      # Darwin sucks
2684      eval std_shrext=\"$shrext_cmds\"
2685
2686      # Only execute mode is allowed to have -dlopen flags.
2687      if test -n "$opt_dlopen" && test execute != "$opt_mode"; then
2688        func_error "unrecognized option '-dlopen'"
2689        $ECHO "$help" 1>&2
2690        exit $EXIT_FAILURE
2691      fi
2692
2693      # Change the help message to a mode-specific one.
2694      generic_help=$help
2695      help="Try '$progname --help --mode=$opt_mode' for more information."
2696    }
2697
2698    # Pass back the unparsed argument list
2699    func_quote eval ${1+"$@"}
2700    libtool_validate_options_result=$func_quote_result
2701}
2702func_add_hook func_validate_options libtool_validate_options
2703
2704
2705# Process options as early as possible so that --help and --version
2706# can return quickly.
2707func_options ${1+"$@"}
2708eval set dummy "$func_options_result"; shift
2709
2710
2711
2712## ----------- ##
2713##    Main.    ##
2714## ----------- ##
2715
2716magic='%%%MAGIC variable%%%'
2717magic_exe='%%%MAGIC EXE variable%%%'
2718
2719# Global variables.
2720extracted_archives=
2721extracted_serial=0
2722
2723# If this variable is set in any of the actions, the command in it
2724# will be execed at the end.  This prevents here-documents from being
2725# left over by shells.
2726exec_cmd=
2727
2728
2729# A function that is used when there is no print builtin or printf.
2730func_fallback_echo ()
2731{
2732  eval 'cat <<_LTECHO_EOF
2733$1
2734_LTECHO_EOF'
2735}
2736
2737# func_generated_by_libtool
2738# True iff stdin has been generated by Libtool. This function is only
2739# a basic sanity check; it will hardly flush out determined imposters.
2740func_generated_by_libtool_p ()
2741{
2742  $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
2743}
2744
2745# func_lalib_p file
2746# True iff FILE is a libtool '.la' library or '.lo' object file.
2747# This function is only a basic sanity check; it will hardly flush out
2748# determined imposters.
2749func_lalib_p ()
2750{
2751    test -f "$1" &&
2752      $SED -e 4q "$1" 2>/dev/null | func_generated_by_libtool_p
2753}
2754
2755# func_lalib_unsafe_p file
2756# True iff FILE is a libtool '.la' library or '.lo' object file.
2757# This function implements the same check as func_lalib_p without
2758# resorting to external programs.  To this end, it redirects stdin and
2759# closes it afterwards, without saving the original file descriptor.
2760# As a safety measure, use it only where a negative result would be
2761# fatal anyway.  Works if 'file' does not exist.
2762func_lalib_unsafe_p ()
2763{
2764    lalib_p=no
2765    if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
2766	for lalib_p_l in 1 2 3 4
2767	do
2768	    read lalib_p_line
2769	    case $lalib_p_line in
2770		\#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
2771	    esac
2772	done
2773	exec 0<&5 5<&-
2774    fi
2775    test yes = "$lalib_p"
2776}
2777
2778# func_ltwrapper_script_p file
2779# True iff FILE is a libtool wrapper script
2780# This function is only a basic sanity check; it will hardly flush out
2781# determined imposters.
2782func_ltwrapper_script_p ()
2783{
2784    test -f "$1" &&
2785      $lt_truncate_bin < "$1" 2>/dev/null | func_generated_by_libtool_p
2786}
2787
2788# func_ltwrapper_executable_p file
2789# True iff FILE is a libtool wrapper executable
2790# This function is only a basic sanity check; it will hardly flush out
2791# determined imposters.
2792func_ltwrapper_executable_p ()
2793{
2794    func_ltwrapper_exec_suffix=
2795    case $1 in
2796    *.exe) ;;
2797    *) func_ltwrapper_exec_suffix=.exe ;;
2798    esac
2799    $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
2800}
2801
2802# func_ltwrapper_scriptname file
2803# Assumes file is an ltwrapper_executable
2804# uses $file to determine the appropriate filename for a
2805# temporary ltwrapper_script.
2806func_ltwrapper_scriptname ()
2807{
2808    func_dirname_and_basename "$1" "" "."
2809    func_stripname '' '.exe' "$func_basename_result"
2810    func_ltwrapper_scriptname_result=$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper
2811}
2812
2813# func_ltwrapper_p file
2814# True iff FILE is a libtool wrapper script or wrapper executable
2815# This function is only a basic sanity check; it will hardly flush out
2816# determined imposters.
2817func_ltwrapper_p ()
2818{
2819    func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
2820}
2821
2822
2823# func_execute_cmds commands fail_cmd
2824# Execute tilde-delimited COMMANDS.
2825# If FAIL_CMD is given, eval that upon failure.
2826# FAIL_CMD may read-access the current command in variable CMD!
2827func_execute_cmds ()
2828{
2829    $debug_cmd
2830
2831    save_ifs=$IFS; IFS='~'
2832    for cmd in $1; do
2833      IFS=$sp$nl
2834      eval cmd=\"$cmd\"
2835      IFS=$save_ifs
2836      func_show_eval "$cmd" "${2-:}"
2837    done
2838    IFS=$save_ifs
2839}
2840
2841
2842# func_source file
2843# Source FILE, adding directory component if necessary.
2844# Note that it is not necessary on cygwin/mingw to append a dot to
2845# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
2846# behavior happens only for exec(3), not for open(2)!  Also, sourcing
2847# 'FILE.' does not work on cygwin managed mounts.
2848func_source ()
2849{
2850    $debug_cmd
2851
2852    case $1 in
2853    */* | *\\*)	. "$1" ;;
2854    *)		. "./$1" ;;
2855    esac
2856}
2857
2858
2859# func_resolve_sysroot PATH
2860# Replace a leading = in PATH with a sysroot.  Store the result into
2861# func_resolve_sysroot_result
2862func_resolve_sysroot ()
2863{
2864  func_resolve_sysroot_result=$1
2865  case $func_resolve_sysroot_result in
2866  =*)
2867    func_stripname '=' '' "$func_resolve_sysroot_result"
2868    func_resolve_sysroot_result=$lt_sysroot$func_stripname_result
2869    ;;
2870  esac
2871}
2872
2873# func_replace_sysroot PATH
2874# If PATH begins with the sysroot, replace it with = and
2875# store the result into func_replace_sysroot_result.
2876func_replace_sysroot ()
2877{
2878  case $lt_sysroot:$1 in
2879  ?*:"$lt_sysroot"*)
2880    func_stripname "$lt_sysroot" '' "$1"
2881    func_replace_sysroot_result='='$func_stripname_result
2882    ;;
2883  *)
2884    # Including no sysroot.
2885    func_replace_sysroot_result=$1
2886    ;;
2887  esac
2888}
2889
2890# func_infer_tag arg
2891# Infer tagged configuration to use if any are available and
2892# if one wasn't chosen via the "--tag" command line option.
2893# Only attempt this if the compiler in the base compile
2894# command doesn't match the default compiler.
2895# arg is usually of the form 'gcc ...'
2896func_infer_tag ()
2897{
2898    $debug_cmd
2899
2900    if test -n "$available_tags" && test -z "$tagname"; then
2901      CC_quoted=
2902      for arg in $CC; do
2903	func_append_quoted CC_quoted "$arg"
2904      done
2905      CC_expanded=`func_echo_all $CC`
2906      CC_quoted_expanded=`func_echo_all $CC_quoted`
2907      case $@ in
2908      # Blanks in the command may have been stripped by the calling shell,
2909      # but not from the CC environment variable when configure was run.
2910      " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
2911      " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;;
2912      # Blanks at the start of $base_compile will cause this to fail
2913      # if we don't check for them as well.
2914      *)
2915	for z in $available_tags; do
2916	  if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
2917	    # Evaluate the configuration.
2918	    eval "`$SED -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
2919	    CC_quoted=
2920	    for arg in $CC; do
2921	      # Double-quote args containing other shell metacharacters.
2922	      func_append_quoted CC_quoted "$arg"
2923	    done
2924	    CC_expanded=`func_echo_all $CC`
2925	    CC_quoted_expanded=`func_echo_all $CC_quoted`
2926	    case "$@ " in
2927	    " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
2928	    " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*)
2929	      # The compiler in the base compile command matches
2930	      # the one in the tagged configuration.
2931	      # Assume this is the tagged configuration we want.
2932	      tagname=$z
2933	      break
2934	      ;;
2935	    esac
2936	  fi
2937	done
2938	# If $tagname still isn't set, then no tagged configuration
2939	# was found and let the user know that the "--tag" command
2940	# line option must be used.
2941	if test -z "$tagname"; then
2942	  func_echo "unable to infer tagged configuration"
2943	  func_fatal_error "specify a tag with '--tag'"
2944#	else
2945#	  func_verbose "using $tagname tagged configuration"
2946	fi
2947	;;
2948      esac
2949    fi
2950}
2951
2952
2953
2954# func_write_libtool_object output_name pic_name nonpic_name
2955# Create a libtool object file (analogous to a ".la" file),
2956# but don't create it if we're doing a dry run.
2957func_write_libtool_object ()
2958{
2959    write_libobj=$1
2960    if test yes = "$build_libtool_libs"; then
2961      write_lobj=\'$2\'
2962    else
2963      write_lobj=none
2964    fi
2965
2966    if test yes = "$build_old_libs"; then
2967      write_oldobj=\'$3\'
2968    else
2969      write_oldobj=none
2970    fi
2971
2972    $opt_dry_run || {
2973      cat >${write_libobj}T <<EOF
2974# $write_libobj - a libtool object file
2975# Generated by $PROGRAM (GNU $PACKAGE) $VERSION
2976#
2977# Please DO NOT delete this file!
2978# It is necessary for linking the library.
2979
2980# Name of the PIC object.
2981pic_object=$write_lobj
2982
2983# Name of the non-PIC object
2984non_pic_object=$write_oldobj
2985
2986EOF
2987      $MV "${write_libobj}T" "$write_libobj"
2988    }
2989}
2990
2991
2992##################################################
2993# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS #
2994##################################################
2995
2996# func_convert_core_file_wine_to_w32 ARG
2997# Helper function used by file name conversion functions when $build is *nix,
2998# and $host is mingw, cygwin, or some other w32 environment. Relies on a
2999# correctly configured wine environment available, with the winepath program
3000# in $build's $PATH.
3001#
3002# ARG is the $build file name to be converted to w32 format.
3003# Result is available in $func_convert_core_file_wine_to_w32_result, and will
3004# be empty on error (or when ARG is empty)
3005func_convert_core_file_wine_to_w32 ()
3006{
3007  $debug_cmd
3008
3009  func_convert_core_file_wine_to_w32_result=$1
3010  if test -n "$1"; then
3011    # Unfortunately, winepath does not exit with a non-zero error code, so we
3012    # are forced to check the contents of stdout. On the other hand, if the
3013    # command is not found, the shell will set an exit code of 127 and print
3014    # *an error message* to stdout. So we must check for both error code of
3015    # zero AND non-empty stdout, which explains the odd construction:
3016    func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null`
3017    if test "$?" -eq 0 && test -n "$func_convert_core_file_wine_to_w32_tmp"; then
3018      func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" |
3019        $SED -e "$sed_naive_backslashify"`
3020    else
3021      func_convert_core_file_wine_to_w32_result=
3022    fi
3023  fi
3024}
3025# end: func_convert_core_file_wine_to_w32
3026
3027
3028# func_convert_core_path_wine_to_w32 ARG
3029# Helper function used by path conversion functions when $build is *nix, and
3030# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly
3031# configured wine environment available, with the winepath program in $build's
3032# $PATH. Assumes ARG has no leading or trailing path separator characters.
3033#
3034# ARG is path to be converted from $build format to win32.
3035# Result is available in $func_convert_core_path_wine_to_w32_result.
3036# Unconvertible file (directory) names in ARG are skipped; if no directory names
3037# are convertible, then the result may be empty.
3038func_convert_core_path_wine_to_w32 ()
3039{
3040  $debug_cmd
3041
3042  # unfortunately, winepath doesn't convert paths, only file names
3043  func_convert_core_path_wine_to_w32_result=
3044  if test -n "$1"; then
3045    oldIFS=$IFS
3046    IFS=:
3047    for func_convert_core_path_wine_to_w32_f in $1; do
3048      IFS=$oldIFS
3049      func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f"
3050      if test -n "$func_convert_core_file_wine_to_w32_result"; then
3051        if test -z "$func_convert_core_path_wine_to_w32_result"; then
3052          func_convert_core_path_wine_to_w32_result=$func_convert_core_file_wine_to_w32_result
3053        else
3054          func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result"
3055        fi
3056      fi
3057    done
3058    IFS=$oldIFS
3059  fi
3060}
3061# end: func_convert_core_path_wine_to_w32
3062
3063
3064# func_cygpath ARGS...
3065# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when
3066# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2)
3067# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or
3068# (2), returns the Cygwin file name or path in func_cygpath_result (input
3069# file name or path is assumed to be in w32 format, as previously converted
3070# from $build's *nix or MSYS format). In case (3), returns the w32 file name
3071# or path in func_cygpath_result (input file name or path is assumed to be in
3072# Cygwin format). Returns an empty string on error.
3073#
3074# ARGS are passed to cygpath, with the last one being the file name or path to
3075# be converted.
3076#
3077# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH
3078# environment variable; do not put it in $PATH.
3079func_cygpath ()
3080{
3081  $debug_cmd
3082
3083  if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then
3084    func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null`
3085    if test "$?" -ne 0; then
3086      # on failure, ensure result is empty
3087      func_cygpath_result=
3088    fi
3089  else
3090    func_cygpath_result=
3091    func_error "LT_CYGPATH is empty or specifies non-existent file: '$LT_CYGPATH'"
3092  fi
3093}
3094#end: func_cygpath
3095
3096
3097# func_convert_core_msys_to_w32 ARG
3098# Convert file name or path ARG from MSYS format to w32 format.  Return
3099# result in func_convert_core_msys_to_w32_result.
3100func_convert_core_msys_to_w32 ()
3101{
3102  $debug_cmd
3103
3104  # awkward: cmd appends spaces to result
3105  func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null |
3106    $SED -e 's/[ ]*$//' -e "$sed_naive_backslashify"`
3107}
3108#end: func_convert_core_msys_to_w32
3109
3110
3111# func_convert_file_check ARG1 ARG2
3112# Verify that ARG1 (a file name in $build format) was converted to $host
3113# format in ARG2. Otherwise, emit an error message, but continue (resetting
3114# func_to_host_file_result to ARG1).
3115func_convert_file_check ()
3116{
3117  $debug_cmd
3118
3119  if test -z "$2" && test -n "$1"; then
3120    func_error "Could not determine host file name corresponding to"
3121    func_error "  '$1'"
3122    func_error "Continuing, but uninstalled executables may not work."
3123    # Fallback:
3124    func_to_host_file_result=$1
3125  fi
3126}
3127# end func_convert_file_check
3128
3129
3130# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH
3131# Verify that FROM_PATH (a path in $build format) was converted to $host
3132# format in TO_PATH. Otherwise, emit an error message, but continue, resetting
3133# func_to_host_file_result to a simplistic fallback value (see below).
3134func_convert_path_check ()
3135{
3136  $debug_cmd
3137
3138  if test -z "$4" && test -n "$3"; then
3139    func_error "Could not determine the host path corresponding to"
3140    func_error "  '$3'"
3141    func_error "Continuing, but uninstalled executables may not work."
3142    # Fallback.  This is a deliberately simplistic "conversion" and
3143    # should not be "improved".  See libtool.info.
3144    if test "x$1" != "x$2"; then
3145      lt_replace_pathsep_chars="s|$1|$2|g"
3146      func_to_host_path_result=`echo "$3" |
3147        $SED -e "$lt_replace_pathsep_chars"`
3148    else
3149      func_to_host_path_result=$3
3150    fi
3151  fi
3152}
3153# end func_convert_path_check
3154
3155
3156# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG
3157# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT
3158# and appending REPL if ORIG matches BACKPAT.
3159func_convert_path_front_back_pathsep ()
3160{
3161  $debug_cmd
3162
3163  case $4 in
3164  $1 ) func_to_host_path_result=$3$func_to_host_path_result
3165    ;;
3166  esac
3167  case $4 in
3168  $2 ) func_append func_to_host_path_result "$3"
3169    ;;
3170  esac
3171}
3172# end func_convert_path_front_back_pathsep
3173
3174
3175##################################################
3176# $build to $host FILE NAME CONVERSION FUNCTIONS #
3177##################################################
3178# invoked via '$to_host_file_cmd ARG'
3179#
3180# In each case, ARG is the path to be converted from $build to $host format.
3181# Result will be available in $func_to_host_file_result.
3182
3183
3184# func_to_host_file ARG
3185# Converts the file name ARG from $build format to $host format. Return result
3186# in func_to_host_file_result.
3187func_to_host_file ()
3188{
3189  $debug_cmd
3190
3191  $to_host_file_cmd "$1"
3192}
3193# end func_to_host_file
3194
3195
3196# func_to_tool_file ARG LAZY
3197# converts the file name ARG from $build format to toolchain format. Return
3198# result in func_to_tool_file_result.  If the conversion in use is listed
3199# in (the comma separated) LAZY, no conversion takes place.
3200func_to_tool_file ()
3201{
3202  $debug_cmd
3203
3204  case ,$2, in
3205    *,"$to_tool_file_cmd",*)
3206      func_to_tool_file_result=$1
3207      ;;
3208    *)
3209      $to_tool_file_cmd "$1"
3210      func_to_tool_file_result=$func_to_host_file_result
3211      ;;
3212  esac
3213}
3214# end func_to_tool_file
3215
3216
3217# func_convert_file_noop ARG
3218# Copy ARG to func_to_host_file_result.
3219func_convert_file_noop ()
3220{
3221  func_to_host_file_result=$1
3222}
3223# end func_convert_file_noop
3224
3225
3226# func_convert_file_msys_to_w32 ARG
3227# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic
3228# conversion to w32 is not available inside the cwrapper.  Returns result in
3229# func_to_host_file_result.
3230func_convert_file_msys_to_w32 ()
3231{
3232  $debug_cmd
3233
3234  func_to_host_file_result=$1
3235  if test -n "$1"; then
3236    func_convert_core_msys_to_w32 "$1"
3237    func_to_host_file_result=$func_convert_core_msys_to_w32_result
3238  fi
3239  func_convert_file_check "$1" "$func_to_host_file_result"
3240}
3241# end func_convert_file_msys_to_w32
3242
3243
3244# func_convert_file_cygwin_to_w32 ARG
3245# Convert file name ARG from Cygwin to w32 format.  Returns result in
3246# func_to_host_file_result.
3247func_convert_file_cygwin_to_w32 ()
3248{
3249  $debug_cmd
3250
3251  func_to_host_file_result=$1
3252  if test -n "$1"; then
3253    # because $build is cygwin, we call "the" cygpath in $PATH; no need to use
3254    # LT_CYGPATH in this case.
3255    func_to_host_file_result=`cygpath -m "$1"`
3256  fi
3257  func_convert_file_check "$1" "$func_to_host_file_result"
3258}
3259# end func_convert_file_cygwin_to_w32
3260
3261
3262# func_convert_file_nix_to_w32 ARG
3263# Convert file name ARG from *nix to w32 format.  Requires a wine environment
3264# and a working winepath. Returns result in func_to_host_file_result.
3265func_convert_file_nix_to_w32 ()
3266{
3267  $debug_cmd
3268
3269  func_to_host_file_result=$1
3270  if test -n "$1"; then
3271    func_convert_core_file_wine_to_w32 "$1"
3272    func_to_host_file_result=$func_convert_core_file_wine_to_w32_result
3273  fi
3274  func_convert_file_check "$1" "$func_to_host_file_result"
3275}
3276# end func_convert_file_nix_to_w32
3277
3278
3279# func_convert_file_msys_to_cygwin ARG
3280# Convert file name ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
3281# Returns result in func_to_host_file_result.
3282func_convert_file_msys_to_cygwin ()
3283{
3284  $debug_cmd
3285
3286  func_to_host_file_result=$1
3287  if test -n "$1"; then
3288    func_convert_core_msys_to_w32 "$1"
3289    func_cygpath -u "$func_convert_core_msys_to_w32_result"
3290    func_to_host_file_result=$func_cygpath_result
3291  fi
3292  func_convert_file_check "$1" "$func_to_host_file_result"
3293}
3294# end func_convert_file_msys_to_cygwin
3295
3296
3297# func_convert_file_nix_to_cygwin ARG
3298# Convert file name ARG from *nix to Cygwin format.  Requires Cygwin installed
3299# in a wine environment, working winepath, and LT_CYGPATH set.  Returns result
3300# in func_to_host_file_result.
3301func_convert_file_nix_to_cygwin ()
3302{
3303  $debug_cmd
3304
3305  func_to_host_file_result=$1
3306  if test -n "$1"; then
3307    # convert from *nix to w32, then use cygpath to convert from w32 to cygwin.
3308    func_convert_core_file_wine_to_w32 "$1"
3309    func_cygpath -u "$func_convert_core_file_wine_to_w32_result"
3310    func_to_host_file_result=$func_cygpath_result
3311  fi
3312  func_convert_file_check "$1" "$func_to_host_file_result"
3313}
3314# end func_convert_file_nix_to_cygwin
3315
3316
3317#############################################
3318# $build to $host PATH CONVERSION FUNCTIONS #
3319#############################################
3320# invoked via '$to_host_path_cmd ARG'
3321#
3322# In each case, ARG is the path to be converted from $build to $host format.
3323# The result will be available in $func_to_host_path_result.
3324#
3325# Path separators are also converted from $build format to $host format.  If
3326# ARG begins or ends with a path separator character, it is preserved (but
3327# converted to $host format) on output.
3328#
3329# All path conversion functions are named using the following convention:
3330#   file name conversion function    : func_convert_file_X_to_Y ()
3331#   path conversion function         : func_convert_path_X_to_Y ()
3332# where, for any given $build/$host combination the 'X_to_Y' value is the
3333# same.  If conversion functions are added for new $build/$host combinations,
3334# the two new functions must follow this pattern, or func_init_to_host_path_cmd
3335# will break.
3336
3337
3338# func_init_to_host_path_cmd
3339# Ensures that function "pointer" variable $to_host_path_cmd is set to the
3340# appropriate value, based on the value of $to_host_file_cmd.
3341to_host_path_cmd=
3342func_init_to_host_path_cmd ()
3343{
3344  $debug_cmd
3345
3346  if test -z "$to_host_path_cmd"; then
3347    func_stripname 'func_convert_file_' '' "$to_host_file_cmd"
3348    to_host_path_cmd=func_convert_path_$func_stripname_result
3349  fi
3350}
3351
3352
3353# func_to_host_path ARG
3354# Converts the path ARG from $build format to $host format. Return result
3355# in func_to_host_path_result.
3356func_to_host_path ()
3357{
3358  $debug_cmd
3359
3360  func_init_to_host_path_cmd
3361  $to_host_path_cmd "$1"
3362}
3363# end func_to_host_path
3364
3365
3366# func_convert_path_noop ARG
3367# Copy ARG to func_to_host_path_result.
3368func_convert_path_noop ()
3369{
3370  func_to_host_path_result=$1
3371}
3372# end func_convert_path_noop
3373
3374
3375# func_convert_path_msys_to_w32 ARG
3376# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic
3377# conversion to w32 is not available inside the cwrapper.  Returns result in
3378# func_to_host_path_result.
3379func_convert_path_msys_to_w32 ()
3380{
3381  $debug_cmd
3382
3383  func_to_host_path_result=$1
3384  if test -n "$1"; then
3385    # Remove leading and trailing path separator characters from ARG.  MSYS
3386    # behavior is inconsistent here; cygpath turns them into '.;' and ';.';
3387    # and winepath ignores them completely.
3388    func_stripname : : "$1"
3389    func_to_host_path_tmp1=$func_stripname_result
3390    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
3391    func_to_host_path_result=$func_convert_core_msys_to_w32_result
3392    func_convert_path_check : ";" \
3393      "$func_to_host_path_tmp1" "$func_to_host_path_result"
3394    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
3395  fi
3396}
3397# end func_convert_path_msys_to_w32
3398
3399
3400# func_convert_path_cygwin_to_w32 ARG
3401# Convert path ARG from Cygwin to w32 format.  Returns result in
3402# func_to_host_file_result.
3403func_convert_path_cygwin_to_w32 ()
3404{
3405  $debug_cmd
3406
3407  func_to_host_path_result=$1
3408  if test -n "$1"; then
3409    # See func_convert_path_msys_to_w32:
3410    func_stripname : : "$1"
3411    func_to_host_path_tmp1=$func_stripname_result
3412    func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"`
3413    func_convert_path_check : ";" \
3414      "$func_to_host_path_tmp1" "$func_to_host_path_result"
3415    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
3416  fi
3417}
3418# end func_convert_path_cygwin_to_w32
3419
3420
3421# func_convert_path_nix_to_w32 ARG
3422# Convert path ARG from *nix to w32 format.  Requires a wine environment and
3423# a working winepath.  Returns result in func_to_host_file_result.
3424func_convert_path_nix_to_w32 ()
3425{
3426  $debug_cmd
3427
3428  func_to_host_path_result=$1
3429  if test -n "$1"; then
3430    # See func_convert_path_msys_to_w32:
3431    func_stripname : : "$1"
3432    func_to_host_path_tmp1=$func_stripname_result
3433    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
3434    func_to_host_path_result=$func_convert_core_path_wine_to_w32_result
3435    func_convert_path_check : ";" \
3436      "$func_to_host_path_tmp1" "$func_to_host_path_result"
3437    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
3438  fi
3439}
3440# end func_convert_path_nix_to_w32
3441
3442
3443# func_convert_path_msys_to_cygwin ARG
3444# Convert path ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
3445# Returns result in func_to_host_file_result.
3446func_convert_path_msys_to_cygwin ()
3447{
3448  $debug_cmd
3449
3450  func_to_host_path_result=$1
3451  if test -n "$1"; then
3452    # See func_convert_path_msys_to_w32:
3453    func_stripname : : "$1"
3454    func_to_host_path_tmp1=$func_stripname_result
3455    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
3456    func_cygpath -u -p "$func_convert_core_msys_to_w32_result"
3457    func_to_host_path_result=$func_cygpath_result
3458    func_convert_path_check : : \
3459      "$func_to_host_path_tmp1" "$func_to_host_path_result"
3460    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
3461  fi
3462}
3463# end func_convert_path_msys_to_cygwin
3464
3465
3466# func_convert_path_nix_to_cygwin ARG
3467# Convert path ARG from *nix to Cygwin format.  Requires Cygwin installed in a
3468# a wine environment, working winepath, and LT_CYGPATH set.  Returns result in
3469# func_to_host_file_result.
3470func_convert_path_nix_to_cygwin ()
3471{
3472  $debug_cmd
3473
3474  func_to_host_path_result=$1
3475  if test -n "$1"; then
3476    # Remove leading and trailing path separator characters from
3477    # ARG. msys behavior is inconsistent here, cygpath turns them
3478    # into '.;' and ';.', and winepath ignores them completely.
3479    func_stripname : : "$1"
3480    func_to_host_path_tmp1=$func_stripname_result
3481    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
3482    func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result"
3483    func_to_host_path_result=$func_cygpath_result
3484    func_convert_path_check : : \
3485      "$func_to_host_path_tmp1" "$func_to_host_path_result"
3486    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
3487  fi
3488}
3489# end func_convert_path_nix_to_cygwin
3490
3491
3492# func_dll_def_p FILE
3493# True iff FILE is a Windows DLL '.def' file.
3494# Keep in sync with _LT_DLL_DEF_P in libtool.m4
3495func_dll_def_p ()
3496{
3497  $debug_cmd
3498
3499  func_dll_def_p_tmp=`$SED -n \
3500    -e 's/^[	 ]*//' \
3501    -e '/^\(;.*\)*$/d' \
3502    -e 's/^\(EXPORTS\|LIBRARY\)\([	 ].*\)*$/DEF/p' \
3503    -e q \
3504    "$1"`
3505  test DEF = "$func_dll_def_p_tmp"
3506}
3507
3508
3509# func_mode_compile arg...
3510func_mode_compile ()
3511{
3512    $debug_cmd
3513
3514    # Get the compilation command and the source file.
3515    base_compile=
3516    srcfile=$nonopt  #  always keep a non-empty value in "srcfile"
3517    suppress_opt=yes
3518    suppress_output=
3519    arg_mode=normal
3520    libobj=
3521    later=
3522    pie_flag=
3523
3524    for arg
3525    do
3526      case $arg_mode in
3527      arg  )
3528	# do not "continue".  Instead, add this to base_compile
3529	lastarg=$arg
3530	arg_mode=normal
3531	;;
3532
3533      target )
3534	libobj=$arg
3535	arg_mode=normal
3536	continue
3537	;;
3538
3539      normal )
3540	# Accept any command-line options.
3541	case $arg in
3542	-o)
3543	  test -n "$libobj" && \
3544	    func_fatal_error "you cannot specify '-o' more than once"
3545	  arg_mode=target
3546	  continue
3547	  ;;
3548
3549	-pie | -fpie | -fPIE)
3550          func_append pie_flag " $arg"
3551	  continue
3552	  ;;
3553
3554	-shared | -static | -prefer-pic | -prefer-non-pic)
3555	  func_append later " $arg"
3556	  continue
3557	  ;;
3558
3559	-no-suppress)
3560	  suppress_opt=no
3561	  continue
3562	  ;;
3563
3564	-Xcompiler)
3565	  arg_mode=arg  #  the next one goes into the "base_compile" arg list
3566	  continue      #  The current "srcfile" will either be retained or
3567	  ;;            #  replaced later.  I would guess that would be a bug.
3568
3569	-Wc,*)
3570	  func_stripname '-Wc,' '' "$arg"
3571	  args=$func_stripname_result
3572	  lastarg=
3573	  save_ifs=$IFS; IFS=,
3574	  for arg in $args; do
3575	    IFS=$save_ifs
3576	    func_append_quoted lastarg "$arg"
3577	  done
3578	  IFS=$save_ifs
3579	  func_stripname ' ' '' "$lastarg"
3580	  lastarg=$func_stripname_result
3581
3582	  # Add the arguments to base_compile.
3583	  func_append base_compile " $lastarg"
3584	  continue
3585	  ;;
3586
3587	*)
3588	  # Accept the current argument as the source file.
3589	  # The previous "srcfile" becomes the current argument.
3590	  #
3591	  lastarg=$srcfile
3592	  srcfile=$arg
3593	  ;;
3594	esac  #  case $arg
3595	;;
3596      esac    #  case $arg_mode
3597
3598      # Aesthetically quote the previous argument.
3599      func_append_quoted base_compile "$lastarg"
3600    done # for arg
3601
3602    case $arg_mode in
3603    arg)
3604      func_fatal_error "you must specify an argument for -Xcompile"
3605      ;;
3606    target)
3607      func_fatal_error "you must specify a target with '-o'"
3608      ;;
3609    *)
3610      # Get the name of the library object.
3611      test -z "$libobj" && {
3612	func_basename "$srcfile"
3613	libobj=$func_basename_result
3614      }
3615      ;;
3616    esac
3617
3618    # Recognize several different file suffixes.
3619    # If the user specifies -o file.o, it is replaced with file.lo
3620    case $libobj in
3621    *.[cCFSifmso] | \
3622    *.ada | *.adb | *.ads | *.asm | \
3623    *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
3624    *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup)
3625      func_xform "$libobj"
3626      libobj=$func_xform_result
3627      ;;
3628    esac
3629
3630    case $libobj in
3631    *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
3632    *)
3633      func_fatal_error "cannot determine name of library object from '$libobj'"
3634      ;;
3635    esac
3636
3637    func_infer_tag $base_compile
3638
3639    for arg in $later; do
3640      case $arg in
3641      -shared)
3642	test yes = "$build_libtool_libs" \
3643	  || func_fatal_configuration "cannot build a shared library"
3644	build_old_libs=no
3645	continue
3646	;;
3647
3648      -static)
3649	build_libtool_libs=no
3650	build_old_libs=yes
3651	continue
3652	;;
3653
3654      -prefer-pic)
3655	pic_mode=yes
3656	continue
3657	;;
3658
3659      -prefer-non-pic)
3660	pic_mode=no
3661	continue
3662	;;
3663      esac
3664    done
3665
3666    func_quote_arg pretty "$libobj"
3667    test "X$libobj" != "X$func_quote_arg_result" \
3668      && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"'	 &()|`$[]' \
3669      && func_warning "libobj name '$libobj' may not contain shell special characters."
3670    func_dirname_and_basename "$obj" "/" ""
3671    objname=$func_basename_result
3672    xdir=$func_dirname_result
3673    lobj=$xdir$objdir/$objname
3674
3675    test -z "$base_compile" && \
3676      func_fatal_help "you must specify a compilation command"
3677
3678    # Delete any leftover library objects.
3679    if test yes = "$build_old_libs"; then
3680      removelist="$obj $lobj $libobj ${libobj}T"
3681    else
3682      removelist="$lobj $libobj ${libobj}T"
3683    fi
3684
3685    # On Cygwin there's no "real" PIC flag so we must build both object types
3686    case $host_os in
3687    cygwin* | mingw* | pw32* | os2* | cegcc*)
3688      pic_mode=default
3689      ;;
3690    esac
3691    if test no = "$pic_mode" && test pass_all != "$deplibs_check_method"; then
3692      # non-PIC code in shared libraries is not supported
3693      pic_mode=default
3694    fi
3695
3696    # Calculate the filename of the output object if compiler does
3697    # not support -o with -c
3698    if test no = "$compiler_c_o"; then
3699      output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.$objext
3700      lockfile=$output_obj.lock
3701    else
3702      output_obj=
3703      need_locks=no
3704      lockfile=
3705    fi
3706
3707    # Lock this critical section if it is needed
3708    # We use this script file to make the link, it avoids creating a new file
3709    if test yes = "$need_locks"; then
3710      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
3711	func_echo "Waiting for $lockfile to be removed"
3712	sleep 2
3713      done
3714    elif test warn = "$need_locks"; then
3715      if test -f "$lockfile"; then
3716	$ECHO "\
3717*** ERROR, $lockfile exists and contains:
3718`cat $lockfile 2>/dev/null`
3719
3720This indicates that another process is trying to use the same
3721temporary object file, and libtool could not work around it because
3722your compiler does not support '-c' and '-o' together.  If you
3723repeat this compilation, it may succeed, by chance, but you had better
3724avoid parallel builds (make -j) in this platform, or get a better
3725compiler."
3726
3727	$opt_dry_run || $RM $removelist
3728	exit $EXIT_FAILURE
3729      fi
3730      func_append removelist " $output_obj"
3731      $ECHO "$srcfile" > "$lockfile"
3732    fi
3733
3734    $opt_dry_run || $RM $removelist
3735    func_append removelist " $lockfile"
3736    trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
3737
3738    func_to_tool_file "$srcfile" func_convert_file_msys_to_w32
3739    srcfile=$func_to_tool_file_result
3740    func_quote_arg pretty "$srcfile"
3741    qsrcfile=$func_quote_arg_result
3742
3743    # Only build a PIC object if we are building libtool libraries.
3744    if test yes = "$build_libtool_libs"; then
3745      # Without this assignment, base_compile gets emptied.
3746      fbsd_hideous_sh_bug=$base_compile
3747
3748      if test no != "$pic_mode"; then
3749	command="$base_compile $qsrcfile $pic_flag"
3750      else
3751	# Don't build PIC code
3752	command="$base_compile $qsrcfile"
3753      fi
3754
3755      func_mkdir_p "$xdir$objdir"
3756
3757      if test -z "$output_obj"; then
3758	# Place PIC objects in $objdir
3759	func_append command " -o $lobj"
3760      fi
3761
3762      func_show_eval_locale "$command"	\
3763          'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
3764
3765      if test warn = "$need_locks" &&
3766	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
3767	$ECHO "\
3768*** ERROR, $lockfile contains:
3769`cat $lockfile 2>/dev/null`
3770
3771but it should contain:
3772$srcfile
3773
3774This indicates that another process is trying to use the same
3775temporary object file, and libtool could not work around it because
3776your compiler does not support '-c' and '-o' together.  If you
3777repeat this compilation, it may succeed, by chance, but you had better
3778avoid parallel builds (make -j) in this platform, or get a better
3779compiler."
3780
3781	$opt_dry_run || $RM $removelist
3782	exit $EXIT_FAILURE
3783      fi
3784
3785      # Just move the object if needed, then go on to compile the next one
3786      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
3787	func_show_eval '$MV "$output_obj" "$lobj"' \
3788	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
3789      fi
3790
3791      # Allow error messages only from the first compilation.
3792      if test yes = "$suppress_opt"; then
3793	suppress_output=' >/dev/null 2>&1'
3794      fi
3795    fi
3796
3797    # Only build a position-dependent object if we build old libraries.
3798    if test yes = "$build_old_libs"; then
3799      if test yes != "$pic_mode"; then
3800	# Don't build PIC code
3801	command="$base_compile $qsrcfile$pie_flag"
3802      else
3803	command="$base_compile $qsrcfile $pic_flag"
3804      fi
3805      if test yes = "$compiler_c_o"; then
3806	func_append command " -o $obj"
3807      fi
3808
3809      # Suppress compiler output if we already did a PIC compilation.
3810      func_append command "$suppress_output"
3811      func_show_eval_locale "$command" \
3812        '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
3813
3814      if test warn = "$need_locks" &&
3815	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
3816	$ECHO "\
3817*** ERROR, $lockfile contains:
3818`cat $lockfile 2>/dev/null`
3819
3820but it should contain:
3821$srcfile
3822
3823This indicates that another process is trying to use the same
3824temporary object file, and libtool could not work around it because
3825your compiler does not support '-c' and '-o' together.  If you
3826repeat this compilation, it may succeed, by chance, but you had better
3827avoid parallel builds (make -j) in this platform, or get a better
3828compiler."
3829
3830	$opt_dry_run || $RM $removelist
3831	exit $EXIT_FAILURE
3832      fi
3833
3834      # Just move the object if needed
3835      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
3836	func_show_eval '$MV "$output_obj" "$obj"' \
3837	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
3838      fi
3839    fi
3840
3841    $opt_dry_run || {
3842      func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
3843
3844      # Unlock the critical section if it was locked
3845      if test no != "$need_locks"; then
3846	removelist=$lockfile
3847        $RM "$lockfile"
3848      fi
3849    }
3850
3851    exit $EXIT_SUCCESS
3852}
3853
3854$opt_help || {
3855  test compile = "$opt_mode" && func_mode_compile ${1+"$@"}
3856}
3857
3858func_mode_help ()
3859{
3860    # We need to display help for each of the modes.
3861    case $opt_mode in
3862      "")
3863        # Generic help is extracted from the usage comments
3864        # at the start of this file.
3865        func_help
3866        ;;
3867
3868      clean)
3869        $ECHO \
3870"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
3871
3872Remove files from the build directory.
3873
3874RM is the name of the program to use to delete files associated with each FILE
3875(typically '/bin/rm').  RM-OPTIONS are options (such as '-f') to be passed
3876to RM.
3877
3878If FILE is a libtool library, object or program, all the files associated
3879with it are deleted. Otherwise, only FILE itself is deleted using RM."
3880        ;;
3881
3882      compile)
3883      $ECHO \
3884"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
3885
3886Compile a source file into a libtool library object.
3887
3888This mode accepts the following additional options:
3889
3890  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
3891  -no-suppress      do not suppress compiler output for multiple passes
3892  -prefer-pic       try to build PIC objects only
3893  -prefer-non-pic   try to build non-PIC objects only
3894  -shared           do not build a '.o' file suitable for static linking
3895  -static           only build a '.o' file suitable for static linking
3896  -Wc,FLAG
3897  -Xcompiler FLAG   pass FLAG directly to the compiler
3898
3899COMPILE-COMMAND is a command to be used in creating a 'standard' object file
3900from the given SOURCEFILE.
3901
3902The output file name is determined by removing the directory component from
3903SOURCEFILE, then substituting the C source code suffix '.c' with the
3904library object suffix, '.lo'."
3905        ;;
3906
3907      execute)
3908        $ECHO \
3909"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
3910
3911Automatically set library path, then run a program.
3912
3913This mode accepts the following additional options:
3914
3915  -dlopen FILE      add the directory containing FILE to the library path
3916
3917This mode sets the library path environment variable according to '-dlopen'
3918flags.
3919
3920If any of the ARGS are libtool executable wrappers, then they are translated
3921into their corresponding uninstalled binary, and any of their required library
3922directories are added to the library path.
3923
3924Then, COMMAND is executed, with ARGS as arguments."
3925        ;;
3926
3927      finish)
3928        $ECHO \
3929"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
3930
3931Complete the installation of libtool libraries.
3932
3933Each LIBDIR is a directory that contains libtool libraries.
3934
3935The commands that this mode executes may require superuser privileges.  Use
3936the '--dry-run' option if you just want to see what would be executed."
3937        ;;
3938
3939      install)
3940        $ECHO \
3941"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
3942
3943Install executables or libraries.
3944
3945INSTALL-COMMAND is the installation command.  The first component should be
3946either the 'install' or 'cp' program.
3947
3948The following components of INSTALL-COMMAND are treated specially:
3949
3950  -inst-prefix-dir PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
3951
3952The rest of the components are interpreted as arguments to that command (only
3953BSD-compatible install options are recognized)."
3954        ;;
3955
3956      link)
3957        $ECHO \
3958"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
3959
3960Link object files or libraries together to form another library, or to
3961create an executable program.
3962
3963LINK-COMMAND is a command using the C compiler that you would use to create
3964a program from several object files.
3965
3966The following components of LINK-COMMAND are treated specially:
3967
3968  -all-static       do not do any dynamic linking at all
3969  -avoid-version    do not add a version suffix if possible
3970  -bindir BINDIR    specify path to binaries directory (for systems where
3971                    libraries must be found in the PATH setting at runtime)
3972  -dlopen FILE      '-dlpreopen' FILE if it cannot be dlopened at runtime
3973  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
3974  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
3975  -export-symbols SYMFILE
3976                    try to export only the symbols listed in SYMFILE
3977  -export-symbols-regex REGEX
3978                    try to export only the symbols matching REGEX
3979  -LLIBDIR          search LIBDIR for required installed libraries
3980  -lNAME            OUTPUT-FILE requires the installed library libNAME
3981  -module           build a library that can dlopened
3982  -no-fast-install  disable the fast-install mode
3983  -no-install       link a not-installable executable
3984  -no-undefined     declare that a library does not refer to external symbols
3985  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
3986  -objectlist FILE  use a list of object files found in FILE to specify objects
3987  -os2dllname NAME  force a short DLL name on OS/2 (no effect on other OSes)
3988  -precious-files-regex REGEX
3989                    don't remove output files matching REGEX
3990  -release RELEASE  specify package release information
3991  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
3992  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
3993  -shared           only do dynamic linking of libtool libraries
3994  -shrext SUFFIX    override the standard shared library file extension
3995  -static           do not do any dynamic linking of uninstalled libtool libraries
3996  -static-libtool-libs
3997                    do not do any dynamic linking of libtool libraries
3998  -version-info CURRENT[:REVISION[:AGE]]
3999                    specify library version info [each variable defaults to 0]
4000  -weak LIBNAME     declare that the target provides the LIBNAME interface
4001  -Wc,FLAG
4002  -Xcompiler FLAG   pass linker-specific FLAG directly to the compiler
4003  -Wa,FLAG
4004  -Xassembler FLAG  pass linker-specific FLAG directly to the assembler
4005  -Wl,FLAG
4006  -Xlinker FLAG     pass linker-specific FLAG directly to the linker
4007  -XCClinker FLAG   pass link-specific FLAG to the compiler driver (CC)
4008
4009All other options (arguments beginning with '-') are ignored.
4010
4011Every other argument is treated as a filename.  Files ending in '.la' are
4012treated as uninstalled libtool libraries, other files are standard or library
4013object files.
4014
4015If the OUTPUT-FILE ends in '.la', then a libtool library is created,
4016only library objects ('.lo' files) may be specified, and '-rpath' is
4017required, except when creating a convenience library.
4018
4019If OUTPUT-FILE ends in '.a' or '.lib', then a standard library is created
4020using 'ar' and 'ranlib', or on Windows using 'lib'.
4021
4022If OUTPUT-FILE ends in '.lo' or '.$objext', then a reloadable object file
4023is created, otherwise an executable program is created."
4024        ;;
4025
4026      uninstall)
4027        $ECHO \
4028"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
4029
4030Remove libraries from an installation directory.
4031
4032RM is the name of the program to use to delete files associated with each FILE
4033(typically '/bin/rm').  RM-OPTIONS are options (such as '-f') to be passed
4034to RM.
4035
4036If FILE is a libtool library, all the files associated with it are deleted.
4037Otherwise, only FILE itself is deleted using RM."
4038        ;;
4039
4040      *)
4041        func_fatal_help "invalid operation mode '$opt_mode'"
4042        ;;
4043    esac
4044
4045    echo
4046    $ECHO "Try '$progname --help' for more information about other modes."
4047}
4048
4049# Now that we've collected a possible --mode arg, show help if necessary
4050if $opt_help; then
4051  if test : = "$opt_help"; then
4052    func_mode_help
4053  else
4054    {
4055      func_help noexit
4056      for opt_mode in compile link execute install finish uninstall clean; do
4057	func_mode_help
4058      done
4059    } | $SED -n '1p; 2,$s/^Usage:/  or: /p'
4060    {
4061      func_help noexit
4062      for opt_mode in compile link execute install finish uninstall clean; do
4063	echo
4064	func_mode_help
4065      done
4066    } |
4067    $SED '1d
4068      /^When reporting/,/^Report/{
4069	H
4070	d
4071      }
4072      $x
4073      /information about other modes/d
4074      /more detailed .*MODE/d
4075      s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/'
4076  fi
4077  exit $?
4078fi
4079
4080
4081# func_mode_execute arg...
4082func_mode_execute ()
4083{
4084    $debug_cmd
4085
4086    # The first argument is the command name.
4087    cmd=$nonopt
4088    test -z "$cmd" && \
4089      func_fatal_help "you must specify a COMMAND"
4090
4091    # Handle -dlopen flags immediately.
4092    for file in $opt_dlopen; do
4093      test -f "$file" \
4094	|| func_fatal_help "'$file' is not a file"
4095
4096      dir=
4097      case $file in
4098      *.la)
4099	func_resolve_sysroot "$file"
4100	file=$func_resolve_sysroot_result
4101
4102	# Check to see that this really is a libtool archive.
4103	func_lalib_unsafe_p "$file" \
4104	  || func_fatal_help "'$lib' is not a valid libtool archive"
4105
4106	# Read the libtool library.
4107	dlname=
4108	library_names=
4109	func_source "$file"
4110
4111	# Skip this library if it cannot be dlopened.
4112	if test -z "$dlname"; then
4113	  # Warn if it was a shared library.
4114	  test -n "$library_names" && \
4115	    func_warning "'$file' was not linked with '-export-dynamic'"
4116	  continue
4117	fi
4118
4119	func_dirname "$file" "" "."
4120	dir=$func_dirname_result
4121
4122	if test -f "$dir/$objdir/$dlname"; then
4123	  func_append dir "/$objdir"
4124	else
4125	  if test ! -f "$dir/$dlname"; then
4126	    func_fatal_error "cannot find '$dlname' in '$dir' or '$dir/$objdir'"
4127	  fi
4128	fi
4129	;;
4130
4131      *.lo)
4132	# Just add the directory containing the .lo file.
4133	func_dirname "$file" "" "."
4134	dir=$func_dirname_result
4135	;;
4136
4137      *)
4138	func_warning "'-dlopen' is ignored for non-libtool libraries and objects"
4139	continue
4140	;;
4141      esac
4142
4143      # Get the absolute pathname.
4144      absdir=`cd "$dir" && pwd`
4145      test -n "$absdir" && dir=$absdir
4146
4147      # Now add the directory to shlibpath_var.
4148      if eval "test -z \"\$$shlibpath_var\""; then
4149	eval "$shlibpath_var=\"\$dir\""
4150      else
4151	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
4152      fi
4153    done
4154
4155    # This variable tells wrapper scripts just to set shlibpath_var
4156    # rather than running their programs.
4157    libtool_execute_magic=$magic
4158
4159    # Check if any of the arguments is a wrapper script.
4160    args=
4161    for file
4162    do
4163      case $file in
4164      -* | *.la | *.lo ) ;;
4165      *)
4166	# Do a test to see if this is really a libtool program.
4167	if func_ltwrapper_script_p "$file"; then
4168	  func_source "$file"
4169	  # Transform arg to wrapped name.
4170	  file=$progdir/$program
4171	elif func_ltwrapper_executable_p "$file"; then
4172	  func_ltwrapper_scriptname "$file"
4173	  func_source "$func_ltwrapper_scriptname_result"
4174	  # Transform arg to wrapped name.
4175	  file=$progdir/$program
4176	fi
4177	;;
4178      esac
4179      # Quote arguments (to preserve shell metacharacters).
4180      func_append_quoted args "$file"
4181    done
4182
4183    if $opt_dry_run; then
4184      # Display what would be done.
4185      if test -n "$shlibpath_var"; then
4186	eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
4187	echo "export $shlibpath_var"
4188      fi
4189      $ECHO "$cmd$args"
4190      exit $EXIT_SUCCESS
4191    else
4192      if test -n "$shlibpath_var"; then
4193	# Export the shlibpath_var.
4194	eval "export $shlibpath_var"
4195      fi
4196
4197      # Restore saved environment variables
4198      for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
4199      do
4200	eval "if test \"\${save_$lt_var+set}\" = set; then
4201                $lt_var=\$save_$lt_var; export $lt_var
4202	      else
4203		$lt_unset $lt_var
4204	      fi"
4205      done
4206
4207      # Now prepare to actually exec the command.
4208      exec_cmd=\$cmd$args
4209    fi
4210}
4211
4212test execute = "$opt_mode" && func_mode_execute ${1+"$@"}
4213
4214
4215# func_mode_finish arg...
4216func_mode_finish ()
4217{
4218    $debug_cmd
4219
4220    libs=
4221    libdirs=
4222    admincmds=
4223
4224    for opt in "$nonopt" ${1+"$@"}
4225    do
4226      if test -d "$opt"; then
4227	func_append libdirs " $opt"
4228
4229      elif test -f "$opt"; then
4230	if func_lalib_unsafe_p "$opt"; then
4231	  func_append libs " $opt"
4232	else
4233	  func_warning "'$opt' is not a valid libtool archive"
4234	fi
4235
4236      else
4237	func_fatal_error "invalid argument '$opt'"
4238      fi
4239    done
4240
4241    if test -n "$libs"; then
4242      if test -n "$lt_sysroot"; then
4243        sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"`
4244        sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;"
4245      else
4246        sysroot_cmd=
4247      fi
4248
4249      # Remove sysroot references
4250      if $opt_dry_run; then
4251        for lib in $libs; do
4252          echo "removing references to $lt_sysroot and '=' prefixes from $lib"
4253        done
4254      else
4255        tmpdir=`func_mktempdir`
4256        for lib in $libs; do
4257	  $SED -e "$sysroot_cmd s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \
4258	    > $tmpdir/tmp-la
4259	  mv -f $tmpdir/tmp-la $lib
4260	done
4261        ${RM}r "$tmpdir"
4262      fi
4263    fi
4264
4265    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
4266      for libdir in $libdirs; do
4267	if test -n "$finish_cmds"; then
4268	  # Do each command in the finish commands.
4269	  func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
4270'"$cmd"'"'
4271	fi
4272	if test -n "$finish_eval"; then
4273	  # Do the single finish_eval.
4274	  eval cmds=\"$finish_eval\"
4275	  $opt_dry_run || eval "$cmds" || func_append admincmds "
4276       $cmds"
4277	fi
4278      done
4279    fi
4280
4281    # Exit here if they wanted silent mode.
4282    $opt_quiet && exit $EXIT_SUCCESS
4283
4284    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
4285      echo "----------------------------------------------------------------------"
4286      echo "Libraries have been installed in:"
4287      for libdir in $libdirs; do
4288	$ECHO "   $libdir"
4289      done
4290      echo
4291      echo "If you ever happen to want to link against installed libraries"
4292      echo "in a given directory, LIBDIR, you must either use libtool, and"
4293      echo "specify the full pathname of the library, or use the '-LLIBDIR'"
4294      echo "flag during linking and do at least one of the following:"
4295      if test -n "$shlibpath_var"; then
4296	echo "   - add LIBDIR to the '$shlibpath_var' environment variable"
4297	echo "     during execution"
4298      fi
4299      if test -n "$runpath_var"; then
4300	echo "   - add LIBDIR to the '$runpath_var' environment variable"
4301	echo "     during linking"
4302      fi
4303      if test -n "$hardcode_libdir_flag_spec"; then
4304	libdir=LIBDIR
4305	eval flag=\"$hardcode_libdir_flag_spec\"
4306
4307	$ECHO "   - use the '$flag' linker flag"
4308      fi
4309      if test -n "$admincmds"; then
4310	$ECHO "   - have your system administrator run these commands:$admincmds"
4311      fi
4312      if test -f /etc/ld.so.conf; then
4313	echo "   - have your system administrator add LIBDIR to '/etc/ld.so.conf'"
4314      fi
4315      echo
4316
4317      echo "See any operating system documentation about shared libraries for"
4318      case $host in
4319	solaris2.[6789]|solaris2.1[0-9])
4320	  echo "more information, such as the ld(1), crle(1) and ld.so(8) manual"
4321	  echo "pages."
4322	  ;;
4323	*)
4324	  echo "more information, such as the ld(1) and ld.so(8) manual pages."
4325	  ;;
4326      esac
4327      echo "----------------------------------------------------------------------"
4328    fi
4329    exit $EXIT_SUCCESS
4330}
4331
4332test finish = "$opt_mode" && func_mode_finish ${1+"$@"}
4333
4334
4335# func_mode_install arg...
4336func_mode_install ()
4337{
4338    $debug_cmd
4339
4340    # There may be an optional sh(1) argument at the beginning of
4341    # install_prog (especially on Windows NT).
4342    if test "$SHELL" = "$nonopt" || test /bin/sh = "$nonopt" ||
4343       # Allow the use of GNU shtool's install command.
4344       case $nonopt in *shtool*) :;; *) false;; esac
4345    then
4346      # Aesthetically quote it.
4347      func_quote_arg pretty "$nonopt"
4348      install_prog="$func_quote_arg_result "
4349      arg=$1
4350      shift
4351    else
4352      install_prog=
4353      arg=$nonopt
4354    fi
4355
4356    # The real first argument should be the name of the installation program.
4357    # Aesthetically quote it.
4358    func_quote_arg pretty "$arg"
4359    func_append install_prog "$func_quote_arg_result"
4360    install_shared_prog=$install_prog
4361    case " $install_prog " in
4362      *[\\\ /]cp\ *) install_cp=: ;;
4363      *) install_cp=false ;;
4364    esac
4365
4366    # We need to accept at least all the BSD install flags.
4367    dest=
4368    files=
4369    opts=
4370    prev=
4371    install_type=
4372    isdir=false
4373    stripme=
4374    no_mode=:
4375    for arg
4376    do
4377      arg2=
4378      if test -n "$dest"; then
4379	func_append files " $dest"
4380	dest=$arg
4381	continue
4382      fi
4383
4384      case $arg in
4385      -d) isdir=: ;;
4386      -f)
4387	if $install_cp; then :; else
4388	  prev=$arg
4389	fi
4390	;;
4391      -g | -m | -o)
4392	prev=$arg
4393	;;
4394      -s)
4395	stripme=" -s"
4396	continue
4397	;;
4398      -*)
4399	;;
4400      *)
4401	# If the previous option needed an argument, then skip it.
4402	if test -n "$prev"; then
4403	  if test X-m = "X$prev" && test -n "$install_override_mode"; then
4404	    arg2=$install_override_mode
4405	    no_mode=false
4406	  fi
4407	  prev=
4408	else
4409	  dest=$arg
4410	  continue
4411	fi
4412	;;
4413      esac
4414
4415      # Aesthetically quote the argument.
4416      func_quote_arg pretty "$arg"
4417      func_append install_prog " $func_quote_arg_result"
4418      if test -n "$arg2"; then
4419	func_quote_arg pretty "$arg2"
4420      fi
4421      func_append install_shared_prog " $func_quote_arg_result"
4422    done
4423
4424    test -z "$install_prog" && \
4425      func_fatal_help "you must specify an install program"
4426
4427    test -n "$prev" && \
4428      func_fatal_help "the '$prev' option requires an argument"
4429
4430    if test -n "$install_override_mode" && $no_mode; then
4431      if $install_cp; then :; else
4432	func_quote_arg pretty "$install_override_mode"
4433	func_append install_shared_prog " -m $func_quote_arg_result"
4434      fi
4435    fi
4436
4437    if test -z "$files"; then
4438      if test -z "$dest"; then
4439	func_fatal_help "no file or destination specified"
4440      else
4441	func_fatal_help "you must specify a destination"
4442      fi
4443    fi
4444
4445    # Strip any trailing slash from the destination.
4446    func_stripname '' '/' "$dest"
4447    dest=$func_stripname_result
4448
4449    # Check to see that the destination is a directory.
4450    test -d "$dest" && isdir=:
4451    if $isdir; then
4452      destdir=$dest
4453      destname=
4454    else
4455      func_dirname_and_basename "$dest" "" "."
4456      destdir=$func_dirname_result
4457      destname=$func_basename_result
4458
4459      # Not a directory, so check to see that there is only one file specified.
4460      set dummy $files; shift
4461      test "$#" -gt 1 && \
4462	func_fatal_help "'$dest' is not a directory"
4463    fi
4464    case $destdir in
4465    [\\/]* | [A-Za-z]:[\\/]*) ;;
4466    *)
4467      for file in $files; do
4468	case $file in
4469	*.lo) ;;
4470	*)
4471	  func_fatal_help "'$destdir' must be an absolute directory name"
4472	  ;;
4473	esac
4474      done
4475      ;;
4476    esac
4477
4478    # This variable tells wrapper scripts just to set variables rather
4479    # than running their programs.
4480    libtool_install_magic=$magic
4481
4482    staticlibs=
4483    future_libdirs=
4484    current_libdirs=
4485    for file in $files; do
4486
4487      # Do each installation.
4488      case $file in
4489      *.$libext)
4490	# Do the static libraries later.
4491	func_append staticlibs " $file"
4492	;;
4493
4494      *.la)
4495	func_resolve_sysroot "$file"
4496	file=$func_resolve_sysroot_result
4497
4498	# Check to see that this really is a libtool archive.
4499	func_lalib_unsafe_p "$file" \
4500	  || func_fatal_help "'$file' is not a valid libtool archive"
4501
4502	library_names=
4503	old_library=
4504	relink_command=
4505	func_source "$file"
4506
4507	# Add the libdir to current_libdirs if it is the destination.
4508	if test "X$destdir" = "X$libdir"; then
4509	  case "$current_libdirs " in
4510	  *" $libdir "*) ;;
4511	  *) func_append current_libdirs " $libdir" ;;
4512	  esac
4513	else
4514	  # Note the libdir as a future libdir.
4515	  case "$future_libdirs " in
4516	  *" $libdir "*) ;;
4517	  *) func_append future_libdirs " $libdir" ;;
4518	  esac
4519	fi
4520
4521	func_dirname "$file" "/" ""
4522	dir=$func_dirname_result
4523	func_append dir "$objdir"
4524
4525	if test -n "$relink_command"; then
4526	  # Determine the prefix the user has applied to our future dir.
4527	  inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"`
4528
4529	  # Don't allow the user to place us outside of our expected
4530	  # location b/c this prevents finding dependent libraries that
4531	  # are installed to the same prefix.
4532	  # At present, this check doesn't affect windows .dll's that
4533	  # are installed into $libdir/../bin (currently, that works fine)
4534	  # but it's something to keep an eye on.
4535	  test "$inst_prefix_dir" = "$destdir" && \
4536	    func_fatal_error "error: cannot install '$file' to a directory not ending in $libdir"
4537
4538	  if test -n "$inst_prefix_dir"; then
4539	    # Stick the inst_prefix_dir data into the link command.
4540	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
4541	  else
4542	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
4543	  fi
4544
4545	  func_warning "relinking '$file'"
4546	  func_show_eval "$relink_command" \
4547	    'func_fatal_error "error: relink '\''$file'\'' with the above command before installing it"'
4548	fi
4549
4550	# See the names of the shared library.
4551	set dummy $library_names; shift
4552	if test -n "$1"; then
4553	  realname=$1
4554	  shift
4555
4556	  srcname=$realname
4557	  test -n "$relink_command" && srcname=${realname}T
4558
4559	  # Install the shared library and build the symlinks.
4560	  func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \
4561	      'exit $?'
4562	  tstripme=$stripme
4563	  case $host_os in
4564	  cygwin* | mingw* | pw32* | cegcc*)
4565	    case $realname in
4566	    *.dll.a)
4567	      tstripme=
4568	      ;;
4569	    esac
4570	    ;;
4571	  os2*)
4572	    case $realname in
4573	    *_dll.a)
4574	      tstripme=
4575	      ;;
4576	    esac
4577	    ;;
4578	  esac
4579	  if test -n "$tstripme" && test -n "$striplib"; then
4580	    func_show_eval "$striplib $destdir/$realname" 'exit $?'
4581	  fi
4582
4583	  if test "$#" -gt 0; then
4584	    # Delete the old symlinks, and create new ones.
4585	    # Try 'ln -sf' first, because the 'ln' binary might depend on
4586	    # the symlink we replace!  Solaris /bin/ln does not understand -f,
4587	    # so we also need to try rm && ln -s.
4588	    for linkname
4589	    do
4590	      test "$linkname" != "$realname" \
4591		&& func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
4592	    done
4593	  fi
4594
4595	  # Do each command in the postinstall commands.
4596	  lib=$destdir/$realname
4597	  func_execute_cmds "$postinstall_cmds" 'exit $?'
4598	fi
4599
4600	# Install the pseudo-library for information purposes.
4601	func_basename "$file"
4602	name=$func_basename_result
4603	instname=$dir/${name}i
4604	func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
4605
4606	# Maybe install the static library, too.
4607	test -n "$old_library" && func_append staticlibs " $dir/$old_library"
4608	;;
4609
4610      *.lo)
4611	# Install (i.e. copy) a libtool object.
4612
4613	# Figure out destination file name, if it wasn't already specified.
4614	if test -n "$destname"; then
4615	  destfile=$destdir/$destname
4616	else
4617	  func_basename "$file"
4618	  destfile=$func_basename_result
4619	  destfile=$destdir/$destfile
4620	fi
4621
4622	# Deduce the name of the destination old-style object file.
4623	case $destfile in
4624	*.lo)
4625	  func_lo2o "$destfile"
4626	  staticdest=$func_lo2o_result
4627	  ;;
4628	*.$objext)
4629	  staticdest=$destfile
4630	  destfile=
4631	  ;;
4632	*)
4633	  func_fatal_help "cannot copy a libtool object to '$destfile'"
4634	  ;;
4635	esac
4636
4637	# Install the libtool object if requested.
4638	test -n "$destfile" && \
4639	  func_show_eval "$install_prog $file $destfile" 'exit $?'
4640
4641	# Install the old object if enabled.
4642	if test yes = "$build_old_libs"; then
4643	  # Deduce the name of the old-style object file.
4644	  func_lo2o "$file"
4645	  staticobj=$func_lo2o_result
4646	  func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
4647	fi
4648	exit $EXIT_SUCCESS
4649	;;
4650
4651      *)
4652	# Figure out destination file name, if it wasn't already specified.
4653	if test -n "$destname"; then
4654	  destfile=$destdir/$destname
4655	else
4656	  func_basename "$file"
4657	  destfile=$func_basename_result
4658	  destfile=$destdir/$destfile
4659	fi
4660
4661	# If the file is missing, and there is a .exe on the end, strip it
4662	# because it is most likely a libtool script we actually want to
4663	# install
4664	stripped_ext=
4665	case $file in
4666	  *.exe)
4667	    if test ! -f "$file"; then
4668	      func_stripname '' '.exe' "$file"
4669	      file=$func_stripname_result
4670	      stripped_ext=.exe
4671	    fi
4672	    ;;
4673	esac
4674
4675	# Do a test to see if this is really a libtool program.
4676	case $host in
4677	*cygwin* | *mingw*)
4678	    if func_ltwrapper_executable_p "$file"; then
4679	      func_ltwrapper_scriptname "$file"
4680	      wrapper=$func_ltwrapper_scriptname_result
4681	    else
4682	      func_stripname '' '.exe' "$file"
4683	      wrapper=$func_stripname_result
4684	    fi
4685	    ;;
4686	*)
4687	    wrapper=$file
4688	    ;;
4689	esac
4690	if func_ltwrapper_script_p "$wrapper"; then
4691	  notinst_deplibs=
4692	  relink_command=
4693
4694	  func_source "$wrapper"
4695
4696	  # Check the variables that should have been set.
4697	  test -z "$generated_by_libtool_version" && \
4698	    func_fatal_error "invalid libtool wrapper script '$wrapper'"
4699
4700	  finalize=:
4701	  for lib in $notinst_deplibs; do
4702	    # Check to see that each library is installed.
4703	    libdir=
4704	    if test -f "$lib"; then
4705	      func_source "$lib"
4706	    fi
4707	    libfile=$libdir/`$ECHO "$lib" | $SED 's%^.*/%%g'`
4708	    if test -n "$libdir" && test ! -f "$libfile"; then
4709	      func_warning "'$lib' has not been installed in '$libdir'"
4710	      finalize=false
4711	    fi
4712	  done
4713
4714	  relink_command=
4715	  func_source "$wrapper"
4716
4717	  outputname=
4718	  if test no = "$fast_install" && test -n "$relink_command"; then
4719	    $opt_dry_run || {
4720	      if $finalize; then
4721	        tmpdir=`func_mktempdir`
4722		func_basename "$file$stripped_ext"
4723		file=$func_basename_result
4724	        outputname=$tmpdir/$file
4725	        # Replace the output file specification.
4726	        relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'`
4727
4728	        $opt_quiet || {
4729	          func_quote_arg expand,pretty "$relink_command"
4730		  eval "func_echo $func_quote_arg_result"
4731	        }
4732	        if eval "$relink_command"; then :
4733	          else
4734		  func_error "error: relink '$file' with the above command before installing it"
4735		  $opt_dry_run || ${RM}r "$tmpdir"
4736		  continue
4737	        fi
4738	        file=$outputname
4739	      else
4740	        func_warning "cannot relink '$file'"
4741	      fi
4742	    }
4743	  else
4744	    # Install the binary that we compiled earlier.
4745	    file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"`
4746	  fi
4747	fi
4748
4749	# remove .exe since cygwin /usr/bin/install will append another
4750	# one anyway
4751	case $install_prog,$host in
4752	*/usr/bin/install*,*cygwin*)
4753	  case $file:$destfile in
4754	  *.exe:*.exe)
4755	    # this is ok
4756	    ;;
4757	  *.exe:*)
4758	    destfile=$destfile.exe
4759	    ;;
4760	  *:*.exe)
4761	    func_stripname '' '.exe' "$destfile"
4762	    destfile=$func_stripname_result
4763	    ;;
4764	  esac
4765	  ;;
4766	esac
4767	func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
4768	$opt_dry_run || if test -n "$outputname"; then
4769	  ${RM}r "$tmpdir"
4770	fi
4771	;;
4772      esac
4773    done
4774
4775    for file in $staticlibs; do
4776      func_basename "$file"
4777      name=$func_basename_result
4778
4779      # Set up the ranlib parameters.
4780      oldlib=$destdir/$name
4781      func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
4782      tool_oldlib=$func_to_tool_file_result
4783
4784      func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
4785
4786      if test -n "$stripme" && test -n "$old_striplib"; then
4787	func_show_eval "$old_striplib $tool_oldlib" 'exit $?'
4788      fi
4789
4790      # Do each command in the postinstall commands.
4791      func_execute_cmds "$old_postinstall_cmds" 'exit $?'
4792    done
4793
4794    test -n "$future_libdirs" && \
4795      func_warning "remember to run '$progname --finish$future_libdirs'"
4796
4797    if test -n "$current_libdirs"; then
4798      # Maybe just do a dry run.
4799      $opt_dry_run && current_libdirs=" -n$current_libdirs"
4800      exec_cmd='$SHELL "$progpath" $preserve_args --finish$current_libdirs'
4801    else
4802      exit $EXIT_SUCCESS
4803    fi
4804}
4805
4806test install = "$opt_mode" && func_mode_install ${1+"$@"}
4807
4808
4809# func_generate_dlsyms outputname originator pic_p
4810# Extract symbols from dlprefiles and create ${outputname}S.o with
4811# a dlpreopen symbol table.
4812func_generate_dlsyms ()
4813{
4814    $debug_cmd
4815
4816    my_outputname=$1
4817    my_originator=$2
4818    my_pic_p=${3-false}
4819    my_prefix=`$ECHO "$my_originator" | $SED 's%[^a-zA-Z0-9]%_%g'`
4820    my_dlsyms=
4821
4822    if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then
4823      if test -n "$NM" && test -n "$global_symbol_pipe"; then
4824	my_dlsyms=${my_outputname}S.c
4825      else
4826	func_error "not configured to extract global symbols from dlpreopened files"
4827      fi
4828    fi
4829
4830    if test -n "$my_dlsyms"; then
4831      case $my_dlsyms in
4832      "") ;;
4833      *.c)
4834	# Discover the nlist of each of the dlfiles.
4835	nlist=$output_objdir/$my_outputname.nm
4836
4837	func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
4838
4839	# Parse the name list into a source file.
4840	func_verbose "creating $output_objdir/$my_dlsyms"
4841
4842	$opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
4843/* $my_dlsyms - symbol resolution table for '$my_outputname' dlsym emulation. */
4844/* Generated by $PROGRAM (GNU $PACKAGE) $VERSION */
4845
4846#ifdef __cplusplus
4847extern \"C\" {
4848#endif
4849
4850#if defined __GNUC__ && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4))
4851#pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
4852#endif
4853
4854/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
4855#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE
4856/* DATA imports from DLLs on WIN32 can't be const, because runtime
4857   relocations are performed -- see ld's documentation on pseudo-relocs.  */
4858# define LT_DLSYM_CONST
4859#elif defined __osf__
4860/* This system does not cope well with relocations in const data.  */
4861# define LT_DLSYM_CONST
4862#else
4863# define LT_DLSYM_CONST const
4864#endif
4865
4866#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0)
4867
4868/* External symbol declarations for the compiler. */\
4869"
4870
4871	if test yes = "$dlself"; then
4872	  func_verbose "generating symbol list for '$output'"
4873
4874	  $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
4875
4876	  # Add our own program objects to the symbol list.
4877	  progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP`
4878	  for progfile in $progfiles; do
4879	    func_to_tool_file "$progfile" func_convert_file_msys_to_w32
4880	    func_verbose "extracting global C symbols from '$func_to_tool_file_result'"
4881	    $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'"
4882	  done
4883
4884	  if test -n "$exclude_expsyms"; then
4885	    $opt_dry_run || {
4886	      eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
4887	      eval '$MV "$nlist"T "$nlist"'
4888	    }
4889	  fi
4890
4891	  if test -n "$export_symbols_regex"; then
4892	    $opt_dry_run || {
4893	      eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
4894	      eval '$MV "$nlist"T "$nlist"'
4895	    }
4896	  fi
4897
4898	  # Prepare the list of exported symbols
4899	  if test -z "$export_symbols"; then
4900	    export_symbols=$output_objdir/$outputname.exp
4901	    $opt_dry_run || {
4902	      $RM $export_symbols
4903	      eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
4904	      case $host in
4905	      *cygwin* | *mingw* | *cegcc* )
4906                eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
4907                eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
4908	        ;;
4909	      esac
4910	    }
4911	  else
4912	    $opt_dry_run || {
4913	      eval "$SED -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
4914	      eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
4915	      eval '$MV "$nlist"T "$nlist"'
4916	      case $host in
4917	        *cygwin* | *mingw* | *cegcc* )
4918	          eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
4919	          eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
4920	          ;;
4921	      esac
4922	    }
4923	  fi
4924	fi
4925
4926	for dlprefile in $dlprefiles; do
4927	  func_verbose "extracting global C symbols from '$dlprefile'"
4928	  func_basename "$dlprefile"
4929	  name=$func_basename_result
4930          case $host in
4931	    *cygwin* | *mingw* | *cegcc* )
4932	      # if an import library, we need to obtain dlname
4933	      if func_win32_import_lib_p "$dlprefile"; then
4934	        func_tr_sh "$dlprefile"
4935	        eval "curr_lafile=\$libfile_$func_tr_sh_result"
4936	        dlprefile_dlbasename=
4937	        if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then
4938	          # Use subshell, to avoid clobbering current variable values
4939	          dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"`
4940	          if test -n "$dlprefile_dlname"; then
4941	            func_basename "$dlprefile_dlname"
4942	            dlprefile_dlbasename=$func_basename_result
4943	          else
4944	            # no lafile. user explicitly requested -dlpreopen <import library>.
4945	            $sharedlib_from_linklib_cmd "$dlprefile"
4946	            dlprefile_dlbasename=$sharedlib_from_linklib_result
4947	          fi
4948	        fi
4949	        $opt_dry_run || {
4950	          if test -n "$dlprefile_dlbasename"; then
4951	            eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"'
4952	          else
4953	            func_warning "Could not compute DLL name from $name"
4954	            eval '$ECHO ": $name " >> "$nlist"'
4955	          fi
4956	          func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
4957	          eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe |
4958	            $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'"
4959	        }
4960	      else # not an import lib
4961	        $opt_dry_run || {
4962	          eval '$ECHO ": $name " >> "$nlist"'
4963	          func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
4964	          eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
4965	        }
4966	      fi
4967	    ;;
4968	    *)
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	    ;;
4975          esac
4976	done
4977
4978	$opt_dry_run || {
4979	  # Make sure we have at least an empty file.
4980	  test -f "$nlist" || : > "$nlist"
4981
4982	  if test -n "$exclude_expsyms"; then
4983	    $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
4984	    $MV "$nlist"T "$nlist"
4985	  fi
4986
4987	  # Try sorting and uniquifying the output.
4988	  if $GREP -v "^: " < "$nlist" |
4989	      if sort -k 3 </dev/null >/dev/null 2>&1; then
4990		sort -k 3
4991	      else
4992		sort +2
4993	      fi |
4994	      uniq > "$nlist"S; then
4995	    :
4996	  else
4997	    $GREP -v "^: " < "$nlist" > "$nlist"S
4998	  fi
4999
5000	  if test -f "$nlist"S; then
5001	    eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
5002	  else
5003	    echo '/* NONE */' >> "$output_objdir/$my_dlsyms"
5004	  fi
5005
5006	  func_show_eval '$RM "${nlist}I"'
5007	  if test -n "$global_symbol_to_import"; then
5008	    eval "$global_symbol_to_import"' < "$nlist"S > "$nlist"I'
5009	  fi
5010
5011	  echo >> "$output_objdir/$my_dlsyms" "\
5012
5013/* The mapping between symbol names and symbols.  */
5014typedef struct {
5015  const char *name;
5016  void *address;
5017} lt_dlsymlist;
5018extern LT_DLSYM_CONST lt_dlsymlist
5019lt_${my_prefix}_LTX_preloaded_symbols[];\
5020"
5021
5022	  if test -s "$nlist"I; then
5023	    echo >> "$output_objdir/$my_dlsyms" "\
5024static void lt_syminit(void)
5025{
5026  LT_DLSYM_CONST lt_dlsymlist *symbol = lt_${my_prefix}_LTX_preloaded_symbols;
5027  for (; symbol->name; ++symbol)
5028    {"
5029	    $SED 's/.*/      if (STREQ (symbol->name, \"&\")) symbol->address = (void *) \&&;/' < "$nlist"I >> "$output_objdir/$my_dlsyms"
5030	    echo >> "$output_objdir/$my_dlsyms" "\
5031    }
5032}"
5033	  fi
5034	  echo >> "$output_objdir/$my_dlsyms" "\
5035LT_DLSYM_CONST lt_dlsymlist
5036lt_${my_prefix}_LTX_preloaded_symbols[] =
5037{ {\"$my_originator\", (void *) 0},"
5038
5039	  if test -s "$nlist"I; then
5040	    echo >> "$output_objdir/$my_dlsyms" "\
5041  {\"@INIT@\", (void *) &lt_syminit},"
5042	  fi
5043
5044	  case $need_lib_prefix in
5045	  no)
5046	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
5047	    ;;
5048	  *)
5049	    eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
5050	    ;;
5051	  esac
5052	  echo >> "$output_objdir/$my_dlsyms" "\
5053  {0, (void *) 0}
5054};
5055
5056/* This works around a problem in FreeBSD linker */
5057#ifdef FREEBSD_WORKAROUND
5058static const void *lt_preloaded_setup() {
5059  return lt_${my_prefix}_LTX_preloaded_symbols;
5060}
5061#endif
5062
5063#ifdef __cplusplus
5064}
5065#endif\
5066"
5067	} # !$opt_dry_run
5068
5069	pic_flag_for_symtable=
5070	case "$compile_command " in
5071	*" -static "*) ;;
5072	*)
5073	  case $host in
5074	  # compiling the symbol table file with pic_flag works around
5075	  # a FreeBSD bug that causes programs to crash when -lm is
5076	  # linked before any other PIC object.  But we must not use
5077	  # pic_flag when linking with -static.  The problem exists in
5078	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
5079	  *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
5080	    pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
5081	  *-*-hpux*)
5082	    pic_flag_for_symtable=" $pic_flag"  ;;
5083	  *)
5084	    $my_pic_p && pic_flag_for_symtable=" $pic_flag"
5085	    ;;
5086	  esac
5087	  ;;
5088	esac
5089	symtab_cflags=
5090	for arg in $LTCFLAGS; do
5091	  case $arg in
5092	  -pie | -fpie | -fPIE) ;;
5093	  *) func_append symtab_cflags " $arg" ;;
5094	  esac
5095	done
5096
5097	# Now compile the dynamic symbol file.
5098	func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
5099
5100	# Clean up the generated files.
5101	func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T" "${nlist}I"'
5102
5103	# Transform the symbol file into the correct name.
5104	symfileobj=$output_objdir/${my_outputname}S.$objext
5105	case $host in
5106	*cygwin* | *mingw* | *cegcc* )
5107	  if test -f "$output_objdir/$my_outputname.def"; then
5108	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
5109	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
5110	  else
5111	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
5112	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
5113	  fi
5114	  ;;
5115	*)
5116	  compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
5117	  finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
5118	  ;;
5119	esac
5120	;;
5121      *)
5122	func_fatal_error "unknown suffix for '$my_dlsyms'"
5123	;;
5124      esac
5125    else
5126      # We keep going just in case the user didn't refer to
5127      # lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
5128      # really was required.
5129
5130      # Nullify the symbol file.
5131      compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"`
5132      finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"`
5133    fi
5134}
5135
5136# func_cygming_gnu_implib_p ARG
5137# This predicate returns with zero status (TRUE) if
5138# ARG is a GNU/binutils-style import library. Returns
5139# with nonzero status (FALSE) otherwise.
5140func_cygming_gnu_implib_p ()
5141{
5142  $debug_cmd
5143
5144  func_to_tool_file "$1" func_convert_file_msys_to_w32
5145  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)$'`
5146  test -n "$func_cygming_gnu_implib_tmp"
5147}
5148
5149# func_cygming_ms_implib_p ARG
5150# This predicate returns with zero status (TRUE) if
5151# ARG is an MS-style import library. Returns
5152# with nonzero status (FALSE) otherwise.
5153func_cygming_ms_implib_p ()
5154{
5155  $debug_cmd
5156
5157  func_to_tool_file "$1" func_convert_file_msys_to_w32
5158  func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'`
5159  test -n "$func_cygming_ms_implib_tmp"
5160}
5161
5162# func_win32_libid arg
5163# return the library type of file 'arg'
5164#
5165# Need a lot of goo to handle *both* DLLs and import libs
5166# Has to be a shell function in order to 'eat' the argument
5167# that is supplied when $file_magic_command is called.
5168# Despite the name, also deal with 64 bit binaries.
5169func_win32_libid ()
5170{
5171  $debug_cmd
5172
5173  win32_libid_type=unknown
5174  win32_fileres=`file -L $1 2>/dev/null`
5175  case $win32_fileres in
5176  *ar\ archive\ import\ library*) # definitely import
5177    win32_libid_type="x86 archive import"
5178    ;;
5179  *ar\ archive*) # could be an import, or static
5180    # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD.
5181    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
5182       $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then
5183      case $nm_interface in
5184      "MS dumpbin")
5185	if func_cygming_ms_implib_p "$1" ||
5186	   func_cygming_gnu_implib_p "$1"
5187	then
5188	  win32_nmres=import
5189	else
5190	  win32_nmres=
5191	fi
5192	;;
5193      *)
5194	func_to_tool_file "$1" func_convert_file_msys_to_w32
5195	win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" |
5196	  $SED -n -e '
5197	    1,100{
5198		/ I /{
5199		    s|.*|import|
5200		    p
5201		    q
5202		}
5203	    }'`
5204	;;
5205      esac
5206      case $win32_nmres in
5207      import*)  win32_libid_type="x86 archive import";;
5208      *)        win32_libid_type="x86 archive static";;
5209      esac
5210    fi
5211    ;;
5212  *DLL*)
5213    win32_libid_type="x86 DLL"
5214    ;;
5215  *executable*) # but shell scripts are "executable" too...
5216    case $win32_fileres in
5217    *MS\ Windows\ PE\ Intel*)
5218      win32_libid_type="x86 DLL"
5219      ;;
5220    esac
5221    ;;
5222  esac
5223  $ECHO "$win32_libid_type"
5224}
5225
5226# func_cygming_dll_for_implib ARG
5227#
5228# Platform-specific function to extract the
5229# name of the DLL associated with the specified
5230# import library ARG.
5231# Invoked by eval'ing the libtool variable
5232#    $sharedlib_from_linklib_cmd
5233# Result is available in the variable
5234#    $sharedlib_from_linklib_result
5235func_cygming_dll_for_implib ()
5236{
5237  $debug_cmd
5238
5239  sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"`
5240}
5241
5242# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs
5243#
5244# The is the core of a fallback implementation of a
5245# platform-specific function to extract the name of the
5246# DLL associated with the specified import library LIBNAME.
5247#
5248# SECTION_NAME is either .idata$6 or .idata$7, depending
5249# on the platform and compiler that created the implib.
5250#
5251# Echos the name of the DLL associated with the
5252# specified import library.
5253func_cygming_dll_for_implib_fallback_core ()
5254{
5255  $debug_cmd
5256
5257  match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"`
5258  $OBJDUMP -s --section "$1" "$2" 2>/dev/null |
5259    $SED '/^Contents of section '"$match_literal"':/{
5260      # Place marker at beginning of archive member dllname section
5261      s/.*/====MARK====/
5262      p
5263      d
5264    }
5265    # These lines can sometimes be longer than 43 characters, but
5266    # are always uninteresting
5267    /:[	 ]*file format pe[i]\{,1\}-/d
5268    /^In archive [^:]*:/d
5269    # Ensure marker is printed
5270    /^====MARK====/p
5271    # Remove all lines with less than 43 characters
5272    /^.\{43\}/!d
5273    # From remaining lines, remove first 43 characters
5274    s/^.\{43\}//' |
5275    $SED -n '
5276      # Join marker and all lines until next marker into a single line
5277      /^====MARK====/ b para
5278      H
5279      $ b para
5280      b
5281      :para
5282      x
5283      s/\n//g
5284      # Remove the marker
5285      s/^====MARK====//
5286      # Remove trailing dots and whitespace
5287      s/[\. \t]*$//
5288      # Print
5289      /./p' |
5290    # we now have a list, one entry per line, of the stringified
5291    # contents of the appropriate section of all members of the
5292    # archive that possess that section. Heuristic: eliminate
5293    # all those that have a first or second character that is
5294    # a '.' (that is, objdump's representation of an unprintable
5295    # character.) This should work for all archives with less than
5296    # 0x302f exports -- but will fail for DLLs whose name actually
5297    # begins with a literal '.' or a single character followed by
5298    # a '.'.
5299    #
5300    # Of those that remain, print the first one.
5301    $SED -e '/^\./d;/^.\./d;q'
5302}
5303
5304# func_cygming_dll_for_implib_fallback ARG
5305# Platform-specific function to extract the
5306# name of the DLL associated with the specified
5307# import library ARG.
5308#
5309# This fallback implementation is for use when $DLLTOOL
5310# does not support the --identify-strict option.
5311# Invoked by eval'ing the libtool variable
5312#    $sharedlib_from_linklib_cmd
5313# Result is available in the variable
5314#    $sharedlib_from_linklib_result
5315func_cygming_dll_for_implib_fallback ()
5316{
5317  $debug_cmd
5318
5319  if func_cygming_gnu_implib_p "$1"; then
5320    # binutils import library
5321    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"`
5322  elif func_cygming_ms_implib_p "$1"; then
5323    # ms-generated import library
5324    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"`
5325  else
5326    # unknown
5327    sharedlib_from_linklib_result=
5328  fi
5329}
5330
5331
5332# func_extract_an_archive dir oldlib
5333func_extract_an_archive ()
5334{
5335    $debug_cmd
5336
5337    f_ex_an_ar_dir=$1; shift
5338    f_ex_an_ar_oldlib=$1
5339    if test yes = "$lock_old_archive_extraction"; then
5340      lockfile=$f_ex_an_ar_oldlib.lock
5341      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
5342	func_echo "Waiting for $lockfile to be removed"
5343	sleep 2
5344      done
5345    fi
5346    func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \
5347		   'stat=$?; rm -f "$lockfile"; exit $stat'
5348    if test yes = "$lock_old_archive_extraction"; then
5349      $opt_dry_run || rm -f "$lockfile"
5350    fi
5351    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
5352     :
5353    else
5354      func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
5355    fi
5356}
5357
5358
5359# func_extract_archives gentop oldlib ...
5360func_extract_archives ()
5361{
5362    $debug_cmd
5363
5364    my_gentop=$1; shift
5365    my_oldlibs=${1+"$@"}
5366    my_oldobjs=
5367    my_xlib=
5368    my_xabs=
5369    my_xdir=
5370
5371    for my_xlib in $my_oldlibs; do
5372      # Extract the objects.
5373      case $my_xlib in
5374	[\\/]* | [A-Za-z]:[\\/]*) my_xabs=$my_xlib ;;
5375	*) my_xabs=`pwd`"/$my_xlib" ;;
5376      esac
5377      func_basename "$my_xlib"
5378      my_xlib=$func_basename_result
5379      my_xlib_u=$my_xlib
5380      while :; do
5381        case " $extracted_archives " in
5382	*" $my_xlib_u "*)
5383	  func_arith $extracted_serial + 1
5384	  extracted_serial=$func_arith_result
5385	  my_xlib_u=lt$extracted_serial-$my_xlib ;;
5386	*) break ;;
5387	esac
5388      done
5389      extracted_archives="$extracted_archives $my_xlib_u"
5390      my_xdir=$my_gentop/$my_xlib_u
5391
5392      func_mkdir_p "$my_xdir"
5393
5394      case $host in
5395      *-darwin*)
5396	func_verbose "Extracting $my_xabs"
5397	# Do not bother doing anything if just a dry run
5398	$opt_dry_run || {
5399	  darwin_orig_dir=`pwd`
5400	  cd $my_xdir || exit $?
5401	  darwin_archive=$my_xabs
5402	  darwin_curdir=`pwd`
5403	  func_basename "$darwin_archive"
5404	  darwin_base_archive=$func_basename_result
5405	  darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
5406	  if test -n "$darwin_arches"; then
5407	    darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
5408	    darwin_arch=
5409	    func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
5410	    for darwin_arch in  $darwin_arches; do
5411	      func_mkdir_p "unfat-$$/$darwin_base_archive-$darwin_arch"
5412	      $LIPO -thin $darwin_arch -output "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" "$darwin_archive"
5413	      cd "unfat-$$/$darwin_base_archive-$darwin_arch"
5414	      func_extract_an_archive "`pwd`" "$darwin_base_archive"
5415	      cd "$darwin_curdir"
5416	      $RM "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive"
5417	    done # $darwin_arches
5418            ## Okay now we've a bunch of thin objects, gotta fatten them up :)
5419	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$sed_basename" | sort -u`
5420	    darwin_file=
5421	    darwin_files=
5422	    for darwin_file in $darwin_filelist; do
5423	      darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP`
5424	      $LIPO -create -output "$darwin_file" $darwin_files
5425	    done # $darwin_filelist
5426	    $RM -rf unfat-$$
5427	    cd "$darwin_orig_dir"
5428	  else
5429	    cd $darwin_orig_dir
5430	    func_extract_an_archive "$my_xdir" "$my_xabs"
5431	  fi # $darwin_arches
5432	} # !$opt_dry_run
5433	;;
5434      *)
5435        func_extract_an_archive "$my_xdir" "$my_xabs"
5436	;;
5437      esac
5438      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP`
5439    done
5440
5441    func_extract_archives_result=$my_oldobjs
5442}
5443
5444
5445# func_emit_wrapper [arg=no]
5446#
5447# Emit a libtool wrapper script on stdout.
5448# Don't directly open a file because we may want to
5449# incorporate the script contents within a cygwin/mingw
5450# wrapper executable.  Must ONLY be called from within
5451# func_mode_link because it depends on a number of variables
5452# set therein.
5453#
5454# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
5455# variable will take.  If 'yes', then the emitted script
5456# will assume that the directory where it is stored is
5457# the $objdir directory.  This is a cygwin/mingw-specific
5458# behavior.
5459func_emit_wrapper ()
5460{
5461	func_emit_wrapper_arg1=${1-no}
5462
5463	$ECHO "\
5464#! $SHELL
5465
5466# $output - temporary wrapper script for $objdir/$outputname
5467# Generated by $PROGRAM (GNU $PACKAGE) $VERSION
5468#
5469# The $output program cannot be directly executed until all the libtool
5470# libraries that it depends on are installed.
5471#
5472# This wrapper script should never be moved out of the build directory.
5473# If it is, it will not operate correctly.
5474
5475# Sed substitution that helps us do robust quoting.  It backslashifies
5476# metacharacters that are still active within double-quoted strings.
5477sed_quote_subst='$sed_quote_subst'
5478
5479# Be Bourne compatible
5480if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
5481  emulate sh
5482  NULLCMD=:
5483  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
5484  # is contrary to our usage.  Disable this feature.
5485  alias -g '\${1+\"\$@\"}'='\"\$@\"'
5486  setopt NO_GLOB_SUBST
5487else
5488  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
5489fi
5490BIN_SH=xpg4; export BIN_SH # for Tru64
5491DUALCASE=1; export DUALCASE # for MKS sh
5492
5493# The HP-UX ksh and POSIX shell print the target directory to stdout
5494# if CDPATH is set.
5495(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
5496
5497relink_command=\"$relink_command\"
5498
5499# This environment variable determines our operation mode.
5500if test \"\$libtool_install_magic\" = \"$magic\"; then
5501  # install mode needs the following variables:
5502  generated_by_libtool_version='$macro_version'
5503  notinst_deplibs='$notinst_deplibs'
5504else
5505  # When we are sourced in execute mode, \$file and \$ECHO are already set.
5506  if test \"\$libtool_execute_magic\" != \"$magic\"; then
5507    file=\"\$0\""
5508
5509    func_quote_arg pretty "$ECHO"
5510    qECHO=$func_quote_arg_result
5511    $ECHO "\
5512
5513# A function that is used when there is no print builtin or printf.
5514func_fallback_echo ()
5515{
5516  eval 'cat <<_LTECHO_EOF
5517\$1
5518_LTECHO_EOF'
5519}
5520    ECHO=$qECHO
5521  fi
5522
5523# Very basic option parsing. These options are (a) specific to
5524# the libtool wrapper, (b) are identical between the wrapper
5525# /script/ and the wrapper /executable/ that is used only on
5526# windows platforms, and (c) all begin with the string "--lt-"
5527# (application programs are unlikely to have options that match
5528# this pattern).
5529#
5530# There are only two supported options: --lt-debug and
5531# --lt-dump-script. There is, deliberately, no --lt-help.
5532#
5533# The first argument to this parsing function should be the
5534# script's $0 value, followed by "$@".
5535lt_option_debug=
5536func_parse_lt_options ()
5537{
5538  lt_script_arg0=\$0
5539  shift
5540  for lt_opt
5541  do
5542    case \"\$lt_opt\" in
5543    --lt-debug) lt_option_debug=1 ;;
5544    --lt-dump-script)
5545        lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\`
5546        test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=.
5547        lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\`
5548        cat \"\$lt_dump_D/\$lt_dump_F\"
5549        exit 0
5550      ;;
5551    --lt-*)
5552        \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2
5553        exit 1
5554      ;;
5555    esac
5556  done
5557
5558  # Print the debug banner immediately:
5559  if test -n \"\$lt_option_debug\"; then
5560    echo \"$outputname:$output:\$LINENO: libtool wrapper (GNU $PACKAGE) $VERSION\" 1>&2
5561  fi
5562}
5563
5564# Used when --lt-debug. Prints its arguments to stdout
5565# (redirection is the responsibility of the caller)
5566func_lt_dump_args ()
5567{
5568  lt_dump_args_N=1;
5569  for lt_arg
5570  do
5571    \$ECHO \"$outputname:$output:\$LINENO: newargv[\$lt_dump_args_N]: \$lt_arg\"
5572    lt_dump_args_N=\`expr \$lt_dump_args_N + 1\`
5573  done
5574}
5575
5576# Core function for launching the target application
5577func_exec_program_core ()
5578{
5579"
5580  case $host in
5581  # Backslashes separate directories on plain windows
5582  *-*-mingw | *-*-os2* | *-cegcc*)
5583    $ECHO "\
5584      if test -n \"\$lt_option_debug\"; then
5585        \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2
5586        func_lt_dump_args \${1+\"\$@\"} 1>&2
5587      fi
5588      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
5589"
5590    ;;
5591
5592  *)
5593    $ECHO "\
5594      if test -n \"\$lt_option_debug\"; then
5595        \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir/\$program\" 1>&2
5596        func_lt_dump_args \${1+\"\$@\"} 1>&2
5597      fi
5598      exec \"\$progdir/\$program\" \${1+\"\$@\"}
5599"
5600    ;;
5601  esac
5602  $ECHO "\
5603      \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
5604      exit 1
5605}
5606
5607# A function to encapsulate launching the target application
5608# Strips options in the --lt-* namespace from \$@ and
5609# launches target application with the remaining arguments.
5610func_exec_program ()
5611{
5612  case \" \$* \" in
5613  *\\ --lt-*)
5614    for lt_wr_arg
5615    do
5616      case \$lt_wr_arg in
5617      --lt-*) ;;
5618      *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
5619      esac
5620      shift
5621    done ;;
5622  esac
5623  func_exec_program_core \${1+\"\$@\"}
5624}
5625
5626  # Parse options
5627  func_parse_lt_options \"\$0\" \${1+\"\$@\"}
5628
5629  # Find the directory that this script lives in.
5630  thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\`
5631  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
5632
5633  # Follow symbolic links until we get to the real thisdir.
5634  file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\`
5635  while test -n \"\$file\"; do
5636    destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\`
5637
5638    # If there was a directory component, then change thisdir.
5639    if test \"x\$destdir\" != \"x\$file\"; then
5640      case \"\$destdir\" in
5641      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
5642      *) thisdir=\"\$thisdir/\$destdir\" ;;
5643      esac
5644    fi
5645
5646    file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\`
5647    file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\`
5648  done
5649
5650  # Usually 'no', except on cygwin/mingw when embedded into
5651  # the cwrapper.
5652  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1
5653  if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
5654    # special case for '.'
5655    if test \"\$thisdir\" = \".\"; then
5656      thisdir=\`pwd\`
5657    fi
5658    # remove .libs from thisdir
5659    case \"\$thisdir\" in
5660    *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;;
5661    $objdir )   thisdir=. ;;
5662    esac
5663  fi
5664
5665  # Try to get the absolute directory name.
5666  absdir=\`cd \"\$thisdir\" && pwd\`
5667  test -n \"\$absdir\" && thisdir=\"\$absdir\"
5668"
5669
5670	if test yes = "$fast_install"; then
5671	  $ECHO "\
5672  program=lt-'$outputname'$exeext
5673  progdir=\"\$thisdir/$objdir\"
5674
5675  if test ! -f \"\$progdir/\$program\" ||
5676     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | $SED 1q\`; \\
5677       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
5678
5679    file=\"\$\$-\$program\"
5680
5681    if test ! -d \"\$progdir\"; then
5682      $MKDIR \"\$progdir\"
5683    else
5684      $RM \"\$progdir/\$file\"
5685    fi"
5686
5687	  $ECHO "\
5688
5689    # relink executable if necessary
5690    if test -n \"\$relink_command\"; then
5691      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
5692      else
5693	\$ECHO \"\$relink_command_output\" >&2
5694	$RM \"\$progdir/\$file\"
5695	exit 1
5696      fi
5697    fi
5698
5699    $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
5700    { $RM \"\$progdir/\$program\";
5701      $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
5702    $RM \"\$progdir/\$file\"
5703  fi"
5704	else
5705	  $ECHO "\
5706  program='$outputname'
5707  progdir=\"\$thisdir/$objdir\"
5708"
5709	fi
5710
5711	$ECHO "\
5712
5713  if test -f \"\$progdir/\$program\"; then"
5714
5715	# fixup the dll searchpath if we need to.
5716	#
5717	# Fix the DLL searchpath if we need to.  Do this before prepending
5718	# to shlibpath, because on Windows, both are PATH and uninstalled
5719	# libraries must come first.
5720	if test -n "$dllsearchpath"; then
5721	  $ECHO "\
5722    # Add the dll search path components to the executable PATH
5723    PATH=$dllsearchpath:\$PATH
5724"
5725	fi
5726
5727	# Export our shlibpath_var if we have one.
5728	if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
5729	  $ECHO "\
5730    # Add our own library path to $shlibpath_var
5731    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
5732
5733    # Some systems cannot cope with colon-terminated $shlibpath_var
5734    # The second colon is a workaround for a bug in BeOS R4 sed
5735    $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\`
5736
5737    export $shlibpath_var
5738"
5739	fi
5740
5741	$ECHO "\
5742    if test \"\$libtool_execute_magic\" != \"$magic\"; then
5743      # Run the actual program with our arguments.
5744      func_exec_program \${1+\"\$@\"}
5745    fi
5746  else
5747    # The program doesn't exist.
5748    \$ECHO \"\$0: error: '\$progdir/\$program' does not exist\" 1>&2
5749    \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
5750    \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
5751    exit 1
5752  fi
5753fi\
5754"
5755}
5756
5757
5758# func_emit_cwrapperexe_src
5759# emit the source code for a wrapper executable on stdout
5760# Must ONLY be called from within func_mode_link because
5761# it depends on a number of variable set therein.
5762func_emit_cwrapperexe_src ()
5763{
5764	cat <<EOF
5765
5766/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
5767   Generated by $PROGRAM (GNU $PACKAGE) $VERSION
5768
5769   The $output program cannot be directly executed until all the libtool
5770   libraries that it depends on are installed.
5771
5772   This wrapper executable should never be moved out of the build directory.
5773   If it is, it will not operate correctly.
5774*/
5775EOF
5776	    cat <<"EOF"
5777#ifdef _MSC_VER
5778# define _CRT_SECURE_NO_DEPRECATE 1
5779#endif
5780#include <stdio.h>
5781#include <stdlib.h>
5782#ifdef _MSC_VER
5783# include <direct.h>
5784# include <process.h>
5785# include <io.h>
5786#else
5787# include <unistd.h>
5788# include <stdint.h>
5789# ifdef __CYGWIN__
5790#  include <io.h>
5791# endif
5792#endif
5793#include <malloc.h>
5794#include <stdarg.h>
5795#include <assert.h>
5796#include <string.h>
5797#include <ctype.h>
5798#include <errno.h>
5799#include <fcntl.h>
5800#include <sys/stat.h>
5801
5802#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0)
5803
5804/* declarations of non-ANSI functions */
5805#if defined __MINGW32__
5806# ifdef __STRICT_ANSI__
5807int _putenv (const char *);
5808# endif
5809#elif defined __CYGWIN__
5810# ifdef __STRICT_ANSI__
5811char *realpath (const char *, char *);
5812int putenv (char *);
5813int setenv (const char *, const char *, int);
5814# endif
5815/* #elif defined other_platform || defined ... */
5816#endif
5817
5818/* portability defines, excluding path handling macros */
5819#if defined _MSC_VER
5820# define setmode _setmode
5821# define stat    _stat
5822# define chmod   _chmod
5823# define getcwd  _getcwd
5824# define putenv  _putenv
5825# define S_IXUSR _S_IEXEC
5826#elif defined __MINGW32__
5827# define setmode _setmode
5828# define stat    _stat
5829# define chmod   _chmod
5830# define getcwd  _getcwd
5831# define putenv  _putenv
5832#elif defined __CYGWIN__
5833# define HAVE_SETENV
5834# define FOPEN_WB "wb"
5835/* #elif defined other platforms ... */
5836#endif
5837
5838#if defined PATH_MAX
5839# define LT_PATHMAX PATH_MAX
5840#elif defined MAXPATHLEN
5841# define LT_PATHMAX MAXPATHLEN
5842#else
5843# define LT_PATHMAX 1024
5844#endif
5845
5846#ifndef S_IXOTH
5847# define S_IXOTH 0
5848#endif
5849#ifndef S_IXGRP
5850# define S_IXGRP 0
5851#endif
5852
5853/* path handling portability macros */
5854#ifndef DIR_SEPARATOR
5855# define DIR_SEPARATOR '/'
5856# define PATH_SEPARATOR ':'
5857#endif
5858
5859#if defined _WIN32 || defined __MSDOS__ || defined __DJGPP__ || \
5860  defined __OS2__
5861# define HAVE_DOS_BASED_FILE_SYSTEM
5862# define FOPEN_WB "wb"
5863# ifndef DIR_SEPARATOR_2
5864#  define DIR_SEPARATOR_2 '\\'
5865# endif
5866# ifndef PATH_SEPARATOR_2
5867#  define PATH_SEPARATOR_2 ';'
5868# endif
5869#endif
5870
5871#ifndef DIR_SEPARATOR_2
5872# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
5873#else /* DIR_SEPARATOR_2 */
5874# define IS_DIR_SEPARATOR(ch) \
5875	(((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
5876#endif /* DIR_SEPARATOR_2 */
5877
5878#ifndef PATH_SEPARATOR_2
5879# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
5880#else /* PATH_SEPARATOR_2 */
5881# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
5882#endif /* PATH_SEPARATOR_2 */
5883
5884#ifndef FOPEN_WB
5885# define FOPEN_WB "w"
5886#endif
5887#ifndef _O_BINARY
5888# define _O_BINARY 0
5889#endif
5890
5891#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
5892#define XFREE(stale) do { \
5893  if (stale) { free (stale); stale = 0; } \
5894} while (0)
5895
5896#if defined LT_DEBUGWRAPPER
5897static int lt_debug = 1;
5898#else
5899static int lt_debug = 0;
5900#endif
5901
5902const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */
5903
5904void *xmalloc (size_t num);
5905char *xstrdup (const char *string);
5906const char *base_name (const char *name);
5907char *find_executable (const char *wrapper);
5908char *chase_symlinks (const char *pathspec);
5909int make_executable (const char *path);
5910int check_executable (const char *path);
5911char *strendzap (char *str, const char *pat);
5912void lt_debugprintf (const char *file, int line, const char *fmt, ...);
5913void lt_fatal (const char *file, int line, const char *message, ...);
5914static const char *nonnull (const char *s);
5915static const char *nonempty (const char *s);
5916void lt_setenv (const char *name, const char *value);
5917char *lt_extend_str (const char *orig_value, const char *add, int to_end);
5918void lt_update_exe_path (const char *name, const char *value);
5919void lt_update_lib_path (const char *name, const char *value);
5920char **prepare_spawn (char **argv);
5921void lt_dump_script (FILE *f);
5922EOF
5923
5924	    cat <<EOF
5925#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 5)
5926# define externally_visible volatile
5927#else
5928# define externally_visible __attribute__((externally_visible)) volatile
5929#endif
5930externally_visible const char * MAGIC_EXE = "$magic_exe";
5931const char * LIB_PATH_VARNAME = "$shlibpath_var";
5932EOF
5933
5934	    if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
5935              func_to_host_path "$temp_rpath"
5936	      cat <<EOF
5937const char * LIB_PATH_VALUE   = "$func_to_host_path_result";
5938EOF
5939	    else
5940	      cat <<"EOF"
5941const char * LIB_PATH_VALUE   = "";
5942EOF
5943	    fi
5944
5945	    if test -n "$dllsearchpath"; then
5946              func_to_host_path "$dllsearchpath:"
5947	      cat <<EOF
5948const char * EXE_PATH_VARNAME = "PATH";
5949const char * EXE_PATH_VALUE   = "$func_to_host_path_result";
5950EOF
5951	    else
5952	      cat <<"EOF"
5953const char * EXE_PATH_VARNAME = "";
5954const char * EXE_PATH_VALUE   = "";
5955EOF
5956	    fi
5957
5958	    if test yes = "$fast_install"; then
5959	      cat <<EOF
5960const char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
5961EOF
5962	    else
5963	      cat <<EOF
5964const char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
5965EOF
5966	    fi
5967
5968
5969	    cat <<"EOF"
5970
5971#define LTWRAPPER_OPTION_PREFIX         "--lt-"
5972
5973static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
5974static const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX "dump-script";
5975static const char *debug_opt            = LTWRAPPER_OPTION_PREFIX "debug";
5976
5977int
5978main (int argc, char *argv[])
5979{
5980  char **newargz;
5981  int  newargc;
5982  char *tmp_pathspec;
5983  char *actual_cwrapper_path;
5984  char *actual_cwrapper_name;
5985  char *target_name;
5986  char *lt_argv_zero;
5987  int rval = 127;
5988
5989  int i;
5990
5991  program_name = (char *) xstrdup (base_name (argv[0]));
5992  newargz = XMALLOC (char *, (size_t) argc + 1);
5993
5994  /* very simple arg parsing; don't want to rely on getopt
5995   * also, copy all non cwrapper options to newargz, except
5996   * argz[0], which is handled differently
5997   */
5998  newargc=0;
5999  for (i = 1; i < argc; i++)
6000    {
6001      if (STREQ (argv[i], dumpscript_opt))
6002	{
6003EOF
6004	    case $host in
6005	      *mingw* | *cygwin* )
6006		# make stdout use "unix" line endings
6007		echo "          setmode(1,_O_BINARY);"
6008		;;
6009	      esac
6010
6011	    cat <<"EOF"
6012	  lt_dump_script (stdout);
6013	  return 0;
6014	}
6015      if (STREQ (argv[i], debug_opt))
6016	{
6017          lt_debug = 1;
6018          continue;
6019	}
6020      if (STREQ (argv[i], ltwrapper_option_prefix))
6021        {
6022          /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
6023             namespace, but it is not one of the ones we know about and
6024             have already dealt with, above (inluding dump-script), then
6025             report an error. Otherwise, targets might begin to believe
6026             they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
6027             namespace. The first time any user complains about this, we'll
6028             need to make LTWRAPPER_OPTION_PREFIX a configure-time option
6029             or a configure.ac-settable value.
6030           */
6031          lt_fatal (__FILE__, __LINE__,
6032		    "unrecognized %s option: '%s'",
6033                    ltwrapper_option_prefix, argv[i]);
6034        }
6035      /* otherwise ... */
6036      newargz[++newargc] = xstrdup (argv[i]);
6037    }
6038  newargz[++newargc] = NULL;
6039
6040EOF
6041	    cat <<EOF
6042  /* The GNU banner must be the first non-error debug message */
6043  lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE) $VERSION\n");
6044EOF
6045	    cat <<"EOF"
6046  lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]);
6047  lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name);
6048
6049  tmp_pathspec = find_executable (argv[0]);
6050  if (tmp_pathspec == NULL)
6051    lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]);
6052  lt_debugprintf (__FILE__, __LINE__,
6053                  "(main) found exe (before symlink chase) at: %s\n",
6054		  tmp_pathspec);
6055
6056  actual_cwrapper_path = chase_symlinks (tmp_pathspec);
6057  lt_debugprintf (__FILE__, __LINE__,
6058                  "(main) found exe (after symlink chase) at: %s\n",
6059		  actual_cwrapper_path);
6060  XFREE (tmp_pathspec);
6061
6062  actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path));
6063  strendzap (actual_cwrapper_path, actual_cwrapper_name);
6064
6065  /* wrapper name transforms */
6066  strendzap (actual_cwrapper_name, ".exe");
6067  tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
6068  XFREE (actual_cwrapper_name);
6069  actual_cwrapper_name = tmp_pathspec;
6070  tmp_pathspec = 0;
6071
6072  /* target_name transforms -- use actual target program name; might have lt- prefix */
6073  target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
6074  strendzap (target_name, ".exe");
6075  tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
6076  XFREE (target_name);
6077  target_name = tmp_pathspec;
6078  tmp_pathspec = 0;
6079
6080  lt_debugprintf (__FILE__, __LINE__,
6081		  "(main) libtool target name: %s\n",
6082		  target_name);
6083EOF
6084
6085	    cat <<EOF
6086  newargz[0] =
6087    XMALLOC (char, (strlen (actual_cwrapper_path) +
6088		    strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
6089  strcpy (newargz[0], actual_cwrapper_path);
6090  strcat (newargz[0], "$objdir");
6091  strcat (newargz[0], "/");
6092EOF
6093
6094	    cat <<"EOF"
6095  /* stop here, and copy so we don't have to do this twice */
6096  tmp_pathspec = xstrdup (newargz[0]);
6097
6098  /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
6099  strcat (newargz[0], actual_cwrapper_name);
6100
6101  /* DO want the lt- prefix here if it exists, so use target_name */
6102  lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
6103  XFREE (tmp_pathspec);
6104  tmp_pathspec = NULL;
6105EOF
6106
6107	    case $host_os in
6108	      mingw*)
6109	    cat <<"EOF"
6110  {
6111    char* p;
6112    while ((p = strchr (newargz[0], '\\')) != NULL)
6113      {
6114	*p = '/';
6115      }
6116    while ((p = strchr (lt_argv_zero, '\\')) != NULL)
6117      {
6118	*p = '/';
6119      }
6120  }
6121EOF
6122	    ;;
6123	    esac
6124
6125	    cat <<"EOF"
6126  XFREE (target_name);
6127  XFREE (actual_cwrapper_path);
6128  XFREE (actual_cwrapper_name);
6129
6130  lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
6131  lt_setenv ("DUALCASE", "1");  /* for MSK sh */
6132  /* Update the DLL searchpath.  EXE_PATH_VALUE ($dllsearchpath) must
6133     be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath)
6134     because on Windows, both *_VARNAMEs are PATH but uninstalled
6135     libraries must come first. */
6136  lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
6137  lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
6138
6139  lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n",
6140		  nonnull (lt_argv_zero));
6141  for (i = 0; i < newargc; i++)
6142    {
6143      lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n",
6144		      i, nonnull (newargz[i]));
6145    }
6146
6147EOF
6148
6149	    case $host_os in
6150	      mingw*)
6151		cat <<"EOF"
6152  /* execv doesn't actually work on mingw as expected on unix */
6153  newargz = prepare_spawn (newargz);
6154  rval = (int) _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
6155  if (rval == -1)
6156    {
6157      /* failed to start process */
6158      lt_debugprintf (__FILE__, __LINE__,
6159		      "(main) failed to launch target \"%s\": %s\n",
6160		      lt_argv_zero, nonnull (strerror (errno)));
6161      return 127;
6162    }
6163  return rval;
6164EOF
6165		;;
6166	      *)
6167		cat <<"EOF"
6168  execv (lt_argv_zero, newargz);
6169  return rval; /* =127, but avoids unused variable warning */
6170EOF
6171		;;
6172	    esac
6173
6174	    cat <<"EOF"
6175}
6176
6177void *
6178xmalloc (size_t num)
6179{
6180  void *p = (void *) malloc (num);
6181  if (!p)
6182    lt_fatal (__FILE__, __LINE__, "memory exhausted");
6183
6184  return p;
6185}
6186
6187char *
6188xstrdup (const char *string)
6189{
6190  return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
6191			  string) : NULL;
6192}
6193
6194const char *
6195base_name (const char *name)
6196{
6197  const char *base;
6198
6199#if defined HAVE_DOS_BASED_FILE_SYSTEM
6200  /* Skip over the disk name in MSDOS pathnames. */
6201  if (isalpha ((unsigned char) name[0]) && name[1] == ':')
6202    name += 2;
6203#endif
6204
6205  for (base = name; *name; name++)
6206    if (IS_DIR_SEPARATOR (*name))
6207      base = name + 1;
6208  return base;
6209}
6210
6211int
6212check_executable (const char *path)
6213{
6214  struct stat st;
6215
6216  lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n",
6217                  nonempty (path));
6218  if ((!path) || (!*path))
6219    return 0;
6220
6221  if ((stat (path, &st) >= 0)
6222      && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
6223    return 1;
6224  else
6225    return 0;
6226}
6227
6228int
6229make_executable (const char *path)
6230{
6231  int rval = 0;
6232  struct stat st;
6233
6234  lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n",
6235                  nonempty (path));
6236  if ((!path) || (!*path))
6237    return 0;
6238
6239  if (stat (path, &st) >= 0)
6240    {
6241      rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
6242    }
6243  return rval;
6244}
6245
6246/* Searches for the full path of the wrapper.  Returns
6247   newly allocated full path name if found, NULL otherwise
6248   Does not chase symlinks, even on platforms that support them.
6249*/
6250char *
6251find_executable (const char *wrapper)
6252{
6253  int has_slash = 0;
6254  const char *p;
6255  const char *p_next;
6256  /* static buffer for getcwd */
6257  char tmp[LT_PATHMAX + 1];
6258  size_t tmp_len;
6259  char *concat_name;
6260
6261  lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n",
6262                  nonempty (wrapper));
6263
6264  if ((wrapper == NULL) || (*wrapper == '\0'))
6265    return NULL;
6266
6267  /* Absolute path? */
6268#if defined HAVE_DOS_BASED_FILE_SYSTEM
6269  if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
6270    {
6271      concat_name = xstrdup (wrapper);
6272      if (check_executable (concat_name))
6273	return concat_name;
6274      XFREE (concat_name);
6275    }
6276  else
6277    {
6278#endif
6279      if (IS_DIR_SEPARATOR (wrapper[0]))
6280	{
6281	  concat_name = xstrdup (wrapper);
6282	  if (check_executable (concat_name))
6283	    return concat_name;
6284	  XFREE (concat_name);
6285	}
6286#if defined HAVE_DOS_BASED_FILE_SYSTEM
6287    }
6288#endif
6289
6290  for (p = wrapper; *p; p++)
6291    if (*p == '/')
6292      {
6293	has_slash = 1;
6294	break;
6295      }
6296  if (!has_slash)
6297    {
6298      /* no slashes; search PATH */
6299      const char *path = getenv ("PATH");
6300      if (path != NULL)
6301	{
6302	  for (p = path; *p; p = p_next)
6303	    {
6304	      const char *q;
6305	      size_t p_len;
6306	      for (q = p; *q; q++)
6307		if (IS_PATH_SEPARATOR (*q))
6308		  break;
6309	      p_len = (size_t) (q - p);
6310	      p_next = (*q == '\0' ? q : q + 1);
6311	      if (p_len == 0)
6312		{
6313		  /* empty path: current directory */
6314		  if (getcwd (tmp, LT_PATHMAX) == NULL)
6315		    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
6316                              nonnull (strerror (errno)));
6317		  tmp_len = strlen (tmp);
6318		  concat_name =
6319		    XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
6320		  memcpy (concat_name, tmp, tmp_len);
6321		  concat_name[tmp_len] = '/';
6322		  strcpy (concat_name + tmp_len + 1, wrapper);
6323		}
6324	      else
6325		{
6326		  concat_name =
6327		    XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
6328		  memcpy (concat_name, p, p_len);
6329		  concat_name[p_len] = '/';
6330		  strcpy (concat_name + p_len + 1, wrapper);
6331		}
6332	      if (check_executable (concat_name))
6333		return concat_name;
6334	      XFREE (concat_name);
6335	    }
6336	}
6337      /* not found in PATH; assume curdir */
6338    }
6339  /* Relative path | not found in path: prepend cwd */
6340  if (getcwd (tmp, LT_PATHMAX) == NULL)
6341    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
6342              nonnull (strerror (errno)));
6343  tmp_len = strlen (tmp);
6344  concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
6345  memcpy (concat_name, tmp, tmp_len);
6346  concat_name[tmp_len] = '/';
6347  strcpy (concat_name + tmp_len + 1, wrapper);
6348
6349  if (check_executable (concat_name))
6350    return concat_name;
6351  XFREE (concat_name);
6352  return NULL;
6353}
6354
6355char *
6356chase_symlinks (const char *pathspec)
6357{
6358#ifndef S_ISLNK
6359  return xstrdup (pathspec);
6360#else
6361  char buf[LT_PATHMAX];
6362  struct stat s;
6363  char *tmp_pathspec = xstrdup (pathspec);
6364  char *p;
6365  int has_symlinks = 0;
6366  while (strlen (tmp_pathspec) && !has_symlinks)
6367    {
6368      lt_debugprintf (__FILE__, __LINE__,
6369		      "checking path component for symlinks: %s\n",
6370		      tmp_pathspec);
6371      if (lstat (tmp_pathspec, &s) == 0)
6372	{
6373	  if (S_ISLNK (s.st_mode) != 0)
6374	    {
6375	      has_symlinks = 1;
6376	      break;
6377	    }
6378
6379	  /* search backwards for last DIR_SEPARATOR */
6380	  p = tmp_pathspec + strlen (tmp_pathspec) - 1;
6381	  while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
6382	    p--;
6383	  if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
6384	    {
6385	      /* no more DIR_SEPARATORS left */
6386	      break;
6387	    }
6388	  *p = '\0';
6389	}
6390      else
6391	{
6392	  lt_fatal (__FILE__, __LINE__,
6393		    "error accessing file \"%s\": %s",
6394		    tmp_pathspec, nonnull (strerror (errno)));
6395	}
6396    }
6397  XFREE (tmp_pathspec);
6398
6399  if (!has_symlinks)
6400    {
6401      return xstrdup (pathspec);
6402    }
6403
6404  tmp_pathspec = realpath (pathspec, buf);
6405  if (tmp_pathspec == 0)
6406    {
6407      lt_fatal (__FILE__, __LINE__,
6408		"could not follow symlinks for %s", pathspec);
6409    }
6410  return xstrdup (tmp_pathspec);
6411#endif
6412}
6413
6414char *
6415strendzap (char *str, const char *pat)
6416{
6417  size_t len, patlen;
6418
6419  assert (str != NULL);
6420  assert (pat != NULL);
6421
6422  len = strlen (str);
6423  patlen = strlen (pat);
6424
6425  if (patlen <= len)
6426    {
6427      str += len - patlen;
6428      if (STREQ (str, pat))
6429	*str = '\0';
6430    }
6431  return str;
6432}
6433
6434void
6435lt_debugprintf (const char *file, int line, const char *fmt, ...)
6436{
6437  va_list args;
6438  if (lt_debug)
6439    {
6440      (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line);
6441      va_start (args, fmt);
6442      (void) vfprintf (stderr, fmt, args);
6443      va_end (args);
6444    }
6445}
6446
6447static void
6448lt_error_core (int exit_status, const char *file,
6449	       int line, const char *mode,
6450	       const char *message, va_list ap)
6451{
6452  fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode);
6453  vfprintf (stderr, message, ap);
6454  fprintf (stderr, ".\n");
6455
6456  if (exit_status >= 0)
6457    exit (exit_status);
6458}
6459
6460void
6461lt_fatal (const char *file, int line, const char *message, ...)
6462{
6463  va_list ap;
6464  va_start (ap, message);
6465  lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap);
6466  va_end (ap);
6467}
6468
6469static const char *
6470nonnull (const char *s)
6471{
6472  return s ? s : "(null)";
6473}
6474
6475static const char *
6476nonempty (const char *s)
6477{
6478  return (s && !*s) ? "(empty)" : nonnull (s);
6479}
6480
6481void
6482lt_setenv (const char *name, const char *value)
6483{
6484  lt_debugprintf (__FILE__, __LINE__,
6485		  "(lt_setenv) setting '%s' to '%s'\n",
6486                  nonnull (name), nonnull (value));
6487  {
6488#ifdef HAVE_SETENV
6489    /* always make a copy, for consistency with !HAVE_SETENV */
6490    char *str = xstrdup (value);
6491    setenv (name, str, 1);
6492#else
6493    size_t len = strlen (name) + 1 + strlen (value) + 1;
6494    char *str = XMALLOC (char, len);
6495    sprintf (str, "%s=%s", name, value);
6496    if (putenv (str) != EXIT_SUCCESS)
6497      {
6498        XFREE (str);
6499      }
6500#endif
6501  }
6502}
6503
6504char *
6505lt_extend_str (const char *orig_value, const char *add, int to_end)
6506{
6507  char *new_value;
6508  if (orig_value && *orig_value)
6509    {
6510      size_t orig_value_len = strlen (orig_value);
6511      size_t add_len = strlen (add);
6512      new_value = XMALLOC (char, add_len + orig_value_len + 1);
6513      if (to_end)
6514        {
6515          strcpy (new_value, orig_value);
6516          strcpy (new_value + orig_value_len, add);
6517        }
6518      else
6519        {
6520          strcpy (new_value, add);
6521          strcpy (new_value + add_len, orig_value);
6522        }
6523    }
6524  else
6525    {
6526      new_value = xstrdup (add);
6527    }
6528  return new_value;
6529}
6530
6531void
6532lt_update_exe_path (const char *name, const char *value)
6533{
6534  lt_debugprintf (__FILE__, __LINE__,
6535		  "(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
6536                  nonnull (name), nonnull (value));
6537
6538  if (name && *name && value && *value)
6539    {
6540      char *new_value = lt_extend_str (getenv (name), value, 0);
6541      /* some systems can't cope with a ':'-terminated path #' */
6542      size_t len = strlen (new_value);
6543      while ((len > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
6544        {
6545          new_value[--len] = '\0';
6546        }
6547      lt_setenv (name, new_value);
6548      XFREE (new_value);
6549    }
6550}
6551
6552void
6553lt_update_lib_path (const char *name, const char *value)
6554{
6555  lt_debugprintf (__FILE__, __LINE__,
6556		  "(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
6557                  nonnull (name), nonnull (value));
6558
6559  if (name && *name && value && *value)
6560    {
6561      char *new_value = lt_extend_str (getenv (name), value, 0);
6562      lt_setenv (name, new_value);
6563      XFREE (new_value);
6564    }
6565}
6566
6567EOF
6568	    case $host_os in
6569	      mingw*)
6570		cat <<"EOF"
6571
6572/* Prepares an argument vector before calling spawn().
6573   Note that spawn() does not by itself call the command interpreter
6574     (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") :
6575      ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
6576         GetVersionEx(&v);
6577         v.dwPlatformId == VER_PLATFORM_WIN32_NT;
6578      }) ? "cmd.exe" : "command.com").
6579   Instead it simply concatenates the arguments, separated by ' ', and calls
6580   CreateProcess().  We must quote the arguments since Win32 CreateProcess()
6581   interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a
6582   special way:
6583   - Space and tab are interpreted as delimiters. They are not treated as
6584     delimiters if they are surrounded by double quotes: "...".
6585   - Unescaped double quotes are removed from the input. Their only effect is
6586     that within double quotes, space and tab are treated like normal
6587     characters.
6588   - Backslashes not followed by double quotes are not special.
6589   - But 2*n+1 backslashes followed by a double quote become
6590     n backslashes followed by a double quote (n >= 0):
6591       \" -> "
6592       \\\" -> \"
6593       \\\\\" -> \\"
6594 */
6595#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"
6596#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"
6597char **
6598prepare_spawn (char **argv)
6599{
6600  size_t argc;
6601  char **new_argv;
6602  size_t i;
6603
6604  /* Count number of arguments.  */
6605  for (argc = 0; argv[argc] != NULL; argc++)
6606    ;
6607
6608  /* Allocate new argument vector.  */
6609  new_argv = XMALLOC (char *, argc + 1);
6610
6611  /* Put quoted arguments into the new argument vector.  */
6612  for (i = 0; i < argc; i++)
6613    {
6614      const char *string = argv[i];
6615
6616      if (string[0] == '\0')
6617	new_argv[i] = xstrdup ("\"\"");
6618      else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL)
6619	{
6620	  int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL);
6621	  size_t length;
6622	  unsigned int backslashes;
6623	  const char *s;
6624	  char *quoted_string;
6625	  char *p;
6626
6627	  length = 0;
6628	  backslashes = 0;
6629	  if (quote_around)
6630	    length++;
6631	  for (s = string; *s != '\0'; s++)
6632	    {
6633	      char c = *s;
6634	      if (c == '"')
6635		length += backslashes + 1;
6636	      length++;
6637	      if (c == '\\')
6638		backslashes++;
6639	      else
6640		backslashes = 0;
6641	    }
6642	  if (quote_around)
6643	    length += backslashes + 1;
6644
6645	  quoted_string = XMALLOC (char, length + 1);
6646
6647	  p = quoted_string;
6648	  backslashes = 0;
6649	  if (quote_around)
6650	    *p++ = '"';
6651	  for (s = string; *s != '\0'; s++)
6652	    {
6653	      char c = *s;
6654	      if (c == '"')
6655		{
6656		  unsigned int j;
6657		  for (j = backslashes + 1; j > 0; j--)
6658		    *p++ = '\\';
6659		}
6660	      *p++ = c;
6661	      if (c == '\\')
6662		backslashes++;
6663	      else
6664		backslashes = 0;
6665	    }
6666	  if (quote_around)
6667	    {
6668	      unsigned int j;
6669	      for (j = backslashes; j > 0; j--)
6670		*p++ = '\\';
6671	      *p++ = '"';
6672	    }
6673	  *p = '\0';
6674
6675	  new_argv[i] = quoted_string;
6676	}
6677      else
6678	new_argv[i] = (char *) string;
6679    }
6680  new_argv[argc] = NULL;
6681
6682  return new_argv;
6683}
6684EOF
6685		;;
6686	    esac
6687
6688            cat <<"EOF"
6689void lt_dump_script (FILE* f)
6690{
6691EOF
6692	    func_emit_wrapper yes |
6693	      $SED -n -e '
6694s/^\(.\{79\}\)\(..*\)/\1\
6695\2/
6696h
6697s/\([\\"]\)/\\\1/g
6698s/$/\\n/
6699s/\([^\n]*\).*/  fputs ("\1", f);/p
6700g
6701D'
6702            cat <<"EOF"
6703}
6704EOF
6705}
6706# end: func_emit_cwrapperexe_src
6707
6708# func_win32_import_lib_p ARG
6709# True if ARG is an import lib, as indicated by $file_magic_cmd
6710func_win32_import_lib_p ()
6711{
6712    $debug_cmd
6713
6714    case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in
6715    *import*) : ;;
6716    *) false ;;
6717    esac
6718}
6719
6720# func_suncc_cstd_abi
6721# !!ONLY CALL THIS FOR SUN CC AFTER $compile_command IS FULLY EXPANDED!!
6722# Several compiler flags select an ABI that is incompatible with the
6723# Cstd library. Avoid specifying it if any are in CXXFLAGS.
6724func_suncc_cstd_abi ()
6725{
6726    $debug_cmd
6727
6728    case " $compile_command " in
6729    *" -compat=g "*|*\ -std=c++[0-9][0-9]\ *|*" -library=stdcxx4 "*|*" -library=stlport4 "*)
6730      suncc_use_cstd_abi=no
6731      ;;
6732    *)
6733      suncc_use_cstd_abi=yes
6734      ;;
6735    esac
6736}
6737
6738# func_mode_link arg...
6739func_mode_link ()
6740{
6741    $debug_cmd
6742
6743    case $host in
6744    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
6745      # It is impossible to link a dll without this setting, and
6746      # we shouldn't force the makefile maintainer to figure out
6747      # what system we are compiling for in order to pass an extra
6748      # flag for every libtool invocation.
6749      # allow_undefined=no
6750
6751      # FIXME: Unfortunately, there are problems with the above when trying
6752      # to make a dll that has undefined symbols, in which case not
6753      # even a static library is built.  For now, we need to specify
6754      # -no-undefined on the libtool link line when we can be certain
6755      # that all symbols are satisfied, otherwise we get a static library.
6756      allow_undefined=yes
6757      ;;
6758    *)
6759      allow_undefined=yes
6760      ;;
6761    esac
6762    libtool_args=$nonopt
6763    base_compile="$nonopt $@"
6764    compile_command=$nonopt
6765    finalize_command=$nonopt
6766
6767    compile_rpath=
6768    finalize_rpath=
6769    compile_shlibpath=
6770    finalize_shlibpath=
6771    convenience=
6772    old_convenience=
6773    deplibs=
6774    old_deplibs=
6775    compiler_flags=
6776    linker_flags=
6777    dllsearchpath=
6778    lib_search_path=`pwd`
6779    inst_prefix_dir=
6780    new_inherited_linker_flags=
6781
6782    avoid_version=no
6783    bindir=
6784    dlfiles=
6785    dlprefiles=
6786    dlself=no
6787    export_dynamic=no
6788    export_symbols=
6789    export_symbols_regex=
6790    generated=
6791    libobjs=
6792    ltlibs=
6793    module=no
6794    no_install=no
6795    objs=
6796    os2dllname=
6797    non_pic_objects=
6798    precious_files_regex=
6799    prefer_static_libs=no
6800    preload=false
6801    prev=
6802    prevarg=
6803    release=
6804    rpath=
6805    xrpath=
6806    perm_rpath=
6807    temp_rpath=
6808    thread_safe=no
6809    vinfo=
6810    vinfo_number=no
6811    weak_libs=
6812    single_module=$wl-single_module
6813    func_infer_tag $base_compile
6814
6815    # We need to know -static, to get the right output filenames.
6816    for arg
6817    do
6818      case $arg in
6819      -shared)
6820	test yes != "$build_libtool_libs" \
6821	  && func_fatal_configuration "cannot build a shared library"
6822	build_old_libs=no
6823	break
6824	;;
6825      -all-static | -static | -static-libtool-libs)
6826	case $arg in
6827	-all-static)
6828	  if test yes = "$build_libtool_libs" && test -z "$link_static_flag"; then
6829	    func_warning "complete static linking is impossible in this configuration"
6830	  fi
6831	  if test -n "$link_static_flag"; then
6832	    dlopen_self=$dlopen_self_static
6833	  fi
6834	  prefer_static_libs=yes
6835	  ;;
6836	-static)
6837	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
6838	    dlopen_self=$dlopen_self_static
6839	  fi
6840	  prefer_static_libs=built
6841	  ;;
6842	-static-libtool-libs)
6843	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
6844	    dlopen_self=$dlopen_self_static
6845	  fi
6846	  prefer_static_libs=yes
6847	  ;;
6848	esac
6849	build_libtool_libs=no
6850	build_old_libs=yes
6851	break
6852	;;
6853      esac
6854    done
6855
6856    # See if our shared archives depend on static archives.
6857    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
6858
6859    # Go through the arguments, transforming them on the way.
6860    while test "$#" -gt 0; do
6861      arg=$1
6862      shift
6863      func_quote_arg pretty,unquoted "$arg"
6864      qarg=$func_quote_arg_unquoted_result
6865      func_append libtool_args " $func_quote_arg_result"
6866
6867      # If the previous option needs an argument, assign it.
6868      if test -n "$prev"; then
6869	case $prev in
6870	output)
6871	  func_append compile_command " @OUTPUT@"
6872	  func_append finalize_command " @OUTPUT@"
6873	  ;;
6874	esac
6875
6876	case $prev in
6877	bindir)
6878	  bindir=$arg
6879	  prev=
6880	  continue
6881	  ;;
6882	dlfiles|dlprefiles)
6883	  $preload || {
6884	    # Add the symbol object into the linking commands.
6885	    func_append compile_command " @SYMFILE@"
6886	    func_append finalize_command " @SYMFILE@"
6887	    preload=:
6888	  }
6889	  case $arg in
6890	  *.la | *.lo) ;;  # We handle these cases below.
6891	  force)
6892	    if test no = "$dlself"; then
6893	      dlself=needless
6894	      export_dynamic=yes
6895	    fi
6896	    prev=
6897	    continue
6898	    ;;
6899	  self)
6900	    if test dlprefiles = "$prev"; then
6901	      dlself=yes
6902	    elif test dlfiles = "$prev" && test yes != "$dlopen_self"; then
6903	      dlself=yes
6904	    else
6905	      dlself=needless
6906	      export_dynamic=yes
6907	    fi
6908	    prev=
6909	    continue
6910	    ;;
6911	  *)
6912	    if test dlfiles = "$prev"; then
6913	      func_append dlfiles " $arg"
6914	    else
6915	      func_append dlprefiles " $arg"
6916	    fi
6917	    prev=
6918	    continue
6919	    ;;
6920	  esac
6921	  ;;
6922	expsyms)
6923	  export_symbols=$arg
6924	  test -f "$arg" \
6925	    || func_fatal_error "symbol file '$arg' does not exist"
6926	  prev=
6927	  continue
6928	  ;;
6929	expsyms_regex)
6930	  export_symbols_regex=$arg
6931	  prev=
6932	  continue
6933	  ;;
6934	framework)
6935	  case $host in
6936	    *-*-darwin*)
6937	      case "$deplibs " in
6938		*" $qarg.ltframework "*) ;;
6939		*) func_append deplibs " $qarg.ltframework" # this is fixed later
6940		   ;;
6941	      esac
6942	      ;;
6943	  esac
6944	  prev=
6945	  continue
6946	  ;;
6947	inst_prefix)
6948	  inst_prefix_dir=$arg
6949	  prev=
6950	  continue
6951	  ;;
6952	mllvm)
6953	  # Clang does not use LLVM to link, so we can simply discard any
6954	  # '-mllvm $arg' options when doing the link step.
6955	  prev=
6956	  continue
6957	  ;;
6958	objectlist)
6959	  if test -f "$arg"; then
6960	    save_arg=$arg
6961	    moreargs=
6962	    for fil in `cat "$save_arg"`
6963	    do
6964#	      func_append moreargs " $fil"
6965	      arg=$fil
6966	      # A libtool-controlled object.
6967
6968	      # Check to see that this really is a libtool object.
6969	      if func_lalib_unsafe_p "$arg"; then
6970		pic_object=
6971		non_pic_object=
6972
6973		# Read the .lo file
6974		func_source "$arg"
6975
6976		if test -z "$pic_object" ||
6977		   test -z "$non_pic_object" ||
6978		   test none = "$pic_object" &&
6979		   test none = "$non_pic_object"; then
6980		  func_fatal_error "cannot find name of object for '$arg'"
6981		fi
6982
6983		# Extract subdirectory from the argument.
6984		func_dirname "$arg" "/" ""
6985		xdir=$func_dirname_result
6986
6987		if test none != "$pic_object"; then
6988		  # Prepend the subdirectory the object is found in.
6989		  pic_object=$xdir$pic_object
6990
6991		  if test dlfiles = "$prev"; then
6992		    if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then
6993		      func_append dlfiles " $pic_object"
6994		      prev=
6995		      continue
6996		    else
6997		      # If libtool objects are unsupported, then we need to preload.
6998		      prev=dlprefiles
6999		    fi
7000		  fi
7001
7002		  # CHECK ME:  I think I busted this.  -Ossama
7003		  if test dlprefiles = "$prev"; then
7004		    # Preload the old-style object.
7005		    func_append dlprefiles " $pic_object"
7006		    prev=
7007		  fi
7008
7009		  # A PIC object.
7010		  func_append libobjs " $pic_object"
7011		  arg=$pic_object
7012		fi
7013
7014		# Non-PIC object.
7015		if test none != "$non_pic_object"; then
7016		  # Prepend the subdirectory the object is found in.
7017		  non_pic_object=$xdir$non_pic_object
7018
7019		  # A standard non-PIC object
7020		  func_append non_pic_objects " $non_pic_object"
7021		  if test -z "$pic_object" || test none = "$pic_object"; then
7022		    arg=$non_pic_object
7023		  fi
7024		else
7025		  # If the PIC object exists, use it instead.
7026		  # $xdir was prepended to $pic_object above.
7027		  non_pic_object=$pic_object
7028		  func_append non_pic_objects " $non_pic_object"
7029		fi
7030	      else
7031		# Only an error if not doing a dry-run.
7032		if $opt_dry_run; then
7033		  # Extract subdirectory from the argument.
7034		  func_dirname "$arg" "/" ""
7035		  xdir=$func_dirname_result
7036
7037		  func_lo2o "$arg"
7038		  pic_object=$xdir$objdir/$func_lo2o_result
7039		  non_pic_object=$xdir$func_lo2o_result
7040		  func_append libobjs " $pic_object"
7041		  func_append non_pic_objects " $non_pic_object"
7042	        else
7043		  func_fatal_error "'$arg' is not a valid libtool object"
7044		fi
7045	      fi
7046	    done
7047	  else
7048	    func_fatal_error "link input file '$arg' does not exist"
7049	  fi
7050	  arg=$save_arg
7051	  prev=
7052	  continue
7053	  ;;
7054	os2dllname)
7055	  os2dllname=$arg
7056	  prev=
7057	  continue
7058	  ;;
7059	precious_regex)
7060	  precious_files_regex=$arg
7061	  prev=
7062	  continue
7063	  ;;
7064	release)
7065	  release=-$arg
7066	  prev=
7067	  continue
7068	  ;;
7069	rpath | xrpath)
7070	  # We need an absolute path.
7071	  case $arg in
7072	  [\\/]* | [A-Za-z]:[\\/]*) ;;
7073	  *)
7074	    func_fatal_error "only absolute run-paths are allowed"
7075	    ;;
7076	  esac
7077	  if test rpath = "$prev"; then
7078	    case "$rpath " in
7079	    *" $arg "*) ;;
7080	    *) func_append rpath " $arg" ;;
7081	    esac
7082	  else
7083	    case "$xrpath " in
7084	    *" $arg "*) ;;
7085	    *) func_append xrpath " $arg" ;;
7086	    esac
7087	  fi
7088	  prev=
7089	  continue
7090	  ;;
7091	shrext)
7092	  shrext_cmds=$arg
7093	  prev=
7094	  continue
7095	  ;;
7096	weak)
7097	  func_append weak_libs " $arg"
7098	  prev=
7099	  continue
7100	  ;;
7101	xassembler)
7102	  func_append compiler_flags " -Xassembler $qarg"
7103	  prev=
7104	  func_append compile_command " -Xassembler $qarg"
7105	  func_append finalize_command " -Xassembler $qarg"
7106	  continue
7107	  ;;
7108	xcclinker)
7109	  func_append linker_flags " $qarg"
7110	  func_append compiler_flags " $qarg"
7111	  prev=
7112	  func_append compile_command " $qarg"
7113	  func_append finalize_command " $qarg"
7114	  continue
7115	  ;;
7116	xcompiler)
7117	  func_append compiler_flags " $qarg"
7118	  prev=
7119	  func_append compile_command " $qarg"
7120	  func_append finalize_command " $qarg"
7121	  continue
7122	  ;;
7123	xlinker)
7124	  func_append linker_flags " $qarg"
7125	  func_append compiler_flags " $wl$qarg"
7126	  prev=
7127	  func_append compile_command " $wl$qarg"
7128	  func_append finalize_command " $wl$qarg"
7129	  continue
7130	  ;;
7131	*)
7132	  eval "$prev=\"\$arg\""
7133	  prev=
7134	  continue
7135	  ;;
7136	esac
7137      fi # test -n "$prev"
7138
7139      prevarg=$arg
7140
7141      case $arg in
7142      -all-static)
7143	if test -n "$link_static_flag"; then
7144	  # See comment for -static flag below, for more details.
7145	  func_append compile_command " $link_static_flag"
7146	  func_append finalize_command " $link_static_flag"
7147	fi
7148	continue
7149	;;
7150
7151      -allow-undefined)
7152	# FIXME: remove this flag sometime in the future.
7153	func_fatal_error "'-allow-undefined' must not be used because it is the default"
7154	;;
7155
7156      -avoid-version)
7157	avoid_version=yes
7158	continue
7159	;;
7160
7161      -bindir)
7162	prev=bindir
7163	continue
7164	;;
7165
7166      -dlopen)
7167	prev=dlfiles
7168	continue
7169	;;
7170
7171      -dlpreopen)
7172	prev=dlprefiles
7173	continue
7174	;;
7175
7176      -export-dynamic)
7177	export_dynamic=yes
7178	continue
7179	;;
7180
7181      -export-symbols | -export-symbols-regex)
7182	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
7183	  func_fatal_error "more than one -exported-symbols argument is not allowed"
7184	fi
7185	if test X-export-symbols = "X$arg"; then
7186	  prev=expsyms
7187	else
7188	  prev=expsyms_regex
7189	fi
7190	continue
7191	;;
7192
7193      -framework)
7194	prev=framework
7195	continue
7196	;;
7197
7198      -inst-prefix-dir)
7199	prev=inst_prefix
7200	continue
7201	;;
7202
7203      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
7204      # so, if we see these flags be careful not to treat them like -L
7205      -L[A-Z][A-Z]*:*)
7206	case $with_gcc/$host in
7207	no/*-*-irix* | /*-*-irix*)
7208	  func_append compile_command " $arg"
7209	  func_append finalize_command " $arg"
7210	  ;;
7211	esac
7212	continue
7213	;;
7214
7215      -L*)
7216	func_stripname "-L" '' "$arg"
7217	if test -z "$func_stripname_result"; then
7218	  if test "$#" -gt 0; then
7219	    func_fatal_error "require no space between '-L' and '$1'"
7220	  else
7221	    func_fatal_error "need path for '-L' option"
7222	  fi
7223	fi
7224	func_resolve_sysroot "$func_stripname_result"
7225	dir=$func_resolve_sysroot_result
7226	# We need an absolute path.
7227	case $dir in
7228	[\\/]* | [A-Za-z]:[\\/]*) ;;
7229	*)
7230	  absdir=`cd "$dir" && pwd`
7231	  test -z "$absdir" && \
7232	    func_fatal_error "cannot determine absolute directory name of '$dir'"
7233	  dir=$absdir
7234	  ;;
7235	esac
7236	case "$deplibs " in
7237	*" -L$dir "* | *" $arg "*)
7238	  # Will only happen for absolute or sysroot arguments
7239	  ;;
7240	*)
7241	  # Preserve sysroot, but never include relative directories
7242	  case $dir in
7243	    [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;;
7244	    *) func_append deplibs " -L$dir" ;;
7245	  esac
7246	  func_append lib_search_path " $dir"
7247	  ;;
7248	esac
7249	case $host in
7250	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
7251	  testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'`
7252	  case :$dllsearchpath: in
7253	  *":$dir:"*) ;;
7254	  ::) dllsearchpath=$dir;;
7255	  *) func_append dllsearchpath ":$dir";;
7256	  esac
7257	  case :$dllsearchpath: in
7258	  *":$testbindir:"*) ;;
7259	  ::) dllsearchpath=$testbindir;;
7260	  *) func_append dllsearchpath ":$testbindir";;
7261	  esac
7262	  ;;
7263	esac
7264	continue
7265	;;
7266
7267      -l*)
7268	if test X-lc = "X$arg" || test X-lm = "X$arg"; then
7269	  case $host in
7270	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*)
7271	    # These systems don't actually have a C or math library (as such)
7272	    continue
7273	    ;;
7274	  *-*-os2*)
7275	    # These systems don't actually have a C library (as such)
7276	    test X-lc = "X$arg" && continue
7277	    ;;
7278	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig* | *-*-midnightbsd*)
7279	    # Do not include libc due to us having libc/libc_r.
7280	    test X-lc = "X$arg" && continue
7281	    ;;
7282	  *-*-rhapsody* | *-*-darwin1.[012])
7283	    # Rhapsody C and math libraries are in the System framework
7284	    func_append deplibs " System.ltframework"
7285	    continue
7286	    ;;
7287	  *-*-sco3.2v5* | *-*-sco5v6*)
7288	    # Causes problems with __ctype
7289	    test X-lc = "X$arg" && continue
7290	    ;;
7291	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
7292	    # Compiler inserts libc in the correct place for threads to work
7293	    test X-lc = "X$arg" && continue
7294	    ;;
7295	  esac
7296	elif test X-lc_r = "X$arg"; then
7297	 case $host in
7298	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig* | *-*-midnightbsd*)
7299	   # Do not include libc_r directly, use -pthread flag.
7300	   continue
7301	   ;;
7302	 esac
7303	fi
7304	func_append deplibs " $arg"
7305	continue
7306	;;
7307
7308      -mllvm)
7309	prev=mllvm
7310	continue
7311	;;
7312
7313      -module)
7314	module=yes
7315	continue
7316	;;
7317
7318      # Tru64 UNIX uses -model [arg] to determine the layout of C++
7319      # classes, name mangling, and exception handling.
7320      # Darwin uses the -arch flag to determine output architecture.
7321      -model|-arch|-isysroot|--sysroot)
7322	func_append compiler_flags " $arg"
7323	func_append compile_command " $arg"
7324	func_append finalize_command " $arg"
7325	prev=xcompiler
7326	continue
7327	;;
7328     # Solaris ld rejects as of 11.4. Refer to Oracle bug 22985199.
7329     -pthread)
7330	case $host in
7331	  *solaris2*) ;;
7332	  *)
7333	    case "$new_inherited_linker_flags " in
7334	        *" $arg "*) ;;
7335	        * ) func_append new_inherited_linker_flags " $arg" ;;
7336	    esac
7337	  ;;
7338	esac
7339	continue
7340	;;
7341      -mt|-mthreads|-kthread|-Kthread|-pthreads|--thread-safe \
7342      |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
7343	func_append compiler_flags " $arg"
7344	func_append compile_command " $arg"
7345	func_append finalize_command " $arg"
7346	case "$new_inherited_linker_flags " in
7347	    *" $arg "*) ;;
7348	    * ) func_append new_inherited_linker_flags " $arg" ;;
7349	esac
7350	continue
7351	;;
7352
7353      -multi_module)
7354	single_module=$wl-multi_module
7355	continue
7356	;;
7357
7358      -no-fast-install)
7359	fast_install=no
7360	continue
7361	;;
7362
7363      -no-install)
7364	case $host in
7365	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
7366	  # The PATH hackery in wrapper scripts is required on Windows
7367	  # and Darwin in order for the loader to find any dlls it needs.
7368	  func_warning "'-no-install' is ignored for $host"
7369	  func_warning "assuming '-no-fast-install' instead"
7370	  fast_install=no
7371	  ;;
7372	*) no_install=yes ;;
7373	esac
7374	continue
7375	;;
7376
7377      -no-undefined)
7378	allow_undefined=no
7379	continue
7380	;;
7381
7382      -objectlist)
7383	prev=objectlist
7384	continue
7385	;;
7386
7387      -os2dllname)
7388	prev=os2dllname
7389	continue
7390	;;
7391
7392      -o) prev=output ;;
7393
7394      -precious-files-regex)
7395	prev=precious_regex
7396	continue
7397	;;
7398
7399      -release)
7400	prev=release
7401	continue
7402	;;
7403
7404      -rpath)
7405	prev=rpath
7406	continue
7407	;;
7408
7409      -R)
7410	prev=xrpath
7411	continue
7412	;;
7413
7414      -R*)
7415	func_stripname '-R' '' "$arg"
7416	dir=$func_stripname_result
7417	# We need an absolute path.
7418	case $dir in
7419	[\\/]* | [A-Za-z]:[\\/]*) ;;
7420	=*)
7421	  func_stripname '=' '' "$dir"
7422	  dir=$lt_sysroot$func_stripname_result
7423	  ;;
7424	*)
7425	  func_fatal_error "only absolute run-paths are allowed"
7426	  ;;
7427	esac
7428	case "$xrpath " in
7429	*" $dir "*) ;;
7430	*) func_append xrpath " $dir" ;;
7431	esac
7432	continue
7433	;;
7434
7435      -shared)
7436	# The effects of -shared are defined in a previous loop.
7437	continue
7438	;;
7439
7440      -shrext)
7441	prev=shrext
7442	continue
7443	;;
7444
7445      -static | -static-libtool-libs)
7446	# The effects of -static are defined in a previous loop.
7447	# We used to do the same as -all-static on platforms that
7448	# didn't have a PIC flag, but the assumption that the effects
7449	# would be equivalent was wrong.  It would break on at least
7450	# Digital Unix and AIX.
7451	continue
7452	;;
7453
7454      -thread-safe)
7455	thread_safe=yes
7456	continue
7457	;;
7458
7459      -version-info)
7460	prev=vinfo
7461	continue
7462	;;
7463
7464      -version-number)
7465	prev=vinfo
7466	vinfo_number=yes
7467	continue
7468	;;
7469
7470      -weak)
7471        prev=weak
7472	continue
7473	;;
7474
7475      -Wc,*)
7476	func_stripname '-Wc,' '' "$arg"
7477	args=$func_stripname_result
7478	arg=
7479	save_ifs=$IFS; IFS=,
7480	for flag in $args; do
7481	  IFS=$save_ifs
7482          func_quote_arg pretty "$flag"
7483	  func_append arg " $func_quote_arg_result"
7484	  func_append compiler_flags " $func_quote_arg_result"
7485	done
7486	IFS=$save_ifs
7487	func_stripname ' ' '' "$arg"
7488	arg=$func_stripname_result
7489	;;
7490
7491      -Wl,*)
7492	func_stripname '-Wl,' '' "$arg"
7493	args=$func_stripname_result
7494	arg=
7495	save_ifs=$IFS; IFS=,
7496	for flag in $args; do
7497	  IFS=$save_ifs
7498          func_quote_arg pretty "$flag"
7499	  func_append arg " $wl$func_quote_arg_result"
7500	  func_append compiler_flags " $wl$func_quote_arg_result"
7501	  func_append linker_flags " $func_quote_arg_result"
7502	done
7503	IFS=$save_ifs
7504	func_stripname ' ' '' "$arg"
7505	arg=$func_stripname_result
7506	;;
7507
7508      -Xassembler)
7509        prev=xassembler
7510        continue
7511        ;;
7512
7513      -Xcompiler)
7514	prev=xcompiler
7515	continue
7516	;;
7517
7518      -Xlinker)
7519	prev=xlinker
7520	continue
7521	;;
7522
7523      -XCClinker)
7524	prev=xcclinker
7525	continue
7526	;;
7527
7528      # -msg_* for osf cc
7529      -msg_*)
7530	func_quote_arg pretty "$arg"
7531	arg=$func_quote_arg_result
7532	;;
7533
7534      # Flags to be passed through unchanged, with rationale:
7535      # -64, -mips[0-9]      enable 64-bit mode for the SGI compiler
7536      # -r[0-9][0-9]*        specify processor for the SGI compiler
7537      # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler
7538      # +DA*, +DD*           enable 64-bit mode for the HP compiler
7539      # -q*                  compiler args for the IBM compiler
7540      # -m*, -t[45]*, -txscale* architecture-specific flags for GCC
7541      # -F/path              path to uninstalled frameworks, gcc on darwin
7542      # -p, -pg, --coverage, -fprofile-*  profiling flags for GCC
7543      # -fstack-protector*   stack protector flags for GCC
7544      # @file                GCC response files
7545      # -tp=*                Portland pgcc target processor selection
7546      # --sysroot=*          for sysroot support
7547      # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
7548      # -specs=*             GCC specs files
7549      # -stdlib=*            select c++ std lib with clang
7550      # -fsanitize=*         Clang/GCC memory and address sanitizer
7551      # -fuse-ld=*           Linker select flags for GCC
7552      # -static-*            direct GCC to link specific libraries statically
7553      # -fcilkplus           Cilk Plus language extension features for C/C++
7554      # -Wa,*                Pass flags directly to the assembler
7555      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
7556      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
7557      -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \
7558      -specs=*|-fsanitize=*|-fuse-ld=*|-static-*|-fcilkplus|-Wa,*)
7559        func_quote_arg pretty "$arg"
7560	arg=$func_quote_arg_result
7561        func_append compile_command " $arg"
7562        func_append finalize_command " $arg"
7563        func_append compiler_flags " $arg"
7564        continue
7565        ;;
7566
7567      -Z*)
7568        if test os2 = "`expr $host : '.*\(os2\)'`"; then
7569          # OS/2 uses -Zxxx to specify OS/2-specific options
7570	  compiler_flags="$compiler_flags $arg"
7571	  func_append compile_command " $arg"
7572	  func_append finalize_command " $arg"
7573	  case $arg in
7574	  -Zlinker | -Zstack)
7575	    prev=xcompiler
7576	    ;;
7577	  esac
7578	  continue
7579        else
7580	  # Otherwise treat like 'Some other compiler flag' below
7581	  func_quote_arg pretty "$arg"
7582	  arg=$func_quote_arg_result
7583        fi
7584	;;
7585
7586      # Some other compiler flag.
7587      -* | +*)
7588        func_quote_arg pretty "$arg"
7589	arg=$func_quote_arg_result
7590	;;
7591
7592      *.$objext)
7593	# A standard object.
7594	func_append objs " $arg"
7595	;;
7596
7597      *.lo)
7598	# A libtool-controlled object.
7599
7600	# Check to see that this really is a libtool object.
7601	if func_lalib_unsafe_p "$arg"; then
7602	  pic_object=
7603	  non_pic_object=
7604
7605	  # Read the .lo file
7606	  func_source "$arg"
7607
7608	  if test -z "$pic_object" ||
7609	     test -z "$non_pic_object" ||
7610	     test none = "$pic_object" &&
7611	     test none = "$non_pic_object"; then
7612	    func_fatal_error "cannot find name of object for '$arg'"
7613	  fi
7614
7615	  # Extract subdirectory from the argument.
7616	  func_dirname "$arg" "/" ""
7617	  xdir=$func_dirname_result
7618
7619	  test none = "$pic_object" || {
7620	    # Prepend the subdirectory the object is found in.
7621	    pic_object=$xdir$pic_object
7622
7623	    if test dlfiles = "$prev"; then
7624	      if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then
7625		func_append dlfiles " $pic_object"
7626		prev=
7627		continue
7628	      else
7629		# If libtool objects are unsupported, then we need to preload.
7630		prev=dlprefiles
7631	      fi
7632	    fi
7633
7634	    # CHECK ME:  I think I busted this.  -Ossama
7635	    if test dlprefiles = "$prev"; then
7636	      # Preload the old-style object.
7637	      func_append dlprefiles " $pic_object"
7638	      prev=
7639	    fi
7640
7641	    # A PIC object.
7642	    func_append libobjs " $pic_object"
7643	    arg=$pic_object
7644	  }
7645
7646	  # Non-PIC object.
7647	  if test none != "$non_pic_object"; then
7648	    # Prepend the subdirectory the object is found in.
7649	    non_pic_object=$xdir$non_pic_object
7650
7651	    # A standard non-PIC object
7652	    func_append non_pic_objects " $non_pic_object"
7653	    if test -z "$pic_object" || test none = "$pic_object"; then
7654	      arg=$non_pic_object
7655	    fi
7656	  else
7657	    # If the PIC object exists, use it instead.
7658	    # $xdir was prepended to $pic_object above.
7659	    non_pic_object=$pic_object
7660	    func_append non_pic_objects " $non_pic_object"
7661	  fi
7662	else
7663	  # Only an error if not doing a dry-run.
7664	  if $opt_dry_run; then
7665	    # Extract subdirectory from the argument.
7666	    func_dirname "$arg" "/" ""
7667	    xdir=$func_dirname_result
7668
7669	    func_lo2o "$arg"
7670	    pic_object=$xdir$objdir/$func_lo2o_result
7671	    non_pic_object=$xdir$func_lo2o_result
7672	    func_append libobjs " $pic_object"
7673	    func_append non_pic_objects " $non_pic_object"
7674	  else
7675	    func_fatal_error "'$arg' is not a valid libtool object"
7676	  fi
7677	fi
7678	;;
7679
7680      *.$libext)
7681	# An archive.
7682	func_append deplibs " $arg"
7683	func_append old_deplibs " $arg"
7684	continue
7685	;;
7686
7687      *.la)
7688	# A libtool-controlled library.
7689
7690	func_resolve_sysroot "$arg"
7691	if test dlfiles = "$prev"; then
7692	  # This library was specified with -dlopen.
7693	  func_append dlfiles " $func_resolve_sysroot_result"
7694	  prev=
7695	elif test dlprefiles = "$prev"; then
7696	  # The library was specified with -dlpreopen.
7697	  func_append dlprefiles " $func_resolve_sysroot_result"
7698	  prev=
7699	else
7700	  func_append deplibs " $func_resolve_sysroot_result"
7701	fi
7702	continue
7703	;;
7704
7705      # Some other compiler argument.
7706      *)
7707	# Unknown arguments in both finalize_command and compile_command need
7708	# to be aesthetically quoted because they are evaled later.
7709	func_quote_arg pretty "$arg"
7710	arg=$func_quote_arg_result
7711	;;
7712      esac # arg
7713
7714      # Now actually substitute the argument into the commands.
7715      if test -n "$arg"; then
7716	func_append compile_command " $arg"
7717	func_append finalize_command " $arg"
7718      fi
7719    done # argument parsing loop
7720
7721    test -n "$prev" && \
7722      func_fatal_help "the '$prevarg' option requires an argument"
7723
7724    if test yes = "$export_dynamic" && test -n "$export_dynamic_flag_spec"; then
7725      eval arg=\"$export_dynamic_flag_spec\"
7726      func_append compile_command " $arg"
7727      func_append finalize_command " $arg"
7728    fi
7729
7730    oldlibs=
7731    # calculate the name of the file, without its directory
7732    func_basename "$output"
7733    outputname=$func_basename_result
7734    libobjs_save=$libobjs
7735
7736    if test -n "$shlibpath_var"; then
7737      # get the directories listed in $shlibpath_var
7738      eval shlib_search_path=\`\$ECHO \"\$$shlibpath_var\" \| \$SED \'s/:/ /g\'\`
7739    else
7740      shlib_search_path=
7741    fi
7742    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
7743    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
7744
7745    # Definition is injected by LT_CONFIG during libtool generation.
7746    func_munge_path_list sys_lib_dlsearch_path "$LT_SYS_LIBRARY_PATH"
7747
7748    func_dirname "$output" "/" ""
7749    output_objdir=$func_dirname_result$objdir
7750    func_to_tool_file "$output_objdir/"
7751    tool_output_objdir=$func_to_tool_file_result
7752    # Create the object directory.
7753    func_mkdir_p "$output_objdir"
7754
7755    # Determine the type of output
7756    case $output in
7757    "")
7758      func_fatal_help "you must specify an output file"
7759      ;;
7760    *.$libext) linkmode=oldlib ;;
7761    *.lo | *.$objext) linkmode=obj ;;
7762    *.la) linkmode=lib ;;
7763    *) linkmode=prog ;; # Anything else should be a program.
7764    esac
7765
7766    specialdeplibs=
7767
7768    libs=
7769    # Find all interdependent deplibs by searching for libraries
7770    # that are linked more than once (e.g. -la -lb -la)
7771    for deplib in $deplibs; do
7772      if $opt_preserve_dup_deps; then
7773	case "$libs " in
7774	*" $deplib "*) func_append specialdeplibs " $deplib" ;;
7775	esac
7776      fi
7777      func_append libs " $deplib"
7778    done
7779
7780    if test lib = "$linkmode"; then
7781      libs="$predeps $libs $compiler_lib_search_path $postdeps"
7782
7783      # Compute libraries that are listed more than once in $predeps
7784      # $postdeps and mark them as special (i.e., whose duplicates are
7785      # not to be eliminated).
7786      pre_post_deps=
7787      if $opt_duplicate_compiler_generated_deps; then
7788	for pre_post_dep in $predeps $postdeps; do
7789	  case "$pre_post_deps " in
7790	  *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;;
7791	  esac
7792	  func_append pre_post_deps " $pre_post_dep"
7793	done
7794      fi
7795      pre_post_deps=
7796    fi
7797
7798    deplibs=
7799    newdependency_libs=
7800    newlib_search_path=
7801    need_relink=no # whether we're linking any uninstalled libtool libraries
7802    notinst_deplibs= # not-installed libtool libraries
7803    notinst_path= # paths that contain not-installed libtool libraries
7804
7805    case $linkmode in
7806    lib)
7807	passes="conv dlpreopen link"
7808	for file in $dlfiles $dlprefiles; do
7809	  case $file in
7810	  *.la) ;;
7811	  *)
7812	    func_fatal_help "libraries can '-dlopen' only libtool libraries: $file"
7813	    ;;
7814	  esac
7815	done
7816	;;
7817    prog)
7818	compile_deplibs=
7819	finalize_deplibs=
7820	alldeplibs=false
7821	newdlfiles=
7822	newdlprefiles=
7823	passes="conv scan dlopen dlpreopen link"
7824	;;
7825    *)  passes="conv"
7826	;;
7827    esac
7828
7829    for pass in $passes; do
7830      # The preopen pass in lib mode reverses $deplibs; put it back here
7831      # so that -L comes before libs that need it for instance...
7832      if test lib,link = "$linkmode,$pass"; then
7833	## FIXME: Find the place where the list is rebuilt in the wrong
7834	##        order, and fix it there properly
7835        tmp_deplibs=
7836	for deplib in $deplibs; do
7837	  tmp_deplibs="$deplib $tmp_deplibs"
7838	done
7839	deplibs=$tmp_deplibs
7840      fi
7841
7842      if test lib,link = "$linkmode,$pass" ||
7843	 test prog,scan = "$linkmode,$pass"; then
7844	libs=$deplibs
7845	deplibs=
7846      fi
7847      if test prog = "$linkmode"; then
7848	case $pass in
7849	dlopen) libs=$dlfiles ;;
7850	dlpreopen) libs=$dlprefiles ;;
7851	link)
7852	  libs="$deplibs %DEPLIBS%"
7853	  test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs"
7854	  ;;
7855	esac
7856      fi
7857      if test lib,dlpreopen = "$linkmode,$pass"; then
7858	# Collect and forward deplibs of preopened libtool libs
7859	for lib in $dlprefiles; do
7860	  # Ignore non-libtool-libs
7861	  dependency_libs=
7862	  func_resolve_sysroot "$lib"
7863	  case $lib in
7864	  *.la)	func_source "$func_resolve_sysroot_result" ;;
7865	  esac
7866
7867	  # Collect preopened libtool deplibs, except any this library
7868	  # has declared as weak libs
7869	  for deplib in $dependency_libs; do
7870	    func_basename "$deplib"
7871            deplib_base=$func_basename_result
7872	    case " $weak_libs " in
7873	    *" $deplib_base "*) ;;
7874	    *) func_append deplibs " $deplib" ;;
7875	    esac
7876	  done
7877	done
7878	libs=$dlprefiles
7879      fi
7880      if test dlopen = "$pass"; then
7881	# Collect dlpreopened libraries
7882	save_deplibs=$deplibs
7883	deplibs=
7884      fi
7885
7886      for deplib in $libs; do
7887	lib=
7888	found=false
7889	case $deplib in
7890	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
7891        |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
7892	  if test prog,link = "$linkmode,$pass"; then
7893	    compile_deplibs="$deplib $compile_deplibs"
7894	    finalize_deplibs="$deplib $finalize_deplibs"
7895	  else
7896	    func_append compiler_flags " $deplib"
7897	    if test lib = "$linkmode"; then
7898		case "$new_inherited_linker_flags " in
7899		    *" $deplib "*) ;;
7900		    * ) func_append new_inherited_linker_flags " $deplib" ;;
7901		esac
7902	    fi
7903	  fi
7904	  continue
7905	  ;;
7906	-l*)
7907	  if test lib != "$linkmode" && test prog != "$linkmode"; then
7908	    func_warning "'-l' is ignored for archives/objects"
7909	    continue
7910	  fi
7911	  func_stripname '-l' '' "$deplib"
7912	  name=$func_stripname_result
7913	  if test lib = "$linkmode"; then
7914	    searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
7915	  else
7916	    searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
7917	  fi
7918	  for searchdir in $searchdirs; do
7919	    for search_ext in .la $std_shrext .so .a; do
7920	      # Search the libtool library
7921	      lib=$searchdir/lib$name$search_ext
7922	      if test -f "$lib"; then
7923		if test .la = "$search_ext"; then
7924		  found=:
7925		else
7926		  found=false
7927		fi
7928		break 2
7929	      fi
7930	    done
7931	  done
7932	  if $found; then
7933	    # deplib is a libtool library
7934	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
7935	    # We need to do some special things here, and not later.
7936	    if test yes = "$allow_libtool_libs_with_static_runtimes"; then
7937	      case " $predeps $postdeps " in
7938	      *" $deplib "*)
7939		if func_lalib_p "$lib"; then
7940		  library_names=
7941		  old_library=
7942		  func_source "$lib"
7943		  for l in $old_library $library_names; do
7944		    ll=$l
7945		  done
7946		  if test "X$ll" = "X$old_library"; then # only static version available
7947		    found=false
7948		    func_dirname "$lib" "" "."
7949		    ladir=$func_dirname_result
7950		    lib=$ladir/$old_library
7951		    if test prog,link = "$linkmode,$pass"; then
7952		      compile_deplibs="$deplib $compile_deplibs"
7953		      finalize_deplibs="$deplib $finalize_deplibs"
7954		    else
7955		      deplibs="$deplib $deplibs"
7956		      test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs"
7957		    fi
7958		    continue
7959		  fi
7960		fi
7961		;;
7962	      *) ;;
7963	      esac
7964	    fi
7965	  else
7966	    # deplib doesn't seem to be a libtool library
7967	    if test prog,link = "$linkmode,$pass"; then
7968	      compile_deplibs="$deplib $compile_deplibs"
7969	      finalize_deplibs="$deplib $finalize_deplibs"
7970	    else
7971	      deplibs="$deplib $deplibs"
7972	      test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs"
7973	    fi
7974	    continue
7975	  fi
7976	  ;; # -l
7977	*.ltframework)
7978	  if test prog,link = "$linkmode,$pass"; then
7979	    compile_deplibs="$deplib $compile_deplibs"
7980	    finalize_deplibs="$deplib $finalize_deplibs"
7981	  else
7982	    deplibs="$deplib $deplibs"
7983	    if test lib = "$linkmode"; then
7984		case "$new_inherited_linker_flags " in
7985		    *" $deplib "*) ;;
7986		    * ) func_append new_inherited_linker_flags " $deplib" ;;
7987		esac
7988	    fi
7989	  fi
7990	  continue
7991	  ;;
7992	-L*)
7993	  case $linkmode in
7994	  lib)
7995	    deplibs="$deplib $deplibs"
7996	    test conv = "$pass" && continue
7997	    newdependency_libs="$deplib $newdependency_libs"
7998	    func_stripname '-L' '' "$deplib"
7999	    func_resolve_sysroot "$func_stripname_result"
8000	    func_append newlib_search_path " $func_resolve_sysroot_result"
8001	    ;;
8002	  prog)
8003	    if test conv = "$pass"; then
8004	      deplibs="$deplib $deplibs"
8005	      continue
8006	    fi
8007	    if test scan = "$pass"; then
8008	      deplibs="$deplib $deplibs"
8009	    else
8010	      compile_deplibs="$deplib $compile_deplibs"
8011	      finalize_deplibs="$deplib $finalize_deplibs"
8012	    fi
8013	    func_stripname '-L' '' "$deplib"
8014	    func_resolve_sysroot "$func_stripname_result"
8015	    func_append newlib_search_path " $func_resolve_sysroot_result"
8016	    ;;
8017	  *)
8018	    func_warning "'-L' is ignored for archives/objects"
8019	    ;;
8020	  esac # linkmode
8021	  continue
8022	  ;; # -L
8023	-R*)
8024	  if test link = "$pass"; then
8025	    func_stripname '-R' '' "$deplib"
8026	    func_resolve_sysroot "$func_stripname_result"
8027	    dir=$func_resolve_sysroot_result
8028	    # Make sure the xrpath contains only unique directories.
8029	    case "$xrpath " in
8030	    *" $dir "*) ;;
8031	    *) func_append xrpath " $dir" ;;
8032	    esac
8033	  fi
8034	  deplibs="$deplib $deplibs"
8035	  continue
8036	  ;;
8037	*.la)
8038	  func_resolve_sysroot "$deplib"
8039	  lib=$func_resolve_sysroot_result
8040	  ;;
8041	*.$libext)
8042	  if test conv = "$pass"; then
8043	    deplibs="$deplib $deplibs"
8044	    continue
8045	  fi
8046	  case $linkmode in
8047	  lib)
8048	    # Linking convenience modules into shared libraries is allowed,
8049	    # but linking other static libraries is non-portable.
8050	    case " $dlpreconveniencelibs " in
8051	    *" $deplib "*) ;;
8052	    *)
8053	      valid_a_lib=false
8054	      case $deplibs_check_method in
8055		match_pattern*)
8056		  set dummy $deplibs_check_method; shift
8057		  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
8058		  if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \
8059		    | $EGREP "$match_pattern_regex" > /dev/null; then
8060		    valid_a_lib=:
8061		  fi
8062		;;
8063		pass_all)
8064		  valid_a_lib=:
8065		;;
8066	      esac
8067	      if $valid_a_lib; then
8068		echo
8069		$ECHO "*** Warning: Linking the shared library $output against the"
8070		$ECHO "*** static library $deplib is not portable!"
8071		deplibs="$deplib $deplibs"
8072	      else
8073		echo
8074		$ECHO "*** Warning: Trying to link with static lib archive $deplib."
8075		echo "*** I have the capability to make that library automatically link in when"
8076		echo "*** you link to this library.  But I can only do this if you have a"
8077		echo "*** shared version of the library, which you do not appear to have"
8078		echo "*** because the file extensions .$libext of this argument makes me believe"
8079		echo "*** that it is just a static archive that I should not use here."
8080	      fi
8081	      ;;
8082	    esac
8083	    continue
8084	    ;;
8085	  prog)
8086	    if test link != "$pass"; then
8087	      deplibs="$deplib $deplibs"
8088	    else
8089	      compile_deplibs="$deplib $compile_deplibs"
8090	      finalize_deplibs="$deplib $finalize_deplibs"
8091	    fi
8092	    continue
8093	    ;;
8094	  esac # linkmode
8095	  ;; # *.$libext
8096	*.lo | *.$objext)
8097	  if test conv = "$pass"; then
8098	    deplibs="$deplib $deplibs"
8099	  elif test prog = "$linkmode"; then
8100	    if test dlpreopen = "$pass" || test yes != "$dlopen_support" || test no = "$build_libtool_libs"; then
8101	      # If there is no dlopen support or we're linking statically,
8102	      # we need to preload.
8103	      func_append newdlprefiles " $deplib"
8104	      compile_deplibs="$deplib $compile_deplibs"
8105	      finalize_deplibs="$deplib $finalize_deplibs"
8106	    else
8107	      func_append newdlfiles " $deplib"
8108	    fi
8109	  fi
8110	  continue
8111	  ;;
8112	%DEPLIBS%)
8113	  alldeplibs=:
8114	  continue
8115	  ;;
8116	esac # case $deplib
8117
8118	$found || test -f "$lib" \
8119	  || func_fatal_error "cannot find the library '$lib' or unhandled argument '$deplib'"
8120
8121	# Check to see that this really is a libtool archive.
8122	func_lalib_unsafe_p "$lib" \
8123	  || func_fatal_error "'$lib' is not a valid libtool archive"
8124
8125	func_dirname "$lib" "" "."
8126	ladir=$func_dirname_result
8127
8128	dlname=
8129	dlopen=
8130	dlpreopen=
8131	libdir=
8132	library_names=
8133	old_library=
8134	inherited_linker_flags=
8135	# If the library was installed with an old release of libtool,
8136	# it will not redefine variables installed, or shouldnotlink
8137	installed=yes
8138	shouldnotlink=no
8139	avoidtemprpath=
8140
8141
8142	# Read the .la file
8143	func_source "$lib"
8144
8145	# Convert "-framework foo" to "foo.ltframework"
8146	if test -n "$inherited_linker_flags"; then
8147	  tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`
8148	  for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
8149	    case " $new_inherited_linker_flags " in
8150	      *" $tmp_inherited_linker_flag "*) ;;
8151	      *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";;
8152	    esac
8153	  done
8154	fi
8155	dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
8156	if test lib,link = "$linkmode,$pass" ||
8157	   test prog,scan = "$linkmode,$pass" ||
8158	   { test prog != "$linkmode" && test lib != "$linkmode"; }; then
8159	  test -n "$dlopen" && func_append dlfiles " $dlopen"
8160	  test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen"
8161	fi
8162
8163	if test conv = "$pass"; then
8164	  # Only check for convenience libraries
8165	  deplibs="$lib $deplibs"
8166	  if test -z "$libdir"; then
8167	    if test -z "$old_library"; then
8168	      func_fatal_error "cannot find name of link library for '$lib'"
8169	    fi
8170	    # It is a libtool convenience library, so add in its objects.
8171	    func_append convenience " $ladir/$objdir/$old_library"
8172	    func_append old_convenience " $ladir/$objdir/$old_library"
8173	    tmp_libs=
8174	    for deplib in $dependency_libs; do
8175	      deplibs="$deplib $deplibs"
8176	      if $opt_preserve_dup_deps; then
8177		case "$tmp_libs " in
8178		*" $deplib "*) func_append specialdeplibs " $deplib" ;;
8179		esac
8180	      fi
8181	      func_append tmp_libs " $deplib"
8182	    done
8183	  elif test prog != "$linkmode" && test lib != "$linkmode"; then
8184	    func_fatal_error "'$lib' is not a convenience library"
8185	  fi
8186	  continue
8187	fi # $pass = conv
8188
8189
8190	# Get the name of the library we link against.
8191	linklib=
8192	if test -n "$old_library" &&
8193	   { test yes = "$prefer_static_libs" ||
8194	     test built,no = "$prefer_static_libs,$installed"; }; then
8195	  linklib=$old_library
8196	else
8197	  for l in $old_library $library_names; do
8198	    linklib=$l
8199	  done
8200	fi
8201	if test -z "$linklib"; then
8202	  func_fatal_error "cannot find name of link library for '$lib'"
8203	fi
8204
8205	# This library was specified with -dlopen.
8206	if test dlopen = "$pass"; then
8207	  test -z "$libdir" \
8208	    && func_fatal_error "cannot -dlopen a convenience library: '$lib'"
8209	  if test -z "$dlname" ||
8210	     test yes != "$dlopen_support" ||
8211	     test no = "$build_libtool_libs"
8212	  then
8213	    # If there is no dlname, no dlopen support or we're linking
8214	    # statically, we need to preload.  We also need to preload any
8215	    # dependent libraries so libltdl's deplib preloader doesn't
8216	    # bomb out in the load deplibs phase.
8217	    func_append dlprefiles " $lib $dependency_libs"
8218	  else
8219	    func_append newdlfiles " $lib"
8220	  fi
8221	  continue
8222	fi # $pass = dlopen
8223
8224	# We need an absolute path.
8225	case $ladir in
8226	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir=$ladir ;;
8227	*)
8228	  abs_ladir=`cd "$ladir" && pwd`
8229	  if test -z "$abs_ladir"; then
8230	    func_warning "cannot determine absolute directory name of '$ladir'"
8231	    func_warning "passing it literally to the linker, although it might fail"
8232	    abs_ladir=$ladir
8233	  fi
8234	  ;;
8235	esac
8236	func_basename "$lib"
8237	laname=$func_basename_result
8238
8239	# Find the relevant object directory and library name.
8240	if test yes = "$installed"; then
8241	  if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
8242	    func_warning "library '$lib' was moved."
8243	    dir=$ladir
8244	    absdir=$abs_ladir
8245	    libdir=$abs_ladir
8246	  else
8247	    dir=$lt_sysroot$libdir
8248	    absdir=$lt_sysroot$libdir
8249	  fi
8250	  test yes = "$hardcode_automatic" && avoidtemprpath=yes
8251	else
8252	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
8253	    dir=$ladir
8254	    absdir=$abs_ladir
8255	    # Remove this search path later
8256	    func_append notinst_path " $abs_ladir"
8257	  else
8258	    dir=$ladir/$objdir
8259	    absdir=$abs_ladir/$objdir
8260	    # Remove this search path later
8261	    func_append notinst_path " $abs_ladir"
8262	  fi
8263	fi # $installed = yes
8264	func_stripname 'lib' '.la' "$laname"
8265	name=$func_stripname_result
8266
8267	# This library was specified with -dlpreopen.
8268	if test dlpreopen = "$pass"; then
8269	  if test -z "$libdir" && test prog = "$linkmode"; then
8270	    func_fatal_error "only libraries may -dlpreopen a convenience library: '$lib'"
8271	  fi
8272	  case $host in
8273	    # special handling for platforms with PE-DLLs.
8274	    *cygwin* | *mingw* | *cegcc* )
8275	      # Linker will automatically link against shared library if both
8276	      # static and shared are present.  Therefore, ensure we extract
8277	      # symbols from the import library if a shared library is present
8278	      # (otherwise, the dlopen module name will be incorrect).  We do
8279	      # this by putting the import library name into $newdlprefiles.
8280	      # We recover the dlopen module name by 'saving' the la file
8281	      # name in a special purpose variable, and (later) extracting the
8282	      # dlname from the la file.
8283	      if test -n "$dlname"; then
8284	        func_tr_sh "$dir/$linklib"
8285	        eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname"
8286	        func_append newdlprefiles " $dir/$linklib"
8287	      else
8288	        func_append newdlprefiles " $dir/$old_library"
8289	        # Keep a list of preopened convenience libraries to check
8290	        # that they are being used correctly in the link pass.
8291	        test -z "$libdir" && \
8292	          func_append dlpreconveniencelibs " $dir/$old_library"
8293	      fi
8294	    ;;
8295	    * )
8296	      # Prefer using a static library (so that no silly _DYNAMIC symbols
8297	      # are required to link).
8298	      if test -n "$old_library"; then
8299	        func_append newdlprefiles " $dir/$old_library"
8300	        # Keep a list of preopened convenience libraries to check
8301	        # that they are being used correctly in the link pass.
8302	        test -z "$libdir" && \
8303	          func_append dlpreconveniencelibs " $dir/$old_library"
8304	      # Otherwise, use the dlname, so that lt_dlopen finds it.
8305	      elif test -n "$dlname"; then
8306	        func_append newdlprefiles " $dir/$dlname"
8307	      else
8308	        func_append newdlprefiles " $dir/$linklib"
8309	      fi
8310	    ;;
8311	  esac
8312	fi # $pass = dlpreopen
8313
8314	if test -z "$libdir"; then
8315	  # Link the convenience library
8316	  if test lib = "$linkmode"; then
8317	    deplibs="$dir/$old_library $deplibs"
8318	  elif test prog,link = "$linkmode,$pass"; then
8319	    compile_deplibs="$dir/$old_library $compile_deplibs"
8320	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
8321	  else
8322	    deplibs="$lib $deplibs" # used for prog,scan pass
8323	  fi
8324	  continue
8325	fi
8326
8327
8328	if test prog = "$linkmode" && test link != "$pass"; then
8329	  func_append newlib_search_path " $ladir"
8330	  deplibs="$lib $deplibs"
8331
8332	  linkalldeplibs=false
8333	  if test no != "$link_all_deplibs" || test -z "$library_names" ||
8334	     test no = "$build_libtool_libs"; then
8335	    linkalldeplibs=:
8336	  fi
8337
8338	  tmp_libs=
8339	  for deplib in $dependency_libs; do
8340	    case $deplib in
8341	    -L*) func_stripname '-L' '' "$deplib"
8342	         func_resolve_sysroot "$func_stripname_result"
8343	         func_append newlib_search_path " $func_resolve_sysroot_result"
8344		 ;;
8345	    esac
8346	    # Need to link against all dependency_libs?
8347	    if $linkalldeplibs; then
8348	      deplibs="$deplib $deplibs"
8349	    else
8350	      # Need to hardcode shared library paths
8351	      # or/and link against static libraries
8352	      newdependency_libs="$deplib $newdependency_libs"
8353	    fi
8354	    if $opt_preserve_dup_deps; then
8355	      case "$tmp_libs " in
8356	      *" $deplib "*) func_append specialdeplibs " $deplib" ;;
8357	      esac
8358	    fi
8359	    func_append tmp_libs " $deplib"
8360	  done # for deplib
8361	  continue
8362	fi # $linkmode = prog...
8363
8364	if test prog,link = "$linkmode,$pass"; then
8365	  if test -n "$library_names" &&
8366	     { { test no = "$prefer_static_libs" ||
8367	         test built,yes = "$prefer_static_libs,$installed"; } ||
8368	       test -z "$old_library"; }; then
8369	    # We need to hardcode the library path
8370	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath"; then
8371	      # Make sure the rpath contains only unique directories.
8372	      case $temp_rpath: in
8373	      *"$absdir:"*) ;;
8374	      *) func_append temp_rpath "$absdir:" ;;
8375	      esac
8376	    fi
8377
8378	    # Hardcode the library path.
8379	    # Skip directories that are in the system default run-time
8380	    # search path.
8381	    case " $sys_lib_dlsearch_path " in
8382	    *" $absdir "*) ;;
8383	    *)
8384	      case "$compile_rpath " in
8385	      *" $absdir "*) ;;
8386	      *) func_append compile_rpath " $absdir" ;;
8387	      esac
8388	      ;;
8389	    esac
8390	    case " $sys_lib_dlsearch_path " in
8391	    *" $libdir "*) ;;
8392	    *)
8393	      case "$finalize_rpath " in
8394	      *" $libdir "*) ;;
8395	      *) func_append finalize_rpath " $libdir" ;;
8396	      esac
8397	      ;;
8398	    esac
8399	  fi # $linkmode,$pass = prog,link...
8400
8401	  if $alldeplibs &&
8402	     { test pass_all = "$deplibs_check_method" ||
8403	       { test yes = "$build_libtool_libs" &&
8404		 test -n "$library_names"; }; }; then
8405	    # We only need to search for static libraries
8406	    continue
8407	  fi
8408	fi
8409
8410	link_static=no # Whether the deplib will be linked statically
8411	use_static_libs=$prefer_static_libs
8412	if test built = "$use_static_libs" && test yes = "$installed"; then
8413	  use_static_libs=no
8414	fi
8415	if test -n "$library_names" &&
8416	   { test no = "$use_static_libs" || test -z "$old_library"; }; then
8417	  case $host in
8418	  *cygwin* | *mingw* | *cegcc* | *os2*)
8419	      # No point in relinking DLLs because paths are not encoded
8420	      func_append notinst_deplibs " $lib"
8421	      need_relink=no
8422	    ;;
8423	  *)
8424	    if test no = "$installed"; then
8425	      func_append notinst_deplibs " $lib"
8426	      need_relink=yes
8427	    fi
8428	    ;;
8429	  esac
8430	  # This is a shared library
8431
8432	  # Warn about portability, can't link against -module's on some
8433	  # systems (darwin).  Don't bleat about dlopened modules though!
8434	  dlopenmodule=
8435	  for dlpremoduletest in $dlprefiles; do
8436	    if test "X$dlpremoduletest" = "X$lib"; then
8437	      dlopenmodule=$dlpremoduletest
8438	      break
8439	    fi
8440	  done
8441	  if test -z "$dlopenmodule" && test yes = "$shouldnotlink" && test link = "$pass"; then
8442	    echo
8443	    if test prog = "$linkmode"; then
8444	      $ECHO "*** Warning: Linking the executable $output against the loadable module"
8445	    else
8446	      $ECHO "*** Warning: Linking the shared library $output against the loadable module"
8447	    fi
8448	    $ECHO "*** $linklib is not portable!"
8449	  fi
8450	  if test lib = "$linkmode" &&
8451	     test yes = "$hardcode_into_libs"; then
8452	    # Hardcode the library path.
8453	    # Skip directories that are in the system default run-time
8454	    # search path.
8455	    case " $sys_lib_dlsearch_path " in
8456	    *" $absdir "*) ;;
8457	    *)
8458	      case "$compile_rpath " in
8459	      *" $absdir "*) ;;
8460	      *) func_append compile_rpath " $absdir" ;;
8461	      esac
8462	      ;;
8463	    esac
8464	    case " $sys_lib_dlsearch_path " in
8465	    *" $libdir "*) ;;
8466	    *)
8467	      case "$finalize_rpath " in
8468	      *" $libdir "*) ;;
8469	      *) func_append finalize_rpath " $libdir" ;;
8470	      esac
8471	      ;;
8472	    esac
8473	  fi
8474
8475	  if test -n "$old_archive_from_expsyms_cmds"; then
8476	    # figure out the soname
8477	    set dummy $library_names
8478	    shift
8479	    realname=$1
8480	    shift
8481	    libname=`eval "\\$ECHO \"$libname_spec\""`
8482	    # use dlname if we got it. it's perfectly good, no?
8483	    if test -n "$dlname"; then
8484	      soname=$dlname
8485	    elif test -n "$soname_spec"; then
8486	      # bleh windows
8487	      case $host in
8488	      *cygwin* | mingw* | *cegcc* | *os2*)
8489	        func_arith $current - $age
8490		major=$func_arith_result
8491		versuffix=-$major
8492		;;
8493	      esac
8494	      eval soname=\"$soname_spec\"
8495	    else
8496	      soname=$realname
8497	    fi
8498
8499	    # Make a new name for the extract_expsyms_cmds to use
8500	    soroot=$soname
8501	    func_basename "$soroot"
8502	    soname=$func_basename_result
8503	    func_stripname 'lib' '.dll' "$soname"
8504	    newlib=libimp-$func_stripname_result.a
8505
8506	    # If the library has no export list, then create one now
8507	    if test -f "$output_objdir/$soname-def"; then :
8508	    else
8509	      func_verbose "extracting exported symbol list from '$soname'"
8510	      func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
8511	    fi
8512
8513	    # Create $newlib
8514	    if test -f "$output_objdir/$newlib"; then :; else
8515	      func_verbose "generating import library for '$soname'"
8516	      func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
8517	    fi
8518	    # make sure the library variables are pointing to the new library
8519	    dir=$output_objdir
8520	    linklib=$newlib
8521	  fi # test -n "$old_archive_from_expsyms_cmds"
8522
8523	  if test prog = "$linkmode" || test relink != "$opt_mode"; then
8524	    add_shlibpath=
8525	    add_dir=
8526	    add=
8527	    lib_linked=yes
8528	    case $hardcode_action in
8529	    immediate | unsupported)
8530	      if test no = "$hardcode_direct"; then
8531		add=$dir/$linklib
8532		case $host in
8533		  *-*-sco3.2v5.0.[024]*) add_dir=-L$dir ;;
8534		  *-*-sysv4*uw2*) add_dir=-L$dir ;;
8535		  *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
8536		    *-*-unixware7*) add_dir=-L$dir ;;
8537		  *-*-darwin* )
8538		    # if the lib is a (non-dlopened) module then we cannot
8539		    # link against it, someone is ignoring the earlier warnings
8540		    if /usr/bin/file -L $add 2> /dev/null |
8541			 $GREP ": [^:]* bundle" >/dev/null; then
8542		      if test "X$dlopenmodule" != "X$lib"; then
8543			$ECHO "*** Warning: lib $linklib is a module, not a shared library"
8544			if test -z "$old_library"; then
8545			  echo
8546			  echo "*** And there doesn't seem to be a static archive available"
8547			  echo "*** The link will probably fail, sorry"
8548			else
8549			  add=$dir/$old_library
8550			fi
8551		      elif test -n "$old_library"; then
8552			add=$dir/$old_library
8553		      fi
8554		    fi
8555		esac
8556	      elif test no = "$hardcode_minus_L"; then
8557		case $host in
8558		*-*-sunos*) add_shlibpath=$dir ;;
8559		esac
8560		add_dir=-L$dir
8561		add=-l$name
8562	      elif test no = "$hardcode_shlibpath_var"; then
8563		add_shlibpath=$dir
8564		add=-l$name
8565	      else
8566		lib_linked=no
8567	      fi
8568	      ;;
8569	    relink)
8570	      if test yes = "$hardcode_direct" &&
8571	         test no = "$hardcode_direct_absolute"; then
8572		add=$dir/$linklib
8573	      elif test yes = "$hardcode_minus_L"; then
8574		add_dir=-L$absdir
8575		# Try looking first in the location we're being installed to.
8576		if test -n "$inst_prefix_dir"; then
8577		  case $libdir in
8578		    [\\/]*)
8579		      func_append add_dir " -L$inst_prefix_dir$libdir"
8580		      ;;
8581		  esac
8582		fi
8583		add=-l$name
8584	      elif test yes = "$hardcode_shlibpath_var"; then
8585		add_shlibpath=$dir
8586		add=-l$name
8587	      else
8588		lib_linked=no
8589	      fi
8590	      ;;
8591	    *) lib_linked=no ;;
8592	    esac
8593
8594	    if test yes != "$lib_linked"; then
8595	      func_fatal_configuration "unsupported hardcode properties"
8596	    fi
8597
8598	    if test -n "$add_shlibpath"; then
8599	      case :$compile_shlibpath: in
8600	      *":$add_shlibpath:"*) ;;
8601	      *) func_append compile_shlibpath "$add_shlibpath:" ;;
8602	      esac
8603	    fi
8604	    if test prog = "$linkmode"; then
8605	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
8606	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
8607	    else
8608	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
8609	      test -n "$add" && deplibs="$add $deplibs"
8610	      if test yes != "$hardcode_direct" &&
8611		 test yes != "$hardcode_minus_L" &&
8612		 test yes = "$hardcode_shlibpath_var"; then
8613		case :$finalize_shlibpath: in
8614		*":$libdir:"*) ;;
8615		*) func_append finalize_shlibpath "$libdir:" ;;
8616		esac
8617	      fi
8618	    fi
8619	  fi
8620
8621	  if test prog = "$linkmode" || test relink = "$opt_mode"; then
8622	    add_shlibpath=
8623	    add_dir=
8624	    add=
8625	    # Finalize command for both is simple: just hardcode it.
8626	    if test yes = "$hardcode_direct" &&
8627	       test no = "$hardcode_direct_absolute"; then
8628	      add=$libdir/$linklib
8629	    elif test yes = "$hardcode_minus_L"; then
8630	      add_dir=-L$libdir
8631	      add=-l$name
8632	    elif test yes = "$hardcode_shlibpath_var"; then
8633	      case :$finalize_shlibpath: in
8634	      *":$libdir:"*) ;;
8635	      *) func_append finalize_shlibpath "$libdir:" ;;
8636	      esac
8637	      add=-l$name
8638	    elif test yes = "$hardcode_automatic"; then
8639	      if test -n "$inst_prefix_dir" &&
8640		 test -f "$inst_prefix_dir$libdir/$linklib"; then
8641		add=$inst_prefix_dir$libdir/$linklib
8642	      else
8643		add=$libdir/$linklib
8644	      fi
8645	    else
8646	      # We cannot seem to hardcode it, guess we'll fake it.
8647	      add_dir=-L$libdir
8648	      # Try looking first in the location we're being installed to.
8649	      if test -n "$inst_prefix_dir"; then
8650		case $libdir in
8651		  [\\/]*)
8652		    func_append add_dir " -L$inst_prefix_dir$libdir"
8653		    ;;
8654		esac
8655	      fi
8656	      add=-l$name
8657	    fi
8658
8659	    if test prog = "$linkmode"; then
8660	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
8661	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
8662	    else
8663	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
8664	      test -n "$add" && deplibs="$add $deplibs"
8665	    fi
8666	  fi
8667	elif test prog = "$linkmode"; then
8668	  # Here we assume that one of hardcode_direct or hardcode_minus_L
8669	  # is not unsupported.  This is valid on all known static and
8670	  # shared platforms.
8671	  if test unsupported != "$hardcode_direct"; then
8672	    test -n "$old_library" && linklib=$old_library
8673	    compile_deplibs="$dir/$linklib $compile_deplibs"
8674	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
8675	  else
8676	    compile_deplibs="-l$name -L$dir $compile_deplibs"
8677	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
8678	  fi
8679	elif test yes = "$build_libtool_libs"; then
8680	  # Not a shared library
8681	  if test pass_all != "$deplibs_check_method"; then
8682	    # We're trying link a shared library against a static one
8683	    # but the system doesn't support it.
8684
8685	    # Just print a warning and add the library to dependency_libs so
8686	    # that the program can be linked against the static library.
8687	    echo
8688	    $ECHO "*** Warning: This system cannot link to static lib archive $lib."
8689	    echo "*** I have the capability to make that library automatically link in when"
8690	    echo "*** you link to this library.  But I can only do this if you have a"
8691	    echo "*** shared version of the library, which you do not appear to have."
8692	    if test yes = "$module"; then
8693	      echo "*** But as you try to build a module library, libtool will still create "
8694	      echo "*** a static module, that should work as long as the dlopening application"
8695	      echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
8696	      if test -z "$global_symbol_pipe"; then
8697		echo
8698		echo "*** However, this would only work if libtool was able to extract symbol"
8699		echo "*** lists from a program, using 'nm' or equivalent, but libtool could"
8700		echo "*** not find such a program.  So, this module is probably useless."
8701		echo "*** 'nm' from GNU binutils and a full rebuild may help."
8702	      fi
8703	      if test no = "$build_old_libs"; then
8704		build_libtool_libs=module
8705		build_old_libs=yes
8706	      else
8707		build_libtool_libs=no
8708	      fi
8709	    fi
8710	  else
8711	    deplibs="$dir/$old_library $deplibs"
8712	    link_static=yes
8713	  fi
8714	fi # link shared/static library?
8715
8716	if test lib = "$linkmode"; then
8717	  if test -n "$dependency_libs" &&
8718	     { test yes != "$hardcode_into_libs" ||
8719	       test yes = "$build_old_libs" ||
8720	       test yes = "$link_static"; }; then
8721	    # Extract -R from dependency_libs
8722	    temp_deplibs=
8723	    for libdir in $dependency_libs; do
8724	      case $libdir in
8725	      -R*) func_stripname '-R' '' "$libdir"
8726	           temp_xrpath=$func_stripname_result
8727		   case " $xrpath " in
8728		   *" $temp_xrpath "*) ;;
8729		   *) func_append xrpath " $temp_xrpath";;
8730		   esac;;
8731	      *) func_append temp_deplibs " $libdir";;
8732	      esac
8733	    done
8734	    dependency_libs=$temp_deplibs
8735	  fi
8736
8737	  func_append newlib_search_path " $absdir"
8738	  # Link against this library
8739	  test no = "$link_static" && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
8740	  # ... and its dependency_libs
8741	  tmp_libs=
8742	  for deplib in $dependency_libs; do
8743	    newdependency_libs="$deplib $newdependency_libs"
8744	    case $deplib in
8745              -L*) func_stripname '-L' '' "$deplib"
8746                   func_resolve_sysroot "$func_stripname_result";;
8747              *) func_resolve_sysroot "$deplib" ;;
8748            esac
8749	    if $opt_preserve_dup_deps; then
8750	      case "$tmp_libs " in
8751	      *" $func_resolve_sysroot_result "*)
8752                func_append specialdeplibs " $func_resolve_sysroot_result" ;;
8753	      esac
8754	    fi
8755	    func_append tmp_libs " $func_resolve_sysroot_result"
8756	  done
8757
8758	  if test no != "$link_all_deplibs"; then
8759	    # Add the search paths of all dependency libraries
8760	    for deplib in $dependency_libs; do
8761	      path=
8762	      case $deplib in
8763	      -L*) path=$deplib ;;
8764	      *.la)
8765	        func_resolve_sysroot "$deplib"
8766	        deplib=$func_resolve_sysroot_result
8767	        func_dirname "$deplib" "" "."
8768		dir=$func_dirname_result
8769		# We need an absolute path.
8770		case $dir in
8771		[\\/]* | [A-Za-z]:[\\/]*) absdir=$dir ;;
8772		*)
8773		  absdir=`cd "$dir" && pwd`
8774		  if test -z "$absdir"; then
8775		    func_warning "cannot determine absolute directory name of '$dir'"
8776		    absdir=$dir
8777		  fi
8778		  ;;
8779		esac
8780		if $GREP "^installed=no" $deplib > /dev/null; then
8781		case $host in
8782		*-*-darwin*)
8783		  depdepl=
8784		  eval deplibrary_names=`$SED -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
8785		  if test -n "$deplibrary_names"; then
8786		    for tmp in $deplibrary_names; do
8787		      depdepl=$tmp
8788		    done
8789		    if test -f "$absdir/$objdir/$depdepl"; then
8790		      depdepl=$absdir/$objdir/$depdepl
8791		      darwin_install_name=`$OTOOL -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
8792                      if test -z "$darwin_install_name"; then
8793                          darwin_install_name=`$OTOOL64 -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
8794                      fi
8795		      func_append compiler_flags " $wl-dylib_file $wl$darwin_install_name:$depdepl"
8796		      func_append linker_flags " -dylib_file $darwin_install_name:$depdepl"
8797		      path=
8798		    fi
8799		  fi
8800		  ;;
8801		*)
8802		  path=-L$absdir/$objdir
8803		  ;;
8804		esac
8805		else
8806		  eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
8807		  test -z "$libdir" && \
8808		    func_fatal_error "'$deplib' is not a valid libtool archive"
8809		  test "$absdir" != "$libdir" && \
8810		    func_warning "'$deplib' seems to be moved"
8811
8812		  path=-L$absdir
8813		fi
8814		;;
8815	      esac
8816	      case " $deplibs " in
8817	      *" $path "*) ;;
8818	      *) deplibs="$path $deplibs" ;;
8819	      esac
8820	    done
8821	  fi # link_all_deplibs != no
8822	fi # linkmode = lib
8823      done # for deplib in $libs
8824      if test link = "$pass"; then
8825	if test prog = "$linkmode"; then
8826	  compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
8827	  finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
8828	else
8829	  compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
8830	fi
8831      fi
8832      dependency_libs=$newdependency_libs
8833      if test dlpreopen = "$pass"; then
8834	# Link the dlpreopened libraries before other libraries
8835	for deplib in $save_deplibs; do
8836	  deplibs="$deplib $deplibs"
8837	done
8838      fi
8839      if test dlopen != "$pass"; then
8840	test conv = "$pass" || {
8841	  # Make sure lib_search_path contains only unique directories.
8842	  lib_search_path=
8843	  for dir in $newlib_search_path; do
8844	    case "$lib_search_path " in
8845	    *" $dir "*) ;;
8846	    *) func_append lib_search_path " $dir" ;;
8847	    esac
8848	  done
8849	  newlib_search_path=
8850	}
8851
8852	if test prog,link = "$linkmode,$pass"; then
8853	  vars="compile_deplibs finalize_deplibs"
8854	else
8855	  vars=deplibs
8856	fi
8857	for var in $vars dependency_libs; do
8858	  # Add libraries to $var in reverse order
8859	  eval tmp_libs=\"\$$var\"
8860	  new_libs=
8861	  for deplib in $tmp_libs; do
8862	    # FIXME: Pedantically, this is the right thing to do, so
8863	    #        that some nasty dependency loop isn't accidentally
8864	    #        broken:
8865	    #new_libs="$deplib $new_libs"
8866	    # Pragmatically, this seems to cause very few problems in
8867	    # practice:
8868	    case $deplib in
8869	    -L*) new_libs="$deplib $new_libs" ;;
8870	    -R*) ;;
8871	    *)
8872	      # And here is the reason: when a library appears more
8873	      # than once as an explicit dependence of a library, or
8874	      # is implicitly linked in more than once by the
8875	      # compiler, it is considered special, and multiple
8876	      # occurrences thereof are not removed.  Compare this
8877	      # with having the same library being listed as a
8878	      # dependency of multiple other libraries: in this case,
8879	      # we know (pedantically, we assume) the library does not
8880	      # need to be listed more than once, so we keep only the
8881	      # last copy.  This is not always right, but it is rare
8882	      # enough that we require users that really mean to play
8883	      # such unportable linking tricks to link the library
8884	      # using -Wl,-lname, so that libtool does not consider it
8885	      # for duplicate removal.
8886	      case " $specialdeplibs " in
8887	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
8888	      *)
8889		case " $new_libs " in
8890		*" $deplib "*) ;;
8891		*) new_libs="$deplib $new_libs" ;;
8892		esac
8893		;;
8894	      esac
8895	      ;;
8896	    esac
8897	  done
8898	  tmp_libs=
8899	  for deplib in $new_libs; do
8900	    case $deplib in
8901	    -L*)
8902	      case " $tmp_libs " in
8903	      *" $deplib "*) ;;
8904	      *) func_append tmp_libs " $deplib" ;;
8905	      esac
8906	      ;;
8907	    *) func_append tmp_libs " $deplib" ;;
8908	    esac
8909	  done
8910	  eval $var=\"$tmp_libs\"
8911	done # for var
8912      fi
8913
8914      # Add Sun CC postdeps if required:
8915      test CXX = "$tagname" && {
8916        case $host_os in
8917        linux*)
8918          case `$CC -V 2>&1 | $SED 5q` in
8919          *Sun\ C*) # Sun C++ 5.9
8920            func_suncc_cstd_abi
8921
8922            if test no != "$suncc_use_cstd_abi"; then
8923              func_append postdeps ' -library=Cstd -library=Crun'
8924            fi
8925            ;;
8926          esac
8927          ;;
8928
8929        solaris*)
8930          func_cc_basename "$CC"
8931          case $func_cc_basename_result in
8932          CC* | sunCC*)
8933            func_suncc_cstd_abi
8934
8935            if test no != "$suncc_use_cstd_abi"; then
8936              func_append postdeps ' -library=Cstd -library=Crun'
8937            fi
8938            ;;
8939          esac
8940          ;;
8941        esac
8942      }
8943
8944      # Last step: remove runtime libs from dependency_libs
8945      # (they stay in deplibs)
8946      tmp_libs=
8947      for i in $dependency_libs; do
8948	case " $predeps $postdeps $compiler_lib_search_path " in
8949	*" $i "*)
8950	  i=
8951	  ;;
8952	esac
8953	if test -n "$i"; then
8954	  func_append tmp_libs " $i"
8955	fi
8956      done
8957      dependency_libs=$tmp_libs
8958    done # for pass
8959    if test prog = "$linkmode"; then
8960      dlfiles=$newdlfiles
8961    fi
8962    if test prog = "$linkmode" || test lib = "$linkmode"; then
8963      dlprefiles=$newdlprefiles
8964    fi
8965
8966    case $linkmode in
8967    oldlib)
8968      if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then
8969	func_warning "'-dlopen' is ignored for archives"
8970      fi
8971
8972      case " $deplibs" in
8973      *\ -l* | *\ -L*)
8974	func_warning "'-l' and '-L' are ignored for archives" ;;
8975      esac
8976
8977      test -n "$rpath" && \
8978	func_warning "'-rpath' is ignored for archives"
8979
8980      test -n "$xrpath" && \
8981	func_warning "'-R' is ignored for archives"
8982
8983      test -n "$vinfo" && \
8984	func_warning "'-version-info/-version-number' is ignored for archives"
8985
8986      test -n "$release" && \
8987	func_warning "'-release' is ignored for archives"
8988
8989      test -n "$export_symbols$export_symbols_regex" && \
8990	func_warning "'-export-symbols' is ignored for archives"
8991
8992      # Now set the variables for building old libraries.
8993      build_libtool_libs=no
8994      oldlibs=$output
8995      func_append objs "$old_deplibs"
8996      ;;
8997
8998    lib)
8999      # Make sure we only generate libraries of the form 'libNAME.la'.
9000      case $outputname in
9001      lib*)
9002	func_stripname 'lib' '.la' "$outputname"
9003	name=$func_stripname_result
9004	eval shared_ext=\"$shrext_cmds\"
9005	eval libname=\"$libname_spec\"
9006	;;
9007      *)
9008	test no = "$module" \
9009	  && func_fatal_help "libtool library '$output' must begin with 'lib'"
9010
9011	if test no != "$need_lib_prefix"; then
9012	  # Add the "lib" prefix for modules if required
9013	  func_stripname '' '.la' "$outputname"
9014	  name=$func_stripname_result
9015	  eval shared_ext=\"$shrext_cmds\"
9016	  eval libname=\"$libname_spec\"
9017	else
9018	  func_stripname '' '.la' "$outputname"
9019	  libname=$func_stripname_result
9020	fi
9021	;;
9022      esac
9023
9024      if test -n "$objs"; then
9025	if test pass_all != "$deplibs_check_method"; then
9026	  func_fatal_error "cannot build libtool library '$output' from non-libtool objects on this host:$objs"
9027	else
9028	  echo
9029	  $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
9030	  $ECHO "*** objects $objs is not portable!"
9031	  func_append libobjs " $objs"
9032	fi
9033      fi
9034
9035      test no = "$dlself" \
9036	|| func_warning "'-dlopen self' is ignored for libtool libraries"
9037
9038      set dummy $rpath
9039      shift
9040      test 1 -lt "$#" \
9041	&& func_warning "ignoring multiple '-rpath's for a libtool library"
9042
9043      install_libdir=$1
9044
9045      oldlibs=
9046      if test -z "$rpath"; then
9047	if test yes = "$build_libtool_libs"; then
9048	  # Building a libtool convenience library.
9049	  # Some compilers have problems with a '.al' extension so
9050	  # convenience libraries should have the same extension an
9051	  # archive normally would.
9052	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
9053	  build_libtool_libs=convenience
9054	  build_old_libs=yes
9055	fi
9056
9057	test -n "$vinfo" && \
9058	  func_warning "'-version-info/-version-number' is ignored for convenience libraries"
9059
9060	test -n "$release" && \
9061	  func_warning "'-release' is ignored for convenience libraries"
9062      else
9063
9064	# Parse the version information argument.
9065	save_ifs=$IFS; IFS=:
9066	set dummy $vinfo 0 0 0
9067	shift
9068	IFS=$save_ifs
9069
9070	test -n "$7" && \
9071	  func_fatal_help "too many parameters to '-version-info'"
9072
9073	# convert absolute version numbers to libtool ages
9074	# this retains compatibility with .la files and attempts
9075	# to make the code below a bit more comprehensible
9076
9077	case $vinfo_number in
9078	yes)
9079	  number_major=$1
9080	  number_minor=$2
9081	  number_revision=$3
9082	  #
9083	  # There are really only two kinds -- those that
9084	  # use the current revision as the major version
9085	  # and those that subtract age and use age as
9086	  # a minor version.  But, then there is irix
9087	  # that has an extra 1 added just for fun
9088	  #
9089	  case $version_type in
9090	  # correct linux to gnu/linux during the next big refactor
9091	  darwin|freebsd-elf|linux|midnightbsd-elf|osf|windows|none)
9092	    func_arith $number_major + $number_minor
9093	    current=$func_arith_result
9094	    age=$number_minor
9095	    revision=$number_revision
9096	    ;;
9097	  freebsd-aout|qnx|sunos)
9098	    current=$number_major
9099	    revision=$number_minor
9100	    age=0
9101	    ;;
9102	  irix|nonstopux)
9103	    func_arith $number_major + $number_minor
9104	    current=$func_arith_result
9105	    age=$number_minor
9106	    revision=$number_minor
9107	    lt_irix_increment=no
9108	    ;;
9109	  *)
9110	    func_fatal_configuration "$modename: unknown library version type '$version_type'"
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