ltmain.sh revision e169010a
1e169010aSmrg# Generated from ltmain.m4sh.
2e169010aSmrg
3e169010aSmrg# ltmain.sh (GNU libtool) 2.2.6
4e169010aSmrg# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
5e169010aSmrg
6e169010aSmrg# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc.
7e169010aSmrg# This is free software; see the source for copying conditions.  There is NO
8e169010aSmrg# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
9e169010aSmrg
10e169010aSmrg# GNU Libtool is free software; you can redistribute it and/or modify
117914d74bSmrg# it under the terms of the GNU General Public License as published by
127914d74bSmrg# the Free Software Foundation; either version 2 of the License, or
137914d74bSmrg# (at your option) any later version.
147914d74bSmrg#
15e169010aSmrg# As a special exception to the GNU General Public License,
16e169010aSmrg# if you distribute this file as part of a program or library that
17e169010aSmrg# is built using GNU Libtool, you may include this file under the
18e169010aSmrg# same distribution terms that you use for the rest of that program.
19e169010aSmrg#
20e169010aSmrg# GNU Libtool is distributed in the hope that it will be useful, but
217914d74bSmrg# WITHOUT ANY WARRANTY; without even the implied warranty of
227914d74bSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
237914d74bSmrg# General Public License for more details.
247914d74bSmrg#
257914d74bSmrg# You should have received a copy of the GNU General Public License
26e169010aSmrg# along with GNU Libtool; see the file COPYING.  If not, a copy
27e169010aSmrg# can be downloaded from http://www.gnu.org/licenses/gpl.html,
28e169010aSmrg# or obtained by writing to the Free Software Foundation, Inc.,
29e169010aSmrg# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
30e169010aSmrg
31e169010aSmrg# Usage: $progname [OPTION]... [MODE-ARG]...
32e169010aSmrg#
33e169010aSmrg# Provide generalized library-building support services.
347914d74bSmrg#
35e169010aSmrg#     --config             show all configuration variables
36e169010aSmrg#     --debug              enable verbose shell tracing
37e169010aSmrg# -n, --dry-run            display commands without modifying any files
38e169010aSmrg#     --features           display basic configuration information and exit
39e169010aSmrg#     --mode=MODE          use operation mode MODE
40e169010aSmrg#     --preserve-dup-deps  don't remove duplicate dependency libraries
41e169010aSmrg#     --quiet, --silent    don't print informational messages
42e169010aSmrg#     --tag=TAG            use configuration variables from tag TAG
43e169010aSmrg# -v, --verbose            print informational messages (default)
44e169010aSmrg#     --version            print version information
45e169010aSmrg# -h, --help               print short or long help message
46e169010aSmrg#
47e169010aSmrg# MODE must be one of the following:
48e169010aSmrg#
49e169010aSmrg#       clean              remove files from the build directory
50e169010aSmrg#       compile            compile a source file into a libtool object
51e169010aSmrg#       execute            automatically set library path, then run a program
52e169010aSmrg#       finish             complete the installation of libtool libraries
53e169010aSmrg#       install            install libraries or executables
54e169010aSmrg#       link               create a library or an executable
55e169010aSmrg#       uninstall          remove libraries from an installed directory
56e169010aSmrg#
57e169010aSmrg# MODE-ARGS vary depending on the MODE.
58e169010aSmrg# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
59e169010aSmrg#
60e169010aSmrg# When reporting a bug, please describe a test case to reproduce it and
61e169010aSmrg# include the following information:
62e169010aSmrg#
63e169010aSmrg#       host-triplet:	$host
64e169010aSmrg#       shell:		$SHELL
65e169010aSmrg#       compiler:		$LTCC
66e169010aSmrg#       compiler flags:		$LTCFLAGS
67e169010aSmrg#       linker:		$LD (gnu? $with_gnu_ld)
68e169010aSmrg#       $progname:		(GNU libtool) 2.2.6
69e169010aSmrg#       automake:		$automake_version
70e169010aSmrg#       autoconf:		$autoconf_version
71e169010aSmrg#
72e169010aSmrg# Report bugs to <bug-libtool@gnu.org>.
73e169010aSmrg
74e169010aSmrgPROGRAM=ltmain.sh
75e169010aSmrgPACKAGE=libtool
76e169010aSmrgVERSION=2.2.6
77e169010aSmrgTIMESTAMP=""
78e169010aSmrgpackage_revision=1.3012
79e169010aSmrg
80e169010aSmrg# Be Bourne compatible
81e169010aSmrgif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
82e169010aSmrg  emulate sh
83e169010aSmrg  NULLCMD=:
84e169010aSmrg  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
85e169010aSmrg  # is contrary to our usage.  Disable this feature.
86e169010aSmrg  alias -g '${1+"$@"}'='"$@"'
87e169010aSmrg  setopt NO_GLOB_SUBST
88e169010aSmrgelse
89e169010aSmrg  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
90e169010aSmrgfi
91e169010aSmrgBIN_SH=xpg4; export BIN_SH # for Tru64
92e169010aSmrgDUALCASE=1; export DUALCASE # for MKS sh
93e169010aSmrg
94e169010aSmrg# NLS nuisances: We save the old values to restore during execute mode.
95e169010aSmrg# Only set LANG and LC_ALL to C if already set.
96e169010aSmrg# These must not be set unconditionally because not all systems understand
97e169010aSmrg# e.g. LANG=C (notably SCO).
98e169010aSmrglt_user_locale=
99e169010aSmrglt_safe_locale=
100e169010aSmrgfor lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
101e169010aSmrgdo
102e169010aSmrg  eval "if test \"\${$lt_var+set}\" = set; then
103e169010aSmrg          save_$lt_var=\$$lt_var
104e169010aSmrg          $lt_var=C
105e169010aSmrg	  export $lt_var
106e169010aSmrg	  lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
107e169010aSmrg	  lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
108e169010aSmrg	fi"
109e169010aSmrgdone
110e169010aSmrg
111e169010aSmrg$lt_unset CDPATH
112e169010aSmrg
113e169010aSmrg
114e169010aSmrg
115e169010aSmrg
116e169010aSmrg
117e169010aSmrg: ${CP="cp -f"}
118e169010aSmrg: ${ECHO="echo"}
119e169010aSmrg: ${EGREP="/bin/grep -E"}
120e169010aSmrg: ${FGREP="/bin/grep -F"}
121e169010aSmrg: ${GREP="/bin/grep"}
122e169010aSmrg: ${LN_S="ln -s"}
123e169010aSmrg: ${MAKE="make"}
124e169010aSmrg: ${MKDIR="mkdir"}
125e169010aSmrg: ${MV="mv -f"}
126e169010aSmrg: ${RM="rm -f"}
127e169010aSmrg: ${SED="/bin/sed"}
128e169010aSmrg: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
129e169010aSmrg: ${Xsed="$SED -e 1s/^X//"}
1307914d74bSmrg
131e169010aSmrg# Global variables:
132e169010aSmrgEXIT_SUCCESS=0
133e169010aSmrgEXIT_FAILURE=1
134e169010aSmrgEXIT_MISMATCH=63  # $? = 63 is used to indicate version mismatch to missing.
135e169010aSmrgEXIT_SKIP=77	  # $? = 77 is used to indicate a skipped test to automake.
136e169010aSmrg
137e169010aSmrgexit_status=$EXIT_SUCCESS
138e169010aSmrg
139e169010aSmrg# Make sure IFS has a sensible default
140e169010aSmrglt_nl='
141e169010aSmrg'
142e169010aSmrgIFS=" 	$lt_nl"
143e169010aSmrg
144e169010aSmrgdirname="s,/[^/]*$,,"
145e169010aSmrgbasename="s,^.*/,,"
146e169010aSmrg
147e169010aSmrg# func_dirname_and_basename file append nondir_replacement
148e169010aSmrg# perform func_basename and func_dirname in a single function
149e169010aSmrg# call:
150e169010aSmrg#   dirname:  Compute the dirname of FILE.  If nonempty,
151e169010aSmrg#             add APPEND to the result, otherwise set result
152e169010aSmrg#             to NONDIR_REPLACEMENT.
153e169010aSmrg#             value returned in "$func_dirname_result"
154e169010aSmrg#   basename: Compute filename of FILE.
155e169010aSmrg#             value retuned in "$func_basename_result"
156e169010aSmrg# Implementation must be kept synchronized with func_dirname
157e169010aSmrg# and func_basename. For efficiency, we do not delegate to
158e169010aSmrg# those functions but instead duplicate the functionality here.
159e169010aSmrgfunc_dirname_and_basename ()
160e169010aSmrg{
161e169010aSmrg  # Extract subdirectory from the argument.
162e169010aSmrg  func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"`
163e169010aSmrg  if test "X$func_dirname_result" = "X${1}"; then
164e169010aSmrg    func_dirname_result="${3}"
165e169010aSmrg  else
166e169010aSmrg    func_dirname_result="$func_dirname_result${2}"
167e169010aSmrg  fi
168e169010aSmrg  func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"`
169e169010aSmrg}
170e169010aSmrg
171e169010aSmrg# Generated shell functions inserted here.
1727914d74bSmrg
1737914d74bSmrg# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
1747914d74bSmrg# is ksh but when the shell is invoked as "sh" and the current value of
1757914d74bSmrg# the _XPG environment variable is not equal to 1 (one), the special
1767914d74bSmrg# positional parameter $0, within a function call, is the name of the
1777914d74bSmrg# function.
1787914d74bSmrgprogpath="$0"
1797914d74bSmrg
1807914d74bSmrg# The name of this program:
181e169010aSmrg# In the unlikely event $progname began with a '-', it would play havoc with
182e169010aSmrg# func_echo (imagine progname=-n), so we prepend ./ in that case:
183e169010aSmrgfunc_dirname_and_basename "$progpath"
184e169010aSmrgprogname=$func_basename_result
185e169010aSmrgcase $progname in
186e169010aSmrg  -*) progname=./$progname ;;
187e169010aSmrgesac
1887914d74bSmrg
189e169010aSmrg# Make sure we have an absolute path for reexecution:
190e169010aSmrgcase $progpath in
191e169010aSmrg  [\\/]*|[A-Za-z]:\\*) ;;
192e169010aSmrg  *[\\/]*)
193e169010aSmrg     progdir=$func_dirname_result
194e169010aSmrg     progdir=`cd "$progdir" && pwd`
195e169010aSmrg     progpath="$progdir/$progname"
196e169010aSmrg     ;;
197e169010aSmrg  *)
198e169010aSmrg     save_IFS="$IFS"
199e169010aSmrg     IFS=:
200e169010aSmrg     for progdir in $PATH; do
201e169010aSmrg       IFS="$save_IFS"
202e169010aSmrg       test -x "$progdir/$progname" && break
203e169010aSmrg     done
204e169010aSmrg     IFS="$save_IFS"
205e169010aSmrg     test -n "$progdir" || progdir=`pwd`
206e169010aSmrg     progpath="$progdir/$progname"
207e169010aSmrg     ;;
208e169010aSmrgesac
2097914d74bSmrg
210e169010aSmrg# Sed substitution that helps us do robust quoting.  It backslashifies
211e169010aSmrg# metacharacters that are still active within double-quoted strings.
212e169010aSmrgXsed="${SED}"' -e 1s/^X//'
213e169010aSmrgsed_quote_subst='s/\([`"$\\]\)/\\\1/g'
214e169010aSmrg
215e169010aSmrg# Same as above, but do not quote variable references.
216e169010aSmrgdouble_quote_subst='s/\(["`\\]\)/\\\1/g'
217e169010aSmrg
218e169010aSmrg# Re-`\' parameter expansions in output of double_quote_subst that were
219e169010aSmrg# `\'-ed in input to the same.  If an odd number of `\' preceded a '$'
220e169010aSmrg# in input to double_quote_subst, that '$' was protected from expansion.
221e169010aSmrg# Since each input `\' is now two `\'s, look for any number of runs of
222e169010aSmrg# four `\'s followed by two `\'s and then a '$'.  `\' that '$'.
223e169010aSmrgbs='\\'
224e169010aSmrgbs2='\\\\'
225e169010aSmrgbs4='\\\\\\\\'
226e169010aSmrgdollar='\$'
227e169010aSmrgsed_double_backslash="\
228e169010aSmrg  s/$bs4/&\\
229e169010aSmrg/g
230e169010aSmrg  s/^$bs2$dollar/$bs&/
231e169010aSmrg  s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
232e169010aSmrg  s/\n//g"
233e169010aSmrg
234e169010aSmrg# Standard options:
235e169010aSmrgopt_dry_run=false
236e169010aSmrgopt_help=false
237e169010aSmrgopt_quiet=false
238e169010aSmrgopt_verbose=false
239e169010aSmrgopt_warning=:
240e169010aSmrg
241e169010aSmrg# func_echo arg...
242e169010aSmrg# Echo program name prefixed message, along with the current mode
243e169010aSmrg# name if it has been set yet.
244e169010aSmrgfunc_echo ()
245e169010aSmrg{
246e169010aSmrg    $ECHO "$progname${mode+: }$mode: $*"
247e169010aSmrg}
2487914d74bSmrg
249e169010aSmrg# func_verbose arg...
250e169010aSmrg# Echo program name prefixed message in verbose mode only.
251e169010aSmrgfunc_verbose ()
252e169010aSmrg{
253e169010aSmrg    $opt_verbose && func_echo ${1+"$@"}
2547914d74bSmrg
255e169010aSmrg    # A bug in bash halts the script if the last line of a function
256e169010aSmrg    # fails when set -e is in force, so we need another command to
257e169010aSmrg    # work around that:
258e169010aSmrg    :
259e169010aSmrg}
2607914d74bSmrg
261e169010aSmrg# func_error arg...
262e169010aSmrg# Echo program name prefixed message to standard error.
263e169010aSmrgfunc_error ()
264e169010aSmrg{
265e169010aSmrg    $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2
266e169010aSmrg}
2677914d74bSmrg
268e169010aSmrg# func_warning arg...
269e169010aSmrg# Echo program name prefixed warning message to standard error.
270e169010aSmrgfunc_warning ()
271e169010aSmrg{
272e169010aSmrg    $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2
2737914d74bSmrg
274e169010aSmrg    # bash bug again:
275e169010aSmrg    :
276e169010aSmrg}
2777914d74bSmrg
278e169010aSmrg# func_fatal_error arg...
279e169010aSmrg# Echo program name prefixed message to standard error, and exit.
280e169010aSmrgfunc_fatal_error ()
281e169010aSmrg{
282e169010aSmrg    func_error ${1+"$@"}
283e169010aSmrg    exit $EXIT_FAILURE
284e169010aSmrg}
2857914d74bSmrg
286e169010aSmrg# func_fatal_help arg...
287e169010aSmrg# Echo program name prefixed message to standard error, followed by
288e169010aSmrg# a help hint, and exit.
289e169010aSmrgfunc_fatal_help ()
290e169010aSmrg{
291e169010aSmrg    func_error ${1+"$@"}
292e169010aSmrg    func_fatal_error "$help"
293e169010aSmrg}
294e169010aSmrghelp="Try \`$progname --help' for more information."  ## default
2957914d74bSmrg
2967914d74bSmrg
297e169010aSmrg# func_grep expression filename
298e169010aSmrg# Check whether EXPRESSION matches any line of FILENAME, without output.
299e169010aSmrgfunc_grep ()
300e169010aSmrg{
301e169010aSmrg    $GREP "$1" "$2" >/dev/null 2>&1
302e169010aSmrg}
303e169010aSmrg
304e169010aSmrg
305e169010aSmrg# func_mkdir_p directory-path
306e169010aSmrg# Make sure the entire path to DIRECTORY-PATH is available.
307e169010aSmrgfunc_mkdir_p ()
308e169010aSmrg{
309e169010aSmrg    my_directory_path="$1"
310e169010aSmrg    my_dir_list=
311e169010aSmrg
312e169010aSmrg    if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
313e169010aSmrg
314e169010aSmrg      # Protect directory names starting with `-'
315e169010aSmrg      case $my_directory_path in
316e169010aSmrg        -*) my_directory_path="./$my_directory_path" ;;
317e169010aSmrg      esac
318e169010aSmrg
319e169010aSmrg      # While some portion of DIR does not yet exist...
320e169010aSmrg      while test ! -d "$my_directory_path"; do
321e169010aSmrg        # ...make a list in topmost first order.  Use a colon delimited
322e169010aSmrg	# list incase some portion of path contains whitespace.
323e169010aSmrg        my_dir_list="$my_directory_path:$my_dir_list"
324e169010aSmrg
325e169010aSmrg        # If the last portion added has no slash in it, the list is done
326e169010aSmrg        case $my_directory_path in */*) ;; *) break ;; esac
327e169010aSmrg
328e169010aSmrg        # ...otherwise throw away the child directory and loop
329e169010aSmrg        my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"`
330e169010aSmrg      done
331e169010aSmrg      my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'`
332e169010aSmrg
333e169010aSmrg      save_mkdir_p_IFS="$IFS"; IFS=':'
334e169010aSmrg      for my_dir in $my_dir_list; do
335e169010aSmrg	IFS="$save_mkdir_p_IFS"
336e169010aSmrg        # mkdir can fail with a `File exist' error if two processes
337e169010aSmrg        # try to create one of the directories concurrently.  Don't
338e169010aSmrg        # stop in that case!
339e169010aSmrg        $MKDIR "$my_dir" 2>/dev/null || :
340e169010aSmrg      done
341e169010aSmrg      IFS="$save_mkdir_p_IFS"
342e169010aSmrg
343e169010aSmrg      # Bail out if we (or some other process) failed to create a directory.
344e169010aSmrg      test -d "$my_directory_path" || \
345e169010aSmrg        func_fatal_error "Failed to create \`$1'"
346e169010aSmrg    fi
347e169010aSmrg}
3487914d74bSmrg
3497914d74bSmrg
3507914d74bSmrg# func_mktempdir [string]
3517914d74bSmrg# Make a temporary directory that won't clash with other running
3527914d74bSmrg# libtool processes, and avoids race conditions if possible.  If
3537914d74bSmrg# given, STRING is the basename for that directory.
3547914d74bSmrgfunc_mktempdir ()
3557914d74bSmrg{
3567914d74bSmrg    my_template="${TMPDIR-/tmp}/${1-$progname}"
3577914d74bSmrg
358e169010aSmrg    if test "$opt_dry_run" = ":"; then
3597914d74bSmrg      # Return a directory name, but don't create it in dry-run mode
3607914d74bSmrg      my_tmpdir="${my_template}-$$"
3617914d74bSmrg    else
3627914d74bSmrg
3637914d74bSmrg      # If mktemp works, use that first and foremost
3647914d74bSmrg      my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
3657914d74bSmrg
3667914d74bSmrg      if test ! -d "$my_tmpdir"; then
367e169010aSmrg        # Failing that, at least try and use $RANDOM to avoid a race
368e169010aSmrg        my_tmpdir="${my_template}-${RANDOM-0}$$"
3697914d74bSmrg
370e169010aSmrg        save_mktempdir_umask=`umask`
371e169010aSmrg        umask 0077
372e169010aSmrg        $MKDIR "$my_tmpdir"
373e169010aSmrg        umask $save_mktempdir_umask
3747914d74bSmrg      fi
3757914d74bSmrg
3767914d74bSmrg      # If we're not in dry-run mode, bomb out on failure
377e169010aSmrg      test -d "$my_tmpdir" || \
378e169010aSmrg        func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
3797914d74bSmrg    fi
3807914d74bSmrg
381e169010aSmrg    $ECHO "X$my_tmpdir" | $Xsed
3827914d74bSmrg}
3837914d74bSmrg
3847914d74bSmrg
385e169010aSmrg# func_quote_for_eval arg
386e169010aSmrg# Aesthetically quote ARG to be evaled later.
387e169010aSmrg# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
388e169010aSmrg# is double-quoted, suitable for a subsequent eval, whereas
389e169010aSmrg# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
390e169010aSmrg# which are still active within double quotes backslashified.
391e169010aSmrgfunc_quote_for_eval ()
3927914d74bSmrg{
393e169010aSmrg    case $1 in
394e169010aSmrg      *[\\\`\"\$]*)
395e169010aSmrg	func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;;
396e169010aSmrg      *)
397e169010aSmrg        func_quote_for_eval_unquoted_result="$1" ;;
398e169010aSmrg    esac
399e169010aSmrg
400e169010aSmrg    case $func_quote_for_eval_unquoted_result in
401e169010aSmrg      # Double-quote args containing shell metacharacters to delay
402e169010aSmrg      # word splitting, command substitution and and variable
403e169010aSmrg      # expansion for a subsequent eval.
404e169010aSmrg      # Many Bourne shells cannot handle close brackets correctly
405e169010aSmrg      # in scan sets, so we specify it separately.
406e169010aSmrg      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
407e169010aSmrg        func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
408e169010aSmrg        ;;
409e169010aSmrg      *)
410e169010aSmrg        func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
4117914d74bSmrg    esac
4127914d74bSmrg}
4137914d74bSmrg
4147914d74bSmrg
415e169010aSmrg# func_quote_for_expand arg
416e169010aSmrg# Aesthetically quote ARG to be evaled later; same as above,
417e169010aSmrg# but do not quote variable references.
418e169010aSmrgfunc_quote_for_expand ()
4197914d74bSmrg{
420e169010aSmrg    case $1 in
421e169010aSmrg      *[\\\`\"]*)
422e169010aSmrg	my_arg=`$ECHO "X$1" | $Xsed \
423e169010aSmrg	    -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
4247914d74bSmrg      *)
425e169010aSmrg        my_arg="$1" ;;
426e169010aSmrg    esac
427e169010aSmrg
428e169010aSmrg    case $my_arg in
429e169010aSmrg      # Double-quote args containing shell metacharacters to delay
430e169010aSmrg      # word splitting and command substitution for a subsequent eval.
431e169010aSmrg      # Many Bourne shells cannot handle close brackets correctly
432e169010aSmrg      # in scan sets, so we specify it separately.
433e169010aSmrg      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
434e169010aSmrg        my_arg="\"$my_arg\""
435e169010aSmrg        ;;
436e169010aSmrg    esac
437e169010aSmrg
438e169010aSmrg    func_quote_for_expand_result="$my_arg"
4397914d74bSmrg}
4407914d74bSmrg
4417914d74bSmrg
442e169010aSmrg# func_show_eval cmd [fail_exp]
443e169010aSmrg# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
444e169010aSmrg# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
445e169010aSmrg# is given, then evaluate it.
446e169010aSmrgfunc_show_eval ()
4477914d74bSmrg{
448e169010aSmrg    my_cmd="$1"
449e169010aSmrg    my_fail_exp="${2-:}"
4507914d74bSmrg
451e169010aSmrg    ${opt_silent-false} || {
452e169010aSmrg      func_quote_for_expand "$my_cmd"
453e169010aSmrg      eval "func_echo $func_quote_for_expand_result"
454e169010aSmrg    }
455e169010aSmrg
456e169010aSmrg    if ${opt_dry_run-false}; then :; else
457e169010aSmrg      eval "$my_cmd"
458e169010aSmrg      my_status=$?
459e169010aSmrg      if test "$my_status" -eq 0; then :; else
460e169010aSmrg	eval "(exit $my_status); $my_fail_exp"
461e169010aSmrg      fi
4627914d74bSmrg    fi
4637914d74bSmrg}
4647914d74bSmrg
465e169010aSmrg
466e169010aSmrg# func_show_eval_locale cmd [fail_exp]
467e169010aSmrg# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
468e169010aSmrg# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
469e169010aSmrg# is given, then evaluate it.  Use the saved locale for evaluation.
470e169010aSmrgfunc_show_eval_locale ()
4717914d74bSmrg{
472e169010aSmrg    my_cmd="$1"
473e169010aSmrg    my_fail_exp="${2-:}"
4747914d74bSmrg
475e169010aSmrg    ${opt_silent-false} || {
476e169010aSmrg      func_quote_for_expand "$my_cmd"
477e169010aSmrg      eval "func_echo $func_quote_for_expand_result"
478e169010aSmrg    }
479e169010aSmrg
480e169010aSmrg    if ${opt_dry_run-false}; then :; else
481e169010aSmrg      eval "$lt_user_locale
482e169010aSmrg	    $my_cmd"
483e169010aSmrg      my_status=$?
484e169010aSmrg      eval "$lt_safe_locale"
485e169010aSmrg      if test "$my_status" -eq 0; then :; else
486e169010aSmrg	eval "(exit $my_status); $my_fail_exp"
4877914d74bSmrg      fi
488e169010aSmrg    fi
4897914d74bSmrg}
4907914d74bSmrg
4917914d74bSmrg
4927914d74bSmrg
493e169010aSmrg
494e169010aSmrg
495e169010aSmrg# func_version
496e169010aSmrg# Echo version message to standard output and exit.
497e169010aSmrgfunc_version ()
498e169010aSmrg{
499e169010aSmrg    $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / {
500e169010aSmrg        s/^# //
501e169010aSmrg	s/^# *$//
502e169010aSmrg        s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
503e169010aSmrg        p
504e169010aSmrg     }' < "$progpath"
505e169010aSmrg     exit $?
506e169010aSmrg}
507e169010aSmrg
508e169010aSmrg# func_usage
509e169010aSmrg# Echo short help message to standard output and exit.
510e169010aSmrgfunc_usage ()
511e169010aSmrg{
512e169010aSmrg    $SED -n '/^# Usage:/,/# -h/ {
513e169010aSmrg        s/^# //
514e169010aSmrg	s/^# *$//
515e169010aSmrg	s/\$progname/'$progname'/
516e169010aSmrg	p
517e169010aSmrg    }' < "$progpath"
518e169010aSmrg    $ECHO
519e169010aSmrg    $ECHO "run \`$progname --help | more' for full usage"
520e169010aSmrg    exit $?
521e169010aSmrg}
522e169010aSmrg
523e169010aSmrg# func_help
524e169010aSmrg# Echo long help message to standard output and exit.
525e169010aSmrgfunc_help ()
526e169010aSmrg{
527e169010aSmrg    $SED -n '/^# Usage:/,/# Report bugs to/ {
528e169010aSmrg        s/^# //
529e169010aSmrg	s/^# *$//
530e169010aSmrg	s*\$progname*'$progname'*
531e169010aSmrg	s*\$host*'"$host"'*
532e169010aSmrg	s*\$SHELL*'"$SHELL"'*
533e169010aSmrg	s*\$LTCC*'"$LTCC"'*
534e169010aSmrg	s*\$LTCFLAGS*'"$LTCFLAGS"'*
535e169010aSmrg	s*\$LD*'"$LD"'*
536e169010aSmrg	s/\$with_gnu_ld/'"$with_gnu_ld"'/
537e169010aSmrg	s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/
538e169010aSmrg	s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/
539e169010aSmrg	p
540e169010aSmrg     }' < "$progpath"
541e169010aSmrg    exit $?
542e169010aSmrg}
543e169010aSmrg
544e169010aSmrg# func_missing_arg argname
545e169010aSmrg# Echo program name prefixed message to standard error and set global
546e169010aSmrg# exit_cmd.
547e169010aSmrgfunc_missing_arg ()
548e169010aSmrg{
549e169010aSmrg    func_error "missing argument for $1"
550e169010aSmrg    exit_cmd=exit
551e169010aSmrg}
552e169010aSmrg
553e169010aSmrgexit_cmd=:
554e169010aSmrg
555e169010aSmrg
556e169010aSmrg
557e169010aSmrg
558e169010aSmrg
559e169010aSmrg# Check that we have a working $ECHO.
560e169010aSmrgif test "X$1" = X--no-reexec; then
561e169010aSmrg  # Discard the --no-reexec flag, and continue.
5627914d74bSmrg  shift
563e169010aSmrgelif test "X$1" = X--fallback-echo; then
564e169010aSmrg  # Avoid inline document here, it may be left over
565e169010aSmrg  :
566e169010aSmrgelif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then
567e169010aSmrg  # Yippee, $ECHO works!
568e169010aSmrg  :
569e169010aSmrgelse
570e169010aSmrg  # Restart under the correct shell, and then maybe $ECHO will work.
571e169010aSmrg  exec $SHELL "$progpath" --no-reexec ${1+"$@"}
572e169010aSmrgfi
5737914d74bSmrg
574e169010aSmrgif test "X$1" = X--fallback-echo; then
575e169010aSmrg  # used as fallback echo
576e169010aSmrg  shift
577e169010aSmrg  cat <<EOF
578e169010aSmrg$*
579e169010aSmrgEOF
580e169010aSmrg  exit $EXIT_SUCCESS
581e169010aSmrgfi
5827914d74bSmrg
583e169010aSmrgmagic="%%%MAGIC variable%%%"
584e169010aSmrgmagic_exe="%%%MAGIC EXE variable%%%"
5857914d74bSmrg
586e169010aSmrg# Global variables.
587e169010aSmrg# $mode is unset
588e169010aSmrgnonopt=
589e169010aSmrgexecute_dlfiles=
590e169010aSmrgpreserve_args=
591e169010aSmrglo2o="s/\\.lo\$/.${objext}/"
592e169010aSmrgo2lo="s/\\.${objext}\$/.lo/"
593e169010aSmrgextracted_archives=
594e169010aSmrgextracted_serial=0
5957914d74bSmrg
596e169010aSmrgopt_dry_run=false
597e169010aSmrgopt_duplicate_deps=false
598e169010aSmrgopt_silent=false
599e169010aSmrgopt_debug=:
6007914d74bSmrg
601e169010aSmrg# If this variable is set in any of the actions, the command in it
602e169010aSmrg# will be execed at the end.  This prevents here-documents from being
603e169010aSmrg# left over by shells.
604e169010aSmrgexec_cmd=
6057914d74bSmrg
606e169010aSmrg# func_fatal_configuration arg...
607e169010aSmrg# Echo program name prefixed message to standard error, followed by
608e169010aSmrg# a configuration failure hint, and exit.
609e169010aSmrgfunc_fatal_configuration ()
610e169010aSmrg{
611e169010aSmrg    func_error ${1+"$@"}
612e169010aSmrg    func_error "See the $PACKAGE documentation for more information."
613e169010aSmrg    func_fatal_error "Fatal configuration error."
614e169010aSmrg}
615e169010aSmrg
616e169010aSmrg
617e169010aSmrg# func_config
618e169010aSmrg# Display the configuration for all the tags in this script.
619e169010aSmrgfunc_config ()
620e169010aSmrg{
621e169010aSmrg    re_begincf='^# ### BEGIN LIBTOOL'
622e169010aSmrg    re_endcf='^# ### END LIBTOOL'
623e169010aSmrg
624e169010aSmrg    # Default configuration.
625e169010aSmrg    $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
6267914d74bSmrg
6277914d74bSmrg    # Now print the configurations for the tags.
6287914d74bSmrg    for tagname in $taglist; do
629e169010aSmrg      $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
6307914d74bSmrg    done
6317914d74bSmrg
632e169010aSmrg    exit $?
633e169010aSmrg}
6347914d74bSmrg
635e169010aSmrg# func_features
636e169010aSmrg# Display the features supported by this script.
637e169010aSmrgfunc_features ()
638e169010aSmrg{
639e169010aSmrg    $ECHO "host: $host"
6407914d74bSmrg    if test "$build_libtool_libs" = yes; then
641e169010aSmrg      $ECHO "enable shared libraries"
6427914d74bSmrg    else
643e169010aSmrg      $ECHO "disable shared libraries"
6447914d74bSmrg    fi
6457914d74bSmrg    if test "$build_old_libs" = yes; then
646e169010aSmrg      $ECHO "enable static libraries"
6477914d74bSmrg    else
648e169010aSmrg      $ECHO "disable static libraries"
6497914d74bSmrg    fi
650e169010aSmrg
6517914d74bSmrg    exit $?
652e169010aSmrg}
653e169010aSmrg
654e169010aSmrg# func_enable_tag tagname
655e169010aSmrg# Verify that TAGNAME is valid, and either flag an error and exit, or
656e169010aSmrg# enable the TAGNAME tag.  We also add TAGNAME to the global $taglist
657e169010aSmrg# variable here.
658e169010aSmrgfunc_enable_tag ()
659e169010aSmrg{
660e169010aSmrg  # Global variable:
661e169010aSmrg  tagname="$1"
6627914d74bSmrg
663e169010aSmrg  re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
664e169010aSmrg  re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
665e169010aSmrg  sed_extractcf="/$re_begincf/,/$re_endcf/p"
6667914d74bSmrg
667e169010aSmrg  # Validate tagname.
668e169010aSmrg  case $tagname in
669e169010aSmrg    *[!-_A-Za-z0-9,/]*)
670e169010aSmrg      func_fatal_error "invalid tag name: $tagname"
671e169010aSmrg      ;;
672e169010aSmrg  esac
6737914d74bSmrg
674e169010aSmrg  # Don't test for the "default" C tag, as we know it's
675e169010aSmrg  # there but not specially marked.
676e169010aSmrg  case $tagname in
677e169010aSmrg    CC) ;;
678e169010aSmrg    *)
679e169010aSmrg      if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
680e169010aSmrg	taglist="$taglist $tagname"
681e169010aSmrg
682e169010aSmrg	# Evaluate the configuration.  Be careful to quote the path
683e169010aSmrg	# and the sed script, to avoid splitting on whitespace, but
684e169010aSmrg	# also don't use non-portable quotes within backquotes within
685e169010aSmrg	# quotes we have to do it in 2 steps:
686e169010aSmrg	extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
687e169010aSmrg	eval "$extractedcf"
688e169010aSmrg      else
689e169010aSmrg	func_error "ignoring unknown tag $tagname"
690e169010aSmrg      fi
691e169010aSmrg      ;;
692e169010aSmrg  esac
693e169010aSmrg}
6947914d74bSmrg
695e169010aSmrg# Parse options once, thoroughly.  This comes as soon as possible in
696e169010aSmrg# the script to make things like `libtool --version' happen quickly.
697e169010aSmrg{
6987914d74bSmrg
699e169010aSmrg  # Shorthand for --mode=foo, only valid as the first argument
700e169010aSmrg  case $1 in
701e169010aSmrg  clean|clea|cle|cl)
702e169010aSmrg    shift; set dummy --mode clean ${1+"$@"}; shift
7037914d74bSmrg    ;;
704e169010aSmrg  compile|compil|compi|comp|com|co|c)
705e169010aSmrg    shift; set dummy --mode compile ${1+"$@"}; shift
7067914d74bSmrg    ;;
707e169010aSmrg  execute|execut|execu|exec|exe|ex|e)
708e169010aSmrg    shift; set dummy --mode execute ${1+"$@"}; shift
7097914d74bSmrg    ;;
710e169010aSmrg  finish|finis|fini|fin|fi|f)
711e169010aSmrg    shift; set dummy --mode finish ${1+"$@"}; shift
7127914d74bSmrg    ;;
713e169010aSmrg  install|instal|insta|inst|ins|in|i)
714e169010aSmrg    shift; set dummy --mode install ${1+"$@"}; shift
715e169010aSmrg    ;;
716e169010aSmrg  link|lin|li|l)
717e169010aSmrg    shift; set dummy --mode link ${1+"$@"}; shift
718e169010aSmrg    ;;
719e169010aSmrg  uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
720e169010aSmrg    shift; set dummy --mode uninstall ${1+"$@"}; shift
7217914d74bSmrg    ;;
7227914d74bSmrg  esac
7237914d74bSmrg
724e169010aSmrg  # Parse non-mode specific arguments:
725e169010aSmrg  while test "$#" -gt 0; do
726e169010aSmrg    opt="$1"
727e169010aSmrg    shift
7287914d74bSmrg
729e169010aSmrg    case $opt in
730e169010aSmrg      --config)		func_config					;;
7317914d74bSmrg
732e169010aSmrg      --debug)		preserve_args="$preserve_args $opt"
733e169010aSmrg			func_echo "enabling shell trace mode"
734e169010aSmrg			opt_debug='set -x'
735e169010aSmrg			$opt_debug
736e169010aSmrg			;;
7377914d74bSmrg
738e169010aSmrg      -dlopen)		test "$#" -eq 0 && func_missing_arg "$opt" && break
739e169010aSmrg			execute_dlfiles="$execute_dlfiles $1"
740e169010aSmrg			shift
741e169010aSmrg			;;
7427914d74bSmrg
743e169010aSmrg      --dry-run | -n)	opt_dry_run=:					;;
744e169010aSmrg      --features)       func_features					;;
745e169010aSmrg      --finish)		mode="finish"					;;
746e169010aSmrg
747e169010aSmrg      --mode)		test "$#" -eq 0 && func_missing_arg "$opt" && break
748e169010aSmrg			case $1 in
749e169010aSmrg			  # Valid mode arguments:
750e169010aSmrg			  clean)	;;
751e169010aSmrg			  compile)	;;
752e169010aSmrg			  execute)	;;
753e169010aSmrg			  finish)	;;
754e169010aSmrg			  install)	;;
755e169010aSmrg			  link)		;;
756e169010aSmrg			  relink)	;;
757e169010aSmrg			  uninstall)	;;
758e169010aSmrg
759e169010aSmrg			  # Catch anything else as an error
760e169010aSmrg			  *) func_error "invalid argument for $opt"
761e169010aSmrg			     exit_cmd=exit
762e169010aSmrg			     break
763e169010aSmrg			     ;;
764e169010aSmrg		        esac
765e169010aSmrg
766e169010aSmrg			mode="$1"
767e169010aSmrg			shift
768e169010aSmrg			;;
769e169010aSmrg
770e169010aSmrg      --preserve-dup-deps)
771e169010aSmrg			opt_duplicate_deps=:				;;
772e169010aSmrg
773e169010aSmrg      --quiet|--silent)	preserve_args="$preserve_args $opt"
774e169010aSmrg			opt_silent=:
775e169010aSmrg			;;
776e169010aSmrg
777e169010aSmrg      --verbose| -v)	preserve_args="$preserve_args $opt"
778e169010aSmrg			opt_silent=false
779e169010aSmrg			;;
780e169010aSmrg
781e169010aSmrg      --tag)		test "$#" -eq 0 && func_missing_arg "$opt" && break
782e169010aSmrg			preserve_args="$preserve_args $opt $1"
783e169010aSmrg			func_enable_tag "$1"	# tagname is set here
784e169010aSmrg			shift
785e169010aSmrg			;;
786e169010aSmrg
787e169010aSmrg      # Separate optargs to long options:
788e169010aSmrg      -dlopen=*|--mode=*|--tag=*)
789e169010aSmrg			func_opt_split "$opt"
790e169010aSmrg			set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"}
791e169010aSmrg			shift
792e169010aSmrg			;;
793e169010aSmrg
794e169010aSmrg      -\?|-h)		func_usage					;;
795e169010aSmrg      --help)		opt_help=:					;;
796e169010aSmrg      --version)	func_version					;;
797e169010aSmrg
798e169010aSmrg      -*)		func_fatal_help "unrecognized option \`$opt'"	;;
799e169010aSmrg
800e169010aSmrg      *)		nonopt="$opt"
801e169010aSmrg			break
802e169010aSmrg			;;
803e169010aSmrg    esac
804e169010aSmrg  done
805e169010aSmrg
806e169010aSmrg
807e169010aSmrg  case $host in
808e169010aSmrg    *cygwin* | *mingw* | *pw32* | *cegcc*)
809e169010aSmrg      # don't eliminate duplications in $postdeps and $predeps
810e169010aSmrg      opt_duplicate_compiler_generated_deps=:
8117914d74bSmrg      ;;
8127914d74bSmrg    *)
813e169010aSmrg      opt_duplicate_compiler_generated_deps=$opt_duplicate_deps
814e169010aSmrg      ;;
815e169010aSmrg  esac
8167914d74bSmrg
817e169010aSmrg  # Having warned about all mis-specified options, bail out if
818e169010aSmrg  # anything was wrong.
819e169010aSmrg  $exit_cmd $EXIT_FAILURE
820e169010aSmrg}
821e169010aSmrg
822e169010aSmrg# func_check_version_match
823e169010aSmrg# Ensure that we are using m4 macros, and libtool script from the same
824e169010aSmrg# release of libtool.
825e169010aSmrgfunc_check_version_match ()
826e169010aSmrg{
827e169010aSmrg  if test "$package_revision" != "$macro_revision"; then
828e169010aSmrg    if test "$VERSION" != "$macro_version"; then
829e169010aSmrg      if test -z "$macro_version"; then
830e169010aSmrg        cat >&2 <<_LT_EOF
831e169010aSmrg$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
832e169010aSmrg$progname: definition of this LT_INIT comes from an older release.
833e169010aSmrg$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
834e169010aSmrg$progname: and run autoconf again.
835e169010aSmrg_LT_EOF
836e169010aSmrg      else
837e169010aSmrg        cat >&2 <<_LT_EOF
838e169010aSmrg$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
839e169010aSmrg$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
840e169010aSmrg$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
841e169010aSmrg$progname: and run autoconf again.
842e169010aSmrg_LT_EOF
8437914d74bSmrg      fi
844e169010aSmrg    else
845e169010aSmrg      cat >&2 <<_LT_EOF
846e169010aSmrg$progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision,
847e169010aSmrg$progname: but the definition of this LT_INIT comes from revision $macro_revision.
848e169010aSmrg$progname: You should recreate aclocal.m4 with macros from revision $package_revision
849e169010aSmrg$progname: of $PACKAGE $VERSION and run autoconf again.
850e169010aSmrg_LT_EOF
851e169010aSmrg    fi
852e169010aSmrg
853e169010aSmrg    exit $EXIT_MISMATCH
854e169010aSmrg  fi
855e169010aSmrg}
856e169010aSmrg
857e169010aSmrg
858e169010aSmrg## ----------- ##
859e169010aSmrg##    Main.    ##
860e169010aSmrg## ----------- ##
861e169010aSmrg
862e169010aSmrg$opt_help || {
863e169010aSmrg  # Sanity checks first:
864e169010aSmrg  func_check_version_match
865e169010aSmrg
866e169010aSmrg  if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
867e169010aSmrg    func_fatal_configuration "not configured to build any kind of library"
8687914d74bSmrg  fi
8697914d74bSmrg
870e169010aSmrg  test -z "$mode" && func_fatal_error "error: you must specify a MODE."
871e169010aSmrg
872e169010aSmrg
873e169010aSmrg  # Darwin sucks
874e169010aSmrg  eval std_shrext=\"$shrext_cmds\"
875e169010aSmrg
876e169010aSmrg
8777914d74bSmrg  # Only execute mode is allowed to have -dlopen flags.
8787914d74bSmrg  if test -n "$execute_dlfiles" && test "$mode" != execute; then
879e169010aSmrg    func_error "unrecognized option \`-dlopen'"
880e169010aSmrg    $ECHO "$help" 1>&2
8817914d74bSmrg    exit $EXIT_FAILURE
8827914d74bSmrg  fi
8837914d74bSmrg
8847914d74bSmrg  # Change the help message to a mode-specific one.
8857914d74bSmrg  generic_help="$help"
886e169010aSmrg  help="Try \`$progname --help --mode=$mode' for more information."
887e169010aSmrg}
8887914d74bSmrg
8897914d74bSmrg
890e169010aSmrg# func_lalib_p file
891e169010aSmrg# True iff FILE is a libtool `.la' library or `.lo' object file.
892e169010aSmrg# This function is only a basic sanity check; it will hardly flush out
893e169010aSmrg# determined imposters.
894e169010aSmrgfunc_lalib_p ()
895e169010aSmrg{
896e169010aSmrg    test -f "$1" &&
897e169010aSmrg      $SED -e 4q "$1" 2>/dev/null \
898e169010aSmrg        | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
899e169010aSmrg}
9007914d74bSmrg
901e169010aSmrg# func_lalib_unsafe_p file
902e169010aSmrg# True iff FILE is a libtool `.la' library or `.lo' object file.
903e169010aSmrg# This function implements the same check as func_lalib_p without
904e169010aSmrg# resorting to external programs.  To this end, it redirects stdin and
905e169010aSmrg# closes it afterwards, without saving the original file descriptor.
906e169010aSmrg# As a safety measure, use it only where a negative result would be
907e169010aSmrg# fatal anyway.  Works if `file' does not exist.
908e169010aSmrgfunc_lalib_unsafe_p ()
909e169010aSmrg{
910e169010aSmrg    lalib_p=no
911e169010aSmrg    if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
912e169010aSmrg	for lalib_p_l in 1 2 3 4
913e169010aSmrg	do
914e169010aSmrg	    read lalib_p_line
915e169010aSmrg	    case "$lalib_p_line" in
916e169010aSmrg		\#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
917e169010aSmrg	    esac
918e169010aSmrg	done
919e169010aSmrg	exec 0<&5 5<&-
920e169010aSmrg    fi
921e169010aSmrg    test "$lalib_p" = yes
922e169010aSmrg}
9237914d74bSmrg
924e169010aSmrg# func_ltwrapper_script_p file
925e169010aSmrg# True iff FILE is a libtool wrapper script
926e169010aSmrg# This function is only a basic sanity check; it will hardly flush out
927e169010aSmrg# determined imposters.
928e169010aSmrgfunc_ltwrapper_script_p ()
929e169010aSmrg{
930e169010aSmrg    func_lalib_p "$1"
931e169010aSmrg}
9327914d74bSmrg
933e169010aSmrg# func_ltwrapper_executable_p file
934e169010aSmrg# True iff FILE is a libtool wrapper executable
935e169010aSmrg# This function is only a basic sanity check; it will hardly flush out
936e169010aSmrg# determined imposters.
937e169010aSmrgfunc_ltwrapper_executable_p ()
938e169010aSmrg{
939e169010aSmrg    func_ltwrapper_exec_suffix=
940e169010aSmrg    case $1 in
941e169010aSmrg    *.exe) ;;
942e169010aSmrg    *) func_ltwrapper_exec_suffix=.exe ;;
943e169010aSmrg    esac
944e169010aSmrg    $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
945e169010aSmrg}
9467914d74bSmrg
947e169010aSmrg# func_ltwrapper_scriptname file
948e169010aSmrg# Assumes file is an ltwrapper_executable
949e169010aSmrg# uses $file to determine the appropriate filename for a
950e169010aSmrg# temporary ltwrapper_script.
951e169010aSmrgfunc_ltwrapper_scriptname ()
952e169010aSmrg{
953e169010aSmrg    func_ltwrapper_scriptname_result=""
954e169010aSmrg    if func_ltwrapper_executable_p "$1"; then
955e169010aSmrg	func_dirname_and_basename "$1" "" "."
956e169010aSmrg	func_stripname '' '.exe' "$func_basename_result"
957e169010aSmrg	func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
958e169010aSmrg    fi
959e169010aSmrg}
9607914d74bSmrg
961e169010aSmrg# func_ltwrapper_p file
962e169010aSmrg# True iff FILE is a libtool wrapper script or wrapper executable
963e169010aSmrg# This function is only a basic sanity check; it will hardly flush out
964e169010aSmrg# determined imposters.
965e169010aSmrgfunc_ltwrapper_p ()
966e169010aSmrg{
967e169010aSmrg    func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
968e169010aSmrg}
9697914d74bSmrg
9707914d74bSmrg
971e169010aSmrg# func_execute_cmds commands fail_cmd
972e169010aSmrg# Execute tilde-delimited COMMANDS.
973e169010aSmrg# If FAIL_CMD is given, eval that upon failure.
974e169010aSmrg# FAIL_CMD may read-access the current command in variable CMD!
975e169010aSmrgfunc_execute_cmds ()
976e169010aSmrg{
977e169010aSmrg    $opt_debug
978e169010aSmrg    save_ifs=$IFS; IFS='~'
979e169010aSmrg    for cmd in $1; do
980e169010aSmrg      IFS=$save_ifs
981e169010aSmrg      eval cmd=\"$cmd\"
982e169010aSmrg      func_show_eval "$cmd" "${2-:}"
983e169010aSmrg    done
984e169010aSmrg    IFS=$save_ifs
985e169010aSmrg}
986e169010aSmrg
987e169010aSmrg
988e169010aSmrg# func_source file
989e169010aSmrg# Source FILE, adding directory component if necessary.
990e169010aSmrg# Note that it is not necessary on cygwin/mingw to append a dot to
991e169010aSmrg# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
992e169010aSmrg# behavior happens only for exec(3), not for open(2)!  Also, sourcing
993e169010aSmrg# `FILE.' does not work on cygwin managed mounts.
994e169010aSmrgfunc_source ()
995e169010aSmrg{
996e169010aSmrg    $opt_debug
997e169010aSmrg    case $1 in
998e169010aSmrg    */* | *\\*)	. "$1" ;;
999e169010aSmrg    *)		. "./$1" ;;
1000e169010aSmrg    esac
1001e169010aSmrg}
1002e169010aSmrg
1003e169010aSmrg
1004e169010aSmrg# func_infer_tag arg
1005e169010aSmrg# Infer tagged configuration to use if any are available and
1006e169010aSmrg# if one wasn't chosen via the "--tag" command line option.
1007e169010aSmrg# Only attempt this if the compiler in the base compile
1008e169010aSmrg# command doesn't match the default compiler.
1009e169010aSmrg# arg is usually of the form 'gcc ...'
1010e169010aSmrgfunc_infer_tag ()
1011e169010aSmrg{
1012e169010aSmrg    $opt_debug
1013e169010aSmrg    if test -n "$available_tags" && test -z "$tagname"; then
1014e169010aSmrg      CC_quoted=
1015e169010aSmrg      for arg in $CC; do
1016e169010aSmrg        func_quote_for_eval "$arg"
1017e169010aSmrg	CC_quoted="$CC_quoted $func_quote_for_eval_result"
1018e169010aSmrg      done
1019e169010aSmrg      case $@ in
1020e169010aSmrg      # Blanks in the command may have been stripped by the calling shell,
1021e169010aSmrg      # but not from the CC environment variable when configure was run.
1022e169010aSmrg      " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;;
1023e169010aSmrg      # Blanks at the start of $base_compile will cause this to fail
1024e169010aSmrg      # if we don't check for them as well.
1025e169010aSmrg      *)
1026e169010aSmrg	for z in $available_tags; do
1027e169010aSmrg	  if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
1028e169010aSmrg	    # Evaluate the configuration.
1029e169010aSmrg	    eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
1030e169010aSmrg	    CC_quoted=
1031e169010aSmrg	    for arg in $CC; do
1032e169010aSmrg	      # Double-quote args containing other shell metacharacters.
1033e169010aSmrg	      func_quote_for_eval "$arg"
1034e169010aSmrg	      CC_quoted="$CC_quoted $func_quote_for_eval_result"
1035e169010aSmrg	    done
1036e169010aSmrg	    case "$@ " in
1037e169010aSmrg	      " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*)
1038e169010aSmrg	      # The compiler in the base compile command matches
1039e169010aSmrg	      # the one in the tagged configuration.
1040e169010aSmrg	      # Assume this is the tagged configuration we want.
1041e169010aSmrg	      tagname=$z
1042e169010aSmrg	      break
1043e169010aSmrg	      ;;
10447914d74bSmrg	    esac
1045e169010aSmrg	  fi
1046e169010aSmrg	done
1047e169010aSmrg	# If $tagname still isn't set, then no tagged configuration
1048e169010aSmrg	# was found and let the user know that the "--tag" command
1049e169010aSmrg	# line option must be used.
1050e169010aSmrg	if test -z "$tagname"; then
1051e169010aSmrg	  func_echo "unable to infer tagged configuration"
1052e169010aSmrg	  func_fatal_error "specify a tag with \`--tag'"
1053e169010aSmrg#	else
1054e169010aSmrg#	  func_verbose "using $tagname tagged configuration"
1055e169010aSmrg	fi
1056e169010aSmrg	;;
1057e169010aSmrg      esac
1058e169010aSmrg    fi
1059e169010aSmrg}
1060e169010aSmrg
1061e169010aSmrg
1062e169010aSmrg
1063e169010aSmrg# func_write_libtool_object output_name pic_name nonpic_name
1064e169010aSmrg# Create a libtool object file (analogous to a ".la" file),
1065e169010aSmrg# but don't create it if we're doing a dry run.
1066e169010aSmrgfunc_write_libtool_object ()
1067e169010aSmrg{
1068e169010aSmrg    write_libobj=${1}
1069e169010aSmrg    if test "$build_libtool_libs" = yes; then
1070e169010aSmrg      write_lobj=\'${2}\'
1071e169010aSmrg    else
1072e169010aSmrg      write_lobj=none
1073e169010aSmrg    fi
1074e169010aSmrg
1075e169010aSmrg    if test "$build_old_libs" = yes; then
1076e169010aSmrg      write_oldobj=\'${3}\'
1077e169010aSmrg    else
1078e169010aSmrg      write_oldobj=none
1079e169010aSmrg    fi
1080e169010aSmrg
1081e169010aSmrg    $opt_dry_run || {
1082e169010aSmrg      cat >${write_libobj}T <<EOF
1083e169010aSmrg# $write_libobj - a libtool object file
1084e169010aSmrg# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
1085e169010aSmrg#
1086e169010aSmrg# Please DO NOT delete this file!
1087e169010aSmrg# It is necessary for linking the library.
1088e169010aSmrg
1089e169010aSmrg# Name of the PIC object.
1090e169010aSmrgpic_object=$write_lobj
1091e169010aSmrg
1092e169010aSmrg# Name of the non-PIC object
1093e169010aSmrgnon_pic_object=$write_oldobj
1094e169010aSmrg
1095e169010aSmrgEOF
1096e169010aSmrg      $MV "${write_libobj}T" "${write_libobj}"
1097e169010aSmrg    }
1098e169010aSmrg}
1099e169010aSmrg
1100e169010aSmrg# func_mode_compile arg...
1101e169010aSmrgfunc_mode_compile ()
1102e169010aSmrg{
1103e169010aSmrg    $opt_debug
1104e169010aSmrg    # Get the compilation command and the source file.
1105e169010aSmrg    base_compile=
1106e169010aSmrg    srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
1107e169010aSmrg    suppress_opt=yes
1108e169010aSmrg    suppress_output=
1109e169010aSmrg    arg_mode=normal
1110e169010aSmrg    libobj=
1111e169010aSmrg    later=
1112e169010aSmrg    pie_flag=
1113e169010aSmrg
1114e169010aSmrg    for arg
1115e169010aSmrg    do
1116e169010aSmrg      case $arg_mode in
1117e169010aSmrg      arg  )
1118e169010aSmrg	# do not "continue".  Instead, add this to base_compile
1119e169010aSmrg	lastarg="$arg"
1120e169010aSmrg	arg_mode=normal
1121e169010aSmrg	;;
1122e169010aSmrg
1123e169010aSmrg      target )
1124e169010aSmrg	libobj="$arg"
1125e169010aSmrg	arg_mode=normal
1126e169010aSmrg	continue
1127e169010aSmrg	;;
1128e169010aSmrg
1129e169010aSmrg      normal )
1130e169010aSmrg	# Accept any command-line options.
1131e169010aSmrg	case $arg in
1132e169010aSmrg	-o)
1133e169010aSmrg	  test -n "$libobj" && \
1134e169010aSmrg	    func_fatal_error "you cannot specify \`-o' more than once"
1135e169010aSmrg	  arg_mode=target
1136e169010aSmrg	  continue
1137e169010aSmrg	  ;;
1138e169010aSmrg
1139e169010aSmrg	-pie | -fpie | -fPIE)
1140e169010aSmrg          pie_flag="$pie_flag $arg"
1141e169010aSmrg	  continue
1142e169010aSmrg	  ;;
1143e169010aSmrg
1144e169010aSmrg	-shared | -static | -prefer-pic | -prefer-non-pic)
1145e169010aSmrg	  later="$later $arg"
1146e169010aSmrg	  continue
1147e169010aSmrg	  ;;
1148e169010aSmrg
1149e169010aSmrg	-no-suppress)
1150e169010aSmrg	  suppress_opt=no
1151e169010aSmrg	  continue
1152e169010aSmrg	  ;;
1153e169010aSmrg
1154e169010aSmrg	-Xcompiler)
1155e169010aSmrg	  arg_mode=arg  #  the next one goes into the "base_compile" arg list
1156e169010aSmrg	  continue      #  The current "srcfile" will either be retained or
1157e169010aSmrg	  ;;            #  replaced later.  I would guess that would be a bug.
1158e169010aSmrg
1159e169010aSmrg	-Wc,*)
1160e169010aSmrg	  func_stripname '-Wc,' '' "$arg"
1161e169010aSmrg	  args=$func_stripname_result
1162e169010aSmrg	  lastarg=
1163e169010aSmrg	  save_ifs="$IFS"; IFS=','
1164e169010aSmrg	  for arg in $args; do
1165e169010aSmrg	    IFS="$save_ifs"
1166e169010aSmrg	    func_quote_for_eval "$arg"
1167e169010aSmrg	    lastarg="$lastarg $func_quote_for_eval_result"
11687914d74bSmrg	  done
11697914d74bSmrg	  IFS="$save_ifs"
1170e169010aSmrg	  func_stripname ' ' '' "$lastarg"
1171e169010aSmrg	  lastarg=$func_stripname_result
11727914d74bSmrg
11737914d74bSmrg	  # Add the arguments to base_compile.
11747914d74bSmrg	  base_compile="$base_compile $lastarg"
11757914d74bSmrg	  continue
11767914d74bSmrg	  ;;
11777914d74bSmrg
1178e169010aSmrg	*)
11797914d74bSmrg	  # Accept the current argument as the source file.
11807914d74bSmrg	  # The previous "srcfile" becomes the current argument.
11817914d74bSmrg	  #
11827914d74bSmrg	  lastarg="$srcfile"
11837914d74bSmrg	  srcfile="$arg"
11847914d74bSmrg	  ;;
11857914d74bSmrg	esac  #  case $arg
11867914d74bSmrg	;;
11877914d74bSmrg      esac    #  case $arg_mode
11887914d74bSmrg
11897914d74bSmrg      # Aesthetically quote the previous argument.
1190e169010aSmrg      func_quote_for_eval "$lastarg"
1191e169010aSmrg      base_compile="$base_compile $func_quote_for_eval_result"
11927914d74bSmrg    done # for arg
11937914d74bSmrg
11947914d74bSmrg    case $arg_mode in
11957914d74bSmrg    arg)
1196e169010aSmrg      func_fatal_error "you must specify an argument for -Xcompile"
11977914d74bSmrg      ;;
11987914d74bSmrg    target)
1199e169010aSmrg      func_fatal_error "you must specify a target with \`-o'"
12007914d74bSmrg      ;;
12017914d74bSmrg    *)
12027914d74bSmrg      # Get the name of the library object.
1203e169010aSmrg      test -z "$libobj" && {
1204e169010aSmrg	func_basename "$srcfile"
1205e169010aSmrg	libobj="$func_basename_result"
1206e169010aSmrg      }
12077914d74bSmrg      ;;
12087914d74bSmrg    esac
12097914d74bSmrg
12107914d74bSmrg    # Recognize several different file suffixes.
12117914d74bSmrg    # If the user specifies -o file.o, it is replaced with file.lo
12127914d74bSmrg    case $libobj in
1213e169010aSmrg    *.[cCFSifmso] | \
1214e169010aSmrg    *.ada | *.adb | *.ads | *.asm | \
1215e169010aSmrg    *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
1216e169010aSmrg    *.[fF][09]? | *.for | *.java | *.obj | *.sx)
1217e169010aSmrg      func_xform "$libobj"
1218e169010aSmrg      libobj=$func_xform_result
1219e169010aSmrg      ;;
12207914d74bSmrg    esac
12217914d74bSmrg
12227914d74bSmrg    case $libobj in
1223e169010aSmrg    *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
12247914d74bSmrg    *)
1225e169010aSmrg      func_fatal_error "cannot determine name of library object from \`$libobj'"
12267914d74bSmrg      ;;
12277914d74bSmrg    esac
12287914d74bSmrg
12297914d74bSmrg    func_infer_tag $base_compile
12307914d74bSmrg
12317914d74bSmrg    for arg in $later; do
12327914d74bSmrg      case $arg in
1233e169010aSmrg      -shared)
1234e169010aSmrg	test "$build_libtool_libs" != yes && \
1235e169010aSmrg	  func_fatal_configuration "can not build a shared library"
1236e169010aSmrg	build_old_libs=no
1237e169010aSmrg	continue
1238e169010aSmrg	;;
1239e169010aSmrg
12407914d74bSmrg      -static)
1241e169010aSmrg	build_libtool_libs=no
12427914d74bSmrg	build_old_libs=yes
12437914d74bSmrg	continue
12447914d74bSmrg	;;
12457914d74bSmrg
12467914d74bSmrg      -prefer-pic)
12477914d74bSmrg	pic_mode=yes
12487914d74bSmrg	continue
12497914d74bSmrg	;;
12507914d74bSmrg
12517914d74bSmrg      -prefer-non-pic)
12527914d74bSmrg	pic_mode=no
12537914d74bSmrg	continue
12547914d74bSmrg	;;
12557914d74bSmrg      esac
12567914d74bSmrg    done
12577914d74bSmrg
1258e169010aSmrg    func_quote_for_eval "$libobj"
1259e169010aSmrg    test "X$libobj" != "X$func_quote_for_eval_result" \
1260e169010aSmrg      && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"'	 &()|`$[]' \
1261e169010aSmrg      && func_warning "libobj name \`$libobj' may not contain shell special characters."
1262e169010aSmrg    func_dirname_and_basename "$obj" "/" ""
1263e169010aSmrg    objname="$func_basename_result"
1264e169010aSmrg    xdir="$func_dirname_result"
12657914d74bSmrg    lobj=${xdir}$objdir/$objname
12667914d74bSmrg
1267e169010aSmrg    test -z "$base_compile" && \
1268e169010aSmrg      func_fatal_help "you must specify a compilation command"
12697914d74bSmrg
12707914d74bSmrg    # Delete any leftover library objects.
12717914d74bSmrg    if test "$build_old_libs" = yes; then
12727914d74bSmrg      removelist="$obj $lobj $libobj ${libobj}T"
12737914d74bSmrg    else
12747914d74bSmrg      removelist="$lobj $libobj ${libobj}T"
12757914d74bSmrg    fi
12767914d74bSmrg
12777914d74bSmrg    # On Cygwin there's no "real" PIC flag so we must build both object types
12787914d74bSmrg    case $host_os in
1279e169010aSmrg    cygwin* | mingw* | pw32* | os2* | cegcc*)
12807914d74bSmrg      pic_mode=default
12817914d74bSmrg      ;;
12827914d74bSmrg    esac
12837914d74bSmrg    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
12847914d74bSmrg      # non-PIC code in shared libraries is not supported
12857914d74bSmrg      pic_mode=default
12867914d74bSmrg    fi
12877914d74bSmrg
12887914d74bSmrg    # Calculate the filename of the output object if compiler does
12897914d74bSmrg    # not support -o with -c
12907914d74bSmrg    if test "$compiler_c_o" = no; then
1291e169010aSmrg      output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
12927914d74bSmrg      lockfile="$output_obj.lock"
12937914d74bSmrg    else
12947914d74bSmrg      output_obj=
12957914d74bSmrg      need_locks=no
12967914d74bSmrg      lockfile=
12977914d74bSmrg    fi
12987914d74bSmrg
12997914d74bSmrg    # Lock this critical section if it is needed
13007914d74bSmrg    # We use this script file to make the link, it avoids creating a new file
13017914d74bSmrg    if test "$need_locks" = yes; then
1302e169010aSmrg      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
1303e169010aSmrg	func_echo "Waiting for $lockfile to be removed"
13047914d74bSmrg	sleep 2
13057914d74bSmrg      done
13067914d74bSmrg    elif test "$need_locks" = warn; then
13077914d74bSmrg      if test -f "$lockfile"; then
1308e169010aSmrg	$ECHO "\
13097914d74bSmrg*** ERROR, $lockfile exists and contains:
13107914d74bSmrg`cat $lockfile 2>/dev/null`
13117914d74bSmrg
13127914d74bSmrgThis indicates that another process is trying to use the same
13137914d74bSmrgtemporary object file, and libtool could not work around it because
13147914d74bSmrgyour compiler does not support \`-c' and \`-o' together.  If you
13157914d74bSmrgrepeat this compilation, it may succeed, by chance, but you had better
13167914d74bSmrgavoid parallel builds (make -j) in this platform, or get a better
13177914d74bSmrgcompiler."
13187914d74bSmrg
1319e169010aSmrg	$opt_dry_run || $RM $removelist
13207914d74bSmrg	exit $EXIT_FAILURE
13217914d74bSmrg      fi
1322e169010aSmrg      removelist="$removelist $output_obj"
1323e169010aSmrg      $ECHO "$srcfile" > "$lockfile"
13247914d74bSmrg    fi
13257914d74bSmrg
1326e169010aSmrg    $opt_dry_run || $RM $removelist
1327e169010aSmrg    removelist="$removelist $lockfile"
1328e169010aSmrg    trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
1329e169010aSmrg
13307914d74bSmrg    if test -n "$fix_srcfile_path"; then
13317914d74bSmrg      eval srcfile=\"$fix_srcfile_path\"
13327914d74bSmrg    fi
1333e169010aSmrg    func_quote_for_eval "$srcfile"
1334e169010aSmrg    qsrcfile=$func_quote_for_eval_result
13357914d74bSmrg
13367914d74bSmrg    # Only build a PIC object if we are building libtool libraries.
13377914d74bSmrg    if test "$build_libtool_libs" = yes; then
13387914d74bSmrg      # Without this assignment, base_compile gets emptied.
13397914d74bSmrg      fbsd_hideous_sh_bug=$base_compile
13407914d74bSmrg
13417914d74bSmrg      if test "$pic_mode" != no; then
13427914d74bSmrg	command="$base_compile $qsrcfile $pic_flag"
13437914d74bSmrg      else
13447914d74bSmrg	# Don't build PIC code
13457914d74bSmrg	command="$base_compile $qsrcfile"
13467914d74bSmrg      fi
13477914d74bSmrg
1348e169010aSmrg      func_mkdir_p "$xdir$objdir"
13497914d74bSmrg
13507914d74bSmrg      if test -z "$output_obj"; then
13517914d74bSmrg	# Place PIC objects in $objdir
13527914d74bSmrg	command="$command -o $lobj"
13537914d74bSmrg      fi
13547914d74bSmrg
1355e169010aSmrg      func_show_eval_locale "$command"	\
1356e169010aSmrg          'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
13577914d74bSmrg
13587914d74bSmrg      if test "$need_locks" = warn &&
13597914d74bSmrg	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
1360e169010aSmrg	$ECHO "\
13617914d74bSmrg*** ERROR, $lockfile contains:
13627914d74bSmrg`cat $lockfile 2>/dev/null`
13637914d74bSmrg
13647914d74bSmrgbut it should contain:
13657914d74bSmrg$srcfile
13667914d74bSmrg
13677914d74bSmrgThis indicates that another process is trying to use the same
13687914d74bSmrgtemporary object file, and libtool could not work around it because
13697914d74bSmrgyour compiler does not support \`-c' and \`-o' together.  If you
13707914d74bSmrgrepeat this compilation, it may succeed, by chance, but you had better
13717914d74bSmrgavoid parallel builds (make -j) in this platform, or get a better
13727914d74bSmrgcompiler."
13737914d74bSmrg
1374e169010aSmrg	$opt_dry_run || $RM $removelist
13757914d74bSmrg	exit $EXIT_FAILURE
13767914d74bSmrg      fi
13777914d74bSmrg
13787914d74bSmrg      # Just move the object if needed, then go on to compile the next one
13797914d74bSmrg      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
1380e169010aSmrg	func_show_eval '$MV "$output_obj" "$lobj"' \
1381e169010aSmrg	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
13827914d74bSmrg      fi
13837914d74bSmrg
13847914d74bSmrg      # Allow error messages only from the first compilation.
13857914d74bSmrg      if test "$suppress_opt" = yes; then
1386e169010aSmrg	suppress_output=' >/dev/null 2>&1'
13877914d74bSmrg      fi
13887914d74bSmrg    fi
13897914d74bSmrg
13907914d74bSmrg    # Only build a position-dependent object if we build old libraries.
13917914d74bSmrg    if test "$build_old_libs" = yes; then
13927914d74bSmrg      if test "$pic_mode" != yes; then
13937914d74bSmrg	# Don't build PIC code
1394e169010aSmrg	command="$base_compile $qsrcfile$pie_flag"
13957914d74bSmrg      else
13967914d74bSmrg	command="$base_compile $qsrcfile $pic_flag"
13977914d74bSmrg      fi
13987914d74bSmrg      if test "$compiler_c_o" = yes; then
13997914d74bSmrg	command="$command -o $obj"
14007914d74bSmrg      fi
14017914d74bSmrg
14027914d74bSmrg      # Suppress compiler output if we already did a PIC compilation.
14037914d74bSmrg      command="$command$suppress_output"
1404e169010aSmrg      func_show_eval_locale "$command" \
1405e169010aSmrg        '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
14067914d74bSmrg
14077914d74bSmrg      if test "$need_locks" = warn &&
14087914d74bSmrg	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
1409e169010aSmrg	$ECHO "\
14107914d74bSmrg*** ERROR, $lockfile contains:
14117914d74bSmrg`cat $lockfile 2>/dev/null`
14127914d74bSmrg
14137914d74bSmrgbut it should contain:
14147914d74bSmrg$srcfile
14157914d74bSmrg
14167914d74bSmrgThis indicates that another process is trying to use the same
14177914d74bSmrgtemporary object file, and libtool could not work around it because
14187914d74bSmrgyour compiler does not support \`-c' and \`-o' together.  If you
14197914d74bSmrgrepeat this compilation, it may succeed, by chance, but you had better
14207914d74bSmrgavoid parallel builds (make -j) in this platform, or get a better
14217914d74bSmrgcompiler."
14227914d74bSmrg
1423e169010aSmrg	$opt_dry_run || $RM $removelist
14247914d74bSmrg	exit $EXIT_FAILURE
14257914d74bSmrg      fi
14267914d74bSmrg
14277914d74bSmrg      # Just move the object if needed
14287914d74bSmrg      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
1429e169010aSmrg	func_show_eval '$MV "$output_obj" "$obj"' \
1430e169010aSmrg	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
14317914d74bSmrg      fi
14327914d74bSmrg    fi
14337914d74bSmrg
1434e169010aSmrg    $opt_dry_run || {
1435e169010aSmrg      func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
14367914d74bSmrg
1437e169010aSmrg      # Unlock the critical section if it was locked
1438e169010aSmrg      if test "$need_locks" != no; then
1439e169010aSmrg	removelist=$lockfile
1440e169010aSmrg        $RM "$lockfile"
1441e169010aSmrg      fi
1442e169010aSmrg    }
14437914d74bSmrg
14447914d74bSmrg    exit $EXIT_SUCCESS
1445e169010aSmrg}
14467914d74bSmrg
1447e169010aSmrg$opt_help || {
1448e169010aSmrgtest "$mode" = compile && func_mode_compile ${1+"$@"}
1449e169010aSmrg}
14507914d74bSmrg
1451e169010aSmrgfunc_mode_help ()
1452e169010aSmrg{
1453e169010aSmrg    # We need to display help for each of the modes.
1454e169010aSmrg    case $mode in
1455e169010aSmrg      "")
1456e169010aSmrg        # Generic help is extracted from the usage comments
1457e169010aSmrg        # at the start of this file.
1458e169010aSmrg        func_help
1459e169010aSmrg        ;;
14607914d74bSmrg
1461e169010aSmrg      clean)
1462e169010aSmrg        $ECHO \
1463e169010aSmrg"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
14647914d74bSmrg
1465e169010aSmrgRemove files from the build directory.
14667914d74bSmrg
1467e169010aSmrgRM is the name of the program to use to delete files associated with each FILE
1468e169010aSmrg(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
1469e169010aSmrgto RM.
14707914d74bSmrg
1471e169010aSmrgIf FILE is a libtool library, object or program, all the files associated
1472e169010aSmrgwith it are deleted. Otherwise, only FILE itself is deleted using RM."
1473e169010aSmrg        ;;
14747914d74bSmrg
1475e169010aSmrg      compile)
1476e169010aSmrg      $ECHO \
1477e169010aSmrg"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
14787914d74bSmrg
1479e169010aSmrgCompile a source file into a libtool library object.
14807914d74bSmrg
1481e169010aSmrgThis mode accepts the following additional options:
14827914d74bSmrg
1483e169010aSmrg  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
1484e169010aSmrg  -no-suppress      do not suppress compiler output for multiple passes
1485e169010aSmrg  -prefer-pic       try to building PIC objects only
1486e169010aSmrg  -prefer-non-pic   try to building non-PIC objects only
1487e169010aSmrg  -shared           do not build a \`.o' file suitable for static linking
1488e169010aSmrg  -static           only build a \`.o' file suitable for static linking
14897914d74bSmrg
1490e169010aSmrgCOMPILE-COMMAND is a command to be used in creating a \`standard' object file
1491e169010aSmrgfrom the given SOURCEFILE.
14927914d74bSmrg
1493e169010aSmrgThe output file name is determined by removing the directory component from
1494e169010aSmrgSOURCEFILE, then substituting the C source code suffix \`.c' with the
1495e169010aSmrglibrary object suffix, \`.lo'."
1496e169010aSmrg        ;;
14977914d74bSmrg
1498e169010aSmrg      execute)
1499e169010aSmrg        $ECHO \
1500e169010aSmrg"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
15017914d74bSmrg
1502e169010aSmrgAutomatically set library path, then run a program.
15037914d74bSmrg
1504e169010aSmrgThis mode accepts the following additional options:
15057914d74bSmrg
1506e169010aSmrg  -dlopen FILE      add the directory containing FILE to the library path
15077914d74bSmrg
1508e169010aSmrgThis mode sets the library path environment variable according to \`-dlopen'
1509e169010aSmrgflags.
15107914d74bSmrg
1511e169010aSmrgIf any of the ARGS are libtool executable wrappers, then they are translated
1512e169010aSmrginto their corresponding uninstalled binary, and any of their required library
1513e169010aSmrgdirectories are added to the library path.
15147914d74bSmrg
1515e169010aSmrgThen, COMMAND is executed, with ARGS as arguments."
1516e169010aSmrg        ;;
15177914d74bSmrg
1518e169010aSmrg      finish)
1519e169010aSmrg        $ECHO \
1520e169010aSmrg"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
15217914d74bSmrg
1522e169010aSmrgComplete the installation of libtool libraries.
15237914d74bSmrg
1524e169010aSmrgEach LIBDIR is a directory that contains libtool libraries.
15257914d74bSmrg
1526e169010aSmrgThe commands that this mode executes may require superuser privileges.  Use
1527e169010aSmrgthe \`--dry-run' option if you just want to see what would be executed."
1528e169010aSmrg        ;;
15297914d74bSmrg
1530e169010aSmrg      install)
1531e169010aSmrg        $ECHO \
1532e169010aSmrg"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
15337914d74bSmrg
1534e169010aSmrgInstall executables or libraries.
15357914d74bSmrg
1536e169010aSmrgINSTALL-COMMAND is the installation command.  The first component should be
1537e169010aSmrgeither the \`install' or \`cp' program.
15387914d74bSmrg
1539e169010aSmrgThe following components of INSTALL-COMMAND are treated specially:
15407914d74bSmrg
1541e169010aSmrg  -inst-prefix PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
15427914d74bSmrg
1543e169010aSmrgThe rest of the components are interpreted as arguments to that command (only
1544e169010aSmrgBSD-compatible install options are recognized)."
1545e169010aSmrg        ;;
15467914d74bSmrg
1547e169010aSmrg      link)
1548e169010aSmrg        $ECHO \
1549e169010aSmrg"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
15507914d74bSmrg
1551e169010aSmrgLink object files or libraries together to form another library, or to
1552e169010aSmrgcreate an executable program.
15537914d74bSmrg
1554e169010aSmrgLINK-COMMAND is a command using the C compiler that you would use to create
1555e169010aSmrga program from several object files.
15567914d74bSmrg
1557e169010aSmrgThe following components of LINK-COMMAND are treated specially:
15587914d74bSmrg
1559e169010aSmrg  -all-static       do not do any dynamic linking at all
1560e169010aSmrg  -avoid-version    do not add a version suffix if possible
1561e169010aSmrg  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
1562e169010aSmrg  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
1563e169010aSmrg  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
1564e169010aSmrg  -export-symbols SYMFILE
1565e169010aSmrg                    try to export only the symbols listed in SYMFILE
1566e169010aSmrg  -export-symbols-regex REGEX
1567e169010aSmrg                    try to export only the symbols matching REGEX
1568e169010aSmrg  -LLIBDIR          search LIBDIR for required installed libraries
1569e169010aSmrg  -lNAME            OUTPUT-FILE requires the installed library libNAME
1570e169010aSmrg  -module           build a library that can dlopened
1571e169010aSmrg  -no-fast-install  disable the fast-install mode
1572e169010aSmrg  -no-install       link a not-installable executable
1573e169010aSmrg  -no-undefined     declare that a library does not refer to external symbols
1574e169010aSmrg  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
1575e169010aSmrg  -objectlist FILE  Use a list of object files found in FILE to specify objects
1576e169010aSmrg  -precious-files-regex REGEX
1577e169010aSmrg                    don't remove output files matching REGEX
1578e169010aSmrg  -release RELEASE  specify package release information
1579e169010aSmrg  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
1580e169010aSmrg  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
1581e169010aSmrg  -shared           only do dynamic linking of libtool libraries
1582e169010aSmrg  -shrext SUFFIX    override the standard shared library file extension
1583e169010aSmrg  -static           do not do any dynamic linking of uninstalled libtool libraries
1584e169010aSmrg  -static-libtool-libs
1585e169010aSmrg                    do not do any dynamic linking of libtool libraries
1586e169010aSmrg  -version-info CURRENT[:REVISION[:AGE]]
1587e169010aSmrg                    specify library version info [each variable defaults to 0]
1588e169010aSmrg  -weak LIBNAME     declare that the target provides the LIBNAME interface
15897914d74bSmrg
1590e169010aSmrgAll other options (arguments beginning with \`-') are ignored.
15917914d74bSmrg
1592e169010aSmrgEvery other argument is treated as a filename.  Files ending in \`.la' are
1593e169010aSmrgtreated as uninstalled libtool libraries, other files are standard or library
1594e169010aSmrgobject files.
15957914d74bSmrg
1596e169010aSmrgIf the OUTPUT-FILE ends in \`.la', then a libtool library is created,
1597e169010aSmrgonly library objects (\`.lo' files) may be specified, and \`-rpath' is
1598e169010aSmrgrequired, except when creating a convenience library.
15997914d74bSmrg
1600e169010aSmrgIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
1601e169010aSmrgusing \`ar' and \`ranlib', or on Windows using \`lib'.
16027914d74bSmrg
1603e169010aSmrgIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
1604e169010aSmrgis created, otherwise an executable program is created."
16057914d74bSmrg        ;;
16067914d74bSmrg
1607e169010aSmrg      uninstall)
1608e169010aSmrg        $ECHO \
1609e169010aSmrg"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
16107914d74bSmrg
1611e169010aSmrgRemove libraries from an installation directory.
16127914d74bSmrg
1613e169010aSmrgRM is the name of the program to use to delete files associated with each FILE
1614e169010aSmrg(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
1615e169010aSmrgto RM.
16167914d74bSmrg
1617e169010aSmrgIf FILE is a libtool library, all the files associated with it are deleted.
1618e169010aSmrgOtherwise, only FILE itself is deleted using RM."
1619e169010aSmrg        ;;
16207914d74bSmrg
1621e169010aSmrg      *)
1622e169010aSmrg        func_fatal_help "invalid operation mode \`$mode'"
1623e169010aSmrg        ;;
1624e169010aSmrg    esac
16257914d74bSmrg
1626e169010aSmrg    $ECHO
1627e169010aSmrg    $ECHO "Try \`$progname --help' for more information about other modes."
16287914d74bSmrg
1629e169010aSmrg    exit $?
1630e169010aSmrg}
16317914d74bSmrg
1632e169010aSmrg  # Now that we've collected a possible --mode arg, show help if necessary
1633e169010aSmrg  $opt_help && func_mode_help
16347914d74bSmrg
16357914d74bSmrg
1636e169010aSmrg# func_mode_execute arg...
1637e169010aSmrgfunc_mode_execute ()
1638e169010aSmrg{
1639e169010aSmrg    $opt_debug
1640e169010aSmrg    # The first argument is the command name.
1641e169010aSmrg    cmd="$nonopt"
1642e169010aSmrg    test -z "$cmd" && \
1643e169010aSmrg      func_fatal_help "you must specify a COMMAND"
16447914d74bSmrg
1645e169010aSmrg    # Handle -dlopen flags immediately.
1646e169010aSmrg    for file in $execute_dlfiles; do
1647e169010aSmrg      test -f "$file" \
1648e169010aSmrg	|| func_fatal_help "\`$file' is not a file"
16497914d74bSmrg
1650e169010aSmrg      dir=
1651e169010aSmrg      case $file in
1652e169010aSmrg      *.la)
1653e169010aSmrg	# Check to see that this really is a libtool archive.
1654e169010aSmrg	func_lalib_unsafe_p "$file" \
1655e169010aSmrg	  || func_fatal_help "\`$lib' is not a valid libtool archive"
16567914d74bSmrg
1657e169010aSmrg	# Read the libtool library.
1658e169010aSmrg	dlname=
1659e169010aSmrg	library_names=
1660e169010aSmrg	func_source "$file"
16617914d74bSmrg
1662e169010aSmrg	# Skip this library if it cannot be dlopened.
1663e169010aSmrg	if test -z "$dlname"; then
1664e169010aSmrg	  # Warn if it was a shared library.
1665e169010aSmrg	  test -n "$library_names" && \
1666e169010aSmrg	    func_warning "\`$file' was not linked with \`-export-dynamic'"
1667e169010aSmrg	  continue
1668e169010aSmrg	fi
16697914d74bSmrg
1670e169010aSmrg	func_dirname "$file" "" "."
1671e169010aSmrg	dir="$func_dirname_result"
16727914d74bSmrg
1673e169010aSmrg	if test -f "$dir/$objdir/$dlname"; then
1674e169010aSmrg	  dir="$dir/$objdir"
1675e169010aSmrg	else
1676e169010aSmrg	  if test ! -f "$dir/$dlname"; then
1677e169010aSmrg	    func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
1678e169010aSmrg	  fi
1679e169010aSmrg	fi
16807914d74bSmrg	;;
16817914d74bSmrg
1682e169010aSmrg      *.lo)
1683e169010aSmrg	# Just add the directory containing the .lo file.
1684e169010aSmrg	func_dirname "$file" "" "."
1685e169010aSmrg	dir="$func_dirname_result"
16867914d74bSmrg	;;
16877914d74bSmrg
1688e169010aSmrg      *)
1689e169010aSmrg	func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
16907914d74bSmrg	continue
16917914d74bSmrg	;;
1692e169010aSmrg      esac
16937914d74bSmrg
1694e169010aSmrg      # Get the absolute pathname.
1695e169010aSmrg      absdir=`cd "$dir" && pwd`
1696e169010aSmrg      test -n "$absdir" && dir="$absdir"
16977914d74bSmrg
1698e169010aSmrg      # Now add the directory to shlibpath_var.
1699e169010aSmrg      if eval "test -z \"\$$shlibpath_var\""; then
1700e169010aSmrg	eval "$shlibpath_var=\"\$dir\""
1701e169010aSmrg      else
1702e169010aSmrg	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
1703e169010aSmrg      fi
1704e169010aSmrg    done
17057914d74bSmrg
1706e169010aSmrg    # This variable tells wrapper scripts just to set shlibpath_var
1707e169010aSmrg    # rather than running their programs.
1708e169010aSmrg    libtool_execute_magic="$magic"
17097914d74bSmrg
1710e169010aSmrg    # Check if any of the arguments is a wrapper script.
1711e169010aSmrg    args=
1712e169010aSmrg    for file
1713e169010aSmrg    do
1714e169010aSmrg      case $file in
1715e169010aSmrg      -*) ;;
1716e169010aSmrg      *)
1717e169010aSmrg	# Do a test to see if this is really a libtool program.
1718e169010aSmrg	if func_ltwrapper_script_p "$file"; then
1719e169010aSmrg	  func_source "$file"
1720e169010aSmrg	  # Transform arg to wrapped name.
1721e169010aSmrg	  file="$progdir/$program"
1722e169010aSmrg	elif func_ltwrapper_executable_p "$file"; then
1723e169010aSmrg	  func_ltwrapper_scriptname "$file"
1724e169010aSmrg	  func_source "$func_ltwrapper_scriptname_result"
1725e169010aSmrg	  # Transform arg to wrapped name.
1726e169010aSmrg	  file="$progdir/$program"
1727e169010aSmrg	fi
1728e169010aSmrg	;;
1729e169010aSmrg      esac
1730e169010aSmrg      # Quote arguments (to preserve shell metacharacters).
1731e169010aSmrg      func_quote_for_eval "$file"
1732e169010aSmrg      args="$args $func_quote_for_eval_result"
1733e169010aSmrg    done
17347914d74bSmrg
1735e169010aSmrg    if test "X$opt_dry_run" = Xfalse; then
1736e169010aSmrg      if test -n "$shlibpath_var"; then
1737e169010aSmrg	# Export the shlibpath_var.
1738e169010aSmrg	eval "export $shlibpath_var"
1739e169010aSmrg      fi
17407914d74bSmrg
1741e169010aSmrg      # Restore saved environment variables
1742e169010aSmrg      for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
1743e169010aSmrg      do
1744e169010aSmrg	eval "if test \"\${save_$lt_var+set}\" = set; then
1745e169010aSmrg                $lt_var=\$save_$lt_var; export $lt_var
1746e169010aSmrg	      else
1747e169010aSmrg		$lt_unset $lt_var
1748e169010aSmrg	      fi"
1749e169010aSmrg      done
17507914d74bSmrg
1751e169010aSmrg      # Now prepare to actually exec the command.
1752e169010aSmrg      exec_cmd="\$cmd$args"
1753e169010aSmrg    else
1754e169010aSmrg      # Display what would be done.
1755e169010aSmrg      if test -n "$shlibpath_var"; then
1756e169010aSmrg	eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
1757e169010aSmrg	$ECHO "export $shlibpath_var"
1758e169010aSmrg      fi
1759e169010aSmrg      $ECHO "$cmd$args"
1760e169010aSmrg      exit $EXIT_SUCCESS
1761e169010aSmrg    fi
1762e169010aSmrg}
17637914d74bSmrg
1764e169010aSmrgtest "$mode" = execute && func_mode_execute ${1+"$@"}
17657914d74bSmrg
17667914d74bSmrg
1767e169010aSmrg# func_mode_finish arg...
1768e169010aSmrgfunc_mode_finish ()
1769e169010aSmrg{
1770e169010aSmrg    $opt_debug
1771e169010aSmrg    libdirs="$nonopt"
1772e169010aSmrg    admincmds=
17737914d74bSmrg
1774e169010aSmrg    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
1775e169010aSmrg      for dir
1776e169010aSmrg      do
1777e169010aSmrg	libdirs="$libdirs $dir"
1778e169010aSmrg      done
17797914d74bSmrg
1780e169010aSmrg      for libdir in $libdirs; do
1781e169010aSmrg	if test -n "$finish_cmds"; then
1782e169010aSmrg	  # Do each command in the finish commands.
1783e169010aSmrg	  func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
1784e169010aSmrg'"$cmd"'"'
1785e169010aSmrg	fi
1786e169010aSmrg	if test -n "$finish_eval"; then
1787e169010aSmrg	  # Do the single finish_eval.
1788e169010aSmrg	  eval cmds=\"$finish_eval\"
1789e169010aSmrg	  $opt_dry_run || eval "$cmds" || admincmds="$admincmds
1790e169010aSmrg       $cmds"
1791e169010aSmrg	fi
1792e169010aSmrg      done
1793e169010aSmrg    fi
17947914d74bSmrg
1795e169010aSmrg    # Exit here if they wanted silent mode.
1796e169010aSmrg    $opt_silent && exit $EXIT_SUCCESS
17977914d74bSmrg
1798e169010aSmrg    $ECHO "X----------------------------------------------------------------------" | $Xsed
1799e169010aSmrg    $ECHO "Libraries have been installed in:"
1800e169010aSmrg    for libdir in $libdirs; do
1801e169010aSmrg      $ECHO "   $libdir"
1802e169010aSmrg    done
1803e169010aSmrg    $ECHO
1804e169010aSmrg    $ECHO "If you ever happen to want to link against installed libraries"
1805e169010aSmrg    $ECHO "in a given directory, LIBDIR, you must either use libtool, and"
1806e169010aSmrg    $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'"
1807e169010aSmrg    $ECHO "flag during linking and do at least one of the following:"
1808e169010aSmrg    if test -n "$shlibpath_var"; then
1809e169010aSmrg      $ECHO "   - add LIBDIR to the \`$shlibpath_var' environment variable"
1810e169010aSmrg      $ECHO "     during execution"
1811e169010aSmrg    fi
1812e169010aSmrg    if test -n "$runpath_var"; then
1813e169010aSmrg      $ECHO "   - add LIBDIR to the \`$runpath_var' environment variable"
1814e169010aSmrg      $ECHO "     during linking"
1815e169010aSmrg    fi
1816e169010aSmrg    if test -n "$hardcode_libdir_flag_spec"; then
1817e169010aSmrg      libdir=LIBDIR
1818e169010aSmrg      eval flag=\"$hardcode_libdir_flag_spec\"
18197914d74bSmrg
1820e169010aSmrg      $ECHO "   - use the \`$flag' linker flag"
1821e169010aSmrg    fi
1822e169010aSmrg    if test -n "$admincmds"; then
1823e169010aSmrg      $ECHO "   - have your system administrator run these commands:$admincmds"
1824e169010aSmrg    fi
1825e169010aSmrg    if test -f /etc/ld.so.conf; then
1826e169010aSmrg      $ECHO "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
1827e169010aSmrg    fi
1828e169010aSmrg    $ECHO
18297914d74bSmrg
1830e169010aSmrg    $ECHO "See any operating system documentation about shared libraries for"
1831e169010aSmrg    case $host in
1832e169010aSmrg      solaris2.[6789]|solaris2.1[0-9])
1833e169010aSmrg        $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual"
1834e169010aSmrg	$ECHO "pages."
18357914d74bSmrg	;;
1836e169010aSmrg      *)
1837e169010aSmrg        $ECHO "more information, such as the ld(1) and ld.so(8) manual pages."
1838e169010aSmrg        ;;
1839e169010aSmrg    esac
1840e169010aSmrg    $ECHO "X----------------------------------------------------------------------" | $Xsed
1841e169010aSmrg    exit $EXIT_SUCCESS
1842e169010aSmrg}
18437914d74bSmrg
1844e169010aSmrgtest "$mode" = finish && func_mode_finish ${1+"$@"}
18457914d74bSmrg
18467914d74bSmrg
1847e169010aSmrg# func_mode_install arg...
1848e169010aSmrgfunc_mode_install ()
1849e169010aSmrg{
1850e169010aSmrg    $opt_debug
1851e169010aSmrg    # There may be an optional sh(1) argument at the beginning of
1852e169010aSmrg    # install_prog (especially on Windows NT).
1853e169010aSmrg    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
1854e169010aSmrg       # Allow the use of GNU shtool's install command.
1855e169010aSmrg       $ECHO "X$nonopt" | $GREP shtool >/dev/null; then
1856e169010aSmrg      # Aesthetically quote it.
1857e169010aSmrg      func_quote_for_eval "$nonopt"
1858e169010aSmrg      install_prog="$func_quote_for_eval_result "
1859e169010aSmrg      arg=$1
1860e169010aSmrg      shift
1861e169010aSmrg    else
1862e169010aSmrg      install_prog=
1863e169010aSmrg      arg=$nonopt
1864e169010aSmrg    fi
18657914d74bSmrg
1866e169010aSmrg    # The real first argument should be the name of the installation program.
1867e169010aSmrg    # Aesthetically quote it.
1868e169010aSmrg    func_quote_for_eval "$arg"
1869e169010aSmrg    install_prog="$install_prog$func_quote_for_eval_result"
1870e169010aSmrg
1871e169010aSmrg    # We need to accept at least all the BSD install flags.
1872e169010aSmrg    dest=
1873e169010aSmrg    files=
1874e169010aSmrg    opts=
1875e169010aSmrg    prev=
1876e169010aSmrg    install_type=
1877e169010aSmrg    isdir=no
1878e169010aSmrg    stripme=
1879e169010aSmrg    for arg
1880e169010aSmrg    do
1881e169010aSmrg      if test -n "$dest"; then
1882e169010aSmrg	files="$files $dest"
1883e169010aSmrg	dest=$arg
1884e169010aSmrg	continue
18857914d74bSmrg      fi
18867914d74bSmrg
1887e169010aSmrg      case $arg in
1888e169010aSmrg      -d) isdir=yes ;;
1889e169010aSmrg      -f)
1890e169010aSmrg	case " $install_prog " in
1891e169010aSmrg	*[\\\ /]cp\ *) ;;
1892e169010aSmrg	*) prev=$arg ;;
1893e169010aSmrg	esac
1894e169010aSmrg	;;
1895e169010aSmrg      -g | -m | -o)
1896e169010aSmrg	prev=$arg
1897e169010aSmrg	;;
1898e169010aSmrg      -s)
1899e169010aSmrg	stripme=" -s"
1900e169010aSmrg	continue
1901e169010aSmrg	;;
1902e169010aSmrg      -*)
1903e169010aSmrg	;;
1904e169010aSmrg      *)
1905e169010aSmrg	# If the previous option needed an argument, then skip it.
1906e169010aSmrg	if test -n "$prev"; then
1907e169010aSmrg	  prev=
1908e169010aSmrg	else
1909e169010aSmrg	  dest=$arg
1910e169010aSmrg	  continue
1911e169010aSmrg	fi
1912e169010aSmrg	;;
1913e169010aSmrg      esac
19147914d74bSmrg
1915e169010aSmrg      # Aesthetically quote the argument.
1916e169010aSmrg      func_quote_for_eval "$arg"
1917e169010aSmrg      install_prog="$install_prog $func_quote_for_eval_result"
1918e169010aSmrg    done
19197914d74bSmrg
1920e169010aSmrg    test -z "$install_prog" && \
1921e169010aSmrg      func_fatal_help "you must specify an install program"
19227914d74bSmrg
1923e169010aSmrg    test -n "$prev" && \
1924e169010aSmrg      func_fatal_help "the \`$prev' option requires an argument"
19257914d74bSmrg
1926e169010aSmrg    if test -z "$files"; then
1927e169010aSmrg      if test -z "$dest"; then
1928e169010aSmrg	func_fatal_help "no file or destination specified"
1929e169010aSmrg      else
1930e169010aSmrg	func_fatal_help "you must specify a destination"
19317914d74bSmrg      fi
19327914d74bSmrg    fi
19337914d74bSmrg
1934e169010aSmrg    # Strip any trailing slash from the destination.
1935e169010aSmrg    func_stripname '' '/' "$dest"
1936e169010aSmrg    dest=$func_stripname_result
19377914d74bSmrg
1938e169010aSmrg    # Check to see that the destination is a directory.
1939e169010aSmrg    test -d "$dest" && isdir=yes
1940e169010aSmrg    if test "$isdir" = yes; then
1941e169010aSmrg      destdir="$dest"
1942e169010aSmrg      destname=
1943e169010aSmrg    else
1944e169010aSmrg      func_dirname_and_basename "$dest" "" "."
1945e169010aSmrg      destdir="$func_dirname_result"
1946e169010aSmrg      destname="$func_basename_result"
1947e169010aSmrg
1948e169010aSmrg      # Not a directory, so check to see that there is only one file specified.
1949e169010aSmrg      set dummy $files; shift
1950e169010aSmrg      test "$#" -gt 1 && \
1951e169010aSmrg	func_fatal_help "\`$dest' is not a directory"
1952e169010aSmrg    fi
1953e169010aSmrg    case $destdir in
1954e169010aSmrg    [\\/]* | [A-Za-z]:[\\/]*) ;;
19557914d74bSmrg    *)
1956e169010aSmrg      for file in $files; do
1957e169010aSmrg	case $file in
1958e169010aSmrg	*.lo) ;;
1959e169010aSmrg	*)
1960e169010aSmrg	  func_fatal_help "\`$destdir' must be an absolute directory name"
1961e169010aSmrg	  ;;
1962e169010aSmrg	esac
1963e169010aSmrg      done
19647914d74bSmrg      ;;
19657914d74bSmrg    esac
19667914d74bSmrg
1967e169010aSmrg    # This variable tells wrapper scripts just to set variables rather
1968e169010aSmrg    # than running their programs.
1969e169010aSmrg    libtool_install_magic="$magic"
19707914d74bSmrg
1971e169010aSmrg    staticlibs=
1972e169010aSmrg    future_libdirs=
1973e169010aSmrg    current_libdirs=
1974e169010aSmrg    for file in $files; do
19757914d74bSmrg
1976e169010aSmrg      # Do each installation.
1977e169010aSmrg      case $file in
1978e169010aSmrg      *.$libext)
1979e169010aSmrg	# Do the static libraries later.
1980e169010aSmrg	staticlibs="$staticlibs $file"
1981e169010aSmrg	;;
1982e169010aSmrg
1983e169010aSmrg      *.la)
1984e169010aSmrg	# Check to see that this really is a libtool archive.
1985e169010aSmrg	func_lalib_unsafe_p "$file" \
1986e169010aSmrg	  || func_fatal_help "\`$file' is not a valid libtool archive"
1987e169010aSmrg
1988e169010aSmrg	library_names=
1989e169010aSmrg	old_library=
1990e169010aSmrg	relink_command=
1991e169010aSmrg	func_source "$file"
1992e169010aSmrg
1993e169010aSmrg	# Add the libdir to current_libdirs if it is the destination.
1994e169010aSmrg	if test "X$destdir" = "X$libdir"; then
1995e169010aSmrg	  case "$current_libdirs " in
1996e169010aSmrg	  *" $libdir "*) ;;
1997e169010aSmrg	  *) current_libdirs="$current_libdirs $libdir" ;;
19987914d74bSmrg	  esac
1999e169010aSmrg	else
2000e169010aSmrg	  # Note the libdir as a future libdir.
2001e169010aSmrg	  case "$future_libdirs " in
2002e169010aSmrg	  *" $libdir "*) ;;
2003e169010aSmrg	  *) future_libdirs="$future_libdirs $libdir" ;;
2004e169010aSmrg	  esac
2005e169010aSmrg	fi
20067914d74bSmrg
2007e169010aSmrg	func_dirname "$file" "/" ""
2008e169010aSmrg	dir="$func_dirname_result"
2009e169010aSmrg	dir="$dir$objdir"
2010e169010aSmrg
2011e169010aSmrg	if test -n "$relink_command"; then
2012e169010aSmrg	  # Determine the prefix the user has applied to our future dir.
2013e169010aSmrg	  inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"`
2014e169010aSmrg
2015e169010aSmrg	  # Don't allow the user to place us outside of our expected
2016e169010aSmrg	  # location b/c this prevents finding dependent libraries that
2017e169010aSmrg	  # are installed to the same prefix.
2018e169010aSmrg	  # At present, this check doesn't affect windows .dll's that
2019e169010aSmrg	  # are installed into $libdir/../bin (currently, that works fine)
2020e169010aSmrg	  # but it's something to keep an eye on.
2021e169010aSmrg	  test "$inst_prefix_dir" = "$destdir" && \
2022e169010aSmrg	    func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
2023e169010aSmrg
2024e169010aSmrg	  if test -n "$inst_prefix_dir"; then
2025e169010aSmrg	    # Stick the inst_prefix_dir data into the link command.
2026e169010aSmrg	    relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
2027e169010aSmrg	  else
2028e169010aSmrg	    relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"`
2029e169010aSmrg	  fi
2030e169010aSmrg
2031e169010aSmrg	  func_warning "relinking \`$file'"
2032e169010aSmrg	  func_show_eval "$relink_command" \
2033e169010aSmrg	    'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
2034e169010aSmrg	fi
2035e169010aSmrg
2036e169010aSmrg	# See the names of the shared library.
2037e169010aSmrg	set dummy $library_names; shift
2038e169010aSmrg	if test -n "$1"; then
2039e169010aSmrg	  realname="$1"
2040e169010aSmrg	  shift
2041e169010aSmrg
2042e169010aSmrg	  srcname="$realname"
2043e169010aSmrg	  test -n "$relink_command" && srcname="$realname"T
2044e169010aSmrg
2045e169010aSmrg	  # Install the shared library and build the symlinks.
2046e169010aSmrg	  func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \
2047e169010aSmrg	      'exit $?'
2048e169010aSmrg	  tstripme="$stripme"
2049e169010aSmrg	  case $host_os in
2050e169010aSmrg	  cygwin* | mingw* | pw32* | cegcc*)
2051e169010aSmrg	    case $realname in
2052e169010aSmrg	    *.dll.a)
2053e169010aSmrg	      tstripme=""
2054e169010aSmrg	      ;;
2055e169010aSmrg	    esac
20567914d74bSmrg	    ;;
20577914d74bSmrg	  esac
2058e169010aSmrg	  if test -n "$tstripme" && test -n "$striplib"; then
2059e169010aSmrg	    func_show_eval "$striplib $destdir/$realname" 'exit $?'
20607914d74bSmrg	  fi
2061e169010aSmrg
2062e169010aSmrg	  if test "$#" -gt 0; then
2063e169010aSmrg	    # Delete the old symlinks, and create new ones.
2064e169010aSmrg	    # Try `ln -sf' first, because the `ln' binary might depend on
2065e169010aSmrg	    # the symlink we replace!  Solaris /bin/ln does not understand -f,
2066e169010aSmrg	    # so we also need to try rm && ln -s.
2067e169010aSmrg	    for linkname
2068e169010aSmrg	    do
2069e169010aSmrg	      test "$linkname" != "$realname" \
2070e169010aSmrg		&& func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
20717914d74bSmrg	    done
20727914d74bSmrg	  fi
20737914d74bSmrg
2074e169010aSmrg	  # Do each command in the postinstall commands.
2075e169010aSmrg	  lib="$destdir/$realname"
2076e169010aSmrg	  func_execute_cmds "$postinstall_cmds" 'exit $?'
20777914d74bSmrg	fi
20787914d74bSmrg
2079e169010aSmrg	# Install the pseudo-library for information purposes.
2080e169010aSmrg	func_basename "$file"
2081e169010aSmrg	name="$func_basename_result"
2082e169010aSmrg	instname="$dir/$name"i
2083e169010aSmrg	func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
20847914d74bSmrg
2085e169010aSmrg	# Maybe install the static library, too.
2086e169010aSmrg	test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
2087e169010aSmrg	;;
20887914d74bSmrg
2089e169010aSmrg      *.lo)
2090e169010aSmrg	# Install (i.e. copy) a libtool object.
20917914d74bSmrg
2092e169010aSmrg	# Figure out destination file name, if it wasn't already specified.
2093e169010aSmrg	if test -n "$destname"; then
2094e169010aSmrg	  destfile="$destdir/$destname"
2095e169010aSmrg	else
2096e169010aSmrg	  func_basename "$file"
2097e169010aSmrg	  destfile="$func_basename_result"
2098e169010aSmrg	  destfile="$destdir/$destfile"
2099e169010aSmrg	fi
2100e169010aSmrg
2101e169010aSmrg	# Deduce the name of the destination old-style object file.
2102e169010aSmrg	case $destfile in
2103e169010aSmrg	*.lo)
2104e169010aSmrg	  func_lo2o "$destfile"
2105e169010aSmrg	  staticdest=$func_lo2o_result
2106e169010aSmrg	  ;;
2107e169010aSmrg	*.$objext)
2108e169010aSmrg	  staticdest="$destfile"
2109e169010aSmrg	  destfile=
2110e169010aSmrg	  ;;
2111e169010aSmrg	*)
2112e169010aSmrg	  func_fatal_help "cannot copy a libtool object to \`$destfile'"
2113e169010aSmrg	  ;;
21147914d74bSmrg	esac
21157914d74bSmrg
2116e169010aSmrg	# Install the libtool object if requested.
2117e169010aSmrg	test -n "$destfile" && \
2118e169010aSmrg	  func_show_eval "$install_prog $file $destfile" 'exit $?'
2119e169010aSmrg
2120e169010aSmrg	# Install the old object if enabled.
2121e169010aSmrg	if test "$build_old_libs" = yes; then
2122e169010aSmrg	  # Deduce the name of the old-style object file.
2123e169010aSmrg	  func_lo2o "$file"
2124e169010aSmrg	  staticobj=$func_lo2o_result
2125e169010aSmrg	  func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
21267914d74bSmrg	fi
2127e169010aSmrg	exit $EXIT_SUCCESS
2128e169010aSmrg	;;
21297914d74bSmrg
2130e169010aSmrg      *)
2131e169010aSmrg	# Figure out destination file name, if it wasn't already specified.
2132e169010aSmrg	if test -n "$destname"; then
2133e169010aSmrg	  destfile="$destdir/$destname"
2134e169010aSmrg	else
2135e169010aSmrg	  func_basename "$file"
2136e169010aSmrg	  destfile="$func_basename_result"
2137e169010aSmrg	  destfile="$destdir/$destfile"
2138e169010aSmrg	fi
2139e169010aSmrg
2140e169010aSmrg	# If the file is missing, and there is a .exe on the end, strip it
2141e169010aSmrg	# because it is most likely a libtool script we actually want to
2142e169010aSmrg	# install
2143e169010aSmrg	stripped_ext=""
2144e169010aSmrg	case $file in
2145e169010aSmrg	  *.exe)
2146e169010aSmrg	    if test ! -f "$file"; then
2147e169010aSmrg	      func_stripname '' '.exe' "$file"
2148e169010aSmrg	      file=$func_stripname_result
2149e169010aSmrg	      stripped_ext=".exe"
21507914d74bSmrg	    fi
2151e169010aSmrg	    ;;
2152e169010aSmrg	esac
21537914d74bSmrg
2154e169010aSmrg	# Do a test to see if this is really a libtool program.
2155e169010aSmrg	case $host in
2156e169010aSmrg	*cygwin* | *mingw*)
2157e169010aSmrg	    if func_ltwrapper_executable_p "$file"; then
2158e169010aSmrg	      func_ltwrapper_scriptname "$file"
2159e169010aSmrg	      wrapper=$func_ltwrapper_scriptname_result
2160e169010aSmrg	    else
2161e169010aSmrg	      func_stripname '' '.exe' "$file"
2162e169010aSmrg	      wrapper=$func_stripname_result
2163e169010aSmrg	    fi
2164e169010aSmrg	    ;;
2165e169010aSmrg	*)
2166e169010aSmrg	    wrapper=$file
2167e169010aSmrg	    ;;
2168e169010aSmrg	esac
2169e169010aSmrg	if func_ltwrapper_script_p "$wrapper"; then
2170e169010aSmrg	  notinst_deplibs=
2171e169010aSmrg	  relink_command=
21727914d74bSmrg
2173e169010aSmrg	  func_source "$wrapper"
21747914d74bSmrg
2175e169010aSmrg	  # Check the variables that should have been set.
2176e169010aSmrg	  test -z "$generated_by_libtool_version" && \
2177e169010aSmrg	    func_fatal_error "invalid libtool wrapper script \`$wrapper'"
2178e169010aSmrg
2179e169010aSmrg	  finalize=yes
2180e169010aSmrg	  for lib in $notinst_deplibs; do
2181e169010aSmrg	    # Check to see that each library is installed.
2182e169010aSmrg	    libdir=
2183e169010aSmrg	    if test -f "$lib"; then
2184e169010aSmrg	      func_source "$lib"
2185e169010aSmrg	    fi
2186e169010aSmrg	    libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
2187e169010aSmrg	    if test -n "$libdir" && test ! -f "$libfile"; then
2188e169010aSmrg	      func_warning "\`$lib' has not been installed in \`$libdir'"
2189e169010aSmrg	      finalize=no
2190e169010aSmrg	    fi
2191e169010aSmrg	  done
2192e169010aSmrg
2193e169010aSmrg	  relink_command=
2194e169010aSmrg	  func_source "$wrapper"
2195e169010aSmrg
2196e169010aSmrg	  outputname=
2197e169010aSmrg	  if test "$fast_install" = no && test -n "$relink_command"; then
2198e169010aSmrg	    $opt_dry_run || {
2199e169010aSmrg	      if test "$finalize" = yes; then
2200e169010aSmrg	        tmpdir=`func_mktempdir`
2201e169010aSmrg		func_basename "$file$stripped_ext"
2202e169010aSmrg		file="$func_basename_result"
2203e169010aSmrg	        outputname="$tmpdir/$file"
2204e169010aSmrg	        # Replace the output file specification.
2205e169010aSmrg	        relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
2206e169010aSmrg
2207e169010aSmrg	        $opt_silent || {
2208e169010aSmrg	          func_quote_for_expand "$relink_command"
2209e169010aSmrg		  eval "func_echo $func_quote_for_expand_result"
2210e169010aSmrg	        }
2211e169010aSmrg	        if eval "$relink_command"; then :
2212e169010aSmrg	          else
2213e169010aSmrg		  func_error "error: relink \`$file' with the above command before installing it"
2214e169010aSmrg		  $opt_dry_run || ${RM}r "$tmpdir"
2215e169010aSmrg		  continue
2216e169010aSmrg	        fi
2217e169010aSmrg	        file="$outputname"
2218e169010aSmrg	      else
2219e169010aSmrg	        func_warning "cannot relink \`$file'"
2220e169010aSmrg	      fi
2221e169010aSmrg	    }
22227914d74bSmrg	  else
2223e169010aSmrg	    # Install the binary that we compiled earlier.
2224e169010aSmrg	    file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
22257914d74bSmrg	  fi
2226e169010aSmrg	fi
22277914d74bSmrg
2228e169010aSmrg	# remove .exe since cygwin /usr/bin/install will append another
2229e169010aSmrg	# one anyway
2230e169010aSmrg	case $install_prog,$host in
2231e169010aSmrg	*/usr/bin/install*,*cygwin*)
2232e169010aSmrg	  case $file:$destfile in
2233e169010aSmrg	  *.exe:*.exe)
2234e169010aSmrg	    # this is ok
2235e169010aSmrg	    ;;
2236e169010aSmrg	  *.exe:*)
2237e169010aSmrg	    destfile=$destfile.exe
2238e169010aSmrg	    ;;
2239e169010aSmrg	  *:*.exe)
2240e169010aSmrg	    func_stripname '' '.exe' "$destfile"
2241e169010aSmrg	    destfile=$func_stripname_result
2242e169010aSmrg	    ;;
2243e169010aSmrg	  esac
22447914d74bSmrg	  ;;
22457914d74bSmrg	esac
2246e169010aSmrg	func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
2247e169010aSmrg	$opt_dry_run || if test -n "$outputname"; then
2248e169010aSmrg	  ${RM}r "$tmpdir"
2249e169010aSmrg	fi
2250e169010aSmrg	;;
2251e169010aSmrg      esac
2252e169010aSmrg    done
22537914d74bSmrg
2254e169010aSmrg    for file in $staticlibs; do
2255e169010aSmrg      func_basename "$file"
2256e169010aSmrg      name="$func_basename_result"
22577914d74bSmrg
2258e169010aSmrg      # Set up the ranlib parameters.
2259e169010aSmrg      oldlib="$destdir/$name"
22607914d74bSmrg
2261e169010aSmrg      func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
22627914d74bSmrg
2263e169010aSmrg      if test -n "$stripme" && test -n "$old_striplib"; then
2264e169010aSmrg	func_show_eval "$old_striplib $oldlib" 'exit $?'
2265e169010aSmrg      fi
22667914d74bSmrg
2267e169010aSmrg      # Do each command in the postinstall commands.
2268e169010aSmrg      func_execute_cmds "$old_postinstall_cmds" 'exit $?'
2269e169010aSmrg    done
22707914d74bSmrg
2271e169010aSmrg    test -n "$future_libdirs" && \
2272e169010aSmrg      func_warning "remember to run \`$progname --finish$future_libdirs'"
22737914d74bSmrg
2274e169010aSmrg    if test -n "$current_libdirs"; then
2275e169010aSmrg      # Maybe just do a dry run.
2276e169010aSmrg      $opt_dry_run && current_libdirs=" -n$current_libdirs"
2277e169010aSmrg      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
2278e169010aSmrg    else
2279e169010aSmrg      exit $EXIT_SUCCESS
2280e169010aSmrg    fi
2281e169010aSmrg}
22827914d74bSmrg
2283e169010aSmrgtest "$mode" = install && func_mode_install ${1+"$@"}
22847914d74bSmrg
22857914d74bSmrg
2286e169010aSmrg# func_generate_dlsyms outputname originator pic_p
2287e169010aSmrg# Extract symbols from dlprefiles and create ${outputname}S.o with
2288e169010aSmrg# a dlpreopen symbol table.
2289e169010aSmrgfunc_generate_dlsyms ()
2290e169010aSmrg{
2291e169010aSmrg    $opt_debug
2292e169010aSmrg    my_outputname="$1"
2293e169010aSmrg    my_originator="$2"
2294e169010aSmrg    my_pic_p="${3-no}"
2295e169010aSmrg    my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
2296e169010aSmrg    my_dlsyms=
2297e169010aSmrg
2298e169010aSmrg    if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
2299e169010aSmrg      if test -n "$NM" && test -n "$global_symbol_pipe"; then
2300e169010aSmrg	my_dlsyms="${my_outputname}S.c"
2301e169010aSmrg      else
2302e169010aSmrg	func_error "not configured to extract global symbols from dlpreopened files"
2303e169010aSmrg      fi
2304e169010aSmrg    fi
23057914d74bSmrg
2306e169010aSmrg    if test -n "$my_dlsyms"; then
2307e169010aSmrg      case $my_dlsyms in
2308e169010aSmrg      "") ;;
2309e169010aSmrg      *.c)
2310e169010aSmrg	# Discover the nlist of each of the dlfiles.
2311e169010aSmrg	nlist="$output_objdir/${my_outputname}.nm"
2312e169010aSmrg
2313e169010aSmrg	func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
2314e169010aSmrg
2315e169010aSmrg	# Parse the name list into a source file.
2316e169010aSmrg	func_verbose "creating $output_objdir/$my_dlsyms"
2317e169010aSmrg
2318e169010aSmrg	$opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
2319e169010aSmrg/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
2320e169010aSmrg/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
2321e169010aSmrg
2322e169010aSmrg#ifdef __cplusplus
2323e169010aSmrgextern \"C\" {
2324e169010aSmrg#endif
2325e169010aSmrg
2326e169010aSmrg/* External symbol declarations for the compiler. */\
2327e169010aSmrg"
2328e169010aSmrg
2329e169010aSmrg	if test "$dlself" = yes; then
2330e169010aSmrg	  func_verbose "generating symbol list for \`$output'"
2331e169010aSmrg
2332e169010aSmrg	  $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
2333e169010aSmrg
2334e169010aSmrg	  # Add our own program objects to the symbol list.
2335e169010aSmrg	  progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
2336e169010aSmrg	  for progfile in $progfiles; do
2337e169010aSmrg	    func_verbose "extracting global C symbols from \`$progfile'"
2338e169010aSmrg	    $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'"
2339e169010aSmrg	  done
2340e169010aSmrg
2341e169010aSmrg	  if test -n "$exclude_expsyms"; then
2342e169010aSmrg	    $opt_dry_run || {
2343e169010aSmrg	      eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
2344e169010aSmrg	      eval '$MV "$nlist"T "$nlist"'
2345e169010aSmrg	    }
23467914d74bSmrg	  fi
23477914d74bSmrg
2348e169010aSmrg	  if test -n "$export_symbols_regex"; then
2349e169010aSmrg	    $opt_dry_run || {
2350e169010aSmrg	      eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
2351e169010aSmrg	      eval '$MV "$nlist"T "$nlist"'
2352e169010aSmrg	    }
23537914d74bSmrg	  fi
2354e169010aSmrg
2355e169010aSmrg	  # Prepare the list of exported symbols
2356e169010aSmrg	  if test -z "$export_symbols"; then
2357e169010aSmrg	    export_symbols="$output_objdir/$outputname.exp"
2358e169010aSmrg	    $opt_dry_run || {
2359e169010aSmrg	      $RM $export_symbols
2360e169010aSmrg	      eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
2361e169010aSmrg	      case $host in
2362e169010aSmrg	      *cygwin* | *mingw* | *cegcc* )
2363e169010aSmrg                eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
2364e169010aSmrg                eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
2365e169010aSmrg	        ;;
23667914d74bSmrg	      esac
2367e169010aSmrg	    }
2368e169010aSmrg	  else
2369e169010aSmrg	    $opt_dry_run || {
2370e169010aSmrg	      eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
2371e169010aSmrg	      eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
2372e169010aSmrg	      eval '$MV "$nlist"T "$nlist"'
2373e169010aSmrg	      case $host in
2374e169010aSmrg	        *cygwin | *mingw* | *cegcc* )
2375e169010aSmrg	          eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
2376e169010aSmrg	          eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
2377e169010aSmrg	          ;;
23787914d74bSmrg	      esac
2379e169010aSmrg	    }
23807914d74bSmrg	  fi
2381e169010aSmrg	fi
23827914d74bSmrg
2383e169010aSmrg	for dlprefile in $dlprefiles; do
2384e169010aSmrg	  func_verbose "extracting global C symbols from \`$dlprefile'"
2385e169010aSmrg	  func_basename "$dlprefile"
2386e169010aSmrg	  name="$func_basename_result"
2387e169010aSmrg	  $opt_dry_run || {
2388e169010aSmrg	    eval '$ECHO ": $name " >> "$nlist"'
2389e169010aSmrg	    eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'"
2390e169010aSmrg	  }
2391e169010aSmrg	done
23927914d74bSmrg
2393e169010aSmrg	$opt_dry_run || {
2394e169010aSmrg	  # Make sure we have at least an empty file.
2395e169010aSmrg	  test -f "$nlist" || : > "$nlist"
23967914d74bSmrg
2397e169010aSmrg	  if test -n "$exclude_expsyms"; then
2398e169010aSmrg	    $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
2399e169010aSmrg	    $MV "$nlist"T "$nlist"
24007914d74bSmrg	  fi
24017914d74bSmrg
2402e169010aSmrg	  # Try sorting and uniquifying the output.
2403e169010aSmrg	  if $GREP -v "^: " < "$nlist" |
2404e169010aSmrg	      if sort -k 3 </dev/null >/dev/null 2>&1; then
2405e169010aSmrg		sort -k 3
24067914d74bSmrg	      else
2407e169010aSmrg		sort +2
2408e169010aSmrg	      fi |
2409e169010aSmrg	      uniq > "$nlist"S; then
2410e169010aSmrg	    :
24117914d74bSmrg	  else
2412e169010aSmrg	    $GREP -v "^: " < "$nlist" > "$nlist"S
24137914d74bSmrg	  fi
24147914d74bSmrg
2415e169010aSmrg	  if test -f "$nlist"S; then
2416e169010aSmrg	    eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
24177914d74bSmrg	  else
2418e169010aSmrg	    $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms"
24197914d74bSmrg	  fi
24207914d74bSmrg
2421e169010aSmrg	  $ECHO >> "$output_objdir/$my_dlsyms" "\
24227914d74bSmrg
2423e169010aSmrg/* The mapping between symbol names and symbols.  */
2424e169010aSmrgtypedef struct {
2425e169010aSmrg  const char *name;
2426e169010aSmrg  void *address;
2427e169010aSmrg} lt_dlsymlist;
2428e169010aSmrg"
2429e169010aSmrg	  case $host in
2430e169010aSmrg	  *cygwin* | *mingw* | *cegcc* )
2431e169010aSmrg	    $ECHO >> "$output_objdir/$my_dlsyms" "\
2432e169010aSmrg/* DATA imports from DLLs on WIN32 con't be const, because
2433e169010aSmrg   runtime relocations are performed -- see ld's documentation
2434e169010aSmrg   on pseudo-relocs.  */"
2435e169010aSmrg	    lt_dlsym_const= ;;
2436e169010aSmrg	  *osf5*)
2437e169010aSmrg	    echo >> "$output_objdir/$my_dlsyms" "\
2438e169010aSmrg/* This system does not cope well with relocations in const data */"
2439e169010aSmrg	    lt_dlsym_const= ;;
2440e169010aSmrg	  *)
2441e169010aSmrg	    lt_dlsym_const=const ;;
2442e169010aSmrg	  esac
2443e169010aSmrg
2444e169010aSmrg	  $ECHO >> "$output_objdir/$my_dlsyms" "\
2445e169010aSmrgextern $lt_dlsym_const lt_dlsymlist
2446e169010aSmrglt_${my_prefix}_LTX_preloaded_symbols[];
2447e169010aSmrg$lt_dlsym_const lt_dlsymlist
2448e169010aSmrglt_${my_prefix}_LTX_preloaded_symbols[] =
2449e169010aSmrg{\
2450e169010aSmrg  { \"$my_originator\", (void *) 0 },"
2451e169010aSmrg
2452e169010aSmrg	  case $need_lib_prefix in
2453e169010aSmrg	  no)
2454e169010aSmrg	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
2455e169010aSmrg	    ;;
2456e169010aSmrg	  *)
2457e169010aSmrg	    eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
2458e169010aSmrg	    ;;
2459e169010aSmrg	  esac
2460e169010aSmrg	  $ECHO >> "$output_objdir/$my_dlsyms" "\
2461e169010aSmrg  {0, (void *) 0}
2462e169010aSmrg};
2463e169010aSmrg
2464e169010aSmrg/* This works around a problem in FreeBSD linker */
2465e169010aSmrg#ifdef FREEBSD_WORKAROUND
2466e169010aSmrgstatic const void *lt_preloaded_setup() {
2467e169010aSmrg  return lt_${my_prefix}_LTX_preloaded_symbols;
2468e169010aSmrg}
2469e169010aSmrg#endif
2470e169010aSmrg
2471e169010aSmrg#ifdef __cplusplus
2472e169010aSmrg}
2473e169010aSmrg#endif\
2474e169010aSmrg"
2475e169010aSmrg	} # !$opt_dry_run
2476e169010aSmrg
2477e169010aSmrg	pic_flag_for_symtable=
2478e169010aSmrg	case "$compile_command " in
2479e169010aSmrg	*" -static "*) ;;
2480e169010aSmrg	*)
2481e169010aSmrg	  case $host in
2482e169010aSmrg	  # compiling the symbol table file with pic_flag works around
2483e169010aSmrg	  # a FreeBSD bug that causes programs to crash when -lm is
2484e169010aSmrg	  # linked before any other PIC object.  But we must not use
2485e169010aSmrg	  # pic_flag when linking with -static.  The problem exists in
2486e169010aSmrg	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
2487e169010aSmrg	  *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
2488e169010aSmrg	    pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
2489e169010aSmrg	  *-*-hpux*)
2490e169010aSmrg	    pic_flag_for_symtable=" $pic_flag"  ;;
2491e169010aSmrg	  *)
2492e169010aSmrg	    if test "X$my_pic_p" != Xno; then
2493e169010aSmrg	      pic_flag_for_symtable=" $pic_flag"
24947914d74bSmrg	    fi
2495e169010aSmrg	    ;;
2496e169010aSmrg	  esac
2497e169010aSmrg	  ;;
2498e169010aSmrg	esac
2499e169010aSmrg	symtab_cflags=
2500e169010aSmrg	for arg in $LTCFLAGS; do
2501e169010aSmrg	  case $arg in
2502e169010aSmrg	  -pie | -fpie | -fPIE) ;;
2503e169010aSmrg	  *) symtab_cflags="$symtab_cflags $arg" ;;
2504e169010aSmrg	  esac
2505e169010aSmrg	done
25067914d74bSmrg
2507e169010aSmrg	# Now compile the dynamic symbol file.
2508e169010aSmrg	func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
25097914d74bSmrg
2510e169010aSmrg	# Clean up the generated files.
2511e169010aSmrg	func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
2512e169010aSmrg
2513e169010aSmrg	# Transform the symbol file into the correct name.
2514e169010aSmrg	symfileobj="$output_objdir/${my_outputname}S.$objext"
2515e169010aSmrg	case $host in
2516e169010aSmrg	*cygwin* | *mingw* | *cegcc* )
2517e169010aSmrg	  if test -f "$output_objdir/$my_outputname.def"; then
2518e169010aSmrg	    compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
2519e169010aSmrg	    finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
2520e169010aSmrg	  else
2521e169010aSmrg	    compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
2522e169010aSmrg	    finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
2523e169010aSmrg	  fi
2524e169010aSmrg	  ;;
2525e169010aSmrg	*)
2526e169010aSmrg	  compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
2527e169010aSmrg	  finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
25287914d74bSmrg	  ;;
25297914d74bSmrg	esac
2530e169010aSmrg	;;
2531e169010aSmrg      *)
2532e169010aSmrg	func_fatal_error "unknown suffix for \`$my_dlsyms'"
2533e169010aSmrg	;;
2534e169010aSmrg      esac
2535e169010aSmrg    else
2536e169010aSmrg      # We keep going just in case the user didn't refer to
2537e169010aSmrg      # lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
2538e169010aSmrg      # really was required.
2539e169010aSmrg
2540e169010aSmrg      # Nullify the symbol file.
2541e169010aSmrg      compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
2542e169010aSmrg      finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
25437914d74bSmrg    fi
2544e169010aSmrg}
25457914d74bSmrg
2546e169010aSmrg# func_win32_libid arg
2547e169010aSmrg# return the library type of file 'arg'
2548e169010aSmrg#
2549e169010aSmrg# Need a lot of goo to handle *both* DLLs and import libs
2550e169010aSmrg# Has to be a shell function in order to 'eat' the argument
2551e169010aSmrg# that is supplied when $file_magic_command is called.
2552e169010aSmrgfunc_win32_libid ()
2553e169010aSmrg{
2554e169010aSmrg  $opt_debug
2555e169010aSmrg  win32_libid_type="unknown"
2556e169010aSmrg  win32_fileres=`file -L $1 2>/dev/null`
2557e169010aSmrg  case $win32_fileres in
2558e169010aSmrg  *ar\ archive\ import\ library*) # definitely import
2559e169010aSmrg    win32_libid_type="x86 archive import"
2560e169010aSmrg    ;;
2561e169010aSmrg  *ar\ archive*) # could be an import, or static
2562e169010aSmrg    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
2563e169010aSmrg       $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
2564e169010aSmrg      win32_nmres=`eval $NM -f posix -A $1 |
2565e169010aSmrg	$SED -n -e '
2566e169010aSmrg	    1,100{
2567e169010aSmrg		/ I /{
2568e169010aSmrg		    s,.*,import,
2569e169010aSmrg		    p
2570e169010aSmrg		    q
2571e169010aSmrg		}
2572e169010aSmrg	    }'`
2573e169010aSmrg      case $win32_nmres in
2574e169010aSmrg      import*)  win32_libid_type="x86 archive import";;
2575e169010aSmrg      *)        win32_libid_type="x86 archive static";;
2576e169010aSmrg      esac
2577e169010aSmrg    fi
2578e169010aSmrg    ;;
2579e169010aSmrg  *DLL*)
2580e169010aSmrg    win32_libid_type="x86 DLL"
2581e169010aSmrg    ;;
2582e169010aSmrg  *executable*) # but shell scripts are "executable" too...
2583e169010aSmrg    case $win32_fileres in
2584e169010aSmrg    *MS\ Windows\ PE\ Intel*)
2585e169010aSmrg      win32_libid_type="x86 DLL"
2586e169010aSmrg      ;;
2587e169010aSmrg    esac
2588e169010aSmrg    ;;
2589e169010aSmrg  esac
2590e169010aSmrg  $ECHO "$win32_libid_type"
2591e169010aSmrg}
25927914d74bSmrg
25937914d74bSmrg
25947914d74bSmrg
2595e169010aSmrg# func_extract_an_archive dir oldlib
2596e169010aSmrgfunc_extract_an_archive ()
2597e169010aSmrg{
2598e169010aSmrg    $opt_debug
2599e169010aSmrg    f_ex_an_ar_dir="$1"; shift
2600e169010aSmrg    f_ex_an_ar_oldlib="$1"
2601e169010aSmrg    func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?'
2602e169010aSmrg    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
2603e169010aSmrg     :
2604e169010aSmrg    else
2605e169010aSmrg      func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
2606e169010aSmrg    fi
2607e169010aSmrg}
26087914d74bSmrg
26097914d74bSmrg
2610e169010aSmrg# func_extract_archives gentop oldlib ...
2611e169010aSmrgfunc_extract_archives ()
2612e169010aSmrg{
2613e169010aSmrg    $opt_debug
2614e169010aSmrg    my_gentop="$1"; shift
2615e169010aSmrg    my_oldlibs=${1+"$@"}
2616e169010aSmrg    my_oldobjs=""
2617e169010aSmrg    my_xlib=""
2618e169010aSmrg    my_xabs=""
2619e169010aSmrg    my_xdir=""
26207914d74bSmrg
2621e169010aSmrg    for my_xlib in $my_oldlibs; do
2622e169010aSmrg      # Extract the objects.
2623e169010aSmrg      case $my_xlib in
2624e169010aSmrg	[\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
2625e169010aSmrg	*) my_xabs=`pwd`"/$my_xlib" ;;
2626e169010aSmrg      esac
2627e169010aSmrg      func_basename "$my_xlib"
2628e169010aSmrg      my_xlib="$func_basename_result"
2629e169010aSmrg      my_xlib_u=$my_xlib
2630e169010aSmrg      while :; do
2631e169010aSmrg        case " $extracted_archives " in
2632e169010aSmrg	*" $my_xlib_u "*)
2633e169010aSmrg	  func_arith $extracted_serial + 1
2634e169010aSmrg	  extracted_serial=$func_arith_result
2635e169010aSmrg	  my_xlib_u=lt$extracted_serial-$my_xlib ;;
2636e169010aSmrg	*) break ;;
2637e169010aSmrg	esac
2638e169010aSmrg      done
2639e169010aSmrg      extracted_archives="$extracted_archives $my_xlib_u"
2640e169010aSmrg      my_xdir="$my_gentop/$my_xlib_u"
26417914d74bSmrg
2642e169010aSmrg      func_mkdir_p "$my_xdir"
26437914d74bSmrg
2644e169010aSmrg      case $host in
2645e169010aSmrg      *-darwin*)
2646e169010aSmrg	func_verbose "Extracting $my_xabs"
2647e169010aSmrg	# Do not bother doing anything if just a dry run
2648e169010aSmrg	$opt_dry_run || {
2649e169010aSmrg	  darwin_orig_dir=`pwd`
2650e169010aSmrg	  cd $my_xdir || exit $?
2651e169010aSmrg	  darwin_archive=$my_xabs
2652e169010aSmrg	  darwin_curdir=`pwd`
2653e169010aSmrg	  darwin_base_archive=`basename "$darwin_archive"`
2654e169010aSmrg	  darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
2655e169010aSmrg	  if test -n "$darwin_arches"; then
2656e169010aSmrg	    darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
2657e169010aSmrg	    darwin_arch=
2658e169010aSmrg	    func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
2659e169010aSmrg	    for darwin_arch in  $darwin_arches ; do
2660e169010aSmrg	      func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
2661e169010aSmrg	      $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
2662e169010aSmrg	      cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
2663e169010aSmrg	      func_extract_an_archive "`pwd`" "${darwin_base_archive}"
2664e169010aSmrg	      cd "$darwin_curdir"
2665e169010aSmrg	      $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
2666e169010aSmrg	    done # $darwin_arches
2667e169010aSmrg            ## Okay now we've a bunch of thin objects, gotta fatten them up :)
2668e169010aSmrg	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
2669e169010aSmrg	    darwin_file=
2670e169010aSmrg	    darwin_files=
2671e169010aSmrg	    for darwin_file in $darwin_filelist; do
2672e169010aSmrg	      darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
2673e169010aSmrg	      $LIPO -create -output "$darwin_file" $darwin_files
2674e169010aSmrg	    done # $darwin_filelist
2675e169010aSmrg	    $RM -rf unfat-$$
2676e169010aSmrg	    cd "$darwin_orig_dir"
2677e169010aSmrg	  else
2678e169010aSmrg	    cd $darwin_orig_dir
2679e169010aSmrg	    func_extract_an_archive "$my_xdir" "$my_xabs"
2680e169010aSmrg	  fi # $darwin_arches
2681e169010aSmrg	} # !$opt_dry_run
2682e169010aSmrg	;;
2683e169010aSmrg      *)
2684e169010aSmrg        func_extract_an_archive "$my_xdir" "$my_xabs"
2685e169010aSmrg	;;
26867914d74bSmrg      esac
2687e169010aSmrg      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
2688e169010aSmrg    done
26897914d74bSmrg
2690e169010aSmrg    func_extract_archives_result="$my_oldobjs"
2691e169010aSmrg}
26927914d74bSmrg
26937914d74bSmrg
26947914d74bSmrg
2695e169010aSmrg# func_emit_wrapper_part1 [arg=no]
2696e169010aSmrg#
2697e169010aSmrg# Emit the first part of a libtool wrapper script on stdout.
2698e169010aSmrg# For more information, see the description associated with
2699e169010aSmrg# func_emit_wrapper(), below.
2700e169010aSmrgfunc_emit_wrapper_part1 ()
2701e169010aSmrg{
2702e169010aSmrg	func_emit_wrapper_part1_arg1=no
2703e169010aSmrg	if test -n "$1" ; then
2704e169010aSmrg	  func_emit_wrapper_part1_arg1=$1
27057914d74bSmrg	fi
27067914d74bSmrg
2707e169010aSmrg	$ECHO "\
2708e169010aSmrg#! $SHELL
27097914d74bSmrg
2710e169010aSmrg# $output - temporary wrapper script for $objdir/$outputname
2711e169010aSmrg# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
2712e169010aSmrg#
2713e169010aSmrg# The $output program cannot be directly executed until all the libtool
2714e169010aSmrg# libraries that it depends on are installed.
2715e169010aSmrg#
2716e169010aSmrg# This wrapper script should never be moved out of the build directory.
2717e169010aSmrg# If it is, it will not operate correctly.
27187914d74bSmrg
2719e169010aSmrg# Sed substitution that helps us do robust quoting.  It backslashifies
2720e169010aSmrg# metacharacters that are still active within double-quoted strings.
2721e169010aSmrgXsed='${SED} -e 1s/^X//'
2722e169010aSmrgsed_quote_subst='$sed_quote_subst'
27237914d74bSmrg
2724e169010aSmrg# Be Bourne compatible
2725e169010aSmrgif test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
2726e169010aSmrg  emulate sh
2727e169010aSmrg  NULLCMD=:
2728e169010aSmrg  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
2729e169010aSmrg  # is contrary to our usage.  Disable this feature.
2730e169010aSmrg  alias -g '\${1+\"\$@\"}'='\"\$@\"'
2731e169010aSmrg  setopt NO_GLOB_SUBST
2732e169010aSmrgelse
2733e169010aSmrg  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
2734e169010aSmrgfi
2735e169010aSmrgBIN_SH=xpg4; export BIN_SH # for Tru64
2736e169010aSmrgDUALCASE=1; export DUALCASE # for MKS sh
27377914d74bSmrg
2738e169010aSmrg# The HP-UX ksh and POSIX shell print the target directory to stdout
2739e169010aSmrg# if CDPATH is set.
2740e169010aSmrg(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
27417914d74bSmrg
2742e169010aSmrgrelink_command=\"$relink_command\"
27437914d74bSmrg
2744e169010aSmrg# This environment variable determines our operation mode.
2745e169010aSmrgif test \"\$libtool_install_magic\" = \"$magic\"; then
2746e169010aSmrg  # install mode needs the following variables:
2747e169010aSmrg  generated_by_libtool_version='$macro_version'
2748e169010aSmrg  notinst_deplibs='$notinst_deplibs'
2749e169010aSmrgelse
2750e169010aSmrg  # When we are sourced in execute mode, \$file and \$ECHO are already set.
2751e169010aSmrg  if test \"\$libtool_execute_magic\" != \"$magic\"; then
2752e169010aSmrg    ECHO=\"$qecho\"
2753e169010aSmrg    file=\"\$0\"
2754e169010aSmrg    # Make sure echo works.
2755e169010aSmrg    if test \"X\$1\" = X--no-reexec; then
2756e169010aSmrg      # Discard the --no-reexec flag, and continue.
2757e169010aSmrg      shift
2758e169010aSmrg    elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then
2759e169010aSmrg      # Yippee, \$ECHO works!
2760e169010aSmrg      :
2761e169010aSmrg    else
2762e169010aSmrg      # Restart under the correct shell, and then maybe \$ECHO will work.
2763e169010aSmrg      exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
2764e169010aSmrg    fi
2765e169010aSmrg  fi\
2766e169010aSmrg"
2767e169010aSmrg	$ECHO "\
27687914d74bSmrg
2769e169010aSmrg  # Find the directory that this script lives in.
2770e169010aSmrg  thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
2771e169010aSmrg  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
27727914d74bSmrg
2773e169010aSmrg  # Follow symbolic links until we get to the real thisdir.
2774e169010aSmrg  file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
2775e169010aSmrg  while test -n \"\$file\"; do
2776e169010aSmrg    destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
27777914d74bSmrg
2778e169010aSmrg    # If there was a directory component, then change thisdir.
2779e169010aSmrg    if test \"x\$destdir\" != \"x\$file\"; then
2780e169010aSmrg      case \"\$destdir\" in
2781e169010aSmrg      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
2782e169010aSmrg      *) thisdir=\"\$thisdir/\$destdir\" ;;
2783e169010aSmrg      esac
2784e169010aSmrg    fi
27857914d74bSmrg
2786e169010aSmrg    file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
2787e169010aSmrg    file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
2788e169010aSmrg  done
2789e169010aSmrg"
2790e169010aSmrg}
2791e169010aSmrg# end: func_emit_wrapper_part1
27927914d74bSmrg
2793e169010aSmrg# func_emit_wrapper_part2 [arg=no]
2794e169010aSmrg#
2795e169010aSmrg# Emit the second part of a libtool wrapper script on stdout.
2796e169010aSmrg# For more information, see the description associated with
2797e169010aSmrg# func_emit_wrapper(), below.
2798e169010aSmrgfunc_emit_wrapper_part2 ()
2799e169010aSmrg{
2800e169010aSmrg	func_emit_wrapper_part2_arg1=no
2801e169010aSmrg	if test -n "$1" ; then
2802e169010aSmrg	  func_emit_wrapper_part2_arg1=$1
2803e169010aSmrg	fi
28047914d74bSmrg
2805e169010aSmrg	$ECHO "\
28067914d74bSmrg
2807e169010aSmrg  # Usually 'no', except on cygwin/mingw when embedded into
2808e169010aSmrg  # the cwrapper.
2809e169010aSmrg  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_part2_arg1
2810e169010aSmrg  if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
2811e169010aSmrg    # special case for '.'
2812e169010aSmrg    if test \"\$thisdir\" = \".\"; then
2813e169010aSmrg      thisdir=\`pwd\`
2814e169010aSmrg    fi
2815e169010aSmrg    # remove .libs from thisdir
2816e169010aSmrg    case \"\$thisdir\" in
2817e169010aSmrg    *[\\\\/]$objdir ) thisdir=\`\$ECHO \"X\$thisdir\" | \$Xsed -e 's%[\\\\/][^\\\\/]*$%%'\` ;;
2818e169010aSmrg    $objdir )   thisdir=. ;;
2819e169010aSmrg    esac
2820e169010aSmrg  fi
28217914d74bSmrg
2822e169010aSmrg  # Try to get the absolute directory name.
2823e169010aSmrg  absdir=\`cd \"\$thisdir\" && pwd\`
2824e169010aSmrg  test -n \"\$absdir\" && thisdir=\"\$absdir\"
2825e169010aSmrg"
28267914d74bSmrg
2827e169010aSmrg	if test "$fast_install" = yes; then
2828e169010aSmrg	  $ECHO "\
2829e169010aSmrg  program=lt-'$outputname'$exeext
2830e169010aSmrg  progdir=\"\$thisdir/$objdir\"
28317914d74bSmrg
2832e169010aSmrg  if test ! -f \"\$progdir/\$program\" ||
2833e169010aSmrg     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
2834e169010aSmrg       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
28357914d74bSmrg
2836e169010aSmrg    file=\"\$\$-\$program\"
28377914d74bSmrg
2838e169010aSmrg    if test ! -d \"\$progdir\"; then
2839e169010aSmrg      $MKDIR \"\$progdir\"
2840e169010aSmrg    else
2841e169010aSmrg      $RM \"\$progdir/\$file\"
2842e169010aSmrg    fi"
28437914d74bSmrg
2844e169010aSmrg	  $ECHO "\
28457914d74bSmrg
2846e169010aSmrg    # relink executable if necessary
2847e169010aSmrg    if test -n \"\$relink_command\"; then
2848e169010aSmrg      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
2849e169010aSmrg      else
2850e169010aSmrg	$ECHO \"\$relink_command_output\" >&2
2851e169010aSmrg	$RM \"\$progdir/\$file\"
2852e169010aSmrg	exit 1
2853e169010aSmrg      fi
2854e169010aSmrg    fi
28557914d74bSmrg
2856e169010aSmrg    $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
2857e169010aSmrg    { $RM \"\$progdir/\$program\";
2858e169010aSmrg      $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
2859e169010aSmrg    $RM \"\$progdir/\$file\"
2860e169010aSmrg  fi"
2861e169010aSmrg	else
2862e169010aSmrg	  $ECHO "\
2863e169010aSmrg  program='$outputname'
2864e169010aSmrg  progdir=\"\$thisdir/$objdir\"
2865e169010aSmrg"
2866e169010aSmrg	fi
28677914d74bSmrg
2868e169010aSmrg	$ECHO "\
28697914d74bSmrg
2870e169010aSmrg  if test -f \"\$progdir/\$program\"; then"
28717914d74bSmrg
2872e169010aSmrg	# Export our shlibpath_var if we have one.
2873e169010aSmrg	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
2874e169010aSmrg	  $ECHO "\
2875e169010aSmrg    # Add our own library path to $shlibpath_var
2876e169010aSmrg    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
28777914d74bSmrg
2878e169010aSmrg    # Some systems cannot cope with colon-terminated $shlibpath_var
2879e169010aSmrg    # The second colon is a workaround for a bug in BeOS R4 sed
2880e169010aSmrg    $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
28817914d74bSmrg
2882e169010aSmrg    export $shlibpath_var
2883e169010aSmrg"
28847914d74bSmrg	fi
28857914d74bSmrg
2886e169010aSmrg	# fixup the dll searchpath if we need to.
2887e169010aSmrg	if test -n "$dllsearchpath"; then
2888e169010aSmrg	  $ECHO "\
2889e169010aSmrg    # Add the dll search path components to the executable PATH
2890e169010aSmrg    PATH=$dllsearchpath:\$PATH
2891e169010aSmrg"
28927914d74bSmrg	fi
28937914d74bSmrg
2894e169010aSmrg	$ECHO "\
2895e169010aSmrg    if test \"\$libtool_execute_magic\" != \"$magic\"; then
2896e169010aSmrg      # Run the actual program with our arguments.
2897e169010aSmrg"
2898e169010aSmrg	case $host in
2899e169010aSmrg	# Backslashes separate directories on plain windows
2900e169010aSmrg	*-*-mingw | *-*-os2* | *-cegcc*)
2901e169010aSmrg	  $ECHO "\
2902e169010aSmrg      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
2903e169010aSmrg"
2904e169010aSmrg	  ;;
2905e169010aSmrg
2906e169010aSmrg	*)
2907e169010aSmrg	  $ECHO "\
2908e169010aSmrg      exec \"\$progdir/\$program\" \${1+\"\$@\"}
2909e169010aSmrg"
2910e169010aSmrg	  ;;
2911e169010aSmrg	esac
2912e169010aSmrg	$ECHO "\
2913e169010aSmrg      \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
2914e169010aSmrg      exit 1
2915e169010aSmrg    fi
2916e169010aSmrg  else
2917e169010aSmrg    # The program doesn't exist.
2918e169010aSmrg    \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
2919e169010aSmrg    \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
2920e169010aSmrg    $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
2921e169010aSmrg    exit 1
2922e169010aSmrg  fi
2923e169010aSmrgfi\
2924e169010aSmrg"
2925e169010aSmrg}
2926e169010aSmrg# end: func_emit_wrapper_part2
2927e169010aSmrg
2928e169010aSmrg
2929e169010aSmrg# func_emit_wrapper [arg=no]
2930e169010aSmrg#
2931e169010aSmrg# Emit a libtool wrapper script on stdout.
2932e169010aSmrg# Don't directly open a file because we may want to
2933e169010aSmrg# incorporate the script contents within a cygwin/mingw
2934e169010aSmrg# wrapper executable.  Must ONLY be called from within
2935e169010aSmrg# func_mode_link because it depends on a number of variables
2936e169010aSmrg# set therein.
2937e169010aSmrg#
2938e169010aSmrg# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
2939e169010aSmrg# variable will take.  If 'yes', then the emitted script
2940e169010aSmrg# will assume that the directory in which it is stored is
2941e169010aSmrg# the $objdir directory.  This is a cygwin/mingw-specific
2942e169010aSmrg# behavior.
2943e169010aSmrgfunc_emit_wrapper ()
2944e169010aSmrg{
2945e169010aSmrg	func_emit_wrapper_arg1=no
2946e169010aSmrg	if test -n "$1" ; then
2947e169010aSmrg	  func_emit_wrapper_arg1=$1
29487914d74bSmrg	fi
29497914d74bSmrg
2950e169010aSmrg	# split this up so that func_emit_cwrapperexe_src
2951e169010aSmrg	# can call each part independently.
2952e169010aSmrg	func_emit_wrapper_part1 "${func_emit_wrapper_arg1}"
2953e169010aSmrg	func_emit_wrapper_part2 "${func_emit_wrapper_arg1}"
2954e169010aSmrg}
29557914d74bSmrg
29567914d74bSmrg
2957e169010aSmrg# func_to_host_path arg
2958e169010aSmrg#
2959e169010aSmrg# Convert paths to host format when used with build tools.
2960e169010aSmrg# Intended for use with "native" mingw (where libtool itself
2961e169010aSmrg# is running under the msys shell), or in the following cross-
2962e169010aSmrg# build environments:
2963e169010aSmrg#    $build          $host
2964e169010aSmrg#    mingw (msys)    mingw  [e.g. native]
2965e169010aSmrg#    cygwin          mingw
2966e169010aSmrg#    *nix + wine     mingw
2967e169010aSmrg# where wine is equipped with the `winepath' executable.
2968e169010aSmrg# In the native mingw case, the (msys) shell automatically
2969e169010aSmrg# converts paths for any non-msys applications it launches,
2970e169010aSmrg# but that facility isn't available from inside the cwrapper.
2971e169010aSmrg# Similar accommodations are necessary for $host mingw and
2972e169010aSmrg# $build cygwin.  Calling this function does no harm for other
2973e169010aSmrg# $host/$build combinations not listed above.
2974e169010aSmrg#
2975e169010aSmrg# ARG is the path (on $build) that should be converted to
2976e169010aSmrg# the proper representation for $host. The result is stored
2977e169010aSmrg# in $func_to_host_path_result.
2978e169010aSmrgfunc_to_host_path ()
2979e169010aSmrg{
2980e169010aSmrg  func_to_host_path_result="$1"
2981e169010aSmrg  if test -n "$1" ; then
2982e169010aSmrg    case $host in
2983e169010aSmrg      *mingw* )
2984e169010aSmrg        lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
2985e169010aSmrg        case $build in
2986e169010aSmrg          *mingw* ) # actually, msys
2987e169010aSmrg            # awkward: cmd appends spaces to result
2988e169010aSmrg            lt_sed_strip_trailing_spaces="s/[ ]*\$//"
2989e169010aSmrg            func_to_host_path_tmp1=`( cmd //c echo "$1" |\
2990e169010aSmrg              $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""`
2991e169010aSmrg            func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
2992e169010aSmrg              $SED -e "$lt_sed_naive_backslashify"`
2993e169010aSmrg            ;;
2994e169010aSmrg          *cygwin* )
2995e169010aSmrg            func_to_host_path_tmp1=`cygpath -w "$1"`
2996e169010aSmrg            func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
2997e169010aSmrg              $SED -e "$lt_sed_naive_backslashify"`
2998e169010aSmrg            ;;
2999e169010aSmrg          * )
3000e169010aSmrg            # Unfortunately, winepath does not exit with a non-zero
3001e169010aSmrg            # error code, so we are forced to check the contents of
3002e169010aSmrg            # stdout. On the other hand, if the command is not
3003e169010aSmrg            # found, the shell will set an exit code of 127 and print
3004e169010aSmrg            # *an error message* to stdout. So we must check for both
3005e169010aSmrg            # error code of zero AND non-empty stdout, which explains
3006e169010aSmrg            # the odd construction:
3007e169010aSmrg            func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null`
3008e169010aSmrg            if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then
3009e169010aSmrg              func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
3010e169010aSmrg                $SED -e "$lt_sed_naive_backslashify"`
3011e169010aSmrg            else
3012e169010aSmrg              # Allow warning below.
3013e169010aSmrg              func_to_host_path_result=""
3014e169010aSmrg            fi
3015e169010aSmrg            ;;
3016e169010aSmrg        esac
3017e169010aSmrg        if test -z "$func_to_host_path_result" ; then
3018e169010aSmrg          func_error "Could not determine host path corresponding to"
3019e169010aSmrg          func_error "  '$1'"
3020e169010aSmrg          func_error "Continuing, but uninstalled executables may not work."
3021e169010aSmrg          # Fallback:
3022e169010aSmrg          func_to_host_path_result="$1"
3023e169010aSmrg        fi
3024e169010aSmrg        ;;
3025e169010aSmrg    esac
3026e169010aSmrg  fi
3027e169010aSmrg}
3028e169010aSmrg# end: func_to_host_path
30297914d74bSmrg
3030e169010aSmrg# func_to_host_pathlist arg
3031e169010aSmrg#
3032e169010aSmrg# Convert pathlists to host format when used with build tools.
3033e169010aSmrg# See func_to_host_path(), above. This function supports the
3034e169010aSmrg# following $build/$host combinations (but does no harm for
3035e169010aSmrg# combinations not listed here):
3036e169010aSmrg#    $build          $host
3037e169010aSmrg#    mingw (msys)    mingw  [e.g. native]
3038e169010aSmrg#    cygwin          mingw
3039e169010aSmrg#    *nix + wine     mingw
3040e169010aSmrg#
3041e169010aSmrg# Path separators are also converted from $build format to
3042e169010aSmrg# $host format. If ARG begins or ends with a path separator
3043e169010aSmrg# character, it is preserved (but converted to $host format)
3044e169010aSmrg# on output.
3045e169010aSmrg#
3046e169010aSmrg# ARG is a pathlist (on $build) that should be converted to
3047e169010aSmrg# the proper representation on $host. The result is stored
3048e169010aSmrg# in $func_to_host_pathlist_result.
3049e169010aSmrgfunc_to_host_pathlist ()
3050e169010aSmrg{
3051e169010aSmrg  func_to_host_pathlist_result="$1"
3052e169010aSmrg  if test -n "$1" ; then
3053e169010aSmrg    case $host in
3054e169010aSmrg      *mingw* )
3055e169010aSmrg        lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
3056e169010aSmrg        # Remove leading and trailing path separator characters from
3057e169010aSmrg        # ARG. msys behavior is inconsistent here, cygpath turns them
3058e169010aSmrg        # into '.;' and ';.', and winepath ignores them completely.
3059e169010aSmrg        func_to_host_pathlist_tmp2="$1"
3060e169010aSmrg        # Once set for this call, this variable should not be
3061e169010aSmrg        # reassigned. It is used in tha fallback case.
3062e169010aSmrg        func_to_host_pathlist_tmp1=`echo "$func_to_host_pathlist_tmp2" |\
3063e169010aSmrg          $SED -e 's|^:*||' -e 's|:*$||'`
3064e169010aSmrg        case $build in
3065e169010aSmrg          *mingw* ) # Actually, msys.
3066e169010aSmrg            # Awkward: cmd appends spaces to result.
3067e169010aSmrg            lt_sed_strip_trailing_spaces="s/[ ]*\$//"
3068e169010aSmrg            func_to_host_pathlist_tmp2=`( cmd //c echo "$func_to_host_pathlist_tmp1" |\
3069e169010aSmrg              $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""`
3070e169010aSmrg            func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\
3071e169010aSmrg              $SED -e "$lt_sed_naive_backslashify"`
3072e169010aSmrg            ;;
3073e169010aSmrg          *cygwin* )
3074e169010aSmrg            func_to_host_pathlist_tmp2=`cygpath -w -p "$func_to_host_pathlist_tmp1"`
3075e169010aSmrg            func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\
3076e169010aSmrg              $SED -e "$lt_sed_naive_backslashify"`
3077e169010aSmrg            ;;
3078e169010aSmrg          * )
3079e169010aSmrg            # unfortunately, winepath doesn't convert pathlists
3080e169010aSmrg            func_to_host_pathlist_result=""
3081e169010aSmrg            func_to_host_pathlist_oldIFS=$IFS
3082e169010aSmrg            IFS=:
3083e169010aSmrg            for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do
3084e169010aSmrg              IFS=$func_to_host_pathlist_oldIFS
3085e169010aSmrg              if test -n "$func_to_host_pathlist_f" ; then
3086e169010aSmrg                func_to_host_path "$func_to_host_pathlist_f"
3087e169010aSmrg                if test -n "$func_to_host_path_result" ; then
3088e169010aSmrg                  if test -z "$func_to_host_pathlist_result" ; then
3089e169010aSmrg                    func_to_host_pathlist_result="$func_to_host_path_result"
3090e169010aSmrg                  else
3091e169010aSmrg                    func_to_host_pathlist_result="$func_to_host_pathlist_result;$func_to_host_path_result"
3092e169010aSmrg                  fi
3093e169010aSmrg                fi
3094e169010aSmrg              fi
3095e169010aSmrg              IFS=:
3096e169010aSmrg            done
3097e169010aSmrg            IFS=$func_to_host_pathlist_oldIFS
3098e169010aSmrg            ;;
3099e169010aSmrg        esac
3100e169010aSmrg        if test -z "$func_to_host_pathlist_result" ; then
3101e169010aSmrg          func_error "Could not determine the host path(s) corresponding to"
3102e169010aSmrg          func_error "  '$1'"
3103e169010aSmrg          func_error "Continuing, but uninstalled executables may not work."
3104e169010aSmrg          # Fallback. This may break if $1 contains DOS-style drive
3105e169010aSmrg          # specifications. The fix is not to complicate the expression
3106e169010aSmrg          # below, but for the user to provide a working wine installation
3107e169010aSmrg          # with winepath so that path translation in the cross-to-mingw
3108e169010aSmrg          # case works properly.
3109e169010aSmrg          lt_replace_pathsep_nix_to_dos="s|:|;|g"
3110e169010aSmrg          func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\
3111e169010aSmrg            $SED -e "$lt_replace_pathsep_nix_to_dos"`
3112e169010aSmrg        fi
3113e169010aSmrg        # Now, add the leading and trailing path separators back
3114e169010aSmrg        case "$1" in
3115e169010aSmrg          :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result"
3116e169010aSmrg            ;;
3117e169010aSmrg        esac
3118e169010aSmrg        case "$1" in
3119e169010aSmrg          *: ) func_to_host_pathlist_result="$func_to_host_pathlist_result;"
3120e169010aSmrg            ;;
3121e169010aSmrg        esac
3122e169010aSmrg        ;;
3123e169010aSmrg    esac
3124e169010aSmrg  fi
3125e169010aSmrg}
3126e169010aSmrg# end: func_to_host_pathlist
31277914d74bSmrg
3128e169010aSmrg# func_emit_cwrapperexe_src
3129e169010aSmrg# emit the source code for a wrapper executable on stdout
3130e169010aSmrg# Must ONLY be called from within func_mode_link because
3131e169010aSmrg# it depends on a number of variable set therein.
3132e169010aSmrgfunc_emit_cwrapperexe_src ()
3133e169010aSmrg{
3134e169010aSmrg	cat <<EOF
31357914d74bSmrg
3136e169010aSmrg/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
3137e169010aSmrg   Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
31387914d74bSmrg
3139e169010aSmrg   The $output program cannot be directly executed until all the libtool
3140e169010aSmrg   libraries that it depends on are installed.
31417914d74bSmrg
3142e169010aSmrg   This wrapper executable should never be moved out of the build directory.
3143e169010aSmrg   If it is, it will not operate correctly.
3144e169010aSmrg
3145e169010aSmrg   Currently, it simply execs the wrapper *script* "$SHELL $output",
3146e169010aSmrg   but could eventually absorb all of the scripts functionality and
3147e169010aSmrg   exec $objdir/$outputname directly.
3148e169010aSmrg*/
3149e169010aSmrgEOF
3150e169010aSmrg	    cat <<"EOF"
3151e169010aSmrg#include <stdio.h>
3152e169010aSmrg#include <stdlib.h>
3153e169010aSmrg#ifdef _MSC_VER
3154e169010aSmrg# include <direct.h>
3155e169010aSmrg# include <process.h>
3156e169010aSmrg# include <io.h>
3157e169010aSmrg# define setmode _setmode
3158e169010aSmrg#else
3159e169010aSmrg# include <unistd.h>
3160e169010aSmrg# include <stdint.h>
3161e169010aSmrg# ifdef __CYGWIN__
3162e169010aSmrg#  include <io.h>
3163e169010aSmrg#  define HAVE_SETENV
3164e169010aSmrg#  ifdef __STRICT_ANSI__
3165e169010aSmrgchar *realpath (const char *, char *);
3166e169010aSmrgint putenv (char *);
3167e169010aSmrgint setenv (const char *, const char *, int);
3168e169010aSmrg#  endif
3169e169010aSmrg# endif
3170e169010aSmrg#endif
3171e169010aSmrg#include <malloc.h>
3172e169010aSmrg#include <stdarg.h>
3173e169010aSmrg#include <assert.h>
3174e169010aSmrg#include <string.h>
3175e169010aSmrg#include <ctype.h>
3176e169010aSmrg#include <errno.h>
3177e169010aSmrg#include <fcntl.h>
3178e169010aSmrg#include <sys/stat.h>
3179e169010aSmrg
3180e169010aSmrg#if defined(PATH_MAX)
3181e169010aSmrg# define LT_PATHMAX PATH_MAX
3182e169010aSmrg#elif defined(MAXPATHLEN)
3183e169010aSmrg# define LT_PATHMAX MAXPATHLEN
3184e169010aSmrg#else
3185e169010aSmrg# define LT_PATHMAX 1024
3186e169010aSmrg#endif
3187e169010aSmrg
3188e169010aSmrg#ifndef S_IXOTH
3189e169010aSmrg# define S_IXOTH 0
3190e169010aSmrg#endif
3191e169010aSmrg#ifndef S_IXGRP
3192e169010aSmrg# define S_IXGRP 0
3193e169010aSmrg#endif
3194e169010aSmrg
3195e169010aSmrg#ifdef _MSC_VER
3196e169010aSmrg# define S_IXUSR _S_IEXEC
3197e169010aSmrg# define stat _stat
3198e169010aSmrg# ifndef _INTPTR_T_DEFINED
3199e169010aSmrg#  define intptr_t int
3200e169010aSmrg# endif
3201e169010aSmrg#endif
3202e169010aSmrg
3203e169010aSmrg#ifndef DIR_SEPARATOR
3204e169010aSmrg# define DIR_SEPARATOR '/'
3205e169010aSmrg# define PATH_SEPARATOR ':'
3206e169010aSmrg#endif
3207e169010aSmrg
3208e169010aSmrg#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
3209e169010aSmrg  defined (__OS2__)
3210e169010aSmrg# define HAVE_DOS_BASED_FILE_SYSTEM
3211e169010aSmrg# define FOPEN_WB "wb"
3212e169010aSmrg# ifndef DIR_SEPARATOR_2
3213e169010aSmrg#  define DIR_SEPARATOR_2 '\\'
3214e169010aSmrg# endif
3215e169010aSmrg# ifndef PATH_SEPARATOR_2
3216e169010aSmrg#  define PATH_SEPARATOR_2 ';'
3217e169010aSmrg# endif
3218e169010aSmrg#endif
3219e169010aSmrg
3220e169010aSmrg#ifndef DIR_SEPARATOR_2
3221e169010aSmrg# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
3222e169010aSmrg#else /* DIR_SEPARATOR_2 */
3223e169010aSmrg# define IS_DIR_SEPARATOR(ch) \
3224e169010aSmrg	(((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
3225e169010aSmrg#endif /* DIR_SEPARATOR_2 */
3226e169010aSmrg
3227e169010aSmrg#ifndef PATH_SEPARATOR_2
3228e169010aSmrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
3229e169010aSmrg#else /* PATH_SEPARATOR_2 */
3230e169010aSmrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
3231e169010aSmrg#endif /* PATH_SEPARATOR_2 */
3232e169010aSmrg
3233e169010aSmrg#ifdef __CYGWIN__
3234e169010aSmrg# define FOPEN_WB "wb"
3235e169010aSmrg#endif
3236e169010aSmrg
3237e169010aSmrg#ifndef FOPEN_WB
3238e169010aSmrg# define FOPEN_WB "w"
3239e169010aSmrg#endif
3240e169010aSmrg#ifndef _O_BINARY
3241e169010aSmrg# define _O_BINARY 0
3242e169010aSmrg#endif
3243e169010aSmrg
3244e169010aSmrg#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
3245e169010aSmrg#define XFREE(stale) do { \
3246e169010aSmrg  if (stale) { free ((void *) stale); stale = 0; } \
3247e169010aSmrg} while (0)
3248e169010aSmrg
3249e169010aSmrg#undef LTWRAPPER_DEBUGPRINTF
3250e169010aSmrg#if defined DEBUGWRAPPER
3251e169010aSmrg# define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args
3252e169010aSmrgstatic void
3253e169010aSmrgltwrapper_debugprintf (const char *fmt, ...)
3254e169010aSmrg{
3255e169010aSmrg    va_list args;
3256e169010aSmrg    va_start (args, fmt);
3257e169010aSmrg    (void) vfprintf (stderr, fmt, args);
3258e169010aSmrg    va_end (args);
3259e169010aSmrg}
3260e169010aSmrg#else
3261e169010aSmrg# define LTWRAPPER_DEBUGPRINTF(args)
3262e169010aSmrg#endif
3263e169010aSmrg
3264e169010aSmrgconst char *program_name = NULL;
3265e169010aSmrg
3266e169010aSmrgvoid *xmalloc (size_t num);
3267e169010aSmrgchar *xstrdup (const char *string);
3268e169010aSmrgconst char *base_name (const char *name);
3269e169010aSmrgchar *find_executable (const char *wrapper);
3270e169010aSmrgchar *chase_symlinks (const char *pathspec);
3271e169010aSmrgint make_executable (const char *path);
3272e169010aSmrgint check_executable (const char *path);
3273e169010aSmrgchar *strendzap (char *str, const char *pat);
3274e169010aSmrgvoid lt_fatal (const char *message, ...);
3275e169010aSmrgvoid lt_setenv (const char *name, const char *value);
3276e169010aSmrgchar *lt_extend_str (const char *orig_value, const char *add, int to_end);
3277e169010aSmrgvoid lt_opt_process_env_set (const char *arg);
3278e169010aSmrgvoid lt_opt_process_env_prepend (const char *arg);
3279e169010aSmrgvoid lt_opt_process_env_append (const char *arg);
3280e169010aSmrgint lt_split_name_value (const char *arg, char** name, char** value);
3281e169010aSmrgvoid lt_update_exe_path (const char *name, const char *value);
3282e169010aSmrgvoid lt_update_lib_path (const char *name, const char *value);
3283e169010aSmrg
3284e169010aSmrgstatic const char *script_text_part1 =
3285e169010aSmrgEOF
3286e169010aSmrg
3287e169010aSmrg	    func_emit_wrapper_part1 yes |
3288e169010aSmrg	        $SED -e 's/\([\\"]\)/\\\1/g' \
3289e169010aSmrg	             -e 's/^/  "/' -e 's/$/\\n"/'
3290e169010aSmrg	    echo ";"
3291e169010aSmrg	    cat <<EOF
3292e169010aSmrg
3293e169010aSmrgstatic const char *script_text_part2 =
3294e169010aSmrgEOF
3295e169010aSmrg	    func_emit_wrapper_part2 yes |
3296e169010aSmrg	        $SED -e 's/\([\\"]\)/\\\1/g' \
3297e169010aSmrg	             -e 's/^/  "/' -e 's/$/\\n"/'
3298e169010aSmrg	    echo ";"
3299e169010aSmrg
3300e169010aSmrg	    cat <<EOF
3301e169010aSmrgconst char * MAGIC_EXE = "$magic_exe";
3302e169010aSmrgconst char * LIB_PATH_VARNAME = "$shlibpath_var";
3303e169010aSmrgEOF
3304e169010aSmrg
3305e169010aSmrg	    if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
3306e169010aSmrg              func_to_host_pathlist "$temp_rpath"
3307e169010aSmrg	      cat <<EOF
3308e169010aSmrgconst char * LIB_PATH_VALUE   = "$func_to_host_pathlist_result";
33097914d74bSmrgEOF
33107914d74bSmrg	    else
3311e169010aSmrg	      cat <<"EOF"
3312e169010aSmrgconst char * LIB_PATH_VALUE   = "";
3313e169010aSmrgEOF
33147914d74bSmrg	    fi
3315e169010aSmrg
3316e169010aSmrg	    if test -n "$dllsearchpath"; then
3317e169010aSmrg              func_to_host_pathlist "$dllsearchpath:"
3318e169010aSmrg	      cat <<EOF
3319e169010aSmrgconst char * EXE_PATH_VARNAME = "PATH";
3320e169010aSmrgconst char * EXE_PATH_VALUE   = "$func_to_host_pathlist_result";
3321e169010aSmrgEOF
33227914d74bSmrg	    else
3323e169010aSmrg	      cat <<"EOF"
3324e169010aSmrgconst char * EXE_PATH_VARNAME = "";
3325e169010aSmrgconst char * EXE_PATH_VALUE   = "";
3326e169010aSmrgEOF
33277914d74bSmrg	    fi
3328e169010aSmrg
3329e169010aSmrg	    if test "$fast_install" = yes; then
3330e169010aSmrg	      cat <<EOF
3331e169010aSmrgconst char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
3332e169010aSmrgEOF
33337914d74bSmrg	    else
3334e169010aSmrg	      cat <<EOF
3335e169010aSmrgconst char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
3336e169010aSmrgEOF
33377914d74bSmrg	    fi
33387914d74bSmrg
33397914d74bSmrg
3340e169010aSmrg	    cat <<"EOF"
33417914d74bSmrg
3342e169010aSmrg#define LTWRAPPER_OPTION_PREFIX         "--lt-"
3343e169010aSmrg#define LTWRAPPER_OPTION_PREFIX_LENGTH  5
33447914d74bSmrg
3345e169010aSmrgstatic const size_t opt_prefix_len         = LTWRAPPER_OPTION_PREFIX_LENGTH;
3346e169010aSmrgstatic const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
33477914d74bSmrg
3348e169010aSmrgstatic const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX "dump-script";
33497914d74bSmrg
3350e169010aSmrgstatic const size_t env_set_opt_len     = LTWRAPPER_OPTION_PREFIX_LENGTH + 7;
3351e169010aSmrgstatic const char *env_set_opt          = LTWRAPPER_OPTION_PREFIX "env-set";
3352e169010aSmrg  /* argument is putenv-style "foo=bar", value of foo is set to bar */
33537914d74bSmrg
3354e169010aSmrgstatic const size_t env_prepend_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 11;
3355e169010aSmrgstatic const char *env_prepend_opt      = LTWRAPPER_OPTION_PREFIX "env-prepend";
3356e169010aSmrg  /* argument is putenv-style "foo=bar", new value of foo is bar${foo} */
33577914d74bSmrg
3358e169010aSmrgstatic const size_t env_append_opt_len  = LTWRAPPER_OPTION_PREFIX_LENGTH + 10;
3359e169010aSmrgstatic const char *env_append_opt       = LTWRAPPER_OPTION_PREFIX "env-append";
3360e169010aSmrg  /* argument is putenv-style "foo=bar", new value of foo is ${foo}bar */
33617914d74bSmrg
3362e169010aSmrgint
3363e169010aSmrgmain (int argc, char *argv[])
3364e169010aSmrg{
3365e169010aSmrg  char **newargz;
3366e169010aSmrg  int  newargc;
3367e169010aSmrg  char *tmp_pathspec;
3368e169010aSmrg  char *actual_cwrapper_path;
3369e169010aSmrg  char *actual_cwrapper_name;
3370e169010aSmrg  char *target_name;
3371e169010aSmrg  char *lt_argv_zero;
3372e169010aSmrg  intptr_t rval = 127;
33737914d74bSmrg
3374e169010aSmrg  int i;
33757914d74bSmrg
3376e169010aSmrg  program_name = (char *) xstrdup (base_name (argv[0]));
3377e169010aSmrg  LTWRAPPER_DEBUGPRINTF (("(main) argv[0]      : %s\n", argv[0]));
3378e169010aSmrg  LTWRAPPER_DEBUGPRINTF (("(main) program_name : %s\n", program_name));
33797914d74bSmrg
3380e169010aSmrg  /* very simple arg parsing; don't want to rely on getopt */
3381e169010aSmrg  for (i = 1; i < argc; i++)
3382e169010aSmrg    {
3383e169010aSmrg      if (strcmp (argv[i], dumpscript_opt) == 0)
3384e169010aSmrg	{
3385e169010aSmrgEOF
3386e169010aSmrg	    case "$host" in
3387e169010aSmrg	      *mingw* | *cygwin* )
3388e169010aSmrg		# make stdout use "unix" line endings
3389e169010aSmrg		echo "          setmode(1,_O_BINARY);"
3390e169010aSmrg		;;
3391e169010aSmrg	      esac
33927914d74bSmrg
3393e169010aSmrg	    cat <<"EOF"
3394e169010aSmrg	  printf ("%s", script_text_part1);
3395e169010aSmrg	  printf ("%s", script_text_part2);
3396e169010aSmrg	  return 0;
3397e169010aSmrg	}
3398e169010aSmrg    }
33997914d74bSmrg
3400e169010aSmrg  newargz = XMALLOC (char *, argc + 1);
3401e169010aSmrg  tmp_pathspec = find_executable (argv[0]);
3402e169010aSmrg  if (tmp_pathspec == NULL)
3403e169010aSmrg    lt_fatal ("Couldn't find %s", argv[0]);
3404e169010aSmrg  LTWRAPPER_DEBUGPRINTF (("(main) found exe (before symlink chase) at : %s\n",
3405e169010aSmrg			  tmp_pathspec));
3406e169010aSmrg
3407e169010aSmrg  actual_cwrapper_path = chase_symlinks (tmp_pathspec);
3408e169010aSmrg  LTWRAPPER_DEBUGPRINTF (("(main) found exe (after symlink chase) at : %s\n",
3409e169010aSmrg			  actual_cwrapper_path));
3410e169010aSmrg  XFREE (tmp_pathspec);
3411e169010aSmrg
3412e169010aSmrg  actual_cwrapper_name = xstrdup( base_name (actual_cwrapper_path));
3413e169010aSmrg  strendzap (actual_cwrapper_path, actual_cwrapper_name);
3414e169010aSmrg
3415e169010aSmrg  /* wrapper name transforms */
3416e169010aSmrg  strendzap (actual_cwrapper_name, ".exe");
3417e169010aSmrg  tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
3418e169010aSmrg  XFREE (actual_cwrapper_name);
3419e169010aSmrg  actual_cwrapper_name = tmp_pathspec;
3420e169010aSmrg  tmp_pathspec = 0;
3421e169010aSmrg
3422e169010aSmrg  /* target_name transforms -- use actual target program name; might have lt- prefix */
3423e169010aSmrg  target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
3424e169010aSmrg  strendzap (target_name, ".exe");
3425e169010aSmrg  tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
3426e169010aSmrg  XFREE (target_name);
3427e169010aSmrg  target_name = tmp_pathspec;
3428e169010aSmrg  tmp_pathspec = 0;
3429e169010aSmrg
3430e169010aSmrg  LTWRAPPER_DEBUGPRINTF (("(main) libtool target name: %s\n",
3431e169010aSmrg			  target_name));
3432e169010aSmrgEOF
34337914d74bSmrg
3434e169010aSmrg	    cat <<EOF
3435e169010aSmrg  newargz[0] =
3436e169010aSmrg    XMALLOC (char, (strlen (actual_cwrapper_path) +
3437e169010aSmrg		    strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
3438e169010aSmrg  strcpy (newargz[0], actual_cwrapper_path);
3439e169010aSmrg  strcat (newargz[0], "$objdir");
3440e169010aSmrg  strcat (newargz[0], "/");
3441e169010aSmrgEOF
34427914d74bSmrg
3443e169010aSmrg	    cat <<"EOF"
3444e169010aSmrg  /* stop here, and copy so we don't have to do this twice */
3445e169010aSmrg  tmp_pathspec = xstrdup (newargz[0]);
34467914d74bSmrg
3447e169010aSmrg  /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
3448e169010aSmrg  strcat (newargz[0], actual_cwrapper_name);
34497914d74bSmrg
3450e169010aSmrg  /* DO want the lt- prefix here if it exists, so use target_name */
3451e169010aSmrg  lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
3452e169010aSmrg  XFREE (tmp_pathspec);
3453e169010aSmrg  tmp_pathspec = NULL;
3454e169010aSmrgEOF
34557914d74bSmrg
3456e169010aSmrg	    case $host_os in
3457e169010aSmrg	      mingw*)
3458e169010aSmrg	    cat <<"EOF"
3459e169010aSmrg  {
3460e169010aSmrg    char* p;
3461e169010aSmrg    while ((p = strchr (newargz[0], '\\')) != NULL)
3462e169010aSmrg      {
3463e169010aSmrg	*p = '/';
3464e169010aSmrg      }
3465e169010aSmrg    while ((p = strchr (lt_argv_zero, '\\')) != NULL)
3466e169010aSmrg      {
3467e169010aSmrg	*p = '/';
3468e169010aSmrg      }
3469e169010aSmrg  }
3470e169010aSmrgEOF
3471e169010aSmrg	    ;;
3472e169010aSmrg	    esac
34737914d74bSmrg
3474e169010aSmrg	    cat <<"EOF"
3475e169010aSmrg  XFREE (target_name);
3476e169010aSmrg  XFREE (actual_cwrapper_path);
3477e169010aSmrg  XFREE (actual_cwrapper_name);
34787914d74bSmrg
3479e169010aSmrg  lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
3480e169010aSmrg  lt_setenv ("DUALCASE", "1");  /* for MSK sh */
3481e169010aSmrg  lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
3482e169010aSmrg  lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
34837914d74bSmrg
3484e169010aSmrg  newargc=0;
3485e169010aSmrg  for (i = 1; i < argc; i++)
3486e169010aSmrg    {
3487e169010aSmrg      if (strncmp (argv[i], env_set_opt, env_set_opt_len) == 0)
3488e169010aSmrg        {
3489e169010aSmrg          if (argv[i][env_set_opt_len] == '=')
3490e169010aSmrg            {
3491e169010aSmrg              const char *p = argv[i] + env_set_opt_len + 1;
3492e169010aSmrg              lt_opt_process_env_set (p);
3493e169010aSmrg            }
3494e169010aSmrg          else if (argv[i][env_set_opt_len] == '\0' && i + 1 < argc)
3495e169010aSmrg            {
3496e169010aSmrg              lt_opt_process_env_set (argv[++i]); /* don't copy */
3497e169010aSmrg            }
3498e169010aSmrg          else
3499e169010aSmrg            lt_fatal ("%s missing required argument", env_set_opt);
3500e169010aSmrg          continue;
3501e169010aSmrg        }
3502e169010aSmrg      if (strncmp (argv[i], env_prepend_opt, env_prepend_opt_len) == 0)
3503e169010aSmrg        {
3504e169010aSmrg          if (argv[i][env_prepend_opt_len] == '=')
3505e169010aSmrg            {
3506e169010aSmrg              const char *p = argv[i] + env_prepend_opt_len + 1;
3507e169010aSmrg              lt_opt_process_env_prepend (p);
3508e169010aSmrg            }
3509e169010aSmrg          else if (argv[i][env_prepend_opt_len] == '\0' && i + 1 < argc)
3510e169010aSmrg            {
3511e169010aSmrg              lt_opt_process_env_prepend (argv[++i]); /* don't copy */
3512e169010aSmrg            }
3513e169010aSmrg          else
3514e169010aSmrg            lt_fatal ("%s missing required argument", env_prepend_opt);
3515e169010aSmrg          continue;
3516e169010aSmrg        }
3517e169010aSmrg      if (strncmp (argv[i], env_append_opt, env_append_opt_len) == 0)
3518e169010aSmrg        {
3519e169010aSmrg          if (argv[i][env_append_opt_len] == '=')
3520e169010aSmrg            {
3521e169010aSmrg              const char *p = argv[i] + env_append_opt_len + 1;
3522e169010aSmrg              lt_opt_process_env_append (p);
3523e169010aSmrg            }
3524e169010aSmrg          else if (argv[i][env_append_opt_len] == '\0' && i + 1 < argc)
3525e169010aSmrg            {
3526e169010aSmrg              lt_opt_process_env_append (argv[++i]); /* don't copy */
3527e169010aSmrg            }
3528e169010aSmrg          else
3529e169010aSmrg            lt_fatal ("%s missing required argument", env_append_opt);
3530e169010aSmrg          continue;
3531e169010aSmrg        }
3532e169010aSmrg      if (strncmp (argv[i], ltwrapper_option_prefix, opt_prefix_len) == 0)
3533e169010aSmrg        {
3534e169010aSmrg          /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
3535e169010aSmrg             namespace, but it is not one of the ones we know about and
3536e169010aSmrg             have already dealt with, above (inluding dump-script), then
3537e169010aSmrg             report an error. Otherwise, targets might begin to believe
3538e169010aSmrg             they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
3539e169010aSmrg             namespace. The first time any user complains about this, we'll
3540e169010aSmrg             need to make LTWRAPPER_OPTION_PREFIX a configure-time option
3541e169010aSmrg             or a configure.ac-settable value.
3542e169010aSmrg           */
3543e169010aSmrg          lt_fatal ("Unrecognized option in %s namespace: '%s'",
3544e169010aSmrg                    ltwrapper_option_prefix, argv[i]);
3545e169010aSmrg        }
3546e169010aSmrg      /* otherwise ... */
3547e169010aSmrg      newargz[++newargc] = xstrdup (argv[i]);
3548e169010aSmrg    }
3549e169010aSmrg  newargz[++newargc] = NULL;
35507914d74bSmrg
3551e169010aSmrg  LTWRAPPER_DEBUGPRINTF     (("(main) lt_argv_zero : %s\n", (lt_argv_zero ? lt_argv_zero : "<NULL>")));
3552e169010aSmrg  for (i = 0; i < newargc; i++)
3553e169010aSmrg    {
3554e169010aSmrg      LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d]   : %s\n", i, (newargz[i] ? newargz[i] : "<NULL>")));
3555e169010aSmrg    }
35567914d74bSmrg
3557e169010aSmrgEOF
35587914d74bSmrg
3559e169010aSmrg	    case $host_os in
3560e169010aSmrg	      mingw*)
3561e169010aSmrg		cat <<"EOF"
3562e169010aSmrg  /* execv doesn't actually work on mingw as expected on unix */
3563e169010aSmrg  rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
3564e169010aSmrg  if (rval == -1)
3565e169010aSmrg    {
3566e169010aSmrg      /* failed to start process */
3567e169010aSmrg      LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, errno));
3568e169010aSmrg      return 127;
3569e169010aSmrg    }
3570e169010aSmrg  return rval;
3571e169010aSmrgEOF
3572e169010aSmrg		;;
3573e169010aSmrg	      *)
3574e169010aSmrg		cat <<"EOF"
3575e169010aSmrg  execv (lt_argv_zero, newargz);
3576e169010aSmrg  return rval; /* =127, but avoids unused variable warning */
3577e169010aSmrgEOF
3578e169010aSmrg		;;
3579e169010aSmrg	    esac
35807914d74bSmrg
3581e169010aSmrg	    cat <<"EOF"
3582e169010aSmrg}
35837914d74bSmrg
3584e169010aSmrgvoid *
3585e169010aSmrgxmalloc (size_t num)
3586e169010aSmrg{
3587e169010aSmrg  void *p = (void *) malloc (num);
3588e169010aSmrg  if (!p)
3589e169010aSmrg    lt_fatal ("Memory exhausted");
35907914d74bSmrg
3591e169010aSmrg  return p;
3592e169010aSmrg}
35937914d74bSmrg
3594e169010aSmrgchar *
3595e169010aSmrgxstrdup (const char *string)
3596e169010aSmrg{
3597e169010aSmrg  return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
3598e169010aSmrg			  string) : NULL;
3599e169010aSmrg}
36007914d74bSmrg
3601e169010aSmrgconst char *
3602e169010aSmrgbase_name (const char *name)
3603e169010aSmrg{
3604e169010aSmrg  const char *base;
36057914d74bSmrg
3606e169010aSmrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
3607e169010aSmrg  /* Skip over the disk name in MSDOS pathnames. */
3608e169010aSmrg  if (isalpha ((unsigned char) name[0]) && name[1] == ':')
3609e169010aSmrg    name += 2;
3610e169010aSmrg#endif
36117914d74bSmrg
3612e169010aSmrg  for (base = name; *name; name++)
3613e169010aSmrg    if (IS_DIR_SEPARATOR (*name))
3614e169010aSmrg      base = name + 1;
3615e169010aSmrg  return base;
3616e169010aSmrg}
36177914d74bSmrg
3618e169010aSmrgint
3619e169010aSmrgcheck_executable (const char *path)
3620e169010aSmrg{
3621e169010aSmrg  struct stat st;
36227914d74bSmrg
3623e169010aSmrg  LTWRAPPER_DEBUGPRINTF (("(check_executable)  : %s\n",
3624e169010aSmrg			  path ? (*path ? path : "EMPTY!") : "NULL!"));
3625e169010aSmrg  if ((!path) || (!*path))
3626e169010aSmrg    return 0;
36277914d74bSmrg
3628e169010aSmrg  if ((stat (path, &st) >= 0)
3629e169010aSmrg      && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
3630e169010aSmrg    return 1;
3631e169010aSmrg  else
3632e169010aSmrg    return 0;
3633e169010aSmrg}
36347914d74bSmrg
3635e169010aSmrgint
3636e169010aSmrgmake_executable (const char *path)
3637e169010aSmrg{
3638e169010aSmrg  int rval = 0;
3639e169010aSmrg  struct stat st;
36407914d74bSmrg
3641e169010aSmrg  LTWRAPPER_DEBUGPRINTF (("(make_executable)   : %s\n",
3642e169010aSmrg			  path ? (*path ? path : "EMPTY!") : "NULL!"));
3643e169010aSmrg  if ((!path) || (!*path))
3644e169010aSmrg    return 0;
36457914d74bSmrg
3646e169010aSmrg  if (stat (path, &st) >= 0)
3647e169010aSmrg    {
3648e169010aSmrg      rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
3649e169010aSmrg    }
3650e169010aSmrg  return rval;
3651e169010aSmrg}
36527914d74bSmrg
3653e169010aSmrg/* Searches for the full path of the wrapper.  Returns
3654e169010aSmrg   newly allocated full path name if found, NULL otherwise
3655e169010aSmrg   Does not chase symlinks, even on platforms that support them.
3656e169010aSmrg*/
3657e169010aSmrgchar *
3658e169010aSmrgfind_executable (const char *wrapper)
3659e169010aSmrg{
3660e169010aSmrg  int has_slash = 0;
3661e169010aSmrg  const char *p;
3662e169010aSmrg  const char *p_next;
3663e169010aSmrg  /* static buffer for getcwd */
3664e169010aSmrg  char tmp[LT_PATHMAX + 1];
3665e169010aSmrg  int tmp_len;
3666e169010aSmrg  char *concat_name;
36677914d74bSmrg
3668e169010aSmrg  LTWRAPPER_DEBUGPRINTF (("(find_executable)   : %s\n",
3669e169010aSmrg			  wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!"));
36707914d74bSmrg
3671e169010aSmrg  if ((wrapper == NULL) || (*wrapper == '\0'))
3672e169010aSmrg    return NULL;
36737914d74bSmrg
3674e169010aSmrg  /* Absolute path? */
3675e169010aSmrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
3676e169010aSmrg  if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
3677e169010aSmrg    {
3678e169010aSmrg      concat_name = xstrdup (wrapper);
3679e169010aSmrg      if (check_executable (concat_name))
3680e169010aSmrg	return concat_name;
3681e169010aSmrg      XFREE (concat_name);
3682e169010aSmrg    }
3683e169010aSmrg  else
3684e169010aSmrg    {
3685e169010aSmrg#endif
3686e169010aSmrg      if (IS_DIR_SEPARATOR (wrapper[0]))
3687e169010aSmrg	{
3688e169010aSmrg	  concat_name = xstrdup (wrapper);
3689e169010aSmrg	  if (check_executable (concat_name))
3690e169010aSmrg	    return concat_name;
3691e169010aSmrg	  XFREE (concat_name);
3692e169010aSmrg	}
3693e169010aSmrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
3694e169010aSmrg    }
3695e169010aSmrg#endif
36967914d74bSmrg
3697e169010aSmrg  for (p = wrapper; *p; p++)
3698e169010aSmrg    if (*p == '/')
3699e169010aSmrg      {
3700e169010aSmrg	has_slash = 1;
3701e169010aSmrg	break;
3702e169010aSmrg      }
3703e169010aSmrg  if (!has_slash)
3704e169010aSmrg    {
3705e169010aSmrg      /* no slashes; search PATH */
3706e169010aSmrg      const char *path = getenv ("PATH");
3707e169010aSmrg      if (path != NULL)
3708e169010aSmrg	{
3709e169010aSmrg	  for (p = path; *p; p = p_next)
3710e169010aSmrg	    {
3711e169010aSmrg	      const char *q;
3712e169010aSmrg	      size_t p_len;
3713e169010aSmrg	      for (q = p; *q; q++)
3714e169010aSmrg		if (IS_PATH_SEPARATOR (*q))
3715e169010aSmrg		  break;
3716e169010aSmrg	      p_len = q - p;
3717e169010aSmrg	      p_next = (*q == '\0' ? q : q + 1);
3718e169010aSmrg	      if (p_len == 0)
3719e169010aSmrg		{
3720e169010aSmrg		  /* empty path: current directory */
3721e169010aSmrg		  if (getcwd (tmp, LT_PATHMAX) == NULL)
3722e169010aSmrg		    lt_fatal ("getcwd failed");
3723e169010aSmrg		  tmp_len = strlen (tmp);
3724e169010aSmrg		  concat_name =
3725e169010aSmrg		    XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
3726e169010aSmrg		  memcpy (concat_name, tmp, tmp_len);
3727e169010aSmrg		  concat_name[tmp_len] = '/';
3728e169010aSmrg		  strcpy (concat_name + tmp_len + 1, wrapper);
3729e169010aSmrg		}
3730e169010aSmrg	      else
3731e169010aSmrg		{
3732e169010aSmrg		  concat_name =
3733e169010aSmrg		    XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
3734e169010aSmrg		  memcpy (concat_name, p, p_len);
3735e169010aSmrg		  concat_name[p_len] = '/';
3736e169010aSmrg		  strcpy (concat_name + p_len + 1, wrapper);
3737e169010aSmrg		}
3738e169010aSmrg	      if (check_executable (concat_name))
3739e169010aSmrg		return concat_name;
3740e169010aSmrg	      XFREE (concat_name);
3741e169010aSmrg	    }
3742e169010aSmrg	}
3743e169010aSmrg      /* not found in PATH; assume curdir */
3744e169010aSmrg    }
3745e169010aSmrg  /* Relative path | not found in path: prepend cwd */
3746e169010aSmrg  if (getcwd (tmp, LT_PATHMAX) == NULL)
3747e169010aSmrg    lt_fatal ("getcwd failed");
3748e169010aSmrg  tmp_len = strlen (tmp);
3749e169010aSmrg  concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
3750e169010aSmrg  memcpy (concat_name, tmp, tmp_len);
3751e169010aSmrg  concat_name[tmp_len] = '/';
3752e169010aSmrg  strcpy (concat_name + tmp_len + 1, wrapper);
37537914d74bSmrg
3754e169010aSmrg  if (check_executable (concat_name))
3755e169010aSmrg    return concat_name;
3756e169010aSmrg  XFREE (concat_name);
3757e169010aSmrg  return NULL;
3758e169010aSmrg}
37597914d74bSmrg
3760e169010aSmrgchar *
3761e169010aSmrgchase_symlinks (const char *pathspec)
3762e169010aSmrg{
3763e169010aSmrg#ifndef S_ISLNK
3764e169010aSmrg  return xstrdup (pathspec);
3765e169010aSmrg#else
3766e169010aSmrg  char buf[LT_PATHMAX];
3767e169010aSmrg  struct stat s;
3768e169010aSmrg  char *tmp_pathspec = xstrdup (pathspec);
3769e169010aSmrg  char *p;
3770e169010aSmrg  int has_symlinks = 0;
3771e169010aSmrg  while (strlen (tmp_pathspec) && !has_symlinks)
3772e169010aSmrg    {
3773e169010aSmrg      LTWRAPPER_DEBUGPRINTF (("checking path component for symlinks: %s\n",
3774e169010aSmrg			      tmp_pathspec));
3775e169010aSmrg      if (lstat (tmp_pathspec, &s) == 0)
3776e169010aSmrg	{
3777e169010aSmrg	  if (S_ISLNK (s.st_mode) != 0)
3778e169010aSmrg	    {
3779e169010aSmrg	      has_symlinks = 1;
3780e169010aSmrg	      break;
3781e169010aSmrg	    }
37827914d74bSmrg
3783e169010aSmrg	  /* search backwards for last DIR_SEPARATOR */
3784e169010aSmrg	  p = tmp_pathspec + strlen (tmp_pathspec) - 1;
3785e169010aSmrg	  while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
3786e169010aSmrg	    p--;
3787e169010aSmrg	  if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
3788e169010aSmrg	    {
3789e169010aSmrg	      /* no more DIR_SEPARATORS left */
3790e169010aSmrg	      break;
3791e169010aSmrg	    }
3792e169010aSmrg	  *p = '\0';
3793e169010aSmrg	}
3794e169010aSmrg      else
3795e169010aSmrg	{
3796e169010aSmrg	  char *errstr = strerror (errno);
3797e169010aSmrg	  lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr);
3798e169010aSmrg	}
3799e169010aSmrg    }
3800e169010aSmrg  XFREE (tmp_pathspec);
38017914d74bSmrg
3802e169010aSmrg  if (!has_symlinks)
3803e169010aSmrg    {
3804e169010aSmrg      return xstrdup (pathspec);
3805e169010aSmrg    }
38067914d74bSmrg
3807e169010aSmrg  tmp_pathspec = realpath (pathspec, buf);
3808e169010aSmrg  if (tmp_pathspec == 0)
3809e169010aSmrg    {
3810e169010aSmrg      lt_fatal ("Could not follow symlinks for %s", pathspec);
3811e169010aSmrg    }
3812e169010aSmrg  return xstrdup (tmp_pathspec);
3813e169010aSmrg#endif
3814e169010aSmrg}
38157914d74bSmrg
3816e169010aSmrgchar *
3817e169010aSmrgstrendzap (char *str, const char *pat)
3818e169010aSmrg{
3819e169010aSmrg  size_t len, patlen;
38207914d74bSmrg
3821e169010aSmrg  assert (str != NULL);
3822e169010aSmrg  assert (pat != NULL);
38237914d74bSmrg
3824e169010aSmrg  len = strlen (str);
3825e169010aSmrg  patlen = strlen (pat);
38267914d74bSmrg
3827e169010aSmrg  if (patlen <= len)
3828e169010aSmrg    {
3829e169010aSmrg      str += len - patlen;
3830e169010aSmrg      if (strcmp (str, pat) == 0)
3831e169010aSmrg	*str = '\0';
3832e169010aSmrg    }
3833e169010aSmrg  return str;
3834e169010aSmrg}
38357914d74bSmrg
3836e169010aSmrgstatic void
3837e169010aSmrglt_error_core (int exit_status, const char *mode,
3838e169010aSmrg	       const char *message, va_list ap)
3839e169010aSmrg{
3840e169010aSmrg  fprintf (stderr, "%s: %s: ", program_name, mode);
3841e169010aSmrg  vfprintf (stderr, message, ap);
3842e169010aSmrg  fprintf (stderr, ".\n");
38437914d74bSmrg
3844e169010aSmrg  if (exit_status >= 0)
3845e169010aSmrg    exit (exit_status);
3846e169010aSmrg}
38477914d74bSmrg
3848e169010aSmrgvoid
3849e169010aSmrglt_fatal (const char *message, ...)
3850e169010aSmrg{
3851e169010aSmrg  va_list ap;
3852e169010aSmrg  va_start (ap, message);
3853e169010aSmrg  lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
3854e169010aSmrg  va_end (ap);
3855e169010aSmrg}
38567914d74bSmrg
3857e169010aSmrgvoid
3858e169010aSmrglt_setenv (const char *name, const char *value)
3859e169010aSmrg{
3860e169010aSmrg  LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n",
3861e169010aSmrg                          (name ? name : "<NULL>"),
3862e169010aSmrg                          (value ? value : "<NULL>")));
3863e169010aSmrg  {
3864e169010aSmrg#ifdef HAVE_SETENV
3865e169010aSmrg    /* always make a copy, for consistency with !HAVE_SETENV */
3866e169010aSmrg    char *str = xstrdup (value);
3867e169010aSmrg    setenv (name, str, 1);
3868e169010aSmrg#else
3869e169010aSmrg    int len = strlen (name) + 1 + strlen (value) + 1;
3870e169010aSmrg    char *str = XMALLOC (char, len);
3871e169010aSmrg    sprintf (str, "%s=%s", name, value);
3872e169010aSmrg    if (putenv (str) != EXIT_SUCCESS)
3873e169010aSmrg      {
3874e169010aSmrg        XFREE (str);
3875e169010aSmrg      }
3876e169010aSmrg#endif
3877e169010aSmrg  }
3878e169010aSmrg}
38797914d74bSmrg
3880e169010aSmrgchar *
3881e169010aSmrglt_extend_str (const char *orig_value, const char *add, int to_end)
3882e169010aSmrg{
3883e169010aSmrg  char *new_value;
3884e169010aSmrg  if (orig_value && *orig_value)
3885e169010aSmrg    {
3886e169010aSmrg      int orig_value_len = strlen (orig_value);
3887e169010aSmrg      int add_len = strlen (add);
3888e169010aSmrg      new_value = XMALLOC (char, add_len + orig_value_len + 1);
3889e169010aSmrg      if (to_end)
3890e169010aSmrg        {
3891e169010aSmrg          strcpy (new_value, orig_value);
3892e169010aSmrg          strcpy (new_value + orig_value_len, add);
3893e169010aSmrg        }
3894e169010aSmrg      else
3895e169010aSmrg        {
3896e169010aSmrg          strcpy (new_value, add);
3897e169010aSmrg          strcpy (new_value + add_len, orig_value);
3898e169010aSmrg        }
3899e169010aSmrg    }
3900e169010aSmrg  else
3901e169010aSmrg    {
3902e169010aSmrg      new_value = xstrdup (add);
3903e169010aSmrg    }
3904e169010aSmrg  return new_value;
3905e169010aSmrg}
39067914d74bSmrg
3907e169010aSmrgint
3908e169010aSmrglt_split_name_value (const char *arg, char** name, char** value)
3909e169010aSmrg{
3910e169010aSmrg  const char *p;
3911e169010aSmrg  int len;
3912e169010aSmrg  if (!arg || !*arg)
3913e169010aSmrg    return 1;
39147914d74bSmrg
3915e169010aSmrg  p = strchr (arg, (int)'=');
39167914d74bSmrg
3917e169010aSmrg  if (!p)
3918e169010aSmrg    return 1;
39197914d74bSmrg
3920e169010aSmrg  *value = xstrdup (++p);
39217914d74bSmrg
3922e169010aSmrg  len = strlen (arg) - strlen (*value);
3923e169010aSmrg  *name = XMALLOC (char, len);
3924e169010aSmrg  strncpy (*name, arg, len-1);
3925e169010aSmrg  (*name)[len - 1] = '\0';
39267914d74bSmrg
3927e169010aSmrg  return 0;
3928e169010aSmrg}
39297914d74bSmrg
3930e169010aSmrgvoid
3931e169010aSmrglt_opt_process_env_set (const char *arg)
3932e169010aSmrg{
3933e169010aSmrg  char *name = NULL;
3934e169010aSmrg  char *value = NULL;
39357914d74bSmrg
3936e169010aSmrg  if (lt_split_name_value (arg, &name, &value) != 0)
3937e169010aSmrg    {
3938e169010aSmrg      XFREE (name);
3939e169010aSmrg      XFREE (value);
3940e169010aSmrg      lt_fatal ("bad argument for %s: '%s'", env_set_opt, arg);
3941e169010aSmrg    }
39427914d74bSmrg
3943e169010aSmrg  lt_setenv (name, value);
3944e169010aSmrg  XFREE (name);
3945e169010aSmrg  XFREE (value);
3946e169010aSmrg}
39477914d74bSmrg
3948e169010aSmrgvoid
3949e169010aSmrglt_opt_process_env_prepend (const char *arg)
3950e169010aSmrg{
3951e169010aSmrg  char *name = NULL;
3952e169010aSmrg  char *value = NULL;
3953e169010aSmrg  char *new_value = NULL;
39547914d74bSmrg
3955e169010aSmrg  if (lt_split_name_value (arg, &name, &value) != 0)
3956e169010aSmrg    {
3957e169010aSmrg      XFREE (name);
3958e169010aSmrg      XFREE (value);
3959e169010aSmrg      lt_fatal ("bad argument for %s: '%s'", env_prepend_opt, arg);
3960e169010aSmrg    }
39617914d74bSmrg
3962e169010aSmrg  new_value = lt_extend_str (getenv (name), value, 0);
3963e169010aSmrg  lt_setenv (name, new_value);
3964e169010aSmrg  XFREE (new_value);
3965e169010aSmrg  XFREE (name);
3966e169010aSmrg  XFREE (value);
3967e169010aSmrg}
39687914d74bSmrg
3969e169010aSmrgvoid
3970e169010aSmrglt_opt_process_env_append (const char *arg)
3971e169010aSmrg{
3972e169010aSmrg  char *name = NULL;
3973e169010aSmrg  char *value = NULL;
3974e169010aSmrg  char *new_value = NULL;
39757914d74bSmrg
3976e169010aSmrg  if (lt_split_name_value (arg, &name, &value) != 0)
3977e169010aSmrg    {
3978e169010aSmrg      XFREE (name);
3979e169010aSmrg      XFREE (value);
3980e169010aSmrg      lt_fatal ("bad argument for %s: '%s'", env_append_opt, arg);
3981e169010aSmrg    }
39827914d74bSmrg
3983e169010aSmrg  new_value = lt_extend_str (getenv (name), value, 1);
3984e169010aSmrg  lt_setenv (name, new_value);
3985e169010aSmrg  XFREE (new_value);
3986e169010aSmrg  XFREE (name);
3987e169010aSmrg  XFREE (value);
3988e169010aSmrg}
39897914d74bSmrg
3990e169010aSmrgvoid
3991e169010aSmrglt_update_exe_path (const char *name, const char *value)
3992e169010aSmrg{
3993e169010aSmrg  LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
3994e169010aSmrg                          (name ? name : "<NULL>"),
3995e169010aSmrg                          (value ? value : "<NULL>")));
39967914d74bSmrg
3997e169010aSmrg  if (name && *name && value && *value)
3998e169010aSmrg    {
3999e169010aSmrg      char *new_value = lt_extend_str (getenv (name), value, 0);
4000e169010aSmrg      /* some systems can't cope with a ':'-terminated path #' */
4001e169010aSmrg      int len = strlen (new_value);
4002e169010aSmrg      while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
4003e169010aSmrg        {
4004e169010aSmrg          new_value[len-1] = '\0';
4005e169010aSmrg        }
4006e169010aSmrg      lt_setenv (name, new_value);
4007e169010aSmrg      XFREE (new_value);
4008e169010aSmrg    }
4009e169010aSmrg}
40107914d74bSmrg
4011e169010aSmrgvoid
4012e169010aSmrglt_update_lib_path (const char *name, const char *value)
4013e169010aSmrg{
4014e169010aSmrg  LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
4015e169010aSmrg                          (name ? name : "<NULL>"),
4016e169010aSmrg                          (value ? value : "<NULL>")));
40177914d74bSmrg
4018e169010aSmrg  if (name && *name && value && *value)
4019e169010aSmrg    {
4020e169010aSmrg      char *new_value = lt_extend_str (getenv (name), value, 0);
4021e169010aSmrg      lt_setenv (name, new_value);
4022e169010aSmrg      XFREE (new_value);
4023e169010aSmrg    }
4024e169010aSmrg}
40257914d74bSmrg
40267914d74bSmrg
4027e169010aSmrgEOF
4028e169010aSmrg}
4029e169010aSmrg# end: func_emit_cwrapperexe_src
40307914d74bSmrg
4031e169010aSmrg# func_mode_link arg...
4032e169010aSmrgfunc_mode_link ()
4033e169010aSmrg{
4034e169010aSmrg    $opt_debug
4035e169010aSmrg    case $host in
4036e169010aSmrg    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
4037e169010aSmrg      # It is impossible to link a dll without this setting, and
4038e169010aSmrg      # we shouldn't force the makefile maintainer to figure out
4039e169010aSmrg      # which system we are compiling for in order to pass an extra
4040e169010aSmrg      # flag for every libtool invocation.
4041e169010aSmrg      # allow_undefined=no
40427914d74bSmrg
4043e169010aSmrg      # FIXME: Unfortunately, there are problems with the above when trying
4044e169010aSmrg      # to make a dll which has undefined symbols, in which case not
4045e169010aSmrg      # even a static library is built.  For now, we need to specify
4046e169010aSmrg      # -no-undefined on the libtool link line when we can be certain
4047e169010aSmrg      # that all symbols are satisfied, otherwise we get a static library.
4048e169010aSmrg      allow_undefined=yes
4049e169010aSmrg      ;;
4050e169010aSmrg    *)
4051e169010aSmrg      allow_undefined=yes
4052e169010aSmrg      ;;
4053e169010aSmrg    esac
4054e169010aSmrg    libtool_args=$nonopt
4055e169010aSmrg    base_compile="$nonopt $@"
4056e169010aSmrg    compile_command=$nonopt
4057e169010aSmrg    finalize_command=$nonopt
40587914d74bSmrg
4059e169010aSmrg    compile_rpath=
4060e169010aSmrg    finalize_rpath=
4061e169010aSmrg    compile_shlibpath=
4062e169010aSmrg    finalize_shlibpath=
4063e169010aSmrg    convenience=
4064e169010aSmrg    old_convenience=
4065e169010aSmrg    deplibs=
4066e169010aSmrg    old_deplibs=
4067e169010aSmrg    compiler_flags=
4068e169010aSmrg    linker_flags=
4069e169010aSmrg    dllsearchpath=
4070e169010aSmrg    lib_search_path=`pwd`
4071e169010aSmrg    inst_prefix_dir=
4072e169010aSmrg    new_inherited_linker_flags=
40737914d74bSmrg
4074e169010aSmrg    avoid_version=no
4075e169010aSmrg    dlfiles=
4076e169010aSmrg    dlprefiles=
4077e169010aSmrg    dlself=no
4078e169010aSmrg    export_dynamic=no
4079e169010aSmrg    export_symbols=
4080e169010aSmrg    export_symbols_regex=
4081e169010aSmrg    generated=
4082e169010aSmrg    libobjs=
4083e169010aSmrg    ltlibs=
4084e169010aSmrg    module=no
4085e169010aSmrg    no_install=no
4086e169010aSmrg    objs=
4087e169010aSmrg    non_pic_objects=
4088e169010aSmrg    precious_files_regex=
4089e169010aSmrg    prefer_static_libs=no
4090e169010aSmrg    preload=no
4091e169010aSmrg    prev=
4092e169010aSmrg    prevarg=
4093e169010aSmrg    release=
4094e169010aSmrg    rpath=
4095e169010aSmrg    xrpath=
4096e169010aSmrg    perm_rpath=
4097e169010aSmrg    temp_rpath=
4098e169010aSmrg    thread_safe=no
4099e169010aSmrg    vinfo=
4100e169010aSmrg    vinfo_number=no
4101e169010aSmrg    weak_libs=
4102e169010aSmrg    single_module="${wl}-single_module"
4103e169010aSmrg    func_infer_tag $base_compile
41047914d74bSmrg
4105e169010aSmrg    # We need to know -static, to get the right output filenames.
4106e169010aSmrg    for arg
4107e169010aSmrg    do
4108e169010aSmrg      case $arg in
4109e169010aSmrg      -shared)
4110e169010aSmrg	test "$build_libtool_libs" != yes && \
4111e169010aSmrg	  func_fatal_configuration "can not build a shared library"
4112e169010aSmrg	build_old_libs=no
4113e169010aSmrg	break
4114e169010aSmrg	;;
4115e169010aSmrg      -all-static | -static | -static-libtool-libs)
4116e169010aSmrg	case $arg in
4117e169010aSmrg	-all-static)
4118e169010aSmrg	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
4119e169010aSmrg	    func_warning "complete static linking is impossible in this configuration"
41207914d74bSmrg	  fi
4121e169010aSmrg	  if test -n "$link_static_flag"; then
4122e169010aSmrg	    dlopen_self=$dlopen_self_static
41237914d74bSmrg	  fi
4124e169010aSmrg	  prefer_static_libs=yes
41257914d74bSmrg	  ;;
4126e169010aSmrg	-static)
4127e169010aSmrg	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
4128e169010aSmrg	    dlopen_self=$dlopen_self_static
4129e169010aSmrg	  fi
4130e169010aSmrg	  prefer_static_libs=built
4131e169010aSmrg	  ;;
4132e169010aSmrg	-static-libtool-libs)
4133e169010aSmrg	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
4134e169010aSmrg	    dlopen_self=$dlopen_self_static
4135e169010aSmrg	  fi
4136e169010aSmrg	  prefer_static_libs=yes
41377914d74bSmrg	  ;;
41387914d74bSmrg	esac
4139e169010aSmrg	build_libtool_libs=no
4140e169010aSmrg	build_old_libs=yes
4141e169010aSmrg	break
4142e169010aSmrg	;;
4143e169010aSmrg      esac
4144e169010aSmrg    done
41457914d74bSmrg
4146e169010aSmrg    # See if our shared archives depend on static archives.
4147e169010aSmrg    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
41487914d74bSmrg
4149e169010aSmrg    # Go through the arguments, transforming them on the way.
4150e169010aSmrg    while test "$#" -gt 0; do
4151e169010aSmrg      arg="$1"
4152e169010aSmrg      shift
4153e169010aSmrg      func_quote_for_eval "$arg"
4154e169010aSmrg      qarg=$func_quote_for_eval_unquoted_result
4155e169010aSmrg      func_append libtool_args " $func_quote_for_eval_result"
41567914d74bSmrg
4157e169010aSmrg      # If the previous option needs an argument, assign it.
4158e169010aSmrg      if test -n "$prev"; then
4159e169010aSmrg	case $prev in
4160e169010aSmrg	output)
4161e169010aSmrg	  func_append compile_command " @OUTPUT@"
4162e169010aSmrg	  func_append finalize_command " @OUTPUT@"
4163e169010aSmrg	  ;;
4164e169010aSmrg	esac
41657914d74bSmrg
4166e169010aSmrg	case $prev in
4167e169010aSmrg	dlfiles|dlprefiles)
4168e169010aSmrg	  if test "$preload" = no; then
4169e169010aSmrg	    # Add the symbol object into the linking commands.
4170e169010aSmrg	    func_append compile_command " @SYMFILE@"
4171e169010aSmrg	    func_append finalize_command " @SYMFILE@"
4172e169010aSmrg	    preload=yes
4173e169010aSmrg	  fi
4174e169010aSmrg	  case $arg in
4175e169010aSmrg	  *.la | *.lo) ;;  # We handle these cases below.
4176e169010aSmrg	  force)
4177e169010aSmrg	    if test "$dlself" = no; then
4178e169010aSmrg	      dlself=needless
4179e169010aSmrg	      export_dynamic=yes
4180e169010aSmrg	    fi
4181e169010aSmrg	    prev=
4182e169010aSmrg	    continue
4183e169010aSmrg	    ;;
4184e169010aSmrg	  self)
4185e169010aSmrg	    if test "$prev" = dlprefiles; then
4186e169010aSmrg	      dlself=yes
4187e169010aSmrg	    elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
4188e169010aSmrg	      dlself=yes
4189e169010aSmrg	    else
4190e169010aSmrg	      dlself=needless
4191e169010aSmrg	      export_dynamic=yes
4192e169010aSmrg	    fi
4193e169010aSmrg	    prev=
4194e169010aSmrg	    continue
41957914d74bSmrg	    ;;
41967914d74bSmrg	  *)
4197e169010aSmrg	    if test "$prev" = dlfiles; then
4198e169010aSmrg	      dlfiles="$dlfiles $arg"
4199e169010aSmrg	    else
4200e169010aSmrg	      dlprefiles="$dlprefiles $arg"
4201e169010aSmrg	    fi
4202e169010aSmrg	    prev=
4203e169010aSmrg	    continue
42047914d74bSmrg	    ;;
42057914d74bSmrg	  esac
4206e169010aSmrg	  ;;
4207e169010aSmrg	expsyms)
4208e169010aSmrg	  export_symbols="$arg"
4209e169010aSmrg	  test -f "$arg" \
4210e169010aSmrg	    || func_fatal_error "symbol file \`$arg' does not exist"
4211e169010aSmrg	  prev=
4212e169010aSmrg	  continue
4213e169010aSmrg	  ;;
4214e169010aSmrg	expsyms_regex)
4215e169010aSmrg	  export_symbols_regex="$arg"
4216e169010aSmrg	  prev=
4217e169010aSmrg	  continue
4218e169010aSmrg	  ;;
4219e169010aSmrg	framework)
4220e169010aSmrg	  case $host in
4221e169010aSmrg	    *-*-darwin*)
4222e169010aSmrg	      case "$deplibs " in
4223e169010aSmrg		*" $qarg.ltframework "*) ;;
4224e169010aSmrg		*) deplibs="$deplibs $qarg.ltframework" # this is fixed later
4225e169010aSmrg		   ;;
4226e169010aSmrg	      esac
4227e169010aSmrg	      ;;
4228e169010aSmrg	  esac
4229e169010aSmrg	  prev=
4230e169010aSmrg	  continue
4231e169010aSmrg	  ;;
4232e169010aSmrg	inst_prefix)
4233e169010aSmrg	  inst_prefix_dir="$arg"
4234e169010aSmrg	  prev=
4235e169010aSmrg	  continue
4236e169010aSmrg	  ;;
4237e169010aSmrg	objectlist)
4238e169010aSmrg	  if test -f "$arg"; then
4239e169010aSmrg	    save_arg=$arg
4240e169010aSmrg	    moreargs=
4241e169010aSmrg	    for fil in `cat "$save_arg"`
4242e169010aSmrg	    do
4243e169010aSmrg#	      moreargs="$moreargs $fil"
4244e169010aSmrg	      arg=$fil
4245e169010aSmrg	      # A libtool-controlled object.
42467914d74bSmrg
4247e169010aSmrg	      # Check to see that this really is a libtool object.
4248e169010aSmrg	      if func_lalib_unsafe_p "$arg"; then
4249e169010aSmrg		pic_object=
4250e169010aSmrg		non_pic_object=
42517914d74bSmrg
4252e169010aSmrg		# Read the .lo file
4253e169010aSmrg		func_source "$arg"
42547914d74bSmrg
4255e169010aSmrg		if test -z "$pic_object" ||
4256e169010aSmrg		   test -z "$non_pic_object" ||
4257e169010aSmrg		   test "$pic_object" = none &&
4258e169010aSmrg		   test "$non_pic_object" = none; then
4259e169010aSmrg		  func_fatal_error "cannot find name of object for \`$arg'"
4260e169010aSmrg		fi
42617914d74bSmrg
4262e169010aSmrg		# Extract subdirectory from the argument.
4263e169010aSmrg		func_dirname "$arg" "/" ""
4264e169010aSmrg		xdir="$func_dirname_result"
42657914d74bSmrg
4266e169010aSmrg		if test "$pic_object" != none; then
4267e169010aSmrg		  # Prepend the subdirectory the object is found in.
4268e169010aSmrg		  pic_object="$xdir$pic_object"
42697914d74bSmrg
4270e169010aSmrg		  if test "$prev" = dlfiles; then
4271e169010aSmrg		    if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
4272e169010aSmrg		      dlfiles="$dlfiles $pic_object"
4273e169010aSmrg		      prev=
4274e169010aSmrg		      continue
4275e169010aSmrg		    else
4276e169010aSmrg		      # If libtool objects are unsupported, then we need to preload.
4277e169010aSmrg		      prev=dlprefiles
4278e169010aSmrg		    fi
4279e169010aSmrg		  fi
42807914d74bSmrg
4281e169010aSmrg		  # CHECK ME:  I think I busted this.  -Ossama
4282e169010aSmrg		  if test "$prev" = dlprefiles; then
4283e169010aSmrg		    # Preload the old-style object.
4284e169010aSmrg		    dlprefiles="$dlprefiles $pic_object"
4285e169010aSmrg		    prev=
4286e169010aSmrg		  fi
42877914d74bSmrg
4288e169010aSmrg		  # A PIC object.
4289e169010aSmrg		  func_append libobjs " $pic_object"
4290e169010aSmrg		  arg="$pic_object"
4291e169010aSmrg		fi
42927914d74bSmrg
4293e169010aSmrg		# Non-PIC object.
4294e169010aSmrg		if test "$non_pic_object" != none; then
4295e169010aSmrg		  # Prepend the subdirectory the object is found in.
4296e169010aSmrg		  non_pic_object="$xdir$non_pic_object"
42977914d74bSmrg
4298e169010aSmrg		  # A standard non-PIC object
4299e169010aSmrg		  func_append non_pic_objects " $non_pic_object"
4300e169010aSmrg		  if test -z "$pic_object" || test "$pic_object" = none ; then
4301e169010aSmrg		    arg="$non_pic_object"
4302e169010aSmrg		  fi
4303e169010aSmrg		else
4304e169010aSmrg		  # If the PIC object exists, use it instead.
4305e169010aSmrg		  # $xdir was prepended to $pic_object above.
4306e169010aSmrg		  non_pic_object="$pic_object"
4307e169010aSmrg		  func_append non_pic_objects " $non_pic_object"
4308e169010aSmrg		fi
4309e169010aSmrg	      else
4310e169010aSmrg		# Only an error if not doing a dry-run.
4311e169010aSmrg		if $opt_dry_run; then
4312e169010aSmrg		  # Extract subdirectory from the argument.
4313e169010aSmrg		  func_dirname "$arg" "/" ""
4314e169010aSmrg		  xdir="$func_dirname_result"
4315e169010aSmrg
4316e169010aSmrg		  func_lo2o "$arg"
4317e169010aSmrg		  pic_object=$xdir$objdir/$func_lo2o_result
4318e169010aSmrg		  non_pic_object=$xdir$func_lo2o_result
4319e169010aSmrg		  func_append libobjs " $pic_object"
4320e169010aSmrg		  func_append non_pic_objects " $non_pic_object"
4321e169010aSmrg	        else
4322e169010aSmrg		  func_fatal_error "\`$arg' is not a valid libtool object"
4323e169010aSmrg		fi
4324e169010aSmrg	      fi
4325e169010aSmrg	    done
4326e169010aSmrg	  else
4327e169010aSmrg	    func_fatal_error "link input file \`$arg' does not exist"
4328e169010aSmrg	  fi
4329e169010aSmrg	  arg=$save_arg
4330e169010aSmrg	  prev=
4331e169010aSmrg	  continue
4332e169010aSmrg	  ;;
4333e169010aSmrg	precious_regex)
4334e169010aSmrg	  precious_files_regex="$arg"
4335e169010aSmrg	  prev=
4336e169010aSmrg	  continue
4337e169010aSmrg	  ;;
4338e169010aSmrg	release)
4339e169010aSmrg	  release="-$arg"
4340e169010aSmrg	  prev=
4341e169010aSmrg	  continue
4342e169010aSmrg	  ;;
4343e169010aSmrg	rpath | xrpath)
4344e169010aSmrg	  # We need an absolute path.
4345e169010aSmrg	  case $arg in
4346e169010aSmrg	  [\\/]* | [A-Za-z]:[\\/]*) ;;
4347e169010aSmrg	  *)
4348e169010aSmrg	    func_fatal_error "only absolute run-paths are allowed"
4349e169010aSmrg	    ;;
4350e169010aSmrg	  esac
4351e169010aSmrg	  if test "$prev" = rpath; then
4352e169010aSmrg	    case "$rpath " in
4353e169010aSmrg	    *" $arg "*) ;;
4354e169010aSmrg	    *) rpath="$rpath $arg" ;;
4355e169010aSmrg	    esac
4356e169010aSmrg	  else
4357e169010aSmrg	    case "$xrpath " in
4358e169010aSmrg	    *" $arg "*) ;;
4359e169010aSmrg	    *) xrpath="$xrpath $arg" ;;
4360e169010aSmrg	    esac
4361e169010aSmrg	  fi
4362e169010aSmrg	  prev=
4363e169010aSmrg	  continue
4364e169010aSmrg	  ;;
4365e169010aSmrg	shrext)
4366e169010aSmrg	  shrext_cmds="$arg"
4367e169010aSmrg	  prev=
4368e169010aSmrg	  continue
4369e169010aSmrg	  ;;
4370e169010aSmrg	weak)
4371e169010aSmrg	  weak_libs="$weak_libs $arg"
4372e169010aSmrg	  prev=
4373e169010aSmrg	  continue
4374e169010aSmrg	  ;;
4375e169010aSmrg	xcclinker)
4376e169010aSmrg	  linker_flags="$linker_flags $qarg"
4377e169010aSmrg	  compiler_flags="$compiler_flags $qarg"
4378e169010aSmrg	  prev=
4379e169010aSmrg	  func_append compile_command " $qarg"
4380e169010aSmrg	  func_append finalize_command " $qarg"
4381e169010aSmrg	  continue
4382e169010aSmrg	  ;;
4383e169010aSmrg	xcompiler)
4384e169010aSmrg	  compiler_flags="$compiler_flags $qarg"
4385e169010aSmrg	  prev=
4386e169010aSmrg	  func_append compile_command " $qarg"
4387e169010aSmrg	  func_append finalize_command " $qarg"
4388e169010aSmrg	  continue
4389e169010aSmrg	  ;;
4390e169010aSmrg	xlinker)
4391e169010aSmrg	  linker_flags="$linker_flags $qarg"
4392e169010aSmrg	  compiler_flags="$compiler_flags $wl$qarg"
4393e169010aSmrg	  prev=
4394e169010aSmrg	  func_append compile_command " $wl$qarg"
4395e169010aSmrg	  func_append finalize_command " $wl$qarg"
4396e169010aSmrg	  continue
4397e169010aSmrg	  ;;
4398e169010aSmrg	*)
4399e169010aSmrg	  eval "$prev=\"\$arg\""
4400e169010aSmrg	  prev=
4401e169010aSmrg	  continue
4402e169010aSmrg	  ;;
44037914d74bSmrg	esac
4404e169010aSmrg      fi # test -n "$prev"
44057914d74bSmrg
4406e169010aSmrg      prevarg="$arg"
44077914d74bSmrg
4408e169010aSmrg      case $arg in
4409e169010aSmrg      -all-static)
4410e169010aSmrg	if test -n "$link_static_flag"; then
4411e169010aSmrg	  # See comment for -static flag below, for more details.
4412e169010aSmrg	  func_append compile_command " $link_static_flag"
4413e169010aSmrg	  func_append finalize_command " $link_static_flag"
4414e169010aSmrg	fi
4415e169010aSmrg	continue
4416e169010aSmrg	;;
44177914d74bSmrg
4418e169010aSmrg      -allow-undefined)
4419e169010aSmrg	# FIXME: remove this flag sometime in the future.
4420e169010aSmrg	func_fatal_error "\`-allow-undefined' must not be used because it is the default"
4421e169010aSmrg	;;
44227914d74bSmrg
4423e169010aSmrg      -avoid-version)
4424e169010aSmrg	avoid_version=yes
4425e169010aSmrg	continue
4426e169010aSmrg	;;
44277914d74bSmrg
4428e169010aSmrg      -dlopen)
4429e169010aSmrg	prev=dlfiles
4430e169010aSmrg	continue
4431e169010aSmrg	;;
44327914d74bSmrg
4433e169010aSmrg      -dlpreopen)
4434e169010aSmrg	prev=dlprefiles
4435e169010aSmrg	continue
4436e169010aSmrg	;;
44377914d74bSmrg
4438e169010aSmrg      -export-dynamic)
4439e169010aSmrg	export_dynamic=yes
4440e169010aSmrg	continue
4441e169010aSmrg	;;
44427914d74bSmrg
4443e169010aSmrg      -export-symbols | -export-symbols-regex)
4444e169010aSmrg	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
4445e169010aSmrg	  func_fatal_error "more than one -exported-symbols argument is not allowed"
4446e169010aSmrg	fi
4447e169010aSmrg	if test "X$arg" = "X-export-symbols"; then
4448e169010aSmrg	  prev=expsyms
4449e169010aSmrg	else
4450e169010aSmrg	  prev=expsyms_regex
4451e169010aSmrg	fi
4452e169010aSmrg	continue
4453e169010aSmrg	;;
44547914d74bSmrg
4455e169010aSmrg      -framework)
4456e169010aSmrg	prev=framework
4457e169010aSmrg	continue
4458e169010aSmrg	;;
44597914d74bSmrg
4460e169010aSmrg      -inst-prefix-dir)
4461e169010aSmrg	prev=inst_prefix
4462e169010aSmrg	continue
4463e169010aSmrg	;;
44647914d74bSmrg
4465e169010aSmrg      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
4466e169010aSmrg      # so, if we see these flags be careful not to treat them like -L
4467e169010aSmrg      -L[A-Z][A-Z]*:*)
4468e169010aSmrg	case $with_gcc/$host in
4469e169010aSmrg	no/*-*-irix* | /*-*-irix*)
4470e169010aSmrg	  func_append compile_command " $arg"
4471e169010aSmrg	  func_append finalize_command " $arg"
4472e169010aSmrg	  ;;
4473e169010aSmrg	esac
4474e169010aSmrg	continue
4475e169010aSmrg	;;
44767914d74bSmrg
4477e169010aSmrg      -L*)
4478e169010aSmrg	func_stripname '-L' '' "$arg"
4479e169010aSmrg	dir=$func_stripname_result
4480e169010aSmrg	if test -z "$dir"; then
4481e169010aSmrg	  if test "$#" -gt 0; then
4482e169010aSmrg	    func_fatal_error "require no space between \`-L' and \`$1'"
4483e169010aSmrg	  else
4484e169010aSmrg	    func_fatal_error "need path for \`-L' option"
4485e169010aSmrg	  fi
4486e169010aSmrg	fi
4487e169010aSmrg	# We need an absolute path.
4488e169010aSmrg	case $dir in
4489e169010aSmrg	[\\/]* | [A-Za-z]:[\\/]*) ;;
4490e169010aSmrg	*)
4491e169010aSmrg	  absdir=`cd "$dir" && pwd`
4492e169010aSmrg	  test -z "$absdir" && \
4493e169010aSmrg	    func_fatal_error "cannot determine absolute directory name of \`$dir'"
4494e169010aSmrg	  dir="$absdir"
4495e169010aSmrg	  ;;
4496e169010aSmrg	esac
4497e169010aSmrg	case "$deplibs " in
4498e169010aSmrg	*" -L$dir "*) ;;
4499e169010aSmrg	*)
4500e169010aSmrg	  deplibs="$deplibs -L$dir"
4501e169010aSmrg	  lib_search_path="$lib_search_path $dir"
4502e169010aSmrg	  ;;
4503e169010aSmrg	esac
4504e169010aSmrg	case $host in
4505e169010aSmrg	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
4506e169010aSmrg	  testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'`
4507e169010aSmrg	  case :$dllsearchpath: in
4508e169010aSmrg	  *":$dir:"*) ;;
4509e169010aSmrg	  ::) dllsearchpath=$dir;;
4510e169010aSmrg	  *) dllsearchpath="$dllsearchpath:$dir";;
4511e169010aSmrg	  esac
4512e169010aSmrg	  case :$dllsearchpath: in
4513e169010aSmrg	  *":$testbindir:"*) ;;
4514e169010aSmrg	  ::) dllsearchpath=$testbindir;;
4515e169010aSmrg	  *) dllsearchpath="$dllsearchpath:$testbindir";;
4516e169010aSmrg	  esac
4517e169010aSmrg	  ;;
4518e169010aSmrg	esac
4519e169010aSmrg	continue
4520e169010aSmrg	;;
45217914d74bSmrg
4522e169010aSmrg      -l*)
4523e169010aSmrg	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
4524e169010aSmrg	  case $host in
4525e169010aSmrg	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc*)
4526e169010aSmrg	    # These systems don't actually have a C or math library (as such)
4527e169010aSmrg	    continue
4528e169010aSmrg	    ;;
4529e169010aSmrg	  *-*-os2*)
4530e169010aSmrg	    # These systems don't actually have a C library (as such)
4531e169010aSmrg	    test "X$arg" = "X-lc" && continue
4532e169010aSmrg	    ;;
4533e169010aSmrg	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
4534e169010aSmrg	    # Do not include libc due to us having libc/libc_r.
4535e169010aSmrg	    test "X$arg" = "X-lc" && continue
4536e169010aSmrg	    ;;
4537e169010aSmrg	  *-*-rhapsody* | *-*-darwin1.[012])
4538e169010aSmrg	    # Rhapsody C and math libraries are in the System framework
4539e169010aSmrg	    deplibs="$deplibs System.ltframework"
4540e169010aSmrg	    continue
4541e169010aSmrg	    ;;
4542e169010aSmrg	  *-*-sco3.2v5* | *-*-sco5v6*)
4543e169010aSmrg	    # Causes problems with __ctype
4544e169010aSmrg	    test "X$arg" = "X-lc" && continue
4545e169010aSmrg	    ;;
4546e169010aSmrg	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
4547e169010aSmrg	    # Compiler inserts libc in the correct place for threads to work
4548e169010aSmrg	    test "X$arg" = "X-lc" && continue
4549e169010aSmrg	    ;;
4550e169010aSmrg	  esac
4551e169010aSmrg	elif test "X$arg" = "X-lc_r"; then
4552e169010aSmrg	 case $host in
4553e169010aSmrg	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
4554e169010aSmrg	   # Do not include libc_r directly, use -pthread flag.
4555e169010aSmrg	   continue
4556e169010aSmrg	   ;;
4557e169010aSmrg	 esac
4558e169010aSmrg	fi
4559e169010aSmrg	deplibs="$deplibs $arg"
4560e169010aSmrg	continue
4561e169010aSmrg	;;
45627914d74bSmrg
4563e169010aSmrg      -module)
4564e169010aSmrg	module=yes
4565e169010aSmrg	continue
4566e169010aSmrg	;;
45677914d74bSmrg
4568e169010aSmrg      # Tru64 UNIX uses -model [arg] to determine the layout of C++
4569e169010aSmrg      # classes, name mangling, and exception handling.
4570e169010aSmrg      # Darwin uses the -arch flag to determine output architecture.
4571e169010aSmrg      -model|-arch|-isysroot)
4572e169010aSmrg	compiler_flags="$compiler_flags $arg"
4573e169010aSmrg	func_append compile_command " $arg"
4574e169010aSmrg	func_append finalize_command " $arg"
4575e169010aSmrg	prev=xcompiler
4576e169010aSmrg	continue
4577e169010aSmrg	;;
45787914d74bSmrg
4579e169010aSmrg      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
4580e169010aSmrg	compiler_flags="$compiler_flags $arg"
4581e169010aSmrg	func_append compile_command " $arg"
4582e169010aSmrg	func_append finalize_command " $arg"
4583e169010aSmrg	case "$new_inherited_linker_flags " in
4584e169010aSmrg	    *" $arg "*) ;;
4585e169010aSmrg	    * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;;
4586e169010aSmrg	esac
4587e169010aSmrg	continue
4588e169010aSmrg	;;
45897914d74bSmrg
4590e169010aSmrg      -multi_module)
4591e169010aSmrg	single_module="${wl}-multi_module"
4592e169010aSmrg	continue
4593e169010aSmrg	;;
45947914d74bSmrg
4595e169010aSmrg      -no-fast-install)
4596e169010aSmrg	fast_install=no
4597e169010aSmrg	continue
4598e169010aSmrg	;;
45997914d74bSmrg
4600e169010aSmrg      -no-install)
4601e169010aSmrg	case $host in
4602e169010aSmrg	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
4603e169010aSmrg	  # The PATH hackery in wrapper scripts is required on Windows
4604e169010aSmrg	  # and Darwin in order for the loader to find any dlls it needs.
4605e169010aSmrg	  func_warning "\`-no-install' is ignored for $host"
4606e169010aSmrg	  func_warning "assuming \`-no-fast-install' instead"
4607e169010aSmrg	  fast_install=no
4608e169010aSmrg	  ;;
4609e169010aSmrg	*) no_install=yes ;;
4610e169010aSmrg	esac
4611e169010aSmrg	continue
4612e169010aSmrg	;;
46137914d74bSmrg
4614e169010aSmrg      -no-undefined)
4615e169010aSmrg	allow_undefined=no
4616e169010aSmrg	continue
4617e169010aSmrg	;;
46187914d74bSmrg
4619e169010aSmrg      -objectlist)
4620e169010aSmrg	prev=objectlist
4621e169010aSmrg	continue
4622e169010aSmrg	;;
46237914d74bSmrg
4624e169010aSmrg      -o) prev=output ;;
46257914d74bSmrg
4626e169010aSmrg      -precious-files-regex)
4627e169010aSmrg	prev=precious_regex
4628e169010aSmrg	continue
4629e169010aSmrg	;;
46307914d74bSmrg
4631e169010aSmrg      -release)
4632e169010aSmrg	prev=release
4633e169010aSmrg	continue
4634e169010aSmrg	;;
46357914d74bSmrg
4636e169010aSmrg      -rpath)
4637e169010aSmrg	prev=rpath
4638e169010aSmrg	continue
4639e169010aSmrg	;;
46407914d74bSmrg
4641e169010aSmrg      -R)
4642e169010aSmrg	prev=xrpath
4643e169010aSmrg	continue
4644e169010aSmrg	;;
46457914d74bSmrg
4646e169010aSmrg      -R*)
4647e169010aSmrg	func_stripname '-R' '' "$arg"
4648e169010aSmrg	dir=$func_stripname_result
4649e169010aSmrg	# We need an absolute path.
4650e169010aSmrg	case $dir in
4651e169010aSmrg	[\\/]* | [A-Za-z]:[\\/]*) ;;
4652e169010aSmrg	*)
4653e169010aSmrg	  func_fatal_error "only absolute run-paths are allowed"
4654e169010aSmrg	  ;;
4655e169010aSmrg	esac
4656e169010aSmrg	case "$xrpath " in
4657e169010aSmrg	*" $dir "*) ;;
4658e169010aSmrg	*) xrpath="$xrpath $dir" ;;
4659e169010aSmrg	esac
4660e169010aSmrg	continue
4661e169010aSmrg	;;
46627914d74bSmrg
4663e169010aSmrg      -shared)
4664e169010aSmrg	# The effects of -shared are defined in a previous loop.
4665e169010aSmrg	continue
4666e169010aSmrg	;;
46677914d74bSmrg
4668e169010aSmrg      -shrext)
4669e169010aSmrg	prev=shrext
4670e169010aSmrg	continue
4671e169010aSmrg	;;
46727914d74bSmrg
4673e169010aSmrg      -static | -static-libtool-libs)
4674e169010aSmrg	# The effects of -static are defined in a previous loop.
4675e169010aSmrg	# We used to do the same as -all-static on platforms that
4676e169010aSmrg	# didn't have a PIC flag, but the assumption that the effects
4677e169010aSmrg	# would be equivalent was wrong.  It would break on at least
4678e169010aSmrg	# Digital Unix and AIX.
4679e169010aSmrg	continue
4680e169010aSmrg	;;
46817914d74bSmrg
4682e169010aSmrg      -thread-safe)
4683e169010aSmrg	thread_safe=yes
4684e169010aSmrg	continue
4685e169010aSmrg	;;
46867914d74bSmrg
4687e169010aSmrg      -version-info)
4688e169010aSmrg	prev=vinfo
4689e169010aSmrg	continue
4690e169010aSmrg	;;
46917914d74bSmrg
4692e169010aSmrg      -version-number)
4693e169010aSmrg	prev=vinfo
4694e169010aSmrg	vinfo_number=yes
4695e169010aSmrg	continue
4696e169010aSmrg	;;
46977914d74bSmrg
4698e169010aSmrg      -weak)
4699e169010aSmrg        prev=weak
4700e169010aSmrg	continue
4701e169010aSmrg	;;
47027914d74bSmrg
4703e169010aSmrg      -Wc,*)
4704e169010aSmrg	func_stripname '-Wc,' '' "$arg"
4705e169010aSmrg	args=$func_stripname_result
4706e169010aSmrg	arg=
4707e169010aSmrg	save_ifs="$IFS"; IFS=','
4708e169010aSmrg	for flag in $args; do
4709e169010aSmrg	  IFS="$save_ifs"
4710e169010aSmrg          func_quote_for_eval "$flag"
4711e169010aSmrg	  arg="$arg $wl$func_quote_for_eval_result"
4712e169010aSmrg	  compiler_flags="$compiler_flags $func_quote_for_eval_result"
4713e169010aSmrg	done
4714e169010aSmrg	IFS="$save_ifs"
4715e169010aSmrg	func_stripname ' ' '' "$arg"
4716e169010aSmrg	arg=$func_stripname_result
4717e169010aSmrg	;;
47187914d74bSmrg
4719e169010aSmrg      -Wl,*)
4720e169010aSmrg	func_stripname '-Wl,' '' "$arg"
4721e169010aSmrg	args=$func_stripname_result
4722e169010aSmrg	arg=
4723e169010aSmrg	save_ifs="$IFS"; IFS=','
4724e169010aSmrg	for flag in $args; do
4725e169010aSmrg	  IFS="$save_ifs"
4726e169010aSmrg          func_quote_for_eval "$flag"
4727e169010aSmrg	  arg="$arg $wl$func_quote_for_eval_result"
4728e169010aSmrg	  compiler_flags="$compiler_flags $wl$func_quote_for_eval_result"
4729e169010aSmrg	  linker_flags="$linker_flags $func_quote_for_eval_result"
4730e169010aSmrg	done
4731e169010aSmrg	IFS="$save_ifs"
4732e169010aSmrg	func_stripname ' ' '' "$arg"
4733e169010aSmrg	arg=$func_stripname_result
4734e169010aSmrg	;;
47357914d74bSmrg
4736e169010aSmrg      -Xcompiler)
4737e169010aSmrg	prev=xcompiler
4738e169010aSmrg	continue
4739e169010aSmrg	;;
47407914d74bSmrg
4741e169010aSmrg      -Xlinker)
4742e169010aSmrg	prev=xlinker
4743e169010aSmrg	continue
4744e169010aSmrg	;;
47457914d74bSmrg
4746e169010aSmrg      -XCClinker)
4747e169010aSmrg	prev=xcclinker
4748e169010aSmrg	continue
4749e169010aSmrg	;;
47507914d74bSmrg
4751e169010aSmrg      # -msg_* for osf cc
4752e169010aSmrg      -msg_*)
4753e169010aSmrg	func_quote_for_eval "$arg"
4754e169010aSmrg	arg="$func_quote_for_eval_result"
4755e169010aSmrg	;;
47567914d74bSmrg
4757e169010aSmrg      # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
4758e169010aSmrg      # -r[0-9][0-9]* specifies the processor on the SGI compiler
4759e169010aSmrg      # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
4760e169010aSmrg      # +DA*, +DD* enable 64-bit mode on the HP compiler
4761e169010aSmrg      # -q* pass through compiler args for the IBM compiler
4762e169010aSmrg      # -m*, -t[45]*, -txscale* pass through architecture-specific
4763e169010aSmrg      # compiler args for GCC
4764e169010aSmrg      # -F/path gives path to uninstalled frameworks, gcc on darwin
4765e169010aSmrg      # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC
4766e169010aSmrg      # @file GCC response files
4767e169010aSmrg      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
4768e169010aSmrg      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*)
4769e169010aSmrg        func_quote_for_eval "$arg"
4770e169010aSmrg	arg="$func_quote_for_eval_result"
4771e169010aSmrg        func_append compile_command " $arg"
4772e169010aSmrg        func_append finalize_command " $arg"
4773e169010aSmrg        compiler_flags="$compiler_flags $arg"
4774e169010aSmrg        continue
4775e169010aSmrg        ;;
47767914d74bSmrg
4777e169010aSmrg      # Some other compiler flag.
4778e169010aSmrg      -* | +*)
4779e169010aSmrg        func_quote_for_eval "$arg"
4780e169010aSmrg	arg="$func_quote_for_eval_result"
4781e169010aSmrg	;;
47827914d74bSmrg
4783e169010aSmrg      *.$objext)
4784e169010aSmrg	# A standard object.
4785e169010aSmrg	objs="$objs $arg"
4786e169010aSmrg	;;
4787e169010aSmrg
4788e169010aSmrg      *.lo)
4789e169010aSmrg	# A libtool-controlled object.
4790e169010aSmrg
4791e169010aSmrg	# Check to see that this really is a libtool object.
4792e169010aSmrg	if func_lalib_unsafe_p "$arg"; then
4793e169010aSmrg	  pic_object=
4794e169010aSmrg	  non_pic_object=
4795e169010aSmrg
4796e169010aSmrg	  # Read the .lo file
4797e169010aSmrg	  func_source "$arg"
4798e169010aSmrg
4799e169010aSmrg	  if test -z "$pic_object" ||
4800e169010aSmrg	     test -z "$non_pic_object" ||
4801e169010aSmrg	     test "$pic_object" = none &&
4802e169010aSmrg	     test "$non_pic_object" = none; then
4803e169010aSmrg	    func_fatal_error "cannot find name of object for \`$arg'"
4804e169010aSmrg	  fi
4805e169010aSmrg
4806e169010aSmrg	  # Extract subdirectory from the argument.
4807e169010aSmrg	  func_dirname "$arg" "/" ""
4808e169010aSmrg	  xdir="$func_dirname_result"
4809e169010aSmrg
4810e169010aSmrg	  if test "$pic_object" != none; then
4811e169010aSmrg	    # Prepend the subdirectory the object is found in.
4812e169010aSmrg	    pic_object="$xdir$pic_object"
4813e169010aSmrg
4814e169010aSmrg	    if test "$prev" = dlfiles; then
4815e169010aSmrg	      if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
4816e169010aSmrg		dlfiles="$dlfiles $pic_object"
4817e169010aSmrg		prev=
4818e169010aSmrg		continue
4819e169010aSmrg	      else
4820e169010aSmrg		# If libtool objects are unsupported, then we need to preload.
4821e169010aSmrg		prev=dlprefiles
4822e169010aSmrg	      fi
4823e169010aSmrg	    fi
4824e169010aSmrg
4825e169010aSmrg	    # CHECK ME:  I think I busted this.  -Ossama
4826e169010aSmrg	    if test "$prev" = dlprefiles; then
4827e169010aSmrg	      # Preload the old-style object.
4828e169010aSmrg	      dlprefiles="$dlprefiles $pic_object"
4829e169010aSmrg	      prev=
4830e169010aSmrg	    fi
4831e169010aSmrg
4832e169010aSmrg	    # A PIC object.
4833e169010aSmrg	    func_append libobjs " $pic_object"
4834e169010aSmrg	    arg="$pic_object"
4835e169010aSmrg	  fi
4836e169010aSmrg
4837e169010aSmrg	  # Non-PIC object.
4838e169010aSmrg	  if test "$non_pic_object" != none; then
4839e169010aSmrg	    # Prepend the subdirectory the object is found in.
4840e169010aSmrg	    non_pic_object="$xdir$non_pic_object"
4841e169010aSmrg
4842e169010aSmrg	    # A standard non-PIC object
4843e169010aSmrg	    func_append non_pic_objects " $non_pic_object"
4844e169010aSmrg	    if test -z "$pic_object" || test "$pic_object" = none ; then
4845e169010aSmrg	      arg="$non_pic_object"
4846e169010aSmrg	    fi
4847e169010aSmrg	  else
4848e169010aSmrg	    # If the PIC object exists, use it instead.
4849e169010aSmrg	    # $xdir was prepended to $pic_object above.
4850e169010aSmrg	    non_pic_object="$pic_object"
4851e169010aSmrg	    func_append non_pic_objects " $non_pic_object"
4852e169010aSmrg	  fi
4853e169010aSmrg	else
4854e169010aSmrg	  # Only an error if not doing a dry-run.
4855e169010aSmrg	  if $opt_dry_run; then
4856e169010aSmrg	    # Extract subdirectory from the argument.
4857e169010aSmrg	    func_dirname "$arg" "/" ""
4858e169010aSmrg	    xdir="$func_dirname_result"
4859e169010aSmrg
4860e169010aSmrg	    func_lo2o "$arg"
4861e169010aSmrg	    pic_object=$xdir$objdir/$func_lo2o_result
4862e169010aSmrg	    non_pic_object=$xdir$func_lo2o_result
4863e169010aSmrg	    func_append libobjs " $pic_object"
4864e169010aSmrg	    func_append non_pic_objects " $non_pic_object"
4865e169010aSmrg	  else
4866e169010aSmrg	    func_fatal_error "\`$arg' is not a valid libtool object"
4867e169010aSmrg	  fi
4868e169010aSmrg	fi
4869e169010aSmrg	;;
4870e169010aSmrg
4871e169010aSmrg      *.$libext)
4872e169010aSmrg	# An archive.
4873e169010aSmrg	deplibs="$deplibs $arg"
4874e169010aSmrg	old_deplibs="$old_deplibs $arg"
4875e169010aSmrg	continue
4876e169010aSmrg	;;
4877e169010aSmrg
4878e169010aSmrg      *.la)
4879e169010aSmrg	# A libtool-controlled library.
4880e169010aSmrg
4881e169010aSmrg	if test "$prev" = dlfiles; then
4882e169010aSmrg	  # This library was specified with -dlopen.
4883e169010aSmrg	  dlfiles="$dlfiles $arg"
4884e169010aSmrg	  prev=
4885e169010aSmrg	elif test "$prev" = dlprefiles; then
4886e169010aSmrg	  # The library was specified with -dlpreopen.
4887e169010aSmrg	  dlprefiles="$dlprefiles $arg"
4888e169010aSmrg	  prev=
4889e169010aSmrg	else
4890e169010aSmrg	  deplibs="$deplibs $arg"
4891e169010aSmrg	fi
4892e169010aSmrg	continue
4893e169010aSmrg	;;
4894e169010aSmrg
4895e169010aSmrg      # Some other compiler argument.
4896e169010aSmrg      *)
4897e169010aSmrg	# Unknown arguments in both finalize_command and compile_command need
4898e169010aSmrg	# to be aesthetically quoted because they are evaled later.
4899e169010aSmrg	func_quote_for_eval "$arg"
4900e169010aSmrg	arg="$func_quote_for_eval_result"
4901e169010aSmrg	;;
4902e169010aSmrg      esac # arg
4903e169010aSmrg
4904e169010aSmrg      # Now actually substitute the argument into the commands.
4905e169010aSmrg      if test -n "$arg"; then
4906e169010aSmrg	func_append compile_command " $arg"
4907e169010aSmrg	func_append finalize_command " $arg"
4908e169010aSmrg      fi
4909e169010aSmrg    done # argument parsing loop
4910e169010aSmrg
4911e169010aSmrg    test -n "$prev" && \
4912e169010aSmrg      func_fatal_help "the \`$prevarg' option requires an argument"
4913e169010aSmrg
4914e169010aSmrg    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
4915e169010aSmrg      eval arg=\"$export_dynamic_flag_spec\"
4916e169010aSmrg      func_append compile_command " $arg"
4917e169010aSmrg      func_append finalize_command " $arg"
4918e169010aSmrg    fi
4919e169010aSmrg
4920e169010aSmrg    oldlibs=
4921e169010aSmrg    # calculate the name of the file, without its directory
4922e169010aSmrg    func_basename "$output"
4923e169010aSmrg    outputname="$func_basename_result"
4924e169010aSmrg    libobjs_save="$libobjs"
4925e169010aSmrg
4926e169010aSmrg    if test -n "$shlibpath_var"; then
4927e169010aSmrg      # get the directories listed in $shlibpath_var
4928e169010aSmrg      eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
49297914d74bSmrg    else
4930e169010aSmrg      shlib_search_path=
49317914d74bSmrg    fi
4932e169010aSmrg    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
4933e169010aSmrg    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
49347914d74bSmrg
4935e169010aSmrg    func_dirname "$output" "/" ""
4936e169010aSmrg    output_objdir="$func_dirname_result$objdir"
4937e169010aSmrg    # Create the object directory.
4938e169010aSmrg    func_mkdir_p "$output_objdir"
49397914d74bSmrg
4940e169010aSmrg    # Determine the type of output
4941e169010aSmrg    case $output in
4942e169010aSmrg    "")
4943e169010aSmrg      func_fatal_help "you must specify an output file"
4944e169010aSmrg      ;;
4945e169010aSmrg    *.$libext) linkmode=oldlib ;;
4946e169010aSmrg    *.lo | *.$objext) linkmode=obj ;;
4947e169010aSmrg    *.la) linkmode=lib ;;
4948e169010aSmrg    *) linkmode=prog ;; # Anything else should be a program.
4949e169010aSmrg    esac
4950e169010aSmrg
4951e169010aSmrg    specialdeplibs=
4952e169010aSmrg
4953e169010aSmrg    libs=
4954e169010aSmrg    # Find all interdependent deplibs by searching for libraries
4955e169010aSmrg    # that are linked more than once (e.g. -la -lb -la)
4956e169010aSmrg    for deplib in $deplibs; do
4957e169010aSmrg      if $opt_duplicate_deps ; then
4958e169010aSmrg	case "$libs " in
4959e169010aSmrg	*" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
4960e169010aSmrg	esac
4961e169010aSmrg      fi
4962e169010aSmrg      libs="$libs $deplib"
4963e169010aSmrg    done
4964e169010aSmrg
4965e169010aSmrg    if test "$linkmode" = lib; then
4966e169010aSmrg      libs="$predeps $libs $compiler_lib_search_path $postdeps"
4967e169010aSmrg
4968e169010aSmrg      # Compute libraries that are listed more than once in $predeps
4969e169010aSmrg      # $postdeps and mark them as special (i.e., whose duplicates are
4970e169010aSmrg      # not to be eliminated).
4971e169010aSmrg      pre_post_deps=
4972e169010aSmrg      if $opt_duplicate_compiler_generated_deps; then
4973e169010aSmrg	for pre_post_dep in $predeps $postdeps; do
4974e169010aSmrg	  case "$pre_post_deps " in
4975e169010aSmrg	  *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
4976e169010aSmrg	  esac
4977e169010aSmrg	  pre_post_deps="$pre_post_deps $pre_post_dep"
4978e169010aSmrg	done
4979e169010aSmrg      fi
4980e169010aSmrg      pre_post_deps=
4981e169010aSmrg    fi
4982e169010aSmrg
4983e169010aSmrg    deplibs=
4984e169010aSmrg    newdependency_libs=
4985e169010aSmrg    newlib_search_path=
4986e169010aSmrg    need_relink=no # whether we're linking any uninstalled libtool libraries
4987e169010aSmrg    notinst_deplibs= # not-installed libtool libraries
4988e169010aSmrg    notinst_path= # paths that contain not-installed libtool libraries
4989e169010aSmrg
4990e169010aSmrg    case $linkmode in
4991e169010aSmrg    lib)
4992e169010aSmrg	passes="conv dlpreopen link"
4993e169010aSmrg	for file in $dlfiles $dlprefiles; do
4994e169010aSmrg	  case $file in
4995e169010aSmrg	  *.la) ;;
4996e169010aSmrg	  *)
4997e169010aSmrg	    func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
4998e169010aSmrg	    ;;
4999e169010aSmrg	  esac
5000e169010aSmrg	done
5001e169010aSmrg	;;
5002e169010aSmrg    prog)
5003e169010aSmrg	compile_deplibs=
5004e169010aSmrg	finalize_deplibs=
5005e169010aSmrg	alldeplibs=no
5006e169010aSmrg	newdlfiles=
5007e169010aSmrg	newdlprefiles=
5008e169010aSmrg	passes="conv scan dlopen dlpreopen link"
5009e169010aSmrg	;;
5010e169010aSmrg    *)  passes="conv"
5011e169010aSmrg	;;
5012e169010aSmrg    esac
5013e169010aSmrg
5014e169010aSmrg    for pass in $passes; do
5015e169010aSmrg      # The preopen pass in lib mode reverses $deplibs; put it back here
5016e169010aSmrg      # so that -L comes before libs that need it for instance...
5017e169010aSmrg      if test "$linkmode,$pass" = "lib,link"; then
5018e169010aSmrg	## FIXME: Find the place where the list is rebuilt in the wrong
5019e169010aSmrg	##        order, and fix it there properly
5020e169010aSmrg        tmp_deplibs=
5021e169010aSmrg	for deplib in $deplibs; do
5022e169010aSmrg	  tmp_deplibs="$deplib $tmp_deplibs"
5023e169010aSmrg	done
5024e169010aSmrg	deplibs="$tmp_deplibs"
5025e169010aSmrg      fi
5026e169010aSmrg
5027e169010aSmrg      if test "$linkmode,$pass" = "lib,link" ||
5028e169010aSmrg	 test "$linkmode,$pass" = "prog,scan"; then
5029e169010aSmrg	libs="$deplibs"
5030e169010aSmrg	deplibs=
5031e169010aSmrg      fi
5032e169010aSmrg      if test "$linkmode" = prog; then
5033e169010aSmrg	case $pass in
5034e169010aSmrg	dlopen) libs="$dlfiles" ;;
5035e169010aSmrg	dlpreopen) libs="$dlprefiles" ;;
5036e169010aSmrg	link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
5037e169010aSmrg	esac
5038e169010aSmrg      fi
5039e169010aSmrg      if test "$linkmode,$pass" = "lib,dlpreopen"; then
5040e169010aSmrg	# Collect and forward deplibs of preopened libtool libs
5041e169010aSmrg	for lib in $dlprefiles; do
5042e169010aSmrg	  # Ignore non-libtool-libs
5043e169010aSmrg	  dependency_libs=
5044e169010aSmrg	  case $lib in
5045e169010aSmrg	  *.la)	func_source "$lib" ;;
5046e169010aSmrg	  esac
5047e169010aSmrg
5048e169010aSmrg	  # Collect preopened libtool deplibs, except any this library
5049e169010aSmrg	  # has declared as weak libs
5050e169010aSmrg	  for deplib in $dependency_libs; do
5051e169010aSmrg            deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"`
5052e169010aSmrg	    case " $weak_libs " in
5053e169010aSmrg	    *" $deplib_base "*) ;;
5054e169010aSmrg	    *) deplibs="$deplibs $deplib" ;;
5055e169010aSmrg	    esac
5056e169010aSmrg	  done
5057e169010aSmrg	done
5058e169010aSmrg	libs="$dlprefiles"
5059e169010aSmrg      fi
5060e169010aSmrg      if test "$pass" = dlopen; then
5061e169010aSmrg	# Collect dlpreopened libraries
5062e169010aSmrg	save_deplibs="$deplibs"
5063e169010aSmrg	deplibs=
5064e169010aSmrg      fi
5065e169010aSmrg
5066e169010aSmrg      for deplib in $libs; do
5067e169010aSmrg	lib=
5068e169010aSmrg	found=no
5069e169010aSmrg	case $deplib in
5070e169010aSmrg	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
5071e169010aSmrg	  if test "$linkmode,$pass" = "prog,link"; then
5072e169010aSmrg	    compile_deplibs="$deplib $compile_deplibs"
5073e169010aSmrg	    finalize_deplibs="$deplib $finalize_deplibs"
5074e169010aSmrg	  else
5075e169010aSmrg	    compiler_flags="$compiler_flags $deplib"
5076e169010aSmrg	    if test "$linkmode" = lib ; then
5077e169010aSmrg		case "$new_inherited_linker_flags " in
5078e169010aSmrg		    *" $deplib "*) ;;
5079e169010aSmrg		    * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
5080e169010aSmrg		esac
5081e169010aSmrg	    fi
5082e169010aSmrg	  fi
5083e169010aSmrg	  continue
5084e169010aSmrg	  ;;
5085e169010aSmrg	-l*)
5086e169010aSmrg	  if test "$linkmode" != lib && test "$linkmode" != prog; then
5087e169010aSmrg	    func_warning "\`-l' is ignored for archives/objects"
5088e169010aSmrg	    continue
5089e169010aSmrg	  fi
5090e169010aSmrg	  func_stripname '-l' '' "$deplib"
5091e169010aSmrg	  name=$func_stripname_result
5092e169010aSmrg	  if test "$linkmode" = lib; then
5093e169010aSmrg	    searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
5094e169010aSmrg	  else
5095e169010aSmrg	    searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
5096e169010aSmrg	  fi
5097e169010aSmrg	  for searchdir in $searchdirs; do
5098e169010aSmrg	    for search_ext in .la $std_shrext .so .a; do
5099e169010aSmrg	      # Search the libtool library
5100e169010aSmrg	      lib="$searchdir/lib${name}${search_ext}"
5101e169010aSmrg	      if test -f "$lib"; then
5102e169010aSmrg		if test "$search_ext" = ".la"; then
5103e169010aSmrg		  found=yes
5104e169010aSmrg		else
5105e169010aSmrg		  found=no
5106e169010aSmrg		fi
5107e169010aSmrg		break 2
5108e169010aSmrg	      fi
5109e169010aSmrg	    done
5110e169010aSmrg	  done
5111e169010aSmrg	  if test "$found" != yes; then
5112e169010aSmrg	    # deplib doesn't seem to be a libtool library
5113e169010aSmrg	    if test "$linkmode,$pass" = "prog,link"; then
5114e169010aSmrg	      compile_deplibs="$deplib $compile_deplibs"
5115e169010aSmrg	      finalize_deplibs="$deplib $finalize_deplibs"
5116e169010aSmrg	    else
5117e169010aSmrg	      deplibs="$deplib $deplibs"
5118e169010aSmrg	      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
5119e169010aSmrg	    fi
5120e169010aSmrg	    continue
5121e169010aSmrg	  else # deplib is a libtool library
5122e169010aSmrg	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
5123e169010aSmrg	    # We need to do some special things here, and not later.
5124e169010aSmrg	    if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
5125e169010aSmrg	      case " $predeps $postdeps " in
5126e169010aSmrg	      *" $deplib "*)
5127e169010aSmrg		if func_lalib_p "$lib"; then
5128e169010aSmrg		  library_names=
5129e169010aSmrg		  old_library=
5130e169010aSmrg		  func_source "$lib"
5131e169010aSmrg		  for l in $old_library $library_names; do
5132e169010aSmrg		    ll="$l"
5133e169010aSmrg		  done
5134e169010aSmrg		  if test "X$ll" = "X$old_library" ; then # only static version available
5135e169010aSmrg		    found=no
5136e169010aSmrg		    func_dirname "$lib" "" "."
5137e169010aSmrg		    ladir="$func_dirname_result"
5138e169010aSmrg		    lib=$ladir/$old_library
5139e169010aSmrg		    if test "$linkmode,$pass" = "prog,link"; then
5140e169010aSmrg		      compile_deplibs="$deplib $compile_deplibs"
5141e169010aSmrg		      finalize_deplibs="$deplib $finalize_deplibs"
5142e169010aSmrg		    else
5143e169010aSmrg		      deplibs="$deplib $deplibs"
5144e169010aSmrg		      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
5145e169010aSmrg		    fi
5146e169010aSmrg		    continue
5147e169010aSmrg		  fi
5148e169010aSmrg		fi
5149e169010aSmrg		;;
5150e169010aSmrg	      *) ;;
5151e169010aSmrg	      esac
5152e169010aSmrg	    fi
5153e169010aSmrg	  fi
5154e169010aSmrg	  ;; # -l
5155e169010aSmrg	*.ltframework)
5156e169010aSmrg	  if test "$linkmode,$pass" = "prog,link"; then
5157e169010aSmrg	    compile_deplibs="$deplib $compile_deplibs"
5158e169010aSmrg	    finalize_deplibs="$deplib $finalize_deplibs"
5159e169010aSmrg	  else
5160e169010aSmrg	    deplibs="$deplib $deplibs"
5161e169010aSmrg	    if test "$linkmode" = lib ; then
5162e169010aSmrg		case "$new_inherited_linker_flags " in
5163e169010aSmrg		    *" $deplib "*) ;;
5164e169010aSmrg		    * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
5165e169010aSmrg		esac
5166e169010aSmrg	    fi
5167e169010aSmrg	  fi
5168e169010aSmrg	  continue
5169e169010aSmrg	  ;;
5170e169010aSmrg	-L*)
5171e169010aSmrg	  case $linkmode in
5172e169010aSmrg	  lib)
5173e169010aSmrg	    deplibs="$deplib $deplibs"
5174e169010aSmrg	    test "$pass" = conv && continue
5175e169010aSmrg	    newdependency_libs="$deplib $newdependency_libs"
5176e169010aSmrg	    func_stripname '-L' '' "$deplib"
5177e169010aSmrg	    newlib_search_path="$newlib_search_path $func_stripname_result"
5178e169010aSmrg	    ;;
5179e169010aSmrg	  prog)
5180e169010aSmrg	    if test "$pass" = conv; then
5181e169010aSmrg	      deplibs="$deplib $deplibs"
5182e169010aSmrg	      continue
5183e169010aSmrg	    fi
5184e169010aSmrg	    if test "$pass" = scan; then
5185e169010aSmrg	      deplibs="$deplib $deplibs"
5186e169010aSmrg	    else
5187e169010aSmrg	      compile_deplibs="$deplib $compile_deplibs"
5188e169010aSmrg	      finalize_deplibs="$deplib $finalize_deplibs"
5189e169010aSmrg	    fi
5190e169010aSmrg	    func_stripname '-L' '' "$deplib"
5191e169010aSmrg	    newlib_search_path="$newlib_search_path $func_stripname_result"
5192e169010aSmrg	    ;;
5193e169010aSmrg	  *)
5194e169010aSmrg	    func_warning "\`-L' is ignored for archives/objects"
5195e169010aSmrg	    ;;
5196e169010aSmrg	  esac # linkmode
5197e169010aSmrg	  continue
5198e169010aSmrg	  ;; # -L
5199e169010aSmrg	-R*)
5200e169010aSmrg	  if test "$pass" = link; then
5201e169010aSmrg	    func_stripname '-R' '' "$deplib"
5202e169010aSmrg	    dir=$func_stripname_result
5203e169010aSmrg	    # Make sure the xrpath contains only unique directories.
5204e169010aSmrg	    case "$xrpath " in
5205e169010aSmrg	    *" $dir "*) ;;
5206e169010aSmrg	    *) xrpath="$xrpath $dir" ;;
5207e169010aSmrg	    esac
5208e169010aSmrg	  fi
5209e169010aSmrg	  deplibs="$deplib $deplibs"
5210e169010aSmrg	  continue
5211e169010aSmrg	  ;;
5212e169010aSmrg	*.la) lib="$deplib" ;;
5213e169010aSmrg	*.$libext)
5214e169010aSmrg	  if test "$pass" = conv; then
5215e169010aSmrg	    deplibs="$deplib $deplibs"
5216e169010aSmrg	    continue
5217e169010aSmrg	  fi
5218e169010aSmrg	  case $linkmode in
5219e169010aSmrg	  lib)
5220e169010aSmrg	    # Linking convenience modules into shared libraries is allowed,
5221e169010aSmrg	    # but linking other static libraries is non-portable.
5222e169010aSmrg	    case " $dlpreconveniencelibs " in
5223e169010aSmrg	    *" $deplib "*) ;;
5224e169010aSmrg	    *)
5225e169010aSmrg	      valid_a_lib=no
5226e169010aSmrg	      case $deplibs_check_method in
5227e169010aSmrg		match_pattern*)
5228e169010aSmrg		  set dummy $deplibs_check_method; shift
5229e169010aSmrg		  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
5230e169010aSmrg		  if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \
5231e169010aSmrg		    | $EGREP "$match_pattern_regex" > /dev/null; then
5232e169010aSmrg		    valid_a_lib=yes
5233e169010aSmrg		  fi
5234e169010aSmrg		;;
5235e169010aSmrg		pass_all)
5236e169010aSmrg		  valid_a_lib=yes
5237e169010aSmrg		;;
5238e169010aSmrg	      esac
5239e169010aSmrg	      if test "$valid_a_lib" != yes; then
5240e169010aSmrg		$ECHO
5241e169010aSmrg		$ECHO "*** Warning: Trying to link with static lib archive $deplib."
5242e169010aSmrg		$ECHO "*** I have the capability to make that library automatically link in when"
5243e169010aSmrg		$ECHO "*** you link to this library.  But I can only do this if you have a"
5244e169010aSmrg		$ECHO "*** shared version of the library, which you do not appear to have"
5245e169010aSmrg		$ECHO "*** because the file extensions .$libext of this argument makes me believe"
5246e169010aSmrg		$ECHO "*** that it is just a static archive that I should not use here."
5247e169010aSmrg	      else
5248e169010aSmrg		$ECHO
5249e169010aSmrg		$ECHO "*** Warning: Linking the shared library $output against the"
5250e169010aSmrg		$ECHO "*** static library $deplib is not portable!"
5251e169010aSmrg		deplibs="$deplib $deplibs"
5252e169010aSmrg	      fi
5253e169010aSmrg	      ;;
5254e169010aSmrg	    esac
5255e169010aSmrg	    continue
5256e169010aSmrg	    ;;
5257e169010aSmrg	  prog)
5258e169010aSmrg	    if test "$pass" != link; then
5259e169010aSmrg	      deplibs="$deplib $deplibs"
5260e169010aSmrg	    else
5261e169010aSmrg	      compile_deplibs="$deplib $compile_deplibs"
5262e169010aSmrg	      finalize_deplibs="$deplib $finalize_deplibs"
5263e169010aSmrg	    fi
5264e169010aSmrg	    continue
5265e169010aSmrg	    ;;
5266e169010aSmrg	  esac # linkmode
5267e169010aSmrg	  ;; # *.$libext
5268e169010aSmrg	*.lo | *.$objext)
5269e169010aSmrg	  if test "$pass" = conv; then
5270e169010aSmrg	    deplibs="$deplib $deplibs"
5271e169010aSmrg	  elif test "$linkmode" = prog; then
5272e169010aSmrg	    if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
5273e169010aSmrg	      # If there is no dlopen support or we're linking statically,
5274e169010aSmrg	      # we need to preload.
5275e169010aSmrg	      newdlprefiles="$newdlprefiles $deplib"
5276e169010aSmrg	      compile_deplibs="$deplib $compile_deplibs"
5277e169010aSmrg	      finalize_deplibs="$deplib $finalize_deplibs"
5278e169010aSmrg	    else
5279e169010aSmrg	      newdlfiles="$newdlfiles $deplib"
5280e169010aSmrg	    fi
5281e169010aSmrg	  fi
5282e169010aSmrg	  continue
5283e169010aSmrg	  ;;
5284e169010aSmrg	%DEPLIBS%)
5285e169010aSmrg	  alldeplibs=yes
5286e169010aSmrg	  continue
5287e169010aSmrg	  ;;
5288e169010aSmrg	esac # case $deplib
5289e169010aSmrg
5290e169010aSmrg	if test "$found" = yes || test -f "$lib"; then :
5291e169010aSmrg	else
5292e169010aSmrg	  func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
5293e169010aSmrg	fi
5294e169010aSmrg
5295e169010aSmrg	# Check to see that this really is a libtool archive.
5296e169010aSmrg	func_lalib_unsafe_p "$lib" \
5297e169010aSmrg	  || func_fatal_error "\`$lib' is not a valid libtool archive"
5298e169010aSmrg
5299e169010aSmrg	func_dirname "$lib" "" "."
5300e169010aSmrg	ladir="$func_dirname_result"
5301e169010aSmrg
5302e169010aSmrg	dlname=
5303e169010aSmrg	dlopen=
5304e169010aSmrg	dlpreopen=
5305e169010aSmrg	libdir=
5306e169010aSmrg	library_names=
5307e169010aSmrg	old_library=
5308e169010aSmrg	inherited_linker_flags=
5309e169010aSmrg	# If the library was installed with an old release of libtool,
5310e169010aSmrg	# it will not redefine variables installed, or shouldnotlink
5311e169010aSmrg	installed=yes
5312e169010aSmrg	shouldnotlink=no
5313e169010aSmrg	avoidtemprpath=
5314e169010aSmrg
5315e169010aSmrg
5316e169010aSmrg	# Read the .la file
5317e169010aSmrg	func_source "$lib"
5318e169010aSmrg
5319e169010aSmrg	# Convert "-framework foo" to "foo.ltframework"
5320e169010aSmrg	if test -n "$inherited_linker_flags"; then
5321e169010aSmrg	  tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'`
5322e169010aSmrg	  for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
5323e169010aSmrg	    case " $new_inherited_linker_flags " in
5324e169010aSmrg	      *" $tmp_inherited_linker_flag "*) ;;
5325e169010aSmrg	      *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";;
5326e169010aSmrg	    esac
5327e169010aSmrg	  done
5328e169010aSmrg	fi
5329e169010aSmrg	dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
5330e169010aSmrg	if test "$linkmode,$pass" = "lib,link" ||
5331e169010aSmrg	   test "$linkmode,$pass" = "prog,scan" ||
5332e169010aSmrg	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then
5333e169010aSmrg	  test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
5334e169010aSmrg	  test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
5335e169010aSmrg	fi
5336e169010aSmrg
5337e169010aSmrg	if test "$pass" = conv; then
5338e169010aSmrg	  # Only check for convenience libraries
5339e169010aSmrg	  deplibs="$lib $deplibs"
5340e169010aSmrg	  if test -z "$libdir"; then
5341e169010aSmrg	    if test -z "$old_library"; then
5342e169010aSmrg	      func_fatal_error "cannot find name of link library for \`$lib'"
5343e169010aSmrg	    fi
5344e169010aSmrg	    # It is a libtool convenience library, so add in its objects.
5345e169010aSmrg	    convenience="$convenience $ladir/$objdir/$old_library"
5346e169010aSmrg	    old_convenience="$old_convenience $ladir/$objdir/$old_library"
5347e169010aSmrg	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
5348e169010aSmrg	    func_fatal_error "\`$lib' is not a convenience library"
5349e169010aSmrg	  fi
5350e169010aSmrg	  tmp_libs=
5351e169010aSmrg	  for deplib in $dependency_libs; do
5352e169010aSmrg	    deplibs="$deplib $deplibs"
5353e169010aSmrg	    if $opt_duplicate_deps ; then
5354e169010aSmrg	      case "$tmp_libs " in
5355e169010aSmrg	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
5356e169010aSmrg	      esac
5357e169010aSmrg	    fi
5358e169010aSmrg	    tmp_libs="$tmp_libs $deplib"
5359e169010aSmrg	  done
5360e169010aSmrg	  continue
5361e169010aSmrg	fi # $pass = conv
5362e169010aSmrg
5363e169010aSmrg
5364e169010aSmrg	# Get the name of the library we link against.
5365e169010aSmrg	linklib=
5366e169010aSmrg	for l in $old_library $library_names; do
5367e169010aSmrg	  linklib="$l"
5368e169010aSmrg	done
5369e169010aSmrg	if test -z "$linklib"; then
5370e169010aSmrg	  func_fatal_error "cannot find name of link library for \`$lib'"
5371e169010aSmrg	fi
5372e169010aSmrg
5373e169010aSmrg	# This library was specified with -dlopen.
5374e169010aSmrg	if test "$pass" = dlopen; then
5375e169010aSmrg	  if test -z "$libdir"; then
5376e169010aSmrg	    func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
5377e169010aSmrg	  fi
5378e169010aSmrg	  if test -z "$dlname" ||
5379e169010aSmrg	     test "$dlopen_support" != yes ||
5380e169010aSmrg	     test "$build_libtool_libs" = no; then
5381e169010aSmrg	    # If there is no dlname, no dlopen support or we're linking
5382e169010aSmrg	    # statically, we need to preload.  We also need to preload any
5383e169010aSmrg	    # dependent libraries so libltdl's deplib preloader doesn't
5384e169010aSmrg	    # bomb out in the load deplibs phase.
5385e169010aSmrg	    dlprefiles="$dlprefiles $lib $dependency_libs"
5386e169010aSmrg	  else
5387e169010aSmrg	    newdlfiles="$newdlfiles $lib"
5388e169010aSmrg	  fi
5389e169010aSmrg	  continue
5390e169010aSmrg	fi # $pass = dlopen
5391e169010aSmrg
5392e169010aSmrg	# We need an absolute path.
5393e169010aSmrg	case $ladir in
5394e169010aSmrg	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
5395e169010aSmrg	*)
5396e169010aSmrg	  abs_ladir=`cd "$ladir" && pwd`
5397e169010aSmrg	  if test -z "$abs_ladir"; then
5398e169010aSmrg	    func_warning "cannot determine absolute directory name of \`$ladir'"
5399e169010aSmrg	    func_warning "passing it literally to the linker, although it might fail"
5400e169010aSmrg	    abs_ladir="$ladir"
5401e169010aSmrg	  fi
5402e169010aSmrg	  ;;
5403e169010aSmrg	esac
5404e169010aSmrg	func_basename "$lib"
5405e169010aSmrg	laname="$func_basename_result"
5406e169010aSmrg
5407e169010aSmrg	# Find the relevant object directory and library name.
5408e169010aSmrg	if test "X$installed" = Xyes; then
5409e169010aSmrg	  if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
5410e169010aSmrg	    func_warning "library \`$lib' was moved."
5411e169010aSmrg	    dir="$ladir"
5412e169010aSmrg	    absdir="$abs_ladir"
5413e169010aSmrg	    libdir="$abs_ladir"
5414e169010aSmrg	  else
5415e169010aSmrg	    dir="$libdir"
5416e169010aSmrg	    absdir="$libdir"
5417e169010aSmrg	  fi
5418e169010aSmrg	  test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
5419e169010aSmrg	else
5420e169010aSmrg	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
5421e169010aSmrg	    dir="$ladir"
5422e169010aSmrg	    absdir="$abs_ladir"
5423e169010aSmrg	    # Remove this search path later
5424e169010aSmrg	    notinst_path="$notinst_path $abs_ladir"
5425e169010aSmrg	  else
5426e169010aSmrg	    dir="$ladir/$objdir"
5427e169010aSmrg	    absdir="$abs_ladir/$objdir"
5428e169010aSmrg	    # Remove this search path later
5429e169010aSmrg	    notinst_path="$notinst_path $abs_ladir"
5430e169010aSmrg	  fi
5431e169010aSmrg	fi # $installed = yes
5432e169010aSmrg	func_stripname 'lib' '.la' "$laname"
5433e169010aSmrg	name=$func_stripname_result
5434e169010aSmrg
5435e169010aSmrg	# This library was specified with -dlpreopen.
5436e169010aSmrg	if test "$pass" = dlpreopen; then
5437e169010aSmrg	  if test -z "$libdir" && test "$linkmode" = prog; then
5438e169010aSmrg	    func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
5439e169010aSmrg	  fi
5440e169010aSmrg	  # Prefer using a static library (so that no silly _DYNAMIC symbols
5441e169010aSmrg	  # are required to link).
5442e169010aSmrg	  if test -n "$old_library"; then
5443e169010aSmrg	    newdlprefiles="$newdlprefiles $dir/$old_library"
5444e169010aSmrg	    # Keep a list of preopened convenience libraries to check
5445e169010aSmrg	    # that they are being used correctly in the link pass.
5446e169010aSmrg	    test -z "$libdir" && \
5447e169010aSmrg		dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library"
5448e169010aSmrg	  # Otherwise, use the dlname, so that lt_dlopen finds it.
5449e169010aSmrg	  elif test -n "$dlname"; then
5450e169010aSmrg	    newdlprefiles="$newdlprefiles $dir/$dlname"
5451e169010aSmrg	  else
5452e169010aSmrg	    newdlprefiles="$newdlprefiles $dir/$linklib"
5453e169010aSmrg	  fi
5454e169010aSmrg	fi # $pass = dlpreopen
5455e169010aSmrg
5456e169010aSmrg	if test -z "$libdir"; then
5457e169010aSmrg	  # Link the convenience library
5458e169010aSmrg	  if test "$linkmode" = lib; then
5459e169010aSmrg	    deplibs="$dir/$old_library $deplibs"
5460e169010aSmrg	  elif test "$linkmode,$pass" = "prog,link"; then
5461e169010aSmrg	    compile_deplibs="$dir/$old_library $compile_deplibs"
5462e169010aSmrg	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
5463e169010aSmrg	  else
5464e169010aSmrg	    deplibs="$lib $deplibs" # used for prog,scan pass
5465e169010aSmrg	  fi
5466e169010aSmrg	  continue
5467e169010aSmrg	fi
5468e169010aSmrg
5469e169010aSmrg
5470e169010aSmrg	if test "$linkmode" = prog && test "$pass" != link; then
5471e169010aSmrg	  newlib_search_path="$newlib_search_path $ladir"
5472e169010aSmrg	  deplibs="$lib $deplibs"
5473e169010aSmrg
5474e169010aSmrg	  linkalldeplibs=no
5475e169010aSmrg	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
5476e169010aSmrg	     test "$build_libtool_libs" = no; then
5477e169010aSmrg	    linkalldeplibs=yes
5478e169010aSmrg	  fi
5479e169010aSmrg
5480e169010aSmrg	  tmp_libs=
5481e169010aSmrg	  for deplib in $dependency_libs; do
5482e169010aSmrg	    case $deplib in
5483e169010aSmrg	    -L*) func_stripname '-L' '' "$deplib"
5484e169010aSmrg	         newlib_search_path="$newlib_search_path $func_stripname_result"
5485e169010aSmrg		 ;;
5486e169010aSmrg	    esac
5487e169010aSmrg	    # Need to link against all dependency_libs?
5488e169010aSmrg	    if test "$linkalldeplibs" = yes; then
5489e169010aSmrg	      deplibs="$deplib $deplibs"
5490e169010aSmrg	    else
5491e169010aSmrg	      # Need to hardcode shared library paths
5492e169010aSmrg	      # or/and link against static libraries
5493e169010aSmrg	      newdependency_libs="$deplib $newdependency_libs"
5494e169010aSmrg	    fi
5495e169010aSmrg	    if $opt_duplicate_deps ; then
5496e169010aSmrg	      case "$tmp_libs " in
5497e169010aSmrg	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
5498e169010aSmrg	      esac
5499e169010aSmrg	    fi
5500e169010aSmrg	    tmp_libs="$tmp_libs $deplib"
5501e169010aSmrg	  done # for deplib
5502e169010aSmrg	  continue
5503e169010aSmrg	fi # $linkmode = prog...
5504e169010aSmrg
5505e169010aSmrg	if test "$linkmode,$pass" = "prog,link"; then
5506e169010aSmrg	  if test -n "$library_names" &&
5507e169010aSmrg	     { { test "$prefer_static_libs" = no ||
5508e169010aSmrg	         test "$prefer_static_libs,$installed" = "built,yes"; } ||
5509e169010aSmrg	       test -z "$old_library"; }; then
5510e169010aSmrg	    # We need to hardcode the library path
5511e169010aSmrg	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
5512e169010aSmrg	      # Make sure the rpath contains only unique directories.
5513e169010aSmrg	      case "$temp_rpath:" in
5514e169010aSmrg	      *"$absdir:"*) ;;
5515e169010aSmrg	      *) temp_rpath="$temp_rpath$absdir:" ;;
5516e169010aSmrg	      esac
5517e169010aSmrg	    fi
5518e169010aSmrg
5519e169010aSmrg	    # Hardcode the library path.
5520e169010aSmrg	    # Skip directories that are in the system default run-time
5521e169010aSmrg	    # search path.
5522e169010aSmrg	    case " $sys_lib_dlsearch_path " in
5523e169010aSmrg	    *" $absdir "*) ;;
5524e169010aSmrg	    *)
5525e169010aSmrg	      case "$compile_rpath " in
5526e169010aSmrg	      *" $absdir "*) ;;
5527e169010aSmrg	      *) compile_rpath="$compile_rpath $absdir"
5528e169010aSmrg	      esac
5529e169010aSmrg	      ;;
5530e169010aSmrg	    esac
5531e169010aSmrg	    case " $sys_lib_dlsearch_path " in
5532e169010aSmrg	    *" $libdir "*) ;;
5533e169010aSmrg	    *)
5534e169010aSmrg	      case "$finalize_rpath " in
5535e169010aSmrg	      *" $libdir "*) ;;
5536e169010aSmrg	      *) finalize_rpath="$finalize_rpath $libdir"
5537e169010aSmrg	      esac
5538e169010aSmrg	      ;;
5539e169010aSmrg	    esac
5540e169010aSmrg	  fi # $linkmode,$pass = prog,link...
5541e169010aSmrg
5542e169010aSmrg	  if test "$alldeplibs" = yes &&
5543e169010aSmrg	     { test "$deplibs_check_method" = pass_all ||
5544e169010aSmrg	       { test "$build_libtool_libs" = yes &&
5545e169010aSmrg		 test -n "$library_names"; }; }; then
5546e169010aSmrg	    # We only need to search for static libraries
5547e169010aSmrg	    continue
5548e169010aSmrg	  fi
5549e169010aSmrg	fi
5550e169010aSmrg
5551e169010aSmrg	link_static=no # Whether the deplib will be linked statically
5552e169010aSmrg	use_static_libs=$prefer_static_libs
5553e169010aSmrg	if test "$use_static_libs" = built && test "$installed" = yes; then
5554e169010aSmrg	  use_static_libs=no
5555e169010aSmrg	fi
5556e169010aSmrg	if test -n "$library_names" &&
5557e169010aSmrg	   { test "$use_static_libs" = no || test -z "$old_library"; }; then
5558e169010aSmrg	  case $host in
5559e169010aSmrg	  *cygwin* | *mingw* | *cegcc*)
5560e169010aSmrg	      # No point in relinking DLLs because paths are not encoded
5561e169010aSmrg	      notinst_deplibs="$notinst_deplibs $lib"
5562e169010aSmrg	      need_relink=no
5563e169010aSmrg	    ;;
5564e169010aSmrg	  *)
5565e169010aSmrg	    if test "$installed" = no; then
5566e169010aSmrg	      notinst_deplibs="$notinst_deplibs $lib"
5567e169010aSmrg	      need_relink=yes
5568e169010aSmrg	    fi
5569e169010aSmrg	    ;;
5570e169010aSmrg	  esac
5571e169010aSmrg	  # This is a shared library
5572e169010aSmrg
5573e169010aSmrg	  # Warn about portability, can't link against -module's on some
5574e169010aSmrg	  # systems (darwin).  Don't bleat about dlopened modules though!
5575e169010aSmrg	  dlopenmodule=""
5576e169010aSmrg	  for dlpremoduletest in $dlprefiles; do
5577e169010aSmrg	    if test "X$dlpremoduletest" = "X$lib"; then
5578e169010aSmrg	      dlopenmodule="$dlpremoduletest"
5579e169010aSmrg	      break
5580e169010aSmrg	    fi
5581e169010aSmrg	  done
5582e169010aSmrg	  if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
5583e169010aSmrg	    $ECHO
5584e169010aSmrg	    if test "$linkmode" = prog; then
5585e169010aSmrg	      $ECHO "*** Warning: Linking the executable $output against the loadable module"
5586e169010aSmrg	    else
5587e169010aSmrg	      $ECHO "*** Warning: Linking the shared library $output against the loadable module"
5588e169010aSmrg	    fi
5589e169010aSmrg	    $ECHO "*** $linklib is not portable!"
5590e169010aSmrg	  fi
5591e169010aSmrg	  if test "$linkmode" = lib &&
5592e169010aSmrg	     test "$hardcode_into_libs" = yes; then
5593e169010aSmrg	    # Hardcode the library path.
5594e169010aSmrg	    # Skip directories that are in the system default run-time
5595e169010aSmrg	    # search path.
5596e169010aSmrg	    case " $sys_lib_dlsearch_path " in
5597e169010aSmrg	    *" $absdir "*) ;;
5598e169010aSmrg	    *)
5599e169010aSmrg	      case "$compile_rpath " in
5600e169010aSmrg	      *" $absdir "*) ;;
5601e169010aSmrg	      *) compile_rpath="$compile_rpath $absdir"
5602e169010aSmrg	      esac
5603e169010aSmrg	      ;;
5604e169010aSmrg	    esac
5605e169010aSmrg	    case " $sys_lib_dlsearch_path " in
5606e169010aSmrg	    *" $libdir "*) ;;
5607e169010aSmrg	    *)
5608e169010aSmrg	      case "$finalize_rpath " in
5609e169010aSmrg	      *" $libdir "*) ;;
5610e169010aSmrg	      *) finalize_rpath="$finalize_rpath $libdir"
5611e169010aSmrg	      esac
5612e169010aSmrg	      ;;
5613e169010aSmrg	    esac
5614e169010aSmrg	  fi
5615e169010aSmrg
5616e169010aSmrg	  if test -n "$old_archive_from_expsyms_cmds"; then
5617e169010aSmrg	    # figure out the soname
5618e169010aSmrg	    set dummy $library_names
5619e169010aSmrg	    shift
5620e169010aSmrg	    realname="$1"
5621e169010aSmrg	    shift
5622e169010aSmrg	    libname=`eval "\\$ECHO \"$libname_spec\""`
5623e169010aSmrg	    # use dlname if we got it. it's perfectly good, no?
5624e169010aSmrg	    if test -n "$dlname"; then
5625e169010aSmrg	      soname="$dlname"
5626e169010aSmrg	    elif test -n "$soname_spec"; then
5627e169010aSmrg	      # bleh windows
5628e169010aSmrg	      case $host in
5629e169010aSmrg	      *cygwin* | mingw* | *cegcc*)
5630e169010aSmrg	        func_arith $current - $age
5631e169010aSmrg		major=$func_arith_result
5632e169010aSmrg		versuffix="-$major"
5633e169010aSmrg		;;
5634e169010aSmrg	      esac
5635e169010aSmrg	      eval soname=\"$soname_spec\"
5636e169010aSmrg	    else
5637e169010aSmrg	      soname="$realname"
5638e169010aSmrg	    fi
5639e169010aSmrg
5640e169010aSmrg	    # Make a new name for the extract_expsyms_cmds to use
5641e169010aSmrg	    soroot="$soname"
5642e169010aSmrg	    func_basename "$soroot"
5643e169010aSmrg	    soname="$func_basename_result"
5644e169010aSmrg	    func_stripname 'lib' '.dll' "$soname"
5645e169010aSmrg	    newlib=libimp-$func_stripname_result.a
5646e169010aSmrg
5647e169010aSmrg	    # If the library has no export list, then create one now
5648e169010aSmrg	    if test -f "$output_objdir/$soname-def"; then :
5649e169010aSmrg	    else
5650e169010aSmrg	      func_verbose "extracting exported symbol list from \`$soname'"
5651e169010aSmrg	      func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
5652e169010aSmrg	    fi
5653e169010aSmrg
5654e169010aSmrg	    # Create $newlib
5655e169010aSmrg	    if test -f "$output_objdir/$newlib"; then :; else
5656e169010aSmrg	      func_verbose "generating import library for \`$soname'"
5657e169010aSmrg	      func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
5658e169010aSmrg	    fi
5659e169010aSmrg	    # make sure the library variables are pointing to the new library
5660e169010aSmrg	    dir=$output_objdir
5661e169010aSmrg	    linklib=$newlib
5662e169010aSmrg	  fi # test -n "$old_archive_from_expsyms_cmds"
5663e169010aSmrg
5664e169010aSmrg	  if test "$linkmode" = prog || test "$mode" != relink; then
5665e169010aSmrg	    add_shlibpath=
5666e169010aSmrg	    add_dir=
5667e169010aSmrg	    add=
5668e169010aSmrg	    lib_linked=yes
5669e169010aSmrg	    case $hardcode_action in
5670e169010aSmrg	    immediate | unsupported)
5671e169010aSmrg	      if test "$hardcode_direct" = no; then
5672e169010aSmrg		add="$dir/$linklib"
5673e169010aSmrg		case $host in
5674e169010aSmrg		  *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
5675e169010aSmrg		  *-*-sysv4*uw2*) add_dir="-L$dir" ;;
5676e169010aSmrg		  *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
5677e169010aSmrg		    *-*-unixware7*) add_dir="-L$dir" ;;
5678e169010aSmrg		  *-*-darwin* )
5679e169010aSmrg		    # if the lib is a (non-dlopened) module then we can not
5680e169010aSmrg		    # link against it, someone is ignoring the earlier warnings
5681e169010aSmrg		    if /usr/bin/file -L $add 2> /dev/null |
5682e169010aSmrg			 $GREP ": [^:]* bundle" >/dev/null ; then
5683e169010aSmrg		      if test "X$dlopenmodule" != "X$lib"; then
5684e169010aSmrg			$ECHO "*** Warning: lib $linklib is a module, not a shared library"
5685e169010aSmrg			if test -z "$old_library" ; then
5686e169010aSmrg			  $ECHO
5687e169010aSmrg			  $ECHO "*** And there doesn't seem to be a static archive available"
5688e169010aSmrg			  $ECHO "*** The link will probably fail, sorry"
5689e169010aSmrg			else
5690e169010aSmrg			  add="$dir/$old_library"
5691e169010aSmrg			fi
5692e169010aSmrg		      elif test -n "$old_library"; then
5693e169010aSmrg			add="$dir/$old_library"
5694e169010aSmrg		      fi
5695e169010aSmrg		    fi
5696e169010aSmrg		esac
5697e169010aSmrg	      elif test "$hardcode_minus_L" = no; then
5698e169010aSmrg		case $host in
5699e169010aSmrg		*-*-sunos*) add_shlibpath="$dir" ;;
5700e169010aSmrg		esac
5701e169010aSmrg		add_dir="-L$dir"
5702e169010aSmrg		add="-l$name"
5703e169010aSmrg	      elif test "$hardcode_shlibpath_var" = no; then
5704e169010aSmrg		add_shlibpath="$dir"
5705e169010aSmrg		add="-l$name"
5706e169010aSmrg	      else
5707e169010aSmrg		lib_linked=no
5708e169010aSmrg	      fi
5709e169010aSmrg	      ;;
5710e169010aSmrg	    relink)
5711e169010aSmrg	      if test "$hardcode_direct" = yes &&
5712e169010aSmrg	         test "$hardcode_direct_absolute" = no; then
5713e169010aSmrg		add="$dir/$linklib"
5714e169010aSmrg	      elif test "$hardcode_minus_L" = yes; then
5715e169010aSmrg		add_dir="-L$dir"
5716e169010aSmrg		# Try looking first in the location we're being installed to.
5717e169010aSmrg		if test -n "$inst_prefix_dir"; then
5718e169010aSmrg		  case $libdir in
5719e169010aSmrg		    [\\/]*)
5720e169010aSmrg		      add_dir="$add_dir -L$inst_prefix_dir$libdir"
5721e169010aSmrg		      ;;
5722e169010aSmrg		  esac
5723e169010aSmrg		fi
5724e169010aSmrg		add="-l$name"
5725e169010aSmrg	      elif test "$hardcode_shlibpath_var" = yes; then
5726e169010aSmrg		add_shlibpath="$dir"
5727e169010aSmrg		add="-l$name"
5728e169010aSmrg	      else
5729e169010aSmrg		lib_linked=no
5730e169010aSmrg	      fi
5731e169010aSmrg	      ;;
5732e169010aSmrg	    *) lib_linked=no ;;
5733e169010aSmrg	    esac
5734e169010aSmrg
5735e169010aSmrg	    if test "$lib_linked" != yes; then
5736e169010aSmrg	      func_fatal_configuration "unsupported hardcode properties"
5737e169010aSmrg	    fi
5738e169010aSmrg
5739e169010aSmrg	    if test -n "$add_shlibpath"; then
5740e169010aSmrg	      case :$compile_shlibpath: in
5741e169010aSmrg	      *":$add_shlibpath:"*) ;;
5742e169010aSmrg	      *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
5743e169010aSmrg	      esac
5744e169010aSmrg	    fi
5745e169010aSmrg	    if test "$linkmode" = prog; then
5746e169010aSmrg	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
5747e169010aSmrg	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
5748e169010aSmrg	    else
5749e169010aSmrg	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
5750e169010aSmrg	      test -n "$add" && deplibs="$add $deplibs"
5751e169010aSmrg	      if test "$hardcode_direct" != yes &&
5752e169010aSmrg		 test "$hardcode_minus_L" != yes &&
5753e169010aSmrg		 test "$hardcode_shlibpath_var" = yes; then
5754e169010aSmrg		case :$finalize_shlibpath: in
5755e169010aSmrg		*":$libdir:"*) ;;
5756e169010aSmrg		*) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
5757e169010aSmrg		esac
5758e169010aSmrg	      fi
5759e169010aSmrg	    fi
5760e169010aSmrg	  fi
5761e169010aSmrg
5762e169010aSmrg	  if test "$linkmode" = prog || test "$mode" = relink; then
5763e169010aSmrg	    add_shlibpath=
5764e169010aSmrg	    add_dir=
5765e169010aSmrg	    add=
5766e169010aSmrg	    # Finalize command for both is simple: just hardcode it.
5767e169010aSmrg	    if test "$hardcode_direct" = yes &&
5768e169010aSmrg	       test "$hardcode_direct_absolute" = no; then
5769e169010aSmrg	      add="$libdir/$linklib"
5770e169010aSmrg	    elif test "$hardcode_minus_L" = yes; then
5771e169010aSmrg	      add_dir="-L$libdir"
5772e169010aSmrg	      add="-l$name"
5773e169010aSmrg	    elif test "$hardcode_shlibpath_var" = yes; then
5774e169010aSmrg	      case :$finalize_shlibpath: in
5775e169010aSmrg	      *":$libdir:"*) ;;
5776e169010aSmrg	      *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
5777e169010aSmrg	      esac
5778e169010aSmrg	      add="-l$name"
5779e169010aSmrg	    elif test "$hardcode_automatic" = yes; then
5780e169010aSmrg	      if test -n "$inst_prefix_dir" &&
5781e169010aSmrg		 test -f "$inst_prefix_dir$libdir/$linklib" ; then
5782e169010aSmrg		add="$inst_prefix_dir$libdir/$linklib"
5783e169010aSmrg	      else
5784e169010aSmrg		add="$libdir/$linklib"
5785e169010aSmrg	      fi
5786e169010aSmrg	    else
5787e169010aSmrg	      # We cannot seem to hardcode it, guess we'll fake it.
5788e169010aSmrg	      add_dir="-L$libdir"
5789e169010aSmrg	      # Try looking first in the location we're being installed to.
5790e169010aSmrg	      if test -n "$inst_prefix_dir"; then
5791e169010aSmrg		case $libdir in
5792e169010aSmrg		  [\\/]*)
5793e169010aSmrg		    add_dir="$add_dir -L$inst_prefix_dir$libdir"
5794e169010aSmrg		    ;;
5795e169010aSmrg		esac
5796e169010aSmrg	      fi
5797e169010aSmrg	      add="-l$name"
5798e169010aSmrg	    fi
5799e169010aSmrg
5800e169010aSmrg	    if test "$linkmode" = prog; then
5801e169010aSmrg	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
5802e169010aSmrg	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
5803e169010aSmrg	    else
5804e169010aSmrg	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
5805e169010aSmrg	      test -n "$add" && deplibs="$add $deplibs"
5806e169010aSmrg	    fi
5807e169010aSmrg	  fi
5808e169010aSmrg	elif test "$linkmode" = prog; then
5809e169010aSmrg	  # Here we assume that one of hardcode_direct or hardcode_minus_L
5810e169010aSmrg	  # is not unsupported.  This is valid on all known static and
5811e169010aSmrg	  # shared platforms.
5812e169010aSmrg	  if test "$hardcode_direct" != unsupported; then
5813e169010aSmrg	    test -n "$old_library" && linklib="$old_library"
5814e169010aSmrg	    compile_deplibs="$dir/$linklib $compile_deplibs"
5815e169010aSmrg	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
5816e169010aSmrg	  else
5817e169010aSmrg	    compile_deplibs="-l$name -L$dir $compile_deplibs"
5818e169010aSmrg	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
5819e169010aSmrg	  fi
5820e169010aSmrg	elif test "$build_libtool_libs" = yes; then
5821e169010aSmrg	  # Not a shared library
5822e169010aSmrg	  if test "$deplibs_check_method" != pass_all; then
5823e169010aSmrg	    # We're trying link a shared library against a static one
5824e169010aSmrg	    # but the system doesn't support it.
5825e169010aSmrg
5826e169010aSmrg	    # Just print a warning and add the library to dependency_libs so
5827e169010aSmrg	    # that the program can be linked against the static library.
5828e169010aSmrg	    $ECHO
5829e169010aSmrg	    $ECHO "*** Warning: This system can not link to static lib archive $lib."
5830e169010aSmrg	    $ECHO "*** I have the capability to make that library automatically link in when"
5831e169010aSmrg	    $ECHO "*** you link to this library.  But I can only do this if you have a"
5832e169010aSmrg	    $ECHO "*** shared version of the library, which you do not appear to have."
5833e169010aSmrg	    if test "$module" = yes; then
5834e169010aSmrg	      $ECHO "*** But as you try to build a module library, libtool will still create "
5835e169010aSmrg	      $ECHO "*** a static module, that should work as long as the dlopening application"
5836e169010aSmrg	      $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime."
5837e169010aSmrg	      if test -z "$global_symbol_pipe"; then
5838e169010aSmrg		$ECHO
5839e169010aSmrg		$ECHO "*** However, this would only work if libtool was able to extract symbol"
5840e169010aSmrg		$ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
5841e169010aSmrg		$ECHO "*** not find such a program.  So, this module is probably useless."
5842e169010aSmrg		$ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
5843e169010aSmrg	      fi
5844e169010aSmrg	      if test "$build_old_libs" = no; then
5845e169010aSmrg		build_libtool_libs=module
5846e169010aSmrg		build_old_libs=yes
5847e169010aSmrg	      else
5848e169010aSmrg		build_libtool_libs=no
5849e169010aSmrg	      fi
5850e169010aSmrg	    fi
5851e169010aSmrg	  else
5852e169010aSmrg	    deplibs="$dir/$old_library $deplibs"
5853e169010aSmrg	    link_static=yes
5854e169010aSmrg	  fi
5855e169010aSmrg	fi # link shared/static library?
5856e169010aSmrg
5857e169010aSmrg	if test "$linkmode" = lib; then
5858e169010aSmrg	  if test -n "$dependency_libs" &&
5859e169010aSmrg	     { test "$hardcode_into_libs" != yes ||
5860e169010aSmrg	       test "$build_old_libs" = yes ||
5861e169010aSmrg	       test "$link_static" = yes; }; then
5862e169010aSmrg	    # Extract -R from dependency_libs
5863e169010aSmrg	    temp_deplibs=
5864e169010aSmrg	    for libdir in $dependency_libs; do
5865e169010aSmrg	      case $libdir in
5866e169010aSmrg	      -R*) func_stripname '-R' '' "$libdir"
5867e169010aSmrg	           temp_xrpath=$func_stripname_result
5868e169010aSmrg		   case " $xrpath " in
5869e169010aSmrg		   *" $temp_xrpath "*) ;;
5870e169010aSmrg		   *) xrpath="$xrpath $temp_xrpath";;
5871e169010aSmrg		   esac;;
5872e169010aSmrg	      *) temp_deplibs="$temp_deplibs $libdir";;
5873e169010aSmrg	      esac
5874e169010aSmrg	    done
5875e169010aSmrg	    dependency_libs="$temp_deplibs"
5876e169010aSmrg	  fi
5877e169010aSmrg
5878e169010aSmrg	  newlib_search_path="$newlib_search_path $absdir"
5879e169010aSmrg	  # Link against this library
5880e169010aSmrg	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
5881e169010aSmrg	  # ... and its dependency_libs
5882e169010aSmrg	  tmp_libs=
5883e169010aSmrg	  for deplib in $dependency_libs; do
5884e169010aSmrg	    newdependency_libs="$deplib $newdependency_libs"
5885e169010aSmrg	    if $opt_duplicate_deps ; then
5886e169010aSmrg	      case "$tmp_libs " in
5887e169010aSmrg	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
5888e169010aSmrg	      esac
5889e169010aSmrg	    fi
5890e169010aSmrg	    tmp_libs="$tmp_libs $deplib"
5891e169010aSmrg	  done
5892e169010aSmrg
5893e169010aSmrg	  if test "$link_all_deplibs" != no; then
5894e169010aSmrg	    # Add the search paths of all dependency libraries
5895e169010aSmrg	    for deplib in $dependency_libs; do
5896e169010aSmrg	      case $deplib in
5897e169010aSmrg	      -L*) path="$deplib" ;;
5898e169010aSmrg	      *.la)
5899e169010aSmrg	        func_dirname "$deplib" "" "."
5900e169010aSmrg		dir="$func_dirname_result"
5901e169010aSmrg		# We need an absolute path.
5902e169010aSmrg		case $dir in
5903e169010aSmrg		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
5904e169010aSmrg		*)
5905e169010aSmrg		  absdir=`cd "$dir" && pwd`
5906e169010aSmrg		  if test -z "$absdir"; then
5907e169010aSmrg		    func_warning "cannot determine absolute directory name of \`$dir'"
5908e169010aSmrg		    absdir="$dir"
5909e169010aSmrg		  fi
5910e169010aSmrg		  ;;
5911e169010aSmrg		esac
5912e169010aSmrg		if $GREP "^installed=no" $deplib > /dev/null; then
5913e169010aSmrg		case $host in
5914e169010aSmrg		*-*-darwin*)
5915e169010aSmrg		  depdepl=
5916e169010aSmrg		  eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
5917e169010aSmrg		  if test -n "$deplibrary_names" ; then
5918e169010aSmrg		    for tmp in $deplibrary_names ; do
5919e169010aSmrg		      depdepl=$tmp
5920e169010aSmrg		    done
5921e169010aSmrg		    if test -f "$absdir/$objdir/$depdepl" ; then
5922e169010aSmrg		      depdepl="$absdir/$objdir/$depdepl"
5923e169010aSmrg		      darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
5924e169010aSmrg                      if test -z "$darwin_install_name"; then
5925e169010aSmrg                          darwin_install_name=`${OTOOL64} -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
5926e169010aSmrg                      fi
5927e169010aSmrg		      compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
5928e169010aSmrg		      linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}"
5929e169010aSmrg		      path=
5930e169010aSmrg		    fi
5931e169010aSmrg		  fi
5932e169010aSmrg		  ;;
5933e169010aSmrg		*)
5934e169010aSmrg		  path="-L$absdir/$objdir"
5935e169010aSmrg		  ;;
5936e169010aSmrg		esac
5937e169010aSmrg		else
5938e169010aSmrg		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
5939e169010aSmrg		  test -z "$libdir" && \
5940e169010aSmrg		    func_fatal_error "\`$deplib' is not a valid libtool archive"
5941e169010aSmrg		  test "$absdir" != "$libdir" && \
5942e169010aSmrg		    func_warning "\`$deplib' seems to be moved"
5943e169010aSmrg
5944e169010aSmrg		  path="-L$absdir"
5945e169010aSmrg		fi
5946e169010aSmrg		;;
5947e169010aSmrg	      esac
5948e169010aSmrg	      case " $deplibs " in
5949e169010aSmrg	      *" $path "*) ;;
5950e169010aSmrg	      *) deplibs="$path $deplibs" ;;
5951e169010aSmrg	      esac
5952e169010aSmrg	    done
5953e169010aSmrg	  fi # link_all_deplibs != no
5954e169010aSmrg	fi # linkmode = lib
5955e169010aSmrg      done # for deplib in $libs
5956e169010aSmrg      if test "$pass" = link; then
5957e169010aSmrg	if test "$linkmode" = "prog"; then
5958e169010aSmrg	  compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
5959e169010aSmrg	  finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
5960e169010aSmrg	else
5961e169010aSmrg	  compiler_flags="$compiler_flags "`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
5962e169010aSmrg	fi
5963e169010aSmrg      fi
5964e169010aSmrg      dependency_libs="$newdependency_libs"
5965e169010aSmrg      if test "$pass" = dlpreopen; then
5966e169010aSmrg	# Link the dlpreopened libraries before other libraries
5967e169010aSmrg	for deplib in $save_deplibs; do
5968e169010aSmrg	  deplibs="$deplib $deplibs"
5969e169010aSmrg	done
5970e169010aSmrg      fi
5971e169010aSmrg      if test "$pass" != dlopen; then
5972e169010aSmrg	if test "$pass" != conv; then
5973e169010aSmrg	  # Make sure lib_search_path contains only unique directories.
5974e169010aSmrg	  lib_search_path=
5975e169010aSmrg	  for dir in $newlib_search_path; do
5976e169010aSmrg	    case "$lib_search_path " in
5977e169010aSmrg	    *" $dir "*) ;;
5978e169010aSmrg	    *) lib_search_path="$lib_search_path $dir" ;;
5979e169010aSmrg	    esac
5980e169010aSmrg	  done
5981e169010aSmrg	  newlib_search_path=
5982e169010aSmrg	fi
5983e169010aSmrg
5984e169010aSmrg	if test "$linkmode,$pass" != "prog,link"; then
5985e169010aSmrg	  vars="deplibs"
5986e169010aSmrg	else
5987e169010aSmrg	  vars="compile_deplibs finalize_deplibs"
5988e169010aSmrg	fi
5989e169010aSmrg	for var in $vars dependency_libs; do
5990e169010aSmrg	  # Add libraries to $var in reverse order
5991e169010aSmrg	  eval tmp_libs=\"\$$var\"
5992e169010aSmrg	  new_libs=
5993e169010aSmrg	  for deplib in $tmp_libs; do
5994e169010aSmrg	    # FIXME: Pedantically, this is the right thing to do, so
5995e169010aSmrg	    #        that some nasty dependency loop isn't accidentally
5996e169010aSmrg	    #        broken:
5997e169010aSmrg	    #new_libs="$deplib $new_libs"
5998e169010aSmrg	    # Pragmatically, this seems to cause very few problems in
5999e169010aSmrg	    # practice:
6000e169010aSmrg	    case $deplib in
6001e169010aSmrg	    -L*) new_libs="$deplib $new_libs" ;;
6002e169010aSmrg	    -R*) ;;
6003e169010aSmrg	    *)
6004e169010aSmrg	      # And here is the reason: when a library appears more
6005e169010aSmrg	      # than once as an explicit dependence of a library, or
6006e169010aSmrg	      # is implicitly linked in more than once by the
6007e169010aSmrg	      # compiler, it is considered special, and multiple
6008e169010aSmrg	      # occurrences thereof are not removed.  Compare this
6009e169010aSmrg	      # with having the same library being listed as a
6010e169010aSmrg	      # dependency of multiple other libraries: in this case,
6011e169010aSmrg	      # we know (pedantically, we assume) the library does not
6012e169010aSmrg	      # need to be listed more than once, so we keep only the
6013e169010aSmrg	      # last copy.  This is not always right, but it is rare
6014e169010aSmrg	      # enough that we require users that really mean to play
6015e169010aSmrg	      # such unportable linking tricks to link the library
6016e169010aSmrg	      # using -Wl,-lname, so that libtool does not consider it
6017e169010aSmrg	      # for duplicate removal.
6018e169010aSmrg	      case " $specialdeplibs " in
6019e169010aSmrg	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
6020e169010aSmrg	      *)
6021e169010aSmrg		case " $new_libs " in
6022e169010aSmrg		*" $deplib "*) ;;
6023e169010aSmrg		*) new_libs="$deplib $new_libs" ;;
6024e169010aSmrg		esac
6025e169010aSmrg		;;
6026e169010aSmrg	      esac
6027e169010aSmrg	      ;;
6028e169010aSmrg	    esac
6029e169010aSmrg	  done
6030e169010aSmrg	  tmp_libs=
6031e169010aSmrg	  for deplib in $new_libs; do
6032e169010aSmrg	    case $deplib in
6033e169010aSmrg	    -L*)
6034e169010aSmrg	      case " $tmp_libs " in
6035e169010aSmrg	      *" $deplib "*) ;;
6036e169010aSmrg	      *) tmp_libs="$tmp_libs $deplib" ;;
6037e169010aSmrg	      esac
6038e169010aSmrg	      ;;
6039e169010aSmrg	    *) tmp_libs="$tmp_libs $deplib" ;;
6040e169010aSmrg	    esac
6041e169010aSmrg	  done
6042e169010aSmrg	  eval $var=\"$tmp_libs\"
6043e169010aSmrg	done # for var
6044e169010aSmrg      fi
6045e169010aSmrg      # Last step: remove runtime libs from dependency_libs
6046e169010aSmrg      # (they stay in deplibs)
6047e169010aSmrg      tmp_libs=
6048e169010aSmrg      for i in $dependency_libs ; do
6049e169010aSmrg	case " $predeps $postdeps $compiler_lib_search_path " in
6050e169010aSmrg	*" $i "*)
6051e169010aSmrg	  i=""
6052e169010aSmrg	  ;;
6053e169010aSmrg	esac
6054e169010aSmrg	if test -n "$i" ; then
6055e169010aSmrg	  tmp_libs="$tmp_libs $i"
6056e169010aSmrg	fi
6057e169010aSmrg      done
6058e169010aSmrg      dependency_libs=$tmp_libs
6059e169010aSmrg    done # for pass
6060e169010aSmrg    if test "$linkmode" = prog; then
6061e169010aSmrg      dlfiles="$newdlfiles"
6062e169010aSmrg    fi
6063e169010aSmrg    if test "$linkmode" = prog || test "$linkmode" = lib; then
6064e169010aSmrg      dlprefiles="$newdlprefiles"
6065e169010aSmrg    fi
6066e169010aSmrg
6067e169010aSmrg    case $linkmode in
6068e169010aSmrg    oldlib)
6069e169010aSmrg      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
6070e169010aSmrg	func_warning "\`-dlopen' is ignored for archives"
6071e169010aSmrg      fi
6072e169010aSmrg
6073e169010aSmrg      case " $deplibs" in
6074e169010aSmrg      *\ -l* | *\ -L*)
6075e169010aSmrg	func_warning "\`-l' and \`-L' are ignored for archives" ;;
6076e169010aSmrg      esac
6077e169010aSmrg
6078e169010aSmrg      test -n "$rpath" && \
6079e169010aSmrg	func_warning "\`-rpath' is ignored for archives"
6080e169010aSmrg
6081e169010aSmrg      test -n "$xrpath" && \
6082e169010aSmrg	func_warning "\`-R' is ignored for archives"
6083e169010aSmrg
6084e169010aSmrg      test -n "$vinfo" && \
6085e169010aSmrg	func_warning "\`-version-info/-version-number' is ignored for archives"
6086e169010aSmrg
6087e169010aSmrg      test -n "$release" && \
6088e169010aSmrg	func_warning "\`-release' is ignored for archives"
6089e169010aSmrg
6090e169010aSmrg      test -n "$export_symbols$export_symbols_regex" && \
6091e169010aSmrg	func_warning "\`-export-symbols' is ignored for archives"
6092e169010aSmrg
6093e169010aSmrg      # Now set the variables for building old libraries.
6094e169010aSmrg      build_libtool_libs=no
6095e169010aSmrg      oldlibs="$output"
6096e169010aSmrg      objs="$objs$old_deplibs"
6097e169010aSmrg      ;;
6098e169010aSmrg
6099e169010aSmrg    lib)
6100e169010aSmrg      # Make sure we only generate libraries of the form `libNAME.la'.
6101e169010aSmrg      case $outputname in
6102e169010aSmrg      lib*)
6103e169010aSmrg	func_stripname 'lib' '.la' "$outputname"
6104e169010aSmrg	name=$func_stripname_result
6105e169010aSmrg	eval shared_ext=\"$shrext_cmds\"
6106e169010aSmrg	eval libname=\"$libname_spec\"
6107e169010aSmrg	;;
6108e169010aSmrg      *)
6109e169010aSmrg	test "$module" = no && \
6110e169010aSmrg	  func_fatal_help "libtool library \`$output' must begin with \`lib'"
6111e169010aSmrg
6112e169010aSmrg	if test "$need_lib_prefix" != no; then
6113e169010aSmrg	  # Add the "lib" prefix for modules if required
6114e169010aSmrg	  func_stripname '' '.la' "$outputname"
6115e169010aSmrg	  name=$func_stripname_result
6116e169010aSmrg	  eval shared_ext=\"$shrext_cmds\"
6117e169010aSmrg	  eval libname=\"$libname_spec\"
6118e169010aSmrg	else
6119e169010aSmrg	  func_stripname '' '.la' "$outputname"
6120e169010aSmrg	  libname=$func_stripname_result
6121e169010aSmrg	fi
6122e169010aSmrg	;;
6123e169010aSmrg      esac
6124e169010aSmrg
6125e169010aSmrg      if test -n "$objs"; then
6126e169010aSmrg	if test "$deplibs_check_method" != pass_all; then
6127e169010aSmrg	  func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
6128e169010aSmrg	else
6129e169010aSmrg	  $ECHO
6130e169010aSmrg	  $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
6131e169010aSmrg	  $ECHO "*** objects $objs is not portable!"
6132e169010aSmrg	  libobjs="$libobjs $objs"
6133e169010aSmrg	fi
6134e169010aSmrg      fi
6135e169010aSmrg
6136e169010aSmrg      test "$dlself" != no && \
6137e169010aSmrg	func_warning "\`-dlopen self' is ignored for libtool libraries"
6138e169010aSmrg
6139e169010aSmrg      set dummy $rpath
6140e169010aSmrg      shift
6141e169010aSmrg      test "$#" -gt 1 && \
6142e169010aSmrg	func_warning "ignoring multiple \`-rpath's for a libtool library"
6143e169010aSmrg
6144e169010aSmrg      install_libdir="$1"
6145e169010aSmrg
6146e169010aSmrg      oldlibs=
6147e169010aSmrg      if test -z "$rpath"; then
6148e169010aSmrg	if test "$build_libtool_libs" = yes; then
6149e169010aSmrg	  # Building a libtool convenience library.
6150e169010aSmrg	  # Some compilers have problems with a `.al' extension so
6151e169010aSmrg	  # convenience libraries should have the same extension an
6152e169010aSmrg	  # archive normally would.
6153e169010aSmrg	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
6154e169010aSmrg	  build_libtool_libs=convenience
6155e169010aSmrg	  build_old_libs=yes
6156e169010aSmrg	fi
6157e169010aSmrg
6158e169010aSmrg	test -n "$vinfo" && \
6159e169010aSmrg	  func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
6160e169010aSmrg
6161e169010aSmrg	test -n "$release" && \
6162e169010aSmrg	  func_warning "\`-release' is ignored for convenience libraries"
6163e169010aSmrg      else
6164e169010aSmrg
6165e169010aSmrg	# Parse the version information argument.
6166e169010aSmrg	save_ifs="$IFS"; IFS=':'
6167e169010aSmrg	set dummy $vinfo 0 0 0
6168e169010aSmrg	shift
6169e169010aSmrg	IFS="$save_ifs"
6170e169010aSmrg
6171e169010aSmrg	test -n "$7" && \
6172e169010aSmrg	  func_fatal_help "too many parameters to \`-version-info'"
6173e169010aSmrg
6174e169010aSmrg	# convert absolute version numbers to libtool ages
6175e169010aSmrg	# this retains compatibility with .la files and attempts
6176e169010aSmrg	# to make the code below a bit more comprehensible
6177e169010aSmrg
6178e169010aSmrg	case $vinfo_number in
6179e169010aSmrg	yes)
6180e169010aSmrg	  number_major="$1"
6181e169010aSmrg	  number_minor="$2"
6182e169010aSmrg	  number_revision="$3"
6183e169010aSmrg	  #
6184e169010aSmrg	  # There are really only two kinds -- those that
6185e169010aSmrg	  # use the current revision as the major version
6186e169010aSmrg	  # and those that subtract age and use age as
6187e169010aSmrg	  # a minor version.  But, then there is irix
6188e169010aSmrg	  # which has an extra 1 added just for fun
6189e169010aSmrg	  #
6190e169010aSmrg	  case $version_type in
6191e169010aSmrg	  darwin|linux|osf|windows|none)
6192e169010aSmrg	    func_arith $number_major + $number_minor
6193e169010aSmrg	    current=$func_arith_result
6194e169010aSmrg	    age="$number_minor"
6195e169010aSmrg	    revision="$number_revision"
6196e169010aSmrg	    ;;
6197e169010aSmrg	  freebsd-aout|freebsd-elf|sunos)
6198e169010aSmrg	    current="$number_major"
6199e169010aSmrg	    revision="$number_minor"
6200e169010aSmrg	    age="0"
6201e169010aSmrg	    ;;
6202e169010aSmrg	  irix|nonstopux)
6203e169010aSmrg	    func_arith $number_major + $number_minor
6204e169010aSmrg	    current=$func_arith_result
6205e169010aSmrg	    age="$number_minor"
6206e169010aSmrg	    revision="$number_minor"
6207e169010aSmrg	    lt_irix_increment=no
6208e169010aSmrg	    ;;
6209e169010aSmrg	  esac
6210e169010aSmrg	  ;;
6211e169010aSmrg	no)
6212e169010aSmrg	  current="$1"
6213e169010aSmrg	  revision="$2"
6214e169010aSmrg	  age="$3"
6215e169010aSmrg	  ;;
6216e169010aSmrg	esac
6217e169010aSmrg
6218e169010aSmrg	# Check that each of the things are valid numbers.
6219e169010aSmrg	case $current in
6220e169010aSmrg	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]) ;;
6221e169010aSmrg	*)
6222e169010aSmrg	  func_error "CURRENT \`$current' must be a nonnegative integer"
6223e169010aSmrg	  func_fatal_error "\`$vinfo' is not valid version information"
6224e169010aSmrg	  ;;
6225e169010aSmrg	esac
6226e169010aSmrg
6227e169010aSmrg	case $revision in
6228e169010aSmrg	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]) ;;
6229e169010aSmrg	*)
6230e169010aSmrg	  func_error "REVISION \`$revision' must be a nonnegative integer"
6231e169010aSmrg	  func_fatal_error "\`$vinfo' is not valid version information"
6232e169010aSmrg	  ;;
6233e169010aSmrg	esac
6234e169010aSmrg
6235e169010aSmrg	case $age in
6236e169010aSmrg	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]) ;;
6237e169010aSmrg	*)
6238e169010aSmrg	  func_error "AGE \`$age' must be a nonnegative integer"
6239e169010aSmrg	  func_fatal_error "\`$vinfo' is not valid version information"
6240e169010aSmrg	  ;;
6241e169010aSmrg	esac
6242e169010aSmrg
6243e169010aSmrg	if test "$age" -gt "$current"; then
6244e169010aSmrg	  func_error "AGE \`$age' is greater than the current interface number \`$current'"
6245e169010aSmrg	  func_fatal_error "\`$vinfo' is not valid version information"
6246e169010aSmrg	fi
6247e169010aSmrg
6248e169010aSmrg	# Calculate the version variables.
6249e169010aSmrg	major=
6250e169010aSmrg	versuffix=
6251e169010aSmrg	verstring=
6252e169010aSmrg	case $version_type in
6253e169010aSmrg	none) ;;
6254e169010aSmrg
6255e169010aSmrg	darwin)
6256e169010aSmrg	  # Like Linux, but with the current version available in
6257e169010aSmrg	  # verstring for coding it into the library header
6258e169010aSmrg	  func_arith $current - $age
6259e169010aSmrg	  major=.$func_arith_result
6260e169010aSmrg	  versuffix="$major.$age.$revision"
6261e169010aSmrg	  # Darwin ld doesn't like 0 for these options...
6262e169010aSmrg	  func_arith $current + 1
6263e169010aSmrg	  minor_current=$func_arith_result
6264e169010aSmrg	  xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
6265e169010aSmrg	  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
6266e169010aSmrg	  ;;
6267e169010aSmrg
6268e169010aSmrg	freebsd-aout)
6269e169010aSmrg	  major=".$current"
6270e169010aSmrg	  versuffix=".$current.$revision";
6271e169010aSmrg	  ;;
6272e169010aSmrg
6273e169010aSmrg	freebsd-elf)
6274e169010aSmrg	  major=".$current"
6275e169010aSmrg	  versuffix=".$current"
6276e169010aSmrg	  ;;
6277e169010aSmrg
6278e169010aSmrg	irix | nonstopux)
6279e169010aSmrg	  if test "X$lt_irix_increment" = "Xno"; then
6280e169010aSmrg	    func_arith $current - $age
6281e169010aSmrg	  else
6282e169010aSmrg	    func_arith $current - $age + 1
6283e169010aSmrg	  fi
6284e169010aSmrg	  major=$func_arith_result
6285e169010aSmrg
6286e169010aSmrg	  case $version_type in
6287e169010aSmrg	    nonstopux) verstring_prefix=nonstopux ;;
6288e169010aSmrg	    *)         verstring_prefix=sgi ;;
6289e169010aSmrg	  esac
6290e169010aSmrg	  verstring="$verstring_prefix$major.$revision"
6291e169010aSmrg
6292e169010aSmrg	  # Add in all the interfaces that we are compatible with.
6293e169010aSmrg	  loop=$revision
6294e169010aSmrg	  while test "$loop" -ne 0; do
6295e169010aSmrg	    func_arith $revision - $loop
6296e169010aSmrg	    iface=$func_arith_result
6297e169010aSmrg	    func_arith $loop - 1
6298e169010aSmrg	    loop=$func_arith_result
6299e169010aSmrg	    verstring="$verstring_prefix$major.$iface:$verstring"
6300e169010aSmrg	  done
6301e169010aSmrg
6302e169010aSmrg	  # Before this point, $major must not contain `.'.
6303e169010aSmrg	  major=.$major
6304e169010aSmrg	  versuffix="$major.$revision"
6305e169010aSmrg	  ;;
6306e169010aSmrg
6307e169010aSmrg	linux)
6308e169010aSmrg	  func_arith $current - $age
6309e169010aSmrg	  major=.$func_arith_result
6310e169010aSmrg	  versuffix="$major.$age.$revision"
6311e169010aSmrg	  ;;
6312e169010aSmrg
6313e169010aSmrg	osf)
6314e169010aSmrg	  func_arith $current - $age
6315e169010aSmrg	  major=.$func_arith_result
6316e169010aSmrg	  versuffix=".$current.$age.$revision"
6317e169010aSmrg	  verstring="$current.$age.$revision"
6318e169010aSmrg
6319e169010aSmrg	  # Add in all the interfaces that we are compatible with.
6320e169010aSmrg	  loop=$age
6321e169010aSmrg	  while test "$loop" -ne 0; do
6322e169010aSmrg	    func_arith $current - $loop
6323e169010aSmrg	    iface=$func_arith_result
6324e169010aSmrg	    func_arith $loop - 1
6325e169010aSmrg	    loop=$func_arith_result
6326e169010aSmrg	    verstring="$verstring:${iface}.0"
6327e169010aSmrg	  done
6328e169010aSmrg
6329e169010aSmrg	  # Make executables depend on our current version.
6330e169010aSmrg	  verstring="$verstring:${current}.0"
6331e169010aSmrg	  ;;
6332e169010aSmrg
6333e169010aSmrg	qnx)
6334e169010aSmrg	  major=".$current"
6335e169010aSmrg	  versuffix=".$current"
6336e169010aSmrg	  ;;
6337e169010aSmrg
6338e169010aSmrg	sunos)
6339e169010aSmrg	  major=".$current"
6340e169010aSmrg	  versuffix=".$current.$revision"
6341e169010aSmrg	  ;;
6342e169010aSmrg
6343e169010aSmrg	windows)
6344e169010aSmrg	  # Use '-' rather than '.', since we only want one
6345e169010aSmrg	  # extension on DOS 8.3 filesystems.
6346e169010aSmrg	  func_arith $current - $age
6347e169010aSmrg	  major=$func_arith_result
6348e169010aSmrg	  versuffix="-$major"
6349e169010aSmrg	  ;;
6350e169010aSmrg
6351e169010aSmrg	*)
6352e169010aSmrg	  func_fatal_configuration "unknown library version type \`$version_type'"
6353e169010aSmrg	  ;;
6354e169010aSmrg	esac
6355e169010aSmrg
6356e169010aSmrg	# Clear the version info if we defaulted, and they specified a release.
6357e169010aSmrg	if test -z "$vinfo" && test -n "$release"; then
6358e169010aSmrg	  major=
6359e169010aSmrg	  case $version_type in
6360e169010aSmrg	  darwin)
6361e169010aSmrg	    # we can't check for "0.0" in archive_cmds due to quoting
6362e169010aSmrg	    # problems, so we reset it completely
6363e169010aSmrg	    verstring=
6364e169010aSmrg	    ;;
6365e169010aSmrg	  *)
6366e169010aSmrg	    verstring="0.0"
6367e169010aSmrg	    ;;
6368e169010aSmrg	  esac
6369e169010aSmrg	  if test "$need_version" = no; then
6370e169010aSmrg	    versuffix=
6371e169010aSmrg	  else
6372e169010aSmrg	    versuffix=".0.0"
6373e169010aSmrg	  fi
6374e169010aSmrg	fi
6375e169010aSmrg
6376e169010aSmrg	# Remove version info from name if versioning should be avoided
6377e169010aSmrg	if test "$avoid_version" = yes && test "$need_version" = no; then
6378e169010aSmrg	  major=
6379e169010aSmrg	  versuffix=
6380e169010aSmrg	  verstring=""
6381e169010aSmrg	fi
6382e169010aSmrg
6383e169010aSmrg	# Check to see if the archive will have undefined symbols.
6384e169010aSmrg	if test "$allow_undefined" = yes; then
6385e169010aSmrg	  if test "$allow_undefined_flag" = unsupported; then
6386e169010aSmrg	    func_warning "undefined symbols not allowed in $host shared libraries"
6387e169010aSmrg	    build_libtool_libs=no
6388e169010aSmrg	    build_old_libs=yes
6389e169010aSmrg	  fi
6390e169010aSmrg	else
6391e169010aSmrg	  # Don't allow undefined symbols.
6392e169010aSmrg	  allow_undefined_flag="$no_undefined_flag"
6393e169010aSmrg	fi
6394e169010aSmrg
6395e169010aSmrg      fi
6396e169010aSmrg
6397e169010aSmrg      func_generate_dlsyms "$libname" "$libname" "yes"
6398e169010aSmrg      libobjs="$libobjs $symfileobj"
6399e169010aSmrg      test "X$libobjs" = "X " && libobjs=
6400e169010aSmrg
6401e169010aSmrg      if test "$mode" != relink; then
6402e169010aSmrg	# Remove our outputs, but don't remove object files since they
6403e169010aSmrg	# may have been created when compiling PIC objects.
6404e169010aSmrg	removelist=
6405e169010aSmrg	tempremovelist=`$ECHO "$output_objdir/*"`
6406e169010aSmrg	for p in $tempremovelist; do
6407e169010aSmrg	  case $p in
6408e169010aSmrg	    *.$objext | *.gcno)
6409e169010aSmrg	       ;;
6410e169010aSmrg	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
6411e169010aSmrg	       if test "X$precious_files_regex" != "X"; then
6412e169010aSmrg		 if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
6413e169010aSmrg		 then
6414e169010aSmrg		   continue
6415e169010aSmrg		 fi
6416e169010aSmrg	       fi
6417e169010aSmrg	       removelist="$removelist $p"
6418e169010aSmrg	       ;;
6419e169010aSmrg	    *) ;;
6420e169010aSmrg	  esac
6421e169010aSmrg	done
6422e169010aSmrg	test -n "$removelist" && \
6423e169010aSmrg	  func_show_eval "${RM}r \$removelist"
6424e169010aSmrg      fi
6425e169010aSmrg
6426e169010aSmrg      # Now set the variables for building old libraries.
6427e169010aSmrg      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
6428e169010aSmrg	oldlibs="$oldlibs $output_objdir/$libname.$libext"
6429e169010aSmrg
6430e169010aSmrg	# Transform .lo files to .o files.
6431e169010aSmrg	oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
6432e169010aSmrg      fi
6433e169010aSmrg
6434e169010aSmrg      # Eliminate all temporary directories.
6435e169010aSmrg      #for path in $notinst_path; do
6436e169010aSmrg      #	lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"`
6437e169010aSmrg      #	deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"`
6438e169010aSmrg      #	dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"`
6439e169010aSmrg      #done
6440e169010aSmrg
6441e169010aSmrg      if test -n "$xrpath"; then
6442e169010aSmrg	# If the user specified any rpath flags, then add them.
6443e169010aSmrg	temp_xrpath=
6444e169010aSmrg	for libdir in $xrpath; do
6445e169010aSmrg	  temp_xrpath="$temp_xrpath -R$libdir"
6446e169010aSmrg	  case "$finalize_rpath " in
6447e169010aSmrg	  *" $libdir "*) ;;
6448e169010aSmrg	  *) finalize_rpath="$finalize_rpath $libdir" ;;
6449e169010aSmrg	  esac
6450e169010aSmrg	done
6451e169010aSmrg	if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
6452e169010aSmrg	  dependency_libs="$temp_xrpath $dependency_libs"
6453e169010aSmrg	fi
6454e169010aSmrg      fi
6455e169010aSmrg
6456e169010aSmrg      # Make sure dlfiles contains only unique files that won't be dlpreopened
6457e169010aSmrg      old_dlfiles="$dlfiles"
6458e169010aSmrg      dlfiles=
6459e169010aSmrg      for lib in $old_dlfiles; do
6460e169010aSmrg	case " $dlprefiles $dlfiles " in
6461e169010aSmrg	*" $lib "*) ;;
6462e169010aSmrg	*) dlfiles="$dlfiles $lib" ;;
6463e169010aSmrg	esac
6464e169010aSmrg      done
6465e169010aSmrg
6466e169010aSmrg      # Make sure dlprefiles contains only unique files
6467e169010aSmrg      old_dlprefiles="$dlprefiles"
6468e169010aSmrg      dlprefiles=
6469e169010aSmrg      for lib in $old_dlprefiles; do
6470e169010aSmrg	case "$dlprefiles " in
6471e169010aSmrg	*" $lib "*) ;;
6472e169010aSmrg	*) dlprefiles="$dlprefiles $lib" ;;
6473e169010aSmrg	esac
6474e169010aSmrg      done
6475e169010aSmrg
6476e169010aSmrg      if test "$build_libtool_libs" = yes; then
6477e169010aSmrg	if test -n "$rpath"; then
6478e169010aSmrg	  case $host in
6479e169010aSmrg	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc*)
6480e169010aSmrg	    # these systems don't actually have a c library (as such)!
6481e169010aSmrg	    ;;
6482e169010aSmrg	  *-*-rhapsody* | *-*-darwin1.[012])
6483e169010aSmrg	    # Rhapsody C library is in the System framework
6484e169010aSmrg	    deplibs="$deplibs System.ltframework"
6485e169010aSmrg	    ;;
6486e169010aSmrg	  *-*-netbsd*)
6487e169010aSmrg	    # Don't link with libc until the a.out ld.so is fixed.
6488e169010aSmrg	    ;;
6489e169010aSmrg	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
6490e169010aSmrg	    # Do not include libc due to us having libc/libc_r.
6491e169010aSmrg	    ;;
6492e169010aSmrg	  *-*-sco3.2v5* | *-*-sco5v6*)
6493e169010aSmrg	    # Causes problems with __ctype
6494e169010aSmrg	    ;;
6495e169010aSmrg	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
6496e169010aSmrg	    # Compiler inserts libc in the correct place for threads to work
6497e169010aSmrg	    ;;
6498e169010aSmrg	  *)
6499e169010aSmrg	    # Add libc to deplibs on all other systems if necessary.
6500e169010aSmrg	    if test "$build_libtool_need_lc" = "yes"; then
6501e169010aSmrg	      deplibs="$deplibs -lc"
6502e169010aSmrg	    fi
6503e169010aSmrg	    ;;
6504e169010aSmrg	  esac
6505e169010aSmrg	fi
6506e169010aSmrg
6507e169010aSmrg	# Transform deplibs into only deplibs that can be linked in shared.
6508e169010aSmrg	name_save=$name
6509e169010aSmrg	libname_save=$libname
6510e169010aSmrg	release_save=$release
6511e169010aSmrg	versuffix_save=$versuffix
6512e169010aSmrg	major_save=$major
6513e169010aSmrg	# I'm not sure if I'm treating the release correctly.  I think
6514e169010aSmrg	# release should show up in the -l (ie -lgmp5) so we don't want to
6515e169010aSmrg	# add it in twice.  Is that correct?
6516e169010aSmrg	release=""
6517e169010aSmrg	versuffix=""
6518e169010aSmrg	major=""
6519e169010aSmrg	newdeplibs=
6520e169010aSmrg	droppeddeps=no
6521e169010aSmrg	case $deplibs_check_method in
6522e169010aSmrg	pass_all)
6523e169010aSmrg	  # Don't check for shared/static.  Everything works.
6524e169010aSmrg	  # This might be a little naive.  We might want to check
6525e169010aSmrg	  # whether the library exists or not.  But this is on
6526e169010aSmrg	  # osf3 & osf4 and I'm not really sure... Just
6527e169010aSmrg	  # implementing what was already the behavior.
6528e169010aSmrg	  newdeplibs=$deplibs
6529e169010aSmrg	  ;;
6530e169010aSmrg	test_compile)
6531e169010aSmrg	  # This code stresses the "libraries are programs" paradigm to its
6532e169010aSmrg	  # limits. Maybe even breaks it.  We compile a program, linking it
6533e169010aSmrg	  # against the deplibs as a proxy for the library.  Then we can check
6534e169010aSmrg	  # whether they linked in statically or dynamically with ldd.
6535e169010aSmrg	  $opt_dry_run || $RM conftest.c
6536e169010aSmrg	  cat > conftest.c <<EOF
6537e169010aSmrg	  int main() { return 0; }
6538e169010aSmrgEOF
6539e169010aSmrg	  $opt_dry_run || $RM conftest
6540e169010aSmrg	  if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
6541e169010aSmrg	    ldd_output=`ldd conftest`
6542e169010aSmrg	    for i in $deplibs; do
6543e169010aSmrg	      case $i in
6544e169010aSmrg	      -l*)
6545e169010aSmrg		func_stripname -l '' "$i"
6546e169010aSmrg		name=$func_stripname_result
6547e169010aSmrg		if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
6548e169010aSmrg		  case " $predeps $postdeps " in
6549e169010aSmrg		  *" $i "*)
6550e169010aSmrg		    newdeplibs="$newdeplibs $i"
6551e169010aSmrg		    i=""
6552e169010aSmrg		    ;;
6553e169010aSmrg		  esac
6554e169010aSmrg		fi
6555e169010aSmrg		if test -n "$i" ; then
6556e169010aSmrg		  libname=`eval "\\$ECHO \"$libname_spec\""`
6557e169010aSmrg		  deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
6558e169010aSmrg		  set dummy $deplib_matches; shift
6559e169010aSmrg		  deplib_match=$1
6560e169010aSmrg		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
6561e169010aSmrg		    newdeplibs="$newdeplibs $i"
6562e169010aSmrg		  else
6563e169010aSmrg		    droppeddeps=yes
6564e169010aSmrg		    $ECHO
6565e169010aSmrg		    $ECHO "*** Warning: dynamic linker does not accept needed library $i."
6566e169010aSmrg		    $ECHO "*** I have the capability to make that library automatically link in when"
6567e169010aSmrg		    $ECHO "*** you link to this library.  But I can only do this if you have a"
6568e169010aSmrg		    $ECHO "*** shared version of the library, which I believe you do not have"
6569e169010aSmrg		    $ECHO "*** because a test_compile did reveal that the linker did not use it for"
6570e169010aSmrg		    $ECHO "*** its dynamic dependency list that programs get resolved with at runtime."
6571e169010aSmrg		  fi
6572e169010aSmrg		fi
6573e169010aSmrg		;;
6574e169010aSmrg	      *)
6575e169010aSmrg		newdeplibs="$newdeplibs $i"
6576e169010aSmrg		;;
6577e169010aSmrg	      esac
6578e169010aSmrg	    done
6579e169010aSmrg	  else
6580e169010aSmrg	    # Error occurred in the first compile.  Let's try to salvage
6581e169010aSmrg	    # the situation: Compile a separate program for each library.
6582e169010aSmrg	    for i in $deplibs; do
6583e169010aSmrg	      case $i in
6584e169010aSmrg	      -l*)
6585e169010aSmrg		func_stripname -l '' "$i"
6586e169010aSmrg		name=$func_stripname_result
6587e169010aSmrg		$opt_dry_run || $RM conftest
6588e169010aSmrg		if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
6589e169010aSmrg		  ldd_output=`ldd conftest`
6590e169010aSmrg		  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
6591e169010aSmrg		    case " $predeps $postdeps " in
6592e169010aSmrg		    *" $i "*)
6593e169010aSmrg		      newdeplibs="$newdeplibs $i"
6594e169010aSmrg		      i=""
6595e169010aSmrg		      ;;
6596e169010aSmrg		    esac
6597e169010aSmrg		  fi
6598e169010aSmrg		  if test -n "$i" ; then
6599e169010aSmrg		    libname=`eval "\\$ECHO \"$libname_spec\""`
6600e169010aSmrg		    deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
6601e169010aSmrg		    set dummy $deplib_matches; shift
6602e169010aSmrg		    deplib_match=$1
6603e169010aSmrg		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
6604e169010aSmrg		      newdeplibs="$newdeplibs $i"
6605e169010aSmrg		    else
6606e169010aSmrg		      droppeddeps=yes
6607e169010aSmrg		      $ECHO
6608e169010aSmrg		      $ECHO "*** Warning: dynamic linker does not accept needed library $i."
6609e169010aSmrg		      $ECHO "*** I have the capability to make that library automatically link in when"
6610e169010aSmrg		      $ECHO "*** you link to this library.  But I can only do this if you have a"
6611e169010aSmrg		      $ECHO "*** shared version of the library, which you do not appear to have"
6612e169010aSmrg		      $ECHO "*** because a test_compile did reveal that the linker did not use this one"
6613e169010aSmrg		      $ECHO "*** as a dynamic dependency that programs can get resolved with at runtime."
6614e169010aSmrg		    fi
6615e169010aSmrg		  fi
6616e169010aSmrg		else
6617e169010aSmrg		  droppeddeps=yes
6618e169010aSmrg		  $ECHO
6619e169010aSmrg		  $ECHO "*** Warning!  Library $i is needed by this library but I was not able to"
6620e169010aSmrg		  $ECHO "*** make it link in!  You will probably need to install it or some"
6621e169010aSmrg		  $ECHO "*** library that it depends on before this library will be fully"
6622e169010aSmrg		  $ECHO "*** functional.  Installing it before continuing would be even better."
6623e169010aSmrg		fi
6624e169010aSmrg		;;
6625e169010aSmrg	      *)
6626e169010aSmrg		newdeplibs="$newdeplibs $i"
6627e169010aSmrg		;;
6628e169010aSmrg	      esac
6629e169010aSmrg	    done
6630e169010aSmrg	  fi
6631e169010aSmrg	  ;;
6632e169010aSmrg	file_magic*)
6633e169010aSmrg	  set dummy $deplibs_check_method; shift
6634e169010aSmrg	  file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
6635e169010aSmrg	  for a_deplib in $deplibs; do
6636e169010aSmrg	    case $a_deplib in
6637e169010aSmrg	    -l*)
6638e169010aSmrg	      func_stripname -l '' "$a_deplib"
6639e169010aSmrg	      name=$func_stripname_result
6640e169010aSmrg	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
6641e169010aSmrg		case " $predeps $postdeps " in
6642e169010aSmrg		*" $a_deplib "*)
6643e169010aSmrg		  newdeplibs="$newdeplibs $a_deplib"
6644e169010aSmrg		  a_deplib=""
6645e169010aSmrg		  ;;
6646e169010aSmrg		esac
6647e169010aSmrg	      fi
6648e169010aSmrg	      if test -n "$a_deplib" ; then
6649e169010aSmrg		libname=`eval "\\$ECHO \"$libname_spec\""`
6650e169010aSmrg		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
6651e169010aSmrg		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
6652e169010aSmrg		  for potent_lib in $potential_libs; do
6653e169010aSmrg		      # Follow soft links.
6654e169010aSmrg		      if ls -lLd "$potent_lib" 2>/dev/null |
6655e169010aSmrg			 $GREP " -> " >/dev/null; then
6656e169010aSmrg			continue
6657e169010aSmrg		      fi
6658e169010aSmrg		      # The statement above tries to avoid entering an
6659e169010aSmrg		      # endless loop below, in case of cyclic links.
6660e169010aSmrg		      # We might still enter an endless loop, since a link
6661e169010aSmrg		      # loop can be closed while we follow links,
6662e169010aSmrg		      # but so what?
6663e169010aSmrg		      potlib="$potent_lib"
6664e169010aSmrg		      while test -h "$potlib" 2>/dev/null; do
6665e169010aSmrg			potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
6666e169010aSmrg			case $potliblink in
6667e169010aSmrg			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
6668e169010aSmrg			*) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
6669e169010aSmrg			esac
6670e169010aSmrg		      done
6671e169010aSmrg		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
6672e169010aSmrg			 $SED -e 10q |
6673e169010aSmrg			 $EGREP "$file_magic_regex" > /dev/null; then
6674e169010aSmrg			newdeplibs="$newdeplibs $a_deplib"
6675e169010aSmrg			a_deplib=""
6676e169010aSmrg			break 2
6677e169010aSmrg		      fi
6678e169010aSmrg		  done
6679e169010aSmrg		done
6680e169010aSmrg	      fi
6681e169010aSmrg	      if test -n "$a_deplib" ; then
6682e169010aSmrg		droppeddeps=yes
6683e169010aSmrg		$ECHO
6684e169010aSmrg		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
6685e169010aSmrg		$ECHO "*** I have the capability to make that library automatically link in when"
6686e169010aSmrg		$ECHO "*** you link to this library.  But I can only do this if you have a"
6687e169010aSmrg		$ECHO "*** shared version of the library, which you do not appear to have"
6688e169010aSmrg		$ECHO "*** because I did check the linker path looking for a file starting"
6689e169010aSmrg		if test -z "$potlib" ; then
6690e169010aSmrg		  $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
6691e169010aSmrg		else
6692e169010aSmrg		  $ECHO "*** with $libname and none of the candidates passed a file format test"
6693e169010aSmrg		  $ECHO "*** using a file magic. Last file checked: $potlib"
6694e169010aSmrg		fi
6695e169010aSmrg	      fi
6696e169010aSmrg	      ;;
6697e169010aSmrg	    *)
6698e169010aSmrg	      # Add a -L argument.
6699e169010aSmrg	      newdeplibs="$newdeplibs $a_deplib"
6700e169010aSmrg	      ;;
6701e169010aSmrg	    esac
6702e169010aSmrg	  done # Gone through all deplibs.
6703e169010aSmrg	  ;;
6704e169010aSmrg	match_pattern*)
6705e169010aSmrg	  set dummy $deplibs_check_method; shift
6706e169010aSmrg	  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
6707e169010aSmrg	  for a_deplib in $deplibs; do
6708e169010aSmrg	    case $a_deplib in
6709e169010aSmrg	    -l*)
6710e169010aSmrg	      func_stripname -l '' "$a_deplib"
6711e169010aSmrg	      name=$func_stripname_result
6712e169010aSmrg	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
6713e169010aSmrg		case " $predeps $postdeps " in
6714e169010aSmrg		*" $a_deplib "*)
6715e169010aSmrg		  newdeplibs="$newdeplibs $a_deplib"
6716e169010aSmrg		  a_deplib=""
6717e169010aSmrg		  ;;
6718e169010aSmrg		esac
6719e169010aSmrg	      fi
6720e169010aSmrg	      if test -n "$a_deplib" ; then
6721e169010aSmrg		libname=`eval "\\$ECHO \"$libname_spec\""`
6722e169010aSmrg		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
6723e169010aSmrg		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
6724e169010aSmrg		  for potent_lib in $potential_libs; do
6725e169010aSmrg		    potlib="$potent_lib" # see symlink-check above in file_magic test
6726e169010aSmrg		    if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \
6727e169010aSmrg		       $EGREP "$match_pattern_regex" > /dev/null; then
6728e169010aSmrg		      newdeplibs="$newdeplibs $a_deplib"
6729e169010aSmrg		      a_deplib=""
6730e169010aSmrg		      break 2
6731e169010aSmrg		    fi
6732e169010aSmrg		  done
6733e169010aSmrg		done
6734e169010aSmrg	      fi
6735e169010aSmrg	      if test -n "$a_deplib" ; then
6736e169010aSmrg		droppeddeps=yes
6737e169010aSmrg		$ECHO
6738e169010aSmrg		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
6739e169010aSmrg		$ECHO "*** I have the capability to make that library automatically link in when"
6740e169010aSmrg		$ECHO "*** you link to this library.  But I can only do this if you have a"
6741e169010aSmrg		$ECHO "*** shared version of the library, which you do not appear to have"
6742e169010aSmrg		$ECHO "*** because I did check the linker path looking for a file starting"
6743e169010aSmrg		if test -z "$potlib" ; then
6744e169010aSmrg		  $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
6745e169010aSmrg		else
6746e169010aSmrg		  $ECHO "*** with $libname and none of the candidates passed a file format test"
6747e169010aSmrg		  $ECHO "*** using a regex pattern. Last file checked: $potlib"
6748e169010aSmrg		fi
6749e169010aSmrg	      fi
6750e169010aSmrg	      ;;
6751e169010aSmrg	    *)
6752e169010aSmrg	      # Add a -L argument.
6753e169010aSmrg	      newdeplibs="$newdeplibs $a_deplib"
6754e169010aSmrg	      ;;
6755e169010aSmrg	    esac
6756e169010aSmrg	  done # Gone through all deplibs.
6757e169010aSmrg	  ;;
6758e169010aSmrg	none | unknown | *)
6759e169010aSmrg	  newdeplibs=""
6760e169010aSmrg	  tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \
6761e169010aSmrg	      -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'`
6762e169010aSmrg	  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
6763e169010aSmrg	    for i in $predeps $postdeps ; do
6764e169010aSmrg	      # can't use Xsed below, because $i might contain '/'
6765e169010aSmrg	      tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"`
6766e169010aSmrg	    done
6767e169010aSmrg	  fi
6768e169010aSmrg	  if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[	 ]//g' |
6769e169010aSmrg	     $GREP . >/dev/null; then
6770e169010aSmrg	    $ECHO
6771e169010aSmrg	    if test "X$deplibs_check_method" = "Xnone"; then
6772e169010aSmrg	      $ECHO "*** Warning: inter-library dependencies are not supported in this platform."
6773e169010aSmrg	    else
6774e169010aSmrg	      $ECHO "*** Warning: inter-library dependencies are not known to be supported."
6775e169010aSmrg	    fi
6776e169010aSmrg	    $ECHO "*** All declared inter-library dependencies are being dropped."
6777e169010aSmrg	    droppeddeps=yes
6778e169010aSmrg	  fi
6779e169010aSmrg	  ;;
6780e169010aSmrg	esac
6781e169010aSmrg	versuffix=$versuffix_save
6782e169010aSmrg	major=$major_save
6783e169010aSmrg	release=$release_save
6784e169010aSmrg	libname=$libname_save
6785e169010aSmrg	name=$name_save
6786e169010aSmrg
6787e169010aSmrg	case $host in
6788e169010aSmrg	*-*-rhapsody* | *-*-darwin1.[012])
6789e169010aSmrg	  # On Rhapsody replace the C library with the System framework
6790e169010aSmrg	  newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
6791e169010aSmrg	  ;;
6792e169010aSmrg	esac
6793e169010aSmrg
6794e169010aSmrg	if test "$droppeddeps" = yes; then
6795e169010aSmrg	  if test "$module" = yes; then
6796e169010aSmrg	    $ECHO
6797e169010aSmrg	    $ECHO "*** Warning: libtool could not satisfy all declared inter-library"
6798e169010aSmrg	    $ECHO "*** dependencies of module $libname.  Therefore, libtool will create"
6799e169010aSmrg	    $ECHO "*** a static module, that should work as long as the dlopening"
6800e169010aSmrg	    $ECHO "*** application is linked with the -dlopen flag."
6801e169010aSmrg	    if test -z "$global_symbol_pipe"; then
6802e169010aSmrg	      $ECHO
6803e169010aSmrg	      $ECHO "*** However, this would only work if libtool was able to extract symbol"
6804e169010aSmrg	      $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
6805e169010aSmrg	      $ECHO "*** not find such a program.  So, this module is probably useless."
6806e169010aSmrg	      $ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
6807e169010aSmrg	    fi
6808e169010aSmrg	    if test "$build_old_libs" = no; then
6809e169010aSmrg	      oldlibs="$output_objdir/$libname.$libext"
6810e169010aSmrg	      build_libtool_libs=module
6811e169010aSmrg	      build_old_libs=yes
6812e169010aSmrg	    else
6813e169010aSmrg	      build_libtool_libs=no
6814e169010aSmrg	    fi
6815e169010aSmrg	  else
6816e169010aSmrg	    $ECHO "*** The inter-library dependencies that have been dropped here will be"
6817e169010aSmrg	    $ECHO "*** automatically added whenever a program is linked with this library"
6818e169010aSmrg	    $ECHO "*** or is declared to -dlopen it."
6819e169010aSmrg
6820e169010aSmrg	    if test "$allow_undefined" = no; then
6821e169010aSmrg	      $ECHO
6822e169010aSmrg	      $ECHO "*** Since this library must not contain undefined symbols,"
6823e169010aSmrg	      $ECHO "*** because either the platform does not support them or"
6824e169010aSmrg	      $ECHO "*** it was explicitly requested with -no-undefined,"
6825e169010aSmrg	      $ECHO "*** libtool will only create a static version of it."
6826e169010aSmrg	      if test "$build_old_libs" = no; then
6827e169010aSmrg		oldlibs="$output_objdir/$libname.$libext"
6828e169010aSmrg		build_libtool_libs=module
6829e169010aSmrg		build_old_libs=yes
6830e169010aSmrg	      else
6831e169010aSmrg		build_libtool_libs=no
6832e169010aSmrg	      fi
6833e169010aSmrg	    fi
6834e169010aSmrg	  fi
6835e169010aSmrg	fi
6836e169010aSmrg	# Done checking deplibs!
6837e169010aSmrg	deplibs=$newdeplibs
6838e169010aSmrg      fi
6839e169010aSmrg      # Time to change all our "foo.ltframework" stuff back to "-framework foo"
6840e169010aSmrg      case $host in
6841e169010aSmrg	*-*-darwin*)
6842e169010aSmrg	  newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
6843e169010aSmrg	  new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
6844e169010aSmrg	  deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
6845e169010aSmrg	  ;;
6846e169010aSmrg      esac
6847e169010aSmrg
6848e169010aSmrg      # move library search paths that coincide with paths to not yet
6849e169010aSmrg      # installed libraries to the beginning of the library search list
6850e169010aSmrg      new_libs=
6851e169010aSmrg      for path in $notinst_path; do
6852e169010aSmrg	case " $new_libs " in
6853e169010aSmrg	*" -L$path/$objdir "*) ;;
6854e169010aSmrg	*)
6855e169010aSmrg	  case " $deplibs " in
6856e169010aSmrg	  *" -L$path/$objdir "*)
6857e169010aSmrg	    new_libs="$new_libs -L$path/$objdir" ;;
6858e169010aSmrg	  esac
6859e169010aSmrg	  ;;
6860e169010aSmrg	esac
6861e169010aSmrg      done
6862e169010aSmrg      for deplib in $deplibs; do
6863e169010aSmrg	case $deplib in
6864e169010aSmrg	-L*)
6865e169010aSmrg	  case " $new_libs " in
6866e169010aSmrg	  *" $deplib "*) ;;
6867e169010aSmrg	  *) new_libs="$new_libs $deplib" ;;
6868e169010aSmrg	  esac
6869e169010aSmrg	  ;;
6870e169010aSmrg	*) new_libs="$new_libs $deplib" ;;
6871e169010aSmrg	esac
6872e169010aSmrg      done
6873e169010aSmrg      deplibs="$new_libs"
6874e169010aSmrg
6875e169010aSmrg      # All the library-specific variables (install_libdir is set above).
6876e169010aSmrg      library_names=
6877e169010aSmrg      old_library=
6878e169010aSmrg      dlname=
6879e169010aSmrg
6880e169010aSmrg      # Test again, we may have decided not to build it any more
6881e169010aSmrg      if test "$build_libtool_libs" = yes; then
6882e169010aSmrg	if test "$hardcode_into_libs" = yes; then
6883e169010aSmrg	  # Hardcode the library paths
6884e169010aSmrg	  hardcode_libdirs=
6885e169010aSmrg	  dep_rpath=
6886e169010aSmrg	  rpath="$finalize_rpath"
6887e169010aSmrg	  test "$mode" != relink && rpath="$compile_rpath$rpath"
6888e169010aSmrg	  for libdir in $rpath; do
6889e169010aSmrg	    if test -n "$hardcode_libdir_flag_spec"; then
6890e169010aSmrg	      if test -n "$hardcode_libdir_separator"; then
6891e169010aSmrg		if test -z "$hardcode_libdirs"; then
6892e169010aSmrg		  hardcode_libdirs="$libdir"
6893e169010aSmrg		else
6894e169010aSmrg		  # Just accumulate the unique libdirs.
6895e169010aSmrg		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
6896e169010aSmrg		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
6897e169010aSmrg		    ;;
6898e169010aSmrg		  *)
6899e169010aSmrg		    hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
6900e169010aSmrg		    ;;
6901e169010aSmrg		  esac
6902e169010aSmrg		fi
6903e169010aSmrg	      else
6904e169010aSmrg		eval flag=\"$hardcode_libdir_flag_spec\"
6905e169010aSmrg		dep_rpath="$dep_rpath $flag"
6906e169010aSmrg	      fi
6907e169010aSmrg	    elif test -n "$runpath_var"; then
6908e169010aSmrg	      case "$perm_rpath " in
6909e169010aSmrg	      *" $libdir "*) ;;
6910e169010aSmrg	      *) perm_rpath="$perm_rpath $libdir" ;;
6911e169010aSmrg	      esac
6912e169010aSmrg	    fi
6913e169010aSmrg	  done
6914e169010aSmrg	  # Substitute the hardcoded libdirs into the rpath.
6915e169010aSmrg	  if test -n "$hardcode_libdir_separator" &&
6916e169010aSmrg	     test -n "$hardcode_libdirs"; then
6917e169010aSmrg	    libdir="$hardcode_libdirs"
6918e169010aSmrg	    if test -n "$hardcode_libdir_flag_spec_ld"; then
6919e169010aSmrg	      eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
6920e169010aSmrg	    else
6921e169010aSmrg	      eval dep_rpath=\"$hardcode_libdir_flag_spec\"
6922e169010aSmrg	    fi
6923e169010aSmrg	  fi
6924e169010aSmrg	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
6925e169010aSmrg	    # We should set the runpath_var.
6926e169010aSmrg	    rpath=
6927e169010aSmrg	    for dir in $perm_rpath; do
6928e169010aSmrg	      rpath="$rpath$dir:"
6929e169010aSmrg	    done
6930e169010aSmrg	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
6931e169010aSmrg	  fi
6932e169010aSmrg	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
6933e169010aSmrg	fi
69347914d74bSmrg
6935e169010aSmrg	shlibpath="$finalize_shlibpath"
6936e169010aSmrg	test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
6937e169010aSmrg	if test -n "$shlibpath"; then
6938e169010aSmrg	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
6939e169010aSmrg	fi
69407914d74bSmrg
6941e169010aSmrg	# Get the real and link names of the library.
6942e169010aSmrg	eval shared_ext=\"$shrext_cmds\"
6943e169010aSmrg	eval library_names=\"$library_names_spec\"
6944e169010aSmrg	set dummy $library_names
6945e169010aSmrg	shift
6946e169010aSmrg	realname="$1"
6947e169010aSmrg	shift
69487914d74bSmrg
6949e169010aSmrg	if test -n "$soname_spec"; then
6950e169010aSmrg	  eval soname=\"$soname_spec\"
6951e169010aSmrg	else
6952e169010aSmrg	  soname="$realname"
6953e169010aSmrg	fi
6954e169010aSmrg	if test -z "$dlname"; then
6955e169010aSmrg	  dlname=$soname
6956e169010aSmrg	fi
69577914d74bSmrg
6958e169010aSmrg	lib="$output_objdir/$realname"
6959e169010aSmrg	linknames=
6960e169010aSmrg	for link
6961e169010aSmrg	do
6962e169010aSmrg	  linknames="$linknames $link"
6963e169010aSmrg	done
69647914d74bSmrg
6965e169010aSmrg	# Use standard objects if they are pic
6966e169010aSmrg	test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
6967e169010aSmrg	test "X$libobjs" = "X " && libobjs=
69687914d74bSmrg
6969e169010aSmrg	delfiles=
6970e169010aSmrg	if test -n "$export_symbols" && test -n "$include_expsyms"; then
6971e169010aSmrg	  $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
6972e169010aSmrg	  export_symbols="$output_objdir/$libname.uexp"
6973e169010aSmrg	  delfiles="$delfiles $export_symbols"
6974e169010aSmrg	fi
69757914d74bSmrg
6976e169010aSmrg	orig_export_symbols=
6977e169010aSmrg	case $host_os in
6978e169010aSmrg	cygwin* | mingw* | cegcc*)
6979e169010aSmrg	  if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
6980e169010aSmrg	    # exporting using user supplied symfile
6981e169010aSmrg	    if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
6982e169010aSmrg	      # and it's NOT already a .def file. Must figure out
6983e169010aSmrg	      # which of the given symbols are data symbols and tag
6984e169010aSmrg	      # them as such. So, trigger use of export_symbols_cmds.
6985e169010aSmrg	      # export_symbols gets reassigned inside the "prepare
6986e169010aSmrg	      # the list of exported symbols" if statement, so the
6987e169010aSmrg	      # include_expsyms logic still works.
6988e169010aSmrg	      orig_export_symbols="$export_symbols"
6989e169010aSmrg	      export_symbols=
6990e169010aSmrg	      always_export_symbols=yes
6991e169010aSmrg	    fi
6992e169010aSmrg	  fi
6993e169010aSmrg	  ;;
6994e169010aSmrg	esac
69957914d74bSmrg
6996e169010aSmrg	# Prepare the list of exported symbols
6997e169010aSmrg	if test -z "$export_symbols"; then
6998e169010aSmrg	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
6999e169010aSmrg	    func_verbose "generating symbol list for \`$libname.la'"
7000e169010aSmrg	    export_symbols="$output_objdir/$libname.exp"
7001e169010aSmrg	    $opt_dry_run || $RM $export_symbols
7002e169010aSmrg	    cmds=$export_symbols_cmds
7003e169010aSmrg	    save_ifs="$IFS"; IFS='~'
7004e169010aSmrg	    for cmd in $cmds; do
7005e169010aSmrg	      IFS="$save_ifs"
7006e169010aSmrg	      eval cmd=\"$cmd\"
7007e169010aSmrg	      func_len " $cmd"
7008e169010aSmrg	      len=$func_len_result
7009e169010aSmrg	      if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
7010e169010aSmrg		func_show_eval "$cmd" 'exit $?'
7011e169010aSmrg		skipped_export=false
7012e169010aSmrg	      else
7013e169010aSmrg		# The command line is too long to execute in one step.
7014e169010aSmrg		func_verbose "using reloadable object file for export list..."
7015e169010aSmrg		skipped_export=:
7016e169010aSmrg		# Break out early, otherwise skipped_export may be
7017e169010aSmrg		# set to false by a later but shorter cmd.
7018e169010aSmrg		break
7019e169010aSmrg	      fi
7020e169010aSmrg	    done
7021e169010aSmrg	    IFS="$save_ifs"
7022e169010aSmrg	    if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
7023e169010aSmrg	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
7024e169010aSmrg	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
7025e169010aSmrg	    fi
7026e169010aSmrg	  fi
7027e169010aSmrg	fi
70287914d74bSmrg
7029e169010aSmrg	if test -n "$export_symbols" && test -n "$include_expsyms"; then
7030e169010aSmrg	  tmp_export_symbols="$export_symbols"
7031e169010aSmrg	  test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
7032e169010aSmrg	  $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
7033e169010aSmrg	fi
70347914d74bSmrg
7035e169010aSmrg	if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
7036e169010aSmrg	  # The given exports_symbols file has to be filtered, so filter it.
7037e169010aSmrg	  func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
7038e169010aSmrg	  # FIXME: $output_objdir/$libname.filter potentially contains lots of
7039e169010aSmrg	  # 's' commands which not all seds can handle. GNU sed should be fine
7040e169010aSmrg	  # though. Also, the filter scales superlinearly with the number of
7041e169010aSmrg	  # global variables. join(1) would be nice here, but unfortunately
7042e169010aSmrg	  # isn't a blessed tool.
7043e169010aSmrg	  $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
7044e169010aSmrg	  delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
7045e169010aSmrg	  export_symbols=$output_objdir/$libname.def
7046e169010aSmrg	  $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
70477914d74bSmrg	fi
70487914d74bSmrg
7049e169010aSmrg	tmp_deplibs=
7050e169010aSmrg	for test_deplib in $deplibs; do
7051e169010aSmrg	  case " $convenience " in
7052e169010aSmrg	  *" $test_deplib "*) ;;
7053e169010aSmrg	  *)
7054e169010aSmrg	    tmp_deplibs="$tmp_deplibs $test_deplib"
7055e169010aSmrg	    ;;
7056e169010aSmrg	  esac
7057e169010aSmrg	done
7058e169010aSmrg	deplibs="$tmp_deplibs"
70597914d74bSmrg
7060e169010aSmrg	if test -n "$convenience"; then
7061e169010aSmrg	  if test -n "$whole_archive_flag_spec" &&
7062e169010aSmrg	    test "$compiler_needs_object" = yes &&
7063e169010aSmrg	    test -z "$libobjs"; then
7064e169010aSmrg	    # extract the archives, so we have objects to list.
7065e169010aSmrg	    # TODO: could optimize this to just extract one archive.
7066e169010aSmrg	    whole_archive_flag_spec=
7067e169010aSmrg	  fi
7068e169010aSmrg	  if test -n "$whole_archive_flag_spec"; then
7069e169010aSmrg	    save_libobjs=$libobjs
7070e169010aSmrg	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
7071e169010aSmrg	    test "X$libobjs" = "X " && libobjs=
7072e169010aSmrg	  else
7073e169010aSmrg	    gentop="$output_objdir/${outputname}x"
7074e169010aSmrg	    generated="$generated $gentop"
70757914d74bSmrg
7076e169010aSmrg	    func_extract_archives $gentop $convenience
7077e169010aSmrg	    libobjs="$libobjs $func_extract_archives_result"
7078e169010aSmrg	    test "X$libobjs" = "X " && libobjs=
7079e169010aSmrg	  fi
7080e169010aSmrg	fi
70817914d74bSmrg
7082e169010aSmrg	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
7083e169010aSmrg	  eval flag=\"$thread_safe_flag_spec\"
7084e169010aSmrg	  linker_flags="$linker_flags $flag"
7085e169010aSmrg	fi
70867914d74bSmrg
7087e169010aSmrg	# Make a backup of the uninstalled library when relinking
7088e169010aSmrg	if test "$mode" = relink; then
7089e169010aSmrg	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
70907914d74bSmrg	fi
70917914d74bSmrg
7092e169010aSmrg	# Do each of the archive commands.
7093e169010aSmrg	if test "$module" = yes && test -n "$module_cmds" ; then
7094e169010aSmrg	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
7095e169010aSmrg	    eval test_cmds=\"$module_expsym_cmds\"
7096e169010aSmrg	    cmds=$module_expsym_cmds
7097e169010aSmrg	  else
7098e169010aSmrg	    eval test_cmds=\"$module_cmds\"
7099e169010aSmrg	    cmds=$module_cmds
7100e169010aSmrg	  fi
7101e169010aSmrg	else
7102e169010aSmrg	  if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
7103e169010aSmrg	    eval test_cmds=\"$archive_expsym_cmds\"
7104e169010aSmrg	    cmds=$archive_expsym_cmds
7105e169010aSmrg	  else
7106e169010aSmrg	    eval test_cmds=\"$archive_cmds\"
7107e169010aSmrg	    cmds=$archive_cmds
7108e169010aSmrg	  fi
71097914d74bSmrg	fi
71107914d74bSmrg
7111e169010aSmrg	if test "X$skipped_export" != "X:" &&
7112e169010aSmrg	   func_len " $test_cmds" &&
7113e169010aSmrg	   len=$func_len_result &&
7114e169010aSmrg	   test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
7115e169010aSmrg	  :
7116e169010aSmrg	else
7117e169010aSmrg	  # The command line is too long to link in one step, link piecewise
7118e169010aSmrg	  # or, if using GNU ld and skipped_export is not :, use a linker
7119e169010aSmrg	  # script.
71207914d74bSmrg
7121e169010aSmrg	  # Save the value of $output and $libobjs because we want to
7122e169010aSmrg	  # use them later.  If we have whole_archive_flag_spec, we
7123e169010aSmrg	  # want to use save_libobjs as it was before
7124e169010aSmrg	  # whole_archive_flag_spec was expanded, because we can't
7125e169010aSmrg	  # assume the linker understands whole_archive_flag_spec.
7126e169010aSmrg	  # This may have to be revisited, in case too many
7127e169010aSmrg	  # convenience libraries get linked in and end up exceeding
7128e169010aSmrg	  # the spec.
7129e169010aSmrg	  if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
7130e169010aSmrg	    save_libobjs=$libobjs
7131e169010aSmrg	  fi
7132e169010aSmrg	  save_output=$output
7133e169010aSmrg	  output_la=`$ECHO "X$output" | $Xsed -e "$basename"`
71347914d74bSmrg
7135e169010aSmrg	  # Clear the reloadable object creation command queue and
7136e169010aSmrg	  # initialize k to one.
7137e169010aSmrg	  test_cmds=
7138e169010aSmrg	  concat_cmds=
7139e169010aSmrg	  objlist=
7140e169010aSmrg	  last_robj=
7141e169010aSmrg	  k=1
71427914d74bSmrg
7143e169010aSmrg	  if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
7144e169010aSmrg	    output=${output_objdir}/${output_la}.lnkscript
7145e169010aSmrg	    func_verbose "creating GNU ld script: $output"
7146e169010aSmrg	    $ECHO 'INPUT (' > $output
7147e169010aSmrg	    for obj in $save_libobjs
7148e169010aSmrg	    do
7149e169010aSmrg	      $ECHO "$obj" >> $output
7150e169010aSmrg	    done
7151e169010aSmrg	    $ECHO ')' >> $output
7152e169010aSmrg	    delfiles="$delfiles $output"
7153e169010aSmrg	  elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
7154e169010aSmrg	    output=${output_objdir}/${output_la}.lnk
7155e169010aSmrg	    func_verbose "creating linker input file list: $output"
7156e169010aSmrg	    : > $output
7157e169010aSmrg	    set x $save_libobjs
7158e169010aSmrg	    shift
7159e169010aSmrg	    firstobj=
7160e169010aSmrg	    if test "$compiler_needs_object" = yes; then
7161e169010aSmrg	      firstobj="$1 "
7162e169010aSmrg	      shift
7163e169010aSmrg	    fi
7164e169010aSmrg	    for obj
7165e169010aSmrg	    do
7166e169010aSmrg	      $ECHO "$obj" >> $output
7167e169010aSmrg	    done
7168e169010aSmrg	    delfiles="$delfiles $output"
7169e169010aSmrg	    output=$firstobj\"$file_list_spec$output\"
7170e169010aSmrg	  else
7171e169010aSmrg	    if test -n "$save_libobjs"; then
7172e169010aSmrg	      func_verbose "creating reloadable object files..."
7173e169010aSmrg	      output=$output_objdir/$output_la-${k}.$objext
7174e169010aSmrg	      eval test_cmds=\"$reload_cmds\"
7175e169010aSmrg	      func_len " $test_cmds"
7176e169010aSmrg	      len0=$func_len_result
7177e169010aSmrg	      len=$len0
7178e169010aSmrg
7179e169010aSmrg	      # Loop over the list of objects to be linked.
7180e169010aSmrg	      for obj in $save_libobjs
7181e169010aSmrg	      do
7182e169010aSmrg		func_len " $obj"
7183e169010aSmrg		func_arith $len + $func_len_result
7184e169010aSmrg		len=$func_arith_result
7185e169010aSmrg		if test "X$objlist" = X ||
7186e169010aSmrg		   test "$len" -lt "$max_cmd_len"; then
7187e169010aSmrg		  func_append objlist " $obj"
7188e169010aSmrg		else
7189e169010aSmrg		  # The command $test_cmds is almost too long, add a
7190e169010aSmrg		  # command to the queue.
7191e169010aSmrg		  if test "$k" -eq 1 ; then
7192e169010aSmrg		    # The first file doesn't have a previous command to add.
7193e169010aSmrg		    eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
7194e169010aSmrg		  else
7195e169010aSmrg		    # All subsequent reloadable object files will link in
7196e169010aSmrg		    # the last one created.
7197e169010aSmrg		    eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj~\$RM $last_robj\"
7198e169010aSmrg		  fi
7199e169010aSmrg		  last_robj=$output_objdir/$output_la-${k}.$objext
7200e169010aSmrg		  func_arith $k + 1
7201e169010aSmrg		  k=$func_arith_result
7202e169010aSmrg		  output=$output_objdir/$output_la-${k}.$objext
7203e169010aSmrg		  objlist=$obj
7204e169010aSmrg		  func_len " $last_robj"
7205e169010aSmrg		  func_arith $len0 + $func_len_result
7206e169010aSmrg		  len=$func_arith_result
7207e169010aSmrg		fi
7208e169010aSmrg	      done
7209e169010aSmrg	      # Handle the remaining objects by creating one last
7210e169010aSmrg	      # reloadable object file.  All subsequent reloadable object
7211e169010aSmrg	      # files will link in the last one created.
7212e169010aSmrg	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
7213e169010aSmrg	      eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
7214e169010aSmrg	      if test -n "$last_robj"; then
7215e169010aSmrg	        eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
7216e169010aSmrg	      fi
7217e169010aSmrg	      delfiles="$delfiles $output"
72187914d74bSmrg
7219e169010aSmrg	    else
7220e169010aSmrg	      output=
7221e169010aSmrg	    fi
72227914d74bSmrg
7223e169010aSmrg	    if ${skipped_export-false}; then
7224e169010aSmrg	      func_verbose "generating symbol list for \`$libname.la'"
7225e169010aSmrg	      export_symbols="$output_objdir/$libname.exp"
7226e169010aSmrg	      $opt_dry_run || $RM $export_symbols
7227e169010aSmrg	      libobjs=$output
7228e169010aSmrg	      # Append the command to create the export file.
7229e169010aSmrg	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
7230e169010aSmrg	      eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
7231e169010aSmrg	      if test -n "$last_robj"; then
7232e169010aSmrg		eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
7233e169010aSmrg	      fi
7234e169010aSmrg	    fi
72357914d74bSmrg
7236e169010aSmrg	    test -n "$save_libobjs" &&
7237e169010aSmrg	      func_verbose "creating a temporary reloadable object file: $output"
72387914d74bSmrg
7239e169010aSmrg	    # Loop through the commands generated above and execute them.
7240e169010aSmrg	    save_ifs="$IFS"; IFS='~'
7241e169010aSmrg	    for cmd in $concat_cmds; do
7242e169010aSmrg	      IFS="$save_ifs"
7243e169010aSmrg	      $opt_silent || {
7244e169010aSmrg		  func_quote_for_expand "$cmd"
7245e169010aSmrg		  eval "func_echo $func_quote_for_expand_result"
7246e169010aSmrg	      }
7247e169010aSmrg	      $opt_dry_run || eval "$cmd" || {
7248e169010aSmrg		lt_exit=$?
7249e169010aSmrg
7250e169010aSmrg		# Restore the uninstalled library and exit
7251e169010aSmrg		if test "$mode" = relink; then
7252e169010aSmrg		  ( cd "$output_objdir" && \
7253e169010aSmrg		    $RM "${realname}T" && \
7254e169010aSmrg		    $MV "${realname}U" "$realname" )
7255e169010aSmrg		fi
72567914d74bSmrg
7257e169010aSmrg		exit $lt_exit
7258e169010aSmrg	      }
7259e169010aSmrg	    done
7260e169010aSmrg	    IFS="$save_ifs"
7261e169010aSmrg
7262e169010aSmrg	    if test -n "$export_symbols_regex" && ${skipped_export-false}; then
7263e169010aSmrg	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
7264e169010aSmrg	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
72657914d74bSmrg	    fi
72667914d74bSmrg	  fi
72677914d74bSmrg
7268e169010aSmrg          if ${skipped_export-false}; then
7269e169010aSmrg	    if test -n "$export_symbols" && test -n "$include_expsyms"; then
7270e169010aSmrg	      tmp_export_symbols="$export_symbols"
7271e169010aSmrg	      test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
7272e169010aSmrg	      $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
7273e169010aSmrg	    fi
72747914d74bSmrg
7275e169010aSmrg	    if test -n "$orig_export_symbols"; then
7276e169010aSmrg	      # The given exports_symbols file has to be filtered, so filter it.
7277e169010aSmrg	      func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
7278e169010aSmrg	      # FIXME: $output_objdir/$libname.filter potentially contains lots of
7279e169010aSmrg	      # 's' commands which not all seds can handle. GNU sed should be fine
7280e169010aSmrg	      # though. Also, the filter scales superlinearly with the number of
7281e169010aSmrg	      # global variables. join(1) would be nice here, but unfortunately
7282e169010aSmrg	      # isn't a blessed tool.
7283e169010aSmrg	      $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
7284e169010aSmrg	      delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
7285e169010aSmrg	      export_symbols=$output_objdir/$libname.def
7286e169010aSmrg	      $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
7287e169010aSmrg	    fi
7288e169010aSmrg	  fi
72897914d74bSmrg
7290e169010aSmrg	  libobjs=$output
7291e169010aSmrg	  # Restore the value of output.
7292e169010aSmrg	  output=$save_output
72937914d74bSmrg
7294e169010aSmrg	  if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
7295e169010aSmrg	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
7296e169010aSmrg	    test "X$libobjs" = "X " && libobjs=
7297e169010aSmrg	  fi
7298e169010aSmrg	  # Expand the library linking commands again to reset the
7299e169010aSmrg	  # value of $libobjs for piecewise linking.
7300e169010aSmrg
7301e169010aSmrg	  # Do each of the archive commands.
7302e169010aSmrg	  if test "$module" = yes && test -n "$module_cmds" ; then
7303e169010aSmrg	    if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
7304e169010aSmrg	      cmds=$module_expsym_cmds
73057914d74bSmrg	    else
7306e169010aSmrg	      cmds=$module_cmds
73077914d74bSmrg	    fi
73087914d74bSmrg	  else
7309e169010aSmrg	    if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
7310e169010aSmrg	      cmds=$archive_expsym_cmds
7311e169010aSmrg	    else
7312e169010aSmrg	      cmds=$archive_cmds
7313e169010aSmrg	    fi
73147914d74bSmrg	  fi
73157914d74bSmrg	fi
73167914d74bSmrg
7317e169010aSmrg	if test -n "$delfiles"; then
7318e169010aSmrg	  # Append the command to remove temporary files to $cmds.
7319e169010aSmrg	  eval cmds=\"\$cmds~\$RM $delfiles\"
7320e169010aSmrg	fi
73217914d74bSmrg
7322e169010aSmrg	# Add any objects from preloaded convenience libraries
7323e169010aSmrg	if test -n "$dlprefiles"; then
7324e169010aSmrg	  gentop="$output_objdir/${outputname}x"
7325e169010aSmrg	  generated="$generated $gentop"
73267914d74bSmrg
7327e169010aSmrg	  func_extract_archives $gentop $dlprefiles
7328e169010aSmrg	  libobjs="$libobjs $func_extract_archives_result"
7329e169010aSmrg	  test "X$libobjs" = "X " && libobjs=
73307914d74bSmrg	fi
73317914d74bSmrg
7332e169010aSmrg	save_ifs="$IFS"; IFS='~'
7333e169010aSmrg	for cmd in $cmds; do
7334e169010aSmrg	  IFS="$save_ifs"
7335e169010aSmrg	  eval cmd=\"$cmd\"
7336e169010aSmrg	  $opt_silent || {
7337e169010aSmrg	    func_quote_for_expand "$cmd"
7338e169010aSmrg	    eval "func_echo $func_quote_for_expand_result"
7339e169010aSmrg	  }
7340e169010aSmrg	  $opt_dry_run || eval "$cmd" || {
7341e169010aSmrg	    lt_exit=$?
73427914d74bSmrg
7343e169010aSmrg	    # Restore the uninstalled library and exit
7344e169010aSmrg	    if test "$mode" = relink; then
7345e169010aSmrg	      ( cd "$output_objdir" && \
7346e169010aSmrg	        $RM "${realname}T" && \
7347e169010aSmrg		$MV "${realname}U" "$realname" )
7348e169010aSmrg	    fi
7349e169010aSmrg
7350e169010aSmrg	    exit $lt_exit
7351e169010aSmrg	  }
7352e169010aSmrg	done
7353e169010aSmrg	IFS="$save_ifs"
7354e169010aSmrg
7355e169010aSmrg	# Restore the uninstalled library and exit
7356e169010aSmrg	if test "$mode" = relink; then
7357e169010aSmrg	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
7358e169010aSmrg
7359e169010aSmrg	  if test -n "$convenience"; then
7360e169010aSmrg	    if test -z "$whole_archive_flag_spec"; then
7361e169010aSmrg	      func_show_eval '${RM}r "$gentop"'
73627914d74bSmrg	    fi
73637914d74bSmrg	  fi
73647914d74bSmrg
7365e169010aSmrg	  exit $EXIT_SUCCESS
7366e169010aSmrg	fi
73677914d74bSmrg
7368e169010aSmrg	# Create links to the real library.
7369e169010aSmrg	for linkname in $linknames; do
7370e169010aSmrg	  if test "$realname" != "$linkname"; then
7371e169010aSmrg	    func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
7372e169010aSmrg	  fi
7373e169010aSmrg	done
7374e169010aSmrg
7375e169010aSmrg	# If -module or -export-dynamic was specified, set the dlname.
7376e169010aSmrg	if test "$module" = yes || test "$export_dynamic" = yes; then
7377e169010aSmrg	  # On all known operating systems, these are identical.
7378e169010aSmrg	  dlname="$soname"
7379e169010aSmrg	fi
7380e169010aSmrg      fi
7381e169010aSmrg      ;;
7382e169010aSmrg
7383e169010aSmrg    obj)
7384e169010aSmrg      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
7385e169010aSmrg	func_warning "\`-dlopen' is ignored for objects"
7386e169010aSmrg      fi
7387e169010aSmrg
7388e169010aSmrg      case " $deplibs" in
7389e169010aSmrg      *\ -l* | *\ -L*)
7390e169010aSmrg	func_warning "\`-l' and \`-L' are ignored for objects" ;;
7391e169010aSmrg      esac
7392e169010aSmrg
7393e169010aSmrg      test -n "$rpath" && \
7394e169010aSmrg	func_warning "\`-rpath' is ignored for objects"
7395e169010aSmrg
7396e169010aSmrg      test -n "$xrpath" && \
7397e169010aSmrg	func_warning "\`-R' is ignored for objects"
7398e169010aSmrg
7399e169010aSmrg      test -n "$vinfo" && \
7400e169010aSmrg	func_warning "\`-version-info' is ignored for objects"
7401e169010aSmrg
7402e169010aSmrg      test -n "$release" && \
7403e169010aSmrg	func_warning "\`-release' is ignored for objects"
7404e169010aSmrg
7405e169010aSmrg      case $output in
7406e169010aSmrg      *.lo)
7407e169010aSmrg	test -n "$objs$old_deplibs" && \
7408e169010aSmrg	  func_fatal_error "cannot build library object \`$output' from non-libtool objects"
7409e169010aSmrg
7410e169010aSmrg	libobj=$output
7411e169010aSmrg	func_lo2o "$libobj"
7412e169010aSmrg	obj=$func_lo2o_result
7413e169010aSmrg	;;
7414e169010aSmrg      *)
7415e169010aSmrg	libobj=
7416e169010aSmrg	obj="$output"
7417e169010aSmrg	;;
7418e169010aSmrg      esac
7419e169010aSmrg
7420e169010aSmrg      # Delete the old objects.
7421e169010aSmrg      $opt_dry_run || $RM $obj $libobj
7422e169010aSmrg
7423e169010aSmrg      # Objects from convenience libraries.  This assumes
7424e169010aSmrg      # single-version convenience libraries.  Whenever we create
7425e169010aSmrg      # different ones for PIC/non-PIC, this we'll have to duplicate
7426e169010aSmrg      # the extraction.
7427e169010aSmrg      reload_conv_objs=
7428e169010aSmrg      gentop=
7429e169010aSmrg      # reload_cmds runs $LD directly, so let us get rid of
7430e169010aSmrg      # -Wl from whole_archive_flag_spec and hope we can get by with
7431e169010aSmrg      # turning comma into space..
7432e169010aSmrg      wl=
7433e169010aSmrg
7434e169010aSmrg      if test -n "$convenience"; then
7435e169010aSmrg	if test -n "$whole_archive_flag_spec"; then
7436e169010aSmrg	  eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
7437e169010aSmrg	  reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'`
7438e169010aSmrg	else
7439e169010aSmrg	  gentop="$output_objdir/${obj}x"
7440e169010aSmrg	  generated="$generated $gentop"
7441e169010aSmrg
7442e169010aSmrg	  func_extract_archives $gentop $convenience
7443e169010aSmrg	  reload_conv_objs="$reload_objs $func_extract_archives_result"
7444e169010aSmrg	fi
7445e169010aSmrg      fi
74467914d74bSmrg
7447e169010aSmrg      # Create the old-style object.
7448e169010aSmrg      reload_objs="$objs$old_deplibs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
74497914d74bSmrg
7450e169010aSmrg      output="$obj"
7451e169010aSmrg      func_execute_cmds "$reload_cmds" 'exit $?'
74527914d74bSmrg
7453e169010aSmrg      # Exit if we aren't doing a library object file.
7454e169010aSmrg      if test -z "$libobj"; then
7455e169010aSmrg	if test -n "$gentop"; then
7456e169010aSmrg	  func_show_eval '${RM}r "$gentop"'
7457e169010aSmrg	fi
74587914d74bSmrg
7459e169010aSmrg	exit $EXIT_SUCCESS
7460e169010aSmrg      fi
74617914d74bSmrg
7462e169010aSmrg      if test "$build_libtool_libs" != yes; then
7463e169010aSmrg	if test -n "$gentop"; then
7464e169010aSmrg	  func_show_eval '${RM}r "$gentop"'
7465e169010aSmrg	fi
74667914d74bSmrg
7467e169010aSmrg	# Create an invalid libtool object if no PIC, so that we don't
7468e169010aSmrg	# accidentally link it into a program.
7469e169010aSmrg	# $show "echo timestamp > $libobj"
7470e169010aSmrg	# $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
7471e169010aSmrg	exit $EXIT_SUCCESS
7472e169010aSmrg      fi
74737914d74bSmrg
7474e169010aSmrg      if test -n "$pic_flag" || test "$pic_mode" != default; then
7475e169010aSmrg	# Only do commands if we really have different PIC objects.
7476e169010aSmrg	reload_objs="$libobjs $reload_conv_objs"
7477e169010aSmrg	output="$libobj"
7478e169010aSmrg	func_execute_cmds "$reload_cmds" 'exit $?'
74797914d74bSmrg      fi
74807914d74bSmrg
7481e169010aSmrg      if test -n "$gentop"; then
7482e169010aSmrg	func_show_eval '${RM}r "$gentop"'
7483e169010aSmrg      fi
74847914d74bSmrg
7485e169010aSmrg      exit $EXIT_SUCCESS
7486e169010aSmrg      ;;
74877914d74bSmrg
7488e169010aSmrg    prog)
7489e169010aSmrg      case $host in
7490e169010aSmrg	*cygwin*) func_stripname '' '.exe' "$output"
7491e169010aSmrg	          output=$func_stripname_result.exe;;
74927914d74bSmrg      esac
7493e169010aSmrg      test -n "$vinfo" && \
7494e169010aSmrg	func_warning "\`-version-info' is ignored for programs"
74957914d74bSmrg
7496e169010aSmrg      test -n "$release" && \
7497e169010aSmrg	func_warning "\`-release' is ignored for programs"
74987914d74bSmrg
7499e169010aSmrg      test "$preload" = yes \
7500e169010aSmrg        && test "$dlopen_support" = unknown \
7501e169010aSmrg	&& test "$dlopen_self" = unknown \
7502e169010aSmrg	&& test "$dlopen_self_static" = unknown && \
7503e169010aSmrg	  func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
75047914d74bSmrg
7505e169010aSmrg      case $host in
7506e169010aSmrg      *-*-rhapsody* | *-*-darwin1.[012])
7507e169010aSmrg	# On Rhapsody replace the C library is the System framework
7508e169010aSmrg	compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
7509e169010aSmrg	finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
75107914d74bSmrg	;;
75117914d74bSmrg      esac
75127914d74bSmrg
7513e169010aSmrg      case $host in
7514e169010aSmrg      *-*-darwin*)
7515e169010aSmrg	# Don't allow lazy linking, it breaks C++ global constructors
7516e169010aSmrg	# But is supposedly fixed on 10.4 or later (yay!).
7517e169010aSmrg	if test "$tagname" = CXX ; then
7518e169010aSmrg	  case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
7519e169010aSmrg	    10.[0123])
7520e169010aSmrg	      compile_command="$compile_command ${wl}-bind_at_load"
7521e169010aSmrg	      finalize_command="$finalize_command ${wl}-bind_at_load"
7522e169010aSmrg	    ;;
7523e169010aSmrg	  esac
7524e169010aSmrg	fi
7525e169010aSmrg	# Time to change all our "foo.ltframework" stuff back to "-framework foo"
7526e169010aSmrg	compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
7527e169010aSmrg	finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
75287914d74bSmrg	;;
75297914d74bSmrg      esac
75307914d74bSmrg
75317914d74bSmrg
7532e169010aSmrg      # move library search paths that coincide with paths to not yet
7533e169010aSmrg      # installed libraries to the beginning of the library search list
7534e169010aSmrg      new_libs=
7535e169010aSmrg      for path in $notinst_path; do
7536e169010aSmrg	case " $new_libs " in
7537e169010aSmrg	*" -L$path/$objdir "*) ;;
75387914d74bSmrg	*)
7539e169010aSmrg	  case " $compile_deplibs " in
7540e169010aSmrg	  *" -L$path/$objdir "*)
7541e169010aSmrg	    new_libs="$new_libs -L$path/$objdir" ;;
7542e169010aSmrg	  esac
75437914d74bSmrg	  ;;
75447914d74bSmrg	esac
75457914d74bSmrg      done
7546e169010aSmrg      for deplib in $compile_deplibs; do
7547e169010aSmrg	case $deplib in
7548e169010aSmrg	-L*)
7549e169010aSmrg	  case " $new_libs " in
7550e169010aSmrg	  *" $deplib "*) ;;
7551e169010aSmrg	  *) new_libs="$new_libs $deplib" ;;
7552e169010aSmrg	  esac
7553e169010aSmrg	  ;;
7554e169010aSmrg	*) new_libs="$new_libs $deplib" ;;
7555e169010aSmrg	esac
7556e169010aSmrg      done
7557e169010aSmrg      compile_deplibs="$new_libs"
75587914d74bSmrg
75597914d74bSmrg
7560e169010aSmrg      compile_command="$compile_command $compile_deplibs"
7561e169010aSmrg      finalize_command="$finalize_command $finalize_deplibs"
75627914d74bSmrg
7563e169010aSmrg      if test -n "$rpath$xrpath"; then
7564e169010aSmrg	# If the user specified any rpath flags, then add them.
7565e169010aSmrg	for libdir in $rpath $xrpath; do
7566e169010aSmrg	  # This is the magic to use -rpath.
7567e169010aSmrg	  case "$finalize_rpath " in
7568e169010aSmrg	  *" $libdir "*) ;;
7569e169010aSmrg	  *) finalize_rpath="$finalize_rpath $libdir" ;;
7570e169010aSmrg	  esac
7571e169010aSmrg	done
7572e169010aSmrg      fi
75737914d74bSmrg
7574e169010aSmrg      # Now hardcode the library paths
7575e169010aSmrg      rpath=
7576e169010aSmrg      hardcode_libdirs=
7577e169010aSmrg      for libdir in $compile_rpath $finalize_rpath; do
7578e169010aSmrg	if test -n "$hardcode_libdir_flag_spec"; then
7579e169010aSmrg	  if test -n "$hardcode_libdir_separator"; then
7580e169010aSmrg	    if test -z "$hardcode_libdirs"; then
7581e169010aSmrg	      hardcode_libdirs="$libdir"
7582e169010aSmrg	    else
7583e169010aSmrg	      # Just accumulate the unique libdirs.
7584e169010aSmrg	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
7585e169010aSmrg	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
7586e169010aSmrg		;;
7587e169010aSmrg	      *)
7588e169010aSmrg		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
7589e169010aSmrg		;;
7590e169010aSmrg	      esac
7591e169010aSmrg	    fi
7592e169010aSmrg	  else
7593e169010aSmrg	    eval flag=\"$hardcode_libdir_flag_spec\"
7594e169010aSmrg	    rpath="$rpath $flag"
7595e169010aSmrg	  fi
7596e169010aSmrg	elif test -n "$runpath_var"; then
7597e169010aSmrg	  case "$perm_rpath " in
75987914d74bSmrg	  *" $libdir "*) ;;
7599e169010aSmrg	  *) perm_rpath="$perm_rpath $libdir" ;;
76007914d74bSmrg	  esac
7601e169010aSmrg	fi
7602e169010aSmrg	case $host in
7603e169010aSmrg	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
7604e169010aSmrg	  testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
7605e169010aSmrg	  case :$dllsearchpath: in
7606e169010aSmrg	  *":$libdir:"*) ;;
7607e169010aSmrg	  ::) dllsearchpath=$libdir;;
7608e169010aSmrg	  *) dllsearchpath="$dllsearchpath:$libdir";;
7609e169010aSmrg	  esac
7610e169010aSmrg	  case :$dllsearchpath: in
7611e169010aSmrg	  *":$testbindir:"*) ;;
7612e169010aSmrg	  ::) dllsearchpath=$testbindir;;
7613e169010aSmrg	  *) dllsearchpath="$dllsearchpath:$testbindir";;
7614e169010aSmrg	  esac
7615e169010aSmrg	  ;;
7616e169010aSmrg	esac
7617e169010aSmrg      done
7618e169010aSmrg      # Substitute the hardcoded libdirs into the rpath.
7619e169010aSmrg      if test -n "$hardcode_libdir_separator" &&
7620e169010aSmrg	 test -n "$hardcode_libdirs"; then
7621e169010aSmrg	libdir="$hardcode_libdirs"
7622e169010aSmrg	eval rpath=\" $hardcode_libdir_flag_spec\"
7623e169010aSmrg      fi
7624e169010aSmrg      compile_rpath="$rpath"
7625e169010aSmrg
7626e169010aSmrg      rpath=
7627e169010aSmrg      hardcode_libdirs=
7628e169010aSmrg      for libdir in $finalize_rpath; do
7629e169010aSmrg	if test -n "$hardcode_libdir_flag_spec"; then
7630e169010aSmrg	  if test -n "$hardcode_libdir_separator"; then
7631e169010aSmrg	    if test -z "$hardcode_libdirs"; then
7632e169010aSmrg	      hardcode_libdirs="$libdir"
7633e169010aSmrg	    else
7634e169010aSmrg	      # Just accumulate the unique libdirs.
7635e169010aSmrg	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
7636e169010aSmrg	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
7637e169010aSmrg		;;
7638e169010aSmrg	      *)
7639e169010aSmrg		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
7640e169010aSmrg		;;
7641e169010aSmrg	      esac
7642e169010aSmrg	    fi
7643e169010aSmrg	  else
7644e169010aSmrg	    eval flag=\"$hardcode_libdir_flag_spec\"
7645e169010aSmrg	    rpath="$rpath $flag"
7646e169010aSmrg	  fi
7647e169010aSmrg	elif test -n "$runpath_var"; then
7648e169010aSmrg	  case "$finalize_perm_rpath " in
76497914d74bSmrg	  *" $libdir "*) ;;
7650e169010aSmrg	  *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
76517914d74bSmrg	  esac
76527914d74bSmrg	fi
7653e169010aSmrg      done
7654e169010aSmrg      # Substitute the hardcoded libdirs into the rpath.
7655e169010aSmrg      if test -n "$hardcode_libdir_separator" &&
7656e169010aSmrg	 test -n "$hardcode_libdirs"; then
7657e169010aSmrg	libdir="$hardcode_libdirs"
7658e169010aSmrg	eval rpath=\" $hardcode_libdir_flag_spec\"
7659e169010aSmrg      fi
7660e169010aSmrg      finalize_rpath="$rpath"
76617914d74bSmrg
7662e169010aSmrg      if test -n "$libobjs" && test "$build_old_libs" = yes; then
7663e169010aSmrg	# Transform all the library objects into standard objects.
7664e169010aSmrg	compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
7665e169010aSmrg	finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
7666e169010aSmrg      fi
76677914d74bSmrg
7668e169010aSmrg      func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
76697914d74bSmrg
7670e169010aSmrg      # template prelinking step
7671e169010aSmrg      if test -n "$prelink_cmds"; then
7672e169010aSmrg	func_execute_cmds "$prelink_cmds" 'exit $?'
7673e169010aSmrg      fi
76747914d74bSmrg
7675e169010aSmrg      wrappers_required=yes
7676e169010aSmrg      case $host in
7677e169010aSmrg      *cygwin* | *mingw* )
7678e169010aSmrg        if test "$build_libtool_libs" != yes; then
7679e169010aSmrg          wrappers_required=no
7680e169010aSmrg        fi
7681e169010aSmrg        ;;
7682e169010aSmrg      *cegcc)
7683e169010aSmrg        # Disable wrappers for cegcc, we are cross compiling anyway.
7684e169010aSmrg        wrappers_required=no
7685e169010aSmrg        ;;
7686e169010aSmrg      *)
7687e169010aSmrg        if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
7688e169010aSmrg          wrappers_required=no
7689e169010aSmrg        fi
7690e169010aSmrg        ;;
7691e169010aSmrg      esac
7692e169010aSmrg      if test "$wrappers_required" = no; then
7693e169010aSmrg	# Replace the output file specification.
7694e169010aSmrg	compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
7695e169010aSmrg	link_command="$compile_command$compile_rpath"
76967914d74bSmrg
7697e169010aSmrg	# We have no uninstalled library dependencies, so finalize right now.
7698e169010aSmrg	exit_status=0
7699e169010aSmrg	func_show_eval "$link_command" 'exit_status=$?'
77007914d74bSmrg
7701e169010aSmrg	# Delete the generated files.
7702e169010aSmrg	if test -f "$output_objdir/${outputname}S.${objext}"; then
7703e169010aSmrg	  func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
7704e169010aSmrg	fi
77057914d74bSmrg
7706e169010aSmrg	exit $exit_status
7707e169010aSmrg      fi
77087914d74bSmrg
7709e169010aSmrg      if test -n "$compile_shlibpath$finalize_shlibpath"; then
7710e169010aSmrg	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
7711e169010aSmrg      fi
7712e169010aSmrg      if test -n "$finalize_shlibpath"; then
7713e169010aSmrg	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
7714e169010aSmrg      fi
77157914d74bSmrg
7716e169010aSmrg      compile_var=
7717e169010aSmrg      finalize_var=
7718e169010aSmrg      if test -n "$runpath_var"; then
7719e169010aSmrg	if test -n "$perm_rpath"; then
7720e169010aSmrg	  # We should set the runpath_var.
7721e169010aSmrg	  rpath=
7722e169010aSmrg	  for dir in $perm_rpath; do
7723e169010aSmrg	    rpath="$rpath$dir:"
77247914d74bSmrg	  done
7725e169010aSmrg	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
77267914d74bSmrg	fi
7727e169010aSmrg	if test -n "$finalize_perm_rpath"; then
7728e169010aSmrg	  # We should set the runpath_var.
7729e169010aSmrg	  rpath=
7730e169010aSmrg	  for dir in $finalize_perm_rpath; do
7731e169010aSmrg	    rpath="$rpath$dir:"
7732e169010aSmrg	  done
7733e169010aSmrg	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
7734e169010aSmrg	fi
7735e169010aSmrg      fi
77367914d74bSmrg
7737e169010aSmrg      if test "$no_install" = yes; then
7738e169010aSmrg	# We don't need to create a wrapper script.
7739e169010aSmrg	link_command="$compile_var$compile_command$compile_rpath"
7740e169010aSmrg	# Replace the output file specification.
7741e169010aSmrg	link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
7742e169010aSmrg	# Delete the old output file.
7743e169010aSmrg	$opt_dry_run || $RM $output
7744e169010aSmrg	# Link the executable and exit
7745e169010aSmrg	func_show_eval "$link_command" 'exit $?'
7746e169010aSmrg	exit $EXIT_SUCCESS
7747e169010aSmrg      fi
77487914d74bSmrg
7749e169010aSmrg      if test "$hardcode_action" = relink; then
7750e169010aSmrg	# Fast installation is not supported
7751e169010aSmrg	link_command="$compile_var$compile_command$compile_rpath"
7752e169010aSmrg	relink_command="$finalize_var$finalize_command$finalize_rpath"
77537914d74bSmrg
7754e169010aSmrg	func_warning "this platform does not like uninstalled shared libraries"
7755e169010aSmrg	func_warning "\`$output' will be relinked during installation"
7756e169010aSmrg      else
7757e169010aSmrg	if test "$fast_install" != no; then
7758e169010aSmrg	  link_command="$finalize_var$compile_command$finalize_rpath"
7759e169010aSmrg	  if test "$fast_install" = yes; then
7760e169010aSmrg	    relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
7761e169010aSmrg	  else
7762e169010aSmrg	    # fast_install is set to needless
7763e169010aSmrg	    relink_command=
7764e169010aSmrg	  fi
77657914d74bSmrg	else
7766e169010aSmrg	  link_command="$compile_var$compile_command$compile_rpath"
7767e169010aSmrg	  relink_command="$finalize_var$finalize_command$finalize_rpath"
77687914d74bSmrg	fi
7769e169010aSmrg      fi
77707914d74bSmrg
7771e169010aSmrg      # Replace the output file specification.
7772e169010aSmrg      link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
77737914d74bSmrg
7774e169010aSmrg      # Delete the old output files.
7775e169010aSmrg      $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
77767914d74bSmrg
7777e169010aSmrg      func_show_eval "$link_command" 'exit $?'
77787914d74bSmrg
7779e169010aSmrg      # Now create the wrapper script.
7780e169010aSmrg      func_verbose "creating $output"
77817914d74bSmrg
7782e169010aSmrg      # Quote the relink command for shipping.
7783e169010aSmrg      if test -n "$relink_command"; then
7784e169010aSmrg	# Preserve any variables that may affect compiler behavior
7785e169010aSmrg	for var in $variables_saved_for_relink; do
7786e169010aSmrg	  if eval test -z \"\${$var+set}\"; then
7787e169010aSmrg	    relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
7788e169010aSmrg	  elif eval var_value=\$$var; test -z "$var_value"; then
7789e169010aSmrg	    relink_command="$var=; export $var; $relink_command"
7790e169010aSmrg	  else
7791e169010aSmrg	    func_quote_for_eval "$var_value"
7792e169010aSmrg	    relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
7793e169010aSmrg	  fi
7794e169010aSmrg	done
7795e169010aSmrg	relink_command="(cd `pwd`; $relink_command)"
7796e169010aSmrg	relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
7797e169010aSmrg      fi
77987914d74bSmrg
7799e169010aSmrg      # Quote $ECHO for shipping.
7800e169010aSmrg      if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then
7801e169010aSmrg	case $progpath in
7802e169010aSmrg	[\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
7803e169010aSmrg	*) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
78047914d74bSmrg	esac
7805e169010aSmrg	qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"`
7806e169010aSmrg      else
7807e169010aSmrg	qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"`
7808e169010aSmrg      fi
78097914d74bSmrg
7810e169010aSmrg      # Only actually do things if not in dry run mode.
7811e169010aSmrg      $opt_dry_run || {
7812e169010aSmrg	# win32 will think the script is a binary if it has
7813e169010aSmrg	# a .exe suffix, so we strip it off here.
7814e169010aSmrg	case $output in
7815e169010aSmrg	  *.exe) func_stripname '' '.exe' "$output"
7816e169010aSmrg	         output=$func_stripname_result ;;
7817e169010aSmrg	esac
7818e169010aSmrg	# test for cygwin because mv fails w/o .exe extensions
78197914d74bSmrg	case $host in
7820e169010aSmrg	  *cygwin*)
7821e169010aSmrg	    exeext=.exe
7822e169010aSmrg	    func_stripname '' '.exe' "$outputname"
7823e169010aSmrg	    outputname=$func_stripname_result ;;
7824e169010aSmrg	  *) exeext= ;;
78257914d74bSmrg	esac
7826e169010aSmrg	case $host in
7827e169010aSmrg	  *cygwin* | *mingw* )
7828e169010aSmrg	    func_dirname_and_basename "$output" "" "."
7829e169010aSmrg	    output_name=$func_basename_result
7830e169010aSmrg	    output_path=$func_dirname_result
7831e169010aSmrg	    cwrappersource="$output_path/$objdir/lt-$output_name.c"
7832e169010aSmrg	    cwrapper="$output_path/$output_name.exe"
7833e169010aSmrg	    $RM $cwrappersource $cwrapper
7834e169010aSmrg	    trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
7835e169010aSmrg
7836e169010aSmrg	    func_emit_cwrapperexe_src > $cwrappersource
7837e169010aSmrg
7838e169010aSmrg	    # The wrapper executable is built using the $host compiler,
7839e169010aSmrg	    # because it contains $host paths and files. If cross-
7840e169010aSmrg	    # compiling, it, like the target executable, must be
7841e169010aSmrg	    # executed on the $host or under an emulation environment.
7842e169010aSmrg	    $opt_dry_run || {
7843e169010aSmrg	      $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
7844e169010aSmrg	      $STRIP $cwrapper
7845e169010aSmrg	    }
78467914d74bSmrg
7847e169010aSmrg	    # Now, create the wrapper script for func_source use:
7848e169010aSmrg	    func_ltwrapper_scriptname $cwrapper
7849e169010aSmrg	    $RM $func_ltwrapper_scriptname_result
7850e169010aSmrg	    trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
7851e169010aSmrg	    $opt_dry_run || {
7852e169010aSmrg	      # note: this script will not be executed, so do not chmod.
7853e169010aSmrg	      if test "x$build" = "x$host" ; then
7854e169010aSmrg		$cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
78557914d74bSmrg	      else
7856e169010aSmrg		func_emit_wrapper no > $func_ltwrapper_scriptname_result
78577914d74bSmrg	      fi
7858e169010aSmrg	    }
7859e169010aSmrg	  ;;
7860e169010aSmrg	  * )
7861e169010aSmrg	    $RM $output
7862e169010aSmrg	    trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
78637914d74bSmrg
7864e169010aSmrg	    func_emit_wrapper no > $output
7865e169010aSmrg	    chmod +x $output
78667914d74bSmrg	  ;;
78677914d74bSmrg	esac
7868e169010aSmrg      }
7869e169010aSmrg      exit $EXIT_SUCCESS
7870e169010aSmrg      ;;
7871e169010aSmrg    esac
78727914d74bSmrg
7873e169010aSmrg    # See if we need to build an old-fashioned archive.
7874e169010aSmrg    for oldlib in $oldlibs; do
78757914d74bSmrg
7876e169010aSmrg      if test "$build_libtool_libs" = convenience; then
7877e169010aSmrg	oldobjs="$libobjs_save $symfileobj"
7878e169010aSmrg	addlibs="$convenience"
7879e169010aSmrg	build_libtool_libs=no
7880e169010aSmrg      else
7881e169010aSmrg	if test "$build_libtool_libs" = module; then
7882e169010aSmrg	  oldobjs="$libobjs_save"
7883e169010aSmrg	  build_libtool_libs=no
7884e169010aSmrg	else
7885e169010aSmrg	  oldobjs="$old_deplibs $non_pic_objects"
7886e169010aSmrg	  if test "$preload" = yes && test -f "$symfileobj"; then
7887e169010aSmrg	    oldobjs="$oldobjs $symfileobj"
7888e169010aSmrg	  fi
7889e169010aSmrg	fi
7890e169010aSmrg	addlibs="$old_convenience"
78917914d74bSmrg      fi
78927914d74bSmrg
7893e169010aSmrg      if test -n "$addlibs"; then
7894e169010aSmrg	gentop="$output_objdir/${outputname}x"
7895e169010aSmrg	generated="$generated $gentop"
78967914d74bSmrg
7897e169010aSmrg	func_extract_archives $gentop $addlibs
7898e169010aSmrg	oldobjs="$oldobjs $func_extract_archives_result"
7899e169010aSmrg      fi
79007914d74bSmrg
7901e169010aSmrg      # Do each command in the archive commands.
7902e169010aSmrg      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
7903e169010aSmrg	cmds=$old_archive_from_new_cmds
7904e169010aSmrg      else
79057914d74bSmrg
7906e169010aSmrg	# Add any objects from preloaded convenience libraries
7907e169010aSmrg	if test -n "$dlprefiles"; then
7908e169010aSmrg	  gentop="$output_objdir/${outputname}x"
7909e169010aSmrg	  generated="$generated $gentop"
79107914d74bSmrg
7911e169010aSmrg	  func_extract_archives $gentop $dlprefiles
7912e169010aSmrg	  oldobjs="$oldobjs $func_extract_archives_result"
7913e169010aSmrg	fi
79147914d74bSmrg
7915e169010aSmrg	# POSIX demands no paths to be encoded in archives.  We have
7916e169010aSmrg	# to avoid creating archives with duplicate basenames if we
7917e169010aSmrg	# might have to extract them afterwards, e.g., when creating a
7918e169010aSmrg	# static archive out of a convenience library, or when linking
7919e169010aSmrg	# the entirety of a libtool archive into another (currently
7920e169010aSmrg	# not supported by libtool).
7921e169010aSmrg	if (for obj in $oldobjs
7922e169010aSmrg	    do
7923e169010aSmrg	      func_basename "$obj"
7924e169010aSmrg	      $ECHO "$func_basename_result"
7925e169010aSmrg	    done | sort | sort -uc >/dev/null 2>&1); then
7926e169010aSmrg	  :
7927e169010aSmrg	else
7928e169010aSmrg	  $ECHO "copying selected object files to avoid basename conflicts..."
7929e169010aSmrg	  gentop="$output_objdir/${outputname}x"
7930e169010aSmrg	  generated="$generated $gentop"
7931e169010aSmrg	  func_mkdir_p "$gentop"
7932e169010aSmrg	  save_oldobjs=$oldobjs
7933e169010aSmrg	  oldobjs=
7934e169010aSmrg	  counter=1
7935e169010aSmrg	  for obj in $save_oldobjs
7936e169010aSmrg	  do
7937e169010aSmrg	    func_basename "$obj"
7938e169010aSmrg	    objbase="$func_basename_result"
7939e169010aSmrg	    case " $oldobjs " in
7940e169010aSmrg	    " ") oldobjs=$obj ;;
7941e169010aSmrg	    *[\ /]"$objbase "*)
7942e169010aSmrg	      while :; do
7943e169010aSmrg		# Make sure we don't pick an alternate name that also
7944e169010aSmrg		# overlaps.
7945e169010aSmrg		newobj=lt$counter-$objbase
7946e169010aSmrg		func_arith $counter + 1
7947e169010aSmrg		counter=$func_arith_result
7948e169010aSmrg		case " $oldobjs " in
7949e169010aSmrg		*[\ /]"$newobj "*) ;;
7950e169010aSmrg		*) if test ! -f "$gentop/$newobj"; then break; fi ;;
7951e169010aSmrg		esac
7952e169010aSmrg	      done
7953e169010aSmrg	      func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
7954e169010aSmrg	      oldobjs="$oldobjs $gentop/$newobj"
7955e169010aSmrg	      ;;
7956e169010aSmrg	    *) oldobjs="$oldobjs $obj" ;;
7957e169010aSmrg	    esac
79587914d74bSmrg	  done
79597914d74bSmrg	fi
7960e169010aSmrg	eval cmds=\"$old_archive_cmds\"
79617914d74bSmrg
7962e169010aSmrg	func_len " $cmds"
7963e169010aSmrg	len=$func_len_result
7964e169010aSmrg	if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
7965e169010aSmrg	  cmds=$old_archive_cmds
7966e169010aSmrg	else
7967e169010aSmrg	  # the command line is too long to link in one step, link in parts
7968e169010aSmrg	  func_verbose "using piecewise archive linking..."
7969e169010aSmrg	  save_RANLIB=$RANLIB
7970e169010aSmrg	  RANLIB=:
7971e169010aSmrg	  objlist=
7972e169010aSmrg	  concat_cmds=
7973e169010aSmrg	  save_oldobjs=$oldobjs
7974e169010aSmrg	  oldobjs=
7975e169010aSmrg	  # Is there a better way of finding the last object in the list?
7976e169010aSmrg	  for obj in $save_oldobjs
7977e169010aSmrg	  do
7978e169010aSmrg	    last_oldobj=$obj
7979e169010aSmrg	  done
7980e169010aSmrg	  eval test_cmds=\"$old_archive_cmds\"
7981e169010aSmrg	  func_len " $test_cmds"
7982e169010aSmrg	  len0=$func_len_result
7983e169010aSmrg	  len=$len0
7984e169010aSmrg	  for obj in $save_oldobjs
7985e169010aSmrg	  do
7986e169010aSmrg	    func_len " $obj"
7987e169010aSmrg	    func_arith $len + $func_len_result
7988e169010aSmrg	    len=$func_arith_result
7989e169010aSmrg	    func_append objlist " $obj"
7990e169010aSmrg	    if test "$len" -lt "$max_cmd_len"; then
7991e169010aSmrg	      :
7992e169010aSmrg	    else
7993e169010aSmrg	      # the above command should be used before it gets too long
7994e169010aSmrg	      oldobjs=$objlist
7995e169010aSmrg	      if test "$obj" = "$last_oldobj" ; then
7996e169010aSmrg		RANLIB=$save_RANLIB
7997e169010aSmrg	      fi
7998e169010aSmrg	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
7999e169010aSmrg	      eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
8000e169010aSmrg	      objlist=
8001e169010aSmrg	      len=$len0
8002e169010aSmrg	    fi
8003e169010aSmrg	  done
8004e169010aSmrg	  RANLIB=$save_RANLIB
8005e169010aSmrg	  oldobjs=$objlist
8006e169010aSmrg	  if test "X$oldobjs" = "X" ; then
8007e169010aSmrg	    eval cmds=\"\$concat_cmds\"
8008e169010aSmrg	  else
8009e169010aSmrg	    eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
8010e169010aSmrg	  fi
8011e169010aSmrg	fi
8012e169010aSmrg      fi
8013e169010aSmrg      func_execute_cmds "$cmds" 'exit $?'
80147914d74bSmrg    done
80157914d74bSmrg
8016e169010aSmrg    test -n "$generated" && \
8017e169010aSmrg      func_show_eval "${RM}r$generated"
80187914d74bSmrg
8019e169010aSmrg    # Now create the libtool archive.
8020e169010aSmrg    case $output in
8021e169010aSmrg    *.la)
8022e169010aSmrg      old_library=
8023e169010aSmrg      test "$build_old_libs" = yes && old_library="$libname.$libext"
8024e169010aSmrg      func_verbose "creating $output"
80257914d74bSmrg
8026e169010aSmrg      # Preserve any variables that may affect compiler behavior
8027e169010aSmrg      for var in $variables_saved_for_relink; do
8028e169010aSmrg	if eval test -z \"\${$var+set}\"; then
8029e169010aSmrg	  relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
8030e169010aSmrg	elif eval var_value=\$$var; test -z "$var_value"; then
8031e169010aSmrg	  relink_command="$var=; export $var; $relink_command"
80327914d74bSmrg	else
8033e169010aSmrg	  func_quote_for_eval "$var_value"
8034e169010aSmrg	  relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
80357914d74bSmrg	fi
8036e169010aSmrg      done
8037e169010aSmrg      # Quote the link command for shipping.
8038e169010aSmrg      relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
8039e169010aSmrg      relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
8040e169010aSmrg      if test "$hardcode_automatic" = yes ; then
8041e169010aSmrg	relink_command=
8042e169010aSmrg      fi
80437914d74bSmrg
8044e169010aSmrg      # Only create the output if not a dry run.
8045e169010aSmrg      $opt_dry_run || {
8046e169010aSmrg	for installed in no yes; do
8047e169010aSmrg	  if test "$installed" = yes; then
8048e169010aSmrg	    if test -z "$install_libdir"; then
8049e169010aSmrg	      break
8050e169010aSmrg	    fi
8051e169010aSmrg	    output="$output_objdir/$outputname"i
8052e169010aSmrg	    # Replace all uninstalled libtool libraries with the installed ones
8053e169010aSmrg	    newdependency_libs=
8054e169010aSmrg	    for deplib in $dependency_libs; do
8055e169010aSmrg	      case $deplib in
8056e169010aSmrg	      *.la)
8057e169010aSmrg		func_basename "$deplib"
8058e169010aSmrg		name="$func_basename_result"
8059e169010aSmrg		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
8060e169010aSmrg		test -z "$libdir" && \
8061e169010aSmrg		  func_fatal_error "\`$deplib' is not a valid libtool archive"
8062e169010aSmrg		newdependency_libs="$newdependency_libs $libdir/$name"
8063e169010aSmrg		;;
8064e169010aSmrg	      *) newdependency_libs="$newdependency_libs $deplib" ;;
8065e169010aSmrg	      esac
8066e169010aSmrg	    done
8067e169010aSmrg	    dependency_libs="$newdependency_libs"
8068e169010aSmrg	    newdlfiles=
8069e169010aSmrg
8070e169010aSmrg	    for lib in $dlfiles; do
8071e169010aSmrg	      case $lib in
8072e169010aSmrg	      *.la)
8073e169010aSmrg	        func_basename "$lib"
8074e169010aSmrg		name="$func_basename_result"
8075e169010aSmrg		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
8076e169010aSmrg		test -z "$libdir" && \
8077e169010aSmrg		  func_fatal_error "\`$lib' is not a valid libtool archive"
8078e169010aSmrg		newdlfiles="$newdlfiles $libdir/$name"
8079e169010aSmrg		;;
8080e169010aSmrg	      *) newdlfiles="$newdlfiles $lib" ;;
8081e169010aSmrg	      esac
8082e169010aSmrg	    done
8083e169010aSmrg	    dlfiles="$newdlfiles"
8084e169010aSmrg	    newdlprefiles=
8085e169010aSmrg	    for lib in $dlprefiles; do
8086e169010aSmrg	      case $lib in
8087e169010aSmrg	      *.la)
8088e169010aSmrg		# Only pass preopened files to the pseudo-archive (for
8089e169010aSmrg		# eventual linking with the app. that links it) if we
8090e169010aSmrg		# didn't already link the preopened objects directly into
8091e169010aSmrg		# the library:
8092e169010aSmrg		func_basename "$lib"
8093e169010aSmrg		name="$func_basename_result"
8094e169010aSmrg		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
8095e169010aSmrg		test -z "$libdir" && \
8096e169010aSmrg		  func_fatal_error "\`$lib' is not a valid libtool archive"
8097e169010aSmrg		newdlprefiles="$newdlprefiles $libdir/$name"
8098e169010aSmrg		;;
8099e169010aSmrg	      esac
8100e169010aSmrg	    done
8101e169010aSmrg	    dlprefiles="$newdlprefiles"
8102e169010aSmrg	  else
8103e169010aSmrg	    newdlfiles=
8104e169010aSmrg	    for lib in $dlfiles; do
8105e169010aSmrg	      case $lib in
8106e169010aSmrg		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
8107e169010aSmrg		*) abs=`pwd`"/$lib" ;;
8108e169010aSmrg	      esac
8109e169010aSmrg	      newdlfiles="$newdlfiles $abs"
8110e169010aSmrg	    done
8111e169010aSmrg	    dlfiles="$newdlfiles"
8112e169010aSmrg	    newdlprefiles=
8113e169010aSmrg	    for lib in $dlprefiles; do
8114e169010aSmrg	      case $lib in
8115e169010aSmrg		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
8116e169010aSmrg		*) abs=`pwd`"/$lib" ;;
8117e169010aSmrg	      esac
8118e169010aSmrg	      newdlprefiles="$newdlprefiles $abs"
8119e169010aSmrg	    done
8120e169010aSmrg	    dlprefiles="$newdlprefiles"
8121e169010aSmrg	  fi
8122e169010aSmrg	  $RM $output
8123e169010aSmrg	  # place dlname in correct position for cygwin
8124e169010aSmrg	  tdlname=$dlname
8125e169010aSmrg	  case $host,$output,$installed,$module,$dlname in
8126e169010aSmrg	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
8127e169010aSmrg	  esac
8128e169010aSmrg	  $ECHO > $output "\
8129e169010aSmrg# $outputname - a libtool library file
8130e169010aSmrg# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
8131e169010aSmrg#
8132e169010aSmrg# Please DO NOT delete this file!
8133e169010aSmrg# It is necessary for linking the library.
81347914d74bSmrg
8135e169010aSmrg# The name that we can dlopen(3).
8136e169010aSmrgdlname='$tdlname'
81377914d74bSmrg
8138e169010aSmrg# Names of this library.
8139e169010aSmrglibrary_names='$library_names'
81407914d74bSmrg
8141e169010aSmrg# The name of the static archive.
8142e169010aSmrgold_library='$old_library'
81437914d74bSmrg
8144e169010aSmrg# Linker flags that can not go in dependency_libs.
8145e169010aSmrginherited_linker_flags='$new_inherited_linker_flags'
81467914d74bSmrg
8147e169010aSmrg# Libraries that this one depends upon.
8148e169010aSmrgdependency_libs='$dependency_libs'
81497914d74bSmrg
8150e169010aSmrg# Names of additional weak libraries provided by this library
8151e169010aSmrgweak_library_names='$weak_libs'
81527914d74bSmrg
8153e169010aSmrg# Version information for $libname.
8154e169010aSmrgcurrent=$current
8155e169010aSmrgage=$age
8156e169010aSmrgrevision=$revision
81577914d74bSmrg
8158e169010aSmrg# Is this an already installed library?
8159e169010aSmrginstalled=$installed
81607914d74bSmrg
8161e169010aSmrg# Should we warn about portability when linking against -modules?
8162e169010aSmrgshouldnotlink=$module
81637914d74bSmrg
8164e169010aSmrg# Files to dlopen/dlpreopen
8165e169010aSmrgdlopen='$dlfiles'
8166e169010aSmrgdlpreopen='$dlprefiles'
81677914d74bSmrg
8168e169010aSmrg# Directory that this library needs to be installed in:
8169e169010aSmrglibdir='$install_libdir'"
8170e169010aSmrg	  if test "$installed" = no && test "$need_relink" = yes; then
8171e169010aSmrg	    $ECHO >> $output "\
8172e169010aSmrgrelink_command=\"$relink_command\""
8173e169010aSmrg	  fi
8174e169010aSmrg	done
8175e169010aSmrg      }
81767914d74bSmrg
8177e169010aSmrg      # Do a symbolic link so that the libtool archive can be found in
8178e169010aSmrg      # LD_LIBRARY_PATH before the program is installed.
8179e169010aSmrg      func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
8180e169010aSmrg      ;;
8181e169010aSmrg    esac
8182e169010aSmrg    exit $EXIT_SUCCESS
8183e169010aSmrg}
81847914d74bSmrg
8185e169010aSmrg{ test "$mode" = link || test "$mode" = relink; } &&
8186e169010aSmrg    func_mode_link ${1+"$@"}
81877914d74bSmrg
81887914d74bSmrg
8189e169010aSmrg# func_mode_uninstall arg...
8190e169010aSmrgfunc_mode_uninstall ()
8191e169010aSmrg{
8192e169010aSmrg    $opt_debug
8193e169010aSmrg    RM="$nonopt"
81947914d74bSmrg    files=
81957914d74bSmrg    rmforce=
81967914d74bSmrg    exit_status=0
81977914d74bSmrg
81987914d74bSmrg    # This variable tells wrapper scripts just to set variables rather
81997914d74bSmrg    # than running their programs.
82007914d74bSmrg    libtool_install_magic="$magic"
82017914d74bSmrg
82027914d74bSmrg    for arg
82037914d74bSmrg    do
82047914d74bSmrg      case $arg in
8205e169010aSmrg      -f) RM="$RM $arg"; rmforce=yes ;;
8206e169010aSmrg      -*) RM="$RM $arg" ;;
82077914d74bSmrg      *) files="$files $arg" ;;
82087914d74bSmrg      esac
82097914d74bSmrg    done
82107914d74bSmrg
8211e169010aSmrg    test -z "$RM" && \
8212e169010aSmrg      func_fatal_help "you must specify an RM program"
82137914d74bSmrg
82147914d74bSmrg    rmdirs=
82157914d74bSmrg
82167914d74bSmrg    origobjdir="$objdir"
82177914d74bSmrg    for file in $files; do
8218e169010aSmrg      func_dirname "$file" "" "."
8219e169010aSmrg      dir="$func_dirname_result"
8220e169010aSmrg      if test "X$dir" = X.; then
82217914d74bSmrg	objdir="$origobjdir"
82227914d74bSmrg      else
82237914d74bSmrg	objdir="$dir/$origobjdir"
82247914d74bSmrg      fi
8225e169010aSmrg      func_basename "$file"
8226e169010aSmrg      name="$func_basename_result"
82277914d74bSmrg      test "$mode" = uninstall && objdir="$dir"
82287914d74bSmrg
82297914d74bSmrg      # Remember objdir for removal later, being careful to avoid duplicates
82307914d74bSmrg      if test "$mode" = clean; then
82317914d74bSmrg	case " $rmdirs " in
82327914d74bSmrg	  *" $objdir "*) ;;
82337914d74bSmrg	  *) rmdirs="$rmdirs $objdir" ;;
82347914d74bSmrg	esac
82357914d74bSmrg      fi
82367914d74bSmrg
82377914d74bSmrg      # Don't error if the file doesn't exist and rm -f was used.
8238e169010aSmrg      if { test -L "$file"; } >/dev/null 2>&1 ||
8239e169010aSmrg	 { test -h "$file"; } >/dev/null 2>&1 ||
8240e169010aSmrg	 test -f "$file"; then
82417914d74bSmrg	:
82427914d74bSmrg      elif test -d "$file"; then
82437914d74bSmrg	exit_status=1
82447914d74bSmrg	continue
82457914d74bSmrg      elif test "$rmforce" = yes; then
82467914d74bSmrg	continue
82477914d74bSmrg      fi
82487914d74bSmrg
82497914d74bSmrg      rmfiles="$file"
82507914d74bSmrg
82517914d74bSmrg      case $name in
82527914d74bSmrg      *.la)
82537914d74bSmrg	# Possibly a libtool archive, so verify it.
8254e169010aSmrg	if func_lalib_p "$file"; then
8255e169010aSmrg	  func_source $dir/$name
82567914d74bSmrg
82577914d74bSmrg	  # Delete the libtool libraries and symlinks.
82587914d74bSmrg	  for n in $library_names; do
82597914d74bSmrg	    rmfiles="$rmfiles $objdir/$n"
82607914d74bSmrg	  done
82617914d74bSmrg	  test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
82627914d74bSmrg
82637914d74bSmrg	  case "$mode" in
82647914d74bSmrg	  clean)
82657914d74bSmrg	    case "  $library_names " in
82667914d74bSmrg	    # "  " in the beginning catches empty $dlname
82677914d74bSmrg	    *" $dlname "*) ;;
82687914d74bSmrg	    *) rmfiles="$rmfiles $objdir/$dlname" ;;
82697914d74bSmrg	    esac
8270e169010aSmrg	    test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
82717914d74bSmrg	    ;;
82727914d74bSmrg	  uninstall)
82737914d74bSmrg	    if test -n "$library_names"; then
82747914d74bSmrg	      # Do each command in the postuninstall commands.
8275e169010aSmrg	      func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
82767914d74bSmrg	    fi
82777914d74bSmrg
82787914d74bSmrg	    if test -n "$old_library"; then
82797914d74bSmrg	      # Do each command in the old_postuninstall commands.
8280e169010aSmrg	      func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
82817914d74bSmrg	    fi
82827914d74bSmrg	    # FIXME: should reinstall the best remaining shared library.
82837914d74bSmrg	    ;;
82847914d74bSmrg	  esac
82857914d74bSmrg	fi
82867914d74bSmrg	;;
82877914d74bSmrg
82887914d74bSmrg      *.lo)
82897914d74bSmrg	# Possibly a libtool object, so verify it.
8290e169010aSmrg	if func_lalib_p "$file"; then
82917914d74bSmrg
82927914d74bSmrg	  # Read the .lo file
8293e169010aSmrg	  func_source $dir/$name
82947914d74bSmrg
82957914d74bSmrg	  # Add PIC object to the list of files to remove.
8296e169010aSmrg	  if test -n "$pic_object" &&
8297e169010aSmrg	     test "$pic_object" != none; then
82987914d74bSmrg	    rmfiles="$rmfiles $dir/$pic_object"
82997914d74bSmrg	  fi
83007914d74bSmrg
83017914d74bSmrg	  # Add non-PIC object to the list of files to remove.
8302e169010aSmrg	  if test -n "$non_pic_object" &&
8303e169010aSmrg	     test "$non_pic_object" != none; then
83047914d74bSmrg	    rmfiles="$rmfiles $dir/$non_pic_object"
83057914d74bSmrg	  fi
83067914d74bSmrg	fi
83077914d74bSmrg	;;
83087914d74bSmrg
83097914d74bSmrg      *)
83107914d74bSmrg	if test "$mode" = clean ; then
83117914d74bSmrg	  noexename=$name
83127914d74bSmrg	  case $file in
83137914d74bSmrg	  *.exe)
8314e169010aSmrg	    func_stripname '' '.exe' "$file"
8315e169010aSmrg	    file=$func_stripname_result
8316e169010aSmrg	    func_stripname '' '.exe' "$name"
8317e169010aSmrg	    noexename=$func_stripname_result
83187914d74bSmrg	    # $file with .exe has already been added to rmfiles,
83197914d74bSmrg	    # add $file without .exe
83207914d74bSmrg	    rmfiles="$rmfiles $file"
83217914d74bSmrg	    ;;
83227914d74bSmrg	  esac
83237914d74bSmrg	  # Do a test to see if this is a libtool program.
8324e169010aSmrg	  if func_ltwrapper_p "$file"; then
8325e169010aSmrg	    if func_ltwrapper_executable_p "$file"; then
8326e169010aSmrg	      func_ltwrapper_scriptname "$file"
8327e169010aSmrg	      relink_command=
8328e169010aSmrg	      func_source $func_ltwrapper_scriptname_result
8329e169010aSmrg	      rmfiles="$rmfiles $func_ltwrapper_scriptname_result"
8330e169010aSmrg	    else
8331e169010aSmrg	      relink_command=
8332e169010aSmrg	      func_source $dir/$noexename
8333e169010aSmrg	    fi
83347914d74bSmrg
83357914d74bSmrg	    # note $name still contains .exe if it was in $file originally
83367914d74bSmrg	    # as does the version of $file that was added into $rmfiles
83377914d74bSmrg	    rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
83387914d74bSmrg	    if test "$fast_install" = yes && test -n "$relink_command"; then
83397914d74bSmrg	      rmfiles="$rmfiles $objdir/lt-$name"
83407914d74bSmrg	    fi
83417914d74bSmrg	    if test "X$noexename" != "X$name" ; then
83427914d74bSmrg	      rmfiles="$rmfiles $objdir/lt-${noexename}.c"
83437914d74bSmrg	    fi
83447914d74bSmrg	  fi
83457914d74bSmrg	fi
83467914d74bSmrg	;;
83477914d74bSmrg      esac
8348e169010aSmrg      func_show_eval "$RM $rmfiles" 'exit_status=1'
83497914d74bSmrg    done
83507914d74bSmrg    objdir="$origobjdir"
83517914d74bSmrg
83527914d74bSmrg    # Try to remove the ${objdir}s in the directories where we deleted files
83537914d74bSmrg    for dir in $rmdirs; do
83547914d74bSmrg      if test -d "$dir"; then
8355e169010aSmrg	func_show_eval "rmdir $dir >/dev/null 2>&1"
83567914d74bSmrg      fi
83577914d74bSmrg    done
83587914d74bSmrg
83597914d74bSmrg    exit $exit_status
8360e169010aSmrg}
83617914d74bSmrg
8362e169010aSmrg{ test "$mode" = uninstall || test "$mode" = clean; } &&
8363e169010aSmrg    func_mode_uninstall ${1+"$@"}
83647914d74bSmrg
8365e169010aSmrgtest -z "$mode" && {
8366e169010aSmrg  help="$generic_help"
8367e169010aSmrg  func_fatal_help "you must specify a MODE"
8368e169010aSmrg}
8369e169010aSmrg
8370e169010aSmrgtest -z "$exec_cmd" && \
8371e169010aSmrg  func_fatal_help "invalid operation mode \`$mode'"
83727914d74bSmrg
83737914d74bSmrgif test -n "$exec_cmd"; then
8374e169010aSmrg  eval exec "$exec_cmd"
83757914d74bSmrg  exit $EXIT_FAILURE
83767914d74bSmrgfi
83777914d74bSmrg
8378e169010aSmrgexit $exit_status
83797914d74bSmrg
83807914d74bSmrg
83817914d74bSmrg# The TAGs below are defined such that we never get into a situation
83827914d74bSmrg# in which we disable both kinds of libraries.  Given conflicting
83837914d74bSmrg# choices, we go for a static library, that is the most portable,
83847914d74bSmrg# since we can't tell whether shared libraries were disabled because
83857914d74bSmrg# the user asked for that or because the platform doesn't support
83867914d74bSmrg# them.  This is particularly important on AIX, because we don't
83877914d74bSmrg# support having both static and shared libraries enabled at the same
83887914d74bSmrg# time on that platform, so we default to a shared-only configuration.
83897914d74bSmrg# If a disable-shared tag is given, we'll fallback to a static-only
83907914d74bSmrg# configuration.  But we'll never go from static-only to shared-only.
83917914d74bSmrg
83927914d74bSmrg# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
8393e169010aSmrgbuild_libtool_libs=no
8394e169010aSmrgbuild_old_libs=yes
83957914d74bSmrg# ### END LIBTOOL TAG CONFIG: disable-shared
83967914d74bSmrg
83977914d74bSmrg# ### BEGIN LIBTOOL TAG CONFIG: disable-static
8398e169010aSmrgbuild_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
83997914d74bSmrg# ### END LIBTOOL TAG CONFIG: disable-static
84007914d74bSmrg
84017914d74bSmrg# Local Variables:
84027914d74bSmrg# mode:shell-script
84037914d74bSmrg# sh-indentation:2
84047914d74bSmrg# End:
8405e169010aSmrg# vi:sw=2
8406e169010aSmrg
8407