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