ltmain.sh revision 775e7de9
1775e7de9Smrg# Generated from ltmain.m4sh.
2775e7de9Smrg
3775e7de9Smrg# ltmain.sh (GNU libtool) 2.2.6
4775e7de9Smrg# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
5775e7de9Smrg
6775e7de9Smrg# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc.
7775e7de9Smrg# This is free software; see the source for copying conditions.  There is NO
8775e7de9Smrg# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
9775e7de9Smrg
10775e7de9Smrg# GNU Libtool is free software; you can redistribute it and/or modify
117a84e134Smrg# it under the terms of the GNU General Public License as published by
127a84e134Smrg# the Free Software Foundation; either version 2 of the License, or
137a84e134Smrg# (at your option) any later version.
147a84e134Smrg#
15775e7de9Smrg# As a special exception to the GNU General Public License,
16775e7de9Smrg# if you distribute this file as part of a program or library that
17775e7de9Smrg# is built using GNU Libtool, you may include this file under the
18775e7de9Smrg# same distribution terms that you use for the rest of that program.
19775e7de9Smrg#
20775e7de9Smrg# GNU Libtool is distributed in the hope that it will be useful, but
217a84e134Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of
227a84e134Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
237a84e134Smrg# General Public License for more details.
247a84e134Smrg#
257a84e134Smrg# You should have received a copy of the GNU General Public License
26775e7de9Smrg# along with GNU Libtool; see the file COPYING.  If not, a copy
27775e7de9Smrg# can be downloaded from http://www.gnu.org/licenses/gpl.html,
28775e7de9Smrg# or obtained by writing to the Free Software Foundation, Inc.,
29775e7de9Smrg# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
30ab902922Smrg
31775e7de9Smrg# Usage: $progname [OPTION]... [MODE-ARG]...
32775e7de9Smrg#
33775e7de9Smrg# Provide generalized library-building support services.
34775e7de9Smrg#
35775e7de9Smrg#     --config             show all configuration variables
36775e7de9Smrg#     --debug              enable verbose shell tracing
37775e7de9Smrg# -n, --dry-run            display commands without modifying any files
38775e7de9Smrg#     --features           display basic configuration information and exit
39775e7de9Smrg#     --mode=MODE          use operation mode MODE
40775e7de9Smrg#     --preserve-dup-deps  don't remove duplicate dependency libraries
41775e7de9Smrg#     --quiet, --silent    don't print informational messages
42775e7de9Smrg#     --tag=TAG            use configuration variables from tag TAG
43775e7de9Smrg# -v, --verbose            print informational messages (default)
44775e7de9Smrg#     --version            print version information
45775e7de9Smrg# -h, --help               print short or long help message
46775e7de9Smrg#
47775e7de9Smrg# MODE must be one of the following:
48775e7de9Smrg#
49775e7de9Smrg#       clean              remove files from the build directory
50775e7de9Smrg#       compile            compile a source file into a libtool object
51775e7de9Smrg#       execute            automatically set library path, then run a program
52775e7de9Smrg#       finish             complete the installation of libtool libraries
53775e7de9Smrg#       install            install libraries or executables
54775e7de9Smrg#       link               create a library or an executable
55775e7de9Smrg#       uninstall          remove libraries from an installed directory
56775e7de9Smrg#
57775e7de9Smrg# MODE-ARGS vary depending on the MODE.
58775e7de9Smrg# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
59775e7de9Smrg#
60775e7de9Smrg# When reporting a bug, please describe a test case to reproduce it and
61775e7de9Smrg# include the following information:
62775e7de9Smrg#
63775e7de9Smrg#       host-triplet:	$host
64775e7de9Smrg#       shell:		$SHELL
65775e7de9Smrg#       compiler:		$LTCC
66775e7de9Smrg#       compiler flags:		$LTCFLAGS
67775e7de9Smrg#       linker:		$LD (gnu? $with_gnu_ld)
68775e7de9Smrg#       $progname:		(GNU libtool) 2.2.6
69775e7de9Smrg#       automake:		$automake_version
70775e7de9Smrg#       autoconf:		$autoconf_version
71775e7de9Smrg#
72775e7de9Smrg# Report bugs to <bug-libtool@gnu.org>.
737a84e134Smrg
747a84e134SmrgPROGRAM=ltmain.sh
757a84e134SmrgPACKAGE=libtool
76775e7de9SmrgVERSION=2.2.6
77775e7de9SmrgTIMESTAMP=""
78775e7de9Smrgpackage_revision=1.3012
79ab902922Smrg
80775e7de9Smrg# Be Bourne compatible
81ab902922Smrgif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
82ab902922Smrg  emulate sh
83ab902922Smrg  NULLCMD=:
84ab902922Smrg  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
85ab902922Smrg  # is contrary to our usage.  Disable this feature.
86ab902922Smrg  alias -g '${1+"$@"}'='"$@"'
877a84e134Smrg  setopt NO_GLOB_SUBST
88ab902922Smrgelse
89ab902922Smrg  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
907a84e134Smrgfi
91ab902922SmrgBIN_SH=xpg4; export BIN_SH # for Tru64
92ab902922SmrgDUALCASE=1; export DUALCASE # for MKS sh
937a84e134Smrg
94775e7de9Smrg# NLS nuisances: We save the old values to restore during execute mode.
957a84e134Smrg# Only set LANG and LC_ALL to C if already set.
967a84e134Smrg# These must not be set unconditionally because not all systems understand
977a84e134Smrg# e.g. LANG=C (notably SCO).
98775e7de9Smrglt_user_locale=
99775e7de9Smrglt_safe_locale=
100ab902922Smrgfor lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
101ab902922Smrgdo
102ab902922Smrg  eval "if test \"\${$lt_var+set}\" = set; then
103775e7de9Smrg          save_$lt_var=\$$lt_var
104775e7de9Smrg          $lt_var=C
105ab902922Smrg	  export $lt_var
106775e7de9Smrg	  lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
107775e7de9Smrg	  lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
108ab902922Smrg	fi"
109ab902922Smrgdone
110ab902922Smrg
111775e7de9Smrg$lt_unset CDPATH
112775e7de9Smrg
113775e7de9Smrg
114775e7de9Smrg
115775e7de9Smrg
116775e7de9Smrg
117775e7de9Smrg: ${CP="cp -f"}
118775e7de9Smrg: ${ECHO="echo"}
119775e7de9Smrg: ${EGREP="/bin/grep -E"}
120775e7de9Smrg: ${FGREP="/bin/grep -F"}
121775e7de9Smrg: ${GREP="/bin/grep"}
122775e7de9Smrg: ${LN_S="ln -s"}
123775e7de9Smrg: ${MAKE="make"}
124775e7de9Smrg: ${MKDIR="mkdir"}
125775e7de9Smrg: ${MV="mv -f"}
126775e7de9Smrg: ${RM="rm -f"}
127775e7de9Smrg: ${SED="/bin/sed"}
128775e7de9Smrg: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
129775e7de9Smrg: ${Xsed="$SED -e 1s/^X//"}
130775e7de9Smrg
131775e7de9Smrg# Global variables:
132775e7de9SmrgEXIT_SUCCESS=0
133775e7de9SmrgEXIT_FAILURE=1
134775e7de9SmrgEXIT_MISMATCH=63  # $? = 63 is used to indicate version mismatch to missing.
135775e7de9SmrgEXIT_SKIP=77	  # $? = 77 is used to indicate a skipped test to automake.
136775e7de9Smrg
137775e7de9Smrgexit_status=$EXIT_SUCCESS
1387a84e134Smrg
1397a84e134Smrg# Make sure IFS has a sensible default
1407a84e134Smrglt_nl='
1417a84e134Smrg'
1427a84e134SmrgIFS=" 	$lt_nl"
1437a84e134Smrg
144775e7de9Smrgdirname="s,/[^/]*$,,"
145775e7de9Smrgbasename="s,^.*/,,"
146775e7de9Smrg
147775e7de9Smrg# func_dirname_and_basename file append nondir_replacement
148775e7de9Smrg# perform func_basename and func_dirname in a single function
149775e7de9Smrg# call:
150775e7de9Smrg#   dirname:  Compute the dirname of FILE.  If nonempty,
151775e7de9Smrg#             add APPEND to the result, otherwise set result
152775e7de9Smrg#             to NONDIR_REPLACEMENT.
153775e7de9Smrg#             value returned in "$func_dirname_result"
154775e7de9Smrg#   basename: Compute filename of FILE.
155775e7de9Smrg#             value retuned in "$func_basename_result"
156775e7de9Smrg# Implementation must be kept synchronized with func_dirname
157775e7de9Smrg# and func_basename. For efficiency, we do not delegate to
158775e7de9Smrg# those functions but instead duplicate the functionality here.
159775e7de9Smrgfunc_dirname_and_basename ()
160775e7de9Smrg{
161775e7de9Smrg  # Extract subdirectory from the argument.
162775e7de9Smrg  func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"`
163775e7de9Smrg  if test "X$func_dirname_result" = "X${1}"; then
164775e7de9Smrg    func_dirname_result="${3}"
165775e7de9Smrg  else
166775e7de9Smrg    func_dirname_result="$func_dirname_result${2}"
167775e7de9Smrg  fi
168775e7de9Smrg  func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"`
169775e7de9Smrg}
1707a84e134Smrg
171775e7de9Smrg# Generated shell functions inserted here.
172775e7de9Smrg
173775e7de9Smrg# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
174775e7de9Smrg# is ksh but when the shell is invoked as "sh" and the current value of
175775e7de9Smrg# the _XPG environment variable is not equal to 1 (one), the special
176775e7de9Smrg# positional parameter $0, within a function call, is the name of the
177775e7de9Smrg# function.
178775e7de9Smrgprogpath="$0"
179775e7de9Smrg
180775e7de9Smrg# The name of this program:
181775e7de9Smrg# In the unlikely event $progname began with a '-', it would play havoc with
182775e7de9Smrg# func_echo (imagine progname=-n), so we prepend ./ in that case:
183775e7de9Smrgfunc_dirname_and_basename "$progpath"
184775e7de9Smrgprogname=$func_basename_result
185775e7de9Smrgcase $progname in
186775e7de9Smrg  -*) progname=./$progname ;;
187775e7de9Smrgesac
188775e7de9Smrg
189775e7de9Smrg# Make sure we have an absolute path for reexecution:
190775e7de9Smrgcase $progpath in
191775e7de9Smrg  [\\/]*|[A-Za-z]:\\*) ;;
192775e7de9Smrg  *[\\/]*)
193775e7de9Smrg     progdir=$func_dirname_result
194775e7de9Smrg     progdir=`cd "$progdir" && pwd`
195775e7de9Smrg     progpath="$progdir/$progname"
196775e7de9Smrg     ;;
197775e7de9Smrg  *)
198775e7de9Smrg     save_IFS="$IFS"
199775e7de9Smrg     IFS=:
200775e7de9Smrg     for progdir in $PATH; do
201775e7de9Smrg       IFS="$save_IFS"
202775e7de9Smrg       test -x "$progdir/$progname" && break
203775e7de9Smrg     done
204775e7de9Smrg     IFS="$save_IFS"
205775e7de9Smrg     test -n "$progdir" || progdir=`pwd`
206775e7de9Smrg     progpath="$progdir/$progname"
207775e7de9Smrg     ;;
208775e7de9Smrgesac
209775e7de9Smrg
210775e7de9Smrg# Sed substitution that helps us do robust quoting.  It backslashifies
211775e7de9Smrg# metacharacters that are still active within double-quoted strings.
212775e7de9SmrgXsed="${SED}"' -e 1s/^X//'
213775e7de9Smrgsed_quote_subst='s/\([`"$\\]\)/\\\1/g'
214775e7de9Smrg
215775e7de9Smrg# Same as above, but do not quote variable references.
216775e7de9Smrgdouble_quote_subst='s/\(["`\\]\)/\\\1/g'
217775e7de9Smrg
218775e7de9Smrg# Re-`\' parameter expansions in output of double_quote_subst that were
219775e7de9Smrg# `\'-ed in input to the same.  If an odd number of `\' preceded a '$'
220775e7de9Smrg# in input to double_quote_subst, that '$' was protected from expansion.
221775e7de9Smrg# Since each input `\' is now two `\'s, look for any number of runs of
222775e7de9Smrg# four `\'s followed by two `\'s and then a '$'.  `\' that '$'.
223775e7de9Smrgbs='\\'
224775e7de9Smrgbs2='\\\\'
225775e7de9Smrgbs4='\\\\\\\\'
226775e7de9Smrgdollar='\$'
227775e7de9Smrgsed_double_backslash="\
228775e7de9Smrg  s/$bs4/&\\
229775e7de9Smrg/g
230775e7de9Smrg  s/^$bs2$dollar/$bs&/
231775e7de9Smrg  s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
232775e7de9Smrg  s/\n//g"
233775e7de9Smrg
234775e7de9Smrg# Standard options:
235775e7de9Smrgopt_dry_run=false
236775e7de9Smrgopt_help=false
237775e7de9Smrgopt_quiet=false
238775e7de9Smrgopt_verbose=false
239775e7de9Smrgopt_warning=:
240775e7de9Smrg
241775e7de9Smrg# func_echo arg...
242775e7de9Smrg# Echo program name prefixed message, along with the current mode
243775e7de9Smrg# name if it has been set yet.
244775e7de9Smrgfunc_echo ()
245775e7de9Smrg{
246775e7de9Smrg    $ECHO "$progname${mode+: }$mode: $*"
247775e7de9Smrg}
248775e7de9Smrg
249775e7de9Smrg# func_verbose arg...
250775e7de9Smrg# Echo program name prefixed message in verbose mode only.
251775e7de9Smrgfunc_verbose ()
252775e7de9Smrg{
253775e7de9Smrg    $opt_verbose && func_echo ${1+"$@"}
254775e7de9Smrg
255775e7de9Smrg    # A bug in bash halts the script if the last line of a function
256775e7de9Smrg    # fails when set -e is in force, so we need another command to
257775e7de9Smrg    # work around that:
258775e7de9Smrg    :
259775e7de9Smrg}
260775e7de9Smrg
261775e7de9Smrg# func_error arg...
262775e7de9Smrg# Echo program name prefixed message to standard error.
263775e7de9Smrgfunc_error ()
264775e7de9Smrg{
265775e7de9Smrg    $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2
266775e7de9Smrg}
267775e7de9Smrg
268775e7de9Smrg# func_warning arg...
269775e7de9Smrg# Echo program name prefixed warning message to standard error.
270775e7de9Smrgfunc_warning ()
271775e7de9Smrg{
272775e7de9Smrg    $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2
273775e7de9Smrg
274775e7de9Smrg    # bash bug again:
275775e7de9Smrg    :
276775e7de9Smrg}
277775e7de9Smrg
278775e7de9Smrg# func_fatal_error arg...
279775e7de9Smrg# Echo program name prefixed message to standard error, and exit.
280775e7de9Smrgfunc_fatal_error ()
281775e7de9Smrg{
282775e7de9Smrg    func_error ${1+"$@"}
283775e7de9Smrg    exit $EXIT_FAILURE
284775e7de9Smrg}
285775e7de9Smrg
286775e7de9Smrg# func_fatal_help arg...
287775e7de9Smrg# Echo program name prefixed message to standard error, followed by
288775e7de9Smrg# a help hint, and exit.
289775e7de9Smrgfunc_fatal_help ()
290775e7de9Smrg{
291775e7de9Smrg    func_error ${1+"$@"}
292775e7de9Smrg    func_fatal_error "$help"
293775e7de9Smrg}
294775e7de9Smrghelp="Try \`$progname --help' for more information."  ## default
295775e7de9Smrg
296775e7de9Smrg
297775e7de9Smrg# func_grep expression filename
298775e7de9Smrg# Check whether EXPRESSION matches any line of FILENAME, without output.
299775e7de9Smrgfunc_grep ()
300775e7de9Smrg{
301775e7de9Smrg    $GREP "$1" "$2" >/dev/null 2>&1
302775e7de9Smrg}
303775e7de9Smrg
304775e7de9Smrg
305775e7de9Smrg# func_mkdir_p directory-path
306775e7de9Smrg# Make sure the entire path to DIRECTORY-PATH is available.
307775e7de9Smrgfunc_mkdir_p ()
308775e7de9Smrg{
309775e7de9Smrg    my_directory_path="$1"
310775e7de9Smrg    my_dir_list=
311775e7de9Smrg
312775e7de9Smrg    if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
313775e7de9Smrg
314775e7de9Smrg      # Protect directory names starting with `-'
315775e7de9Smrg      case $my_directory_path in
316775e7de9Smrg        -*) my_directory_path="./$my_directory_path" ;;
317775e7de9Smrg      esac
318775e7de9Smrg
319775e7de9Smrg      # While some portion of DIR does not yet exist...
320775e7de9Smrg      while test ! -d "$my_directory_path"; do
321775e7de9Smrg        # ...make a list in topmost first order.  Use a colon delimited
322775e7de9Smrg	# list incase some portion of path contains whitespace.
323775e7de9Smrg        my_dir_list="$my_directory_path:$my_dir_list"
324775e7de9Smrg
325775e7de9Smrg        # If the last portion added has no slash in it, the list is done
326775e7de9Smrg        case $my_directory_path in */*) ;; *) break ;; esac
327775e7de9Smrg
328775e7de9Smrg        # ...otherwise throw away the child directory and loop
329775e7de9Smrg        my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"`
330775e7de9Smrg      done
331775e7de9Smrg      my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'`
332775e7de9Smrg
333775e7de9Smrg      save_mkdir_p_IFS="$IFS"; IFS=':'
334775e7de9Smrg      for my_dir in $my_dir_list; do
335775e7de9Smrg	IFS="$save_mkdir_p_IFS"
336775e7de9Smrg        # mkdir can fail with a `File exist' error if two processes
337775e7de9Smrg        # try to create one of the directories concurrently.  Don't
338775e7de9Smrg        # stop in that case!
339775e7de9Smrg        $MKDIR "$my_dir" 2>/dev/null || :
340775e7de9Smrg      done
341775e7de9Smrg      IFS="$save_mkdir_p_IFS"
342775e7de9Smrg
343775e7de9Smrg      # Bail out if we (or some other process) failed to create a directory.
344775e7de9Smrg      test -d "$my_directory_path" || \
345775e7de9Smrg        func_fatal_error "Failed to create \`$1'"
346775e7de9Smrg    fi
347775e7de9Smrg}
3487a84e134Smrg
3497a84e134Smrg
3507a84e134Smrg# func_mktempdir [string]
3517a84e134Smrg# Make a temporary directory that won't clash with other running
3527a84e134Smrg# libtool processes, and avoids race conditions if possible.  If
3537a84e134Smrg# given, STRING is the basename for that directory.
3547a84e134Smrgfunc_mktempdir ()
3557a84e134Smrg{
3567a84e134Smrg    my_template="${TMPDIR-/tmp}/${1-$progname}"
3577a84e134Smrg
358775e7de9Smrg    if test "$opt_dry_run" = ":"; then
3597a84e134Smrg      # Return a directory name, but don't create it in dry-run mode
3607a84e134Smrg      my_tmpdir="${my_template}-$$"
3617a84e134Smrg    else
3627a84e134Smrg
3637a84e134Smrg      # If mktemp works, use that first and foremost
3647a84e134Smrg      my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
3657a84e134Smrg
3667a84e134Smrg      if test ! -d "$my_tmpdir"; then
367775e7de9Smrg        # Failing that, at least try and use $RANDOM to avoid a race
368775e7de9Smrg        my_tmpdir="${my_template}-${RANDOM-0}$$"
3697a84e134Smrg
370775e7de9Smrg        save_mktempdir_umask=`umask`
371775e7de9Smrg        umask 0077
372775e7de9Smrg        $MKDIR "$my_tmpdir"
373775e7de9Smrg        umask $save_mktempdir_umask
3747a84e134Smrg      fi
3757a84e134Smrg
3767a84e134Smrg      # If we're not in dry-run mode, bomb out on failure
377775e7de9Smrg      test -d "$my_tmpdir" || \
378775e7de9Smrg        func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
3797a84e134Smrg    fi
3807a84e134Smrg
381775e7de9Smrg    $ECHO "X$my_tmpdir" | $Xsed
3827a84e134Smrg}
3837a84e134Smrg
3847a84e134Smrg
385775e7de9Smrg# func_quote_for_eval arg
386775e7de9Smrg# Aesthetically quote ARG to be evaled later.
387775e7de9Smrg# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
388775e7de9Smrg# is double-quoted, suitable for a subsequent eval, whereas
389775e7de9Smrg# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
390775e7de9Smrg# which are still active within double quotes backslashified.
391775e7de9Smrgfunc_quote_for_eval ()
3927a84e134Smrg{
393775e7de9Smrg    case $1 in
394775e7de9Smrg      *[\\\`\"\$]*)
395775e7de9Smrg	func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;;
396775e7de9Smrg      *)
397775e7de9Smrg        func_quote_for_eval_unquoted_result="$1" ;;
398775e7de9Smrg    esac
399775e7de9Smrg
400775e7de9Smrg    case $func_quote_for_eval_unquoted_result in
401775e7de9Smrg      # Double-quote args containing shell metacharacters to delay
402775e7de9Smrg      # word splitting, command substitution and and variable
403775e7de9Smrg      # expansion for a subsequent eval.
404775e7de9Smrg      # Many Bourne shells cannot handle close brackets correctly
405775e7de9Smrg      # in scan sets, so we specify it separately.
406775e7de9Smrg      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
407775e7de9Smrg        func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
408775e7de9Smrg        ;;
409775e7de9Smrg      *)
410775e7de9Smrg        func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
4117a84e134Smrg    esac
4127a84e134Smrg}
4137a84e134Smrg
4147a84e134Smrg
415775e7de9Smrg# func_quote_for_expand arg
416775e7de9Smrg# Aesthetically quote ARG to be evaled later; same as above,
417775e7de9Smrg# but do not quote variable references.
418775e7de9Smrgfunc_quote_for_expand ()
4197a84e134Smrg{
420775e7de9Smrg    case $1 in
421775e7de9Smrg      *[\\\`\"]*)
422775e7de9Smrg	my_arg=`$ECHO "X$1" | $Xsed \
423775e7de9Smrg	    -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
4247a84e134Smrg      *)
425775e7de9Smrg        my_arg="$1" ;;
426775e7de9Smrg    esac
427775e7de9Smrg
428775e7de9Smrg    case $my_arg in
429775e7de9Smrg      # Double-quote args containing shell metacharacters to delay
430775e7de9Smrg      # word splitting and command substitution for a subsequent eval.
431775e7de9Smrg      # Many Bourne shells cannot handle close brackets correctly
432775e7de9Smrg      # in scan sets, so we specify it separately.
433775e7de9Smrg      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
434775e7de9Smrg        my_arg="\"$my_arg\""
435775e7de9Smrg        ;;
436775e7de9Smrg    esac
437775e7de9Smrg
438775e7de9Smrg    func_quote_for_expand_result="$my_arg"
4397a84e134Smrg}
4407a84e134Smrg
4417a84e134Smrg
442775e7de9Smrg# func_show_eval cmd [fail_exp]
443775e7de9Smrg# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
444775e7de9Smrg# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
445775e7de9Smrg# is given, then evaluate it.
446775e7de9Smrgfunc_show_eval ()
4477a84e134Smrg{
448775e7de9Smrg    my_cmd="$1"
449775e7de9Smrg    my_fail_exp="${2-:}"
4507a84e134Smrg
451775e7de9Smrg    ${opt_silent-false} || {
452775e7de9Smrg      func_quote_for_expand "$my_cmd"
453775e7de9Smrg      eval "func_echo $func_quote_for_expand_result"
454775e7de9Smrg    }
455775e7de9Smrg
456775e7de9Smrg    if ${opt_dry_run-false}; then :; else
457775e7de9Smrg      eval "$my_cmd"
458775e7de9Smrg      my_status=$?
459775e7de9Smrg      if test "$my_status" -eq 0; then :; else
460775e7de9Smrg	eval "(exit $my_status); $my_fail_exp"
461775e7de9Smrg      fi
4627a84e134Smrg    fi
4637a84e134Smrg}
4647a84e134Smrg
465775e7de9Smrg
466775e7de9Smrg# func_show_eval_locale cmd [fail_exp]
467775e7de9Smrg# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
468775e7de9Smrg# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
469775e7de9Smrg# is given, then evaluate it.  Use the saved locale for evaluation.
470775e7de9Smrgfunc_show_eval_locale ()
4717a84e134Smrg{
472775e7de9Smrg    my_cmd="$1"
473775e7de9Smrg    my_fail_exp="${2-:}"
474775e7de9Smrg
475775e7de9Smrg    ${opt_silent-false} || {
476775e7de9Smrg      func_quote_for_expand "$my_cmd"
477775e7de9Smrg      eval "func_echo $func_quote_for_expand_result"
478775e7de9Smrg    }
479775e7de9Smrg
480775e7de9Smrg    if ${opt_dry_run-false}; then :; else
481775e7de9Smrg      eval "$lt_user_locale
482775e7de9Smrg	    $my_cmd"
483775e7de9Smrg      my_status=$?
484775e7de9Smrg      eval "$lt_safe_locale"
485775e7de9Smrg      if test "$my_status" -eq 0; then :; else
486775e7de9Smrg	eval "(exit $my_status); $my_fail_exp"
487775e7de9Smrg      fi
4887a84e134Smrg    fi
489775e7de9Smrg}
4907a84e134Smrg
4917a84e134Smrg
492775e7de9Smrg
493775e7de9Smrg
494775e7de9Smrg
495775e7de9Smrg# func_version
496775e7de9Smrg# Echo version message to standard output and exit.
497775e7de9Smrgfunc_version ()
498775e7de9Smrg{
499775e7de9Smrg    $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / {
500775e7de9Smrg        s/^# //
501775e7de9Smrg	s/^# *$//
502775e7de9Smrg        s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
503775e7de9Smrg        p
504775e7de9Smrg     }' < "$progpath"
505775e7de9Smrg     exit $?
5067a84e134Smrg}
5077a84e134Smrg
508775e7de9Smrg# func_usage
509775e7de9Smrg# Echo short help message to standard output and exit.
510775e7de9Smrgfunc_usage ()
511775e7de9Smrg{
512775e7de9Smrg    $SED -n '/^# Usage:/,/# -h/ {
513775e7de9Smrg        s/^# //
514775e7de9Smrg	s/^# *$//
515775e7de9Smrg	s/\$progname/'$progname'/
516775e7de9Smrg	p
517775e7de9Smrg    }' < "$progpath"
518775e7de9Smrg    $ECHO
519775e7de9Smrg    $ECHO "run \`$progname --help | more' for full usage"
520775e7de9Smrg    exit $?
521775e7de9Smrg}
5227a84e134Smrg
523775e7de9Smrg# func_help
524775e7de9Smrg# Echo long help message to standard output and exit.
525775e7de9Smrgfunc_help ()
526775e7de9Smrg{
527775e7de9Smrg    $SED -n '/^# Usage:/,/# Report bugs to/ {
528775e7de9Smrg        s/^# //
529775e7de9Smrg	s/^# *$//
530775e7de9Smrg	s*\$progname*'$progname'*
531775e7de9Smrg	s*\$host*'"$host"'*
532775e7de9Smrg	s*\$SHELL*'"$SHELL"'*
533775e7de9Smrg	s*\$LTCC*'"$LTCC"'*
534775e7de9Smrg	s*\$LTCFLAGS*'"$LTCFLAGS"'*
535775e7de9Smrg	s*\$LD*'"$LD"'*
536775e7de9Smrg	s/\$with_gnu_ld/'"$with_gnu_ld"'/
537775e7de9Smrg	s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/
538775e7de9Smrg	s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/
539775e7de9Smrg	p
540775e7de9Smrg     }' < "$progpath"
541775e7de9Smrg    exit $?
542775e7de9Smrg}
5437a84e134Smrg
544775e7de9Smrg# func_missing_arg argname
545775e7de9Smrg# Echo program name prefixed message to standard error and set global
546775e7de9Smrg# exit_cmd.
547775e7de9Smrgfunc_missing_arg ()
548775e7de9Smrg{
549775e7de9Smrg    func_error "missing argument for $1"
550775e7de9Smrg    exit_cmd=exit
551775e7de9Smrg}
552775e7de9Smrg
553775e7de9Smrgexit_cmd=:
554775e7de9Smrg
555775e7de9Smrg
556775e7de9Smrg
557775e7de9Smrg
558775e7de9Smrg
559775e7de9Smrg# Check that we have a working $ECHO.
560775e7de9Smrgif test "X$1" = X--no-reexec; then
561775e7de9Smrg  # Discard the --no-reexec flag, and continue.
5627a84e134Smrg  shift
563775e7de9Smrgelif test "X$1" = X--fallback-echo; then
564775e7de9Smrg  # Avoid inline document here, it may be left over
565775e7de9Smrg  :
566775e7de9Smrgelif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then
567775e7de9Smrg  # Yippee, $ECHO works!
568775e7de9Smrg  :
569775e7de9Smrgelse
570775e7de9Smrg  # Restart under the correct shell, and then maybe $ECHO will work.
571775e7de9Smrg  exec $SHELL "$progpath" --no-reexec ${1+"$@"}
572775e7de9Smrgfi
5737a84e134Smrg
574775e7de9Smrgif test "X$1" = X--fallback-echo; then
575775e7de9Smrg  # used as fallback echo
576775e7de9Smrg  shift
577775e7de9Smrg  cat <<EOF
578775e7de9Smrg$*
579775e7de9SmrgEOF
580775e7de9Smrg  exit $EXIT_SUCCESS
581775e7de9Smrgfi
5827a84e134Smrg
583775e7de9Smrgmagic="%%%MAGIC variable%%%"
584775e7de9Smrgmagic_exe="%%%MAGIC EXE variable%%%"
5857a84e134Smrg
586775e7de9Smrg# Global variables.
587775e7de9Smrg# $mode is unset
588775e7de9Smrgnonopt=
589775e7de9Smrgexecute_dlfiles=
590775e7de9Smrgpreserve_args=
591775e7de9Smrglo2o="s/\\.lo\$/.${objext}/"
592775e7de9Smrgo2lo="s/\\.${objext}\$/.lo/"
593775e7de9Smrgextracted_archives=
594775e7de9Smrgextracted_serial=0
5957a84e134Smrg
596775e7de9Smrgopt_dry_run=false
597775e7de9Smrgopt_duplicate_deps=false
598775e7de9Smrgopt_silent=false
599775e7de9Smrgopt_debug=:
6007a84e134Smrg
601775e7de9Smrg# If this variable is set in any of the actions, the command in it
602775e7de9Smrg# will be execed at the end.  This prevents here-documents from being
603775e7de9Smrg# left over by shells.
604775e7de9Smrgexec_cmd=
605775e7de9Smrg
606775e7de9Smrg# func_fatal_configuration arg...
607775e7de9Smrg# Echo program name prefixed message to standard error, followed by
608775e7de9Smrg# a configuration failure hint, and exit.
609775e7de9Smrgfunc_fatal_configuration ()
610775e7de9Smrg{
611775e7de9Smrg    func_error ${1+"$@"}
612775e7de9Smrg    func_error "See the $PACKAGE documentation for more information."
613775e7de9Smrg    func_fatal_error "Fatal configuration error."
614775e7de9Smrg}
6157a84e134Smrg
616ab902922Smrg
617775e7de9Smrg# func_config
618775e7de9Smrg# Display the configuration for all the tags in this script.
619775e7de9Smrgfunc_config ()
620775e7de9Smrg{
621775e7de9Smrg    re_begincf='^# ### BEGIN LIBTOOL'
622775e7de9Smrg    re_endcf='^# ### END LIBTOOL'
623775e7de9Smrg
624775e7de9Smrg    # Default configuration.
625775e7de9Smrg    $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
6267a84e134Smrg
6277a84e134Smrg    # Now print the configurations for the tags.
6287a84e134Smrg    for tagname in $taglist; do
629775e7de9Smrg      $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
6307a84e134Smrg    done
6317a84e134Smrg
632775e7de9Smrg    exit $?
633775e7de9Smrg}
6347a84e134Smrg
635775e7de9Smrg# func_features
636775e7de9Smrg# Display the features supported by this script.
637775e7de9Smrgfunc_features ()
638775e7de9Smrg{
639775e7de9Smrg    $ECHO "host: $host"
6407a84e134Smrg    if test "$build_libtool_libs" = yes; then
641775e7de9Smrg      $ECHO "enable shared libraries"
6427a84e134Smrg    else
643775e7de9Smrg      $ECHO "disable shared libraries"
6447a84e134Smrg    fi
6457a84e134Smrg    if test "$build_old_libs" = yes; then
646775e7de9Smrg      $ECHO "enable static libraries"
6477a84e134Smrg    else
648775e7de9Smrg      $ECHO "disable static libraries"
6497a84e134Smrg    fi
650775e7de9Smrg
6517a84e134Smrg    exit $?
652775e7de9Smrg}
6537a84e134Smrg
654775e7de9Smrg# func_enable_tag tagname
655775e7de9Smrg# Verify that TAGNAME is valid, and either flag an error and exit, or
656775e7de9Smrg# enable the TAGNAME tag.  We also add TAGNAME to the global $taglist
657775e7de9Smrg# variable here.
658775e7de9Smrgfunc_enable_tag ()
659775e7de9Smrg{
660775e7de9Smrg  # Global variable:
661775e7de9Smrg  tagname="$1"
6627a84e134Smrg
663775e7de9Smrg  re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
664775e7de9Smrg  re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
665775e7de9Smrg  sed_extractcf="/$re_begincf/,/$re_endcf/p"
6667a84e134Smrg
667775e7de9Smrg  # Validate tagname.
668775e7de9Smrg  case $tagname in
669775e7de9Smrg    *[!-_A-Za-z0-9,/]*)
670775e7de9Smrg      func_fatal_error "invalid tag name: $tagname"
671775e7de9Smrg      ;;
672775e7de9Smrg  esac
6737a84e134Smrg
674775e7de9Smrg  # Don't test for the "default" C tag, as we know it's
675775e7de9Smrg  # there but not specially marked.
676775e7de9Smrg  case $tagname in
677775e7de9Smrg    CC) ;;
678775e7de9Smrg    *)
679775e7de9Smrg      if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
680775e7de9Smrg	taglist="$taglist $tagname"
681775e7de9Smrg
682775e7de9Smrg	# Evaluate the configuration.  Be careful to quote the path
683775e7de9Smrg	# and the sed script, to avoid splitting on whitespace, but
684775e7de9Smrg	# also don't use non-portable quotes within backquotes within
685775e7de9Smrg	# quotes we have to do it in 2 steps:
686775e7de9Smrg	extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
687775e7de9Smrg	eval "$extractedcf"
688775e7de9Smrg      else
689775e7de9Smrg	func_error "ignoring unknown tag $tagname"
690775e7de9Smrg      fi
691775e7de9Smrg      ;;
692775e7de9Smrg  esac
693775e7de9Smrg}
694775e7de9Smrg
695775e7de9Smrg# Parse options once, thoroughly.  This comes as soon as possible in
696775e7de9Smrg# the script to make things like `libtool --version' happen quickly.
697775e7de9Smrg{
6987a84e134Smrg
699775e7de9Smrg  # Shorthand for --mode=foo, only valid as the first argument
700775e7de9Smrg  case $1 in
701775e7de9Smrg  clean|clea|cle|cl)
702775e7de9Smrg    shift; set dummy --mode clean ${1+"$@"}; shift
7037a84e134Smrg    ;;
704775e7de9Smrg  compile|compil|compi|comp|com|co|c)
705775e7de9Smrg    shift; set dummy --mode compile ${1+"$@"}; shift
7067a84e134Smrg    ;;
707775e7de9Smrg  execute|execut|execu|exec|exe|ex|e)
708775e7de9Smrg    shift; set dummy --mode execute ${1+"$@"}; shift
7097a84e134Smrg    ;;
710775e7de9Smrg  finish|finis|fini|fin|fi|f)
711775e7de9Smrg    shift; set dummy --mode finish ${1+"$@"}; shift
7127a84e134Smrg    ;;
713775e7de9Smrg  install|instal|insta|inst|ins|in|i)
714775e7de9Smrg    shift; set dummy --mode install ${1+"$@"}; shift
715775e7de9Smrg    ;;
716775e7de9Smrg  link|lin|li|l)
717775e7de9Smrg    shift; set dummy --mode link ${1+"$@"}; shift
718775e7de9Smrg    ;;
719775e7de9Smrg  uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
720775e7de9Smrg    shift; set dummy --mode uninstall ${1+"$@"}; shift
7217a84e134Smrg    ;;
7227a84e134Smrg  esac
7237a84e134Smrg
724775e7de9Smrg  # Parse non-mode specific arguments:
725775e7de9Smrg  while test "$#" -gt 0; do
726775e7de9Smrg    opt="$1"
727775e7de9Smrg    shift
7287a84e134Smrg
729775e7de9Smrg    case $opt in
730775e7de9Smrg      --config)		func_config					;;
7317a84e134Smrg
732775e7de9Smrg      --debug)		preserve_args="$preserve_args $opt"
733775e7de9Smrg			func_echo "enabling shell trace mode"
734775e7de9Smrg			opt_debug='set -x'
735775e7de9Smrg			$opt_debug
736775e7de9Smrg			;;
737775e7de9Smrg
738775e7de9Smrg      -dlopen)		test "$#" -eq 0 && func_missing_arg "$opt" && break
739775e7de9Smrg			execute_dlfiles="$execute_dlfiles $1"
740775e7de9Smrg			shift
741775e7de9Smrg			;;
7427a84e134Smrg
743775e7de9Smrg      --dry-run | -n)	opt_dry_run=:					;;
744775e7de9Smrg      --features)       func_features					;;
745775e7de9Smrg      --finish)		mode="finish"					;;
746775e7de9Smrg
747775e7de9Smrg      --mode)		test "$#" -eq 0 && func_missing_arg "$opt" && break
748775e7de9Smrg			case $1 in
749775e7de9Smrg			  # Valid mode arguments:
750775e7de9Smrg			  clean)	;;
751775e7de9Smrg			  compile)	;;
752775e7de9Smrg			  execute)	;;
753775e7de9Smrg			  finish)	;;
754775e7de9Smrg			  install)	;;
755775e7de9Smrg			  link)		;;
756775e7de9Smrg			  relink)	;;
757775e7de9Smrg			  uninstall)	;;
758775e7de9Smrg
759775e7de9Smrg			  # Catch anything else as an error
760775e7de9Smrg			  *) func_error "invalid argument for $opt"
761775e7de9Smrg			     exit_cmd=exit
762775e7de9Smrg			     break
763775e7de9Smrg			     ;;
764775e7de9Smrg		        esac
765775e7de9Smrg
766775e7de9Smrg			mode="$1"
767775e7de9Smrg			shift
768775e7de9Smrg			;;
7697a84e134Smrg
770775e7de9Smrg      --preserve-dup-deps)
771775e7de9Smrg			opt_duplicate_deps=:				;;
772775e7de9Smrg
773775e7de9Smrg      --quiet|--silent)	preserve_args="$preserve_args $opt"
774775e7de9Smrg			opt_silent=:
775775e7de9Smrg			;;
776775e7de9Smrg
777775e7de9Smrg      --verbose| -v)	preserve_args="$preserve_args $opt"
778775e7de9Smrg			opt_silent=false
779775e7de9Smrg			;;
780775e7de9Smrg
781775e7de9Smrg      --tag)		test "$#" -eq 0 && func_missing_arg "$opt" && break
782775e7de9Smrg			preserve_args="$preserve_args $opt $1"
783775e7de9Smrg			func_enable_tag "$1"	# tagname is set here
784775e7de9Smrg			shift
785775e7de9Smrg			;;
786775e7de9Smrg
787775e7de9Smrg      # Separate optargs to long options:
788775e7de9Smrg      -dlopen=*|--mode=*|--tag=*)
789775e7de9Smrg			func_opt_split "$opt"
790775e7de9Smrg			set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"}
791775e7de9Smrg			shift
792775e7de9Smrg			;;
793775e7de9Smrg
794775e7de9Smrg      -\?|-h)		func_usage					;;
795775e7de9Smrg      --help)		opt_help=:					;;
796775e7de9Smrg      --version)	func_version					;;
797775e7de9Smrg
798775e7de9Smrg      -*)		func_fatal_help "unrecognized option \`$opt'"	;;
799775e7de9Smrg
800775e7de9Smrg      *)		nonopt="$opt"
801775e7de9Smrg			break
802775e7de9Smrg			;;
803775e7de9Smrg    esac
804775e7de9Smrg  done
805775e7de9Smrg
806775e7de9Smrg
807775e7de9Smrg  case $host in
808775e7de9Smrg    *cygwin* | *mingw* | *pw32* | *cegcc*)
809775e7de9Smrg      # don't eliminate duplications in $postdeps and $predeps
810775e7de9Smrg      opt_duplicate_compiler_generated_deps=:
8117a84e134Smrg      ;;
8127a84e134Smrg    *)
813775e7de9Smrg      opt_duplicate_compiler_generated_deps=$opt_duplicate_deps
814775e7de9Smrg      ;;
815775e7de9Smrg  esac
8167a84e134Smrg
817775e7de9Smrg  # Having warned about all mis-specified options, bail out if
818775e7de9Smrg  # anything was wrong.
819775e7de9Smrg  $exit_cmd $EXIT_FAILURE
820775e7de9Smrg}
821775e7de9Smrg
822775e7de9Smrg# func_check_version_match
823775e7de9Smrg# Ensure that we are using m4 macros, and libtool script from the same
824775e7de9Smrg# release of libtool.
825775e7de9Smrgfunc_check_version_match ()
826775e7de9Smrg{
827775e7de9Smrg  if test "$package_revision" != "$macro_revision"; then
828775e7de9Smrg    if test "$VERSION" != "$macro_version"; then
829775e7de9Smrg      if test -z "$macro_version"; then
830775e7de9Smrg        cat >&2 <<_LT_EOF
831775e7de9Smrg$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
832775e7de9Smrg$progname: definition of this LT_INIT comes from an older release.
833775e7de9Smrg$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
834775e7de9Smrg$progname: and run autoconf again.
835775e7de9Smrg_LT_EOF
836775e7de9Smrg      else
837775e7de9Smrg        cat >&2 <<_LT_EOF
838775e7de9Smrg$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
839775e7de9Smrg$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
840775e7de9Smrg$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
841775e7de9Smrg$progname: and run autoconf again.
842775e7de9Smrg_LT_EOF
8437a84e134Smrg      fi
844775e7de9Smrg    else
845775e7de9Smrg      cat >&2 <<_LT_EOF
846775e7de9Smrg$progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision,
847775e7de9Smrg$progname: but the definition of this LT_INIT comes from revision $macro_revision.
848775e7de9Smrg$progname: You should recreate aclocal.m4 with macros from revision $package_revision
849775e7de9Smrg$progname: of $PACKAGE $VERSION and run autoconf again.
850775e7de9Smrg_LT_EOF
851775e7de9Smrg    fi
852775e7de9Smrg
853775e7de9Smrg    exit $EXIT_MISMATCH
8547a84e134Smrg  fi
855775e7de9Smrg}
856775e7de9Smrg
857775e7de9Smrg
858775e7de9Smrg## ----------- ##
859775e7de9Smrg##    Main.    ##
860775e7de9Smrg## ----------- ##
861775e7de9Smrg
862775e7de9Smrg$opt_help || {
863775e7de9Smrg  # Sanity checks first:
864775e7de9Smrg  func_check_version_match
865775e7de9Smrg
866775e7de9Smrg  if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
867775e7de9Smrg    func_fatal_configuration "not configured to build any kind of library"
868775e7de9Smrg  fi
869775e7de9Smrg
870775e7de9Smrg  test -z "$mode" && func_fatal_error "error: you must specify a MODE."
871775e7de9Smrg
872775e7de9Smrg
873775e7de9Smrg  # Darwin sucks
874775e7de9Smrg  eval std_shrext=\"$shrext_cmds\"
875775e7de9Smrg
8767a84e134Smrg
8777a84e134Smrg  # Only execute mode is allowed to have -dlopen flags.
8787a84e134Smrg  if test -n "$execute_dlfiles" && test "$mode" != execute; then
879775e7de9Smrg    func_error "unrecognized option \`-dlopen'"
880775e7de9Smrg    $ECHO "$help" 1>&2
8817a84e134Smrg    exit $EXIT_FAILURE
8827a84e134Smrg  fi
8837a84e134Smrg
8847a84e134Smrg  # Change the help message to a mode-specific one.
8857a84e134Smrg  generic_help="$help"
886775e7de9Smrg  help="Try \`$progname --help --mode=$mode' for more information."
887775e7de9Smrg}
8887a84e134Smrg
8897a84e134Smrg
890775e7de9Smrg# func_lalib_p file
891775e7de9Smrg# True iff FILE is a libtool `.la' library or `.lo' object file.
892775e7de9Smrg# This function is only a basic sanity check; it will hardly flush out
893775e7de9Smrg# determined imposters.
894775e7de9Smrgfunc_lalib_p ()
895775e7de9Smrg{
896775e7de9Smrg    test -f "$1" &&
897775e7de9Smrg      $SED -e 4q "$1" 2>/dev/null \
898775e7de9Smrg        | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
899775e7de9Smrg}
9007a84e134Smrg
901775e7de9Smrg# func_lalib_unsafe_p file
902775e7de9Smrg# True iff FILE is a libtool `.la' library or `.lo' object file.
903775e7de9Smrg# This function implements the same check as func_lalib_p without
904775e7de9Smrg# resorting to external programs.  To this end, it redirects stdin and
905775e7de9Smrg# closes it afterwards, without saving the original file descriptor.
906775e7de9Smrg# As a safety measure, use it only where a negative result would be
907775e7de9Smrg# fatal anyway.  Works if `file' does not exist.
908775e7de9Smrgfunc_lalib_unsafe_p ()
909775e7de9Smrg{
910775e7de9Smrg    lalib_p=no
911775e7de9Smrg    if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
912775e7de9Smrg	for lalib_p_l in 1 2 3 4
913775e7de9Smrg	do
914775e7de9Smrg	    read lalib_p_line
915775e7de9Smrg	    case "$lalib_p_line" in
916775e7de9Smrg		\#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
917775e7de9Smrg	    esac
918775e7de9Smrg	done
919775e7de9Smrg	exec 0<&5 5<&-
920775e7de9Smrg    fi
921775e7de9Smrg    test "$lalib_p" = yes
922775e7de9Smrg}
9237a84e134Smrg
924775e7de9Smrg# func_ltwrapper_script_p file
925775e7de9Smrg# True iff FILE is a libtool wrapper script
926775e7de9Smrg# This function is only a basic sanity check; it will hardly flush out
927775e7de9Smrg# determined imposters.
928775e7de9Smrgfunc_ltwrapper_script_p ()
929775e7de9Smrg{
930775e7de9Smrg    func_lalib_p "$1"
931775e7de9Smrg}
9327a84e134Smrg
933775e7de9Smrg# func_ltwrapper_executable_p file
934775e7de9Smrg# True iff FILE is a libtool wrapper executable
935775e7de9Smrg# This function is only a basic sanity check; it will hardly flush out
936775e7de9Smrg# determined imposters.
937775e7de9Smrgfunc_ltwrapper_executable_p ()
938775e7de9Smrg{
939775e7de9Smrg    func_ltwrapper_exec_suffix=
940775e7de9Smrg    case $1 in
941775e7de9Smrg    *.exe) ;;
942775e7de9Smrg    *) func_ltwrapper_exec_suffix=.exe ;;
943775e7de9Smrg    esac
944775e7de9Smrg    $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
945775e7de9Smrg}
946775e7de9Smrg
947775e7de9Smrg# func_ltwrapper_scriptname file
948775e7de9Smrg# Assumes file is an ltwrapper_executable
949775e7de9Smrg# uses $file to determine the appropriate filename for a
950775e7de9Smrg# temporary ltwrapper_script.
951775e7de9Smrgfunc_ltwrapper_scriptname ()
952775e7de9Smrg{
953775e7de9Smrg    func_ltwrapper_scriptname_result=""
954775e7de9Smrg    if func_ltwrapper_executable_p "$1"; then
955775e7de9Smrg	func_dirname_and_basename "$1" "" "."
956775e7de9Smrg	func_stripname '' '.exe' "$func_basename_result"
957775e7de9Smrg	func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
958775e7de9Smrg    fi
959775e7de9Smrg}
960775e7de9Smrg
961775e7de9Smrg# func_ltwrapper_p file
962775e7de9Smrg# True iff FILE is a libtool wrapper script or wrapper executable
963775e7de9Smrg# This function is only a basic sanity check; it will hardly flush out
964775e7de9Smrg# determined imposters.
965775e7de9Smrgfunc_ltwrapper_p ()
966775e7de9Smrg{
967775e7de9Smrg    func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
968775e7de9Smrg}
969775e7de9Smrg
970775e7de9Smrg
971775e7de9Smrg# func_execute_cmds commands fail_cmd
972775e7de9Smrg# Execute tilde-delimited COMMANDS.
973775e7de9Smrg# If FAIL_CMD is given, eval that upon failure.
974775e7de9Smrg# FAIL_CMD may read-access the current command in variable CMD!
975775e7de9Smrgfunc_execute_cmds ()
976775e7de9Smrg{
977775e7de9Smrg    $opt_debug
978775e7de9Smrg    save_ifs=$IFS; IFS='~'
979775e7de9Smrg    for cmd in $1; do
980775e7de9Smrg      IFS=$save_ifs
981775e7de9Smrg      eval cmd=\"$cmd\"
982775e7de9Smrg      func_show_eval "$cmd" "${2-:}"
983775e7de9Smrg    done
984775e7de9Smrg    IFS=$save_ifs
985775e7de9Smrg}
986775e7de9Smrg
987775e7de9Smrg
988775e7de9Smrg# func_source file
989775e7de9Smrg# Source FILE, adding directory component if necessary.
990775e7de9Smrg# Note that it is not necessary on cygwin/mingw to append a dot to
991775e7de9Smrg# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
992775e7de9Smrg# behavior happens only for exec(3), not for open(2)!  Also, sourcing
993775e7de9Smrg# `FILE.' does not work on cygwin managed mounts.
994775e7de9Smrgfunc_source ()
995775e7de9Smrg{
996775e7de9Smrg    $opt_debug
997775e7de9Smrg    case $1 in
998775e7de9Smrg    */* | *\\*)	. "$1" ;;
999775e7de9Smrg    *)		. "./$1" ;;
1000775e7de9Smrg    esac
1001775e7de9Smrg}
1002775e7de9Smrg
1003775e7de9Smrg
1004775e7de9Smrg# func_infer_tag arg
1005775e7de9Smrg# Infer tagged configuration to use if any are available and
1006775e7de9Smrg# if one wasn't chosen via the "--tag" command line option.
1007775e7de9Smrg# Only attempt this if the compiler in the base compile
1008775e7de9Smrg# command doesn't match the default compiler.
1009775e7de9Smrg# arg is usually of the form 'gcc ...'
1010775e7de9Smrgfunc_infer_tag ()
1011775e7de9Smrg{
1012775e7de9Smrg    $opt_debug
1013775e7de9Smrg    if test -n "$available_tags" && test -z "$tagname"; then
1014775e7de9Smrg      CC_quoted=
1015775e7de9Smrg      for arg in $CC; do
1016775e7de9Smrg        func_quote_for_eval "$arg"
1017775e7de9Smrg	CC_quoted="$CC_quoted $func_quote_for_eval_result"
1018775e7de9Smrg      done
1019775e7de9Smrg      case $@ in
1020775e7de9Smrg      # Blanks in the command may have been stripped by the calling shell,
1021775e7de9Smrg      # but not from the CC environment variable when configure was run.
1022775e7de9Smrg      " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;;
1023775e7de9Smrg      # Blanks at the start of $base_compile will cause this to fail
1024775e7de9Smrg      # if we don't check for them as well.
1025775e7de9Smrg      *)
1026775e7de9Smrg	for z in $available_tags; do
1027775e7de9Smrg	  if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
1028775e7de9Smrg	    # Evaluate the configuration.
1029775e7de9Smrg	    eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
1030775e7de9Smrg	    CC_quoted=
1031775e7de9Smrg	    for arg in $CC; do
1032775e7de9Smrg	      # Double-quote args containing other shell metacharacters.
1033775e7de9Smrg	      func_quote_for_eval "$arg"
1034775e7de9Smrg	      CC_quoted="$CC_quoted $func_quote_for_eval_result"
1035775e7de9Smrg	    done
1036775e7de9Smrg	    case "$@ " in
1037775e7de9Smrg	      " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*)
1038775e7de9Smrg	      # The compiler in the base compile command matches
1039775e7de9Smrg	      # the one in the tagged configuration.
1040775e7de9Smrg	      # Assume this is the tagged configuration we want.
1041775e7de9Smrg	      tagname=$z
1042775e7de9Smrg	      break
1043775e7de9Smrg	      ;;
1044775e7de9Smrg	    esac
1045775e7de9Smrg	  fi
1046775e7de9Smrg	done
1047775e7de9Smrg	# If $tagname still isn't set, then no tagged configuration
1048775e7de9Smrg	# was found and let the user know that the "--tag" command
1049775e7de9Smrg	# line option must be used.
1050775e7de9Smrg	if test -z "$tagname"; then
1051775e7de9Smrg	  func_echo "unable to infer tagged configuration"
1052775e7de9Smrg	  func_fatal_error "specify a tag with \`--tag'"
1053775e7de9Smrg#	else
1054775e7de9Smrg#	  func_verbose "using $tagname tagged configuration"
1055775e7de9Smrg	fi
1056775e7de9Smrg	;;
1057775e7de9Smrg      esac
1058775e7de9Smrg    fi
1059775e7de9Smrg}
1060775e7de9Smrg
1061775e7de9Smrg
1062775e7de9Smrg
1063775e7de9Smrg# func_write_libtool_object output_name pic_name nonpic_name
1064775e7de9Smrg# Create a libtool object file (analogous to a ".la" file),
1065775e7de9Smrg# but don't create it if we're doing a dry run.
1066775e7de9Smrgfunc_write_libtool_object ()
1067775e7de9Smrg{
1068775e7de9Smrg    write_libobj=${1}
1069775e7de9Smrg    if test "$build_libtool_libs" = yes; then
1070775e7de9Smrg      write_lobj=\'${2}\'
1071775e7de9Smrg    else
1072775e7de9Smrg      write_lobj=none
1073775e7de9Smrg    fi
1074775e7de9Smrg
1075775e7de9Smrg    if test "$build_old_libs" = yes; then
1076775e7de9Smrg      write_oldobj=\'${3}\'
1077775e7de9Smrg    else
1078775e7de9Smrg      write_oldobj=none
1079775e7de9Smrg    fi
1080775e7de9Smrg
1081775e7de9Smrg    $opt_dry_run || {
1082775e7de9Smrg      cat >${write_libobj}T <<EOF
1083775e7de9Smrg# $write_libobj - a libtool object file
1084775e7de9Smrg# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
1085775e7de9Smrg#
1086775e7de9Smrg# Please DO NOT delete this file!
1087775e7de9Smrg# It is necessary for linking the library.
1088775e7de9Smrg
1089775e7de9Smrg# Name of the PIC object.
1090775e7de9Smrgpic_object=$write_lobj
1091775e7de9Smrg
1092775e7de9Smrg# Name of the non-PIC object
1093775e7de9Smrgnon_pic_object=$write_oldobj
1094775e7de9Smrg
1095775e7de9SmrgEOF
1096775e7de9Smrg      $MV "${write_libobj}T" "${write_libobj}"
1097775e7de9Smrg    }
1098775e7de9Smrg}
1099775e7de9Smrg
1100775e7de9Smrg# func_mode_compile arg...
1101775e7de9Smrgfunc_mode_compile ()
1102775e7de9Smrg{
1103775e7de9Smrg    $opt_debug
1104775e7de9Smrg    # Get the compilation command and the source file.
1105775e7de9Smrg    base_compile=
1106775e7de9Smrg    srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
1107775e7de9Smrg    suppress_opt=yes
1108775e7de9Smrg    suppress_output=
1109775e7de9Smrg    arg_mode=normal
1110775e7de9Smrg    libobj=
1111775e7de9Smrg    later=
1112775e7de9Smrg    pie_flag=
1113775e7de9Smrg
1114775e7de9Smrg    for arg
1115775e7de9Smrg    do
1116775e7de9Smrg      case $arg_mode in
1117775e7de9Smrg      arg  )
1118775e7de9Smrg	# do not "continue".  Instead, add this to base_compile
1119775e7de9Smrg	lastarg="$arg"
1120775e7de9Smrg	arg_mode=normal
1121775e7de9Smrg	;;
1122775e7de9Smrg
1123775e7de9Smrg      target )
1124775e7de9Smrg	libobj="$arg"
1125775e7de9Smrg	arg_mode=normal
1126775e7de9Smrg	continue
1127775e7de9Smrg	;;
1128775e7de9Smrg
1129775e7de9Smrg      normal )
1130775e7de9Smrg	# Accept any command-line options.
1131775e7de9Smrg	case $arg in
1132775e7de9Smrg	-o)
1133775e7de9Smrg	  test -n "$libobj" && \
1134775e7de9Smrg	    func_fatal_error "you cannot specify \`-o' more than once"
1135775e7de9Smrg	  arg_mode=target
1136775e7de9Smrg	  continue
1137775e7de9Smrg	  ;;
1138775e7de9Smrg
1139775e7de9Smrg	-pie | -fpie | -fPIE)
1140775e7de9Smrg          pie_flag="$pie_flag $arg"
1141775e7de9Smrg	  continue
1142775e7de9Smrg	  ;;
1143775e7de9Smrg
1144775e7de9Smrg	-shared | -static | -prefer-pic | -prefer-non-pic)
1145775e7de9Smrg	  later="$later $arg"
1146775e7de9Smrg	  continue
1147775e7de9Smrg	  ;;
11487a84e134Smrg
11497a84e134Smrg	-no-suppress)
11507a84e134Smrg	  suppress_opt=no
11517a84e134Smrg	  continue
11527a84e134Smrg	  ;;
11537a84e134Smrg
11547a84e134Smrg	-Xcompiler)
11557a84e134Smrg	  arg_mode=arg  #  the next one goes into the "base_compile" arg list
11567a84e134Smrg	  continue      #  The current "srcfile" will either be retained or
11577a84e134Smrg	  ;;            #  replaced later.  I would guess that would be a bug.
11587a84e134Smrg
11597a84e134Smrg	-Wc,*)
1160775e7de9Smrg	  func_stripname '-Wc,' '' "$arg"
1161775e7de9Smrg	  args=$func_stripname_result
11627a84e134Smrg	  lastarg=
11637a84e134Smrg	  save_ifs="$IFS"; IFS=','
1164775e7de9Smrg	  for arg in $args; do
11657a84e134Smrg	    IFS="$save_ifs"
1166775e7de9Smrg	    func_quote_for_eval "$arg"
1167775e7de9Smrg	    lastarg="$lastarg $func_quote_for_eval_result"
11687a84e134Smrg	  done
11697a84e134Smrg	  IFS="$save_ifs"
1170775e7de9Smrg	  func_stripname ' ' '' "$lastarg"
1171775e7de9Smrg	  lastarg=$func_stripname_result
11727a84e134Smrg
11737a84e134Smrg	  # Add the arguments to base_compile.
11747a84e134Smrg	  base_compile="$base_compile $lastarg"
11757a84e134Smrg	  continue
11767a84e134Smrg	  ;;
11777a84e134Smrg
1178775e7de9Smrg	*)
11797a84e134Smrg	  # Accept the current argument as the source file.
11807a84e134Smrg	  # The previous "srcfile" becomes the current argument.
11817a84e134Smrg	  #
11827a84e134Smrg	  lastarg="$srcfile"
11837a84e134Smrg	  srcfile="$arg"
11847a84e134Smrg	  ;;
11857a84e134Smrg	esac  #  case $arg
11867a84e134Smrg	;;
11877a84e134Smrg      esac    #  case $arg_mode
11887a84e134Smrg
11897a84e134Smrg      # Aesthetically quote the previous argument.
1190775e7de9Smrg      func_quote_for_eval "$lastarg"
1191775e7de9Smrg      base_compile="$base_compile $func_quote_for_eval_result"
11927a84e134Smrg    done # for arg
11937a84e134Smrg
11947a84e134Smrg    case $arg_mode in
11957a84e134Smrg    arg)
1196775e7de9Smrg      func_fatal_error "you must specify an argument for -Xcompile"
11977a84e134Smrg      ;;
11987a84e134Smrg    target)
1199775e7de9Smrg      func_fatal_error "you must specify a target with \`-o'"
12007a84e134Smrg      ;;
12017a84e134Smrg    *)
12027a84e134Smrg      # Get the name of the library object.
1203775e7de9Smrg      test -z "$libobj" && {
1204775e7de9Smrg	func_basename "$srcfile"
1205775e7de9Smrg	libobj="$func_basename_result"
1206775e7de9Smrg      }
12077a84e134Smrg      ;;
12087a84e134Smrg    esac
12097a84e134Smrg
12107a84e134Smrg    # Recognize several different file suffixes.
12117a84e134Smrg    # If the user specifies -o file.o, it is replaced with file.lo
12127a84e134Smrg    case $libobj in
1213775e7de9Smrg    *.[cCFSifmso] | \
1214775e7de9Smrg    *.ada | *.adb | *.ads | *.asm | \
1215775e7de9Smrg    *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
1216775e7de9Smrg    *.[fF][09]? | *.for | *.java | *.obj | *.sx)
1217775e7de9Smrg      func_xform "$libobj"
1218775e7de9Smrg      libobj=$func_xform_result
1219775e7de9Smrg      ;;
12207a84e134Smrg    esac
12217a84e134Smrg
12227a84e134Smrg    case $libobj in
1223775e7de9Smrg    *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
12247a84e134Smrg    *)
1225775e7de9Smrg      func_fatal_error "cannot determine name of library object from \`$libobj'"
12267a84e134Smrg      ;;
12277a84e134Smrg    esac
12287a84e134Smrg
12297a84e134Smrg    func_infer_tag $base_compile
12307a84e134Smrg
12317a84e134Smrg    for arg in $later; do
12327a84e134Smrg      case $arg in
1233775e7de9Smrg      -shared)
1234775e7de9Smrg	test "$build_libtool_libs" != yes && \
1235775e7de9Smrg	  func_fatal_configuration "can not build a shared library"
1236775e7de9Smrg	build_old_libs=no
1237775e7de9Smrg	continue
1238775e7de9Smrg	;;
1239775e7de9Smrg
12407a84e134Smrg      -static)
1241775e7de9Smrg	build_libtool_libs=no
12427a84e134Smrg	build_old_libs=yes
12437a84e134Smrg	continue
12447a84e134Smrg	;;
12457a84e134Smrg
12467a84e134Smrg      -prefer-pic)
12477a84e134Smrg	pic_mode=yes
12487a84e134Smrg	continue
12497a84e134Smrg	;;
12507a84e134Smrg
12517a84e134Smrg      -prefer-non-pic)
12527a84e134Smrg	pic_mode=no
12537a84e134Smrg	continue
12547a84e134Smrg	;;
12557a84e134Smrg      esac
12567a84e134Smrg    done
12577a84e134Smrg
1258775e7de9Smrg    func_quote_for_eval "$libobj"
1259775e7de9Smrg    test "X$libobj" != "X$func_quote_for_eval_result" \
1260775e7de9Smrg      && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"'	 &()|`$[]' \
1261775e7de9Smrg      && func_warning "libobj name \`$libobj' may not contain shell special characters."
1262775e7de9Smrg    func_dirname_and_basename "$obj" "/" ""
1263775e7de9Smrg    objname="$func_basename_result"
1264775e7de9Smrg    xdir="$func_dirname_result"
12657a84e134Smrg    lobj=${xdir}$objdir/$objname
12667a84e134Smrg
1267775e7de9Smrg    test -z "$base_compile" && \
1268775e7de9Smrg      func_fatal_help "you must specify a compilation command"
12697a84e134Smrg
12707a84e134Smrg    # Delete any leftover library objects.
12717a84e134Smrg    if test "$build_old_libs" = yes; then
12727a84e134Smrg      removelist="$obj $lobj $libobj ${libobj}T"
12737a84e134Smrg    else
12747a84e134Smrg      removelist="$lobj $libobj ${libobj}T"
12757a84e134Smrg    fi
12767a84e134Smrg
12777a84e134Smrg    # On Cygwin there's no "real" PIC flag so we must build both object types
12787a84e134Smrg    case $host_os in
1279775e7de9Smrg    cygwin* | mingw* | pw32* | os2* | cegcc*)
12807a84e134Smrg      pic_mode=default
12817a84e134Smrg      ;;
12827a84e134Smrg    esac
12837a84e134Smrg    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
12847a84e134Smrg      # non-PIC code in shared libraries is not supported
12857a84e134Smrg      pic_mode=default
12867a84e134Smrg    fi
12877a84e134Smrg
12887a84e134Smrg    # Calculate the filename of the output object if compiler does
12897a84e134Smrg    # not support -o with -c
12907a84e134Smrg    if test "$compiler_c_o" = no; then
1291775e7de9Smrg      output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
12927a84e134Smrg      lockfile="$output_obj.lock"
12937a84e134Smrg    else
12947a84e134Smrg      output_obj=
12957a84e134Smrg      need_locks=no
12967a84e134Smrg      lockfile=
12977a84e134Smrg    fi
12987a84e134Smrg
12997a84e134Smrg    # Lock this critical section if it is needed
13007a84e134Smrg    # We use this script file to make the link, it avoids creating a new file
13017a84e134Smrg    if test "$need_locks" = yes; then
1302775e7de9Smrg      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
1303775e7de9Smrg	func_echo "Waiting for $lockfile to be removed"
13047a84e134Smrg	sleep 2
13057a84e134Smrg      done
13067a84e134Smrg    elif test "$need_locks" = warn; then
13077a84e134Smrg      if test -f "$lockfile"; then
1308775e7de9Smrg	$ECHO "\
13097a84e134Smrg*** ERROR, $lockfile exists and contains:
13107a84e134Smrg`cat $lockfile 2>/dev/null`
13117a84e134Smrg
13127a84e134SmrgThis indicates that another process is trying to use the same
13137a84e134Smrgtemporary object file, and libtool could not work around it because
13147a84e134Smrgyour compiler does not support \`-c' and \`-o' together.  If you
13157a84e134Smrgrepeat this compilation, it may succeed, by chance, but you had better
13167a84e134Smrgavoid parallel builds (make -j) in this platform, or get a better
13177a84e134Smrgcompiler."
13187a84e134Smrg
1319775e7de9Smrg	$opt_dry_run || $RM $removelist
13207a84e134Smrg	exit $EXIT_FAILURE
13217a84e134Smrg      fi
1322775e7de9Smrg      removelist="$removelist $output_obj"
1323775e7de9Smrg      $ECHO "$srcfile" > "$lockfile"
13247a84e134Smrg    fi
13257a84e134Smrg
1326775e7de9Smrg    $opt_dry_run || $RM $removelist
1327775e7de9Smrg    removelist="$removelist $lockfile"
1328775e7de9Smrg    trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
1329775e7de9Smrg
13307a84e134Smrg    if test -n "$fix_srcfile_path"; then
13317a84e134Smrg      eval srcfile=\"$fix_srcfile_path\"
13327a84e134Smrg    fi
1333775e7de9Smrg    func_quote_for_eval "$srcfile"
1334775e7de9Smrg    qsrcfile=$func_quote_for_eval_result
13357a84e134Smrg
13367a84e134Smrg    # Only build a PIC object if we are building libtool libraries.
13377a84e134Smrg    if test "$build_libtool_libs" = yes; then
13387a84e134Smrg      # Without this assignment, base_compile gets emptied.
13397a84e134Smrg      fbsd_hideous_sh_bug=$base_compile
13407a84e134Smrg
13417a84e134Smrg      if test "$pic_mode" != no; then
13427a84e134Smrg	command="$base_compile $qsrcfile $pic_flag"
13437a84e134Smrg      else
13447a84e134Smrg	# Don't build PIC code
13457a84e134Smrg	command="$base_compile $qsrcfile"
13467a84e134Smrg      fi
13477a84e134Smrg
1348775e7de9Smrg      func_mkdir_p "$xdir$objdir"
13497a84e134Smrg
13507a84e134Smrg      if test -z "$output_obj"; then
13517a84e134Smrg	# Place PIC objects in $objdir
13527a84e134Smrg	command="$command -o $lobj"
13537a84e134Smrg      fi
13547a84e134Smrg
1355775e7de9Smrg      func_show_eval_locale "$command"	\
1356775e7de9Smrg          'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
13577a84e134Smrg
13587a84e134Smrg      if test "$need_locks" = warn &&
13597a84e134Smrg	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
1360775e7de9Smrg	$ECHO "\
13617a84e134Smrg*** ERROR, $lockfile contains:
13627a84e134Smrg`cat $lockfile 2>/dev/null`
13637a84e134Smrg
13647a84e134Smrgbut it should contain:
13657a84e134Smrg$srcfile
13667a84e134Smrg
13677a84e134SmrgThis indicates that another process is trying to use the same
13687a84e134Smrgtemporary object file, and libtool could not work around it because
13697a84e134Smrgyour compiler does not support \`-c' and \`-o' together.  If you
13707a84e134Smrgrepeat this compilation, it may succeed, by chance, but you had better
13717a84e134Smrgavoid parallel builds (make -j) in this platform, or get a better
13727a84e134Smrgcompiler."
13737a84e134Smrg
1374775e7de9Smrg	$opt_dry_run || $RM $removelist
13757a84e134Smrg	exit $EXIT_FAILURE
13767a84e134Smrg      fi
13777a84e134Smrg
13787a84e134Smrg      # Just move the object if needed, then go on to compile the next one
13797a84e134Smrg      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
1380775e7de9Smrg	func_show_eval '$MV "$output_obj" "$lobj"' \
1381775e7de9Smrg	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
13827a84e134Smrg      fi
13837a84e134Smrg
13847a84e134Smrg      # Allow error messages only from the first compilation.
13857a84e134Smrg      if test "$suppress_opt" = yes; then
1386775e7de9Smrg	suppress_output=' >/dev/null 2>&1'
13877a84e134Smrg      fi
13887a84e134Smrg    fi
13897a84e134Smrg
13907a84e134Smrg    # Only build a position-dependent object if we build old libraries.
13917a84e134Smrg    if test "$build_old_libs" = yes; then
13927a84e134Smrg      if test "$pic_mode" != yes; then
13937a84e134Smrg	# Don't build PIC code
1394775e7de9Smrg	command="$base_compile $qsrcfile$pie_flag"
13957a84e134Smrg      else
13967a84e134Smrg	command="$base_compile $qsrcfile $pic_flag"
13977a84e134Smrg      fi
13987a84e134Smrg      if test "$compiler_c_o" = yes; then
13997a84e134Smrg	command="$command -o $obj"
14007a84e134Smrg      fi
14017a84e134Smrg
14027a84e134Smrg      # Suppress compiler output if we already did a PIC compilation.
14037a84e134Smrg      command="$command$suppress_output"
1404775e7de9Smrg      func_show_eval_locale "$command" \
1405775e7de9Smrg        '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
14067a84e134Smrg
14077a84e134Smrg      if test "$need_locks" = warn &&
14087a84e134Smrg	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
1409775e7de9Smrg	$ECHO "\
14107a84e134Smrg*** ERROR, $lockfile contains:
14117a84e134Smrg`cat $lockfile 2>/dev/null`
14127a84e134Smrg
14137a84e134Smrgbut it should contain:
14147a84e134Smrg$srcfile
14157a84e134Smrg
14167a84e134SmrgThis indicates that another process is trying to use the same
14177a84e134Smrgtemporary object file, and libtool could not work around it because
14187a84e134Smrgyour compiler does not support \`-c' and \`-o' together.  If you
14197a84e134Smrgrepeat this compilation, it may succeed, by chance, but you had better
14207a84e134Smrgavoid parallel builds (make -j) in this platform, or get a better
14217a84e134Smrgcompiler."
14227a84e134Smrg
1423775e7de9Smrg	$opt_dry_run || $RM $removelist
14247a84e134Smrg	exit $EXIT_FAILURE
14257a84e134Smrg      fi
14267a84e134Smrg
14277a84e134Smrg      # Just move the object if needed
14287a84e134Smrg      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
1429775e7de9Smrg	func_show_eval '$MV "$output_obj" "$obj"' \
1430775e7de9Smrg	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
14317a84e134Smrg      fi
14327a84e134Smrg    fi
14337a84e134Smrg
1434775e7de9Smrg    $opt_dry_run || {
1435775e7de9Smrg      func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
14367a84e134Smrg
1437775e7de9Smrg      # Unlock the critical section if it was locked
1438775e7de9Smrg      if test "$need_locks" != no; then
1439775e7de9Smrg	removelist=$lockfile
1440775e7de9Smrg        $RM "$lockfile"
1441775e7de9Smrg      fi
1442775e7de9Smrg    }
14437a84e134Smrg
14447a84e134Smrg    exit $EXIT_SUCCESS
1445775e7de9Smrg}
14467a84e134Smrg
1447775e7de9Smrg$opt_help || {
1448775e7de9Smrgtest "$mode" = compile && func_mode_compile ${1+"$@"}
1449775e7de9Smrg}
14507a84e134Smrg
1451775e7de9Smrgfunc_mode_help ()
1452775e7de9Smrg{
1453775e7de9Smrg    # We need to display help for each of the modes.
1454775e7de9Smrg    case $mode in
1455775e7de9Smrg      "")
1456775e7de9Smrg        # Generic help is extracted from the usage comments
1457775e7de9Smrg        # at the start of this file.
1458775e7de9Smrg        func_help
1459775e7de9Smrg        ;;
14607a84e134Smrg
1461775e7de9Smrg      clean)
1462775e7de9Smrg        $ECHO \
1463775e7de9Smrg"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
14647a84e134Smrg
1465775e7de9SmrgRemove files from the build directory.
14667a84e134Smrg
1467775e7de9SmrgRM is the name of the program to use to delete files associated with each FILE
1468775e7de9Smrg(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
1469775e7de9Smrgto RM.
14707a84e134Smrg
1471775e7de9SmrgIf FILE is a libtool library, object or program, all the files associated
1472775e7de9Smrgwith it are deleted. Otherwise, only FILE itself is deleted using RM."
1473775e7de9Smrg        ;;
14747a84e134Smrg
1475775e7de9Smrg      compile)
1476775e7de9Smrg      $ECHO \
1477775e7de9Smrg"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
14787a84e134Smrg
1479775e7de9SmrgCompile a source file into a libtool library object.
14807a84e134Smrg
1481775e7de9SmrgThis mode accepts the following additional options:
14827a84e134Smrg
1483775e7de9Smrg  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
1484775e7de9Smrg  -no-suppress      do not suppress compiler output for multiple passes
1485775e7de9Smrg  -prefer-pic       try to building PIC objects only
1486775e7de9Smrg  -prefer-non-pic   try to building non-PIC objects only
1487775e7de9Smrg  -shared           do not build a \`.o' file suitable for static linking
1488775e7de9Smrg  -static           only build a \`.o' file suitable for static linking
14897a84e134Smrg
1490775e7de9SmrgCOMPILE-COMMAND is a command to be used in creating a \`standard' object file
1491775e7de9Smrgfrom the given SOURCEFILE.
14927a84e134Smrg
1493775e7de9SmrgThe output file name is determined by removing the directory component from
1494775e7de9SmrgSOURCEFILE, then substituting the C source code suffix \`.c' with the
1495775e7de9Smrglibrary object suffix, \`.lo'."
1496775e7de9Smrg        ;;
14977a84e134Smrg
1498775e7de9Smrg      execute)
1499775e7de9Smrg        $ECHO \
1500775e7de9Smrg"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
15017a84e134Smrg
1502775e7de9SmrgAutomatically set library path, then run a program.
15037a84e134Smrg
1504775e7de9SmrgThis mode accepts the following additional options:
15057a84e134Smrg
1506775e7de9Smrg  -dlopen FILE      add the directory containing FILE to the library path
15077a84e134Smrg
1508775e7de9SmrgThis mode sets the library path environment variable according to \`-dlopen'
1509775e7de9Smrgflags.
15107a84e134Smrg
1511775e7de9SmrgIf any of the ARGS are libtool executable wrappers, then they are translated
1512775e7de9Smrginto their corresponding uninstalled binary, and any of their required library
1513775e7de9Smrgdirectories are added to the library path.
15147a84e134Smrg
1515775e7de9SmrgThen, COMMAND is executed, with ARGS as arguments."
1516775e7de9Smrg        ;;
15177a84e134Smrg
1518775e7de9Smrg      finish)
1519775e7de9Smrg        $ECHO \
1520775e7de9Smrg"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
15217a84e134Smrg
1522775e7de9SmrgComplete the installation of libtool libraries.
15237a84e134Smrg
1524775e7de9SmrgEach LIBDIR is a directory that contains libtool libraries.
15257a84e134Smrg
1526775e7de9SmrgThe commands that this mode executes may require superuser privileges.  Use
1527775e7de9Smrgthe \`--dry-run' option if you just want to see what would be executed."
1528775e7de9Smrg        ;;
15297a84e134Smrg
1530775e7de9Smrg      install)
1531775e7de9Smrg        $ECHO \
1532775e7de9Smrg"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
15337a84e134Smrg
1534775e7de9SmrgInstall executables or libraries.
15357a84e134Smrg
1536775e7de9SmrgINSTALL-COMMAND is the installation command.  The first component should be
1537775e7de9Smrgeither the \`install' or \`cp' program.
15387a84e134Smrg
1539775e7de9SmrgThe following components of INSTALL-COMMAND are treated specially:
15407a84e134Smrg
1541775e7de9Smrg  -inst-prefix PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
15427a84e134Smrg
1543775e7de9SmrgThe rest of the components are interpreted as arguments to that command (only
1544775e7de9SmrgBSD-compatible install options are recognized)."
1545775e7de9Smrg        ;;
15467a84e134Smrg
1547775e7de9Smrg      link)
1548775e7de9Smrg        $ECHO \
1549775e7de9Smrg"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
15507a84e134Smrg
1551775e7de9SmrgLink object files or libraries together to form another library, or to
1552775e7de9Smrgcreate an executable program.
15537a84e134Smrg
1554775e7de9SmrgLINK-COMMAND is a command using the C compiler that you would use to create
1555775e7de9Smrga program from several object files.
15567a84e134Smrg
1557775e7de9SmrgThe following components of LINK-COMMAND are treated specially:
15587a84e134Smrg
1559775e7de9Smrg  -all-static       do not do any dynamic linking at all
1560775e7de9Smrg  -avoid-version    do not add a version suffix if possible
1561775e7de9Smrg  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
1562775e7de9Smrg  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
1563775e7de9Smrg  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
1564775e7de9Smrg  -export-symbols SYMFILE
1565775e7de9Smrg                    try to export only the symbols listed in SYMFILE
1566775e7de9Smrg  -export-symbols-regex REGEX
1567775e7de9Smrg                    try to export only the symbols matching REGEX
1568775e7de9Smrg  -LLIBDIR          search LIBDIR for required installed libraries
1569775e7de9Smrg  -lNAME            OUTPUT-FILE requires the installed library libNAME
1570775e7de9Smrg  -module           build a library that can dlopened
1571775e7de9Smrg  -no-fast-install  disable the fast-install mode
1572775e7de9Smrg  -no-install       link a not-installable executable
1573775e7de9Smrg  -no-undefined     declare that a library does not refer to external symbols
1574775e7de9Smrg  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
1575775e7de9Smrg  -objectlist FILE  Use a list of object files found in FILE to specify objects
1576775e7de9Smrg  -precious-files-regex REGEX
1577775e7de9Smrg                    don't remove output files matching REGEX
1578775e7de9Smrg  -release RELEASE  specify package release information
1579775e7de9Smrg  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
1580775e7de9Smrg  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
1581775e7de9Smrg  -shared           only do dynamic linking of libtool libraries
1582775e7de9Smrg  -shrext SUFFIX    override the standard shared library file extension
1583775e7de9Smrg  -static           do not do any dynamic linking of uninstalled libtool libraries
1584775e7de9Smrg  -static-libtool-libs
1585775e7de9Smrg                    do not do any dynamic linking of libtool libraries
1586775e7de9Smrg  -version-info CURRENT[:REVISION[:AGE]]
1587775e7de9Smrg                    specify library version info [each variable defaults to 0]
1588775e7de9Smrg  -weak LIBNAME     declare that the target provides the LIBNAME interface
15897a84e134Smrg
1590775e7de9SmrgAll other options (arguments beginning with \`-') are ignored.
15917a84e134Smrg
1592775e7de9SmrgEvery other argument is treated as a filename.  Files ending in \`.la' are
1593775e7de9Smrgtreated as uninstalled libtool libraries, other files are standard or library
1594775e7de9Smrgobject files.
1595ab902922Smrg
1596775e7de9SmrgIf the OUTPUT-FILE ends in \`.la', then a libtool library is created,
1597775e7de9Smrgonly library objects (\`.lo' files) may be specified, and \`-rpath' is
1598775e7de9Smrgrequired, except when creating a convenience library.
15997a84e134Smrg
1600775e7de9SmrgIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
1601775e7de9Smrgusing \`ar' and \`ranlib', or on Windows using \`lib'.
16027a84e134Smrg
1603775e7de9SmrgIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
1604775e7de9Smrgis created, otherwise an executable program is created."
16057a84e134Smrg        ;;
16067a84e134Smrg
1607775e7de9Smrg      uninstall)
1608775e7de9Smrg        $ECHO \
1609775e7de9Smrg"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
16107a84e134Smrg
1611775e7de9SmrgRemove libraries from an installation directory.
16127a84e134Smrg
1613775e7de9SmrgRM is the name of the program to use to delete files associated with each FILE
1614775e7de9Smrg(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
1615775e7de9Smrgto RM.
16167a84e134Smrg
1617775e7de9SmrgIf FILE is a libtool library, all the files associated with it are deleted.
1618775e7de9SmrgOtherwise, only FILE itself is deleted using RM."
1619775e7de9Smrg        ;;
16207a84e134Smrg
1621775e7de9Smrg      *)
1622775e7de9Smrg        func_fatal_help "invalid operation mode \`$mode'"
1623775e7de9Smrg        ;;
1624775e7de9Smrg    esac
16257a84e134Smrg
1626775e7de9Smrg    $ECHO
1627775e7de9Smrg    $ECHO "Try \`$progname --help' for more information about other modes."
16287a84e134Smrg
1629775e7de9Smrg    exit $?
1630775e7de9Smrg}
16317a84e134Smrg
1632775e7de9Smrg  # Now that we've collected a possible --mode arg, show help if necessary
1633775e7de9Smrg  $opt_help && func_mode_help
16347a84e134Smrg
16357a84e134Smrg
1636775e7de9Smrg# func_mode_execute arg...
1637775e7de9Smrgfunc_mode_execute ()
1638775e7de9Smrg{
1639775e7de9Smrg    $opt_debug
1640775e7de9Smrg    # The first argument is the command name.
1641775e7de9Smrg    cmd="$nonopt"
1642775e7de9Smrg    test -z "$cmd" && \
1643775e7de9Smrg      func_fatal_help "you must specify a COMMAND"
16447a84e134Smrg
1645775e7de9Smrg    # Handle -dlopen flags immediately.
1646775e7de9Smrg    for file in $execute_dlfiles; do
1647775e7de9Smrg      test -f "$file" \
1648775e7de9Smrg	|| func_fatal_help "\`$file' is not a file"
16497a84e134Smrg
1650775e7de9Smrg      dir=
1651775e7de9Smrg      case $file in
1652775e7de9Smrg      *.la)
1653775e7de9Smrg	# Check to see that this really is a libtool archive.
1654775e7de9Smrg	func_lalib_unsafe_p "$file" \
1655775e7de9Smrg	  || func_fatal_help "\`$lib' is not a valid libtool archive"
16567a84e134Smrg
1657775e7de9Smrg	# Read the libtool library.
1658775e7de9Smrg	dlname=
1659775e7de9Smrg	library_names=
1660775e7de9Smrg	func_source "$file"
16617a84e134Smrg
1662775e7de9Smrg	# Skip this library if it cannot be dlopened.
1663775e7de9Smrg	if test -z "$dlname"; then
1664775e7de9Smrg	  # Warn if it was a shared library.
1665775e7de9Smrg	  test -n "$library_names" && \
1666775e7de9Smrg	    func_warning "\`$file' was not linked with \`-export-dynamic'"
1667775e7de9Smrg	  continue
1668775e7de9Smrg	fi
16697a84e134Smrg
1670775e7de9Smrg	func_dirname "$file" "" "."
1671775e7de9Smrg	dir="$func_dirname_result"
16727a84e134Smrg
1673775e7de9Smrg	if test -f "$dir/$objdir/$dlname"; then
1674775e7de9Smrg	  dir="$dir/$objdir"
1675775e7de9Smrg	else
1676775e7de9Smrg	  if test ! -f "$dir/$dlname"; then
1677775e7de9Smrg	    func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
1678775e7de9Smrg	  fi
1679775e7de9Smrg	fi
16807a84e134Smrg	;;
16817a84e134Smrg
1682775e7de9Smrg      *.lo)
1683775e7de9Smrg	# Just add the directory containing the .lo file.
1684775e7de9Smrg	func_dirname "$file" "" "."
1685775e7de9Smrg	dir="$func_dirname_result"
16867a84e134Smrg	;;
16877a84e134Smrg
1688775e7de9Smrg      *)
1689775e7de9Smrg	func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
16907a84e134Smrg	continue
16917a84e134Smrg	;;
1692775e7de9Smrg      esac
16937a84e134Smrg
1694775e7de9Smrg      # Get the absolute pathname.
1695775e7de9Smrg      absdir=`cd "$dir" && pwd`
1696775e7de9Smrg      test -n "$absdir" && dir="$absdir"
16977a84e134Smrg
1698775e7de9Smrg      # Now add the directory to shlibpath_var.
1699775e7de9Smrg      if eval "test -z \"\$$shlibpath_var\""; then
1700775e7de9Smrg	eval "$shlibpath_var=\"\$dir\""
1701775e7de9Smrg      else
1702775e7de9Smrg	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
1703775e7de9Smrg      fi
1704775e7de9Smrg    done
17057a84e134Smrg
1706775e7de9Smrg    # This variable tells wrapper scripts just to set shlibpath_var
1707775e7de9Smrg    # rather than running their programs.
1708775e7de9Smrg    libtool_execute_magic="$magic"
17097a84e134Smrg
1710775e7de9Smrg    # Check if any of the arguments is a wrapper script.
1711775e7de9Smrg    args=
1712775e7de9Smrg    for file
1713775e7de9Smrg    do
1714775e7de9Smrg      case $file in
1715775e7de9Smrg      -*) ;;
1716775e7de9Smrg      *)
1717775e7de9Smrg	# Do a test to see if this is really a libtool program.
1718775e7de9Smrg	if func_ltwrapper_script_p "$file"; then
1719775e7de9Smrg	  func_source "$file"
1720775e7de9Smrg	  # Transform arg to wrapped name.
1721775e7de9Smrg	  file="$progdir/$program"
1722775e7de9Smrg	elif func_ltwrapper_executable_p "$file"; then
1723775e7de9Smrg	  func_ltwrapper_scriptname "$file"
1724775e7de9Smrg	  func_source "$func_ltwrapper_scriptname_result"
1725775e7de9Smrg	  # Transform arg to wrapped name.
1726775e7de9Smrg	  file="$progdir/$program"
1727775e7de9Smrg	fi
1728775e7de9Smrg	;;
1729775e7de9Smrg      esac
1730775e7de9Smrg      # Quote arguments (to preserve shell metacharacters).
1731775e7de9Smrg      func_quote_for_eval "$file"
1732775e7de9Smrg      args="$args $func_quote_for_eval_result"
1733775e7de9Smrg    done
17347a84e134Smrg
1735775e7de9Smrg    if test "X$opt_dry_run" = Xfalse; then
1736775e7de9Smrg      if test -n "$shlibpath_var"; then
1737775e7de9Smrg	# Export the shlibpath_var.
1738775e7de9Smrg	eval "export $shlibpath_var"
1739775e7de9Smrg      fi
17407a84e134Smrg
1741775e7de9Smrg      # Restore saved environment variables
1742775e7de9Smrg      for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
1743775e7de9Smrg      do
1744775e7de9Smrg	eval "if test \"\${save_$lt_var+set}\" = set; then
1745775e7de9Smrg                $lt_var=\$save_$lt_var; export $lt_var
17467a84e134Smrg	      else
1747775e7de9Smrg		$lt_unset $lt_var
1748775e7de9Smrg	      fi"
1749775e7de9Smrg      done
17507a84e134Smrg
1751775e7de9Smrg      # Now prepare to actually exec the command.
1752775e7de9Smrg      exec_cmd="\$cmd$args"
1753775e7de9Smrg    else
1754775e7de9Smrg      # Display what would be done.
1755775e7de9Smrg      if test -n "$shlibpath_var"; then
1756775e7de9Smrg	eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
1757775e7de9Smrg	$ECHO "export $shlibpath_var"
1758775e7de9Smrg      fi
1759775e7de9Smrg      $ECHO "$cmd$args"
1760775e7de9Smrg      exit $EXIT_SUCCESS
1761775e7de9Smrg    fi
1762775e7de9Smrg}
17637a84e134Smrg
1764775e7de9Smrgtest "$mode" = execute && func_mode_execute ${1+"$@"}
17657a84e134Smrg
17667a84e134Smrg
1767775e7de9Smrg# func_mode_finish arg...
1768775e7de9Smrgfunc_mode_finish ()
1769775e7de9Smrg{
1770775e7de9Smrg    $opt_debug
1771775e7de9Smrg    libdirs="$nonopt"
1772775e7de9Smrg    admincmds=
17737a84e134Smrg
1774775e7de9Smrg    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
1775775e7de9Smrg      for dir
1776775e7de9Smrg      do
1777775e7de9Smrg	libdirs="$libdirs $dir"
1778775e7de9Smrg      done
17797a84e134Smrg
1780775e7de9Smrg      for libdir in $libdirs; do
1781775e7de9Smrg	if test -n "$finish_cmds"; then
1782775e7de9Smrg	  # Do each command in the finish commands.
1783775e7de9Smrg	  func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
1784775e7de9Smrg'"$cmd"'"'
17857a84e134Smrg	fi
1786775e7de9Smrg	if test -n "$finish_eval"; then
1787775e7de9Smrg	  # Do the single finish_eval.
1788775e7de9Smrg	  eval cmds=\"$finish_eval\"
1789775e7de9Smrg	  $opt_dry_run || eval "$cmds" || admincmds="$admincmds
1790775e7de9Smrg       $cmds"
1791775e7de9Smrg	fi
1792775e7de9Smrg      done
1793775e7de9Smrg    fi
17947a84e134Smrg
1795775e7de9Smrg    # Exit here if they wanted silent mode.
1796775e7de9Smrg    $opt_silent && exit $EXIT_SUCCESS
17977a84e134Smrg
1798775e7de9Smrg    $ECHO "X----------------------------------------------------------------------" | $Xsed
1799775e7de9Smrg    $ECHO "Libraries have been installed in:"
1800775e7de9Smrg    for libdir in $libdirs; do
1801775e7de9Smrg      $ECHO "   $libdir"
1802775e7de9Smrg    done
1803775e7de9Smrg    $ECHO
1804775e7de9Smrg    $ECHO "If you ever happen to want to link against installed libraries"
1805775e7de9Smrg    $ECHO "in a given directory, LIBDIR, you must either use libtool, and"
1806775e7de9Smrg    $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'"
1807775e7de9Smrg    $ECHO "flag during linking and do at least one of the following:"
1808775e7de9Smrg    if test -n "$shlibpath_var"; then
1809775e7de9Smrg      $ECHO "   - add LIBDIR to the \`$shlibpath_var' environment variable"
1810775e7de9Smrg      $ECHO "     during execution"
1811775e7de9Smrg    fi
1812775e7de9Smrg    if test -n "$runpath_var"; then
1813775e7de9Smrg      $ECHO "   - add LIBDIR to the \`$runpath_var' environment variable"
1814775e7de9Smrg      $ECHO "     during linking"
1815775e7de9Smrg    fi
1816775e7de9Smrg    if test -n "$hardcode_libdir_flag_spec"; then
1817775e7de9Smrg      libdir=LIBDIR
1818775e7de9Smrg      eval flag=\"$hardcode_libdir_flag_spec\"
18197a84e134Smrg
1820775e7de9Smrg      $ECHO "   - use the \`$flag' linker flag"
1821775e7de9Smrg    fi
1822775e7de9Smrg    if test -n "$admincmds"; then
1823775e7de9Smrg      $ECHO "   - have your system administrator run these commands:$admincmds"
1824775e7de9Smrg    fi
1825775e7de9Smrg    if test -f /etc/ld.so.conf; then
1826775e7de9Smrg      $ECHO "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
1827775e7de9Smrg    fi
1828775e7de9Smrg    $ECHO
1829775e7de9Smrg
1830775e7de9Smrg    $ECHO "See any operating system documentation about shared libraries for"
1831775e7de9Smrg    case $host in
1832775e7de9Smrg      solaris2.[6789]|solaris2.1[0-9])
1833775e7de9Smrg        $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual"
1834775e7de9Smrg	$ECHO "pages."
18357a84e134Smrg	;;
1836775e7de9Smrg      *)
1837775e7de9Smrg        $ECHO "more information, such as the ld(1) and ld.so(8) manual pages."
1838775e7de9Smrg        ;;
1839775e7de9Smrg    esac
1840775e7de9Smrg    $ECHO "X----------------------------------------------------------------------" | $Xsed
1841775e7de9Smrg    exit $EXIT_SUCCESS
1842775e7de9Smrg}
18437a84e134Smrg
1844775e7de9Smrgtest "$mode" = finish && func_mode_finish ${1+"$@"}
18457a84e134Smrg
1846ab902922Smrg
1847775e7de9Smrg# func_mode_install arg...
1848775e7de9Smrgfunc_mode_install ()
1849775e7de9Smrg{
1850775e7de9Smrg    $opt_debug
1851775e7de9Smrg    # There may be an optional sh(1) argument at the beginning of
1852775e7de9Smrg    # install_prog (especially on Windows NT).
1853775e7de9Smrg    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
1854775e7de9Smrg       # Allow the use of GNU shtool's install command.
1855775e7de9Smrg       $ECHO "X$nonopt" | $GREP shtool >/dev/null; then
1856775e7de9Smrg      # Aesthetically quote it.
1857775e7de9Smrg      func_quote_for_eval "$nonopt"
1858775e7de9Smrg      install_prog="$func_quote_for_eval_result "
1859775e7de9Smrg      arg=$1
1860775e7de9Smrg      shift
1861775e7de9Smrg    else
1862775e7de9Smrg      install_prog=
1863775e7de9Smrg      arg=$nonopt
18647a84e134Smrg    fi
18657a84e134Smrg
1866775e7de9Smrg    # The real first argument should be the name of the installation program.
1867775e7de9Smrg    # Aesthetically quote it.
1868775e7de9Smrg    func_quote_for_eval "$arg"
1869775e7de9Smrg    install_prog="$install_prog$func_quote_for_eval_result"
18707a84e134Smrg
1871775e7de9Smrg    # We need to accept at least all the BSD install flags.
1872775e7de9Smrg    dest=
1873775e7de9Smrg    files=
1874775e7de9Smrg    opts=
1875775e7de9Smrg    prev=
1876775e7de9Smrg    install_type=
1877775e7de9Smrg    isdir=no
1878775e7de9Smrg    stripme=
1879775e7de9Smrg    for arg
1880775e7de9Smrg    do
1881775e7de9Smrg      if test -n "$dest"; then
1882775e7de9Smrg	files="$files $dest"
1883775e7de9Smrg	dest=$arg
1884775e7de9Smrg	continue
1885775e7de9Smrg      fi
18867a84e134Smrg
1887775e7de9Smrg      case $arg in
1888775e7de9Smrg      -d) isdir=yes ;;
1889775e7de9Smrg      -f)
1890775e7de9Smrg	case " $install_prog " in
1891775e7de9Smrg	*[\\\ /]cp\ *) ;;
1892775e7de9Smrg	*) prev=$arg ;;
1893775e7de9Smrg	esac
1894775e7de9Smrg	;;
1895775e7de9Smrg      -g | -m | -o)
1896775e7de9Smrg	prev=$arg
1897775e7de9Smrg	;;
1898775e7de9Smrg      -s)
1899775e7de9Smrg	stripme=" -s"
1900775e7de9Smrg	continue
1901775e7de9Smrg	;;
1902775e7de9Smrg      -*)
1903775e7de9Smrg	;;
1904775e7de9Smrg      *)
1905775e7de9Smrg	# If the previous option needed an argument, then skip it.
1906775e7de9Smrg	if test -n "$prev"; then
1907775e7de9Smrg	  prev=
1908775e7de9Smrg	else
1909775e7de9Smrg	  dest=$arg
1910775e7de9Smrg	  continue
1911775e7de9Smrg	fi
1912775e7de9Smrg	;;
1913775e7de9Smrg      esac
19147a84e134Smrg
1915775e7de9Smrg      # Aesthetically quote the argument.
1916775e7de9Smrg      func_quote_for_eval "$arg"
1917775e7de9Smrg      install_prog="$install_prog $func_quote_for_eval_result"
1918775e7de9Smrg    done
1919775e7de9Smrg
1920775e7de9Smrg    test -z "$install_prog" && \
1921775e7de9Smrg      func_fatal_help "you must specify an install program"
1922775e7de9Smrg
1923775e7de9Smrg    test -n "$prev" && \
1924775e7de9Smrg      func_fatal_help "the \`$prev' option requires an argument"
1925775e7de9Smrg
1926775e7de9Smrg    if test -z "$files"; then
1927775e7de9Smrg      if test -z "$dest"; then
1928775e7de9Smrg	func_fatal_help "no file or destination specified"
1929775e7de9Smrg      else
1930775e7de9Smrg	func_fatal_help "you must specify a destination"
19317a84e134Smrg      fi
19327a84e134Smrg    fi
19337a84e134Smrg
1934775e7de9Smrg    # Strip any trailing slash from the destination.
1935775e7de9Smrg    func_stripname '' '/' "$dest"
1936775e7de9Smrg    dest=$func_stripname_result
19377a84e134Smrg
1938775e7de9Smrg    # Check to see that the destination is a directory.
1939775e7de9Smrg    test -d "$dest" && isdir=yes
1940775e7de9Smrg    if test "$isdir" = yes; then
1941775e7de9Smrg      destdir="$dest"
1942775e7de9Smrg      destname=
1943775e7de9Smrg    else
1944775e7de9Smrg      func_dirname_and_basename "$dest" "" "."
1945775e7de9Smrg      destdir="$func_dirname_result"
1946775e7de9Smrg      destname="$func_basename_result"
1947775e7de9Smrg
1948775e7de9Smrg      # Not a directory, so check to see that there is only one file specified.
1949775e7de9Smrg      set dummy $files; shift
1950775e7de9Smrg      test "$#" -gt 1 && \
1951775e7de9Smrg	func_fatal_help "\`$dest' is not a directory"
1952775e7de9Smrg    fi
1953775e7de9Smrg    case $destdir in
1954775e7de9Smrg    [\\/]* | [A-Za-z]:[\\/]*) ;;
19557a84e134Smrg    *)
1956775e7de9Smrg      for file in $files; do
1957775e7de9Smrg	case $file in
1958775e7de9Smrg	*.lo) ;;
1959775e7de9Smrg	*)
1960775e7de9Smrg	  func_fatal_help "\`$destdir' must be an absolute directory name"
1961775e7de9Smrg	  ;;
1962775e7de9Smrg	esac
1963775e7de9Smrg      done
19647a84e134Smrg      ;;
19657a84e134Smrg    esac
19667a84e134Smrg
1967775e7de9Smrg    # This variable tells wrapper scripts just to set variables rather
1968775e7de9Smrg    # than running their programs.
1969775e7de9Smrg    libtool_install_magic="$magic"
19707a84e134Smrg
1971775e7de9Smrg    staticlibs=
1972775e7de9Smrg    future_libdirs=
1973775e7de9Smrg    current_libdirs=
1974775e7de9Smrg    for file in $files; do
19757a84e134Smrg
1976775e7de9Smrg      # Do each installation.
1977775e7de9Smrg      case $file in
1978775e7de9Smrg      *.$libext)
1979775e7de9Smrg	# Do the static libraries later.
1980775e7de9Smrg	staticlibs="$staticlibs $file"
1981775e7de9Smrg	;;
1982775e7de9Smrg
1983775e7de9Smrg      *.la)
1984775e7de9Smrg	# Check to see that this really is a libtool archive.
1985775e7de9Smrg	func_lalib_unsafe_p "$file" \
1986775e7de9Smrg	  || func_fatal_help "\`$file' is not a valid libtool archive"
1987775e7de9Smrg
1988775e7de9Smrg	library_names=
1989775e7de9Smrg	old_library=
1990775e7de9Smrg	relink_command=
1991775e7de9Smrg	func_source "$file"
1992775e7de9Smrg
1993775e7de9Smrg	# Add the libdir to current_libdirs if it is the destination.
1994775e7de9Smrg	if test "X$destdir" = "X$libdir"; then
1995775e7de9Smrg	  case "$current_libdirs " in
1996775e7de9Smrg	  *" $libdir "*) ;;
1997775e7de9Smrg	  *) current_libdirs="$current_libdirs $libdir" ;;
19987a84e134Smrg	  esac
1999775e7de9Smrg	else
2000775e7de9Smrg	  # Note the libdir as a future libdir.
2001775e7de9Smrg	  case "$future_libdirs " in
2002775e7de9Smrg	  *" $libdir "*) ;;
2003775e7de9Smrg	  *) future_libdirs="$future_libdirs $libdir" ;;
2004775e7de9Smrg	  esac
2005775e7de9Smrg	fi
20067a84e134Smrg
2007775e7de9Smrg	func_dirname "$file" "/" ""
2008775e7de9Smrg	dir="$func_dirname_result"
2009775e7de9Smrg	dir="$dir$objdir"
2010775e7de9Smrg
2011775e7de9Smrg	if test -n "$relink_command"; then
2012775e7de9Smrg	  # Determine the prefix the user has applied to our future dir.
2013775e7de9Smrg	  inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"`
2014775e7de9Smrg
2015775e7de9Smrg	  # Don't allow the user to place us outside of our expected
2016775e7de9Smrg	  # location b/c this prevents finding dependent libraries that
2017775e7de9Smrg	  # are installed to the same prefix.
2018775e7de9Smrg	  # At present, this check doesn't affect windows .dll's that
2019775e7de9Smrg	  # are installed into $libdir/../bin (currently, that works fine)
2020775e7de9Smrg	  # but it's something to keep an eye on.
2021775e7de9Smrg	  test "$inst_prefix_dir" = "$destdir" && \
2022775e7de9Smrg	    func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
2023775e7de9Smrg
2024775e7de9Smrg	  if test -n "$inst_prefix_dir"; then
2025775e7de9Smrg	    # Stick the inst_prefix_dir data into the link command.
2026775e7de9Smrg	    relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
2027775e7de9Smrg	  else
2028775e7de9Smrg	    relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"`
2029775e7de9Smrg	  fi
2030775e7de9Smrg
2031775e7de9Smrg	  func_warning "relinking \`$file'"
2032775e7de9Smrg	  func_show_eval "$relink_command" \
2033775e7de9Smrg	    'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
2034775e7de9Smrg	fi
2035775e7de9Smrg
2036775e7de9Smrg	# See the names of the shared library.
2037775e7de9Smrg	set dummy $library_names; shift
2038775e7de9Smrg	if test -n "$1"; then
2039775e7de9Smrg	  realname="$1"
2040775e7de9Smrg	  shift
2041775e7de9Smrg
2042775e7de9Smrg	  srcname="$realname"
2043775e7de9Smrg	  test -n "$relink_command" && srcname="$realname"T
2044775e7de9Smrg
2045775e7de9Smrg	  # Install the shared library and build the symlinks.
2046775e7de9Smrg	  func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \
2047775e7de9Smrg	      'exit $?'
2048775e7de9Smrg	  tstripme="$stripme"
2049775e7de9Smrg	  case $host_os in
2050775e7de9Smrg	  cygwin* | mingw* | pw32* | cegcc*)
2051775e7de9Smrg	    case $realname in
2052775e7de9Smrg	    *.dll.a)
2053775e7de9Smrg	      tstripme=""
2054775e7de9Smrg	      ;;
2055775e7de9Smrg	    esac
20567a84e134Smrg	    ;;
20577a84e134Smrg	  esac
2058775e7de9Smrg	  if test -n "$tstripme" && test -n "$striplib"; then
2059775e7de9Smrg	    func_show_eval "$striplib $destdir/$realname" 'exit $?'
2060ab902922Smrg	  fi
2061775e7de9Smrg
2062775e7de9Smrg	  if test "$#" -gt 0; then
2063775e7de9Smrg	    # Delete the old symlinks, and create new ones.
2064775e7de9Smrg	    # Try `ln -sf' first, because the `ln' binary might depend on
2065775e7de9Smrg	    # the symlink we replace!  Solaris /bin/ln does not understand -f,
2066775e7de9Smrg	    # so we also need to try rm && ln -s.
2067775e7de9Smrg	    for linkname
2068775e7de9Smrg	    do
2069775e7de9Smrg	      test "$linkname" != "$realname" \
2070775e7de9Smrg		&& func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
20717a84e134Smrg	    done
20727a84e134Smrg	  fi
20737a84e134Smrg
2074775e7de9Smrg	  # Do each command in the postinstall commands.
2075775e7de9Smrg	  lib="$destdir/$realname"
2076775e7de9Smrg	  func_execute_cmds "$postinstall_cmds" 'exit $?'
20777a84e134Smrg	fi
20787a84e134Smrg
2079775e7de9Smrg	# Install the pseudo-library for information purposes.
2080775e7de9Smrg	func_basename "$file"
2081775e7de9Smrg	name="$func_basename_result"
2082775e7de9Smrg	instname="$dir/$name"i
2083775e7de9Smrg	func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
20847a84e134Smrg
2085775e7de9Smrg	# Maybe install the static library, too.
2086775e7de9Smrg	test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
2087775e7de9Smrg	;;
20887a84e134Smrg
2089775e7de9Smrg      *.lo)
2090775e7de9Smrg	# Install (i.e. copy) a libtool object.
20917a84e134Smrg
2092775e7de9Smrg	# Figure out destination file name, if it wasn't already specified.
2093775e7de9Smrg	if test -n "$destname"; then
2094775e7de9Smrg	  destfile="$destdir/$destname"
2095775e7de9Smrg	else
2096775e7de9Smrg	  func_basename "$file"
2097775e7de9Smrg	  destfile="$func_basename_result"
2098775e7de9Smrg	  destfile="$destdir/$destfile"
2099775e7de9Smrg	fi
2100775e7de9Smrg
2101775e7de9Smrg	# Deduce the name of the destination old-style object file.
2102775e7de9Smrg	case $destfile in
2103775e7de9Smrg	*.lo)
2104775e7de9Smrg	  func_lo2o "$destfile"
2105775e7de9Smrg	  staticdest=$func_lo2o_result
2106775e7de9Smrg	  ;;
2107775e7de9Smrg	*.$objext)
2108775e7de9Smrg	  staticdest="$destfile"
2109775e7de9Smrg	  destfile=
2110775e7de9Smrg	  ;;
2111775e7de9Smrg	*)
2112775e7de9Smrg	  func_fatal_help "cannot copy a libtool object to \`$destfile'"
2113775e7de9Smrg	  ;;
21147a84e134Smrg	esac
21157a84e134Smrg
2116775e7de9Smrg	# Install the libtool object if requested.
2117775e7de9Smrg	test -n "$destfile" && \
2118775e7de9Smrg	  func_show_eval "$install_prog $file $destfile" 'exit $?'
2119775e7de9Smrg
2120775e7de9Smrg	# Install the old object if enabled.
2121775e7de9Smrg	if test "$build_old_libs" = yes; then
2122775e7de9Smrg	  # Deduce the name of the old-style object file.
2123775e7de9Smrg	  func_lo2o "$file"
2124775e7de9Smrg	  staticobj=$func_lo2o_result
2125775e7de9Smrg	  func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
21267a84e134Smrg	fi
2127775e7de9Smrg	exit $EXIT_SUCCESS
2128775e7de9Smrg	;;
21297a84e134Smrg
2130775e7de9Smrg      *)
2131775e7de9Smrg	# Figure out destination file name, if it wasn't already specified.
2132775e7de9Smrg	if test -n "$destname"; then
2133775e7de9Smrg	  destfile="$destdir/$destname"
2134775e7de9Smrg	else
2135775e7de9Smrg	  func_basename "$file"
2136775e7de9Smrg	  destfile="$func_basename_result"
2137775e7de9Smrg	  destfile="$destdir/$destfile"
2138775e7de9Smrg	fi
21397a84e134Smrg
2140775e7de9Smrg	# If the file is missing, and there is a .exe on the end, strip it
2141775e7de9Smrg	# because it is most likely a libtool script we actually want to
2142775e7de9Smrg	# install
2143775e7de9Smrg	stripped_ext=""
2144775e7de9Smrg	case $file in
2145775e7de9Smrg	  *.exe)
2146775e7de9Smrg	    if test ! -f "$file"; then
2147775e7de9Smrg	      func_stripname '' '.exe' "$file"
2148775e7de9Smrg	      file=$func_stripname_result
2149775e7de9Smrg	      stripped_ext=".exe"
2150775e7de9Smrg	    fi
2151775e7de9Smrg	    ;;
2152775e7de9Smrg	esac
21537a84e134Smrg
2154775e7de9Smrg	# Do a test to see if this is really a libtool program.
2155775e7de9Smrg	case $host in
2156775e7de9Smrg	*cygwin* | *mingw*)
2157775e7de9Smrg	    if func_ltwrapper_executable_p "$file"; then
2158775e7de9Smrg	      func_ltwrapper_scriptname "$file"
2159775e7de9Smrg	      wrapper=$func_ltwrapper_scriptname_result
2160775e7de9Smrg	    else
2161775e7de9Smrg	      func_stripname '' '.exe' "$file"
2162775e7de9Smrg	      wrapper=$func_stripname_result
2163775e7de9Smrg	    fi
2164775e7de9Smrg	    ;;
2165775e7de9Smrg	*)
2166775e7de9Smrg	    wrapper=$file
2167775e7de9Smrg	    ;;
2168775e7de9Smrg	esac
2169775e7de9Smrg	if func_ltwrapper_script_p "$wrapper"; then
2170775e7de9Smrg	  notinst_deplibs=
2171775e7de9Smrg	  relink_command=
21727a84e134Smrg
2173775e7de9Smrg	  func_source "$wrapper"
2174775e7de9Smrg
2175775e7de9Smrg	  # Check the variables that should have been set.
2176775e7de9Smrg	  test -z "$generated_by_libtool_version" && \
2177775e7de9Smrg	    func_fatal_error "invalid libtool wrapper script \`$wrapper'"
2178775e7de9Smrg
2179775e7de9Smrg	  finalize=yes
2180775e7de9Smrg	  for lib in $notinst_deplibs; do
2181775e7de9Smrg	    # Check to see that each library is installed.
2182775e7de9Smrg	    libdir=
2183775e7de9Smrg	    if test -f "$lib"; then
2184775e7de9Smrg	      func_source "$lib"
2185775e7de9Smrg	    fi
2186775e7de9Smrg	    libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
2187775e7de9Smrg	    if test -n "$libdir" && test ! -f "$libfile"; then
2188775e7de9Smrg	      func_warning "\`$lib' has not been installed in \`$libdir'"
2189775e7de9Smrg	      finalize=no
2190775e7de9Smrg	    fi
2191775e7de9Smrg	  done
2192775e7de9Smrg
2193775e7de9Smrg	  relink_command=
2194775e7de9Smrg	  func_source "$wrapper"
2195775e7de9Smrg
2196775e7de9Smrg	  outputname=
2197775e7de9Smrg	  if test "$fast_install" = no && test -n "$relink_command"; then
2198775e7de9Smrg	    $opt_dry_run || {
2199775e7de9Smrg	      if test "$finalize" = yes; then
2200775e7de9Smrg	        tmpdir=`func_mktempdir`
2201775e7de9Smrg		func_basename "$file$stripped_ext"
2202775e7de9Smrg		file="$func_basename_result"
2203775e7de9Smrg	        outputname="$tmpdir/$file"
2204775e7de9Smrg	        # Replace the output file specification.
2205775e7de9Smrg	        relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
2206775e7de9Smrg
2207775e7de9Smrg	        $opt_silent || {
2208775e7de9Smrg	          func_quote_for_expand "$relink_command"
2209775e7de9Smrg		  eval "func_echo $func_quote_for_expand_result"
2210775e7de9Smrg	        }
2211775e7de9Smrg	        if eval "$relink_command"; then :
2212775e7de9Smrg	          else
2213775e7de9Smrg		  func_error "error: relink \`$file' with the above command before installing it"
2214775e7de9Smrg		  $opt_dry_run || ${RM}r "$tmpdir"
2215775e7de9Smrg		  continue
2216775e7de9Smrg	        fi
2217775e7de9Smrg	        file="$outputname"
2218775e7de9Smrg	      else
2219775e7de9Smrg	        func_warning "cannot relink \`$file'"
2220775e7de9Smrg	      fi
2221775e7de9Smrg	    }
22227a84e134Smrg	  else
2223775e7de9Smrg	    # Install the binary that we compiled earlier.
2224775e7de9Smrg	    file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
22257a84e134Smrg	  fi
2226775e7de9Smrg	fi
22277a84e134Smrg
2228775e7de9Smrg	# remove .exe since cygwin /usr/bin/install will append another
2229775e7de9Smrg	# one anyway
2230775e7de9Smrg	case $install_prog,$host in
2231775e7de9Smrg	*/usr/bin/install*,*cygwin*)
2232775e7de9Smrg	  case $file:$destfile in
2233775e7de9Smrg	  *.exe:*.exe)
2234775e7de9Smrg	    # this is ok
2235775e7de9Smrg	    ;;
2236775e7de9Smrg	  *.exe:*)
2237775e7de9Smrg	    destfile=$destfile.exe
2238775e7de9Smrg	    ;;
2239775e7de9Smrg	  *:*.exe)
2240775e7de9Smrg	    func_stripname '' '.exe' "$destfile"
2241775e7de9Smrg	    destfile=$func_stripname_result
2242775e7de9Smrg	    ;;
2243775e7de9Smrg	  esac
22447a84e134Smrg	  ;;
22457a84e134Smrg	esac
2246775e7de9Smrg	func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
2247775e7de9Smrg	$opt_dry_run || if test -n "$outputname"; then
2248775e7de9Smrg	  ${RM}r "$tmpdir"
2249775e7de9Smrg	fi
2250775e7de9Smrg	;;
2251775e7de9Smrg      esac
2252775e7de9Smrg    done
22537a84e134Smrg
2254775e7de9Smrg    for file in $staticlibs; do
2255775e7de9Smrg      func_basename "$file"
2256775e7de9Smrg      name="$func_basename_result"
2257775e7de9Smrg
2258775e7de9Smrg      # Set up the ranlib parameters.
2259775e7de9Smrg      oldlib="$destdir/$name"
2260775e7de9Smrg
2261775e7de9Smrg      func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
2262775e7de9Smrg
2263775e7de9Smrg      if test -n "$stripme" && test -n "$old_striplib"; then
2264775e7de9Smrg	func_show_eval "$old_striplib $oldlib" 'exit $?'
2265775e7de9Smrg      fi
2266775e7de9Smrg
2267775e7de9Smrg      # Do each command in the postinstall commands.
2268775e7de9Smrg      func_execute_cmds "$old_postinstall_cmds" 'exit $?'
2269775e7de9Smrg    done
2270775e7de9Smrg
2271775e7de9Smrg    test -n "$future_libdirs" && \
2272775e7de9Smrg      func_warning "remember to run \`$progname --finish$future_libdirs'"
2273775e7de9Smrg
2274775e7de9Smrg    if test -n "$current_libdirs"; then
2275775e7de9Smrg      # Maybe just do a dry run.
2276775e7de9Smrg      $opt_dry_run && current_libdirs=" -n$current_libdirs"
2277775e7de9Smrg      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
2278775e7de9Smrg    else
2279775e7de9Smrg      exit $EXIT_SUCCESS
2280775e7de9Smrg    fi
2281775e7de9Smrg}
2282775e7de9Smrg
2283775e7de9Smrgtest "$mode" = install && func_mode_install ${1+"$@"}
2284775e7de9Smrg
2285775e7de9Smrg
2286775e7de9Smrg# func_generate_dlsyms outputname originator pic_p
2287775e7de9Smrg# Extract symbols from dlprefiles and create ${outputname}S.o with
2288775e7de9Smrg# a dlpreopen symbol table.
2289775e7de9Smrgfunc_generate_dlsyms ()
2290775e7de9Smrg{
2291775e7de9Smrg    $opt_debug
2292775e7de9Smrg    my_outputname="$1"
2293775e7de9Smrg    my_originator="$2"
2294775e7de9Smrg    my_pic_p="${3-no}"
2295775e7de9Smrg    my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
2296775e7de9Smrg    my_dlsyms=
2297775e7de9Smrg
2298775e7de9Smrg    if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
2299775e7de9Smrg      if test -n "$NM" && test -n "$global_symbol_pipe"; then
2300775e7de9Smrg	my_dlsyms="${my_outputname}S.c"
2301775e7de9Smrg      else
2302775e7de9Smrg	func_error "not configured to extract global symbols from dlpreopened files"
2303775e7de9Smrg      fi
2304775e7de9Smrg    fi
2305775e7de9Smrg
2306775e7de9Smrg    if test -n "$my_dlsyms"; then
2307775e7de9Smrg      case $my_dlsyms in
2308775e7de9Smrg      "") ;;
2309775e7de9Smrg      *.c)
2310775e7de9Smrg	# Discover the nlist of each of the dlfiles.
2311775e7de9Smrg	nlist="$output_objdir/${my_outputname}.nm"
2312775e7de9Smrg
2313775e7de9Smrg	func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
2314775e7de9Smrg
2315775e7de9Smrg	# Parse the name list into a source file.
2316775e7de9Smrg	func_verbose "creating $output_objdir/$my_dlsyms"
2317775e7de9Smrg
2318775e7de9Smrg	$opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
2319775e7de9Smrg/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
2320775e7de9Smrg/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
2321775e7de9Smrg
2322775e7de9Smrg#ifdef __cplusplus
2323775e7de9Smrgextern \"C\" {
2324775e7de9Smrg#endif
2325775e7de9Smrg
2326775e7de9Smrg/* External symbol declarations for the compiler. */\
2327775e7de9Smrg"
2328775e7de9Smrg
2329775e7de9Smrg	if test "$dlself" = yes; then
2330775e7de9Smrg	  func_verbose "generating symbol list for \`$output'"
2331775e7de9Smrg
2332775e7de9Smrg	  $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
2333775e7de9Smrg
2334775e7de9Smrg	  # Add our own program objects to the symbol list.
2335775e7de9Smrg	  progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
2336775e7de9Smrg	  for progfile in $progfiles; do
2337775e7de9Smrg	    func_verbose "extracting global C symbols from \`$progfile'"
2338775e7de9Smrg	    $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'"
2339775e7de9Smrg	  done
2340775e7de9Smrg
2341775e7de9Smrg	  if test -n "$exclude_expsyms"; then
2342775e7de9Smrg	    $opt_dry_run || {
2343775e7de9Smrg	      eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
2344775e7de9Smrg	      eval '$MV "$nlist"T "$nlist"'
2345775e7de9Smrg	    }
23467a84e134Smrg	  fi
2347775e7de9Smrg
2348775e7de9Smrg	  if test -n "$export_symbols_regex"; then
2349775e7de9Smrg	    $opt_dry_run || {
2350775e7de9Smrg	      eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
2351775e7de9Smrg	      eval '$MV "$nlist"T "$nlist"'
2352775e7de9Smrg	    }
2353775e7de9Smrg	  fi
2354775e7de9Smrg
2355775e7de9Smrg	  # Prepare the list of exported symbols
2356775e7de9Smrg	  if test -z "$export_symbols"; then
2357775e7de9Smrg	    export_symbols="$output_objdir/$outputname.exp"
2358775e7de9Smrg	    $opt_dry_run || {
2359775e7de9Smrg	      $RM $export_symbols
2360775e7de9Smrg	      eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
2361775e7de9Smrg	      case $host in
2362775e7de9Smrg	      *cygwin* | *mingw* | *cegcc* )
2363775e7de9Smrg                eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
2364775e7de9Smrg                eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
2365775e7de9Smrg	        ;;
2366775e7de9Smrg	      esac
2367775e7de9Smrg	    }
23687a84e134Smrg	  else
2369775e7de9Smrg	    $opt_dry_run || {
2370775e7de9Smrg	      eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
2371775e7de9Smrg	      eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
2372775e7de9Smrg	      eval '$MV "$nlist"T "$nlist"'
2373775e7de9Smrg	      case $host in
2374775e7de9Smrg	        *cygwin | *mingw* | *cegcc* )
2375775e7de9Smrg	          eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
2376775e7de9Smrg	          eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
2377775e7de9Smrg	          ;;
2378775e7de9Smrg	      esac
2379775e7de9Smrg	    }
23807a84e134Smrg	  fi
2381775e7de9Smrg	fi
23827a84e134Smrg
2383775e7de9Smrg	for dlprefile in $dlprefiles; do
2384775e7de9Smrg	  func_verbose "extracting global C symbols from \`$dlprefile'"
2385775e7de9Smrg	  func_basename "$dlprefile"
2386775e7de9Smrg	  name="$func_basename_result"
2387775e7de9Smrg	  $opt_dry_run || {
2388775e7de9Smrg	    eval '$ECHO ": $name " >> "$nlist"'
2389775e7de9Smrg	    eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'"
2390775e7de9Smrg	  }
2391775e7de9Smrg	done
2392775e7de9Smrg
2393775e7de9Smrg	$opt_dry_run || {
2394775e7de9Smrg	  # Make sure we have at least an empty file.
2395775e7de9Smrg	  test -f "$nlist" || : > "$nlist"
2396775e7de9Smrg
2397775e7de9Smrg	  if test -n "$exclude_expsyms"; then
2398775e7de9Smrg	    $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
2399775e7de9Smrg	    $MV "$nlist"T "$nlist"
24007a84e134Smrg	  fi
2401775e7de9Smrg
2402775e7de9Smrg	  # Try sorting and uniquifying the output.
2403775e7de9Smrg	  if $GREP -v "^: " < "$nlist" |
2404775e7de9Smrg	      if sort -k 3 </dev/null >/dev/null 2>&1; then
2405775e7de9Smrg		sort -k 3
2406775e7de9Smrg	      else
2407775e7de9Smrg		sort +2
2408775e7de9Smrg	      fi |
2409775e7de9Smrg	      uniq > "$nlist"S; then
2410775e7de9Smrg	    :
24117a84e134Smrg	  else
2412775e7de9Smrg	    $GREP -v "^: " < "$nlist" > "$nlist"S
24137a84e134Smrg	  fi
24147a84e134Smrg
2415775e7de9Smrg	  if test -f "$nlist"S; then
2416775e7de9Smrg	    eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
24177a84e134Smrg	  else
2418775e7de9Smrg	    $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms"
24197a84e134Smrg	  fi
24207a84e134Smrg
2421775e7de9Smrg	  $ECHO >> "$output_objdir/$my_dlsyms" "\
24227a84e134Smrg
2423775e7de9Smrg/* The mapping between symbol names and symbols.  */
2424775e7de9Smrgtypedef struct {
2425775e7de9Smrg  const char *name;
2426775e7de9Smrg  void *address;
2427775e7de9Smrg} lt_dlsymlist;
2428775e7de9Smrg"
2429775e7de9Smrg	  case $host in
2430775e7de9Smrg	  *cygwin* | *mingw* | *cegcc* )
2431775e7de9Smrg	    $ECHO >> "$output_objdir/$my_dlsyms" "\
2432775e7de9Smrg/* DATA imports from DLLs on WIN32 con't be const, because
2433775e7de9Smrg   runtime relocations are performed -- see ld's documentation
2434775e7de9Smrg   on pseudo-relocs.  */"
2435775e7de9Smrg	    lt_dlsym_const= ;;
2436775e7de9Smrg	  *osf5*)
2437775e7de9Smrg	    echo >> "$output_objdir/$my_dlsyms" "\
2438775e7de9Smrg/* This system does not cope well with relocations in const data */"
2439775e7de9Smrg	    lt_dlsym_const= ;;
2440775e7de9Smrg	  *)
2441775e7de9Smrg	    lt_dlsym_const=const ;;
2442775e7de9Smrg	  esac
24437a84e134Smrg
2444775e7de9Smrg	  $ECHO >> "$output_objdir/$my_dlsyms" "\
2445775e7de9Smrgextern $lt_dlsym_const lt_dlsymlist
2446775e7de9Smrglt_${my_prefix}_LTX_preloaded_symbols[];
2447775e7de9Smrg$lt_dlsym_const lt_dlsymlist
2448775e7de9Smrglt_${my_prefix}_LTX_preloaded_symbols[] =
2449775e7de9Smrg{\
2450775e7de9Smrg  { \"$my_originator\", (void *) 0 },"
24517a84e134Smrg
2452775e7de9Smrg	  case $need_lib_prefix in
2453775e7de9Smrg	  no)
2454775e7de9Smrg	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
2455775e7de9Smrg	    ;;
2456775e7de9Smrg	  *)
2457775e7de9Smrg	    eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
2458775e7de9Smrg	    ;;
2459775e7de9Smrg	  esac
2460775e7de9Smrg	  $ECHO >> "$output_objdir/$my_dlsyms" "\
2461775e7de9Smrg  {0, (void *) 0}
2462775e7de9Smrg};
24637a84e134Smrg
2464775e7de9Smrg/* This works around a problem in FreeBSD linker */
2465775e7de9Smrg#ifdef FREEBSD_WORKAROUND
2466775e7de9Smrgstatic const void *lt_preloaded_setup() {
2467775e7de9Smrg  return lt_${my_prefix}_LTX_preloaded_symbols;
2468775e7de9Smrg}
2469775e7de9Smrg#endif
2470775e7de9Smrg
2471775e7de9Smrg#ifdef __cplusplus
2472775e7de9Smrg}
2473775e7de9Smrg#endif\
2474775e7de9Smrg"
2475775e7de9Smrg	} # !$opt_dry_run
2476775e7de9Smrg
2477775e7de9Smrg	pic_flag_for_symtable=
2478775e7de9Smrg	case "$compile_command " in
2479775e7de9Smrg	*" -static "*) ;;
2480775e7de9Smrg	*)
2481775e7de9Smrg	  case $host in
2482775e7de9Smrg	  # compiling the symbol table file with pic_flag works around
2483775e7de9Smrg	  # a FreeBSD bug that causes programs to crash when -lm is
2484775e7de9Smrg	  # linked before any other PIC object.  But we must not use
2485775e7de9Smrg	  # pic_flag when linking with -static.  The problem exists in
2486775e7de9Smrg	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
2487775e7de9Smrg	  *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
2488775e7de9Smrg	    pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
2489775e7de9Smrg	  *-*-hpux*)
2490775e7de9Smrg	    pic_flag_for_symtable=" $pic_flag"  ;;
2491775e7de9Smrg	  *)
2492775e7de9Smrg	    if test "X$my_pic_p" != Xno; then
2493775e7de9Smrg	      pic_flag_for_symtable=" $pic_flag"
24947a84e134Smrg	    fi
2495775e7de9Smrg	    ;;
2496775e7de9Smrg	  esac
2497775e7de9Smrg	  ;;
2498775e7de9Smrg	esac
2499775e7de9Smrg	symtab_cflags=
2500775e7de9Smrg	for arg in $LTCFLAGS; do
2501775e7de9Smrg	  case $arg in
2502775e7de9Smrg	  -pie | -fpie | -fPIE) ;;
2503775e7de9Smrg	  *) symtab_cflags="$symtab_cflags $arg" ;;
2504775e7de9Smrg	  esac
2505775e7de9Smrg	done
25067a84e134Smrg
2507775e7de9Smrg	# Now compile the dynamic symbol file.
2508775e7de9Smrg	func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
25097a84e134Smrg
2510775e7de9Smrg	# Clean up the generated files.
2511775e7de9Smrg	func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
25127a84e134Smrg
2513775e7de9Smrg	# Transform the symbol file into the correct name.
2514775e7de9Smrg	symfileobj="$output_objdir/${my_outputname}S.$objext"
2515775e7de9Smrg	case $host in
2516775e7de9Smrg	*cygwin* | *mingw* | *cegcc* )
2517775e7de9Smrg	  if test -f "$output_objdir/$my_outputname.def"; then
2518775e7de9Smrg	    compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
2519775e7de9Smrg	    finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
2520775e7de9Smrg	  else
2521775e7de9Smrg	    compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
2522775e7de9Smrg	    finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
25237a84e134Smrg	  fi
2524775e7de9Smrg	  ;;
2525775e7de9Smrg	*)
2526775e7de9Smrg	  compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
2527775e7de9Smrg	  finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
2528775e7de9Smrg	  ;;
2529775e7de9Smrg	esac
2530775e7de9Smrg	;;
2531775e7de9Smrg      *)
2532775e7de9Smrg	func_fatal_error "unknown suffix for \`$my_dlsyms'"
2533775e7de9Smrg	;;
2534775e7de9Smrg      esac
2535775e7de9Smrg    else
2536775e7de9Smrg      # We keep going just in case the user didn't refer to
2537775e7de9Smrg      # lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
2538775e7de9Smrg      # really was required.
25397a84e134Smrg
2540775e7de9Smrg      # Nullify the symbol file.
2541775e7de9Smrg      compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
2542775e7de9Smrg      finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
2543775e7de9Smrg    fi
2544775e7de9Smrg}
25457a84e134Smrg
2546775e7de9Smrg# func_win32_libid arg
2547775e7de9Smrg# return the library type of file 'arg'
2548775e7de9Smrg#
2549775e7de9Smrg# Need a lot of goo to handle *both* DLLs and import libs
2550775e7de9Smrg# Has to be a shell function in order to 'eat' the argument
2551775e7de9Smrg# that is supplied when $file_magic_command is called.
2552775e7de9Smrgfunc_win32_libid ()
2553775e7de9Smrg{
2554775e7de9Smrg  $opt_debug
2555775e7de9Smrg  win32_libid_type="unknown"
2556775e7de9Smrg  win32_fileres=`file -L $1 2>/dev/null`
2557775e7de9Smrg  case $win32_fileres in
2558775e7de9Smrg  *ar\ archive\ import\ library*) # definitely import
2559775e7de9Smrg    win32_libid_type="x86 archive import"
2560775e7de9Smrg    ;;
2561775e7de9Smrg  *ar\ archive*) # could be an import, or static
2562775e7de9Smrg    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
2563775e7de9Smrg       $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
2564775e7de9Smrg      win32_nmres=`eval $NM -f posix -A $1 |
2565775e7de9Smrg	$SED -n -e '
2566775e7de9Smrg	    1,100{
2567775e7de9Smrg		/ I /{
2568775e7de9Smrg		    s,.*,import,
2569775e7de9Smrg		    p
2570775e7de9Smrg		    q
2571775e7de9Smrg		}
2572775e7de9Smrg	    }'`
2573775e7de9Smrg      case $win32_nmres in
2574775e7de9Smrg      import*)  win32_libid_type="x86 archive import";;
2575775e7de9Smrg      *)        win32_libid_type="x86 archive static";;
2576775e7de9Smrg      esac
2577775e7de9Smrg    fi
2578775e7de9Smrg    ;;
2579775e7de9Smrg  *DLL*)
2580775e7de9Smrg    win32_libid_type="x86 DLL"
2581775e7de9Smrg    ;;
2582775e7de9Smrg  *executable*) # but shell scripts are "executable" too...
2583775e7de9Smrg    case $win32_fileres in
2584775e7de9Smrg    *MS\ Windows\ PE\ Intel*)
2585775e7de9Smrg      win32_libid_type="x86 DLL"
2586775e7de9Smrg      ;;
2587775e7de9Smrg    esac
2588775e7de9Smrg    ;;
2589775e7de9Smrg  esac
2590775e7de9Smrg  $ECHO "$win32_libid_type"
2591775e7de9Smrg}
25927a84e134Smrg
25937a84e134Smrg
25947a84e134Smrg
2595775e7de9Smrg# func_extract_an_archive dir oldlib
2596775e7de9Smrgfunc_extract_an_archive ()
2597775e7de9Smrg{
2598775e7de9Smrg    $opt_debug
2599775e7de9Smrg    f_ex_an_ar_dir="$1"; shift
2600775e7de9Smrg    f_ex_an_ar_oldlib="$1"
2601775e7de9Smrg    func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?'
2602775e7de9Smrg    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
2603775e7de9Smrg     :
2604775e7de9Smrg    else
2605775e7de9Smrg      func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
2606775e7de9Smrg    fi
2607775e7de9Smrg}
26087a84e134Smrg
26097a84e134Smrg
2610775e7de9Smrg# func_extract_archives gentop oldlib ...
2611775e7de9Smrgfunc_extract_archives ()
2612775e7de9Smrg{
2613775e7de9Smrg    $opt_debug
2614775e7de9Smrg    my_gentop="$1"; shift
2615775e7de9Smrg    my_oldlibs=${1+"$@"}
2616775e7de9Smrg    my_oldobjs=""
2617775e7de9Smrg    my_xlib=""
2618775e7de9Smrg    my_xabs=""
2619775e7de9Smrg    my_xdir=""
26207a84e134Smrg
2621775e7de9Smrg    for my_xlib in $my_oldlibs; do
2622775e7de9Smrg      # Extract the objects.
2623775e7de9Smrg      case $my_xlib in
2624775e7de9Smrg	[\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
2625775e7de9Smrg	*) my_xabs=`pwd`"/$my_xlib" ;;
2626775e7de9Smrg      esac
2627775e7de9Smrg      func_basename "$my_xlib"
2628775e7de9Smrg      my_xlib="$func_basename_result"
2629775e7de9Smrg      my_xlib_u=$my_xlib
2630775e7de9Smrg      while :; do
2631775e7de9Smrg        case " $extracted_archives " in
2632775e7de9Smrg	*" $my_xlib_u "*)
2633775e7de9Smrg	  func_arith $extracted_serial + 1
2634775e7de9Smrg	  extracted_serial=$func_arith_result
2635775e7de9Smrg	  my_xlib_u=lt$extracted_serial-$my_xlib ;;
2636775e7de9Smrg	*) break ;;
2637775e7de9Smrg	esac
2638775e7de9Smrg      done
2639775e7de9Smrg      extracted_archives="$extracted_archives $my_xlib_u"
2640775e7de9Smrg      my_xdir="$my_gentop/$my_xlib_u"
26417a84e134Smrg
2642775e7de9Smrg      func_mkdir_p "$my_xdir"
26437a84e134Smrg
2644775e7de9Smrg      case $host in
2645775e7de9Smrg      *-darwin*)
2646775e7de9Smrg	func_verbose "Extracting $my_xabs"
2647775e7de9Smrg	# Do not bother doing anything if just a dry run
2648775e7de9Smrg	$opt_dry_run || {
2649775e7de9Smrg	  darwin_orig_dir=`pwd`
2650775e7de9Smrg	  cd $my_xdir || exit $?
2651775e7de9Smrg	  darwin_archive=$my_xabs
2652775e7de9Smrg	  darwin_curdir=`pwd`
2653775e7de9Smrg	  darwin_base_archive=`basename "$darwin_archive"`
2654775e7de9Smrg	  darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
2655775e7de9Smrg	  if test -n "$darwin_arches"; then
2656775e7de9Smrg	    darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
2657775e7de9Smrg	    darwin_arch=
2658775e7de9Smrg	    func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
2659775e7de9Smrg	    for darwin_arch in  $darwin_arches ; do
2660775e7de9Smrg	      func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
2661775e7de9Smrg	      $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
2662775e7de9Smrg	      cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
2663775e7de9Smrg	      func_extract_an_archive "`pwd`" "${darwin_base_archive}"
2664775e7de9Smrg	      cd "$darwin_curdir"
2665775e7de9Smrg	      $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
2666775e7de9Smrg	    done # $darwin_arches
2667775e7de9Smrg            ## Okay now we've a bunch of thin objects, gotta fatten them up :)
2668775e7de9Smrg	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
2669775e7de9Smrg	    darwin_file=
2670775e7de9Smrg	    darwin_files=
2671775e7de9Smrg	    for darwin_file in $darwin_filelist; do
2672775e7de9Smrg	      darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
2673775e7de9Smrg	      $LIPO -create -output "$darwin_file" $darwin_files
2674775e7de9Smrg	    done # $darwin_filelist
2675775e7de9Smrg	    $RM -rf unfat-$$
2676775e7de9Smrg	    cd "$darwin_orig_dir"
26777a84e134Smrg	  else
2678775e7de9Smrg	    cd $darwin_orig_dir
2679775e7de9Smrg	    func_extract_an_archive "$my_xdir" "$my_xabs"
2680775e7de9Smrg	  fi # $darwin_arches
2681775e7de9Smrg	} # !$opt_dry_run
2682775e7de9Smrg	;;
2683775e7de9Smrg      *)
2684775e7de9Smrg        func_extract_an_archive "$my_xdir" "$my_xabs"
2685775e7de9Smrg	;;
2686775e7de9Smrg      esac
2687775e7de9Smrg      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
2688775e7de9Smrg    done
26897a84e134Smrg
2690775e7de9Smrg    func_extract_archives_result="$my_oldobjs"
2691775e7de9Smrg}
26927a84e134Smrg
26937a84e134Smrg
26947a84e134Smrg
2695775e7de9Smrg# func_emit_wrapper_part1 [arg=no]
2696775e7de9Smrg#
2697775e7de9Smrg# Emit the first part of a libtool wrapper script on stdout.
2698775e7de9Smrg# For more information, see the description associated with
2699775e7de9Smrg# func_emit_wrapper(), below.
2700775e7de9Smrgfunc_emit_wrapper_part1 ()
2701775e7de9Smrg{
2702775e7de9Smrg	func_emit_wrapper_part1_arg1=no
2703775e7de9Smrg	if test -n "$1" ; then
2704775e7de9Smrg	  func_emit_wrapper_part1_arg1=$1
27057a84e134Smrg	fi
27067a84e134Smrg
2707775e7de9Smrg	$ECHO "\
2708775e7de9Smrg#! $SHELL
27097a84e134Smrg
2710775e7de9Smrg# $output - temporary wrapper script for $objdir/$outputname
2711775e7de9Smrg# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
2712775e7de9Smrg#
2713775e7de9Smrg# The $output program cannot be directly executed until all the libtool
2714775e7de9Smrg# libraries that it depends on are installed.
2715775e7de9Smrg#
2716775e7de9Smrg# This wrapper script should never be moved out of the build directory.
2717775e7de9Smrg# If it is, it will not operate correctly.
27187a84e134Smrg
2719775e7de9Smrg# Sed substitution that helps us do robust quoting.  It backslashifies
2720775e7de9Smrg# metacharacters that are still active within double-quoted strings.
2721775e7de9SmrgXsed='${SED} -e 1s/^X//'
2722775e7de9Smrgsed_quote_subst='$sed_quote_subst'
27237a84e134Smrg
2724775e7de9Smrg# Be Bourne compatible
2725775e7de9Smrgif test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
2726775e7de9Smrg  emulate sh
2727775e7de9Smrg  NULLCMD=:
2728775e7de9Smrg  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
2729775e7de9Smrg  # is contrary to our usage.  Disable this feature.
2730775e7de9Smrg  alias -g '\${1+\"\$@\"}'='\"\$@\"'
2731775e7de9Smrg  setopt NO_GLOB_SUBST
2732775e7de9Smrgelse
2733775e7de9Smrg  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
2734775e7de9Smrgfi
2735775e7de9SmrgBIN_SH=xpg4; export BIN_SH # for Tru64
2736775e7de9SmrgDUALCASE=1; export DUALCASE # for MKS sh
27377a84e134Smrg
2738775e7de9Smrg# The HP-UX ksh and POSIX shell print the target directory to stdout
2739775e7de9Smrg# if CDPATH is set.
2740775e7de9Smrg(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
27417a84e134Smrg
2742775e7de9Smrgrelink_command=\"$relink_command\"
27437a84e134Smrg
2744775e7de9Smrg# This environment variable determines our operation mode.
2745775e7de9Smrgif test \"\$libtool_install_magic\" = \"$magic\"; then
2746775e7de9Smrg  # install mode needs the following variables:
2747775e7de9Smrg  generated_by_libtool_version='$macro_version'
2748775e7de9Smrg  notinst_deplibs='$notinst_deplibs'
2749775e7de9Smrgelse
2750775e7de9Smrg  # When we are sourced in execute mode, \$file and \$ECHO are already set.
2751775e7de9Smrg  if test \"\$libtool_execute_magic\" != \"$magic\"; then
2752775e7de9Smrg    ECHO=\"$qecho\"
2753775e7de9Smrg    file=\"\$0\"
2754775e7de9Smrg    # Make sure echo works.
2755775e7de9Smrg    if test \"X\$1\" = X--no-reexec; then
2756775e7de9Smrg      # Discard the --no-reexec flag, and continue.
2757775e7de9Smrg      shift
2758775e7de9Smrg    elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then
2759775e7de9Smrg      # Yippee, \$ECHO works!
2760775e7de9Smrg      :
2761775e7de9Smrg    else
2762775e7de9Smrg      # Restart under the correct shell, and then maybe \$ECHO will work.
2763775e7de9Smrg      exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
2764775e7de9Smrg    fi
2765775e7de9Smrg  fi\
2766775e7de9Smrg"
2767775e7de9Smrg	$ECHO "\
27687a84e134Smrg
2769775e7de9Smrg  # Find the directory that this script lives in.
2770775e7de9Smrg  thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
2771775e7de9Smrg  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
27727a84e134Smrg
2773775e7de9Smrg  # Follow symbolic links until we get to the real thisdir.
2774775e7de9Smrg  file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
2775775e7de9Smrg  while test -n \"\$file\"; do
2776775e7de9Smrg    destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
27777a84e134Smrg
2778775e7de9Smrg    # If there was a directory component, then change thisdir.
2779775e7de9Smrg    if test \"x\$destdir\" != \"x\$file\"; then
2780775e7de9Smrg      case \"\$destdir\" in
2781775e7de9Smrg      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
2782775e7de9Smrg      *) thisdir=\"\$thisdir/\$destdir\" ;;
27837a84e134Smrg      esac
2784775e7de9Smrg    fi
27857a84e134Smrg
2786775e7de9Smrg    file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
2787775e7de9Smrg    file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
2788775e7de9Smrg  done
2789775e7de9Smrg"
2790775e7de9Smrg}
2791775e7de9Smrg# end: func_emit_wrapper_part1
2792775e7de9Smrg
2793775e7de9Smrg# func_emit_wrapper_part2 [arg=no]
2794775e7de9Smrg#
2795775e7de9Smrg# Emit the second part of a libtool wrapper script on stdout.
2796775e7de9Smrg# For more information, see the description associated with
2797775e7de9Smrg# func_emit_wrapper(), below.
2798775e7de9Smrgfunc_emit_wrapper_part2 ()
2799775e7de9Smrg{
2800775e7de9Smrg	func_emit_wrapper_part2_arg1=no
2801775e7de9Smrg	if test -n "$1" ; then
2802775e7de9Smrg	  func_emit_wrapper_part2_arg1=$1
28037a84e134Smrg	fi
28047a84e134Smrg
2805775e7de9Smrg	$ECHO "\
28067a84e134Smrg
2807775e7de9Smrg  # Usually 'no', except on cygwin/mingw when embedded into
2808775e7de9Smrg  # the cwrapper.
2809775e7de9Smrg  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_part2_arg1
2810775e7de9Smrg  if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
2811775e7de9Smrg    # special case for '.'
2812775e7de9Smrg    if test \"\$thisdir\" = \".\"; then
2813775e7de9Smrg      thisdir=\`pwd\`
2814775e7de9Smrg    fi
2815775e7de9Smrg    # remove .libs from thisdir
2816775e7de9Smrg    case \"\$thisdir\" in
2817775e7de9Smrg    *[\\\\/]$objdir ) thisdir=\`\$ECHO \"X\$thisdir\" | \$Xsed -e 's%[\\\\/][^\\\\/]*$%%'\` ;;
2818775e7de9Smrg    $objdir )   thisdir=. ;;
2819775e7de9Smrg    esac
2820775e7de9Smrg  fi
2821775e7de9Smrg
2822775e7de9Smrg  # Try to get the absolute directory name.
2823775e7de9Smrg  absdir=\`cd \"\$thisdir\" && pwd\`
2824775e7de9Smrg  test -n \"\$absdir\" && thisdir=\"\$absdir\"
2825775e7de9Smrg"
2826775e7de9Smrg
2827775e7de9Smrg	if test "$fast_install" = yes; then
2828775e7de9Smrg	  $ECHO "\
2829775e7de9Smrg  program=lt-'$outputname'$exeext
2830775e7de9Smrg  progdir=\"\$thisdir/$objdir\"
2831775e7de9Smrg
2832775e7de9Smrg  if test ! -f \"\$progdir/\$program\" ||
2833775e7de9Smrg     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
2834775e7de9Smrg       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
2835775e7de9Smrg
2836775e7de9Smrg    file=\"\$\$-\$program\"
2837775e7de9Smrg
2838775e7de9Smrg    if test ! -d \"\$progdir\"; then
2839775e7de9Smrg      $MKDIR \"\$progdir\"
2840775e7de9Smrg    else
2841775e7de9Smrg      $RM \"\$progdir/\$file\"
2842775e7de9Smrg    fi"
2843775e7de9Smrg
2844775e7de9Smrg	  $ECHO "\
2845775e7de9Smrg
2846775e7de9Smrg    # relink executable if necessary
2847775e7de9Smrg    if test -n \"\$relink_command\"; then
2848775e7de9Smrg      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
2849775e7de9Smrg      else
2850775e7de9Smrg	$ECHO \"\$relink_command_output\" >&2
2851775e7de9Smrg	$RM \"\$progdir/\$file\"
2852775e7de9Smrg	exit 1
28537a84e134Smrg      fi
2854775e7de9Smrg    fi
28557a84e134Smrg
2856775e7de9Smrg    $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
2857775e7de9Smrg    { $RM \"\$progdir/\$program\";
2858775e7de9Smrg      $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
2859775e7de9Smrg    $RM \"\$progdir/\$file\"
2860775e7de9Smrg  fi"
2861775e7de9Smrg	else
2862775e7de9Smrg	  $ECHO "\
2863775e7de9Smrg  program='$outputname'
2864775e7de9Smrg  progdir=\"\$thisdir/$objdir\"
2865775e7de9Smrg"
28667a84e134Smrg	fi
28677a84e134Smrg
2868775e7de9Smrg	$ECHO "\
28697a84e134Smrg
2870775e7de9Smrg  if test -f \"\$progdir/\$program\"; then"
28717a84e134Smrg
2872775e7de9Smrg	# Export our shlibpath_var if we have one.
2873775e7de9Smrg	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
2874775e7de9Smrg	  $ECHO "\
2875775e7de9Smrg    # Add our own library path to $shlibpath_var
2876775e7de9Smrg    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
28777a84e134Smrg
2878775e7de9Smrg    # Some systems cannot cope with colon-terminated $shlibpath_var
2879775e7de9Smrg    # The second colon is a workaround for a bug in BeOS R4 sed
2880775e7de9Smrg    $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
2881775e7de9Smrg
2882775e7de9Smrg    export $shlibpath_var
2883775e7de9Smrg"
28847a84e134Smrg	fi
28857a84e134Smrg
2886775e7de9Smrg	# fixup the dll searchpath if we need to.
2887775e7de9Smrg	if test -n "$dllsearchpath"; then
2888775e7de9Smrg	  $ECHO "\
2889775e7de9Smrg    # Add the dll search path components to the executable PATH
2890775e7de9Smrg    PATH=$dllsearchpath:\$PATH
2891775e7de9Smrg"
2892775e7de9Smrg	fi
28937a84e134Smrg
2894775e7de9Smrg	$ECHO "\
2895775e7de9Smrg    if test \"\$libtool_execute_magic\" != \"$magic\"; then
2896775e7de9Smrg      # Run the actual program with our arguments.
2897775e7de9Smrg"
2898775e7de9Smrg	case $host in
2899775e7de9Smrg	# Backslashes separate directories on plain windows
2900775e7de9Smrg	*-*-mingw | *-*-os2* | *-cegcc*)
2901775e7de9Smrg	  $ECHO "\
2902775e7de9Smrg      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
2903775e7de9Smrg"
29047a84e134Smrg	  ;;
29057a84e134Smrg
29067a84e134Smrg	*)
2907775e7de9Smrg	  $ECHO "\
2908775e7de9Smrg      exec \"\$progdir/\$program\" \${1+\"\$@\"}
2909775e7de9Smrg"
29107a84e134Smrg	  ;;
29117a84e134Smrg	esac
2912775e7de9Smrg	$ECHO "\
2913775e7de9Smrg      \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
2914775e7de9Smrg      exit 1
2915775e7de9Smrg    fi
2916775e7de9Smrg  else
2917775e7de9Smrg    # The program doesn't exist.
2918775e7de9Smrg    \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
2919775e7de9Smrg    \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
2920775e7de9Smrg    $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
2921775e7de9Smrg    exit 1
2922775e7de9Smrg  fi
2923775e7de9Smrgfi\
2924775e7de9Smrg"
2925775e7de9Smrg}
2926775e7de9Smrg# end: func_emit_wrapper_part2
29277a84e134Smrg
29287a84e134Smrg
2929775e7de9Smrg# func_emit_wrapper [arg=no]
2930775e7de9Smrg#
2931775e7de9Smrg# Emit a libtool wrapper script on stdout.
2932775e7de9Smrg# Don't directly open a file because we may want to
2933775e7de9Smrg# incorporate the script contents within a cygwin/mingw
2934775e7de9Smrg# wrapper executable.  Must ONLY be called from within
2935775e7de9Smrg# func_mode_link because it depends on a number of variables
2936775e7de9Smrg# set therein.
2937775e7de9Smrg#
2938775e7de9Smrg# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
2939775e7de9Smrg# variable will take.  If 'yes', then the emitted script
2940775e7de9Smrg# will assume that the directory in which it is stored is
2941775e7de9Smrg# the $objdir directory.  This is a cygwin/mingw-specific
2942775e7de9Smrg# behavior.
2943775e7de9Smrgfunc_emit_wrapper ()
2944775e7de9Smrg{
2945775e7de9Smrg	func_emit_wrapper_arg1=no
2946775e7de9Smrg	if test -n "$1" ; then
2947775e7de9Smrg	  func_emit_wrapper_arg1=$1
29487a84e134Smrg	fi
29497a84e134Smrg
2950775e7de9Smrg	# split this up so that func_emit_cwrapperexe_src
2951775e7de9Smrg	# can call each part independently.
2952775e7de9Smrg	func_emit_wrapper_part1 "${func_emit_wrapper_arg1}"
2953775e7de9Smrg	func_emit_wrapper_part2 "${func_emit_wrapper_arg1}"
2954775e7de9Smrg}
29557a84e134Smrg
29567a84e134Smrg
2957775e7de9Smrg# func_to_host_path arg
2958775e7de9Smrg#
2959775e7de9Smrg# Convert paths to host format when used with build tools.
2960775e7de9Smrg# Intended for use with "native" mingw (where libtool itself
2961775e7de9Smrg# is running under the msys shell), or in the following cross-
2962775e7de9Smrg# build environments:
2963775e7de9Smrg#    $build          $host
2964775e7de9Smrg#    mingw (msys)    mingw  [e.g. native]
2965775e7de9Smrg#    cygwin          mingw
2966775e7de9Smrg#    *nix + wine     mingw
2967775e7de9Smrg# where wine is equipped with the `winepath' executable.
2968775e7de9Smrg# In the native mingw case, the (msys) shell automatically
2969775e7de9Smrg# converts paths for any non-msys applications it launches,
2970775e7de9Smrg# but that facility isn't available from inside the cwrapper.
2971775e7de9Smrg# Similar accommodations are necessary for $host mingw and
2972775e7de9Smrg# $build cygwin.  Calling this function does no harm for other
2973775e7de9Smrg# $host/$build combinations not listed above.
2974775e7de9Smrg#
2975775e7de9Smrg# ARG is the path (on $build) that should be converted to
2976775e7de9Smrg# the proper representation for $host. The result is stored
2977775e7de9Smrg# in $func_to_host_path_result.
2978775e7de9Smrgfunc_to_host_path ()
2979775e7de9Smrg{
2980775e7de9Smrg  func_to_host_path_result="$1"
2981775e7de9Smrg  if test -n "$1" ; then
2982775e7de9Smrg    case $host in
2983775e7de9Smrg      *mingw* )
2984775e7de9Smrg        lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
2985775e7de9Smrg        case $build in
2986775e7de9Smrg          *mingw* ) # actually, msys
2987775e7de9Smrg            # awkward: cmd appends spaces to result
2988775e7de9Smrg            lt_sed_strip_trailing_spaces="s/[ ]*\$//"
2989775e7de9Smrg            func_to_host_path_tmp1=`( cmd //c echo "$1" |\
2990775e7de9Smrg              $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""`
2991775e7de9Smrg            func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
2992775e7de9Smrg              $SED -e "$lt_sed_naive_backslashify"`
2993775e7de9Smrg            ;;
2994775e7de9Smrg          *cygwin* )
2995775e7de9Smrg            func_to_host_path_tmp1=`cygpath -w "$1"`
2996775e7de9Smrg            func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
2997775e7de9Smrg              $SED -e "$lt_sed_naive_backslashify"`
2998775e7de9Smrg            ;;
2999775e7de9Smrg          * )
3000775e7de9Smrg            # Unfortunately, winepath does not exit with a non-zero
3001775e7de9Smrg            # error code, so we are forced to check the contents of
3002775e7de9Smrg            # stdout. On the other hand, if the command is not
3003775e7de9Smrg            # found, the shell will set an exit code of 127 and print
3004775e7de9Smrg            # *an error message* to stdout. So we must check for both
3005775e7de9Smrg            # error code of zero AND non-empty stdout, which explains
3006775e7de9Smrg            # the odd construction:
3007775e7de9Smrg            func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null`
3008775e7de9Smrg            if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then
3009775e7de9Smrg              func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
3010775e7de9Smrg                $SED -e "$lt_sed_naive_backslashify"`
3011775e7de9Smrg            else
3012775e7de9Smrg              # Allow warning below.
3013775e7de9Smrg              func_to_host_path_result=""
3014775e7de9Smrg            fi
3015775e7de9Smrg            ;;
3016775e7de9Smrg        esac
3017775e7de9Smrg        if test -z "$func_to_host_path_result" ; then
3018775e7de9Smrg          func_error "Could not determine host path corresponding to"
3019775e7de9Smrg          func_error "  '$1'"
3020775e7de9Smrg          func_error "Continuing, but uninstalled executables may not work."
3021775e7de9Smrg          # Fallback:
3022775e7de9Smrg          func_to_host_path_result="$1"
3023775e7de9Smrg        fi
3024775e7de9Smrg        ;;
3025775e7de9Smrg    esac
3026775e7de9Smrg  fi
3027775e7de9Smrg}
3028775e7de9Smrg# end: func_to_host_path
30297a84e134Smrg
3030775e7de9Smrg# func_to_host_pathlist arg
3031775e7de9Smrg#
3032775e7de9Smrg# Convert pathlists to host format when used with build tools.
3033775e7de9Smrg# See func_to_host_path(), above. This function supports the
3034775e7de9Smrg# following $build/$host combinations (but does no harm for
3035775e7de9Smrg# combinations not listed here):
3036775e7de9Smrg#    $build          $host
3037775e7de9Smrg#    mingw (msys)    mingw  [e.g. native]
3038775e7de9Smrg#    cygwin          mingw
3039775e7de9Smrg#    *nix + wine     mingw
3040775e7de9Smrg#
3041775e7de9Smrg# Path separators are also converted from $build format to
3042775e7de9Smrg# $host format. If ARG begins or ends with a path separator
3043775e7de9Smrg# character, it is preserved (but converted to $host format)
3044775e7de9Smrg# on output.
3045775e7de9Smrg#
3046775e7de9Smrg# ARG is a pathlist (on $build) that should be converted to
3047775e7de9Smrg# the proper representation on $host. The result is stored
3048775e7de9Smrg# in $func_to_host_pathlist_result.
3049775e7de9Smrgfunc_to_host_pathlist ()
3050775e7de9Smrg{
3051775e7de9Smrg  func_to_host_pathlist_result="$1"
3052775e7de9Smrg  if test -n "$1" ; then
3053775e7de9Smrg    case $host in
3054775e7de9Smrg      *mingw* )
3055775e7de9Smrg        lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
3056775e7de9Smrg        # Remove leading and trailing path separator characters from
3057775e7de9Smrg        # ARG. msys behavior is inconsistent here, cygpath turns them
3058775e7de9Smrg        # into '.;' and ';.', and winepath ignores them completely.
3059775e7de9Smrg        func_to_host_pathlist_tmp2="$1"
3060775e7de9Smrg        # Once set for this call, this variable should not be
3061775e7de9Smrg        # reassigned. It is used in tha fallback case.
3062775e7de9Smrg        func_to_host_pathlist_tmp1=`echo "$func_to_host_pathlist_tmp2" |\
3063775e7de9Smrg          $SED -e 's|^:*||' -e 's|:*$||'`
3064775e7de9Smrg        case $build in
3065775e7de9Smrg          *mingw* ) # Actually, msys.
3066775e7de9Smrg            # Awkward: cmd appends spaces to result.
3067775e7de9Smrg            lt_sed_strip_trailing_spaces="s/[ ]*\$//"
3068775e7de9Smrg            func_to_host_pathlist_tmp2=`( cmd //c echo "$func_to_host_pathlist_tmp1" |\
3069775e7de9Smrg              $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""`
3070775e7de9Smrg            func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\
3071775e7de9Smrg              $SED -e "$lt_sed_naive_backslashify"`
3072775e7de9Smrg            ;;
3073775e7de9Smrg          *cygwin* )
3074775e7de9Smrg            func_to_host_pathlist_tmp2=`cygpath -w -p "$func_to_host_pathlist_tmp1"`
3075775e7de9Smrg            func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\
3076775e7de9Smrg              $SED -e "$lt_sed_naive_backslashify"`
3077775e7de9Smrg            ;;
3078775e7de9Smrg          * )
3079775e7de9Smrg            # unfortunately, winepath doesn't convert pathlists
3080775e7de9Smrg            func_to_host_pathlist_result=""
3081775e7de9Smrg            func_to_host_pathlist_oldIFS=$IFS
3082775e7de9Smrg            IFS=:
3083775e7de9Smrg            for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do
3084775e7de9Smrg              IFS=$func_to_host_pathlist_oldIFS
3085775e7de9Smrg              if test -n "$func_to_host_pathlist_f" ; then
3086775e7de9Smrg                func_to_host_path "$func_to_host_pathlist_f"
3087775e7de9Smrg                if test -n "$func_to_host_path_result" ; then
3088775e7de9Smrg                  if test -z "$func_to_host_pathlist_result" ; then
3089775e7de9Smrg                    func_to_host_pathlist_result="$func_to_host_path_result"
3090775e7de9Smrg                  else
3091775e7de9Smrg                    func_to_host_pathlist_result="$func_to_host_pathlist_result;$func_to_host_path_result"
3092775e7de9Smrg                  fi
3093775e7de9Smrg                fi
3094775e7de9Smrg              fi
3095775e7de9Smrg              IFS=:
3096775e7de9Smrg            done
3097775e7de9Smrg            IFS=$func_to_host_pathlist_oldIFS
3098775e7de9Smrg            ;;
3099775e7de9Smrg        esac
3100775e7de9Smrg        if test -z "$func_to_host_pathlist_result" ; then
3101775e7de9Smrg          func_error "Could not determine the host path(s) corresponding to"
3102775e7de9Smrg          func_error "  '$1'"
3103775e7de9Smrg          func_error "Continuing, but uninstalled executables may not work."
3104775e7de9Smrg          # Fallback. This may break if $1 contains DOS-style drive
3105775e7de9Smrg          # specifications. The fix is not to complicate the expression
3106775e7de9Smrg          # below, but for the user to provide a working wine installation
3107775e7de9Smrg          # with winepath so that path translation in the cross-to-mingw
3108775e7de9Smrg          # case works properly.
3109775e7de9Smrg          lt_replace_pathsep_nix_to_dos="s|:|;|g"
3110775e7de9Smrg          func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\
3111775e7de9Smrg            $SED -e "$lt_replace_pathsep_nix_to_dos"`
3112775e7de9Smrg        fi
3113775e7de9Smrg        # Now, add the leading and trailing path separators back
3114775e7de9Smrg        case "$1" in
3115775e7de9Smrg          :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result"
3116775e7de9Smrg            ;;
3117775e7de9Smrg        esac
3118775e7de9Smrg        case "$1" in
3119775e7de9Smrg          *: ) func_to_host_pathlist_result="$func_to_host_pathlist_result;"
3120775e7de9Smrg            ;;
3121775e7de9Smrg        esac
3122775e7de9Smrg        ;;
3123775e7de9Smrg    esac
3124775e7de9Smrg  fi
3125775e7de9Smrg}
3126775e7de9Smrg# end: func_to_host_pathlist
31277a84e134Smrg
3128775e7de9Smrg# func_emit_cwrapperexe_src
3129775e7de9Smrg# emit the source code for a wrapper executable on stdout
3130775e7de9Smrg# Must ONLY be called from within func_mode_link because
3131775e7de9Smrg# it depends on a number of variable set therein.
3132775e7de9Smrgfunc_emit_cwrapperexe_src ()
3133775e7de9Smrg{
3134775e7de9Smrg	cat <<EOF
31357a84e134Smrg
3136775e7de9Smrg/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
3137775e7de9Smrg   Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
31387a84e134Smrg
3139775e7de9Smrg   The $output program cannot be directly executed until all the libtool
3140775e7de9Smrg   libraries that it depends on are installed.
31417a84e134Smrg
3142775e7de9Smrg   This wrapper executable should never be moved out of the build directory.
3143775e7de9Smrg   If it is, it will not operate correctly.
31447a84e134Smrg
3145775e7de9Smrg   Currently, it simply execs the wrapper *script* "$SHELL $output",
3146775e7de9Smrg   but could eventually absorb all of the scripts functionality and
3147775e7de9Smrg   exec $objdir/$outputname directly.
3148775e7de9Smrg*/
3149775e7de9SmrgEOF
3150775e7de9Smrg	    cat <<"EOF"
3151775e7de9Smrg#include <stdio.h>
3152775e7de9Smrg#include <stdlib.h>
3153775e7de9Smrg#ifdef _MSC_VER
3154775e7de9Smrg# include <direct.h>
3155775e7de9Smrg# include <process.h>
3156775e7de9Smrg# include <io.h>
3157775e7de9Smrg# define setmode _setmode
3158775e7de9Smrg#else
3159775e7de9Smrg# include <unistd.h>
3160775e7de9Smrg# include <stdint.h>
3161775e7de9Smrg# ifdef __CYGWIN__
3162775e7de9Smrg#  include <io.h>
3163775e7de9Smrg#  define HAVE_SETENV
3164775e7de9Smrg#  ifdef __STRICT_ANSI__
3165775e7de9Smrgchar *realpath (const char *, char *);
3166775e7de9Smrgint putenv (char *);
3167775e7de9Smrgint setenv (const char *, const char *, int);
3168775e7de9Smrg#  endif
3169775e7de9Smrg# endif
3170775e7de9Smrg#endif
3171775e7de9Smrg#include <malloc.h>
3172775e7de9Smrg#include <stdarg.h>
3173775e7de9Smrg#include <assert.h>
3174775e7de9Smrg#include <string.h>
3175775e7de9Smrg#include <ctype.h>
3176775e7de9Smrg#include <errno.h>
3177775e7de9Smrg#include <fcntl.h>
3178775e7de9Smrg#include <sys/stat.h>
31797a84e134Smrg
3180775e7de9Smrg#if defined(PATH_MAX)
3181775e7de9Smrg# define LT_PATHMAX PATH_MAX
3182775e7de9Smrg#elif defined(MAXPATHLEN)
3183775e7de9Smrg# define LT_PATHMAX MAXPATHLEN
3184775e7de9Smrg#else
3185775e7de9Smrg# define LT_PATHMAX 1024
3186775e7de9Smrg#endif
31877a84e134Smrg
3188775e7de9Smrg#ifndef S_IXOTH
3189775e7de9Smrg# define S_IXOTH 0
3190775e7de9Smrg#endif
3191775e7de9Smrg#ifndef S_IXGRP
3192775e7de9Smrg# define S_IXGRP 0
3193775e7de9Smrg#endif
31947a84e134Smrg
3195775e7de9Smrg#ifdef _MSC_VER
3196775e7de9Smrg# define S_IXUSR _S_IEXEC
3197775e7de9Smrg# define stat _stat
3198775e7de9Smrg# ifndef _INTPTR_T_DEFINED
3199775e7de9Smrg#  define intptr_t int
3200775e7de9Smrg# endif
3201775e7de9Smrg#endif
32027a84e134Smrg
3203775e7de9Smrg#ifndef DIR_SEPARATOR
3204775e7de9Smrg# define DIR_SEPARATOR '/'
3205775e7de9Smrg# define PATH_SEPARATOR ':'
3206775e7de9Smrg#endif
32077a84e134Smrg
3208775e7de9Smrg#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
3209775e7de9Smrg  defined (__OS2__)
3210775e7de9Smrg# define HAVE_DOS_BASED_FILE_SYSTEM
3211775e7de9Smrg# define FOPEN_WB "wb"
3212775e7de9Smrg# ifndef DIR_SEPARATOR_2
3213775e7de9Smrg#  define DIR_SEPARATOR_2 '\\'
3214775e7de9Smrg# endif
3215775e7de9Smrg# ifndef PATH_SEPARATOR_2
3216775e7de9Smrg#  define PATH_SEPARATOR_2 ';'
3217775e7de9Smrg# endif
3218775e7de9Smrg#endif
32197a84e134Smrg
3220775e7de9Smrg#ifndef DIR_SEPARATOR_2
3221775e7de9Smrg# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
3222775e7de9Smrg#else /* DIR_SEPARATOR_2 */
3223775e7de9Smrg# define IS_DIR_SEPARATOR(ch) \
3224775e7de9Smrg	(((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
3225775e7de9Smrg#endif /* DIR_SEPARATOR_2 */
32267a84e134Smrg
3227775e7de9Smrg#ifndef PATH_SEPARATOR_2
3228775e7de9Smrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
3229775e7de9Smrg#else /* PATH_SEPARATOR_2 */
3230775e7de9Smrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
3231775e7de9Smrg#endif /* PATH_SEPARATOR_2 */
32327a84e134Smrg
3233775e7de9Smrg#ifdef __CYGWIN__
3234775e7de9Smrg# define FOPEN_WB "wb"
3235775e7de9Smrg#endif
32367a84e134Smrg
3237775e7de9Smrg#ifndef FOPEN_WB
3238775e7de9Smrg# define FOPEN_WB "w"
3239775e7de9Smrg#endif
3240775e7de9Smrg#ifndef _O_BINARY
3241775e7de9Smrg# define _O_BINARY 0
3242775e7de9Smrg#endif
32437a84e134Smrg
3244775e7de9Smrg#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
3245775e7de9Smrg#define XFREE(stale) do { \
3246775e7de9Smrg  if (stale) { free ((void *) stale); stale = 0; } \
3247775e7de9Smrg} while (0)
32487a84e134Smrg
3249775e7de9Smrg#undef LTWRAPPER_DEBUGPRINTF
3250775e7de9Smrg#if defined DEBUGWRAPPER
3251775e7de9Smrg# define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args
3252775e7de9Smrgstatic void
3253775e7de9Smrgltwrapper_debugprintf (const char *fmt, ...)
3254775e7de9Smrg{
3255775e7de9Smrg    va_list args;
3256775e7de9Smrg    va_start (args, fmt);
3257775e7de9Smrg    (void) vfprintf (stderr, fmt, args);
3258775e7de9Smrg    va_end (args);
3259775e7de9Smrg}
3260775e7de9Smrg#else
3261775e7de9Smrg# define LTWRAPPER_DEBUGPRINTF(args)
3262775e7de9Smrg#endif
32637a84e134Smrg
3264775e7de9Smrgconst char *program_name = NULL;
32657a84e134Smrg
3266775e7de9Smrgvoid *xmalloc (size_t num);
3267775e7de9Smrgchar *xstrdup (const char *string);
3268775e7de9Smrgconst char *base_name (const char *name);
3269775e7de9Smrgchar *find_executable (const char *wrapper);
3270775e7de9Smrgchar *chase_symlinks (const char *pathspec);
3271775e7de9Smrgint make_executable (const char *path);
3272775e7de9Smrgint check_executable (const char *path);
3273775e7de9Smrgchar *strendzap (char *str, const char *pat);
3274775e7de9Smrgvoid lt_fatal (const char *message, ...);
3275775e7de9Smrgvoid lt_setenv (const char *name, const char *value);
3276775e7de9Smrgchar *lt_extend_str (const char *orig_value, const char *add, int to_end);
3277775e7de9Smrgvoid lt_opt_process_env_set (const char *arg);
3278775e7de9Smrgvoid lt_opt_process_env_prepend (const char *arg);
3279775e7de9Smrgvoid lt_opt_process_env_append (const char *arg);
3280775e7de9Smrgint lt_split_name_value (const char *arg, char** name, char** value);
3281775e7de9Smrgvoid lt_update_exe_path (const char *name, const char *value);
3282775e7de9Smrgvoid lt_update_lib_path (const char *name, const char *value);
3283775e7de9Smrg
3284775e7de9Smrgstatic const char *script_text_part1 =
3285775e7de9SmrgEOF
32867a84e134Smrg
3287775e7de9Smrg	    func_emit_wrapper_part1 yes |
3288775e7de9Smrg	        $SED -e 's/\([\\"]\)/\\\1/g' \
3289775e7de9Smrg	             -e 's/^/  "/' -e 's/$/\\n"/'
3290775e7de9Smrg	    echo ";"
3291775e7de9Smrg	    cat <<EOF
32927a84e134Smrg
3293775e7de9Smrgstatic const char *script_text_part2 =
3294775e7de9SmrgEOF
3295775e7de9Smrg	    func_emit_wrapper_part2 yes |
3296775e7de9Smrg	        $SED -e 's/\([\\"]\)/\\\1/g' \
3297775e7de9Smrg	             -e 's/^/  "/' -e 's/$/\\n"/'
3298775e7de9Smrg	    echo ";"
3299775e7de9Smrg
3300775e7de9Smrg	    cat <<EOF
3301775e7de9Smrgconst char * MAGIC_EXE = "$magic_exe";
3302775e7de9Smrgconst char * LIB_PATH_VARNAME = "$shlibpath_var";
3303775e7de9SmrgEOF
33047a84e134Smrg
3305775e7de9Smrg	    if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
3306775e7de9Smrg              func_to_host_pathlist "$temp_rpath"
3307775e7de9Smrg	      cat <<EOF
3308775e7de9Smrgconst char * LIB_PATH_VALUE   = "$func_to_host_pathlist_result";
3309775e7de9SmrgEOF
3310775e7de9Smrg	    else
3311775e7de9Smrg	      cat <<"EOF"
3312775e7de9Smrgconst char * LIB_PATH_VALUE   = "";
3313775e7de9SmrgEOF
33147a84e134Smrg	    fi
33157a84e134Smrg
3316775e7de9Smrg	    if test -n "$dllsearchpath"; then
3317775e7de9Smrg              func_to_host_pathlist "$dllsearchpath:"
3318775e7de9Smrg	      cat <<EOF
3319775e7de9Smrgconst char * EXE_PATH_VARNAME = "PATH";
3320775e7de9Smrgconst char * EXE_PATH_VALUE   = "$func_to_host_pathlist_result";
33217a84e134SmrgEOF
33227a84e134Smrg	    else
3323775e7de9Smrg	      cat <<"EOF"
3324775e7de9Smrgconst char * EXE_PATH_VARNAME = "";
3325775e7de9Smrgconst char * EXE_PATH_VALUE   = "";
3326775e7de9SmrgEOF
33277a84e134Smrg	    fi
3328775e7de9Smrg
3329775e7de9Smrg	    if test "$fast_install" = yes; then
3330775e7de9Smrg	      cat <<EOF
3331775e7de9Smrgconst char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
3332775e7de9SmrgEOF
33337a84e134Smrg	    else
3334775e7de9Smrg	      cat <<EOF
3335775e7de9Smrgconst char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
3336775e7de9SmrgEOF
33377a84e134Smrg	    fi
33387a84e134Smrg
33397a84e134Smrg
3340775e7de9Smrg	    cat <<"EOF"
33417a84e134Smrg
3342775e7de9Smrg#define LTWRAPPER_OPTION_PREFIX         "--lt-"
3343775e7de9Smrg#define LTWRAPPER_OPTION_PREFIX_LENGTH  5
33447a84e134Smrg
3345775e7de9Smrgstatic const size_t opt_prefix_len         = LTWRAPPER_OPTION_PREFIX_LENGTH;
3346775e7de9Smrgstatic const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
33477a84e134Smrg
3348775e7de9Smrgstatic const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX "dump-script";
33497a84e134Smrg
3350775e7de9Smrgstatic const size_t env_set_opt_len     = LTWRAPPER_OPTION_PREFIX_LENGTH + 7;
3351775e7de9Smrgstatic const char *env_set_opt          = LTWRAPPER_OPTION_PREFIX "env-set";
3352775e7de9Smrg  /* argument is putenv-style "foo=bar", value of foo is set to bar */
33537a84e134Smrg
3354775e7de9Smrgstatic const size_t env_prepend_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 11;
3355775e7de9Smrgstatic const char *env_prepend_opt      = LTWRAPPER_OPTION_PREFIX "env-prepend";
3356775e7de9Smrg  /* argument is putenv-style "foo=bar", new value of foo is bar${foo} */
33577a84e134Smrg
3358775e7de9Smrgstatic const size_t env_append_opt_len  = LTWRAPPER_OPTION_PREFIX_LENGTH + 10;
3359775e7de9Smrgstatic const char *env_append_opt       = LTWRAPPER_OPTION_PREFIX "env-append";
3360775e7de9Smrg  /* argument is putenv-style "foo=bar", new value of foo is ${foo}bar */
33617a84e134Smrg
3362775e7de9Smrgint
3363775e7de9Smrgmain (int argc, char *argv[])
3364775e7de9Smrg{
3365775e7de9Smrg  char **newargz;
3366775e7de9Smrg  int  newargc;
3367775e7de9Smrg  char *tmp_pathspec;
3368775e7de9Smrg  char *actual_cwrapper_path;
3369775e7de9Smrg  char *actual_cwrapper_name;
3370775e7de9Smrg  char *target_name;
3371775e7de9Smrg  char *lt_argv_zero;
3372775e7de9Smrg  intptr_t rval = 127;
33737a84e134Smrg
3374775e7de9Smrg  int i;
33757a84e134Smrg
3376775e7de9Smrg  program_name = (char *) xstrdup (base_name (argv[0]));
3377775e7de9Smrg  LTWRAPPER_DEBUGPRINTF (("(main) argv[0]      : %s\n", argv[0]));
3378775e7de9Smrg  LTWRAPPER_DEBUGPRINTF (("(main) program_name : %s\n", program_name));
33797a84e134Smrg
3380775e7de9Smrg  /* very simple arg parsing; don't want to rely on getopt */
3381775e7de9Smrg  for (i = 1; i < argc; i++)
3382775e7de9Smrg    {
3383775e7de9Smrg      if (strcmp (argv[i], dumpscript_opt) == 0)
3384775e7de9Smrg	{
3385775e7de9SmrgEOF
3386775e7de9Smrg	    case "$host" in
3387775e7de9Smrg	      *mingw* | *cygwin* )
3388775e7de9Smrg		# make stdout use "unix" line endings
3389775e7de9Smrg		echo "          setmode(1,_O_BINARY);"
3390775e7de9Smrg		;;
3391775e7de9Smrg	      esac
33927a84e134Smrg
3393775e7de9Smrg	    cat <<"EOF"
3394775e7de9Smrg	  printf ("%s", script_text_part1);
3395775e7de9Smrg	  printf ("%s", script_text_part2);
3396775e7de9Smrg	  return 0;
3397775e7de9Smrg	}
3398775e7de9Smrg    }
33997a84e134Smrg
3400775e7de9Smrg  newargz = XMALLOC (char *, argc + 1);
3401775e7de9Smrg  tmp_pathspec = find_executable (argv[0]);
3402775e7de9Smrg  if (tmp_pathspec == NULL)
3403775e7de9Smrg    lt_fatal ("Couldn't find %s", argv[0]);
3404775e7de9Smrg  LTWRAPPER_DEBUGPRINTF (("(main) found exe (before symlink chase) at : %s\n",
3405775e7de9Smrg			  tmp_pathspec));
3406775e7de9Smrg
3407775e7de9Smrg  actual_cwrapper_path = chase_symlinks (tmp_pathspec);
3408775e7de9Smrg  LTWRAPPER_DEBUGPRINTF (("(main) found exe (after symlink chase) at : %s\n",
3409775e7de9Smrg			  actual_cwrapper_path));
3410775e7de9Smrg  XFREE (tmp_pathspec);
3411775e7de9Smrg
3412775e7de9Smrg  actual_cwrapper_name = xstrdup( base_name (actual_cwrapper_path));
3413775e7de9Smrg  strendzap (actual_cwrapper_path, actual_cwrapper_name);
3414775e7de9Smrg
3415775e7de9Smrg  /* wrapper name transforms */
3416775e7de9Smrg  strendzap (actual_cwrapper_name, ".exe");
3417775e7de9Smrg  tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
3418775e7de9Smrg  XFREE (actual_cwrapper_name);
3419775e7de9Smrg  actual_cwrapper_name = tmp_pathspec;
3420775e7de9Smrg  tmp_pathspec = 0;
3421775e7de9Smrg
3422775e7de9Smrg  /* target_name transforms -- use actual target program name; might have lt- prefix */
3423775e7de9Smrg  target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
3424775e7de9Smrg  strendzap (target_name, ".exe");
3425775e7de9Smrg  tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
3426775e7de9Smrg  XFREE (target_name);
3427775e7de9Smrg  target_name = tmp_pathspec;
3428775e7de9Smrg  tmp_pathspec = 0;
3429775e7de9Smrg
3430775e7de9Smrg  LTWRAPPER_DEBUGPRINTF (("(main) libtool target name: %s\n",
3431775e7de9Smrg			  target_name));
3432775e7de9SmrgEOF
34337a84e134Smrg
3434775e7de9Smrg	    cat <<EOF
3435775e7de9Smrg  newargz[0] =
3436775e7de9Smrg    XMALLOC (char, (strlen (actual_cwrapper_path) +
3437775e7de9Smrg		    strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
3438775e7de9Smrg  strcpy (newargz[0], actual_cwrapper_path);
3439775e7de9Smrg  strcat (newargz[0], "$objdir");
3440775e7de9Smrg  strcat (newargz[0], "/");
3441775e7de9SmrgEOF
34427a84e134Smrg
3443775e7de9Smrg	    cat <<"EOF"
3444775e7de9Smrg  /* stop here, and copy so we don't have to do this twice */
3445775e7de9Smrg  tmp_pathspec = xstrdup (newargz[0]);
34467a84e134Smrg
3447775e7de9Smrg  /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
3448775e7de9Smrg  strcat (newargz[0], actual_cwrapper_name);
34497a84e134Smrg
3450775e7de9Smrg  /* DO want the lt- prefix here if it exists, so use target_name */
3451775e7de9Smrg  lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
3452775e7de9Smrg  XFREE (tmp_pathspec);
3453775e7de9Smrg  tmp_pathspec = NULL;
3454775e7de9SmrgEOF
34557a84e134Smrg
3456775e7de9Smrg	    case $host_os in
3457775e7de9Smrg	      mingw*)
3458775e7de9Smrg	    cat <<"EOF"
3459775e7de9Smrg  {
3460775e7de9Smrg    char* p;
3461775e7de9Smrg    while ((p = strchr (newargz[0], '\\')) != NULL)
3462775e7de9Smrg      {
3463775e7de9Smrg	*p = '/';
3464775e7de9Smrg      }
3465775e7de9Smrg    while ((p = strchr (lt_argv_zero, '\\')) != NULL)
3466775e7de9Smrg      {
3467775e7de9Smrg	*p = '/';
3468775e7de9Smrg      }
3469775e7de9Smrg  }
3470775e7de9SmrgEOF
3471775e7de9Smrg	    ;;
3472775e7de9Smrg	    esac
34737a84e134Smrg
3474775e7de9Smrg	    cat <<"EOF"
3475775e7de9Smrg  XFREE (target_name);
3476775e7de9Smrg  XFREE (actual_cwrapper_path);
3477775e7de9Smrg  XFREE (actual_cwrapper_name);
34787a84e134Smrg
3479775e7de9Smrg  lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
3480775e7de9Smrg  lt_setenv ("DUALCASE", "1");  /* for MSK sh */
3481775e7de9Smrg  lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
3482775e7de9Smrg  lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
34837a84e134Smrg
3484775e7de9Smrg  newargc=0;
3485775e7de9Smrg  for (i = 1; i < argc; i++)
3486775e7de9Smrg    {
3487775e7de9Smrg      if (strncmp (argv[i], env_set_opt, env_set_opt_len) == 0)
3488775e7de9Smrg        {
3489775e7de9Smrg          if (argv[i][env_set_opt_len] == '=')
3490775e7de9Smrg            {
3491775e7de9Smrg              const char *p = argv[i] + env_set_opt_len + 1;
3492775e7de9Smrg              lt_opt_process_env_set (p);
3493775e7de9Smrg            }
3494775e7de9Smrg          else if (argv[i][env_set_opt_len] == '\0' && i + 1 < argc)
3495775e7de9Smrg            {
3496775e7de9Smrg              lt_opt_process_env_set (argv[++i]); /* don't copy */
3497775e7de9Smrg            }
3498775e7de9Smrg          else
3499775e7de9Smrg            lt_fatal ("%s missing required argument", env_set_opt);
3500775e7de9Smrg          continue;
3501775e7de9Smrg        }
3502775e7de9Smrg      if (strncmp (argv[i], env_prepend_opt, env_prepend_opt_len) == 0)
3503775e7de9Smrg        {
3504775e7de9Smrg          if (argv[i][env_prepend_opt_len] == '=')
3505775e7de9Smrg            {
3506775e7de9Smrg              const char *p = argv[i] + env_prepend_opt_len + 1;
3507775e7de9Smrg              lt_opt_process_env_prepend (p);
3508775e7de9Smrg            }
3509775e7de9Smrg          else if (argv[i][env_prepend_opt_len] == '\0' && i + 1 < argc)
3510775e7de9Smrg            {
3511775e7de9Smrg              lt_opt_process_env_prepend (argv[++i]); /* don't copy */
3512775e7de9Smrg            }
3513775e7de9Smrg          else
3514775e7de9Smrg            lt_fatal ("%s missing required argument", env_prepend_opt);
3515775e7de9Smrg          continue;
3516775e7de9Smrg        }
3517775e7de9Smrg      if (strncmp (argv[i], env_append_opt, env_append_opt_len) == 0)
3518775e7de9Smrg        {
3519775e7de9Smrg          if (argv[i][env_append_opt_len] == '=')
3520775e7de9Smrg            {
3521775e7de9Smrg              const char *p = argv[i] + env_append_opt_len + 1;
3522775e7de9Smrg              lt_opt_process_env_append (p);
3523775e7de9Smrg            }
3524775e7de9Smrg          else if (argv[i][env_append_opt_len] == '\0' && i + 1 < argc)
3525775e7de9Smrg            {
3526775e7de9Smrg              lt_opt_process_env_append (argv[++i]); /* don't copy */
3527775e7de9Smrg            }
3528775e7de9Smrg          else
3529775e7de9Smrg            lt_fatal ("%s missing required argument", env_append_opt);
3530775e7de9Smrg          continue;
3531775e7de9Smrg        }
3532775e7de9Smrg      if (strncmp (argv[i], ltwrapper_option_prefix, opt_prefix_len) == 0)
3533775e7de9Smrg        {
3534775e7de9Smrg          /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
3535775e7de9Smrg             namespace, but it is not one of the ones we know about and
3536775e7de9Smrg             have already dealt with, above (inluding dump-script), then
3537775e7de9Smrg             report an error. Otherwise, targets might begin to believe
3538775e7de9Smrg             they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
3539775e7de9Smrg             namespace. The first time any user complains about this, we'll
3540775e7de9Smrg             need to make LTWRAPPER_OPTION_PREFIX a configure-time option
3541775e7de9Smrg             or a configure.ac-settable value.
3542775e7de9Smrg           */
3543775e7de9Smrg          lt_fatal ("Unrecognized option in %s namespace: '%s'",
3544775e7de9Smrg                    ltwrapper_option_prefix, argv[i]);
3545775e7de9Smrg        }
3546775e7de9Smrg      /* otherwise ... */
3547775e7de9Smrg      newargz[++newargc] = xstrdup (argv[i]);
3548775e7de9Smrg    }
3549775e7de9Smrg  newargz[++newargc] = NULL;
35507a84e134Smrg
3551775e7de9Smrg  LTWRAPPER_DEBUGPRINTF     (("(main) lt_argv_zero : %s\n", (lt_argv_zero ? lt_argv_zero : "<NULL>")));
3552775e7de9Smrg  for (i = 0; i < newargc; i++)
3553775e7de9Smrg    {
3554775e7de9Smrg      LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d]   : %s\n", i, (newargz[i] ? newargz[i] : "<NULL>")));
3555775e7de9Smrg    }
35567a84e134Smrg
3557775e7de9SmrgEOF
35587a84e134Smrg
3559775e7de9Smrg	    case $host_os in
3560775e7de9Smrg	      mingw*)
3561775e7de9Smrg		cat <<"EOF"
3562775e7de9Smrg  /* execv doesn't actually work on mingw as expected on unix */
3563775e7de9Smrg  rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
3564775e7de9Smrg  if (rval == -1)
3565775e7de9Smrg    {
3566775e7de9Smrg      /* failed to start process */
3567775e7de9Smrg      LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, errno));
3568775e7de9Smrg      return 127;
3569775e7de9Smrg    }
3570775e7de9Smrg  return rval;
3571775e7de9SmrgEOF
3572775e7de9Smrg		;;
3573775e7de9Smrg	      *)
3574775e7de9Smrg		cat <<"EOF"
3575775e7de9Smrg  execv (lt_argv_zero, newargz);
3576775e7de9Smrg  return rval; /* =127, but avoids unused variable warning */
3577775e7de9SmrgEOF
3578775e7de9Smrg		;;
3579775e7de9Smrg	    esac
35807a84e134Smrg
3581775e7de9Smrg	    cat <<"EOF"
3582775e7de9Smrg}
35837a84e134Smrg
3584775e7de9Smrgvoid *
3585775e7de9Smrgxmalloc (size_t num)
3586775e7de9Smrg{
3587775e7de9Smrg  void *p = (void *) malloc (num);
3588775e7de9Smrg  if (!p)
3589775e7de9Smrg    lt_fatal ("Memory exhausted");
35907a84e134Smrg
3591775e7de9Smrg  return p;
3592775e7de9Smrg}
35937a84e134Smrg
3594775e7de9Smrgchar *
3595775e7de9Smrgxstrdup (const char *string)
3596775e7de9Smrg{
3597775e7de9Smrg  return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
3598775e7de9Smrg			  string) : NULL;
3599775e7de9Smrg}
36007a84e134Smrg
3601775e7de9Smrgconst char *
3602775e7de9Smrgbase_name (const char *name)
3603775e7de9Smrg{
3604775e7de9Smrg  const char *base;
36057a84e134Smrg
3606775e7de9Smrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
3607775e7de9Smrg  /* Skip over the disk name in MSDOS pathnames. */
3608775e7de9Smrg  if (isalpha ((unsigned char) name[0]) && name[1] == ':')
3609775e7de9Smrg    name += 2;
3610775e7de9Smrg#endif
36117a84e134Smrg
3612775e7de9Smrg  for (base = name; *name; name++)
3613775e7de9Smrg    if (IS_DIR_SEPARATOR (*name))
3614775e7de9Smrg      base = name + 1;
3615775e7de9Smrg  return base;
3616775e7de9Smrg}
36177a84e134Smrg
3618775e7de9Smrgint
3619775e7de9Smrgcheck_executable (const char *path)
3620775e7de9Smrg{
3621775e7de9Smrg  struct stat st;
36227a84e134Smrg
3623775e7de9Smrg  LTWRAPPER_DEBUGPRINTF (("(check_executable)  : %s\n",
3624775e7de9Smrg			  path ? (*path ? path : "EMPTY!") : "NULL!"));
3625775e7de9Smrg  if ((!path) || (!*path))
3626775e7de9Smrg    return 0;
36277a84e134Smrg
3628775e7de9Smrg  if ((stat (path, &st) >= 0)
3629775e7de9Smrg      && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
3630775e7de9Smrg    return 1;
3631775e7de9Smrg  else
3632775e7de9Smrg    return 0;
3633775e7de9Smrg}
36347a84e134Smrg
3635775e7de9Smrgint
3636775e7de9Smrgmake_executable (const char *path)
3637775e7de9Smrg{
3638775e7de9Smrg  int rval = 0;
3639775e7de9Smrg  struct stat st;
36407a84e134Smrg
3641775e7de9Smrg  LTWRAPPER_DEBUGPRINTF (("(make_executable)   : %s\n",
3642775e7de9Smrg			  path ? (*path ? path : "EMPTY!") : "NULL!"));
3643775e7de9Smrg  if ((!path) || (!*path))
3644775e7de9Smrg    return 0;
36457a84e134Smrg
3646775e7de9Smrg  if (stat (path, &st) >= 0)
3647775e7de9Smrg    {
3648775e7de9Smrg      rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
3649775e7de9Smrg    }
3650775e7de9Smrg  return rval;
3651775e7de9Smrg}
36527a84e134Smrg
3653775e7de9Smrg/* Searches for the full path of the wrapper.  Returns
3654775e7de9Smrg   newly allocated full path name if found, NULL otherwise
3655775e7de9Smrg   Does not chase symlinks, even on platforms that support them.
3656775e7de9Smrg*/
3657775e7de9Smrgchar *
3658775e7de9Smrgfind_executable (const char *wrapper)
3659775e7de9Smrg{
3660775e7de9Smrg  int has_slash = 0;
3661775e7de9Smrg  const char *p;
3662775e7de9Smrg  const char *p_next;
3663775e7de9Smrg  /* static buffer for getcwd */
3664775e7de9Smrg  char tmp[LT_PATHMAX + 1];
3665775e7de9Smrg  int tmp_len;
3666775e7de9Smrg  char *concat_name;
36677a84e134Smrg
3668775e7de9Smrg  LTWRAPPER_DEBUGPRINTF (("(find_executable)   : %s\n",
3669775e7de9Smrg			  wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!"));
36707a84e134Smrg
3671775e7de9Smrg  if ((wrapper == NULL) || (*wrapper == '\0'))
3672775e7de9Smrg    return NULL;
36737a84e134Smrg
3674775e7de9Smrg  /* Absolute path? */
3675775e7de9Smrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
3676775e7de9Smrg  if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
3677775e7de9Smrg    {
3678775e7de9Smrg      concat_name = xstrdup (wrapper);
3679775e7de9Smrg      if (check_executable (concat_name))
3680775e7de9Smrg	return concat_name;
3681775e7de9Smrg      XFREE (concat_name);
3682775e7de9Smrg    }
3683775e7de9Smrg  else
3684775e7de9Smrg    {
3685775e7de9Smrg#endif
3686775e7de9Smrg      if (IS_DIR_SEPARATOR (wrapper[0]))
3687775e7de9Smrg	{
3688775e7de9Smrg	  concat_name = xstrdup (wrapper);
3689775e7de9Smrg	  if (check_executable (concat_name))
3690775e7de9Smrg	    return concat_name;
3691775e7de9Smrg	  XFREE (concat_name);
3692775e7de9Smrg	}
3693775e7de9Smrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
3694775e7de9Smrg    }
3695775e7de9Smrg#endif
36967a84e134Smrg
3697775e7de9Smrg  for (p = wrapper; *p; p++)
3698775e7de9Smrg    if (*p == '/')
3699775e7de9Smrg      {
3700775e7de9Smrg	has_slash = 1;
3701775e7de9Smrg	break;
3702775e7de9Smrg      }
3703775e7de9Smrg  if (!has_slash)
3704775e7de9Smrg    {
3705775e7de9Smrg      /* no slashes; search PATH */
3706775e7de9Smrg      const char *path = getenv ("PATH");
3707775e7de9Smrg      if (path != NULL)
3708775e7de9Smrg	{
3709775e7de9Smrg	  for (p = path; *p; p = p_next)
3710775e7de9Smrg	    {
3711775e7de9Smrg	      const char *q;
3712775e7de9Smrg	      size_t p_len;
3713775e7de9Smrg	      for (q = p; *q; q++)
3714775e7de9Smrg		if (IS_PATH_SEPARATOR (*q))
3715775e7de9Smrg		  break;
3716775e7de9Smrg	      p_len = q - p;
3717775e7de9Smrg	      p_next = (*q == '\0' ? q : q + 1);
3718775e7de9Smrg	      if (p_len == 0)
3719775e7de9Smrg		{
3720775e7de9Smrg		  /* empty path: current directory */
3721775e7de9Smrg		  if (getcwd (tmp, LT_PATHMAX) == NULL)
3722775e7de9Smrg		    lt_fatal ("getcwd failed");
3723775e7de9Smrg		  tmp_len = strlen (tmp);
3724775e7de9Smrg		  concat_name =
3725775e7de9Smrg		    XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
3726775e7de9Smrg		  memcpy (concat_name, tmp, tmp_len);
3727775e7de9Smrg		  concat_name[tmp_len] = '/';
3728775e7de9Smrg		  strcpy (concat_name + tmp_len + 1, wrapper);
3729775e7de9Smrg		}
3730775e7de9Smrg	      else
3731775e7de9Smrg		{
3732775e7de9Smrg		  concat_name =
3733775e7de9Smrg		    XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
3734775e7de9Smrg		  memcpy (concat_name, p, p_len);
3735775e7de9Smrg		  concat_name[p_len] = '/';
3736775e7de9Smrg		  strcpy (concat_name + p_len + 1, wrapper);
3737775e7de9Smrg		}
3738775e7de9Smrg	      if (check_executable (concat_name))
3739775e7de9Smrg		return concat_name;
3740775e7de9Smrg	      XFREE (concat_name);
3741775e7de9Smrg	    }
3742775e7de9Smrg	}
3743775e7de9Smrg      /* not found in PATH; assume curdir */
3744775e7de9Smrg    }
3745775e7de9Smrg  /* Relative path | not found in path: prepend cwd */
3746775e7de9Smrg  if (getcwd (tmp, LT_PATHMAX) == NULL)
3747775e7de9Smrg    lt_fatal ("getcwd failed");
3748775e7de9Smrg  tmp_len = strlen (tmp);
3749775e7de9Smrg  concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
3750775e7de9Smrg  memcpy (concat_name, tmp, tmp_len);
3751775e7de9Smrg  concat_name[tmp_len] = '/';
3752775e7de9Smrg  strcpy (concat_name + tmp_len + 1, wrapper);
37537a84e134Smrg
3754775e7de9Smrg  if (check_executable (concat_name))
3755775e7de9Smrg    return concat_name;
3756775e7de9Smrg  XFREE (concat_name);
3757775e7de9Smrg  return NULL;
3758775e7de9Smrg}
37597a84e134Smrg
3760775e7de9Smrgchar *
3761775e7de9Smrgchase_symlinks (const char *pathspec)
3762775e7de9Smrg{
3763775e7de9Smrg#ifndef S_ISLNK
3764775e7de9Smrg  return xstrdup (pathspec);
3765775e7de9Smrg#else
3766775e7de9Smrg  char buf[LT_PATHMAX];
3767775e7de9Smrg  struct stat s;
3768775e7de9Smrg  char *tmp_pathspec = xstrdup (pathspec);
3769775e7de9Smrg  char *p;
3770775e7de9Smrg  int has_symlinks = 0;
3771775e7de9Smrg  while (strlen (tmp_pathspec) && !has_symlinks)
3772775e7de9Smrg    {
3773775e7de9Smrg      LTWRAPPER_DEBUGPRINTF (("checking path component for symlinks: %s\n",
3774775e7de9Smrg			      tmp_pathspec));
3775775e7de9Smrg      if (lstat (tmp_pathspec, &s) == 0)
3776775e7de9Smrg	{
3777775e7de9Smrg	  if (S_ISLNK (s.st_mode) != 0)
3778775e7de9Smrg	    {
3779775e7de9Smrg	      has_symlinks = 1;
3780775e7de9Smrg	      break;
3781775e7de9Smrg	    }
37827a84e134Smrg
3783775e7de9Smrg	  /* search backwards for last DIR_SEPARATOR */
3784775e7de9Smrg	  p = tmp_pathspec + strlen (tmp_pathspec) - 1;
3785775e7de9Smrg	  while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
3786775e7de9Smrg	    p--;
3787775e7de9Smrg	  if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
3788775e7de9Smrg	    {
3789775e7de9Smrg	      /* no more DIR_SEPARATORS left */
3790775e7de9Smrg	      break;
3791775e7de9Smrg	    }
3792775e7de9Smrg	  *p = '\0';
3793775e7de9Smrg	}
3794775e7de9Smrg      else
3795775e7de9Smrg	{
3796775e7de9Smrg	  char *errstr = strerror (errno);
3797775e7de9Smrg	  lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr);
3798775e7de9Smrg	}
3799775e7de9Smrg    }
3800775e7de9Smrg  XFREE (tmp_pathspec);
38017a84e134Smrg
3802775e7de9Smrg  if (!has_symlinks)
3803775e7de9Smrg    {
3804775e7de9Smrg      return xstrdup (pathspec);
3805775e7de9Smrg    }
38067a84e134Smrg
3807775e7de9Smrg  tmp_pathspec = realpath (pathspec, buf);
3808775e7de9Smrg  if (tmp_pathspec == 0)
3809775e7de9Smrg    {
3810775e7de9Smrg      lt_fatal ("Could not follow symlinks for %s", pathspec);
3811775e7de9Smrg    }
3812775e7de9Smrg  return xstrdup (tmp_pathspec);
3813775e7de9Smrg#endif
3814775e7de9Smrg}
38157a84e134Smrg
3816775e7de9Smrgchar *
3817775e7de9Smrgstrendzap (char *str, const char *pat)
3818775e7de9Smrg{
3819775e7de9Smrg  size_t len, patlen;
38207a84e134Smrg
3821775e7de9Smrg  assert (str != NULL);
3822775e7de9Smrg  assert (pat != NULL);
38237a84e134Smrg
3824775e7de9Smrg  len = strlen (str);
3825775e7de9Smrg  patlen = strlen (pat);
38267a84e134Smrg
3827775e7de9Smrg  if (patlen <= len)
3828775e7de9Smrg    {
3829775e7de9Smrg      str += len - patlen;
3830775e7de9Smrg      if (strcmp (str, pat) == 0)
3831775e7de9Smrg	*str = '\0';
3832775e7de9Smrg    }
3833775e7de9Smrg  return str;
3834775e7de9Smrg}
38357a84e134Smrg
3836775e7de9Smrgstatic void
3837775e7de9Smrglt_error_core (int exit_status, const char *mode,
3838775e7de9Smrg	       const char *message, va_list ap)
3839775e7de9Smrg{
3840775e7de9Smrg  fprintf (stderr, "%s: %s: ", program_name, mode);
3841775e7de9Smrg  vfprintf (stderr, message, ap);
3842775e7de9Smrg  fprintf (stderr, ".\n");
38437a84e134Smrg
3844775e7de9Smrg  if (exit_status >= 0)
3845775e7de9Smrg    exit (exit_status);
3846775e7de9Smrg}
38477a84e134Smrg
3848775e7de9Smrgvoid
3849775e7de9Smrglt_fatal (const char *message, ...)
3850775e7de9Smrg{
3851775e7de9Smrg  va_list ap;
3852775e7de9Smrg  va_start (ap, message);
3853775e7de9Smrg  lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
3854775e7de9Smrg  va_end (ap);
3855775e7de9Smrg}
38567a84e134Smrg
3857775e7de9Smrgvoid
3858775e7de9Smrglt_setenv (const char *name, const char *value)
3859775e7de9Smrg{
3860775e7de9Smrg  LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n",
3861775e7de9Smrg                          (name ? name : "<NULL>"),
3862775e7de9Smrg                          (value ? value : "<NULL>")));
3863775e7de9Smrg  {
3864775e7de9Smrg#ifdef HAVE_SETENV
3865775e7de9Smrg    /* always make a copy, for consistency with !HAVE_SETENV */
3866775e7de9Smrg    char *str = xstrdup (value);
3867775e7de9Smrg    setenv (name, str, 1);
3868775e7de9Smrg#else
3869775e7de9Smrg    int len = strlen (name) + 1 + strlen (value) + 1;
3870775e7de9Smrg    char *str = XMALLOC (char, len);
3871775e7de9Smrg    sprintf (str, "%s=%s", name, value);
3872775e7de9Smrg    if (putenv (str) != EXIT_SUCCESS)
3873775e7de9Smrg      {
3874775e7de9Smrg        XFREE (str);
3875775e7de9Smrg      }
3876775e7de9Smrg#endif
3877775e7de9Smrg  }
3878775e7de9Smrg}
38797a84e134Smrg
3880775e7de9Smrgchar *
3881775e7de9Smrglt_extend_str (const char *orig_value, const char *add, int to_end)
3882775e7de9Smrg{
3883775e7de9Smrg  char *new_value;
3884775e7de9Smrg  if (orig_value && *orig_value)
3885775e7de9Smrg    {
3886775e7de9Smrg      int orig_value_len = strlen (orig_value);
3887775e7de9Smrg      int add_len = strlen (add);
3888775e7de9Smrg      new_value = XMALLOC (char, add_len + orig_value_len + 1);
3889775e7de9Smrg      if (to_end)
3890775e7de9Smrg        {
3891775e7de9Smrg          strcpy (new_value, orig_value);
3892775e7de9Smrg          strcpy (new_value + orig_value_len, add);
3893775e7de9Smrg        }
3894775e7de9Smrg      else
3895775e7de9Smrg        {
3896775e7de9Smrg          strcpy (new_value, add);
3897775e7de9Smrg          strcpy (new_value + add_len, orig_value);
3898775e7de9Smrg        }
3899775e7de9Smrg    }
3900775e7de9Smrg  else
3901775e7de9Smrg    {
3902775e7de9Smrg      new_value = xstrdup (add);
3903775e7de9Smrg    }
3904775e7de9Smrg  return new_value;
3905775e7de9Smrg}
39067a84e134Smrg
3907775e7de9Smrgint
3908775e7de9Smrglt_split_name_value (const char *arg, char** name, char** value)
3909775e7de9Smrg{
3910775e7de9Smrg  const char *p;
3911775e7de9Smrg  int len;
3912775e7de9Smrg  if (!arg || !*arg)
3913775e7de9Smrg    return 1;
39147a84e134Smrg
3915775e7de9Smrg  p = strchr (arg, (int)'=');
39167a84e134Smrg
3917775e7de9Smrg  if (!p)
3918775e7de9Smrg    return 1;
39197a84e134Smrg
3920775e7de9Smrg  *value = xstrdup (++p);
39217a84e134Smrg
3922775e7de9Smrg  len = strlen (arg) - strlen (*value);
3923775e7de9Smrg  *name = XMALLOC (char, len);
3924775e7de9Smrg  strncpy (*name, arg, len-1);
3925775e7de9Smrg  (*name)[len - 1] = '\0';
39267a84e134Smrg
3927775e7de9Smrg  return 0;
3928775e7de9Smrg}
39297a84e134Smrg
3930775e7de9Smrgvoid
3931775e7de9Smrglt_opt_process_env_set (const char *arg)
3932775e7de9Smrg{
3933775e7de9Smrg  char *name = NULL;
3934775e7de9Smrg  char *value = NULL;
39357a84e134Smrg
3936775e7de9Smrg  if (lt_split_name_value (arg, &name, &value) != 0)
3937775e7de9Smrg    {
3938775e7de9Smrg      XFREE (name);
3939775e7de9Smrg      XFREE (value);
3940775e7de9Smrg      lt_fatal ("bad argument for %s: '%s'", env_set_opt, arg);
3941775e7de9Smrg    }
39427a84e134Smrg
3943775e7de9Smrg  lt_setenv (name, value);
3944775e7de9Smrg  XFREE (name);
3945775e7de9Smrg  XFREE (value);
3946775e7de9Smrg}
39477a84e134Smrg
3948775e7de9Smrgvoid
3949775e7de9Smrglt_opt_process_env_prepend (const char *arg)
3950775e7de9Smrg{
3951775e7de9Smrg  char *name = NULL;
3952775e7de9Smrg  char *value = NULL;
3953775e7de9Smrg  char *new_value = NULL;
39547a84e134Smrg
3955775e7de9Smrg  if (lt_split_name_value (arg, &name, &value) != 0)
3956775e7de9Smrg    {
3957775e7de9Smrg      XFREE (name);
3958775e7de9Smrg      XFREE (value);
3959775e7de9Smrg      lt_fatal ("bad argument for %s: '%s'", env_prepend_opt, arg);
3960775e7de9Smrg    }
39617a84e134Smrg
3962775e7de9Smrg  new_value = lt_extend_str (getenv (name), value, 0);
3963775e7de9Smrg  lt_setenv (name, new_value);
3964775e7de9Smrg  XFREE (new_value);
3965775e7de9Smrg  XFREE (name);
3966775e7de9Smrg  XFREE (value);
3967775e7de9Smrg}
39687a84e134Smrg
3969775e7de9Smrgvoid
3970775e7de9Smrglt_opt_process_env_append (const char *arg)
3971775e7de9Smrg{
3972775e7de9Smrg  char *name = NULL;
3973775e7de9Smrg  char *value = NULL;
3974775e7de9Smrg  char *new_value = NULL;
39757a84e134Smrg
3976775e7de9Smrg  if (lt_split_name_value (arg, &name, &value) != 0)
3977775e7de9Smrg    {
3978775e7de9Smrg      XFREE (name);
3979775e7de9Smrg      XFREE (value);
3980775e7de9Smrg      lt_fatal ("bad argument for %s: '%s'", env_append_opt, arg);
3981775e7de9Smrg    }
39827a84e134Smrg
3983775e7de9Smrg  new_value = lt_extend_str (getenv (name), value, 1);
3984775e7de9Smrg  lt_setenv (name, new_value);
3985775e7de9Smrg  XFREE (new_value);
3986775e7de9Smrg  XFREE (name);
3987775e7de9Smrg  XFREE (value);
3988775e7de9Smrg}
39897a84e134Smrg
3990775e7de9Smrgvoid
3991775e7de9Smrglt_update_exe_path (const char *name, const char *value)
3992775e7de9Smrg{
3993775e7de9Smrg  LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
3994775e7de9Smrg                          (name ? name : "<NULL>"),
3995775e7de9Smrg                          (value ? value : "<NULL>")));
39967a84e134Smrg
3997775e7de9Smrg  if (name && *name && value && *value)
3998775e7de9Smrg    {
3999775e7de9Smrg      char *new_value = lt_extend_str (getenv (name), value, 0);
4000775e7de9Smrg      /* some systems can't cope with a ':'-terminated path #' */
4001775e7de9Smrg      int len = strlen (new_value);
4002775e7de9Smrg      while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
4003775e7de9Smrg        {
4004775e7de9Smrg          new_value[len-1] = '\0';
4005775e7de9Smrg        }
4006775e7de9Smrg      lt_setenv (name, new_value);
4007775e7de9Smrg      XFREE (new_value);
4008775e7de9Smrg    }
4009775e7de9Smrg}
40107a84e134Smrg
4011775e7de9Smrgvoid
4012775e7de9Smrglt_update_lib_path (const char *name, const char *value)
4013775e7de9Smrg{
4014775e7de9Smrg  LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
4015775e7de9Smrg                          (name ? name : "<NULL>"),
4016775e7de9Smrg                          (value ? value : "<NULL>")));
40177a84e134Smrg
4018775e7de9Smrg  if (name && *name && value && *value)
4019775e7de9Smrg    {
4020775e7de9Smrg      char *new_value = lt_extend_str (getenv (name), value, 0);
4021775e7de9Smrg      lt_setenv (name, new_value);
4022775e7de9Smrg      XFREE (new_value);
4023775e7de9Smrg    }
4024775e7de9Smrg}
40257a84e134Smrg
40267a84e134Smrg
4027775e7de9SmrgEOF
4028775e7de9Smrg}
4029775e7de9Smrg# end: func_emit_cwrapperexe_src
40307a84e134Smrg
4031775e7de9Smrg# func_mode_link arg...
4032775e7de9Smrgfunc_mode_link ()
4033775e7de9Smrg{
4034775e7de9Smrg    $opt_debug
4035775e7de9Smrg    case $host in
4036775e7de9Smrg    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
4037775e7de9Smrg      # It is impossible to link a dll without this setting, and
4038775e7de9Smrg      # we shouldn't force the makefile maintainer to figure out
4039775e7de9Smrg      # which system we are compiling for in order to pass an extra
4040775e7de9Smrg      # flag for every libtool invocation.
4041775e7de9Smrg      # allow_undefined=no
40427a84e134Smrg
4043775e7de9Smrg      # FIXME: Unfortunately, there are problems with the above when trying
4044775e7de9Smrg      # to make a dll which has undefined symbols, in which case not
4045775e7de9Smrg      # even a static library is built.  For now, we need to specify
4046775e7de9Smrg      # -no-undefined on the libtool link line when we can be certain
4047775e7de9Smrg      # that all symbols are satisfied, otherwise we get a static library.
4048775e7de9Smrg      allow_undefined=yes
4049775e7de9Smrg      ;;
4050775e7de9Smrg    *)
4051775e7de9Smrg      allow_undefined=yes
4052775e7de9Smrg      ;;
4053775e7de9Smrg    esac
4054775e7de9Smrg    libtool_args=$nonopt
4055775e7de9Smrg    base_compile="$nonopt $@"
4056775e7de9Smrg    compile_command=$nonopt
4057775e7de9Smrg    finalize_command=$nonopt
40587a84e134Smrg
4059775e7de9Smrg    compile_rpath=
4060775e7de9Smrg    finalize_rpath=
4061775e7de9Smrg    compile_shlibpath=
4062775e7de9Smrg    finalize_shlibpath=
4063775e7de9Smrg    convenience=
4064775e7de9Smrg    old_convenience=
4065775e7de9Smrg    deplibs=
4066775e7de9Smrg    old_deplibs=
4067775e7de9Smrg    compiler_flags=
4068775e7de9Smrg    linker_flags=
4069775e7de9Smrg    dllsearchpath=
4070775e7de9Smrg    lib_search_path=`pwd`
4071775e7de9Smrg    inst_prefix_dir=
4072775e7de9Smrg    new_inherited_linker_flags=
40737a84e134Smrg
4074775e7de9Smrg    avoid_version=no
4075775e7de9Smrg    dlfiles=
4076775e7de9Smrg    dlprefiles=
4077775e7de9Smrg    dlself=no
4078775e7de9Smrg    export_dynamic=no
4079775e7de9Smrg    export_symbols=
4080775e7de9Smrg    export_symbols_regex=
4081775e7de9Smrg    generated=
4082775e7de9Smrg    libobjs=
4083775e7de9Smrg    ltlibs=
4084775e7de9Smrg    module=no
4085775e7de9Smrg    no_install=no
4086775e7de9Smrg    objs=
4087775e7de9Smrg    non_pic_objects=
4088775e7de9Smrg    precious_files_regex=
4089775e7de9Smrg    prefer_static_libs=no
4090775e7de9Smrg    preload=no
4091775e7de9Smrg    prev=
4092775e7de9Smrg    prevarg=
4093775e7de9Smrg    release=
4094775e7de9Smrg    rpath=
4095775e7de9Smrg    xrpath=
4096775e7de9Smrg    perm_rpath=
4097775e7de9Smrg    temp_rpath=
4098775e7de9Smrg    thread_safe=no
4099775e7de9Smrg    vinfo=
4100775e7de9Smrg    vinfo_number=no
4101775e7de9Smrg    weak_libs=
4102775e7de9Smrg    single_module="${wl}-single_module"
4103775e7de9Smrg    func_infer_tag $base_compile
41047a84e134Smrg
4105775e7de9Smrg    # We need to know -static, to get the right output filenames.
4106775e7de9Smrg    for arg
4107775e7de9Smrg    do
4108775e7de9Smrg      case $arg in
4109775e7de9Smrg      -shared)
4110775e7de9Smrg	test "$build_libtool_libs" != yes && \
4111775e7de9Smrg	  func_fatal_configuration "can not build a shared library"
4112775e7de9Smrg	build_old_libs=no
4113775e7de9Smrg	break
4114775e7de9Smrg	;;
4115775e7de9Smrg      -all-static | -static | -static-libtool-libs)
4116775e7de9Smrg	case $arg in
4117775e7de9Smrg	-all-static)
4118775e7de9Smrg	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
4119775e7de9Smrg	    func_warning "complete static linking is impossible in this configuration"
4120775e7de9Smrg	  fi
4121775e7de9Smrg	  if test -n "$link_static_flag"; then
4122775e7de9Smrg	    dlopen_self=$dlopen_self_static
4123775e7de9Smrg	  fi
4124775e7de9Smrg	  prefer_static_libs=yes
4125775e7de9Smrg	  ;;
4126775e7de9Smrg	-static)
4127775e7de9Smrg	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
4128775e7de9Smrg	    dlopen_self=$dlopen_self_static
4129775e7de9Smrg	  fi
4130775e7de9Smrg	  prefer_static_libs=built
4131775e7de9Smrg	  ;;
4132775e7de9Smrg	-static-libtool-libs)
4133775e7de9Smrg	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
4134775e7de9Smrg	    dlopen_self=$dlopen_self_static
4135775e7de9Smrg	  fi
4136775e7de9Smrg	  prefer_static_libs=yes
4137775e7de9Smrg	  ;;
4138775e7de9Smrg	esac
4139775e7de9Smrg	build_libtool_libs=no
4140775e7de9Smrg	build_old_libs=yes
4141775e7de9Smrg	break
4142775e7de9Smrg	;;
4143775e7de9Smrg      esac
4144775e7de9Smrg    done
41457a84e134Smrg
4146775e7de9Smrg    # See if our shared archives depend on static archives.
4147775e7de9Smrg    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
41487a84e134Smrg
4149775e7de9Smrg    # Go through the arguments, transforming them on the way.
4150775e7de9Smrg    while test "$#" -gt 0; do
4151775e7de9Smrg      arg="$1"
4152775e7de9Smrg      shift
4153775e7de9Smrg      func_quote_for_eval "$arg"
4154775e7de9Smrg      qarg=$func_quote_for_eval_unquoted_result
4155775e7de9Smrg      func_append libtool_args " $func_quote_for_eval_result"
41567a84e134Smrg
4157775e7de9Smrg      # If the previous option needs an argument, assign it.
4158775e7de9Smrg      if test -n "$prev"; then
4159775e7de9Smrg	case $prev in
4160775e7de9Smrg	output)
4161775e7de9Smrg	  func_append compile_command " @OUTPUT@"
4162775e7de9Smrg	  func_append finalize_command " @OUTPUT@"
4163775e7de9Smrg	  ;;
4164775e7de9Smrg	esac
41657a84e134Smrg
4166775e7de9Smrg	case $prev in
4167775e7de9Smrg	dlfiles|dlprefiles)
4168775e7de9Smrg	  if test "$preload" = no; then
4169775e7de9Smrg	    # Add the symbol object into the linking commands.
4170775e7de9Smrg	    func_append compile_command " @SYMFILE@"
4171775e7de9Smrg	    func_append finalize_command " @SYMFILE@"
4172775e7de9Smrg	    preload=yes
41737a84e134Smrg	  fi
4174775e7de9Smrg	  case $arg in
4175775e7de9Smrg	  *.la | *.lo) ;;  # We handle these cases below.
4176775e7de9Smrg	  force)
4177775e7de9Smrg	    if test "$dlself" = no; then
4178775e7de9Smrg	      dlself=needless
4179775e7de9Smrg	      export_dynamic=yes
4180775e7de9Smrg	    fi
4181775e7de9Smrg	    prev=
4182775e7de9Smrg	    continue
4183775e7de9Smrg	    ;;
4184775e7de9Smrg	  self)
4185775e7de9Smrg	    if test "$prev" = dlprefiles; then
4186775e7de9Smrg	      dlself=yes
4187775e7de9Smrg	    elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
4188775e7de9Smrg	      dlself=yes
4189775e7de9Smrg	    else
4190775e7de9Smrg	      dlself=needless
4191775e7de9Smrg	      export_dynamic=yes
4192775e7de9Smrg	    fi
4193775e7de9Smrg	    prev=
4194775e7de9Smrg	    continue
4195775e7de9Smrg	    ;;
4196775e7de9Smrg	  *)
4197775e7de9Smrg	    if test "$prev" = dlfiles; then
4198775e7de9Smrg	      dlfiles="$dlfiles $arg"
4199775e7de9Smrg	    else
4200775e7de9Smrg	      dlprefiles="$dlprefiles $arg"
4201775e7de9Smrg	    fi
4202775e7de9Smrg	    prev=
4203775e7de9Smrg	    continue
4204775e7de9Smrg	    ;;
4205775e7de9Smrg	  esac
4206775e7de9Smrg	  ;;
4207775e7de9Smrg	expsyms)
4208775e7de9Smrg	  export_symbols="$arg"
4209775e7de9Smrg	  test -f "$arg" \
4210775e7de9Smrg	    || func_fatal_error "symbol file \`$arg' does not exist"
4211775e7de9Smrg	  prev=
4212775e7de9Smrg	  continue
4213775e7de9Smrg	  ;;
4214775e7de9Smrg	expsyms_regex)
4215775e7de9Smrg	  export_symbols_regex="$arg"
4216775e7de9Smrg	  prev=
4217775e7de9Smrg	  continue
4218775e7de9Smrg	  ;;
4219775e7de9Smrg	framework)
42207a84e134Smrg	  case $host in
4221775e7de9Smrg	    *-*-darwin*)
4222775e7de9Smrg	      case "$deplibs " in
4223775e7de9Smrg		*" $qarg.ltframework "*) ;;
4224775e7de9Smrg		*) deplibs="$deplibs $qarg.ltframework" # this is fixed later
4225775e7de9Smrg		   ;;
4226775e7de9Smrg	      esac
4227775e7de9Smrg	      ;;
42287a84e134Smrg	  esac
4229775e7de9Smrg	  prev=
4230775e7de9Smrg	  continue
42317a84e134Smrg	  ;;
4232775e7de9Smrg	inst_prefix)
4233775e7de9Smrg	  inst_prefix_dir="$arg"
4234775e7de9Smrg	  prev=
4235775e7de9Smrg	  continue
42367a84e134Smrg	  ;;
4237775e7de9Smrg	objectlist)
4238775e7de9Smrg	  if test -f "$arg"; then
4239775e7de9Smrg	    save_arg=$arg
4240775e7de9Smrg	    moreargs=
4241775e7de9Smrg	    for fil in `cat "$save_arg"`
4242775e7de9Smrg	    do
4243775e7de9Smrg#	      moreargs="$moreargs $fil"
4244775e7de9Smrg	      arg=$fil
4245775e7de9Smrg	      # A libtool-controlled object.
42467a84e134Smrg
4247775e7de9Smrg	      # Check to see that this really is a libtool object.
4248775e7de9Smrg	      if func_lalib_unsafe_p "$arg"; then
4249775e7de9Smrg		pic_object=
4250775e7de9Smrg		non_pic_object=
42517a84e134Smrg
4252775e7de9Smrg		# Read the .lo file
4253775e7de9Smrg		func_source "$arg"
42547a84e134Smrg
4255775e7de9Smrg		if test -z "$pic_object" ||
4256775e7de9Smrg		   test -z "$non_pic_object" ||
4257775e7de9Smrg		   test "$pic_object" = none &&
4258775e7de9Smrg		   test "$non_pic_object" = none; then
4259775e7de9Smrg		  func_fatal_error "cannot find name of object for \`$arg'"
4260775e7de9Smrg		fi
42617a84e134Smrg
4262775e7de9Smrg		# Extract subdirectory from the argument.
4263775e7de9Smrg		func_dirname "$arg" "/" ""
4264775e7de9Smrg		xdir="$func_dirname_result"
42657a84e134Smrg
4266775e7de9Smrg		if test "$pic_object" != none; then
4267775e7de9Smrg		  # Prepend the subdirectory the object is found in.
4268775e7de9Smrg		  pic_object="$xdir$pic_object"
42697a84e134Smrg
4270775e7de9Smrg		  if test "$prev" = dlfiles; then
4271775e7de9Smrg		    if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
4272775e7de9Smrg		      dlfiles="$dlfiles $pic_object"
4273775e7de9Smrg		      prev=
4274775e7de9Smrg		      continue
4275775e7de9Smrg		    else
4276775e7de9Smrg		      # If libtool objects are unsupported, then we need to preload.
4277775e7de9Smrg		      prev=dlprefiles
4278775e7de9Smrg		    fi
4279775e7de9Smrg		  fi
42807a84e134Smrg
4281775e7de9Smrg		  # CHECK ME:  I think I busted this.  -Ossama
4282775e7de9Smrg		  if test "$prev" = dlprefiles; then
4283775e7de9Smrg		    # Preload the old-style object.
4284775e7de9Smrg		    dlprefiles="$dlprefiles $pic_object"
4285775e7de9Smrg		    prev=
4286775e7de9Smrg		  fi
42877a84e134Smrg
4288775e7de9Smrg		  # A PIC object.
4289775e7de9Smrg		  func_append libobjs " $pic_object"
4290775e7de9Smrg		  arg="$pic_object"
4291775e7de9Smrg		fi
42927a84e134Smrg
4293775e7de9Smrg		# Non-PIC object.
4294775e7de9Smrg		if test "$non_pic_object" != none; then
4295775e7de9Smrg		  # Prepend the subdirectory the object is found in.
4296775e7de9Smrg		  non_pic_object="$xdir$non_pic_object"
4297775e7de9Smrg
4298775e7de9Smrg		  # A standard non-PIC object
4299775e7de9Smrg		  func_append non_pic_objects " $non_pic_object"
4300775e7de9Smrg		  if test -z "$pic_object" || test "$pic_object" = none ; then
4301775e7de9Smrg		    arg="$non_pic_object"
4302775e7de9Smrg		  fi
4303775e7de9Smrg		else
4304775e7de9Smrg		  # If the PIC object exists, use it instead.
4305775e7de9Smrg		  # $xdir was prepended to $pic_object above.
4306775e7de9Smrg		  non_pic_object="$pic_object"
4307775e7de9Smrg		  func_append non_pic_objects " $non_pic_object"
4308775e7de9Smrg		fi
4309775e7de9Smrg	      else
4310775e7de9Smrg		# Only an error if not doing a dry-run.
4311775e7de9Smrg		if $opt_dry_run; then
4312775e7de9Smrg		  # Extract subdirectory from the argument.
4313775e7de9Smrg		  func_dirname "$arg" "/" ""
4314775e7de9Smrg		  xdir="$func_dirname_result"
4315775e7de9Smrg
4316775e7de9Smrg		  func_lo2o "$arg"
4317775e7de9Smrg		  pic_object=$xdir$objdir/$func_lo2o_result
4318775e7de9Smrg		  non_pic_object=$xdir$func_lo2o_result
4319775e7de9Smrg		  func_append libobjs " $pic_object"
4320775e7de9Smrg		  func_append non_pic_objects " $non_pic_object"
4321775e7de9Smrg	        else
4322775e7de9Smrg		  func_fatal_error "\`$arg' is not a valid libtool object"
4323775e7de9Smrg		fi
4324775e7de9Smrg	      fi
4325775e7de9Smrg	    done
43267a84e134Smrg	  else
4327775e7de9Smrg	    func_fatal_error "link input file \`$arg' does not exist"
43287a84e134Smrg	  fi
4329775e7de9Smrg	  arg=$save_arg
4330775e7de9Smrg	  prev=
4331775e7de9Smrg	  continue
4332775e7de9Smrg	  ;;
4333775e7de9Smrg	precious_regex)
4334775e7de9Smrg	  precious_files_regex="$arg"
4335775e7de9Smrg	  prev=
4336775e7de9Smrg	  continue
4337775e7de9Smrg	  ;;
4338775e7de9Smrg	release)
4339775e7de9Smrg	  release="-$arg"
4340775e7de9Smrg	  prev=
4341775e7de9Smrg	  continue
4342775e7de9Smrg	  ;;
4343775e7de9Smrg	rpath | xrpath)
4344775e7de9Smrg	  # We need an absolute path.
4345775e7de9Smrg	  case $arg in
4346775e7de9Smrg	  [\\/]* | [A-Za-z]:[\\/]*) ;;
4347775e7de9Smrg	  *)
4348775e7de9Smrg	    func_fatal_error "only absolute run-paths are allowed"
4349775e7de9Smrg	    ;;
4350775e7de9Smrg	  esac
4351775e7de9Smrg	  if test "$prev" = rpath; then
4352775e7de9Smrg	    case "$rpath " in
4353775e7de9Smrg	    *" $arg "*) ;;
4354775e7de9Smrg	    *) rpath="$rpath $arg" ;;
4355775e7de9Smrg	    esac
43567a84e134Smrg	  else
4357775e7de9Smrg	    case "$xrpath " in
4358775e7de9Smrg	    *" $arg "*) ;;
4359775e7de9Smrg	    *) xrpath="$xrpath $arg" ;;
4360775e7de9Smrg	    esac
43617a84e134Smrg	  fi
4362775e7de9Smrg	  prev=
4363775e7de9Smrg	  continue
4364775e7de9Smrg	  ;;
4365775e7de9Smrg	shrext)
4366775e7de9Smrg	  shrext_cmds="$arg"
4367775e7de9Smrg	  prev=
4368775e7de9Smrg	  continue
4369775e7de9Smrg	  ;;
4370775e7de9Smrg	weak)
4371775e7de9Smrg	  weak_libs="$weak_libs $arg"
4372775e7de9Smrg	  prev=
4373775e7de9Smrg	  continue
4374775e7de9Smrg	  ;;
4375775e7de9Smrg	xcclinker)
4376775e7de9Smrg	  linker_flags="$linker_flags $qarg"
4377775e7de9Smrg	  compiler_flags="$compiler_flags $qarg"
4378775e7de9Smrg	  prev=
4379775e7de9Smrg	  func_append compile_command " $qarg"
4380775e7de9Smrg	  func_append finalize_command " $qarg"
4381775e7de9Smrg	  continue
4382775e7de9Smrg	  ;;
4383775e7de9Smrg	xcompiler)
4384775e7de9Smrg	  compiler_flags="$compiler_flags $qarg"
4385775e7de9Smrg	  prev=
4386775e7de9Smrg	  func_append compile_command " $qarg"
4387775e7de9Smrg	  func_append finalize_command " $qarg"
4388775e7de9Smrg	  continue
4389775e7de9Smrg	  ;;
4390775e7de9Smrg	xlinker)
4391775e7de9Smrg	  linker_flags="$linker_flags $qarg"
4392775e7de9Smrg	  compiler_flags="$compiler_flags $wl$qarg"
4393775e7de9Smrg	  prev=
4394775e7de9Smrg	  func_append compile_command " $wl$qarg"
4395775e7de9Smrg	  func_append finalize_command " $wl$qarg"
4396775e7de9Smrg	  continue
4397775e7de9Smrg	  ;;
4398775e7de9Smrg	*)
4399775e7de9Smrg	  eval "$prev=\"\$arg\""
4400775e7de9Smrg	  prev=
4401775e7de9Smrg	  continue
4402775e7de9Smrg	  ;;
44037a84e134Smrg	esac
4404775e7de9Smrg      fi # test -n "$prev"
44057a84e134Smrg
4406775e7de9Smrg      prevarg="$arg"
44077a84e134Smrg
4408775e7de9Smrg      case $arg in
4409775e7de9Smrg      -all-static)
4410775e7de9Smrg	if test -n "$link_static_flag"; then
4411775e7de9Smrg	  # See comment for -static flag below, for more details.
4412775e7de9Smrg	  func_append compile_command " $link_static_flag"
4413775e7de9Smrg	  func_append finalize_command " $link_static_flag"
4414775e7de9Smrg	fi
4415775e7de9Smrg	continue
4416775e7de9Smrg	;;
44177a84e134Smrg
4418775e7de9Smrg      -allow-undefined)
4419775e7de9Smrg	# FIXME: remove this flag sometime in the future.
4420775e7de9Smrg	func_fatal_error "\`-allow-undefined' must not be used because it is the default"
4421775e7de9Smrg	;;
44227a84e134Smrg
4423775e7de9Smrg      -avoid-version)
4424775e7de9Smrg	avoid_version=yes
4425775e7de9Smrg	continue
4426775e7de9Smrg	;;
44277a84e134Smrg
4428775e7de9Smrg      -dlopen)
4429775e7de9Smrg	prev=dlfiles
4430775e7de9Smrg	continue
4431775e7de9Smrg	;;
44327a84e134Smrg
4433775e7de9Smrg      -dlpreopen)
4434775e7de9Smrg	prev=dlprefiles
4435775e7de9Smrg	continue
4436775e7de9Smrg	;;
44377a84e134Smrg
4438775e7de9Smrg      -export-dynamic)
4439775e7de9Smrg	export_dynamic=yes
4440775e7de9Smrg	continue
4441775e7de9Smrg	;;
44427a84e134Smrg
4443775e7de9Smrg      -export-symbols | -export-symbols-regex)
4444775e7de9Smrg	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
4445775e7de9Smrg	  func_fatal_error "more than one -exported-symbols argument is not allowed"
4446775e7de9Smrg	fi
4447775e7de9Smrg	if test "X$arg" = "X-export-symbols"; then
4448775e7de9Smrg	  prev=expsyms
4449775e7de9Smrg	else
4450775e7de9Smrg	  prev=expsyms_regex
4451775e7de9Smrg	fi
4452775e7de9Smrg	continue
4453775e7de9Smrg	;;
44547a84e134Smrg
4455775e7de9Smrg      -framework)
4456775e7de9Smrg	prev=framework
4457775e7de9Smrg	continue
4458775e7de9Smrg	;;
44597a84e134Smrg
4460775e7de9Smrg      -inst-prefix-dir)
4461775e7de9Smrg	prev=inst_prefix
4462775e7de9Smrg	continue
4463775e7de9Smrg	;;
44647a84e134Smrg
4465775e7de9Smrg      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
4466775e7de9Smrg      # so, if we see these flags be careful not to treat them like -L
4467775e7de9Smrg      -L[A-Z][A-Z]*:*)
4468775e7de9Smrg	case $with_gcc/$host in
4469775e7de9Smrg	no/*-*-irix* | /*-*-irix*)
4470775e7de9Smrg	  func_append compile_command " $arg"
4471775e7de9Smrg	  func_append finalize_command " $arg"
4472775e7de9Smrg	  ;;
4473775e7de9Smrg	esac
4474775e7de9Smrg	continue
4475775e7de9Smrg	;;
44767a84e134Smrg
4477775e7de9Smrg      -L*)
4478775e7de9Smrg	func_stripname '-L' '' "$arg"
4479775e7de9Smrg	dir=$func_stripname_result
4480775e7de9Smrg	if test -z "$dir"; then
4481775e7de9Smrg	  if test "$#" -gt 0; then
4482775e7de9Smrg	    func_fatal_error "require no space between \`-L' and \`$1'"
4483775e7de9Smrg	  else
4484775e7de9Smrg	    func_fatal_error "need path for \`-L' option"
4485775e7de9Smrg	  fi
4486775e7de9Smrg	fi
4487775e7de9Smrg	# We need an absolute path.
4488775e7de9Smrg	case $dir in
4489775e7de9Smrg	[\\/]* | [A-Za-z]:[\\/]*) ;;
4490775e7de9Smrg	*)
4491775e7de9Smrg	  absdir=`cd "$dir" && pwd`
4492775e7de9Smrg	  test -z "$absdir" && \
4493775e7de9Smrg	    func_fatal_error "cannot determine absolute directory name of \`$dir'"
4494775e7de9Smrg	  dir="$absdir"
4495775e7de9Smrg	  ;;
4496775e7de9Smrg	esac
4497775e7de9Smrg	case "$deplibs " in
4498775e7de9Smrg	*" -L$dir "*) ;;
4499775e7de9Smrg	*)
4500775e7de9Smrg	  deplibs="$deplibs -L$dir"
4501775e7de9Smrg	  lib_search_path="$lib_search_path $dir"
4502775e7de9Smrg	  ;;
4503775e7de9Smrg	esac
4504775e7de9Smrg	case $host in
4505775e7de9Smrg	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
4506775e7de9Smrg	  testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'`
4507775e7de9Smrg	  case :$dllsearchpath: in
4508775e7de9Smrg	  *":$dir:"*) ;;
4509775e7de9Smrg	  ::) dllsearchpath=$dir;;
4510775e7de9Smrg	  *) dllsearchpath="$dllsearchpath:$dir";;
4511775e7de9Smrg	  esac
4512775e7de9Smrg	  case :$dllsearchpath: in
4513775e7de9Smrg	  *":$testbindir:"*) ;;
4514775e7de9Smrg	  ::) dllsearchpath=$testbindir;;
4515775e7de9Smrg	  *) dllsearchpath="$dllsearchpath:$testbindir";;
4516775e7de9Smrg	  esac
4517775e7de9Smrg	  ;;
4518775e7de9Smrg	esac
4519775e7de9Smrg	continue
4520775e7de9Smrg	;;
45217a84e134Smrg
4522775e7de9Smrg      -l*)
4523775e7de9Smrg	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
4524775e7de9Smrg	  case $host in
4525775e7de9Smrg	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc*)
4526775e7de9Smrg	    # These systems don't actually have a C or math library (as such)
4527775e7de9Smrg	    continue
4528775e7de9Smrg	    ;;
4529775e7de9Smrg	  *-*-os2*)
4530775e7de9Smrg	    # These systems don't actually have a C library (as such)
4531775e7de9Smrg	    test "X$arg" = "X-lc" && continue
4532775e7de9Smrg	    ;;
4533775e7de9Smrg	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
4534775e7de9Smrg	    # Do not include libc due to us having libc/libc_r.
4535775e7de9Smrg	    test "X$arg" = "X-lc" && continue
4536775e7de9Smrg	    ;;
4537775e7de9Smrg	  *-*-rhapsody* | *-*-darwin1.[012])
4538775e7de9Smrg	    # Rhapsody C and math libraries are in the System framework
4539775e7de9Smrg	    deplibs="$deplibs System.ltframework"
4540775e7de9Smrg	    continue
4541775e7de9Smrg	    ;;
4542775e7de9Smrg	  *-*-sco3.2v5* | *-*-sco5v6*)
4543775e7de9Smrg	    # Causes problems with __ctype
4544775e7de9Smrg	    test "X$arg" = "X-lc" && continue
4545775e7de9Smrg	    ;;
4546775e7de9Smrg	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
4547775e7de9Smrg	    # Compiler inserts libc in the correct place for threads to work
4548775e7de9Smrg	    test "X$arg" = "X-lc" && continue
4549775e7de9Smrg	    ;;
4550775e7de9Smrg	  esac
4551775e7de9Smrg	elif test "X$arg" = "X-lc_r"; then
4552775e7de9Smrg	 case $host in
4553775e7de9Smrg	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
4554775e7de9Smrg	   # Do not include libc_r directly, use -pthread flag.
4555775e7de9Smrg	   continue
4556775e7de9Smrg	   ;;
4557775e7de9Smrg	 esac
4558775e7de9Smrg	fi
4559775e7de9Smrg	deplibs="$deplibs $arg"
4560775e7de9Smrg	continue
4561775e7de9Smrg	;;
45627a84e134Smrg
4563775e7de9Smrg      -module)
4564775e7de9Smrg	module=yes
4565775e7de9Smrg	continue
4566775e7de9Smrg	;;
45677a84e134Smrg
4568775e7de9Smrg      # Tru64 UNIX uses -model [arg] to determine the layout of C++
4569775e7de9Smrg      # classes, name mangling, and exception handling.
4570775e7de9Smrg      # Darwin uses the -arch flag to determine output architecture.
4571775e7de9Smrg      -model|-arch|-isysroot)
4572775e7de9Smrg	compiler_flags="$compiler_flags $arg"
4573775e7de9Smrg	func_append compile_command " $arg"
4574775e7de9Smrg	func_append finalize_command " $arg"
4575775e7de9Smrg	prev=xcompiler
4576775e7de9Smrg	continue
4577775e7de9Smrg	;;
45787a84e134Smrg
4579775e7de9Smrg      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
4580775e7de9Smrg	compiler_flags="$compiler_flags $arg"
4581775e7de9Smrg	func_append compile_command " $arg"
4582775e7de9Smrg	func_append finalize_command " $arg"
4583775e7de9Smrg	case "$new_inherited_linker_flags " in
4584775e7de9Smrg	    *" $arg "*) ;;
4585775e7de9Smrg	    * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;;
4586775e7de9Smrg	esac
4587775e7de9Smrg	continue
4588775e7de9Smrg	;;
45897a84e134Smrg
4590775e7de9Smrg      -multi_module)
4591775e7de9Smrg	single_module="${wl}-multi_module"
4592775e7de9Smrg	continue
4593775e7de9Smrg	;;
45947a84e134Smrg
4595775e7de9Smrg      -no-fast-install)
4596775e7de9Smrg	fast_install=no
4597775e7de9Smrg	continue
4598775e7de9Smrg	;;
45997a84e134Smrg
4600775e7de9Smrg      -no-install)
4601775e7de9Smrg	case $host in
4602775e7de9Smrg	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
4603775e7de9Smrg	  # The PATH hackery in wrapper scripts is required on Windows
4604775e7de9Smrg	  # and Darwin in order for the loader to find any dlls it needs.
4605775e7de9Smrg	  func_warning "\`-no-install' is ignored for $host"
4606775e7de9Smrg	  func_warning "assuming \`-no-fast-install' instead"
4607775e7de9Smrg	  fast_install=no
4608775e7de9Smrg	  ;;
4609775e7de9Smrg	*) no_install=yes ;;
4610775e7de9Smrg	esac
4611775e7de9Smrg	continue
4612775e7de9Smrg	;;
46137a84e134Smrg
4614775e7de9Smrg      -no-undefined)
4615775e7de9Smrg	allow_undefined=no
4616775e7de9Smrg	continue
4617775e7de9Smrg	;;
46187a84e134Smrg
4619775e7de9Smrg      -objectlist)
4620775e7de9Smrg	prev=objectlist
4621775e7de9Smrg	continue
4622775e7de9Smrg	;;
46237a84e134Smrg
4624775e7de9Smrg      -o) prev=output ;;
46257a84e134Smrg
4626775e7de9Smrg      -precious-files-regex)
4627775e7de9Smrg	prev=precious_regex
4628775e7de9Smrg	continue
4629775e7de9Smrg	;;
46307a84e134Smrg
4631775e7de9Smrg      -release)
4632775e7de9Smrg	prev=release
4633775e7de9Smrg	continue
4634775e7de9Smrg	;;
46357a84e134Smrg
4636775e7de9Smrg      -rpath)
4637775e7de9Smrg	prev=rpath
4638775e7de9Smrg	continue
4639775e7de9Smrg	;;
46407a84e134Smrg
4641775e7de9Smrg      -R)
4642775e7de9Smrg	prev=xrpath
4643775e7de9Smrg	continue
4644775e7de9Smrg	;;
46457a84e134Smrg
4646775e7de9Smrg      -R*)
4647775e7de9Smrg	func_stripname '-R' '' "$arg"
4648775e7de9Smrg	dir=$func_stripname_result
4649775e7de9Smrg	# We need an absolute path.
4650775e7de9Smrg	case $dir in
4651775e7de9Smrg	[\\/]* | [A-Za-z]:[\\/]*) ;;
4652775e7de9Smrg	*)
4653775e7de9Smrg	  func_fatal_error "only absolute run-paths are allowed"
4654775e7de9Smrg	  ;;
4655775e7de9Smrg	esac
4656775e7de9Smrg	case "$xrpath " in
4657775e7de9Smrg	*" $dir "*) ;;
4658775e7de9Smrg	*) xrpath="$xrpath $dir" ;;
4659775e7de9Smrg	esac
4660775e7de9Smrg	continue
4661775e7de9Smrg	;;
46627a84e134Smrg
4663775e7de9Smrg      -shared)
4664775e7de9Smrg	# The effects of -shared are defined in a previous loop.
4665775e7de9Smrg	continue
4666775e7de9Smrg	;;
46677a84e134Smrg
4668775e7de9Smrg      -shrext)
4669775e7de9Smrg	prev=shrext
4670775e7de9Smrg	continue
4671775e7de9Smrg	;;
46727a84e134Smrg
4673775e7de9Smrg      -static | -static-libtool-libs)
4674775e7de9Smrg	# The effects of -static are defined in a previous loop.
4675775e7de9Smrg	# We used to do the same as -all-static on platforms that
4676775e7de9Smrg	# didn't have a PIC flag, but the assumption that the effects
4677775e7de9Smrg	# would be equivalent was wrong.  It would break on at least
4678775e7de9Smrg	# Digital Unix and AIX.
4679775e7de9Smrg	continue
4680775e7de9Smrg	;;
46817a84e134Smrg
4682775e7de9Smrg      -thread-safe)
4683775e7de9Smrg	thread_safe=yes
4684775e7de9Smrg	continue
4685775e7de9Smrg	;;
46867a84e134Smrg
4687775e7de9Smrg      -version-info)
4688775e7de9Smrg	prev=vinfo
4689775e7de9Smrg	continue
4690775e7de9Smrg	;;
46917a84e134Smrg
4692775e7de9Smrg      -version-number)
4693775e7de9Smrg	prev=vinfo
4694775e7de9Smrg	vinfo_number=yes
4695775e7de9Smrg	continue
4696775e7de9Smrg	;;
46977a84e134Smrg
4698775e7de9Smrg      -weak)
4699775e7de9Smrg        prev=weak
4700775e7de9Smrg	continue
4701775e7de9Smrg	;;
47027a84e134Smrg
4703775e7de9Smrg      -Wc,*)
4704775e7de9Smrg	func_stripname '-Wc,' '' "$arg"
4705775e7de9Smrg	args=$func_stripname_result
4706775e7de9Smrg	arg=
4707775e7de9Smrg	save_ifs="$IFS"; IFS=','
4708775e7de9Smrg	for flag in $args; do
4709775e7de9Smrg	  IFS="$save_ifs"
4710775e7de9Smrg          func_quote_for_eval "$flag"
4711775e7de9Smrg	  arg="$arg $wl$func_quote_for_eval_result"
4712775e7de9Smrg	  compiler_flags="$compiler_flags $func_quote_for_eval_result"
4713775e7de9Smrg	done
4714775e7de9Smrg	IFS="$save_ifs"
4715775e7de9Smrg	func_stripname ' ' '' "$arg"
4716775e7de9Smrg	arg=$func_stripname_result
4717775e7de9Smrg	;;
47187a84e134Smrg
4719775e7de9Smrg      -Wl,*)
4720775e7de9Smrg	func_stripname '-Wl,' '' "$arg"
4721775e7de9Smrg	args=$func_stripname_result
4722775e7de9Smrg	arg=
4723775e7de9Smrg	save_ifs="$IFS"; IFS=','
4724775e7de9Smrg	for flag in $args; do
4725775e7de9Smrg	  IFS="$save_ifs"
4726775e7de9Smrg          func_quote_for_eval "$flag"
4727775e7de9Smrg	  arg="$arg $wl$func_quote_for_eval_result"
4728775e7de9Smrg	  compiler_flags="$compiler_flags $wl$func_quote_for_eval_result"
4729775e7de9Smrg	  linker_flags="$linker_flags $func_quote_for_eval_result"
4730775e7de9Smrg	done
4731775e7de9Smrg	IFS="$save_ifs"
4732775e7de9Smrg	func_stripname ' ' '' "$arg"
4733775e7de9Smrg	arg=$func_stripname_result
4734775e7de9Smrg	;;
47357a84e134Smrg
4736775e7de9Smrg      -Xcompiler)
4737775e7de9Smrg	prev=xcompiler
4738775e7de9Smrg	continue
4739775e7de9Smrg	;;
47407a84e134Smrg
4741775e7de9Smrg      -Xlinker)
4742775e7de9Smrg	prev=xlinker
4743775e7de9Smrg	continue
4744775e7de9Smrg	;;
47457a84e134Smrg
4746775e7de9Smrg      -XCClinker)
4747775e7de9Smrg	prev=xcclinker
4748775e7de9Smrg	continue
4749775e7de9Smrg	;;
47507a84e134Smrg
4751775e7de9Smrg      # -msg_* for osf cc
4752775e7de9Smrg      -msg_*)
4753775e7de9Smrg	func_quote_for_eval "$arg"
4754775e7de9Smrg	arg="$func_quote_for_eval_result"
4755775e7de9Smrg	;;
47567a84e134Smrg
4757775e7de9Smrg      # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
4758775e7de9Smrg      # -r[0-9][0-9]* specifies the processor on the SGI compiler
4759775e7de9Smrg      # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
4760775e7de9Smrg      # +DA*, +DD* enable 64-bit mode on the HP compiler
4761775e7de9Smrg      # -q* pass through compiler args for the IBM compiler
4762775e7de9Smrg      # -m*, -t[45]*, -txscale* pass through architecture-specific
4763775e7de9Smrg      # compiler args for GCC
4764775e7de9Smrg      # -F/path gives path to uninstalled frameworks, gcc on darwin
4765775e7de9Smrg      # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC
4766775e7de9Smrg      # @file GCC response files
4767775e7de9Smrg      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
4768775e7de9Smrg      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*)
4769775e7de9Smrg        func_quote_for_eval "$arg"
4770775e7de9Smrg	arg="$func_quote_for_eval_result"
4771775e7de9Smrg        func_append compile_command " $arg"
4772775e7de9Smrg        func_append finalize_command " $arg"
4773775e7de9Smrg        compiler_flags="$compiler_flags $arg"
4774775e7de9Smrg        continue
4775775e7de9Smrg        ;;
47767a84e134Smrg
4777775e7de9Smrg      # Some other compiler flag.
4778775e7de9Smrg      -* | +*)
4779775e7de9Smrg        func_quote_for_eval "$arg"
4780775e7de9Smrg	arg="$func_quote_for_eval_result"
4781775e7de9Smrg	;;
47827a84e134Smrg
4783775e7de9Smrg      *.$objext)
4784775e7de9Smrg	# A standard object.
4785775e7de9Smrg	objs="$objs $arg"
4786775e7de9Smrg	;;
47877a84e134Smrg
4788775e7de9Smrg      *.lo)
4789775e7de9Smrg	# A libtool-controlled object.
47907a84e134Smrg
4791775e7de9Smrg	# Check to see that this really is a libtool object.
4792775e7de9Smrg	if func_lalib_unsafe_p "$arg"; then
4793775e7de9Smrg	  pic_object=
4794775e7de9Smrg	  non_pic_object=
47957a84e134Smrg
4796775e7de9Smrg	  # Read the .lo file
4797775e7de9Smrg	  func_source "$arg"
47987a84e134Smrg
4799775e7de9Smrg	  if test -z "$pic_object" ||
4800775e7de9Smrg	     test -z "$non_pic_object" ||
4801775e7de9Smrg	     test "$pic_object" = none &&
4802775e7de9Smrg	     test "$non_pic_object" = none; then
4803775e7de9Smrg	    func_fatal_error "cannot find name of object for \`$arg'"
4804775e7de9Smrg	  fi
4805ab902922Smrg
4806775e7de9Smrg	  # Extract subdirectory from the argument.
4807775e7de9Smrg	  func_dirname "$arg" "/" ""
4808775e7de9Smrg	  xdir="$func_dirname_result"
48097a84e134Smrg
4810775e7de9Smrg	  if test "$pic_object" != none; then
4811775e7de9Smrg	    # Prepend the subdirectory the object is found in.
4812775e7de9Smrg	    pic_object="$xdir$pic_object"
48137a84e134Smrg
4814775e7de9Smrg	    if test "$prev" = dlfiles; then
4815775e7de9Smrg	      if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
4816775e7de9Smrg		dlfiles="$dlfiles $pic_object"
4817775e7de9Smrg		prev=
4818775e7de9Smrg		continue
4819775e7de9Smrg	      else
4820775e7de9Smrg		# If libtool objects are unsupported, then we need to preload.
4821775e7de9Smrg		prev=dlprefiles
4822775e7de9Smrg	      fi
4823775e7de9Smrg	    fi
48247a84e134Smrg
4825775e7de9Smrg	    # CHECK ME:  I think I busted this.  -Ossama
4826775e7de9Smrg	    if test "$prev" = dlprefiles; then
4827775e7de9Smrg	      # Preload the old-style object.
4828775e7de9Smrg	      dlprefiles="$dlprefiles $pic_object"
4829775e7de9Smrg	      prev=
4830775e7de9Smrg	    fi
48317a84e134Smrg
4832775e7de9Smrg	    # A PIC object.
4833775e7de9Smrg	    func_append libobjs " $pic_object"
4834775e7de9Smrg	    arg="$pic_object"
4835775e7de9Smrg	  fi
48367a84e134Smrg
4837775e7de9Smrg	  # Non-PIC object.
4838775e7de9Smrg	  if test "$non_pic_object" != none; then
4839775e7de9Smrg	    # Prepend the subdirectory the object is found in.
4840775e7de9Smrg	    non_pic_object="$xdir$non_pic_object"
48417a84e134Smrg
4842775e7de9Smrg	    # A standard non-PIC object
4843775e7de9Smrg	    func_append non_pic_objects " $non_pic_object"
4844775e7de9Smrg	    if test -z "$pic_object" || test "$pic_object" = none ; then
4845775e7de9Smrg	      arg="$non_pic_object"
4846775e7de9Smrg	    fi
4847775e7de9Smrg	  else
4848775e7de9Smrg	    # If the PIC object exists, use it instead.
4849775e7de9Smrg	    # $xdir was prepended to $pic_object above.
4850775e7de9Smrg	    non_pic_object="$pic_object"
4851775e7de9Smrg	    func_append non_pic_objects " $non_pic_object"
4852775e7de9Smrg	  fi
4853775e7de9Smrg	else
4854775e7de9Smrg	  # Only an error if not doing a dry-run.
4855775e7de9Smrg	  if $opt_dry_run; then
4856775e7de9Smrg	    # Extract subdirectory from the argument.
4857775e7de9Smrg	    func_dirname "$arg" "/" ""
4858775e7de9Smrg	    xdir="$func_dirname_result"
4859775e7de9Smrg
4860775e7de9Smrg	    func_lo2o "$arg"
4861775e7de9Smrg	    pic_object=$xdir$objdir/$func_lo2o_result
4862775e7de9Smrg	    non_pic_object=$xdir$func_lo2o_result
4863775e7de9Smrg	    func_append libobjs " $pic_object"
4864775e7de9Smrg	    func_append non_pic_objects " $non_pic_object"
4865775e7de9Smrg	  else
4866775e7de9Smrg	    func_fatal_error "\`$arg' is not a valid libtool object"
4867775e7de9Smrg	  fi
4868775e7de9Smrg	fi
4869775e7de9Smrg	;;
4870775e7de9Smrg
4871775e7de9Smrg      *.$libext)
4872775e7de9Smrg	# An archive.
4873775e7de9Smrg	deplibs="$deplibs $arg"
4874775e7de9Smrg	old_deplibs="$old_deplibs $arg"
4875775e7de9Smrg	continue
4876775e7de9Smrg	;;
4877775e7de9Smrg
4878775e7de9Smrg      *.la)
4879775e7de9Smrg	# A libtool-controlled library.
4880775e7de9Smrg
4881775e7de9Smrg	if test "$prev" = dlfiles; then
4882775e7de9Smrg	  # This library was specified with -dlopen.
4883775e7de9Smrg	  dlfiles="$dlfiles $arg"
4884775e7de9Smrg	  prev=
4885775e7de9Smrg	elif test "$prev" = dlprefiles; then
4886775e7de9Smrg	  # The library was specified with -dlpreopen.
4887775e7de9Smrg	  dlprefiles="$dlprefiles $arg"
4888775e7de9Smrg	  prev=
4889775e7de9Smrg	else
4890775e7de9Smrg	  deplibs="$deplibs $arg"
4891775e7de9Smrg	fi
4892775e7de9Smrg	continue
4893775e7de9Smrg	;;
4894775e7de9Smrg
4895775e7de9Smrg      # Some other compiler argument.
4896775e7de9Smrg      *)
4897775e7de9Smrg	# Unknown arguments in both finalize_command and compile_command need
4898775e7de9Smrg	# to be aesthetically quoted because they are evaled later.
4899775e7de9Smrg	func_quote_for_eval "$arg"
4900775e7de9Smrg	arg="$func_quote_for_eval_result"
4901775e7de9Smrg	;;
4902775e7de9Smrg      esac # arg
4903775e7de9Smrg
4904775e7de9Smrg      # Now actually substitute the argument into the commands.
4905775e7de9Smrg      if test -n "$arg"; then
4906775e7de9Smrg	func_append compile_command " $arg"
4907775e7de9Smrg	func_append finalize_command " $arg"
4908775e7de9Smrg      fi
4909775e7de9Smrg    done # argument parsing loop
4910775e7de9Smrg
4911775e7de9Smrg    test -n "$prev" && \
4912775e7de9Smrg      func_fatal_help "the \`$prevarg' option requires an argument"
4913775e7de9Smrg
4914775e7de9Smrg    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
4915775e7de9Smrg      eval arg=\"$export_dynamic_flag_spec\"
4916775e7de9Smrg      func_append compile_command " $arg"
4917775e7de9Smrg      func_append finalize_command " $arg"
4918775e7de9Smrg    fi
4919775e7de9Smrg
4920775e7de9Smrg    oldlibs=
4921775e7de9Smrg    # calculate the name of the file, without its directory
4922775e7de9Smrg    func_basename "$output"
4923775e7de9Smrg    outputname="$func_basename_result"
4924775e7de9Smrg    libobjs_save="$libobjs"
4925775e7de9Smrg
4926775e7de9Smrg    if test -n "$shlibpath_var"; then
4927775e7de9Smrg      # get the directories listed in $shlibpath_var
4928775e7de9Smrg      eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
4929775e7de9Smrg    else
4930775e7de9Smrg      shlib_search_path=
4931775e7de9Smrg    fi
4932775e7de9Smrg    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
4933775e7de9Smrg    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
4934775e7de9Smrg
4935775e7de9Smrg    func_dirname "$output" "/" ""
4936775e7de9Smrg    output_objdir="$func_dirname_result$objdir"
4937775e7de9Smrg    # Create the object directory.
4938775e7de9Smrg    func_mkdir_p "$output_objdir"
4939775e7de9Smrg
4940775e7de9Smrg    # Determine the type of output
4941775e7de9Smrg    case $output in
4942775e7de9Smrg    "")
4943775e7de9Smrg      func_fatal_help "you must specify an output file"
4944775e7de9Smrg      ;;
4945775e7de9Smrg    *.$libext) linkmode=oldlib ;;
4946775e7de9Smrg    *.lo | *.$objext) linkmode=obj ;;
4947775e7de9Smrg    *.la) linkmode=lib ;;
4948775e7de9Smrg    *) linkmode=prog ;; # Anything else should be a program.
4949775e7de9Smrg    esac
4950775e7de9Smrg
4951775e7de9Smrg    specialdeplibs=
4952775e7de9Smrg
4953775e7de9Smrg    libs=
4954775e7de9Smrg    # Find all interdependent deplibs by searching for libraries
4955775e7de9Smrg    # that are linked more than once (e.g. -la -lb -la)
4956775e7de9Smrg    for deplib in $deplibs; do
4957775e7de9Smrg      if $opt_duplicate_deps ; then
4958775e7de9Smrg	case "$libs " in
4959775e7de9Smrg	*" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
4960775e7de9Smrg	esac
4961775e7de9Smrg      fi
4962775e7de9Smrg      libs="$libs $deplib"
4963775e7de9Smrg    done
4964775e7de9Smrg
4965775e7de9Smrg    if test "$linkmode" = lib; then
4966775e7de9Smrg      libs="$predeps $libs $compiler_lib_search_path $postdeps"
4967775e7de9Smrg
4968775e7de9Smrg      # Compute libraries that are listed more than once in $predeps
4969775e7de9Smrg      # $postdeps and mark them as special (i.e., whose duplicates are
4970775e7de9Smrg      # not to be eliminated).
4971775e7de9Smrg      pre_post_deps=
4972775e7de9Smrg      if $opt_duplicate_compiler_generated_deps; then
4973775e7de9Smrg	for pre_post_dep in $predeps $postdeps; do
4974775e7de9Smrg	  case "$pre_post_deps " in
4975775e7de9Smrg	  *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
4976775e7de9Smrg	  esac
4977775e7de9Smrg	  pre_post_deps="$pre_post_deps $pre_post_dep"
4978775e7de9Smrg	done
4979775e7de9Smrg      fi
4980775e7de9Smrg      pre_post_deps=
4981775e7de9Smrg    fi
4982775e7de9Smrg
4983775e7de9Smrg    deplibs=
4984775e7de9Smrg    newdependency_libs=
4985775e7de9Smrg    newlib_search_path=
4986775e7de9Smrg    need_relink=no # whether we're linking any uninstalled libtool libraries
4987775e7de9Smrg    notinst_deplibs= # not-installed libtool libraries
4988775e7de9Smrg    notinst_path= # paths that contain not-installed libtool libraries
4989775e7de9Smrg
4990775e7de9Smrg    case $linkmode in
4991775e7de9Smrg    lib)
4992775e7de9Smrg	passes="conv dlpreopen link"
4993775e7de9Smrg	for file in $dlfiles $dlprefiles; do
4994775e7de9Smrg	  case $file in
4995775e7de9Smrg	  *.la) ;;
4996775e7de9Smrg	  *)
4997775e7de9Smrg	    func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
4998775e7de9Smrg	    ;;
4999775e7de9Smrg	  esac
5000775e7de9Smrg	done
5001775e7de9Smrg	;;
5002775e7de9Smrg    prog)
5003775e7de9Smrg	compile_deplibs=
5004775e7de9Smrg	finalize_deplibs=
5005775e7de9Smrg	alldeplibs=no
5006775e7de9Smrg	newdlfiles=
5007775e7de9Smrg	newdlprefiles=
5008775e7de9Smrg	passes="conv scan dlopen dlpreopen link"
5009775e7de9Smrg	;;
5010775e7de9Smrg    *)  passes="conv"
5011775e7de9Smrg	;;
5012775e7de9Smrg    esac
5013775e7de9Smrg
5014775e7de9Smrg    for pass in $passes; do
5015775e7de9Smrg      # The preopen pass in lib mode reverses $deplibs; put it back here
5016775e7de9Smrg      # so that -L comes before libs that need it for instance...
5017775e7de9Smrg      if test "$linkmode,$pass" = "lib,link"; then
5018775e7de9Smrg	## FIXME: Find the place where the list is rebuilt in the wrong
5019775e7de9Smrg	##        order, and fix it there properly
5020775e7de9Smrg        tmp_deplibs=
5021775e7de9Smrg	for deplib in $deplibs; do
5022775e7de9Smrg	  tmp_deplibs="$deplib $tmp_deplibs"
5023775e7de9Smrg	done
5024775e7de9Smrg	deplibs="$tmp_deplibs"
5025775e7de9Smrg      fi
5026775e7de9Smrg
5027775e7de9Smrg      if test "$linkmode,$pass" = "lib,link" ||
5028775e7de9Smrg	 test "$linkmode,$pass" = "prog,scan"; then
5029775e7de9Smrg	libs="$deplibs"
5030775e7de9Smrg	deplibs=
5031775e7de9Smrg      fi
5032775e7de9Smrg      if test "$linkmode" = prog; then
5033775e7de9Smrg	case $pass in
5034775e7de9Smrg	dlopen) libs="$dlfiles" ;;
5035775e7de9Smrg	dlpreopen) libs="$dlprefiles" ;;
5036775e7de9Smrg	link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
5037775e7de9Smrg	esac
5038775e7de9Smrg      fi
5039775e7de9Smrg      if test "$linkmode,$pass" = "lib,dlpreopen"; then
5040775e7de9Smrg	# Collect and forward deplibs of preopened libtool libs
5041775e7de9Smrg	for lib in $dlprefiles; do
5042775e7de9Smrg	  # Ignore non-libtool-libs
5043775e7de9Smrg	  dependency_libs=
5044775e7de9Smrg	  case $lib in
5045775e7de9Smrg	  *.la)	func_source "$lib" ;;
5046775e7de9Smrg	  esac
5047775e7de9Smrg
5048775e7de9Smrg	  # Collect preopened libtool deplibs, except any this library
5049775e7de9Smrg	  # has declared as weak libs
5050775e7de9Smrg	  for deplib in $dependency_libs; do
5051775e7de9Smrg            deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"`
5052775e7de9Smrg	    case " $weak_libs " in
5053775e7de9Smrg	    *" $deplib_base "*) ;;
5054775e7de9Smrg	    *) deplibs="$deplibs $deplib" ;;
5055775e7de9Smrg	    esac
5056775e7de9Smrg	  done
5057775e7de9Smrg	done
5058775e7de9Smrg	libs="$dlprefiles"
5059775e7de9Smrg      fi
5060775e7de9Smrg      if test "$pass" = dlopen; then
5061775e7de9Smrg	# Collect dlpreopened libraries
5062775e7de9Smrg	save_deplibs="$deplibs"
5063775e7de9Smrg	deplibs=
5064775e7de9Smrg      fi
5065775e7de9Smrg
5066775e7de9Smrg      for deplib in $libs; do
5067775e7de9Smrg	lib=
5068775e7de9Smrg	found=no
5069775e7de9Smrg	case $deplib in
5070775e7de9Smrg	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
5071775e7de9Smrg	  if test "$linkmode,$pass" = "prog,link"; then
5072775e7de9Smrg	    compile_deplibs="$deplib $compile_deplibs"
5073775e7de9Smrg	    finalize_deplibs="$deplib $finalize_deplibs"
5074775e7de9Smrg	  else
5075775e7de9Smrg	    compiler_flags="$compiler_flags $deplib"
5076775e7de9Smrg	    if test "$linkmode" = lib ; then
5077775e7de9Smrg		case "$new_inherited_linker_flags " in
5078775e7de9Smrg		    *" $deplib "*) ;;
5079775e7de9Smrg		    * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
5080775e7de9Smrg		esac
5081775e7de9Smrg	    fi
5082775e7de9Smrg	  fi
5083775e7de9Smrg	  continue
5084775e7de9Smrg	  ;;
5085775e7de9Smrg	-l*)
5086775e7de9Smrg	  if test "$linkmode" != lib && test "$linkmode" != prog; then
5087775e7de9Smrg	    func_warning "\`-l' is ignored for archives/objects"
5088775e7de9Smrg	    continue
5089775e7de9Smrg	  fi
5090775e7de9Smrg	  func_stripname '-l' '' "$deplib"
5091775e7de9Smrg	  name=$func_stripname_result
5092775e7de9Smrg	  if test "$linkmode" = lib; then
5093775e7de9Smrg	    searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
5094775e7de9Smrg	  else
5095775e7de9Smrg	    searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
5096775e7de9Smrg	  fi
5097775e7de9Smrg	  for searchdir in $searchdirs; do
5098775e7de9Smrg	    for search_ext in .la $std_shrext .so .a; do
5099775e7de9Smrg	      # Search the libtool library
5100775e7de9Smrg	      lib="$searchdir/lib${name}${search_ext}"
5101775e7de9Smrg	      if test -f "$lib"; then
5102775e7de9Smrg		if test "$search_ext" = ".la"; then
5103775e7de9Smrg		  found=yes
5104775e7de9Smrg		else
5105775e7de9Smrg		  found=no
5106775e7de9Smrg		fi
5107775e7de9Smrg		break 2
5108775e7de9Smrg	      fi
5109775e7de9Smrg	    done
5110775e7de9Smrg	  done
5111775e7de9Smrg	  if test "$found" != yes; then
5112775e7de9Smrg	    # deplib doesn't seem to be a libtool library
5113775e7de9Smrg	    if test "$linkmode,$pass" = "prog,link"; then
5114775e7de9Smrg	      compile_deplibs="$deplib $compile_deplibs"
5115775e7de9Smrg	      finalize_deplibs="$deplib $finalize_deplibs"
5116775e7de9Smrg	    else
5117775e7de9Smrg	      deplibs="$deplib $deplibs"
5118775e7de9Smrg	      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
5119775e7de9Smrg	    fi
5120775e7de9Smrg	    continue
5121775e7de9Smrg	  else # deplib is a libtool library
5122775e7de9Smrg	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
5123775e7de9Smrg	    # We need to do some special things here, and not later.
5124775e7de9Smrg	    if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
5125775e7de9Smrg	      case " $predeps $postdeps " in
5126775e7de9Smrg	      *" $deplib "*)
5127775e7de9Smrg		if func_lalib_p "$lib"; then
5128775e7de9Smrg		  library_names=
5129775e7de9Smrg		  old_library=
5130775e7de9Smrg		  func_source "$lib"
5131775e7de9Smrg		  for l in $old_library $library_names; do
5132775e7de9Smrg		    ll="$l"
5133775e7de9Smrg		  done
5134775e7de9Smrg		  if test "X$ll" = "X$old_library" ; then # only static version available
5135775e7de9Smrg		    found=no
5136775e7de9Smrg		    func_dirname "$lib" "" "."
5137775e7de9Smrg		    ladir="$func_dirname_result"
5138775e7de9Smrg		    lib=$ladir/$old_library
5139775e7de9Smrg		    if test "$linkmode,$pass" = "prog,link"; then
5140775e7de9Smrg		      compile_deplibs="$deplib $compile_deplibs"
5141775e7de9Smrg		      finalize_deplibs="$deplib $finalize_deplibs"
5142775e7de9Smrg		    else
5143775e7de9Smrg		      deplibs="$deplib $deplibs"
5144775e7de9Smrg		      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
5145775e7de9Smrg		    fi
5146775e7de9Smrg		    continue
5147775e7de9Smrg		  fi
5148775e7de9Smrg		fi
5149775e7de9Smrg		;;
5150775e7de9Smrg	      *) ;;
5151775e7de9Smrg	      esac
5152775e7de9Smrg	    fi
5153775e7de9Smrg	  fi
5154775e7de9Smrg	  ;; # -l
5155775e7de9Smrg	*.ltframework)
5156775e7de9Smrg	  if test "$linkmode,$pass" = "prog,link"; then
5157775e7de9Smrg	    compile_deplibs="$deplib $compile_deplibs"
5158775e7de9Smrg	    finalize_deplibs="$deplib $finalize_deplibs"
5159775e7de9Smrg	  else
5160775e7de9Smrg	    deplibs="$deplib $deplibs"
5161775e7de9Smrg	    if test "$linkmode" = lib ; then
5162775e7de9Smrg		case "$new_inherited_linker_flags " in
5163775e7de9Smrg		    *" $deplib "*) ;;
5164775e7de9Smrg		    * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
5165775e7de9Smrg		esac
5166775e7de9Smrg	    fi
5167775e7de9Smrg	  fi
5168775e7de9Smrg	  continue
5169775e7de9Smrg	  ;;
5170775e7de9Smrg	-L*)
5171775e7de9Smrg	  case $linkmode in
5172775e7de9Smrg	  lib)
5173775e7de9Smrg	    deplibs="$deplib $deplibs"
5174775e7de9Smrg	    test "$pass" = conv && continue
5175775e7de9Smrg	    newdependency_libs="$deplib $newdependency_libs"
5176775e7de9Smrg	    func_stripname '-L' '' "$deplib"
5177775e7de9Smrg	    newlib_search_path="$newlib_search_path $func_stripname_result"
5178775e7de9Smrg	    ;;
5179775e7de9Smrg	  prog)
5180775e7de9Smrg	    if test "$pass" = conv; then
5181775e7de9Smrg	      deplibs="$deplib $deplibs"
5182775e7de9Smrg	      continue
5183775e7de9Smrg	    fi
5184775e7de9Smrg	    if test "$pass" = scan; then
5185775e7de9Smrg	      deplibs="$deplib $deplibs"
5186775e7de9Smrg	    else
5187775e7de9Smrg	      compile_deplibs="$deplib $compile_deplibs"
5188775e7de9Smrg	      finalize_deplibs="$deplib $finalize_deplibs"
5189775e7de9Smrg	    fi
5190775e7de9Smrg	    func_stripname '-L' '' "$deplib"
5191775e7de9Smrg	    newlib_search_path="$newlib_search_path $func_stripname_result"
5192775e7de9Smrg	    ;;
5193775e7de9Smrg	  *)
5194775e7de9Smrg	    func_warning "\`-L' is ignored for archives/objects"
5195775e7de9Smrg	    ;;
5196775e7de9Smrg	  esac # linkmode
5197775e7de9Smrg	  continue
5198775e7de9Smrg	  ;; # -L
5199775e7de9Smrg	-R*)
5200775e7de9Smrg	  if test "$pass" = link; then
5201775e7de9Smrg	    func_stripname '-R' '' "$deplib"
5202775e7de9Smrg	    dir=$func_stripname_result
5203775e7de9Smrg	    # Make sure the xrpath contains only unique directories.
5204775e7de9Smrg	    case "$xrpath " in
5205775e7de9Smrg	    *" $dir "*) ;;
5206775e7de9Smrg	    *) xrpath="$xrpath $dir" ;;
5207775e7de9Smrg	    esac
5208775e7de9Smrg	  fi
5209775e7de9Smrg	  deplibs="$deplib $deplibs"
5210775e7de9Smrg	  continue
5211775e7de9Smrg	  ;;
5212775e7de9Smrg	*.la) lib="$deplib" ;;
5213775e7de9Smrg	*.$libext)
5214775e7de9Smrg	  if test "$pass" = conv; then
5215775e7de9Smrg	    deplibs="$deplib $deplibs"
5216775e7de9Smrg	    continue
5217775e7de9Smrg	  fi
5218775e7de9Smrg	  case $linkmode in
5219775e7de9Smrg	  lib)
5220775e7de9Smrg	    # Linking convenience modules into shared libraries is allowed,
5221775e7de9Smrg	    # but linking other static libraries is non-portable.
5222775e7de9Smrg	    case " $dlpreconveniencelibs " in
5223775e7de9Smrg	    *" $deplib "*) ;;
5224775e7de9Smrg	    *)
5225775e7de9Smrg	      valid_a_lib=no
5226775e7de9Smrg	      case $deplibs_check_method in
5227775e7de9Smrg		match_pattern*)
5228775e7de9Smrg		  set dummy $deplibs_check_method; shift
5229775e7de9Smrg		  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
5230775e7de9Smrg		  if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \
5231775e7de9Smrg		    | $EGREP "$match_pattern_regex" > /dev/null; then
5232775e7de9Smrg		    valid_a_lib=yes
5233775e7de9Smrg		  fi
5234775e7de9Smrg		;;
5235775e7de9Smrg		pass_all)
5236775e7de9Smrg		  valid_a_lib=yes
5237775e7de9Smrg		;;
5238775e7de9Smrg	      esac
5239775e7de9Smrg	      if test "$valid_a_lib" != yes; then
5240775e7de9Smrg		$ECHO
5241775e7de9Smrg		$ECHO "*** Warning: Trying to link with static lib archive $deplib."
5242775e7de9Smrg		$ECHO "*** I have the capability to make that library automatically link in when"
5243775e7de9Smrg		$ECHO "*** you link to this library.  But I can only do this if you have a"
5244775e7de9Smrg		$ECHO "*** shared version of the library, which you do not appear to have"
5245775e7de9Smrg		$ECHO "*** because the file extensions .$libext of this argument makes me believe"
5246775e7de9Smrg		$ECHO "*** that it is just a static archive that I should not use here."
5247775e7de9Smrg	      else
5248775e7de9Smrg		$ECHO
5249775e7de9Smrg		$ECHO "*** Warning: Linking the shared library $output against the"
5250775e7de9Smrg		$ECHO "*** static library $deplib is not portable!"
5251775e7de9Smrg		deplibs="$deplib $deplibs"
5252775e7de9Smrg	      fi
5253775e7de9Smrg	      ;;
5254775e7de9Smrg	    esac
5255775e7de9Smrg	    continue
5256775e7de9Smrg	    ;;
5257775e7de9Smrg	  prog)
5258775e7de9Smrg	    if test "$pass" != link; then
5259775e7de9Smrg	      deplibs="$deplib $deplibs"
5260775e7de9Smrg	    else
5261775e7de9Smrg	      compile_deplibs="$deplib $compile_deplibs"
5262775e7de9Smrg	      finalize_deplibs="$deplib $finalize_deplibs"
5263775e7de9Smrg	    fi
5264775e7de9Smrg	    continue
5265775e7de9Smrg	    ;;
5266775e7de9Smrg	  esac # linkmode
5267775e7de9Smrg	  ;; # *.$libext
5268775e7de9Smrg	*.lo | *.$objext)
5269775e7de9Smrg	  if test "$pass" = conv; then
5270775e7de9Smrg	    deplibs="$deplib $deplibs"
5271775e7de9Smrg	  elif test "$linkmode" = prog; then
5272775e7de9Smrg	    if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
5273775e7de9Smrg	      # If there is no dlopen support or we're linking statically,
5274775e7de9Smrg	      # we need to preload.
5275775e7de9Smrg	      newdlprefiles="$newdlprefiles $deplib"
5276775e7de9Smrg	      compile_deplibs="$deplib $compile_deplibs"
5277775e7de9Smrg	      finalize_deplibs="$deplib $finalize_deplibs"
5278775e7de9Smrg	    else
5279775e7de9Smrg	      newdlfiles="$newdlfiles $deplib"
5280775e7de9Smrg	    fi
5281775e7de9Smrg	  fi
5282775e7de9Smrg	  continue
5283775e7de9Smrg	  ;;
5284775e7de9Smrg	%DEPLIBS%)
5285775e7de9Smrg	  alldeplibs=yes
5286775e7de9Smrg	  continue
5287775e7de9Smrg	  ;;
5288775e7de9Smrg	esac # case $deplib
5289775e7de9Smrg
5290775e7de9Smrg	if test "$found" = yes || test -f "$lib"; then :
5291775e7de9Smrg	else
5292775e7de9Smrg	  func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
5293775e7de9Smrg	fi
5294775e7de9Smrg
5295775e7de9Smrg	# Check to see that this really is a libtool archive.
5296775e7de9Smrg	func_lalib_unsafe_p "$lib" \
5297775e7de9Smrg	  || func_fatal_error "\`$lib' is not a valid libtool archive"
5298775e7de9Smrg
5299775e7de9Smrg	func_dirname "$lib" "" "."
5300775e7de9Smrg	ladir="$func_dirname_result"
5301775e7de9Smrg
5302775e7de9Smrg	dlname=
5303775e7de9Smrg	dlopen=
5304775e7de9Smrg	dlpreopen=
5305775e7de9Smrg	libdir=
5306775e7de9Smrg	library_names=
5307775e7de9Smrg	old_library=
5308775e7de9Smrg	inherited_linker_flags=
5309775e7de9Smrg	# If the library was installed with an old release of libtool,
5310775e7de9Smrg	# it will not redefine variables installed, or shouldnotlink
5311775e7de9Smrg	installed=yes
5312775e7de9Smrg	shouldnotlink=no
5313775e7de9Smrg	avoidtemprpath=
5314775e7de9Smrg
5315775e7de9Smrg
5316775e7de9Smrg	# Read the .la file
5317775e7de9Smrg	func_source "$lib"
5318775e7de9Smrg
5319775e7de9Smrg	# Convert "-framework foo" to "foo.ltframework"
5320775e7de9Smrg	if test -n "$inherited_linker_flags"; then
5321775e7de9Smrg	  tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'`
5322775e7de9Smrg	  for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
5323775e7de9Smrg	    case " $new_inherited_linker_flags " in
5324775e7de9Smrg	      *" $tmp_inherited_linker_flag "*) ;;
5325775e7de9Smrg	      *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";;
5326775e7de9Smrg	    esac
5327775e7de9Smrg	  done
5328775e7de9Smrg	fi
5329775e7de9Smrg	dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
5330775e7de9Smrg	if test "$linkmode,$pass" = "lib,link" ||
5331775e7de9Smrg	   test "$linkmode,$pass" = "prog,scan" ||
5332775e7de9Smrg	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then
5333775e7de9Smrg	  test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
5334775e7de9Smrg	  test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
5335775e7de9Smrg	fi
5336775e7de9Smrg
5337775e7de9Smrg	if test "$pass" = conv; then
5338775e7de9Smrg	  # Only check for convenience libraries
5339775e7de9Smrg	  deplibs="$lib $deplibs"
5340775e7de9Smrg	  if test -z "$libdir"; then
5341775e7de9Smrg	    if test -z "$old_library"; then
5342775e7de9Smrg	      func_fatal_error "cannot find name of link library for \`$lib'"
5343775e7de9Smrg	    fi
5344775e7de9Smrg	    # It is a libtool convenience library, so add in its objects.
5345775e7de9Smrg	    convenience="$convenience $ladir/$objdir/$old_library"
5346775e7de9Smrg	    old_convenience="$old_convenience $ladir/$objdir/$old_library"
5347775e7de9Smrg	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
5348775e7de9Smrg	    func_fatal_error "\`$lib' is not a convenience library"
5349775e7de9Smrg	  fi
5350775e7de9Smrg	  tmp_libs=
5351775e7de9Smrg	  for deplib in $dependency_libs; do
5352775e7de9Smrg	    deplibs="$deplib $deplibs"
5353775e7de9Smrg	    if $opt_duplicate_deps ; then
5354775e7de9Smrg	      case "$tmp_libs " in
5355775e7de9Smrg	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
5356775e7de9Smrg	      esac
5357775e7de9Smrg	    fi
5358775e7de9Smrg	    tmp_libs="$tmp_libs $deplib"
5359775e7de9Smrg	  done
5360775e7de9Smrg	  continue
5361775e7de9Smrg	fi # $pass = conv
5362775e7de9Smrg
5363775e7de9Smrg
5364775e7de9Smrg	# Get the name of the library we link against.
5365775e7de9Smrg	linklib=
5366775e7de9Smrg	for l in $old_library $library_names; do
5367775e7de9Smrg	  linklib="$l"
5368775e7de9Smrg	done
5369775e7de9Smrg	if test -z "$linklib"; then
5370775e7de9Smrg	  func_fatal_error "cannot find name of link library for \`$lib'"
5371775e7de9Smrg	fi
5372775e7de9Smrg
5373775e7de9Smrg	# This library was specified with -dlopen.
5374775e7de9Smrg	if test "$pass" = dlopen; then
5375775e7de9Smrg	  if test -z "$libdir"; then
5376775e7de9Smrg	    func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
5377775e7de9Smrg	  fi
5378775e7de9Smrg	  if test -z "$dlname" ||
5379775e7de9Smrg	     test "$dlopen_support" != yes ||
5380775e7de9Smrg	     test "$build_libtool_libs" = no; then
5381775e7de9Smrg	    # If there is no dlname, no dlopen support or we're linking
5382775e7de9Smrg	    # statically, we need to preload.  We also need to preload any
5383775e7de9Smrg	    # dependent libraries so libltdl's deplib preloader doesn't
5384775e7de9Smrg	    # bomb out in the load deplibs phase.
5385775e7de9Smrg	    dlprefiles="$dlprefiles $lib $dependency_libs"
5386775e7de9Smrg	  else
5387775e7de9Smrg	    newdlfiles="$newdlfiles $lib"
5388775e7de9Smrg	  fi
5389775e7de9Smrg	  continue
5390775e7de9Smrg	fi # $pass = dlopen
5391775e7de9Smrg
5392775e7de9Smrg	# We need an absolute path.
5393775e7de9Smrg	case $ladir in
5394775e7de9Smrg	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
5395775e7de9Smrg	*)
5396775e7de9Smrg	  abs_ladir=`cd "$ladir" && pwd`
5397775e7de9Smrg	  if test -z "$abs_ladir"; then
5398775e7de9Smrg	    func_warning "cannot determine absolute directory name of \`$ladir'"
5399775e7de9Smrg	    func_warning "passing it literally to the linker, although it might fail"
5400775e7de9Smrg	    abs_ladir="$ladir"
5401775e7de9Smrg	  fi
5402775e7de9Smrg	  ;;
5403775e7de9Smrg	esac
5404775e7de9Smrg	func_basename "$lib"
5405775e7de9Smrg	laname="$func_basename_result"
5406775e7de9Smrg
5407775e7de9Smrg	# Find the relevant object directory and library name.
5408775e7de9Smrg	if test "X$installed" = Xyes; then
5409775e7de9Smrg	  if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
5410775e7de9Smrg	    func_warning "library \`$lib' was moved."
5411775e7de9Smrg	    dir="$ladir"
5412775e7de9Smrg	    absdir="$abs_ladir"
5413775e7de9Smrg	    libdir="$abs_ladir"
5414775e7de9Smrg	  else
5415775e7de9Smrg	    dir="$libdir"
5416775e7de9Smrg	    absdir="$libdir"
5417775e7de9Smrg	  fi
5418775e7de9Smrg	  test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
5419775e7de9Smrg	else
5420775e7de9Smrg	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
5421775e7de9Smrg	    dir="$ladir"
5422775e7de9Smrg	    absdir="$abs_ladir"
5423775e7de9Smrg	    # Remove this search path later
5424775e7de9Smrg	    notinst_path="$notinst_path $abs_ladir"
5425775e7de9Smrg	  else
5426775e7de9Smrg	    dir="$ladir/$objdir"
5427775e7de9Smrg	    absdir="$abs_ladir/$objdir"
5428775e7de9Smrg	    # Remove this search path later
5429775e7de9Smrg	    notinst_path="$notinst_path $abs_ladir"
5430775e7de9Smrg	  fi
5431775e7de9Smrg	fi # $installed = yes
5432775e7de9Smrg	func_stripname 'lib' '.la' "$laname"
5433775e7de9Smrg	name=$func_stripname_result
5434775e7de9Smrg
5435775e7de9Smrg	# This library was specified with -dlpreopen.
5436775e7de9Smrg	if test "$pass" = dlpreopen; then
5437775e7de9Smrg	  if test -z "$libdir" && test "$linkmode" = prog; then
5438775e7de9Smrg	    func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
5439775e7de9Smrg	  fi
5440775e7de9Smrg	  # Prefer using a static library (so that no silly _DYNAMIC symbols
5441775e7de9Smrg	  # are required to link).
5442775e7de9Smrg	  if test -n "$old_library"; then
5443775e7de9Smrg	    newdlprefiles="$newdlprefiles $dir/$old_library"
5444775e7de9Smrg	    # Keep a list of preopened convenience libraries to check
5445775e7de9Smrg	    # that they are being used correctly in the link pass.
5446775e7de9Smrg	    test -z "$libdir" && \
5447775e7de9Smrg		dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library"
5448775e7de9Smrg	  # Otherwise, use the dlname, so that lt_dlopen finds it.
5449775e7de9Smrg	  elif test -n "$dlname"; then
5450775e7de9Smrg	    newdlprefiles="$newdlprefiles $dir/$dlname"
5451775e7de9Smrg	  else
5452775e7de9Smrg	    newdlprefiles="$newdlprefiles $dir/$linklib"
5453775e7de9Smrg	  fi
5454775e7de9Smrg	fi # $pass = dlpreopen
5455775e7de9Smrg
5456775e7de9Smrg	if test -z "$libdir"; then
5457775e7de9Smrg	  # Link the convenience library
5458775e7de9Smrg	  if test "$linkmode" = lib; then
5459775e7de9Smrg	    deplibs="$dir/$old_library $deplibs"
5460775e7de9Smrg	  elif test "$linkmode,$pass" = "prog,link"; then
5461775e7de9Smrg	    compile_deplibs="$dir/$old_library $compile_deplibs"
5462775e7de9Smrg	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
5463775e7de9Smrg	  else
5464775e7de9Smrg	    deplibs="$lib $deplibs" # used for prog,scan pass
5465775e7de9Smrg	  fi
5466775e7de9Smrg	  continue
5467775e7de9Smrg	fi
5468775e7de9Smrg
5469775e7de9Smrg
5470775e7de9Smrg	if test "$linkmode" = prog && test "$pass" != link; then
5471775e7de9Smrg	  newlib_search_path="$newlib_search_path $ladir"
5472775e7de9Smrg	  deplibs="$lib $deplibs"
5473775e7de9Smrg
5474775e7de9Smrg	  linkalldeplibs=no
5475775e7de9Smrg	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
5476775e7de9Smrg	     test "$build_libtool_libs" = no; then
5477775e7de9Smrg	    linkalldeplibs=yes
5478775e7de9Smrg	  fi
5479775e7de9Smrg
5480775e7de9Smrg	  tmp_libs=
5481775e7de9Smrg	  for deplib in $dependency_libs; do
5482775e7de9Smrg	    case $deplib in
5483775e7de9Smrg	    -L*) func_stripname '-L' '' "$deplib"
5484775e7de9Smrg	         newlib_search_path="$newlib_search_path $func_stripname_result"
5485775e7de9Smrg		 ;;
5486775e7de9Smrg	    esac
5487775e7de9Smrg	    # Need to link against all dependency_libs?
5488775e7de9Smrg	    if test "$linkalldeplibs" = yes; then
5489775e7de9Smrg	      deplibs="$deplib $deplibs"
5490775e7de9Smrg	    else
5491775e7de9Smrg	      # Need to hardcode shared library paths
5492775e7de9Smrg	      # or/and link against static libraries
5493775e7de9Smrg	      newdependency_libs="$deplib $newdependency_libs"
5494775e7de9Smrg	    fi
5495775e7de9Smrg	    if $opt_duplicate_deps ; then
5496775e7de9Smrg	      case "$tmp_libs " in
5497775e7de9Smrg	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
5498775e7de9Smrg	      esac
5499775e7de9Smrg	    fi
5500775e7de9Smrg	    tmp_libs="$tmp_libs $deplib"
5501775e7de9Smrg	  done # for deplib
5502775e7de9Smrg	  continue
5503775e7de9Smrg	fi # $linkmode = prog...
5504775e7de9Smrg
5505775e7de9Smrg	if test "$linkmode,$pass" = "prog,link"; then
5506775e7de9Smrg	  if test -n "$library_names" &&
5507775e7de9Smrg	     { { test "$prefer_static_libs" = no ||
5508775e7de9Smrg	         test "$prefer_static_libs,$installed" = "built,yes"; } ||
5509775e7de9Smrg	       test -z "$old_library"; }; then
5510775e7de9Smrg	    # We need to hardcode the library path
5511775e7de9Smrg	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
5512775e7de9Smrg	      # Make sure the rpath contains only unique directories.
5513775e7de9Smrg	      case "$temp_rpath:" in
5514775e7de9Smrg	      *"$absdir:"*) ;;
5515775e7de9Smrg	      *) temp_rpath="$temp_rpath$absdir:" ;;
5516775e7de9Smrg	      esac
5517775e7de9Smrg	    fi
5518775e7de9Smrg
5519775e7de9Smrg	    # Hardcode the library path.
5520775e7de9Smrg	    # Skip directories that are in the system default run-time
5521775e7de9Smrg	    # search path.
5522775e7de9Smrg	    case " $sys_lib_dlsearch_path " in
5523775e7de9Smrg	    *" $absdir "*) ;;
5524775e7de9Smrg	    *)
5525775e7de9Smrg	      case "$compile_rpath " in
5526775e7de9Smrg	      *" $absdir "*) ;;
5527775e7de9Smrg	      *) compile_rpath="$compile_rpath $absdir"
5528775e7de9Smrg	      esac
5529775e7de9Smrg	      ;;
5530775e7de9Smrg	    esac
5531775e7de9Smrg	    case " $sys_lib_dlsearch_path " in
5532775e7de9Smrg	    *" $libdir "*) ;;
5533775e7de9Smrg	    *)
5534775e7de9Smrg	      case "$finalize_rpath " in
5535775e7de9Smrg	      *" $libdir "*) ;;
5536775e7de9Smrg	      *) finalize_rpath="$finalize_rpath $libdir"
5537775e7de9Smrg	      esac
5538775e7de9Smrg	      ;;
5539775e7de9Smrg	    esac
5540775e7de9Smrg	  fi # $linkmode,$pass = prog,link...
5541775e7de9Smrg
5542775e7de9Smrg	  if test "$alldeplibs" = yes &&
5543775e7de9Smrg	     { test "$deplibs_check_method" = pass_all ||
5544775e7de9Smrg	       { test "$build_libtool_libs" = yes &&
5545775e7de9Smrg		 test -n "$library_names"; }; }; then
5546775e7de9Smrg	    # We only need to search for static libraries
5547775e7de9Smrg	    continue
5548775e7de9Smrg	  fi
5549775e7de9Smrg	fi
5550775e7de9Smrg
5551775e7de9Smrg	link_static=no # Whether the deplib will be linked statically
5552775e7de9Smrg	use_static_libs=$prefer_static_libs
5553775e7de9Smrg	if test "$use_static_libs" = built && test "$installed" = yes; then
5554775e7de9Smrg	  use_static_libs=no
5555775e7de9Smrg	fi
5556775e7de9Smrg	if test -n "$library_names" &&
5557775e7de9Smrg	   { test "$use_static_libs" = no || test -z "$old_library"; }; then
5558775e7de9Smrg	  case $host in
5559775e7de9Smrg	  *cygwin* | *mingw* | *cegcc*)
5560775e7de9Smrg	      # No point in relinking DLLs because paths are not encoded
5561775e7de9Smrg	      notinst_deplibs="$notinst_deplibs $lib"
5562775e7de9Smrg	      need_relink=no
5563775e7de9Smrg	    ;;
5564775e7de9Smrg	  *)
5565775e7de9Smrg	    if test "$installed" = no; then
5566775e7de9Smrg	      notinst_deplibs="$notinst_deplibs $lib"
5567775e7de9Smrg	      need_relink=yes
5568775e7de9Smrg	    fi
5569775e7de9Smrg	    ;;
5570775e7de9Smrg	  esac
5571775e7de9Smrg	  # This is a shared library
5572775e7de9Smrg
5573775e7de9Smrg	  # Warn about portability, can't link against -module's on some
5574775e7de9Smrg	  # systems (darwin).  Don't bleat about dlopened modules though!
5575775e7de9Smrg	  dlopenmodule=""
5576775e7de9Smrg	  for dlpremoduletest in $dlprefiles; do
5577775e7de9Smrg	    if test "X$dlpremoduletest" = "X$lib"; then
5578775e7de9Smrg	      dlopenmodule="$dlpremoduletest"
5579775e7de9Smrg	      break
5580775e7de9Smrg	    fi
5581775e7de9Smrg	  done
5582775e7de9Smrg	  if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
5583775e7de9Smrg	    $ECHO
5584775e7de9Smrg	    if test "$linkmode" = prog; then
5585775e7de9Smrg	      $ECHO "*** Warning: Linking the executable $output against the loadable module"
5586775e7de9Smrg	    else
5587775e7de9Smrg	      $ECHO "*** Warning: Linking the shared library $output against the loadable module"
5588775e7de9Smrg	    fi
5589775e7de9Smrg	    $ECHO "*** $linklib is not portable!"
5590775e7de9Smrg	  fi
5591775e7de9Smrg	  if test "$linkmode" = lib &&
5592775e7de9Smrg	     test "$hardcode_into_libs" = yes; then
5593775e7de9Smrg	    # Hardcode the library path.
5594775e7de9Smrg	    # Skip directories that are in the system default run-time
5595775e7de9Smrg	    # search path.
5596775e7de9Smrg	    case " $sys_lib_dlsearch_path " in
5597775e7de9Smrg	    *" $absdir "*) ;;
5598775e7de9Smrg	    *)
5599775e7de9Smrg	      case "$compile_rpath " in
5600775e7de9Smrg	      *" $absdir "*) ;;
5601775e7de9Smrg	      *) compile_rpath="$compile_rpath $absdir"
5602775e7de9Smrg	      esac
5603775e7de9Smrg	      ;;
5604775e7de9Smrg	    esac
5605775e7de9Smrg	    case " $sys_lib_dlsearch_path " in
5606775e7de9Smrg	    *" $libdir "*) ;;
5607775e7de9Smrg	    *)
5608775e7de9Smrg	      case "$finalize_rpath " in
5609775e7de9Smrg	      *" $libdir "*) ;;
5610775e7de9Smrg	      *) finalize_rpath="$finalize_rpath $libdir"
5611775e7de9Smrg	      esac
5612775e7de9Smrg	      ;;
5613775e7de9Smrg	    esac
5614775e7de9Smrg	  fi
5615775e7de9Smrg
5616775e7de9Smrg	  if test -n "$old_archive_from_expsyms_cmds"; then
5617775e7de9Smrg	    # figure out the soname
5618775e7de9Smrg	    set dummy $library_names
5619775e7de9Smrg	    shift
5620775e7de9Smrg	    realname="$1"
5621775e7de9Smrg	    shift
5622775e7de9Smrg	    libname=`eval "\\$ECHO \"$libname_spec\""`
5623775e7de9Smrg	    # use dlname if we got it. it's perfectly good, no?
5624775e7de9Smrg	    if test -n "$dlname"; then
5625775e7de9Smrg	      soname="$dlname"
5626775e7de9Smrg	    elif test -n "$soname_spec"; then
5627775e7de9Smrg	      # bleh windows
5628775e7de9Smrg	      case $host in
5629775e7de9Smrg	      *cygwin* | mingw* | *cegcc*)
5630775e7de9Smrg	        func_arith $current - $age
5631775e7de9Smrg		major=$func_arith_result
5632775e7de9Smrg		versuffix="-$major"
5633775e7de9Smrg		;;
5634775e7de9Smrg	      esac
5635775e7de9Smrg	      eval soname=\"$soname_spec\"
5636775e7de9Smrg	    else
5637775e7de9Smrg	      soname="$realname"
5638775e7de9Smrg	    fi
5639775e7de9Smrg
5640775e7de9Smrg	    # Make a new name for the extract_expsyms_cmds to use
5641775e7de9Smrg	    soroot="$soname"
5642775e7de9Smrg	    func_basename "$soroot"
5643775e7de9Smrg	    soname="$func_basename_result"
5644775e7de9Smrg	    func_stripname 'lib' '.dll' "$soname"
5645775e7de9Smrg	    newlib=libimp-$func_stripname_result.a
5646775e7de9Smrg
5647775e7de9Smrg	    # If the library has no export list, then create one now
5648775e7de9Smrg	    if test -f "$output_objdir/$soname-def"; then :
5649775e7de9Smrg	    else
5650775e7de9Smrg	      func_verbose "extracting exported symbol list from \`$soname'"
5651775e7de9Smrg	      func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
5652775e7de9Smrg	    fi
5653775e7de9Smrg
5654775e7de9Smrg	    # Create $newlib
5655775e7de9Smrg	    if test -f "$output_objdir/$newlib"; then :; else
5656775e7de9Smrg	      func_verbose "generating import library for \`$soname'"
5657775e7de9Smrg	      func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
5658775e7de9Smrg	    fi
5659775e7de9Smrg	    # make sure the library variables are pointing to the new library
5660775e7de9Smrg	    dir=$output_objdir
5661775e7de9Smrg	    linklib=$newlib
5662775e7de9Smrg	  fi # test -n "$old_archive_from_expsyms_cmds"
5663775e7de9Smrg
5664775e7de9Smrg	  if test "$linkmode" = prog || test "$mode" != relink; then
5665775e7de9Smrg	    add_shlibpath=
5666775e7de9Smrg	    add_dir=
5667775e7de9Smrg	    add=
5668775e7de9Smrg	    lib_linked=yes
5669775e7de9Smrg	    case $hardcode_action in
5670775e7de9Smrg	    immediate | unsupported)
5671775e7de9Smrg	      if test "$hardcode_direct" = no; then
5672775e7de9Smrg		add="$dir/$linklib"
5673775e7de9Smrg		case $host in
5674775e7de9Smrg		  *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
5675775e7de9Smrg		  *-*-sysv4*uw2*) add_dir="-L$dir" ;;
5676775e7de9Smrg		  *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
5677775e7de9Smrg		    *-*-unixware7*) add_dir="-L$dir" ;;
5678775e7de9Smrg		  *-*-darwin* )
5679775e7de9Smrg		    # if the lib is a (non-dlopened) module then we can not
5680775e7de9Smrg		    # link against it, someone is ignoring the earlier warnings
5681775e7de9Smrg		    if /usr/bin/file -L $add 2> /dev/null |
5682775e7de9Smrg			 $GREP ": [^:]* bundle" >/dev/null ; then
5683775e7de9Smrg		      if test "X$dlopenmodule" != "X$lib"; then
5684775e7de9Smrg			$ECHO "*** Warning: lib $linklib is a module, not a shared library"
5685775e7de9Smrg			if test -z "$old_library" ; then
5686775e7de9Smrg			  $ECHO
5687775e7de9Smrg			  $ECHO "*** And there doesn't seem to be a static archive available"
5688775e7de9Smrg			  $ECHO "*** The link will probably fail, sorry"
5689775e7de9Smrg			else
5690775e7de9Smrg			  add="$dir/$old_library"
5691775e7de9Smrg			fi
5692775e7de9Smrg		      elif test -n "$old_library"; then
5693775e7de9Smrg			add="$dir/$old_library"
5694775e7de9Smrg		      fi
5695775e7de9Smrg		    fi
5696775e7de9Smrg		esac
5697775e7de9Smrg	      elif test "$hardcode_minus_L" = no; then
5698775e7de9Smrg		case $host in
5699775e7de9Smrg		*-*-sunos*) add_shlibpath="$dir" ;;
5700775e7de9Smrg		esac
5701775e7de9Smrg		add_dir="-L$dir"
5702775e7de9Smrg		add="-l$name"
5703775e7de9Smrg	      elif test "$hardcode_shlibpath_var" = no; then
5704775e7de9Smrg		add_shlibpath="$dir"
5705775e7de9Smrg		add="-l$name"
5706775e7de9Smrg	      else
5707775e7de9Smrg		lib_linked=no
5708775e7de9Smrg	      fi
5709775e7de9Smrg	      ;;
5710775e7de9Smrg	    relink)
5711775e7de9Smrg	      if test "$hardcode_direct" = yes &&
5712775e7de9Smrg	         test "$hardcode_direct_absolute" = no; then
5713775e7de9Smrg		add="$dir/$linklib"
5714775e7de9Smrg	      elif test "$hardcode_minus_L" = yes; then
5715775e7de9Smrg		add_dir="-L$dir"
5716775e7de9Smrg		# Try looking first in the location we're being installed to.
5717775e7de9Smrg		if test -n "$inst_prefix_dir"; then
5718775e7de9Smrg		  case $libdir in
5719775e7de9Smrg		    [\\/]*)
5720775e7de9Smrg		      add_dir="$add_dir -L$inst_prefix_dir$libdir"
5721775e7de9Smrg		      ;;
5722775e7de9Smrg		  esac
5723775e7de9Smrg		fi
5724775e7de9Smrg		add="-l$name"
5725775e7de9Smrg	      elif test "$hardcode_shlibpath_var" = yes; then
5726775e7de9Smrg		add_shlibpath="$dir"
5727775e7de9Smrg		add="-l$name"
5728775e7de9Smrg	      else
5729775e7de9Smrg		lib_linked=no
5730775e7de9Smrg	      fi
5731775e7de9Smrg	      ;;
5732775e7de9Smrg	    *) lib_linked=no ;;
5733775e7de9Smrg	    esac
5734775e7de9Smrg
5735775e7de9Smrg	    if test "$lib_linked" != yes; then
5736775e7de9Smrg	      func_fatal_configuration "unsupported hardcode properties"
5737775e7de9Smrg	    fi
5738775e7de9Smrg
5739775e7de9Smrg	    if test -n "$add_shlibpath"; then
5740775e7de9Smrg	      case :$compile_shlibpath: in
5741775e7de9Smrg	      *":$add_shlibpath:"*) ;;
5742775e7de9Smrg	      *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
5743775e7de9Smrg	      esac
5744775e7de9Smrg	    fi
5745775e7de9Smrg	    if test "$linkmode" = prog; then
5746775e7de9Smrg	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
5747775e7de9Smrg	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
5748775e7de9Smrg	    else
5749775e7de9Smrg	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
5750775e7de9Smrg	      test -n "$add" && deplibs="$add $deplibs"
5751775e7de9Smrg	      if test "$hardcode_direct" != yes &&
5752775e7de9Smrg		 test "$hardcode_minus_L" != yes &&
5753775e7de9Smrg		 test "$hardcode_shlibpath_var" = yes; then
5754775e7de9Smrg		case :$finalize_shlibpath: in
5755775e7de9Smrg		*":$libdir:"*) ;;
5756775e7de9Smrg		*) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
5757775e7de9Smrg		esac
5758775e7de9Smrg	      fi
5759775e7de9Smrg	    fi
5760775e7de9Smrg	  fi
5761775e7de9Smrg
5762775e7de9Smrg	  if test "$linkmode" = prog || test "$mode" = relink; then
5763775e7de9Smrg	    add_shlibpath=
5764775e7de9Smrg	    add_dir=
5765775e7de9Smrg	    add=
5766775e7de9Smrg	    # Finalize command for both is simple: just hardcode it.
5767775e7de9Smrg	    if test "$hardcode_direct" = yes &&
5768775e7de9Smrg	       test "$hardcode_direct_absolute" = no; then
5769775e7de9Smrg	      add="$libdir/$linklib"
5770775e7de9Smrg	    elif test "$hardcode_minus_L" = yes; then
5771775e7de9Smrg	      add_dir="-L$libdir"
5772775e7de9Smrg	      add="-l$name"
5773775e7de9Smrg	    elif test "$hardcode_shlibpath_var" = yes; then
5774775e7de9Smrg	      case :$finalize_shlibpath: in
5775775e7de9Smrg	      *":$libdir:"*) ;;
5776775e7de9Smrg	      *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
5777775e7de9Smrg	      esac
5778775e7de9Smrg	      add="-l$name"
5779775e7de9Smrg	    elif test "$hardcode_automatic" = yes; then
5780775e7de9Smrg	      if test -n "$inst_prefix_dir" &&
5781775e7de9Smrg		 test -f "$inst_prefix_dir$libdir/$linklib" ; then
5782775e7de9Smrg		add="$inst_prefix_dir$libdir/$linklib"
5783775e7de9Smrg	      else
5784775e7de9Smrg		add="$libdir/$linklib"
5785775e7de9Smrg	      fi
5786775e7de9Smrg	    else
5787775e7de9Smrg	      # We cannot seem to hardcode it, guess we'll fake it.
5788775e7de9Smrg	      add_dir="-L$libdir"
5789775e7de9Smrg	      # Try looking first in the location we're being installed to.
5790775e7de9Smrg	      if test -n "$inst_prefix_dir"; then
5791775e7de9Smrg		case $libdir in
5792775e7de9Smrg		  [\\/]*)
5793775e7de9Smrg		    add_dir="$add_dir -L$inst_prefix_dir$libdir"
5794775e7de9Smrg		    ;;
5795775e7de9Smrg		esac
5796775e7de9Smrg	      fi
5797775e7de9Smrg	      add="-l$name"
5798775e7de9Smrg	    fi
5799775e7de9Smrg
5800775e7de9Smrg	    if test "$linkmode" = prog; then
5801775e7de9Smrg	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
5802775e7de9Smrg	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
5803775e7de9Smrg	    else
5804775e7de9Smrg	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
5805775e7de9Smrg	      test -n "$add" && deplibs="$add $deplibs"
5806775e7de9Smrg	    fi
5807775e7de9Smrg	  fi
5808775e7de9Smrg	elif test "$linkmode" = prog; then
5809775e7de9Smrg	  # Here we assume that one of hardcode_direct or hardcode_minus_L
5810775e7de9Smrg	  # is not unsupported.  This is valid on all known static and
5811775e7de9Smrg	  # shared platforms.
5812775e7de9Smrg	  if test "$hardcode_direct" != unsupported; then
5813775e7de9Smrg	    test -n "$old_library" && linklib="$old_library"
5814775e7de9Smrg	    compile_deplibs="$dir/$linklib $compile_deplibs"
5815775e7de9Smrg	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
5816775e7de9Smrg	  else
5817775e7de9Smrg	    compile_deplibs="-l$name -L$dir $compile_deplibs"
5818775e7de9Smrg	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
5819775e7de9Smrg	  fi
5820775e7de9Smrg	elif test "$build_libtool_libs" = yes; then
5821775e7de9Smrg	  # Not a shared library
5822775e7de9Smrg	  if test "$deplibs_check_method" != pass_all; then
5823775e7de9Smrg	    # We're trying link a shared library against a static one
5824775e7de9Smrg	    # but the system doesn't support it.
5825775e7de9Smrg
5826775e7de9Smrg	    # Just print a warning and add the library to dependency_libs so
5827775e7de9Smrg	    # that the program can be linked against the static library.
5828775e7de9Smrg	    $ECHO
5829775e7de9Smrg	    $ECHO "*** Warning: This system can not link to static lib archive $lib."
5830775e7de9Smrg	    $ECHO "*** I have the capability to make that library automatically link in when"
5831775e7de9Smrg	    $ECHO "*** you link to this library.  But I can only do this if you have a"
5832775e7de9Smrg	    $ECHO "*** shared version of the library, which you do not appear to have."
5833775e7de9Smrg	    if test "$module" = yes; then
5834775e7de9Smrg	      $ECHO "*** But as you try to build a module library, libtool will still create "
5835775e7de9Smrg	      $ECHO "*** a static module, that should work as long as the dlopening application"
5836775e7de9Smrg	      $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime."
5837775e7de9Smrg	      if test -z "$global_symbol_pipe"; then
5838775e7de9Smrg		$ECHO
5839775e7de9Smrg		$ECHO "*** However, this would only work if libtool was able to extract symbol"
5840775e7de9Smrg		$ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
5841775e7de9Smrg		$ECHO "*** not find such a program.  So, this module is probably useless."
5842775e7de9Smrg		$ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
5843775e7de9Smrg	      fi
5844775e7de9Smrg	      if test "$build_old_libs" = no; then
5845775e7de9Smrg		build_libtool_libs=module
5846775e7de9Smrg		build_old_libs=yes
5847775e7de9Smrg	      else
5848775e7de9Smrg		build_libtool_libs=no
5849775e7de9Smrg	      fi
5850775e7de9Smrg	    fi
5851775e7de9Smrg	  else
5852775e7de9Smrg	    deplibs="$dir/$old_library $deplibs"
5853775e7de9Smrg	    link_static=yes
5854775e7de9Smrg	  fi
5855775e7de9Smrg	fi # link shared/static library?
5856775e7de9Smrg
5857775e7de9Smrg	if test "$linkmode" = lib; then
5858775e7de9Smrg	  if test -n "$dependency_libs" &&
5859775e7de9Smrg	     { test "$hardcode_into_libs" != yes ||
5860775e7de9Smrg	       test "$build_old_libs" = yes ||
5861775e7de9Smrg	       test "$link_static" = yes; }; then
5862775e7de9Smrg	    # Extract -R from dependency_libs
5863775e7de9Smrg	    temp_deplibs=
5864775e7de9Smrg	    for libdir in $dependency_libs; do
5865775e7de9Smrg	      case $libdir in
5866775e7de9Smrg	      -R*) func_stripname '-R' '' "$libdir"
5867775e7de9Smrg	           temp_xrpath=$func_stripname_result
5868775e7de9Smrg		   case " $xrpath " in
5869775e7de9Smrg		   *" $temp_xrpath "*) ;;
5870775e7de9Smrg		   *) xrpath="$xrpath $temp_xrpath";;
5871775e7de9Smrg		   esac;;
5872775e7de9Smrg	      *) temp_deplibs="$temp_deplibs $libdir";;
5873775e7de9Smrg	      esac
5874775e7de9Smrg	    done
5875775e7de9Smrg	    dependency_libs="$temp_deplibs"
5876775e7de9Smrg	  fi
5877775e7de9Smrg
5878775e7de9Smrg	  newlib_search_path="$newlib_search_path $absdir"
5879775e7de9Smrg	  # Link against this library
5880775e7de9Smrg	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
5881775e7de9Smrg	  # ... and its dependency_libs
5882775e7de9Smrg	  tmp_libs=
5883775e7de9Smrg	  for deplib in $dependency_libs; do
5884775e7de9Smrg	    newdependency_libs="$deplib $newdependency_libs"
5885775e7de9Smrg	    if $opt_duplicate_deps ; then
5886775e7de9Smrg	      case "$tmp_libs " in
5887775e7de9Smrg	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
5888775e7de9Smrg	      esac
5889775e7de9Smrg	    fi
5890775e7de9Smrg	    tmp_libs="$tmp_libs $deplib"
5891775e7de9Smrg	  done
5892775e7de9Smrg
5893775e7de9Smrg	  if test "$link_all_deplibs" != no; then
5894775e7de9Smrg	    # Add the search paths of all dependency libraries
5895775e7de9Smrg	    for deplib in $dependency_libs; do
5896775e7de9Smrg	      case $deplib in
5897775e7de9Smrg	      -L*) path="$deplib" ;;
5898775e7de9Smrg	      *.la)
5899775e7de9Smrg	        func_dirname "$deplib" "" "."
5900775e7de9Smrg		dir="$func_dirname_result"
5901775e7de9Smrg		# We need an absolute path.
5902775e7de9Smrg		case $dir in
5903775e7de9Smrg		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
5904775e7de9Smrg		*)
5905775e7de9Smrg		  absdir=`cd "$dir" && pwd`
5906775e7de9Smrg		  if test -z "$absdir"; then
5907775e7de9Smrg		    func_warning "cannot determine absolute directory name of \`$dir'"
5908775e7de9Smrg		    absdir="$dir"
5909775e7de9Smrg		  fi
5910775e7de9Smrg		  ;;
5911775e7de9Smrg		esac
5912775e7de9Smrg		if $GREP "^installed=no" $deplib > /dev/null; then
5913775e7de9Smrg		case $host in
5914775e7de9Smrg		*-*-darwin*)
5915775e7de9Smrg		  depdepl=
5916775e7de9Smrg		  eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
5917775e7de9Smrg		  if test -n "$deplibrary_names" ; then
5918775e7de9Smrg		    for tmp in $deplibrary_names ; do
5919775e7de9Smrg		      depdepl=$tmp
5920775e7de9Smrg		    done
5921775e7de9Smrg		    if test -f "$absdir/$objdir/$depdepl" ; then
5922775e7de9Smrg		      depdepl="$absdir/$objdir/$depdepl"
5923775e7de9Smrg		      darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
5924775e7de9Smrg                      if test -z "$darwin_install_name"; then
5925775e7de9Smrg                          darwin_install_name=`${OTOOL64} -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
5926775e7de9Smrg                      fi
5927775e7de9Smrg		      compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
5928775e7de9Smrg		      linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}"
5929775e7de9Smrg		      path=
5930775e7de9Smrg		    fi
5931775e7de9Smrg		  fi
5932775e7de9Smrg		  ;;
5933775e7de9Smrg		*)
5934775e7de9Smrg		  path="-L$absdir/$objdir"
5935775e7de9Smrg		  ;;
5936775e7de9Smrg		esac
5937775e7de9Smrg		else
5938775e7de9Smrg		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
5939775e7de9Smrg		  test -z "$libdir" && \
5940775e7de9Smrg		    func_fatal_error "\`$deplib' is not a valid libtool archive"
5941775e7de9Smrg		  test "$absdir" != "$libdir" && \
5942775e7de9Smrg		    func_warning "\`$deplib' seems to be moved"
5943775e7de9Smrg
5944775e7de9Smrg		  path="-L$absdir"
5945775e7de9Smrg		fi
5946775e7de9Smrg		;;
5947775e7de9Smrg	      esac
5948775e7de9Smrg	      case " $deplibs " in
5949775e7de9Smrg	      *" $path "*) ;;
5950775e7de9Smrg	      *) deplibs="$path $deplibs" ;;
5951775e7de9Smrg	      esac
5952775e7de9Smrg	    done
5953775e7de9Smrg	  fi # link_all_deplibs != no
5954775e7de9Smrg	fi # linkmode = lib
5955775e7de9Smrg      done # for deplib in $libs
5956775e7de9Smrg      if test "$pass" = link; then
5957775e7de9Smrg	if test "$linkmode" = "prog"; then
5958775e7de9Smrg	  compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
5959775e7de9Smrg	  finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
5960775e7de9Smrg	else
5961775e7de9Smrg	  compiler_flags="$compiler_flags "`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
5962775e7de9Smrg	fi
5963775e7de9Smrg      fi
5964775e7de9Smrg      dependency_libs="$newdependency_libs"
5965775e7de9Smrg      if test "$pass" = dlpreopen; then
5966775e7de9Smrg	# Link the dlpreopened libraries before other libraries
5967775e7de9Smrg	for deplib in $save_deplibs; do
5968775e7de9Smrg	  deplibs="$deplib $deplibs"
5969775e7de9Smrg	done
5970775e7de9Smrg      fi
5971775e7de9Smrg      if test "$pass" != dlopen; then
5972775e7de9Smrg	if test "$pass" != conv; then
5973775e7de9Smrg	  # Make sure lib_search_path contains only unique directories.
5974775e7de9Smrg	  lib_search_path=
5975775e7de9Smrg	  for dir in $newlib_search_path; do
5976775e7de9Smrg	    case "$lib_search_path " in
5977775e7de9Smrg	    *" $dir "*) ;;
5978775e7de9Smrg	    *) lib_search_path="$lib_search_path $dir" ;;
5979775e7de9Smrg	    esac
5980775e7de9Smrg	  done
5981775e7de9Smrg	  newlib_search_path=
5982775e7de9Smrg	fi
5983775e7de9Smrg
5984775e7de9Smrg	if test "$linkmode,$pass" != "prog,link"; then
5985775e7de9Smrg	  vars="deplibs"
5986775e7de9Smrg	else
5987775e7de9Smrg	  vars="compile_deplibs finalize_deplibs"
5988775e7de9Smrg	fi
5989775e7de9Smrg	for var in $vars dependency_libs; do
5990775e7de9Smrg	  # Add libraries to $var in reverse order
5991775e7de9Smrg	  eval tmp_libs=\"\$$var\"
5992775e7de9Smrg	  new_libs=
5993775e7de9Smrg	  for deplib in $tmp_libs; do
5994775e7de9Smrg	    # FIXME: Pedantically, this is the right thing to do, so
5995775e7de9Smrg	    #        that some nasty dependency loop isn't accidentally
5996775e7de9Smrg	    #        broken:
5997775e7de9Smrg	    #new_libs="$deplib $new_libs"
5998775e7de9Smrg	    # Pragmatically, this seems to cause very few problems in
5999775e7de9Smrg	    # practice:
6000775e7de9Smrg	    case $deplib in
6001775e7de9Smrg	    -L*) new_libs="$deplib $new_libs" ;;
6002775e7de9Smrg	    -R*) ;;
6003775e7de9Smrg	    *)
6004775e7de9Smrg	      # And here is the reason: when a library appears more
6005775e7de9Smrg	      # than once as an explicit dependence of a library, or
6006775e7de9Smrg	      # is implicitly linked in more than once by the
6007775e7de9Smrg	      # compiler, it is considered special, and multiple
6008775e7de9Smrg	      # occurrences thereof are not removed.  Compare this
6009775e7de9Smrg	      # with having the same library being listed as a
6010775e7de9Smrg	      # dependency of multiple other libraries: in this case,
6011775e7de9Smrg	      # we know (pedantically, we assume) the library does not
6012775e7de9Smrg	      # need to be listed more than once, so we keep only the
6013775e7de9Smrg	      # last copy.  This is not always right, but it is rare
6014775e7de9Smrg	      # enough that we require users that really mean to play
6015775e7de9Smrg	      # such unportable linking tricks to link the library
6016775e7de9Smrg	      # using -Wl,-lname, so that libtool does not consider it
6017775e7de9Smrg	      # for duplicate removal.
6018775e7de9Smrg	      case " $specialdeplibs " in
6019775e7de9Smrg	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
6020775e7de9Smrg	      *)
6021775e7de9Smrg		case " $new_libs " in
6022775e7de9Smrg		*" $deplib "*) ;;
6023775e7de9Smrg		*) new_libs="$deplib $new_libs" ;;
6024775e7de9Smrg		esac
6025775e7de9Smrg		;;
6026775e7de9Smrg	      esac
6027775e7de9Smrg	      ;;
6028775e7de9Smrg	    esac
6029775e7de9Smrg	  done
6030775e7de9Smrg	  tmp_libs=
6031775e7de9Smrg	  for deplib in $new_libs; do
6032775e7de9Smrg	    case $deplib in
6033775e7de9Smrg	    -L*)
6034775e7de9Smrg	      case " $tmp_libs " in
6035775e7de9Smrg	      *" $deplib "*) ;;
6036775e7de9Smrg	      *) tmp_libs="$tmp_libs $deplib" ;;
6037775e7de9Smrg	      esac
6038775e7de9Smrg	      ;;
6039775e7de9Smrg	    *) tmp_libs="$tmp_libs $deplib" ;;
6040775e7de9Smrg	    esac
6041775e7de9Smrg	  done
6042775e7de9Smrg	  eval $var=\"$tmp_libs\"
6043775e7de9Smrg	done # for var
6044775e7de9Smrg      fi
6045775e7de9Smrg      # Last step: remove runtime libs from dependency_libs
6046775e7de9Smrg      # (they stay in deplibs)
6047775e7de9Smrg      tmp_libs=
6048775e7de9Smrg      for i in $dependency_libs ; do
6049775e7de9Smrg	case " $predeps $postdeps $compiler_lib_search_path " in
6050775e7de9Smrg	*" $i "*)
6051775e7de9Smrg	  i=""
6052775e7de9Smrg	  ;;
6053775e7de9Smrg	esac
6054775e7de9Smrg	if test -n "$i" ; then
6055775e7de9Smrg	  tmp_libs="$tmp_libs $i"
6056775e7de9Smrg	fi
6057775e7de9Smrg      done
6058775e7de9Smrg      dependency_libs=$tmp_libs
6059775e7de9Smrg    done # for pass
6060775e7de9Smrg    if test "$linkmode" = prog; then
6061775e7de9Smrg      dlfiles="$newdlfiles"
6062775e7de9Smrg    fi
6063775e7de9Smrg    if test "$linkmode" = prog || test "$linkmode" = lib; then
6064775e7de9Smrg      dlprefiles="$newdlprefiles"
6065775e7de9Smrg    fi
6066775e7de9Smrg
6067775e7de9Smrg    case $linkmode in
6068775e7de9Smrg    oldlib)
6069775e7de9Smrg      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
6070775e7de9Smrg	func_warning "\`-dlopen' is ignored for archives"
6071775e7de9Smrg      fi
6072775e7de9Smrg
6073775e7de9Smrg      case " $deplibs" in
6074775e7de9Smrg      *\ -l* | *\ -L*)
6075775e7de9Smrg	func_warning "\`-l' and \`-L' are ignored for archives" ;;
6076775e7de9Smrg      esac
6077775e7de9Smrg
6078775e7de9Smrg      test -n "$rpath" && \
6079775e7de9Smrg	func_warning "\`-rpath' is ignored for archives"
6080775e7de9Smrg
6081775e7de9Smrg      test -n "$xrpath" && \
6082775e7de9Smrg	func_warning "\`-R' is ignored for archives"
6083775e7de9Smrg
6084775e7de9Smrg      test -n "$vinfo" && \
6085775e7de9Smrg	func_warning "\`-version-info/-version-number' is ignored for archives"
6086775e7de9Smrg
6087775e7de9Smrg      test -n "$release" && \
6088775e7de9Smrg	func_warning "\`-release' is ignored for archives"
6089775e7de9Smrg
6090775e7de9Smrg      test -n "$export_symbols$export_symbols_regex" && \
6091775e7de9Smrg	func_warning "\`-export-symbols' is ignored for archives"
6092775e7de9Smrg
6093775e7de9Smrg      # Now set the variables for building old libraries.
6094775e7de9Smrg      build_libtool_libs=no
6095775e7de9Smrg      oldlibs="$output"
6096775e7de9Smrg      objs="$objs$old_deplibs"
6097775e7de9Smrg      ;;
6098775e7de9Smrg
6099775e7de9Smrg    lib)
6100775e7de9Smrg      # Make sure we only generate libraries of the form `libNAME.la'.
6101775e7de9Smrg      case $outputname in
6102775e7de9Smrg      lib*)
6103775e7de9Smrg	func_stripname 'lib' '.la' "$outputname"
6104775e7de9Smrg	name=$func_stripname_result
6105775e7de9Smrg	eval shared_ext=\"$shrext_cmds\"
6106775e7de9Smrg	eval libname=\"$libname_spec\"
6107775e7de9Smrg	;;
6108775e7de9Smrg      *)
6109775e7de9Smrg	test "$module" = no && \
6110775e7de9Smrg	  func_fatal_help "libtool library \`$output' must begin with \`lib'"
6111775e7de9Smrg
6112775e7de9Smrg	if test "$need_lib_prefix" != no; then
6113775e7de9Smrg	  # Add the "lib" prefix for modules if required
6114775e7de9Smrg	  func_stripname '' '.la' "$outputname"
6115775e7de9Smrg	  name=$func_stripname_result
6116775e7de9Smrg	  eval shared_ext=\"$shrext_cmds\"
6117775e7de9Smrg	  eval libname=\"$libname_spec\"
6118775e7de9Smrg	else
6119775e7de9Smrg	  func_stripname '' '.la' "$outputname"
6120775e7de9Smrg	  libname=$func_stripname_result
6121775e7de9Smrg	fi
6122775e7de9Smrg	;;
6123775e7de9Smrg      esac
6124775e7de9Smrg
6125775e7de9Smrg      if test -n "$objs"; then
6126775e7de9Smrg	if test "$deplibs_check_method" != pass_all; then
6127775e7de9Smrg	  func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
6128775e7de9Smrg	else
6129775e7de9Smrg	  $ECHO
6130775e7de9Smrg	  $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
6131775e7de9Smrg	  $ECHO "*** objects $objs is not portable!"
6132775e7de9Smrg	  libobjs="$libobjs $objs"
6133775e7de9Smrg	fi
6134775e7de9Smrg      fi
6135775e7de9Smrg
6136775e7de9Smrg      test "$dlself" != no && \
6137775e7de9Smrg	func_warning "\`-dlopen self' is ignored for libtool libraries"
6138775e7de9Smrg
6139775e7de9Smrg      set dummy $rpath
6140775e7de9Smrg      shift
6141775e7de9Smrg      test "$#" -gt 1 && \
6142775e7de9Smrg	func_warning "ignoring multiple \`-rpath's for a libtool library"
6143775e7de9Smrg
6144775e7de9Smrg      install_libdir="$1"
6145775e7de9Smrg
6146775e7de9Smrg      oldlibs=
6147775e7de9Smrg      if test -z "$rpath"; then
6148775e7de9Smrg	if test "$build_libtool_libs" = yes; then
6149775e7de9Smrg	  # Building a libtool convenience library.
6150775e7de9Smrg	  # Some compilers have problems with a `.al' extension so
6151775e7de9Smrg	  # convenience libraries should have the same extension an
6152775e7de9Smrg	  # archive normally would.
6153775e7de9Smrg	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
6154775e7de9Smrg	  build_libtool_libs=convenience
6155775e7de9Smrg	  build_old_libs=yes
6156775e7de9Smrg	fi
6157775e7de9Smrg
6158775e7de9Smrg	test -n "$vinfo" && \
6159775e7de9Smrg	  func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
6160775e7de9Smrg
6161775e7de9Smrg	test -n "$release" && \
6162775e7de9Smrg	  func_warning "\`-release' is ignored for convenience libraries"
6163775e7de9Smrg      else
6164775e7de9Smrg
6165775e7de9Smrg	# Parse the version information argument.
6166775e7de9Smrg	save_ifs="$IFS"; IFS=':'
6167775e7de9Smrg	set dummy $vinfo 0 0 0
6168775e7de9Smrg	shift
6169775e7de9Smrg	IFS="$save_ifs"
6170775e7de9Smrg
6171775e7de9Smrg	test -n "$7" && \
6172775e7de9Smrg	  func_fatal_help "too many parameters to \`-version-info'"
6173775e7de9Smrg
6174775e7de9Smrg	# convert absolute version numbers to libtool ages
6175775e7de9Smrg	# this retains compatibility with .la files and attempts
6176775e7de9Smrg	# to make the code below a bit more comprehensible
6177775e7de9Smrg
6178775e7de9Smrg	case $vinfo_number in
6179775e7de9Smrg	yes)
6180775e7de9Smrg	  number_major="$1"
6181775e7de9Smrg	  number_minor="$2"
6182775e7de9Smrg	  number_revision="$3"
6183775e7de9Smrg	  #
6184775e7de9Smrg	  # There are really only two kinds -- those that
6185775e7de9Smrg	  # use the current revision as the major version
6186775e7de9Smrg	  # and those that subtract age and use age as
6187775e7de9Smrg	  # a minor version.  But, then there is irix
6188775e7de9Smrg	  # which has an extra 1 added just for fun
6189775e7de9Smrg	  #
6190775e7de9Smrg	  case $version_type in
6191775e7de9Smrg	  darwin|linux|osf|windows|none)
6192775e7de9Smrg	    func_arith $number_major + $number_minor
6193775e7de9Smrg	    current=$func_arith_result
6194775e7de9Smrg	    age="$number_minor"
6195775e7de9Smrg	    revision="$number_revision"
6196775e7de9Smrg	    ;;
6197775e7de9Smrg	  freebsd-aout|freebsd-elf|sunos)
6198775e7de9Smrg	    current="$number_major"
6199775e7de9Smrg	    revision="$number_minor"
6200775e7de9Smrg	    age="0"
6201775e7de9Smrg	    ;;
6202775e7de9Smrg	  irix|nonstopux)
6203775e7de9Smrg	    func_arith $number_major + $number_minor
6204775e7de9Smrg	    current=$func_arith_result
6205775e7de9Smrg	    age="$number_minor"
6206775e7de9Smrg	    revision="$number_minor"
6207775e7de9Smrg	    lt_irix_increment=no
6208775e7de9Smrg	    ;;
6209775e7de9Smrg	  esac
6210775e7de9Smrg	  ;;
6211775e7de9Smrg	no)
6212775e7de9Smrg	  current="$1"
6213775e7de9Smrg	  revision="$2"
6214775e7de9Smrg	  age="$3"
6215775e7de9Smrg	  ;;
6216775e7de9Smrg	esac
6217775e7de9Smrg
6218775e7de9Smrg	# Check that each of the things are valid numbers.
6219775e7de9Smrg	case $current in
6220775e7de9Smrg	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]) ;;
6221775e7de9Smrg	*)
6222775e7de9Smrg	  func_error "CURRENT \`$current' must be a nonnegative integer"
6223775e7de9Smrg	  func_fatal_error "\`$vinfo' is not valid version information"
6224775e7de9Smrg	  ;;
6225775e7de9Smrg	esac
6226775e7de9Smrg
6227775e7de9Smrg	case $revision in
6228775e7de9Smrg	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]) ;;
6229775e7de9Smrg	*)
6230775e7de9Smrg	  func_error "REVISION \`$revision' must be a nonnegative integer"
6231775e7de9Smrg	  func_fatal_error "\`$vinfo' is not valid version information"
6232775e7de9Smrg	  ;;
6233775e7de9Smrg	esac
6234775e7de9Smrg
6235775e7de9Smrg	case $age in
6236775e7de9Smrg	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]) ;;
6237775e7de9Smrg	*)
6238775e7de9Smrg	  func_error "AGE \`$age' must be a nonnegative integer"
6239775e7de9Smrg	  func_fatal_error "\`$vinfo' is not valid version information"
6240775e7de9Smrg	  ;;
6241775e7de9Smrg	esac
6242775e7de9Smrg
6243775e7de9Smrg	if test "$age" -gt "$current"; then
6244775e7de9Smrg	  func_error "AGE \`$age' is greater than the current interface number \`$current'"
6245775e7de9Smrg	  func_fatal_error "\`$vinfo' is not valid version information"
6246775e7de9Smrg	fi
6247775e7de9Smrg
6248775e7de9Smrg	# Calculate the version variables.
6249775e7de9Smrg	major=
6250775e7de9Smrg	versuffix=
6251775e7de9Smrg	verstring=
6252775e7de9Smrg	case $version_type in
6253775e7de9Smrg	none) ;;
6254775e7de9Smrg
6255775e7de9Smrg	darwin)
6256775e7de9Smrg	  # Like Linux, but with the current version available in
6257775e7de9Smrg	  # verstring for coding it into the library header
6258775e7de9Smrg	  func_arith $current - $age
6259775e7de9Smrg	  major=.$func_arith_result
6260775e7de9Smrg	  versuffix="$major.$age.$revision"
6261775e7de9Smrg	  # Darwin ld doesn't like 0 for these options...
6262775e7de9Smrg	  func_arith $current + 1
6263775e7de9Smrg	  minor_current=$func_arith_result
6264775e7de9Smrg	  xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
6265775e7de9Smrg	  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
6266775e7de9Smrg	  ;;
6267775e7de9Smrg
6268775e7de9Smrg	freebsd-aout)
6269775e7de9Smrg	  major=".$current"
6270775e7de9Smrg	  versuffix=".$current.$revision";
6271775e7de9Smrg	  ;;
6272775e7de9Smrg
6273775e7de9Smrg	freebsd-elf)
6274775e7de9Smrg	  major=".$current"
6275775e7de9Smrg	  versuffix=".$current"
6276775e7de9Smrg	  ;;
6277775e7de9Smrg
6278775e7de9Smrg	irix | nonstopux)
6279775e7de9Smrg	  if test "X$lt_irix_increment" = "Xno"; then
6280775e7de9Smrg	    func_arith $current - $age
6281775e7de9Smrg	  else
6282775e7de9Smrg	    func_arith $current - $age + 1
6283775e7de9Smrg	  fi
6284775e7de9Smrg	  major=$func_arith_result
6285775e7de9Smrg
6286775e7de9Smrg	  case $version_type in
6287775e7de9Smrg	    nonstopux) verstring_prefix=nonstopux ;;
6288775e7de9Smrg	    *)         verstring_prefix=sgi ;;
6289775e7de9Smrg	  esac
6290775e7de9Smrg	  verstring="$verstring_prefix$major.$revision"
6291775e7de9Smrg
6292775e7de9Smrg	  # Add in all the interfaces that we are compatible with.
6293775e7de9Smrg	  loop=$revision
6294775e7de9Smrg	  while test "$loop" -ne 0; do
6295775e7de9Smrg	    func_arith $revision - $loop
6296775e7de9Smrg	    iface=$func_arith_result
6297775e7de9Smrg	    func_arith $loop - 1
6298775e7de9Smrg	    loop=$func_arith_result
6299775e7de9Smrg	    verstring="$verstring_prefix$major.$iface:$verstring"
6300775e7de9Smrg	  done
6301775e7de9Smrg
6302775e7de9Smrg	  # Before this point, $major must not contain `.'.
6303775e7de9Smrg	  major=.$major
6304775e7de9Smrg	  versuffix="$major.$revision"
6305775e7de9Smrg	  ;;
6306775e7de9Smrg
6307775e7de9Smrg	linux)
6308775e7de9Smrg	  func_arith $current - $age
6309775e7de9Smrg	  major=.$func_arith_result
6310775e7de9Smrg	  versuffix="$major.$age.$revision"
6311775e7de9Smrg	  ;;
6312775e7de9Smrg
6313775e7de9Smrg	osf)
6314775e7de9Smrg	  func_arith $current - $age
6315775e7de9Smrg	  major=.$func_arith_result
6316775e7de9Smrg	  versuffix=".$current.$age.$revision"
6317775e7de9Smrg	  verstring="$current.$age.$revision"
6318775e7de9Smrg
6319775e7de9Smrg	  # Add in all the interfaces that we are compatible with.
6320775e7de9Smrg	  loop=$age
6321775e7de9Smrg	  while test "$loop" -ne 0; do
6322775e7de9Smrg	    func_arith $current - $loop
6323775e7de9Smrg	    iface=$func_arith_result
6324775e7de9Smrg	    func_arith $loop - 1
6325775e7de9Smrg	    loop=$func_arith_result
6326775e7de9Smrg	    verstring="$verstring:${iface}.0"
6327775e7de9Smrg	  done
6328775e7de9Smrg
6329775e7de9Smrg	  # Make executables depend on our current version.
6330775e7de9Smrg	  verstring="$verstring:${current}.0"
6331775e7de9Smrg	  ;;
6332775e7de9Smrg
6333775e7de9Smrg	qnx)
6334775e7de9Smrg	  major=".$current"
6335775e7de9Smrg	  versuffix=".$current"
6336775e7de9Smrg	  ;;
6337775e7de9Smrg
6338775e7de9Smrg	sunos)
6339775e7de9Smrg	  major=".$current"
6340775e7de9Smrg	  versuffix=".$current.$revision"
6341775e7de9Smrg	  ;;
6342775e7de9Smrg
6343775e7de9Smrg	windows)
6344775e7de9Smrg	  # Use '-' rather than '.', since we only want one
6345775e7de9Smrg	  # extension on DOS 8.3 filesystems.
6346775e7de9Smrg	  func_arith $current - $age
6347775e7de9Smrg	  major=$func_arith_result
6348775e7de9Smrg	  versuffix="-$major"
6349775e7de9Smrg	  ;;
6350775e7de9Smrg
6351775e7de9Smrg	*)
6352775e7de9Smrg	  func_fatal_configuration "unknown library version type \`$version_type'"
6353775e7de9Smrg	  ;;
6354775e7de9Smrg	esac
6355775e7de9Smrg
6356775e7de9Smrg	# Clear the version info if we defaulted, and they specified a release.
6357775e7de9Smrg	if test -z "$vinfo" && test -n "$release"; then
6358775e7de9Smrg	  major=
6359775e7de9Smrg	  case $version_type in
6360775e7de9Smrg	  darwin)
6361775e7de9Smrg	    # we can't check for "0.0" in archive_cmds due to quoting
6362775e7de9Smrg	    # problems, so we reset it completely
6363775e7de9Smrg	    verstring=
6364775e7de9Smrg	    ;;
6365775e7de9Smrg	  *)
6366775e7de9Smrg	    verstring="0.0"
6367775e7de9Smrg	    ;;
6368775e7de9Smrg	  esac
6369775e7de9Smrg	  if test "$need_version" = no; then
6370775e7de9Smrg	    versuffix=
6371775e7de9Smrg	  else
6372775e7de9Smrg	    versuffix=".0.0"
6373775e7de9Smrg	  fi
6374775e7de9Smrg	fi
6375775e7de9Smrg
6376775e7de9Smrg	# Remove version info from name if versioning should be avoided
6377775e7de9Smrg	if test "$avoid_version" = yes && test "$need_version" = no; then
6378775e7de9Smrg	  major=
6379775e7de9Smrg	  versuffix=
6380775e7de9Smrg	  verstring=""
6381775e7de9Smrg	fi
6382775e7de9Smrg
6383775e7de9Smrg	# Check to see if the archive will have undefined symbols.
6384775e7de9Smrg	if test "$allow_undefined" = yes; then
6385775e7de9Smrg	  if test "$allow_undefined_flag" = unsupported; then
6386775e7de9Smrg	    func_warning "undefined symbols not allowed in $host shared libraries"
6387775e7de9Smrg	    build_libtool_libs=no
6388775e7de9Smrg	    build_old_libs=yes
6389775e7de9Smrg	  fi
6390775e7de9Smrg	else
6391775e7de9Smrg	  # Don't allow undefined symbols.
6392775e7de9Smrg	  allow_undefined_flag="$no_undefined_flag"
6393775e7de9Smrg	fi
6394775e7de9Smrg
6395775e7de9Smrg      fi
6396775e7de9Smrg
6397775e7de9Smrg      func_generate_dlsyms "$libname" "$libname" "yes"
6398775e7de9Smrg      libobjs="$libobjs $symfileobj"
6399775e7de9Smrg      test "X$libobjs" = "X " && libobjs=
6400775e7de9Smrg
6401775e7de9Smrg      if test "$mode" != relink; then
6402775e7de9Smrg	# Remove our outputs, but don't remove object files since they
6403775e7de9Smrg	# may have been created when compiling PIC objects.
6404775e7de9Smrg	removelist=
6405775e7de9Smrg	tempremovelist=`$ECHO "$output_objdir/*"`
6406775e7de9Smrg	for p in $tempremovelist; do
6407775e7de9Smrg	  case $p in
6408775e7de9Smrg	    *.$objext | *.gcno)
6409775e7de9Smrg	       ;;
6410775e7de9Smrg	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
6411775e7de9Smrg	       if test "X$precious_files_regex" != "X"; then
6412775e7de9Smrg		 if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
6413775e7de9Smrg		 then
6414775e7de9Smrg		   continue
6415775e7de9Smrg		 fi
6416775e7de9Smrg	       fi
6417775e7de9Smrg	       removelist="$removelist $p"
6418775e7de9Smrg	       ;;
6419775e7de9Smrg	    *) ;;
6420775e7de9Smrg	  esac
6421775e7de9Smrg	done
6422775e7de9Smrg	test -n "$removelist" && \
6423775e7de9Smrg	  func_show_eval "${RM}r \$removelist"
6424775e7de9Smrg      fi
6425775e7de9Smrg
6426775e7de9Smrg      # Now set the variables for building old libraries.
6427775e7de9Smrg      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
6428775e7de9Smrg	oldlibs="$oldlibs $output_objdir/$libname.$libext"
6429775e7de9Smrg
6430775e7de9Smrg	# Transform .lo files to .o files.
6431775e7de9Smrg	oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
6432775e7de9Smrg      fi
6433775e7de9Smrg
6434775e7de9Smrg      # Eliminate all temporary directories.
6435775e7de9Smrg      #for path in $notinst_path; do
6436775e7de9Smrg      #	lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"`
6437775e7de9Smrg      #	deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"`
6438775e7de9Smrg      #	dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"`
6439775e7de9Smrg      #done
6440775e7de9Smrg
6441775e7de9Smrg      if test -n "$xrpath"; then
6442775e7de9Smrg	# If the user specified any rpath flags, then add them.
6443775e7de9Smrg	temp_xrpath=
6444775e7de9Smrg	for libdir in $xrpath; do
6445775e7de9Smrg	  temp_xrpath="$temp_xrpath -R$libdir"
6446775e7de9Smrg	  case "$finalize_rpath " in
6447775e7de9Smrg	  *" $libdir "*) ;;
6448775e7de9Smrg	  *) finalize_rpath="$finalize_rpath $libdir" ;;
6449775e7de9Smrg	  esac
6450775e7de9Smrg	done
6451775e7de9Smrg	if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
6452775e7de9Smrg	  dependency_libs="$temp_xrpath $dependency_libs"
6453775e7de9Smrg	fi
6454775e7de9Smrg      fi
6455775e7de9Smrg
6456775e7de9Smrg      # Make sure dlfiles contains only unique files that won't be dlpreopened
6457775e7de9Smrg      old_dlfiles="$dlfiles"
6458775e7de9Smrg      dlfiles=
6459775e7de9Smrg      for lib in $old_dlfiles; do
6460775e7de9Smrg	case " $dlprefiles $dlfiles " in
6461775e7de9Smrg	*" $lib "*) ;;
6462775e7de9Smrg	*) dlfiles="$dlfiles $lib" ;;
6463775e7de9Smrg	esac
6464775e7de9Smrg      done
6465775e7de9Smrg
6466775e7de9Smrg      # Make sure dlprefiles contains only unique files
6467775e7de9Smrg      old_dlprefiles="$dlprefiles"
6468775e7de9Smrg      dlprefiles=
6469775e7de9Smrg      for lib in $old_dlprefiles; do
6470775e7de9Smrg	case "$dlprefiles " in
6471775e7de9Smrg	*" $lib "*) ;;
6472775e7de9Smrg	*) dlprefiles="$dlprefiles $lib" ;;
6473775e7de9Smrg	esac
6474775e7de9Smrg      done
6475775e7de9Smrg
6476775e7de9Smrg      if test "$build_libtool_libs" = yes; then
6477775e7de9Smrg	if test -n "$rpath"; then
6478775e7de9Smrg	  case $host in
6479775e7de9Smrg	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc*)
6480775e7de9Smrg	    # these systems don't actually have a c library (as such)!
6481775e7de9Smrg	    ;;
6482775e7de9Smrg	  *-*-rhapsody* | *-*-darwin1.[012])
6483775e7de9Smrg	    # Rhapsody C library is in the System framework
6484775e7de9Smrg	    deplibs="$deplibs System.ltframework"
6485775e7de9Smrg	    ;;
6486775e7de9Smrg	  *-*-netbsd*)
6487775e7de9Smrg	    # Don't link with libc until the a.out ld.so is fixed.
6488775e7de9Smrg	    ;;
6489775e7de9Smrg	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
6490775e7de9Smrg	    # Do not include libc due to us having libc/libc_r.
6491775e7de9Smrg	    ;;
6492775e7de9Smrg	  *-*-sco3.2v5* | *-*-sco5v6*)
6493775e7de9Smrg	    # Causes problems with __ctype
6494775e7de9Smrg	    ;;
6495775e7de9Smrg	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
6496775e7de9Smrg	    # Compiler inserts libc in the correct place for threads to work
6497775e7de9Smrg	    ;;
6498775e7de9Smrg	  *)
6499775e7de9Smrg	    # Add libc to deplibs on all other systems if necessary.
6500775e7de9Smrg	    if test "$build_libtool_need_lc" = "yes"; then
6501775e7de9Smrg	      deplibs="$deplibs -lc"
6502775e7de9Smrg	    fi
6503775e7de9Smrg	    ;;
6504775e7de9Smrg	  esac
6505775e7de9Smrg	fi
6506775e7de9Smrg
6507775e7de9Smrg	# Transform deplibs into only deplibs that can be linked in shared.
6508775e7de9Smrg	name_save=$name
6509775e7de9Smrg	libname_save=$libname
6510775e7de9Smrg	release_save=$release
6511775e7de9Smrg	versuffix_save=$versuffix
6512775e7de9Smrg	major_save=$major
6513775e7de9Smrg	# I'm not sure if I'm treating the release correctly.  I think
6514775e7de9Smrg	# release should show up in the -l (ie -lgmp5) so we don't want to
6515775e7de9Smrg	# add it in twice.  Is that correct?
6516775e7de9Smrg	release=""
6517775e7de9Smrg	versuffix=""
6518775e7de9Smrg	major=""
6519775e7de9Smrg	newdeplibs=
6520775e7de9Smrg	droppeddeps=no
6521775e7de9Smrg	case $deplibs_check_method in
6522775e7de9Smrg	pass_all)
6523775e7de9Smrg	  # Don't check for shared/static.  Everything works.
6524775e7de9Smrg	  # This might be a little naive.  We might want to check
6525775e7de9Smrg	  # whether the library exists or not.  But this is on
6526775e7de9Smrg	  # osf3 & osf4 and I'm not really sure... Just
6527775e7de9Smrg	  # implementing what was already the behavior.
6528775e7de9Smrg	  newdeplibs=$deplibs
6529775e7de9Smrg	  ;;
6530775e7de9Smrg	test_compile)
6531775e7de9Smrg	  # This code stresses the "libraries are programs" paradigm to its
6532775e7de9Smrg	  # limits. Maybe even breaks it.  We compile a program, linking it
6533775e7de9Smrg	  # against the deplibs as a proxy for the library.  Then we can check
6534775e7de9Smrg	  # whether they linked in statically or dynamically with ldd.
6535775e7de9Smrg	  $opt_dry_run || $RM conftest.c
6536775e7de9Smrg	  cat > conftest.c <<EOF
6537775e7de9Smrg	  int main() { return 0; }
6538775e7de9SmrgEOF
6539775e7de9Smrg	  $opt_dry_run || $RM conftest
6540775e7de9Smrg	  if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
6541775e7de9Smrg	    ldd_output=`ldd conftest`
6542775e7de9Smrg	    for i in $deplibs; do
6543775e7de9Smrg	      case $i in
6544775e7de9Smrg	      -l*)
6545775e7de9Smrg		func_stripname -l '' "$i"
6546775e7de9Smrg		name=$func_stripname_result
6547775e7de9Smrg		if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
6548775e7de9Smrg		  case " $predeps $postdeps " in
6549775e7de9Smrg		  *" $i "*)
6550775e7de9Smrg		    newdeplibs="$newdeplibs $i"
6551775e7de9Smrg		    i=""
6552775e7de9Smrg		    ;;
6553775e7de9Smrg		  esac
6554775e7de9Smrg		fi
6555775e7de9Smrg		if test -n "$i" ; then
6556775e7de9Smrg		  libname=`eval "\\$ECHO \"$libname_spec\""`
6557775e7de9Smrg		  deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
6558775e7de9Smrg		  set dummy $deplib_matches; shift
6559775e7de9Smrg		  deplib_match=$1
6560775e7de9Smrg		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
6561775e7de9Smrg		    newdeplibs="$newdeplibs $i"
6562775e7de9Smrg		  else
6563775e7de9Smrg		    droppeddeps=yes
6564775e7de9Smrg		    $ECHO
6565775e7de9Smrg		    $ECHO "*** Warning: dynamic linker does not accept needed library $i."
6566775e7de9Smrg		    $ECHO "*** I have the capability to make that library automatically link in when"
6567775e7de9Smrg		    $ECHO "*** you link to this library.  But I can only do this if you have a"
6568775e7de9Smrg		    $ECHO "*** shared version of the library, which I believe you do not have"
6569775e7de9Smrg		    $ECHO "*** because a test_compile did reveal that the linker did not use it for"
6570775e7de9Smrg		    $ECHO "*** its dynamic dependency list that programs get resolved with at runtime."
6571775e7de9Smrg		  fi
6572775e7de9Smrg		fi
6573775e7de9Smrg		;;
6574775e7de9Smrg	      *)
6575775e7de9Smrg		newdeplibs="$newdeplibs $i"
6576775e7de9Smrg		;;
6577775e7de9Smrg	      esac
6578775e7de9Smrg	    done
6579775e7de9Smrg	  else
6580775e7de9Smrg	    # Error occurred in the first compile.  Let's try to salvage
6581775e7de9Smrg	    # the situation: Compile a separate program for each library.
6582775e7de9Smrg	    for i in $deplibs; do
6583775e7de9Smrg	      case $i in
6584775e7de9Smrg	      -l*)
6585775e7de9Smrg		func_stripname -l '' "$i"
6586775e7de9Smrg		name=$func_stripname_result
6587775e7de9Smrg		$opt_dry_run || $RM conftest
6588775e7de9Smrg		if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
6589775e7de9Smrg		  ldd_output=`ldd conftest`
6590775e7de9Smrg		  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
6591775e7de9Smrg		    case " $predeps $postdeps " in
6592775e7de9Smrg		    *" $i "*)
6593775e7de9Smrg		      newdeplibs="$newdeplibs $i"
6594775e7de9Smrg		      i=""
6595775e7de9Smrg		      ;;
6596775e7de9Smrg		    esac
6597775e7de9Smrg		  fi
6598775e7de9Smrg		  if test -n "$i" ; then
6599775e7de9Smrg		    libname=`eval "\\$ECHO \"$libname_spec\""`
6600775e7de9Smrg		    deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
6601775e7de9Smrg		    set dummy $deplib_matches; shift
6602775e7de9Smrg		    deplib_match=$1
6603775e7de9Smrg		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
6604775e7de9Smrg		      newdeplibs="$newdeplibs $i"
6605775e7de9Smrg		    else
6606775e7de9Smrg		      droppeddeps=yes
6607775e7de9Smrg		      $ECHO
6608775e7de9Smrg		      $ECHO "*** Warning: dynamic linker does not accept needed library $i."
6609775e7de9Smrg		      $ECHO "*** I have the capability to make that library automatically link in when"
6610775e7de9Smrg		      $ECHO "*** you link to this library.  But I can only do this if you have a"
6611775e7de9Smrg		      $ECHO "*** shared version of the library, which you do not appear to have"
6612775e7de9Smrg		      $ECHO "*** because a test_compile did reveal that the linker did not use this one"
6613775e7de9Smrg		      $ECHO "*** as a dynamic dependency that programs can get resolved with at runtime."
6614775e7de9Smrg		    fi
6615775e7de9Smrg		  fi
6616775e7de9Smrg		else
6617775e7de9Smrg		  droppeddeps=yes
6618775e7de9Smrg		  $ECHO
6619775e7de9Smrg		  $ECHO "*** Warning!  Library $i is needed by this library but I was not able to"
6620775e7de9Smrg		  $ECHO "*** make it link in!  You will probably need to install it or some"
6621775e7de9Smrg		  $ECHO "*** library that it depends on before this library will be fully"
6622775e7de9Smrg		  $ECHO "*** functional.  Installing it before continuing would be even better."
6623775e7de9Smrg		fi
6624775e7de9Smrg		;;
6625775e7de9Smrg	      *)
6626775e7de9Smrg		newdeplibs="$newdeplibs $i"
6627775e7de9Smrg		;;
6628775e7de9Smrg	      esac
6629775e7de9Smrg	    done
6630775e7de9Smrg	  fi
6631775e7de9Smrg	  ;;
6632775e7de9Smrg	file_magic*)
6633775e7de9Smrg	  set dummy $deplibs_check_method; shift
6634775e7de9Smrg	  file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
6635775e7de9Smrg	  for a_deplib in $deplibs; do
6636775e7de9Smrg	    case $a_deplib in
6637775e7de9Smrg	    -l*)
6638775e7de9Smrg	      func_stripname -l '' "$a_deplib"
6639775e7de9Smrg	      name=$func_stripname_result
6640775e7de9Smrg	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
6641775e7de9Smrg		case " $predeps $postdeps " in
6642775e7de9Smrg		*" $a_deplib "*)
6643775e7de9Smrg		  newdeplibs="$newdeplibs $a_deplib"
6644775e7de9Smrg		  a_deplib=""
6645775e7de9Smrg		  ;;
6646775e7de9Smrg		esac
6647775e7de9Smrg	      fi
6648775e7de9Smrg	      if test -n "$a_deplib" ; then
6649775e7de9Smrg		libname=`eval "\\$ECHO \"$libname_spec\""`
6650775e7de9Smrg		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
6651775e7de9Smrg		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
6652775e7de9Smrg		  for potent_lib in $potential_libs; do
6653775e7de9Smrg		      # Follow soft links.
6654775e7de9Smrg		      if ls -lLd "$potent_lib" 2>/dev/null |
6655775e7de9Smrg			 $GREP " -> " >/dev/null; then
6656775e7de9Smrg			continue
6657775e7de9Smrg		      fi
6658775e7de9Smrg		      # The statement above tries to avoid entering an
6659775e7de9Smrg		      # endless loop below, in case of cyclic links.
6660775e7de9Smrg		      # We might still enter an endless loop, since a link
6661775e7de9Smrg		      # loop can be closed while we follow links,
6662775e7de9Smrg		      # but so what?
6663775e7de9Smrg		      potlib="$potent_lib"
6664775e7de9Smrg		      while test -h "$potlib" 2>/dev/null; do
6665775e7de9Smrg			potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
6666775e7de9Smrg			case $potliblink in
6667775e7de9Smrg			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
6668775e7de9Smrg			*) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
6669775e7de9Smrg			esac
6670775e7de9Smrg		      done
6671775e7de9Smrg		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
6672775e7de9Smrg			 $SED -e 10q |
6673775e7de9Smrg			 $EGREP "$file_magic_regex" > /dev/null; then
6674775e7de9Smrg			newdeplibs="$newdeplibs $a_deplib"
6675775e7de9Smrg			a_deplib=""
6676775e7de9Smrg			break 2
6677775e7de9Smrg		      fi
6678775e7de9Smrg		  done
6679775e7de9Smrg		done
6680775e7de9Smrg	      fi
6681775e7de9Smrg	      if test -n "$a_deplib" ; then
6682775e7de9Smrg		droppeddeps=yes
6683775e7de9Smrg		$ECHO
6684775e7de9Smrg		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
6685775e7de9Smrg		$ECHO "*** I have the capability to make that library automatically link in when"
6686775e7de9Smrg		$ECHO "*** you link to this library.  But I can only do this if you have a"
6687775e7de9Smrg		$ECHO "*** shared version of the library, which you do not appear to have"
6688775e7de9Smrg		$ECHO "*** because I did check the linker path looking for a file starting"
6689775e7de9Smrg		if test -z "$potlib" ; then
6690775e7de9Smrg		  $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
6691775e7de9Smrg		else
6692775e7de9Smrg		  $ECHO "*** with $libname and none of the candidates passed a file format test"
6693775e7de9Smrg		  $ECHO "*** using a file magic. Last file checked: $potlib"
6694775e7de9Smrg		fi
6695775e7de9Smrg	      fi
6696775e7de9Smrg	      ;;
6697775e7de9Smrg	    *)
6698775e7de9Smrg	      # Add a -L argument.
6699775e7de9Smrg	      newdeplibs="$newdeplibs $a_deplib"
6700775e7de9Smrg	      ;;
6701775e7de9Smrg	    esac
6702775e7de9Smrg	  done # Gone through all deplibs.
6703775e7de9Smrg	  ;;
6704775e7de9Smrg	match_pattern*)
6705775e7de9Smrg	  set dummy $deplibs_check_method; shift
6706775e7de9Smrg	  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
6707775e7de9Smrg	  for a_deplib in $deplibs; do
6708775e7de9Smrg	    case $a_deplib in
6709775e7de9Smrg	    -l*)
6710775e7de9Smrg	      func_stripname -l '' "$a_deplib"
6711775e7de9Smrg	      name=$func_stripname_result
6712775e7de9Smrg	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
6713775e7de9Smrg		case " $predeps $postdeps " in
6714775e7de9Smrg		*" $a_deplib "*)
6715775e7de9Smrg		  newdeplibs="$newdeplibs $a_deplib"
6716775e7de9Smrg		  a_deplib=""
6717775e7de9Smrg		  ;;
6718775e7de9Smrg		esac
6719775e7de9Smrg	      fi
6720775e7de9Smrg	      if test -n "$a_deplib" ; then
6721775e7de9Smrg		libname=`eval "\\$ECHO \"$libname_spec\""`
6722775e7de9Smrg		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
6723775e7de9Smrg		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
6724775e7de9Smrg		  for potent_lib in $potential_libs; do
6725775e7de9Smrg		    potlib="$potent_lib" # see symlink-check above in file_magic test
6726775e7de9Smrg		    if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \
6727775e7de9Smrg		       $EGREP "$match_pattern_regex" > /dev/null; then
6728775e7de9Smrg		      newdeplibs="$newdeplibs $a_deplib"
6729775e7de9Smrg		      a_deplib=""
6730775e7de9Smrg		      break 2
6731775e7de9Smrg		    fi
6732775e7de9Smrg		  done
6733775e7de9Smrg		done
6734775e7de9Smrg	      fi
6735775e7de9Smrg	      if test -n "$a_deplib" ; then
6736775e7de9Smrg		droppeddeps=yes
6737775e7de9Smrg		$ECHO
6738775e7de9Smrg		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
6739775e7de9Smrg		$ECHO "*** I have the capability to make that library automatically link in when"
6740775e7de9Smrg		$ECHO "*** you link to this library.  But I can only do this if you have a"
6741775e7de9Smrg		$ECHO "*** shared version of the library, which you do not appear to have"
6742775e7de9Smrg		$ECHO "*** because I did check the linker path looking for a file starting"
6743775e7de9Smrg		if test -z "$potlib" ; then
6744775e7de9Smrg		  $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
6745775e7de9Smrg		else
6746775e7de9Smrg		  $ECHO "*** with $libname and none of the candidates passed a file format test"
6747775e7de9Smrg		  $ECHO "*** using a regex pattern. Last file checked: $potlib"
6748775e7de9Smrg		fi
6749775e7de9Smrg	      fi
6750775e7de9Smrg	      ;;
6751775e7de9Smrg	    *)
6752775e7de9Smrg	      # Add a -L argument.
6753775e7de9Smrg	      newdeplibs="$newdeplibs $a_deplib"
6754775e7de9Smrg	      ;;
6755775e7de9Smrg	    esac
6756775e7de9Smrg	  done # Gone through all deplibs.
6757775e7de9Smrg	  ;;
6758775e7de9Smrg	none | unknown | *)
6759775e7de9Smrg	  newdeplibs=""
6760775e7de9Smrg	  tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \
6761775e7de9Smrg	      -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'`
6762775e7de9Smrg	  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
6763775e7de9Smrg	    for i in $predeps $postdeps ; do
6764775e7de9Smrg	      # can't use Xsed below, because $i might contain '/'
6765775e7de9Smrg	      tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"`
6766775e7de9Smrg	    done
6767775e7de9Smrg	  fi
6768775e7de9Smrg	  if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[	 ]//g' |
6769775e7de9Smrg	     $GREP . >/dev/null; then
6770775e7de9Smrg	    $ECHO
6771775e7de9Smrg	    if test "X$deplibs_check_method" = "Xnone"; then
6772775e7de9Smrg	      $ECHO "*** Warning: inter-library dependencies are not supported in this platform."
6773775e7de9Smrg	    else
6774775e7de9Smrg	      $ECHO "*** Warning: inter-library dependencies are not known to be supported."
6775775e7de9Smrg	    fi
6776775e7de9Smrg	    $ECHO "*** All declared inter-library dependencies are being dropped."
6777775e7de9Smrg	    droppeddeps=yes
6778775e7de9Smrg	  fi
6779775e7de9Smrg	  ;;
6780775e7de9Smrg	esac
6781775e7de9Smrg	versuffix=$versuffix_save
6782775e7de9Smrg	major=$major_save
6783775e7de9Smrg	release=$release_save
6784775e7de9Smrg	libname=$libname_save
6785775e7de9Smrg	name=$name_save
6786775e7de9Smrg
6787775e7de9Smrg	case $host in
6788775e7de9Smrg	*-*-rhapsody* | *-*-darwin1.[012])
6789775e7de9Smrg	  # On Rhapsody replace the C library with the System framework
6790775e7de9Smrg	  newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
6791775e7de9Smrg	  ;;
6792775e7de9Smrg	esac
6793775e7de9Smrg
6794775e7de9Smrg	if test "$droppeddeps" = yes; then
6795775e7de9Smrg	  if test "$module" = yes; then
6796775e7de9Smrg	    $ECHO
6797775e7de9Smrg	    $ECHO "*** Warning: libtool could not satisfy all declared inter-library"
6798775e7de9Smrg	    $ECHO "*** dependencies of module $libname.  Therefore, libtool will create"
6799775e7de9Smrg	    $ECHO "*** a static module, that should work as long as the dlopening"
6800775e7de9Smrg	    $ECHO "*** application is linked with the -dlopen flag."
6801775e7de9Smrg	    if test -z "$global_symbol_pipe"; then
6802775e7de9Smrg	      $ECHO
6803775e7de9Smrg	      $ECHO "*** However, this would only work if libtool was able to extract symbol"
6804775e7de9Smrg	      $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
6805775e7de9Smrg	      $ECHO "*** not find such a program.  So, this module is probably useless."
6806775e7de9Smrg	      $ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
6807775e7de9Smrg	    fi
6808775e7de9Smrg	    if test "$build_old_libs" = no; then
6809775e7de9Smrg	      oldlibs="$output_objdir/$libname.$libext"
6810775e7de9Smrg	      build_libtool_libs=module
6811775e7de9Smrg	      build_old_libs=yes
6812775e7de9Smrg	    else
6813775e7de9Smrg	      build_libtool_libs=no
6814775e7de9Smrg	    fi
6815775e7de9Smrg	  else
6816775e7de9Smrg	    $ECHO "*** The inter-library dependencies that have been dropped here will be"
6817775e7de9Smrg	    $ECHO "*** automatically added whenever a program is linked with this library"
6818775e7de9Smrg	    $ECHO "*** or is declared to -dlopen it."
6819775e7de9Smrg
6820775e7de9Smrg	    if test "$allow_undefined" = no; then
6821775e7de9Smrg	      $ECHO
6822775e7de9Smrg	      $ECHO "*** Since this library must not contain undefined symbols,"
6823775e7de9Smrg	      $ECHO "*** because either the platform does not support them or"
6824775e7de9Smrg	      $ECHO "*** it was explicitly requested with -no-undefined,"
6825775e7de9Smrg	      $ECHO "*** libtool will only create a static version of it."
6826775e7de9Smrg	      if test "$build_old_libs" = no; then
6827775e7de9Smrg		oldlibs="$output_objdir/$libname.$libext"
6828775e7de9Smrg		build_libtool_libs=module
6829775e7de9Smrg		build_old_libs=yes
6830775e7de9Smrg	      else
6831775e7de9Smrg		build_libtool_libs=no
6832775e7de9Smrg	      fi
6833775e7de9Smrg	    fi
6834775e7de9Smrg	  fi
6835775e7de9Smrg	fi
6836775e7de9Smrg	# Done checking deplibs!
6837775e7de9Smrg	deplibs=$newdeplibs
6838775e7de9Smrg      fi
6839775e7de9Smrg      # Time to change all our "foo.ltframework" stuff back to "-framework foo"
6840775e7de9Smrg      case $host in
6841775e7de9Smrg	*-*-darwin*)
6842775e7de9Smrg	  newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
6843775e7de9Smrg	  new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
6844775e7de9Smrg	  deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
6845775e7de9Smrg	  ;;
6846775e7de9Smrg      esac
6847775e7de9Smrg
6848775e7de9Smrg      # move library search paths that coincide with paths to not yet
6849775e7de9Smrg      # installed libraries to the beginning of the library search list
6850775e7de9Smrg      new_libs=
6851775e7de9Smrg      for path in $notinst_path; do
6852775e7de9Smrg	case " $new_libs " in
6853775e7de9Smrg	*" -L$path/$objdir "*) ;;
6854775e7de9Smrg	*)
6855775e7de9Smrg	  case " $deplibs " in
6856775e7de9Smrg	  *" -L$path/$objdir "*)
6857775e7de9Smrg	    new_libs="$new_libs -L$path/$objdir" ;;
6858775e7de9Smrg	  esac
6859775e7de9Smrg	  ;;
6860775e7de9Smrg	esac
6861775e7de9Smrg      done
6862775e7de9Smrg      for deplib in $deplibs; do
6863775e7de9Smrg	case $deplib in
6864775e7de9Smrg	-L*)
6865775e7de9Smrg	  case " $new_libs " in
6866775e7de9Smrg	  *" $deplib "*) ;;
6867775e7de9Smrg	  *) new_libs="$new_libs $deplib" ;;
6868775e7de9Smrg	  esac
6869775e7de9Smrg	  ;;
6870775e7de9Smrg	*) new_libs="$new_libs $deplib" ;;
6871775e7de9Smrg	esac
6872775e7de9Smrg      done
6873775e7de9Smrg      deplibs="$new_libs"
6874775e7de9Smrg
6875775e7de9Smrg      # All the library-specific variables (install_libdir is set above).
6876775e7de9Smrg      library_names=
6877775e7de9Smrg      old_library=
6878775e7de9Smrg      dlname=
6879775e7de9Smrg
6880775e7de9Smrg      # Test again, we may have decided not to build it any more
6881775e7de9Smrg      if test "$build_libtool_libs" = yes; then
6882775e7de9Smrg	if test "$hardcode_into_libs" = yes; then
6883775e7de9Smrg	  # Hardcode the library paths
6884775e7de9Smrg	  hardcode_libdirs=
6885775e7de9Smrg	  dep_rpath=
6886775e7de9Smrg	  rpath="$finalize_rpath"
6887775e7de9Smrg	  test "$mode" != relink && rpath="$compile_rpath$rpath"
6888775e7de9Smrg	  for libdir in $rpath; do
6889775e7de9Smrg	    if test -n "$hardcode_libdir_flag_spec"; then
6890775e7de9Smrg	      if test -n "$hardcode_libdir_separator"; then
6891775e7de9Smrg		if test -z "$hardcode_libdirs"; then
6892775e7de9Smrg		  hardcode_libdirs="$libdir"
6893775e7de9Smrg		else
6894775e7de9Smrg		  # Just accumulate the unique libdirs.
6895775e7de9Smrg		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
6896775e7de9Smrg		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
6897775e7de9Smrg		    ;;
6898775e7de9Smrg		  *)
6899775e7de9Smrg		    hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
6900775e7de9Smrg		    ;;
6901775e7de9Smrg		  esac
6902775e7de9Smrg		fi
6903775e7de9Smrg	      else
6904775e7de9Smrg		eval flag=\"$hardcode_libdir_flag_spec\"
6905775e7de9Smrg		dep_rpath="$dep_rpath $flag"
6906775e7de9Smrg	      fi
6907775e7de9Smrg	    elif test -n "$runpath_var"; then
6908775e7de9Smrg	      case "$perm_rpath " in
6909775e7de9Smrg	      *" $libdir "*) ;;
6910775e7de9Smrg	      *) perm_rpath="$perm_rpath $libdir" ;;
6911775e7de9Smrg	      esac
6912775e7de9Smrg	    fi
6913775e7de9Smrg	  done
6914775e7de9Smrg	  # Substitute the hardcoded libdirs into the rpath.
6915775e7de9Smrg	  if test -n "$hardcode_libdir_separator" &&
6916775e7de9Smrg	     test -n "$hardcode_libdirs"; then
6917775e7de9Smrg	    libdir="$hardcode_libdirs"
6918775e7de9Smrg	    if test -n "$hardcode_libdir_flag_spec_ld"; then
6919775e7de9Smrg	      eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
6920775e7de9Smrg	    else
6921775e7de9Smrg	      eval dep_rpath=\"$hardcode_libdir_flag_spec\"
6922775e7de9Smrg	    fi
6923775e7de9Smrg	  fi
6924775e7de9Smrg	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
6925775e7de9Smrg	    # We should set the runpath_var.
6926775e7de9Smrg	    rpath=
6927775e7de9Smrg	    for dir in $perm_rpath; do
6928775e7de9Smrg	      rpath="$rpath$dir:"
6929775e7de9Smrg	    done
6930775e7de9Smrg	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
6931775e7de9Smrg	  fi
6932775e7de9Smrg	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
6933775e7de9Smrg	fi
69347a84e134Smrg
6935775e7de9Smrg	shlibpath="$finalize_shlibpath"
6936775e7de9Smrg	test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
6937775e7de9Smrg	if test -n "$shlibpath"; then
6938775e7de9Smrg	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
6939775e7de9Smrg	fi
69407a84e134Smrg
6941775e7de9Smrg	# Get the real and link names of the library.
6942775e7de9Smrg	eval shared_ext=\"$shrext_cmds\"
6943775e7de9Smrg	eval library_names=\"$library_names_spec\"
6944775e7de9Smrg	set dummy $library_names
6945775e7de9Smrg	shift
6946775e7de9Smrg	realname="$1"
6947775e7de9Smrg	shift
69487a84e134Smrg
6949775e7de9Smrg	if test -n "$soname_spec"; then
6950775e7de9Smrg	  eval soname=\"$soname_spec\"
6951775e7de9Smrg	else
6952775e7de9Smrg	  soname="$realname"
6953775e7de9Smrg	fi
6954775e7de9Smrg	if test -z "$dlname"; then
6955775e7de9Smrg	  dlname=$soname
6956775e7de9Smrg	fi
69577a84e134Smrg
6958775e7de9Smrg	lib="$output_objdir/$realname"
6959775e7de9Smrg	linknames=
6960775e7de9Smrg	for link
6961775e7de9Smrg	do
6962775e7de9Smrg	  linknames="$linknames $link"
6963775e7de9Smrg	done
69647a84e134Smrg
6965775e7de9Smrg	# Use standard objects if they are pic
6966775e7de9Smrg	test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
6967775e7de9Smrg	test "X$libobjs" = "X " && libobjs=
69687a84e134Smrg
6969775e7de9Smrg	delfiles=
6970775e7de9Smrg	if test -n "$export_symbols" && test -n "$include_expsyms"; then
6971775e7de9Smrg	  $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
6972775e7de9Smrg	  export_symbols="$output_objdir/$libname.uexp"
6973775e7de9Smrg	  delfiles="$delfiles $export_symbols"
6974775e7de9Smrg	fi
69757a84e134Smrg
6976775e7de9Smrg	orig_export_symbols=
6977775e7de9Smrg	case $host_os in
6978775e7de9Smrg	cygwin* | mingw* | cegcc*)
6979775e7de9Smrg	  if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
6980775e7de9Smrg	    # exporting using user supplied symfile
6981775e7de9Smrg	    if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
6982775e7de9Smrg	      # and it's NOT already a .def file. Must figure out
6983775e7de9Smrg	      # which of the given symbols are data symbols and tag
6984775e7de9Smrg	      # them as such. So, trigger use of export_symbols_cmds.
6985775e7de9Smrg	      # export_symbols gets reassigned inside the "prepare
6986775e7de9Smrg	      # the list of exported symbols" if statement, so the
6987775e7de9Smrg	      # include_expsyms logic still works.
6988775e7de9Smrg	      orig_export_symbols="$export_symbols"
6989775e7de9Smrg	      export_symbols=
6990775e7de9Smrg	      always_export_symbols=yes
6991775e7de9Smrg	    fi
6992775e7de9Smrg	  fi
6993775e7de9Smrg	  ;;
6994775e7de9Smrg	esac
69957a84e134Smrg
6996775e7de9Smrg	# Prepare the list of exported symbols
6997775e7de9Smrg	if test -z "$export_symbols"; then
6998775e7de9Smrg	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
6999775e7de9Smrg	    func_verbose "generating symbol list for \`$libname.la'"
7000775e7de9Smrg	    export_symbols="$output_objdir/$libname.exp"
7001775e7de9Smrg	    $opt_dry_run || $RM $export_symbols
7002775e7de9Smrg	    cmds=$export_symbols_cmds
7003775e7de9Smrg	    save_ifs="$IFS"; IFS='~'
7004775e7de9Smrg	    for cmd in $cmds; do
7005775e7de9Smrg	      IFS="$save_ifs"
7006775e7de9Smrg	      eval cmd=\"$cmd\"
7007775e7de9Smrg	      func_len " $cmd"
7008775e7de9Smrg	      len=$func_len_result
7009775e7de9Smrg	      if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
7010775e7de9Smrg		func_show_eval "$cmd" 'exit $?'
7011775e7de9Smrg		skipped_export=false
7012775e7de9Smrg	      else
7013775e7de9Smrg		# The command line is too long to execute in one step.
7014775e7de9Smrg		func_verbose "using reloadable object file for export list..."
7015775e7de9Smrg		skipped_export=:
7016775e7de9Smrg		# Break out early, otherwise skipped_export may be
7017775e7de9Smrg		# set to false by a later but shorter cmd.
7018775e7de9Smrg		break
7019775e7de9Smrg	      fi
7020775e7de9Smrg	    done
7021775e7de9Smrg	    IFS="$save_ifs"
7022775e7de9Smrg	    if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
7023775e7de9Smrg	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
7024775e7de9Smrg	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
7025775e7de9Smrg	    fi
7026775e7de9Smrg	  fi
70277a84e134Smrg	fi
70287a84e134Smrg
7029775e7de9Smrg	if test -n "$export_symbols" && test -n "$include_expsyms"; then
7030775e7de9Smrg	  tmp_export_symbols="$export_symbols"
7031775e7de9Smrg	  test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
7032775e7de9Smrg	  $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
7033775e7de9Smrg	fi
70347a84e134Smrg
7035775e7de9Smrg	if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
7036775e7de9Smrg	  # The given exports_symbols file has to be filtered, so filter it.
7037775e7de9Smrg	  func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
7038775e7de9Smrg	  # FIXME: $output_objdir/$libname.filter potentially contains lots of
7039775e7de9Smrg	  # 's' commands which not all seds can handle. GNU sed should be fine
7040775e7de9Smrg	  # though. Also, the filter scales superlinearly with the number of
7041775e7de9Smrg	  # global variables. join(1) would be nice here, but unfortunately
7042775e7de9Smrg	  # isn't a blessed tool.
7043775e7de9Smrg	  $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
7044775e7de9Smrg	  delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
7045775e7de9Smrg	  export_symbols=$output_objdir/$libname.def
7046775e7de9Smrg	  $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
7047775e7de9Smrg	fi
70487a84e134Smrg
7049775e7de9Smrg	tmp_deplibs=
7050775e7de9Smrg	for test_deplib in $deplibs; do
7051775e7de9Smrg	  case " $convenience " in
7052775e7de9Smrg	  *" $test_deplib "*) ;;
7053775e7de9Smrg	  *)
7054775e7de9Smrg	    tmp_deplibs="$tmp_deplibs $test_deplib"
7055775e7de9Smrg	    ;;
7056775e7de9Smrg	  esac
7057775e7de9Smrg	done
7058775e7de9Smrg	deplibs="$tmp_deplibs"
70597a84e134Smrg
7060775e7de9Smrg	if test -n "$convenience"; then
7061775e7de9Smrg	  if test -n "$whole_archive_flag_spec" &&
7062775e7de9Smrg	    test "$compiler_needs_object" = yes &&
7063775e7de9Smrg	    test -z "$libobjs"; then
7064775e7de9Smrg	    # extract the archives, so we have objects to list.
7065775e7de9Smrg	    # TODO: could optimize this to just extract one archive.
7066775e7de9Smrg	    whole_archive_flag_spec=
7067775e7de9Smrg	  fi
7068775e7de9Smrg	  if test -n "$whole_archive_flag_spec"; then
7069775e7de9Smrg	    save_libobjs=$libobjs
7070775e7de9Smrg	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
7071775e7de9Smrg	    test "X$libobjs" = "X " && libobjs=
7072775e7de9Smrg	  else
7073775e7de9Smrg	    gentop="$output_objdir/${outputname}x"
7074775e7de9Smrg	    generated="$generated $gentop"
70757a84e134Smrg
7076775e7de9Smrg	    func_extract_archives $gentop $convenience
7077775e7de9Smrg	    libobjs="$libobjs $func_extract_archives_result"
7078775e7de9Smrg	    test "X$libobjs" = "X " && libobjs=
7079775e7de9Smrg	  fi
70807a84e134Smrg	fi
70817a84e134Smrg
7082775e7de9Smrg	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
7083775e7de9Smrg	  eval flag=\"$thread_safe_flag_spec\"
7084775e7de9Smrg	  linker_flags="$linker_flags $flag"
70857a84e134Smrg	fi
70867a84e134Smrg
7087775e7de9Smrg	# Make a backup of the uninstalled library when relinking
7088775e7de9Smrg	if test "$mode" = relink; then
7089775e7de9Smrg	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
7090775e7de9Smrg	fi
70917a84e134Smrg
7092775e7de9Smrg	# Do each of the archive commands.
7093775e7de9Smrg	if test "$module" = yes && test -n "$module_cmds" ; then
7094775e7de9Smrg	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
7095775e7de9Smrg	    eval test_cmds=\"$module_expsym_cmds\"
7096775e7de9Smrg	    cmds=$module_expsym_cmds
7097775e7de9Smrg	  else
7098775e7de9Smrg	    eval test_cmds=\"$module_cmds\"
7099775e7de9Smrg	    cmds=$module_cmds
7100775e7de9Smrg	  fi
71017a84e134Smrg	else
7102775e7de9Smrg	  if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
7103775e7de9Smrg	    eval test_cmds=\"$archive_expsym_cmds\"
7104775e7de9Smrg	    cmds=$archive_expsym_cmds
7105775e7de9Smrg	  else
7106775e7de9Smrg	    eval test_cmds=\"$archive_cmds\"
7107775e7de9Smrg	    cmds=$archive_cmds
7108775e7de9Smrg	  fi
71097a84e134Smrg	fi
71107a84e134Smrg
7111775e7de9Smrg	if test "X$skipped_export" != "X:" &&
7112775e7de9Smrg	   func_len " $test_cmds" &&
7113775e7de9Smrg	   len=$func_len_result &&
7114775e7de9Smrg	   test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
7115775e7de9Smrg	  :
7116775e7de9Smrg	else
7117775e7de9Smrg	  # The command line is too long to link in one step, link piecewise
7118775e7de9Smrg	  # or, if using GNU ld and skipped_export is not :, use a linker
7119775e7de9Smrg	  # script.
71207a84e134Smrg
7121775e7de9Smrg	  # Save the value of $output and $libobjs because we want to
7122775e7de9Smrg	  # use them later.  If we have whole_archive_flag_spec, we
7123775e7de9Smrg	  # want to use save_libobjs as it was before
7124775e7de9Smrg	  # whole_archive_flag_spec was expanded, because we can't
7125775e7de9Smrg	  # assume the linker understands whole_archive_flag_spec.
7126775e7de9Smrg	  # This may have to be revisited, in case too many
7127775e7de9Smrg	  # convenience libraries get linked in and end up exceeding
7128775e7de9Smrg	  # the spec.
7129775e7de9Smrg	  if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
7130775e7de9Smrg	    save_libobjs=$libobjs
7131775e7de9Smrg	  fi
7132775e7de9Smrg	  save_output=$output
7133775e7de9Smrg	  output_la=`$ECHO "X$output" | $Xsed -e "$basename"`
71347a84e134Smrg
7135775e7de9Smrg	  # Clear the reloadable object creation command queue and
7136775e7de9Smrg	  # initialize k to one.
7137775e7de9Smrg	  test_cmds=
7138775e7de9Smrg	  concat_cmds=
7139775e7de9Smrg	  objlist=
7140775e7de9Smrg	  last_robj=
7141775e7de9Smrg	  k=1
7142775e7de9Smrg
7143775e7de9Smrg	  if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
7144775e7de9Smrg	    output=${output_objdir}/${output_la}.lnkscript
7145775e7de9Smrg	    func_verbose "creating GNU ld script: $output"
7146775e7de9Smrg	    $ECHO 'INPUT (' > $output
7147775e7de9Smrg	    for obj in $save_libobjs
71487a84e134Smrg	    do
7149775e7de9Smrg	      $ECHO "$obj" >> $output
7150775e7de9Smrg	    done
7151775e7de9Smrg	    $ECHO ')' >> $output
7152775e7de9Smrg	    delfiles="$delfiles $output"
7153775e7de9Smrg	  elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
7154775e7de9Smrg	    output=${output_objdir}/${output_la}.lnk
7155775e7de9Smrg	    func_verbose "creating linker input file list: $output"
7156775e7de9Smrg	    : > $output
7157775e7de9Smrg	    set x $save_libobjs
7158775e7de9Smrg	    shift
7159775e7de9Smrg	    firstobj=
7160775e7de9Smrg	    if test "$compiler_needs_object" = yes; then
7161775e7de9Smrg	      firstobj="$1 "
7162775e7de9Smrg	      shift
7163775e7de9Smrg	    fi
7164775e7de9Smrg	    for obj
7165775e7de9Smrg	    do
7166775e7de9Smrg	      $ECHO "$obj" >> $output
7167775e7de9Smrg	    done
7168775e7de9Smrg	    delfiles="$delfiles $output"
7169775e7de9Smrg	    output=$firstobj\"$file_list_spec$output\"
7170775e7de9Smrg	  else
7171775e7de9Smrg	    if test -n "$save_libobjs"; then
7172775e7de9Smrg	      func_verbose "creating reloadable object files..."
7173775e7de9Smrg	      output=$output_objdir/$output_la-${k}.$objext
7174775e7de9Smrg	      eval test_cmds=\"$reload_cmds\"
7175775e7de9Smrg	      func_len " $test_cmds"
7176775e7de9Smrg	      len0=$func_len_result
7177775e7de9Smrg	      len=$len0
7178775e7de9Smrg
7179775e7de9Smrg	      # Loop over the list of objects to be linked.
7180775e7de9Smrg	      for obj in $save_libobjs
7181775e7de9Smrg	      do
7182775e7de9Smrg		func_len " $obj"
7183775e7de9Smrg		func_arith $len + $func_len_result
7184775e7de9Smrg		len=$func_arith_result
7185775e7de9Smrg		if test "X$objlist" = X ||
7186775e7de9Smrg		   test "$len" -lt "$max_cmd_len"; then
7187775e7de9Smrg		  func_append objlist " $obj"
7188775e7de9Smrg		else
7189775e7de9Smrg		  # The command $test_cmds is almost too long, add a
7190775e7de9Smrg		  # command to the queue.
7191775e7de9Smrg		  if test "$k" -eq 1 ; then
7192775e7de9Smrg		    # The first file doesn't have a previous command to add.
7193775e7de9Smrg		    eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
7194775e7de9Smrg		  else
7195775e7de9Smrg		    # All subsequent reloadable object files will link in
7196775e7de9Smrg		    # the last one created.
7197775e7de9Smrg		    eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj~\$RM $last_robj\"
7198775e7de9Smrg		  fi
7199775e7de9Smrg		  last_robj=$output_objdir/$output_la-${k}.$objext
7200775e7de9Smrg		  func_arith $k + 1
7201775e7de9Smrg		  k=$func_arith_result
7202775e7de9Smrg		  output=$output_objdir/$output_la-${k}.$objext
7203775e7de9Smrg		  objlist=$obj
7204775e7de9Smrg		  func_len " $last_robj"
7205775e7de9Smrg		  func_arith $len0 + $func_len_result
7206775e7de9Smrg		  len=$func_arith_result
7207775e7de9Smrg		fi
7208775e7de9Smrg	      done
7209775e7de9Smrg	      # Handle the remaining objects by creating one last
7210775e7de9Smrg	      # reloadable object file.  All subsequent reloadable object
7211775e7de9Smrg	      # files will link in the last one created.
7212775e7de9Smrg	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
7213775e7de9Smrg	      eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
7214775e7de9Smrg	      if test -n "$last_robj"; then
7215775e7de9Smrg	        eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
7216775e7de9Smrg	      fi
7217775e7de9Smrg	      delfiles="$delfiles $output"
72187a84e134Smrg
7219775e7de9Smrg	    else
7220775e7de9Smrg	      output=
7221775e7de9Smrg	    fi
72227a84e134Smrg
7223775e7de9Smrg	    if ${skipped_export-false}; then
7224775e7de9Smrg	      func_verbose "generating symbol list for \`$libname.la'"
7225775e7de9Smrg	      export_symbols="$output_objdir/$libname.exp"
7226775e7de9Smrg	      $opt_dry_run || $RM $export_symbols
7227775e7de9Smrg	      libobjs=$output
7228775e7de9Smrg	      # Append the command to create the export file.
7229775e7de9Smrg	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
7230775e7de9Smrg	      eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
7231775e7de9Smrg	      if test -n "$last_robj"; then
7232775e7de9Smrg		eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
7233775e7de9Smrg	      fi
72347a84e134Smrg	    fi
72357a84e134Smrg
7236775e7de9Smrg	    test -n "$save_libobjs" &&
7237775e7de9Smrg	      func_verbose "creating a temporary reloadable object file: $output"
72387a84e134Smrg
7239775e7de9Smrg	    # Loop through the commands generated above and execute them.
7240775e7de9Smrg	    save_ifs="$IFS"; IFS='~'
7241775e7de9Smrg	    for cmd in $concat_cmds; do
7242775e7de9Smrg	      IFS="$save_ifs"
7243775e7de9Smrg	      $opt_silent || {
7244775e7de9Smrg		  func_quote_for_expand "$cmd"
7245775e7de9Smrg		  eval "func_echo $func_quote_for_expand_result"
7246775e7de9Smrg	      }
7247775e7de9Smrg	      $opt_dry_run || eval "$cmd" || {
7248775e7de9Smrg		lt_exit=$?
7249775e7de9Smrg
7250775e7de9Smrg		# Restore the uninstalled library and exit
7251775e7de9Smrg		if test "$mode" = relink; then
7252775e7de9Smrg		  ( cd "$output_objdir" && \
7253775e7de9Smrg		    $RM "${realname}T" && \
7254775e7de9Smrg		    $MV "${realname}U" "$realname" )
7255775e7de9Smrg		fi
72567a84e134Smrg
7257775e7de9Smrg		exit $lt_exit
7258775e7de9Smrg	      }
7259775e7de9Smrg	    done
7260775e7de9Smrg	    IFS="$save_ifs"
72617a84e134Smrg
7262775e7de9Smrg	    if test -n "$export_symbols_regex" && ${skipped_export-false}; then
7263775e7de9Smrg	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
7264775e7de9Smrg	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
72657a84e134Smrg	    fi
72667a84e134Smrg	  fi
72677a84e134Smrg
7268775e7de9Smrg          if ${skipped_export-false}; then
7269775e7de9Smrg	    if test -n "$export_symbols" && test -n "$include_expsyms"; then
7270775e7de9Smrg	      tmp_export_symbols="$export_symbols"
7271775e7de9Smrg	      test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
7272775e7de9Smrg	      $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
7273775e7de9Smrg	    fi
72747a84e134Smrg
7275775e7de9Smrg	    if test -n "$orig_export_symbols"; then
7276775e7de9Smrg	      # The given exports_symbols file has to be filtered, so filter it.
7277775e7de9Smrg	      func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
7278775e7de9Smrg	      # FIXME: $output_objdir/$libname.filter potentially contains lots of
7279775e7de9Smrg	      # 's' commands which not all seds can handle. GNU sed should be fine
7280775e7de9Smrg	      # though. Also, the filter scales superlinearly with the number of
7281775e7de9Smrg	      # global variables. join(1) would be nice here, but unfortunately
7282775e7de9Smrg	      # isn't a blessed tool.
7283775e7de9Smrg	      $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
7284775e7de9Smrg	      delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
7285775e7de9Smrg	      export_symbols=$output_objdir/$libname.def
7286775e7de9Smrg	      $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
7287775e7de9Smrg	    fi
7288775e7de9Smrg	  fi
72897a84e134Smrg
7290775e7de9Smrg	  libobjs=$output
7291775e7de9Smrg	  # Restore the value of output.
7292775e7de9Smrg	  output=$save_output
72937a84e134Smrg
7294775e7de9Smrg	  if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
7295775e7de9Smrg	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
7296775e7de9Smrg	    test "X$libobjs" = "X " && libobjs=
7297775e7de9Smrg	  fi
7298775e7de9Smrg	  # Expand the library linking commands again to reset the
7299775e7de9Smrg	  # value of $libobjs for piecewise linking.
73007a84e134Smrg
7301775e7de9Smrg	  # Do each of the archive commands.
7302775e7de9Smrg	  if test "$module" = yes && test -n "$module_cmds" ; then
7303775e7de9Smrg	    if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
7304775e7de9Smrg	      cmds=$module_expsym_cmds
7305775e7de9Smrg	    else
7306775e7de9Smrg	      cmds=$module_cmds
73077a84e134Smrg	    fi
73087a84e134Smrg	  else
7309775e7de9Smrg	    if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
7310775e7de9Smrg	      cmds=$archive_expsym_cmds
7311775e7de9Smrg	    else
7312775e7de9Smrg	      cmds=$archive_cmds
7313775e7de9Smrg	    fi
73147a84e134Smrg	  fi
7315775e7de9Smrg	fi
73167a84e134Smrg
7317775e7de9Smrg	if test -n "$delfiles"; then
7318775e7de9Smrg	  # Append the command to remove temporary files to $cmds.
7319775e7de9Smrg	  eval cmds=\"\$cmds~\$RM $delfiles\"
7320775e7de9Smrg	fi
73217a84e134Smrg
7322775e7de9Smrg	# Add any objects from preloaded convenience libraries
7323775e7de9Smrg	if test -n "$dlprefiles"; then
7324775e7de9Smrg	  gentop="$output_objdir/${outputname}x"
7325775e7de9Smrg	  generated="$generated $gentop"
73267a84e134Smrg
7327775e7de9Smrg	  func_extract_archives $gentop $dlprefiles
7328775e7de9Smrg	  libobjs="$libobjs $func_extract_archives_result"
7329775e7de9Smrg	  test "X$libobjs" = "X " && libobjs=
7330775e7de9Smrg	fi
73317a84e134Smrg
7332775e7de9Smrg	save_ifs="$IFS"; IFS='~'
7333775e7de9Smrg	for cmd in $cmds; do
7334775e7de9Smrg	  IFS="$save_ifs"
7335775e7de9Smrg	  eval cmd=\"$cmd\"
7336775e7de9Smrg	  $opt_silent || {
7337775e7de9Smrg	    func_quote_for_expand "$cmd"
7338775e7de9Smrg	    eval "func_echo $func_quote_for_expand_result"
7339775e7de9Smrg	  }
7340775e7de9Smrg	  $opt_dry_run || eval "$cmd" || {
7341775e7de9Smrg	    lt_exit=$?
73427a84e134Smrg
7343775e7de9Smrg	    # Restore the uninstalled library and exit
7344775e7de9Smrg	    if test "$mode" = relink; then
7345775e7de9Smrg	      ( cd "$output_objdir" && \
7346775e7de9Smrg	        $RM "${realname}T" && \
7347775e7de9Smrg		$MV "${realname}U" "$realname" )
7348775e7de9Smrg	    fi
73497a84e134Smrg
7350775e7de9Smrg	    exit $lt_exit
7351775e7de9Smrg	  }
7352775e7de9Smrg	done
7353775e7de9Smrg	IFS="$save_ifs"
73547a84e134Smrg
7355775e7de9Smrg	# Restore the uninstalled library and exit
7356775e7de9Smrg	if test "$mode" = relink; then
7357775e7de9Smrg	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
73587a84e134Smrg
7359775e7de9Smrg	  if test -n "$convenience"; then
7360775e7de9Smrg	    if test -z "$whole_archive_flag_spec"; then
7361775e7de9Smrg	      func_show_eval '${RM}r "$gentop"'
7362775e7de9Smrg	    fi
7363775e7de9Smrg	  fi
73647a84e134Smrg
7365775e7de9Smrg	  exit $EXIT_SUCCESS
7366775e7de9Smrg	fi
7367775e7de9Smrg
7368775e7de9Smrg	# Create links to the real library.
7369775e7de9Smrg	for linkname in $linknames; do
7370775e7de9Smrg	  if test "$realname" != "$linkname"; then
7371775e7de9Smrg	    func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
73727a84e134Smrg	  fi
73737a84e134Smrg	done
73747a84e134Smrg
7375775e7de9Smrg	# If -module or -export-dynamic was specified, set the dlname.
7376775e7de9Smrg	if test "$module" = yes || test "$export_dynamic" = yes; then
7377775e7de9Smrg	  # On all known operating systems, these are identical.
7378775e7de9Smrg	  dlname="$soname"
7379775e7de9Smrg	fi
7380775e7de9Smrg      fi
73817a84e134Smrg      ;;
73827a84e134Smrg
7383775e7de9Smrg    obj)
7384775e7de9Smrg      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
7385775e7de9Smrg	func_warning "\`-dlopen' is ignored for objects"
7386775e7de9Smrg      fi
73877a84e134Smrg
7388775e7de9Smrg      case " $deplibs" in
7389775e7de9Smrg      *\ -l* | *\ -L*)
7390775e7de9Smrg	func_warning "\`-l' and \`-L' are ignored for objects" ;;
73917a84e134Smrg      esac
73927a84e134Smrg
7393775e7de9Smrg      test -n "$rpath" && \
7394775e7de9Smrg	func_warning "\`-rpath' is ignored for objects"
7395775e7de9Smrg
7396775e7de9Smrg      test -n "$xrpath" && \
7397775e7de9Smrg	func_warning "\`-R' is ignored for objects"
73987a84e134Smrg
7399775e7de9Smrg      test -n "$vinfo" && \
7400775e7de9Smrg	func_warning "\`-version-info' is ignored for objects"
74017a84e134Smrg
7402775e7de9Smrg      test -n "$release" && \
7403775e7de9Smrg	func_warning "\`-release' is ignored for objects"
7404775e7de9Smrg
7405775e7de9Smrg      case $output in
7406775e7de9Smrg      *.lo)
7407775e7de9Smrg	test -n "$objs$old_deplibs" && \
7408775e7de9Smrg	  func_fatal_error "cannot build library object \`$output' from non-libtool objects"
7409775e7de9Smrg
7410775e7de9Smrg	libobj=$output
7411775e7de9Smrg	func_lo2o "$libobj"
7412775e7de9Smrg	obj=$func_lo2o_result
74137a84e134Smrg	;;
74147a84e134Smrg      *)
7415775e7de9Smrg	libobj=
7416775e7de9Smrg	obj="$output"
74177a84e134Smrg	;;
74187a84e134Smrg      esac
74197a84e134Smrg
7420775e7de9Smrg      # Delete the old objects.
7421775e7de9Smrg      $opt_dry_run || $RM $obj $libobj
74227a84e134Smrg
7423775e7de9Smrg      # Objects from convenience libraries.  This assumes
7424775e7de9Smrg      # single-version convenience libraries.  Whenever we create
7425775e7de9Smrg      # different ones for PIC/non-PIC, this we'll have to duplicate
7426775e7de9Smrg      # the extraction.
7427775e7de9Smrg      reload_conv_objs=
7428775e7de9Smrg      gentop=
7429775e7de9Smrg      # reload_cmds runs $LD directly, so let us get rid of
7430775e7de9Smrg      # -Wl from whole_archive_flag_spec and hope we can get by with
7431775e7de9Smrg      # turning comma into space..
7432775e7de9Smrg      wl=
74337a84e134Smrg
7434775e7de9Smrg      if test -n "$convenience"; then
7435775e7de9Smrg	if test -n "$whole_archive_flag_spec"; then
7436775e7de9Smrg	  eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
7437775e7de9Smrg	  reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'`
7438775e7de9Smrg	else
7439775e7de9Smrg	  gentop="$output_objdir/${obj}x"
7440775e7de9Smrg	  generated="$generated $gentop"
74417a84e134Smrg
7442775e7de9Smrg	  func_extract_archives $gentop $convenience
7443775e7de9Smrg	  reload_conv_objs="$reload_objs $func_extract_archives_result"
7444775e7de9Smrg	fi
74457a84e134Smrg      fi
74467a84e134Smrg
7447775e7de9Smrg      # Create the old-style object.
7448775e7de9Smrg      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
74497a84e134Smrg
7450775e7de9Smrg      output="$obj"
7451775e7de9Smrg      func_execute_cmds "$reload_cmds" 'exit $?'
74527a84e134Smrg
7453775e7de9Smrg      # Exit if we aren't doing a library object file.
7454775e7de9Smrg      if test -z "$libobj"; then
7455775e7de9Smrg	if test -n "$gentop"; then
7456775e7de9Smrg	  func_show_eval '${RM}r "$gentop"'
7457775e7de9Smrg	fi
7458775e7de9Smrg
7459775e7de9Smrg	exit $EXIT_SUCCESS
74607a84e134Smrg      fi
7461775e7de9Smrg
7462775e7de9Smrg      if test "$build_libtool_libs" != yes; then
7463775e7de9Smrg	if test -n "$gentop"; then
7464775e7de9Smrg	  func_show_eval '${RM}r "$gentop"'
7465775e7de9Smrg	fi
7466775e7de9Smrg
7467775e7de9Smrg	# Create an invalid libtool object if no PIC, so that we don't
7468775e7de9Smrg	# accidentally link it into a program.
7469775e7de9Smrg	# $show "echo timestamp > $libobj"
7470775e7de9Smrg	# $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
7471775e7de9Smrg	exit $EXIT_SUCCESS
7472775e7de9Smrg      fi
7473775e7de9Smrg
7474775e7de9Smrg      if test -n "$pic_flag" || test "$pic_mode" != default; then
7475775e7de9Smrg	# Only do commands if we really have different PIC objects.
7476775e7de9Smrg	reload_objs="$libobjs $reload_conv_objs"
7477775e7de9Smrg	output="$libobj"
7478775e7de9Smrg	func_execute_cmds "$reload_cmds" 'exit $?'
7479775e7de9Smrg      fi
7480775e7de9Smrg
7481775e7de9Smrg      if test -n "$gentop"; then
7482775e7de9Smrg	func_show_eval '${RM}r "$gentop"'
7483775e7de9Smrg      fi
7484775e7de9Smrg
7485775e7de9Smrg      exit $EXIT_SUCCESS
74867a84e134Smrg      ;;
74877a84e134Smrg
7488775e7de9Smrg    prog)
7489775e7de9Smrg      case $host in
7490775e7de9Smrg	*cygwin*) func_stripname '' '.exe' "$output"
7491775e7de9Smrg	          output=$func_stripname_result.exe;;
7492775e7de9Smrg      esac
7493775e7de9Smrg      test -n "$vinfo" && \
7494775e7de9Smrg	func_warning "\`-version-info' is ignored for programs"
74957a84e134Smrg
7496775e7de9Smrg      test -n "$release" && \
7497775e7de9Smrg	func_warning "\`-release' is ignored for programs"
74987a84e134Smrg
7499775e7de9Smrg      test "$preload" = yes \
7500775e7de9Smrg        && test "$dlopen_support" = unknown \
7501775e7de9Smrg	&& test "$dlopen_self" = unknown \
7502775e7de9Smrg	&& test "$dlopen_self_static" = unknown && \
7503775e7de9Smrg	  func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
7504775e7de9Smrg
7505775e7de9Smrg      case $host in
7506775e7de9Smrg      *-*-rhapsody* | *-*-darwin1.[012])
7507775e7de9Smrg	# On Rhapsody replace the C library is the System framework
7508775e7de9Smrg	compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
7509775e7de9Smrg	finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
75107a84e134Smrg	;;
7511775e7de9Smrg      esac
75127a84e134Smrg
7513775e7de9Smrg      case $host in
7514775e7de9Smrg      *-*-darwin*)
7515775e7de9Smrg	# Don't allow lazy linking, it breaks C++ global constructors
7516775e7de9Smrg	# But is supposedly fixed on 10.4 or later (yay!).
7517775e7de9Smrg	if test "$tagname" = CXX ; then
7518775e7de9Smrg	  case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
7519775e7de9Smrg	    10.[0123])
7520775e7de9Smrg	      compile_command="$compile_command ${wl}-bind_at_load"
7521775e7de9Smrg	      finalize_command="$finalize_command ${wl}-bind_at_load"
7522775e7de9Smrg	    ;;
7523775e7de9Smrg	  esac
75247a84e134Smrg	fi
7525775e7de9Smrg	# Time to change all our "foo.ltframework" stuff back to "-framework foo"
7526775e7de9Smrg	compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
7527775e7de9Smrg	finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
7528775e7de9Smrg	;;
7529775e7de9Smrg      esac
75307a84e134Smrg
75317a84e134Smrg
7532775e7de9Smrg      # move library search paths that coincide with paths to not yet
7533775e7de9Smrg      # installed libraries to the beginning of the library search list
7534775e7de9Smrg      new_libs=
7535775e7de9Smrg      for path in $notinst_path; do
7536775e7de9Smrg	case " $new_libs " in
7537775e7de9Smrg	*" -L$path/$objdir "*) ;;
7538775e7de9Smrg	*)
7539775e7de9Smrg	  case " $compile_deplibs " in
7540775e7de9Smrg	  *" -L$path/$objdir "*)
7541775e7de9Smrg	    new_libs="$new_libs -L$path/$objdir" ;;
75427a84e134Smrg	  esac
7543775e7de9Smrg	  ;;
7544775e7de9Smrg	esac
7545775e7de9Smrg      done
7546775e7de9Smrg      for deplib in $compile_deplibs; do
7547775e7de9Smrg	case $deplib in
7548775e7de9Smrg	-L*)
7549775e7de9Smrg	  case " $new_libs " in
7550775e7de9Smrg	  *" $deplib "*) ;;
7551775e7de9Smrg	  *) new_libs="$new_libs $deplib" ;;
75527a84e134Smrg	  esac
7553775e7de9Smrg	  ;;
7554775e7de9Smrg	*) new_libs="$new_libs $deplib" ;;
7555775e7de9Smrg	esac
7556775e7de9Smrg      done
7557775e7de9Smrg      compile_deplibs="$new_libs"
75587a84e134Smrg
75597a84e134Smrg
7560775e7de9Smrg      compile_command="$compile_command $compile_deplibs"
7561775e7de9Smrg      finalize_command="$finalize_command $finalize_deplibs"
75627a84e134Smrg
7563775e7de9Smrg      if test -n "$rpath$xrpath"; then
7564775e7de9Smrg	# If the user specified any rpath flags, then add them.
7565775e7de9Smrg	for libdir in $rpath $xrpath; do
7566775e7de9Smrg	  # This is the magic to use -rpath.
7567775e7de9Smrg	  case "$finalize_rpath " in
7568775e7de9Smrg	  *" $libdir "*) ;;
7569775e7de9Smrg	  *) finalize_rpath="$finalize_rpath $libdir" ;;
7570775e7de9Smrg	  esac
7571775e7de9Smrg	done
7572775e7de9Smrg      fi
75737a84e134Smrg
7574775e7de9Smrg      # Now hardcode the library paths
7575775e7de9Smrg      rpath=
7576775e7de9Smrg      hardcode_libdirs=
7577775e7de9Smrg      for libdir in $compile_rpath $finalize_rpath; do
7578775e7de9Smrg	if test -n "$hardcode_libdir_flag_spec"; then
7579775e7de9Smrg	  if test -n "$hardcode_libdir_separator"; then
7580775e7de9Smrg	    if test -z "$hardcode_libdirs"; then
7581775e7de9Smrg	      hardcode_libdirs="$libdir"
7582775e7de9Smrg	    else
7583775e7de9Smrg	      # Just accumulate the unique libdirs.
7584775e7de9Smrg	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
7585775e7de9Smrg	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
7586775e7de9Smrg		;;
7587775e7de9Smrg	      *)
7588775e7de9Smrg		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
7589775e7de9Smrg		;;
7590775e7de9Smrg	      esac
7591775e7de9Smrg	    fi
75927a84e134Smrg	  else
7593775e7de9Smrg	    eval flag=\"$hardcode_libdir_flag_spec\"
7594775e7de9Smrg	    rpath="$rpath $flag"
75957a84e134Smrg	  fi
7596775e7de9Smrg	elif test -n "$runpath_var"; then
7597775e7de9Smrg	  case "$perm_rpath " in
7598775e7de9Smrg	  *" $libdir "*) ;;
7599775e7de9Smrg	  *) perm_rpath="$perm_rpath $libdir" ;;
7600775e7de9Smrg	  esac
7601775e7de9Smrg	fi
7602775e7de9Smrg	case $host in
7603775e7de9Smrg	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
7604775e7de9Smrg	  testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
7605775e7de9Smrg	  case :$dllsearchpath: in
7606775e7de9Smrg	  *":$libdir:"*) ;;
7607775e7de9Smrg	  ::) dllsearchpath=$libdir;;
7608775e7de9Smrg	  *) dllsearchpath="$dllsearchpath:$libdir";;
7609775e7de9Smrg	  esac
7610775e7de9Smrg	  case :$dllsearchpath: in
7611775e7de9Smrg	  *":$testbindir:"*) ;;
7612775e7de9Smrg	  ::) dllsearchpath=$testbindir;;
7613775e7de9Smrg	  *) dllsearchpath="$dllsearchpath:$testbindir";;
7614775e7de9Smrg	  esac
7615775e7de9Smrg	  ;;
7616775e7de9Smrg	esac
7617775e7de9Smrg      done
7618775e7de9Smrg      # Substitute the hardcoded libdirs into the rpath.
7619775e7de9Smrg      if test -n "$hardcode_libdir_separator" &&
7620775e7de9Smrg	 test -n "$hardcode_libdirs"; then
7621775e7de9Smrg	libdir="$hardcode_libdirs"
7622775e7de9Smrg	eval rpath=\" $hardcode_libdir_flag_spec\"
7623775e7de9Smrg      fi
7624775e7de9Smrg      compile_rpath="$rpath"
76257a84e134Smrg
7626775e7de9Smrg      rpath=
7627775e7de9Smrg      hardcode_libdirs=
7628775e7de9Smrg      for libdir in $finalize_rpath; do
7629775e7de9Smrg	if test -n "$hardcode_libdir_flag_spec"; then
7630775e7de9Smrg	  if test -n "$hardcode_libdir_separator"; then
7631775e7de9Smrg	    if test -z "$hardcode_libdirs"; then
7632775e7de9Smrg	      hardcode_libdirs="$libdir"
7633775e7de9Smrg	    else
7634775e7de9Smrg	      # Just accumulate the unique libdirs.
7635775e7de9Smrg	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
7636775e7de9Smrg	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
7637775e7de9Smrg		;;
7638775e7de9Smrg	      *)
7639775e7de9Smrg		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
7640775e7de9Smrg		;;
7641775e7de9Smrg	      esac
7642775e7de9Smrg	    fi
76437a84e134Smrg	  else
7644775e7de9Smrg	    eval flag=\"$hardcode_libdir_flag_spec\"
7645775e7de9Smrg	    rpath="$rpath $flag"
76467a84e134Smrg	  fi
7647775e7de9Smrg	elif test -n "$runpath_var"; then
7648775e7de9Smrg	  case "$finalize_perm_rpath " in
7649775e7de9Smrg	  *" $libdir "*) ;;
7650775e7de9Smrg	  *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
7651775e7de9Smrg	  esac
76527a84e134Smrg	fi
7653775e7de9Smrg      done
7654775e7de9Smrg      # Substitute the hardcoded libdirs into the rpath.
7655775e7de9Smrg      if test -n "$hardcode_libdir_separator" &&
7656775e7de9Smrg	 test -n "$hardcode_libdirs"; then
7657775e7de9Smrg	libdir="$hardcode_libdirs"
7658775e7de9Smrg	eval rpath=\" $hardcode_libdir_flag_spec\"
7659775e7de9Smrg      fi
7660775e7de9Smrg      finalize_rpath="$rpath"
76617a84e134Smrg
7662775e7de9Smrg      if test -n "$libobjs" && test "$build_old_libs" = yes; then
7663775e7de9Smrg	# Transform all the library objects into standard objects.
7664775e7de9Smrg	compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
7665775e7de9Smrg	finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
7666775e7de9Smrg      fi
76677a84e134Smrg
7668775e7de9Smrg      func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
76697a84e134Smrg
7670775e7de9Smrg      # template prelinking step
7671775e7de9Smrg      if test -n "$prelink_cmds"; then
7672775e7de9Smrg	func_execute_cmds "$prelink_cmds" 'exit $?'
7673775e7de9Smrg      fi
76747a84e134Smrg
7675775e7de9Smrg      wrappers_required=yes
7676775e7de9Smrg      case $host in
7677775e7de9Smrg      *cygwin* | *mingw* )
7678775e7de9Smrg        if test "$build_libtool_libs" != yes; then
7679775e7de9Smrg          wrappers_required=no
7680775e7de9Smrg        fi
7681775e7de9Smrg        ;;
7682775e7de9Smrg      *cegcc)
7683775e7de9Smrg        # Disable wrappers for cegcc, we are cross compiling anyway.
7684775e7de9Smrg        wrappers_required=no
7685775e7de9Smrg        ;;
7686775e7de9Smrg      *)
7687775e7de9Smrg        if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
7688775e7de9Smrg          wrappers_required=no
7689775e7de9Smrg        fi
7690775e7de9Smrg        ;;
7691775e7de9Smrg      esac
7692775e7de9Smrg      if test "$wrappers_required" = no; then
7693775e7de9Smrg	# Replace the output file specification.
7694775e7de9Smrg	compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
7695775e7de9Smrg	link_command="$compile_command$compile_rpath"
76967a84e134Smrg
7697775e7de9Smrg	# We have no uninstalled library dependencies, so finalize right now.
7698775e7de9Smrg	exit_status=0
7699775e7de9Smrg	func_show_eval "$link_command" 'exit_status=$?'
77007a84e134Smrg
7701775e7de9Smrg	# Delete the generated files.
7702775e7de9Smrg	if test -f "$output_objdir/${outputname}S.${objext}"; then
7703775e7de9Smrg	  func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
77047a84e134Smrg	fi
77057a84e134Smrg
7706775e7de9Smrg	exit $exit_status
7707775e7de9Smrg      fi
77087a84e134Smrg
7709775e7de9Smrg      if test -n "$compile_shlibpath$finalize_shlibpath"; then
7710775e7de9Smrg	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
7711775e7de9Smrg      fi
7712775e7de9Smrg      if test -n "$finalize_shlibpath"; then
7713775e7de9Smrg	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
7714775e7de9Smrg      fi
77157a84e134Smrg
7716775e7de9Smrg      compile_var=
7717775e7de9Smrg      finalize_var=
7718775e7de9Smrg      if test -n "$runpath_var"; then
7719775e7de9Smrg	if test -n "$perm_rpath"; then
7720775e7de9Smrg	  # We should set the runpath_var.
7721775e7de9Smrg	  rpath=
7722775e7de9Smrg	  for dir in $perm_rpath; do
7723775e7de9Smrg	    rpath="$rpath$dir:"
7724775e7de9Smrg	  done
7725775e7de9Smrg	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
77267a84e134Smrg	fi
7727775e7de9Smrg	if test -n "$finalize_perm_rpath"; then
7728775e7de9Smrg	  # We should set the runpath_var.
7729775e7de9Smrg	  rpath=
7730775e7de9Smrg	  for dir in $finalize_perm_rpath; do
7731775e7de9Smrg	    rpath="$rpath$dir:"
7732775e7de9Smrg	  done
7733775e7de9Smrg	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
77347a84e134Smrg	fi
7735775e7de9Smrg      fi
77367a84e134Smrg
7737775e7de9Smrg      if test "$no_install" = yes; then
7738775e7de9Smrg	# We don't need to create a wrapper script.
7739775e7de9Smrg	link_command="$compile_var$compile_command$compile_rpath"
7740775e7de9Smrg	# Replace the output file specification.
7741775e7de9Smrg	link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
7742775e7de9Smrg	# Delete the old output file.
7743775e7de9Smrg	$opt_dry_run || $RM $output
7744775e7de9Smrg	# Link the executable and exit
7745775e7de9Smrg	func_show_eval "$link_command" 'exit $?'
77467a84e134Smrg	exit $EXIT_SUCCESS
7747775e7de9Smrg      fi
77487a84e134Smrg
7749775e7de9Smrg      if test "$hardcode_action" = relink; then
7750775e7de9Smrg	# Fast installation is not supported
7751775e7de9Smrg	link_command="$compile_var$compile_command$compile_rpath"
7752775e7de9Smrg	relink_command="$finalize_var$finalize_command$finalize_rpath"
7753775e7de9Smrg
7754775e7de9Smrg	func_warning "this platform does not like uninstalled shared libraries"
7755775e7de9Smrg	func_warning "\`$output' will be relinked during installation"
7756775e7de9Smrg      else
7757775e7de9Smrg	if test "$fast_install" != no; then
7758775e7de9Smrg	  link_command="$finalize_var$compile_command$finalize_rpath"
7759775e7de9Smrg	  if test "$fast_install" = yes; then
7760775e7de9Smrg	    relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
7761775e7de9Smrg	  else
7762775e7de9Smrg	    # fast_install is set to needless
7763775e7de9Smrg	    relink_command=
7764775e7de9Smrg	  fi
77657a84e134Smrg	else
7766775e7de9Smrg	  link_command="$compile_var$compile_command$compile_rpath"
7767775e7de9Smrg	  relink_command="$finalize_var$finalize_command$finalize_rpath"
77687a84e134Smrg	fi
7769775e7de9Smrg      fi
77707a84e134Smrg
7771775e7de9Smrg      # Replace the output file specification.
7772775e7de9Smrg      link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
77737a84e134Smrg
7774775e7de9Smrg      # Delete the old output files.
7775775e7de9Smrg      $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
77767a84e134Smrg
7777775e7de9Smrg      func_show_eval "$link_command" 'exit $?'
77787a84e134Smrg
7779775e7de9Smrg      # Now create the wrapper script.
7780775e7de9Smrg      func_verbose "creating $output"
77817a84e134Smrg
7782775e7de9Smrg      # Quote the relink command for shipping.
7783775e7de9Smrg      if test -n "$relink_command"; then
7784775e7de9Smrg	# Preserve any variables that may affect compiler behavior
7785775e7de9Smrg	for var in $variables_saved_for_relink; do
7786775e7de9Smrg	  if eval test -z \"\${$var+set}\"; then
7787775e7de9Smrg	    relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
7788775e7de9Smrg	  elif eval var_value=\$$var; test -z "$var_value"; then
7789775e7de9Smrg	    relink_command="$var=; export $var; $relink_command"
77907a84e134Smrg	  else
7791775e7de9Smrg	    func_quote_for_eval "$var_value"
7792775e7de9Smrg	    relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
77937a84e134Smrg	  fi
7794775e7de9Smrg	done
7795775e7de9Smrg	relink_command="(cd `pwd`; $relink_command)"
7796775e7de9Smrg	relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
7797775e7de9Smrg      fi
77987a84e134Smrg
7799775e7de9Smrg      # Quote $ECHO for shipping.
7800775e7de9Smrg      if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then
7801775e7de9Smrg	case $progpath in
7802775e7de9Smrg	[\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
7803775e7de9Smrg	*) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
7804775e7de9Smrg	esac
7805775e7de9Smrg	qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"`
7806775e7de9Smrg      else
7807775e7de9Smrg	qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"`
7808775e7de9Smrg      fi
7809775e7de9Smrg
7810775e7de9Smrg      # Only actually do things if not in dry run mode.
7811775e7de9Smrg      $opt_dry_run || {
7812775e7de9Smrg	# win32 will think the script is a binary if it has
7813775e7de9Smrg	# a .exe suffix, so we strip it off here.
7814775e7de9Smrg	case $output in
7815775e7de9Smrg	  *.exe) func_stripname '' '.exe' "$output"
7816775e7de9Smrg	         output=$func_stripname_result ;;
7817775e7de9Smrg	esac
7818775e7de9Smrg	# test for cygwin because mv fails w/o .exe extensions
7819775e7de9Smrg	case $host in
7820775e7de9Smrg	  *cygwin*)
7821775e7de9Smrg	    exeext=.exe
7822775e7de9Smrg	    func_stripname '' '.exe' "$outputname"
7823775e7de9Smrg	    outputname=$func_stripname_result ;;
7824775e7de9Smrg	  *) exeext= ;;
78257a84e134Smrg	esac
7826775e7de9Smrg	case $host in
7827775e7de9Smrg	  *cygwin* | *mingw* )
7828775e7de9Smrg	    func_dirname_and_basename "$output" "" "."
7829775e7de9Smrg	    output_name=$func_basename_result
7830775e7de9Smrg	    output_path=$func_dirname_result
7831775e7de9Smrg	    cwrappersource="$output_path/$objdir/lt-$output_name.c"
7832775e7de9Smrg	    cwrapper="$output_path/$output_name.exe"
7833775e7de9Smrg	    $RM $cwrappersource $cwrapper
7834775e7de9Smrg	    trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
7835775e7de9Smrg
7836775e7de9Smrg	    func_emit_cwrapperexe_src > $cwrappersource
7837775e7de9Smrg
7838775e7de9Smrg	    # The wrapper executable is built using the $host compiler,
7839775e7de9Smrg	    # because it contains $host paths and files. If cross-
7840775e7de9Smrg	    # compiling, it, like the target executable, must be
7841775e7de9Smrg	    # executed on the $host or under an emulation environment.
7842775e7de9Smrg	    $opt_dry_run || {
7843775e7de9Smrg	      $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
7844775e7de9Smrg	      $STRIP $cwrapper
7845775e7de9Smrg	    }
78467a84e134Smrg
7847775e7de9Smrg	    # Now, create the wrapper script for func_source use:
7848775e7de9Smrg	    func_ltwrapper_scriptname $cwrapper
7849775e7de9Smrg	    $RM $func_ltwrapper_scriptname_result
7850775e7de9Smrg	    trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
7851775e7de9Smrg	    $opt_dry_run || {
7852775e7de9Smrg	      # note: this script will not be executed, so do not chmod.
7853775e7de9Smrg	      if test "x$build" = "x$host" ; then
7854775e7de9Smrg		$cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
7855775e7de9Smrg	      else
7856775e7de9Smrg		func_emit_wrapper no > $func_ltwrapper_scriptname_result
7857775e7de9Smrg	      fi
7858775e7de9Smrg	    }
7859775e7de9Smrg	  ;;
7860775e7de9Smrg	  * )
7861775e7de9Smrg	    $RM $output
7862775e7de9Smrg	    trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
78637a84e134Smrg
7864775e7de9Smrg	    func_emit_wrapper no > $output
7865775e7de9Smrg	    chmod +x $output
7866775e7de9Smrg	  ;;
7867775e7de9Smrg	esac
7868775e7de9Smrg      }
7869775e7de9Smrg      exit $EXIT_SUCCESS
7870775e7de9Smrg      ;;
7871775e7de9Smrg    esac
78727a84e134Smrg
7873775e7de9Smrg    # See if we need to build an old-fashioned archive.
7874775e7de9Smrg    for oldlib in $oldlibs; do
78757a84e134Smrg
7876775e7de9Smrg      if test "$build_libtool_libs" = convenience; then
7877775e7de9Smrg	oldobjs="$libobjs_save $symfileobj"
7878775e7de9Smrg	addlibs="$convenience"
7879775e7de9Smrg	build_libtool_libs=no
7880775e7de9Smrg      else
7881775e7de9Smrg	if test "$build_libtool_libs" = module; then
7882775e7de9Smrg	  oldobjs="$libobjs_save"
7883775e7de9Smrg	  build_libtool_libs=no
7884775e7de9Smrg	else
7885775e7de9Smrg	  oldobjs="$old_deplibs $non_pic_objects"
7886775e7de9Smrg	  if test "$preload" = yes && test -f "$symfileobj"; then
7887775e7de9Smrg	    oldobjs="$oldobjs $symfileobj"
7888775e7de9Smrg	  fi
7889775e7de9Smrg	fi
7890775e7de9Smrg	addlibs="$old_convenience"
78917a84e134Smrg      fi
78927a84e134Smrg
7893775e7de9Smrg      if test -n "$addlibs"; then
7894775e7de9Smrg	gentop="$output_objdir/${outputname}x"
7895775e7de9Smrg	generated="$generated $gentop"
78967a84e134Smrg
7897775e7de9Smrg	func_extract_archives $gentop $addlibs
7898775e7de9Smrg	oldobjs="$oldobjs $func_extract_archives_result"
7899775e7de9Smrg      fi
79007a84e134Smrg
7901775e7de9Smrg      # Do each command in the archive commands.
7902775e7de9Smrg      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
7903775e7de9Smrg	cmds=$old_archive_from_new_cmds
7904775e7de9Smrg      else
79057a84e134Smrg
7906775e7de9Smrg	# Add any objects from preloaded convenience libraries
7907775e7de9Smrg	if test -n "$dlprefiles"; then
7908775e7de9Smrg	  gentop="$output_objdir/${outputname}x"
7909775e7de9Smrg	  generated="$generated $gentop"
79107a84e134Smrg
7911775e7de9Smrg	  func_extract_archives $gentop $dlprefiles
7912775e7de9Smrg	  oldobjs="$oldobjs $func_extract_archives_result"
7913775e7de9Smrg	fi
79147a84e134Smrg
7915775e7de9Smrg	# POSIX demands no paths to be encoded in archives.  We have
7916775e7de9Smrg	# to avoid creating archives with duplicate basenames if we
7917775e7de9Smrg	# might have to extract them afterwards, e.g., when creating a
7918775e7de9Smrg	# static archive out of a convenience library, or when linking
7919775e7de9Smrg	# the entirety of a libtool archive into another (currently
7920775e7de9Smrg	# not supported by libtool).
7921775e7de9Smrg	if (for obj in $oldobjs
7922775e7de9Smrg	    do
7923775e7de9Smrg	      func_basename "$obj"
7924775e7de9Smrg	      $ECHO "$func_basename_result"
7925775e7de9Smrg	    done | sort | sort -uc >/dev/null 2>&1); then
7926775e7de9Smrg	  :
7927775e7de9Smrg	else
7928775e7de9Smrg	  $ECHO "copying selected object files to avoid basename conflicts..."
7929775e7de9Smrg	  gentop="$output_objdir/${outputname}x"
7930775e7de9Smrg	  generated="$generated $gentop"
7931775e7de9Smrg	  func_mkdir_p "$gentop"
7932775e7de9Smrg	  save_oldobjs=$oldobjs
7933775e7de9Smrg	  oldobjs=
7934775e7de9Smrg	  counter=1
7935775e7de9Smrg	  for obj in $save_oldobjs
7936775e7de9Smrg	  do
7937775e7de9Smrg	    func_basename "$obj"
7938775e7de9Smrg	    objbase="$func_basename_result"
7939775e7de9Smrg	    case " $oldobjs " in
7940775e7de9Smrg	    " ") oldobjs=$obj ;;
7941775e7de9Smrg	    *[\ /]"$objbase "*)
7942775e7de9Smrg	      while :; do
7943775e7de9Smrg		# Make sure we don't pick an alternate name that also
7944775e7de9Smrg		# overlaps.
7945775e7de9Smrg		newobj=lt$counter-$objbase
7946775e7de9Smrg		func_arith $counter + 1
7947775e7de9Smrg		counter=$func_arith_result
7948775e7de9Smrg		case " $oldobjs " in
7949775e7de9Smrg		*[\ /]"$newobj "*) ;;
7950775e7de9Smrg		*) if test ! -f "$gentop/$newobj"; then break; fi ;;
7951775e7de9Smrg		esac
7952775e7de9Smrg	      done
7953775e7de9Smrg	      func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
7954775e7de9Smrg	      oldobjs="$oldobjs $gentop/$newobj"
7955775e7de9Smrg	      ;;
7956775e7de9Smrg	    *) oldobjs="$oldobjs $obj" ;;
7957775e7de9Smrg	    esac
79587a84e134Smrg	  done
79597a84e134Smrg	fi
7960775e7de9Smrg	eval cmds=\"$old_archive_cmds\"
79617a84e134Smrg
7962775e7de9Smrg	func_len " $cmds"
7963775e7de9Smrg	len=$func_len_result
7964775e7de9Smrg	if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
7965775e7de9Smrg	  cmds=$old_archive_cmds
7966775e7de9Smrg	else
7967775e7de9Smrg	  # the command line is too long to link in one step, link in parts
7968775e7de9Smrg	  func_verbose "using piecewise archive linking..."
7969775e7de9Smrg	  save_RANLIB=$RANLIB
7970775e7de9Smrg	  RANLIB=:
7971775e7de9Smrg	  objlist=
7972775e7de9Smrg	  concat_cmds=
7973775e7de9Smrg	  save_oldobjs=$oldobjs
7974775e7de9Smrg	  oldobjs=
7975775e7de9Smrg	  # Is there a better way of finding the last object in the list?
7976775e7de9Smrg	  for obj in $save_oldobjs
7977775e7de9Smrg	  do
7978775e7de9Smrg	    last_oldobj=$obj
7979775e7de9Smrg	  done
7980775e7de9Smrg	  eval test_cmds=\"$old_archive_cmds\"
7981775e7de9Smrg	  func_len " $test_cmds"
7982775e7de9Smrg	  len0=$func_len_result
7983775e7de9Smrg	  len=$len0
7984775e7de9Smrg	  for obj in $save_oldobjs
7985775e7de9Smrg	  do
7986775e7de9Smrg	    func_len " $obj"
7987775e7de9Smrg	    func_arith $len + $func_len_result
7988775e7de9Smrg	    len=$func_arith_result
7989775e7de9Smrg	    func_append objlist " $obj"
7990775e7de9Smrg	    if test "$len" -lt "$max_cmd_len"; then
7991775e7de9Smrg	      :
7992775e7de9Smrg	    else
7993775e7de9Smrg	      # the above command should be used before it gets too long
7994775e7de9Smrg	      oldobjs=$objlist
7995775e7de9Smrg	      if test "$obj" = "$last_oldobj" ; then
7996775e7de9Smrg		RANLIB=$save_RANLIB
7997775e7de9Smrg	      fi
7998775e7de9Smrg	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
7999775e7de9Smrg	      eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
8000775e7de9Smrg	      objlist=
8001775e7de9Smrg	      len=$len0
8002775e7de9Smrg	    fi
8003775e7de9Smrg	  done
8004775e7de9Smrg	  RANLIB=$save_RANLIB
8005775e7de9Smrg	  oldobjs=$objlist
8006775e7de9Smrg	  if test "X$oldobjs" = "X" ; then
8007775e7de9Smrg	    eval cmds=\"\$concat_cmds\"
8008775e7de9Smrg	  else
8009775e7de9Smrg	    eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
8010775e7de9Smrg	  fi
8011775e7de9Smrg	fi
8012775e7de9Smrg      fi
8013775e7de9Smrg      func_execute_cmds "$cmds" 'exit $?'
80147a84e134Smrg    done
80157a84e134Smrg
8016775e7de9Smrg    test -n "$generated" && \
8017775e7de9Smrg      func_show_eval "${RM}r$generated"
80187a84e134Smrg
8019775e7de9Smrg    # Now create the libtool archive.
8020775e7de9Smrg    case $output in
8021775e7de9Smrg    *.la)
8022775e7de9Smrg      old_library=
8023775e7de9Smrg      test "$build_old_libs" = yes && old_library="$libname.$libext"
8024775e7de9Smrg      func_verbose "creating $output"
80257a84e134Smrg
8026775e7de9Smrg      # Preserve any variables that may affect compiler behavior
8027775e7de9Smrg      for var in $variables_saved_for_relink; do
8028775e7de9Smrg	if eval test -z \"\${$var+set}\"; then
8029775e7de9Smrg	  relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
8030775e7de9Smrg	elif eval var_value=\$$var; test -z "$var_value"; then
8031775e7de9Smrg	  relink_command="$var=; export $var; $relink_command"
80327a84e134Smrg	else
8033775e7de9Smrg	  func_quote_for_eval "$var_value"
8034775e7de9Smrg	  relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
80357a84e134Smrg	fi
8036775e7de9Smrg      done
8037775e7de9Smrg      # Quote the link command for shipping.
8038775e7de9Smrg      relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
8039775e7de9Smrg      relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
8040775e7de9Smrg      if test "$hardcode_automatic" = yes ; then
8041775e7de9Smrg	relink_command=
8042775e7de9Smrg      fi
80437a84e134Smrg
8044775e7de9Smrg      # Only create the output if not a dry run.
8045775e7de9Smrg      $opt_dry_run || {
8046775e7de9Smrg	for installed in no yes; do
8047775e7de9Smrg	  if test "$installed" = yes; then
8048775e7de9Smrg	    if test -z "$install_libdir"; then
8049775e7de9Smrg	      break
8050775e7de9Smrg	    fi
8051775e7de9Smrg	    output="$output_objdir/$outputname"i
8052775e7de9Smrg	    # Replace all uninstalled libtool libraries with the installed ones
8053775e7de9Smrg	    newdependency_libs=
8054775e7de9Smrg	    for deplib in $dependency_libs; do
8055775e7de9Smrg	      case $deplib in
8056775e7de9Smrg	      *.la)
8057775e7de9Smrg		func_basename "$deplib"
8058775e7de9Smrg		name="$func_basename_result"
8059775e7de9Smrg		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
8060775e7de9Smrg		test -z "$libdir" && \
8061775e7de9Smrg		  func_fatal_error "\`$deplib' is not a valid libtool archive"
8062775e7de9Smrg		newdependency_libs="$newdependency_libs $libdir/$name"
8063775e7de9Smrg		;;
8064775e7de9Smrg	      *) newdependency_libs="$newdependency_libs $deplib" ;;
8065775e7de9Smrg	      esac
8066775e7de9Smrg	    done
8067775e7de9Smrg	    dependency_libs="$newdependency_libs"
8068775e7de9Smrg	    newdlfiles=
8069775e7de9Smrg
8070775e7de9Smrg	    for lib in $dlfiles; do
8071775e7de9Smrg	      case $lib in
8072775e7de9Smrg	      *.la)
8073775e7de9Smrg	        func_basename "$lib"
8074775e7de9Smrg		name="$func_basename_result"
8075775e7de9Smrg		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
8076775e7de9Smrg		test -z "$libdir" && \
8077775e7de9Smrg		  func_fatal_error "\`$lib' is not a valid libtool archive"
8078775e7de9Smrg		newdlfiles="$newdlfiles $libdir/$name"
8079775e7de9Smrg		;;
8080775e7de9Smrg	      *) newdlfiles="$newdlfiles $lib" ;;
8081775e7de9Smrg	      esac
8082775e7de9Smrg	    done
8083775e7de9Smrg	    dlfiles="$newdlfiles"
8084775e7de9Smrg	    newdlprefiles=
8085775e7de9Smrg	    for lib in $dlprefiles; do
8086775e7de9Smrg	      case $lib in
8087775e7de9Smrg	      *.la)
8088775e7de9Smrg		# Only pass preopened files to the pseudo-archive (for
8089775e7de9Smrg		# eventual linking with the app. that links it) if we
8090775e7de9Smrg		# didn't already link the preopened objects directly into
8091775e7de9Smrg		# the library:
8092775e7de9Smrg		func_basename "$lib"
8093775e7de9Smrg		name="$func_basename_result"
8094775e7de9Smrg		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
8095775e7de9Smrg		test -z "$libdir" && \
8096775e7de9Smrg		  func_fatal_error "\`$lib' is not a valid libtool archive"
8097775e7de9Smrg		newdlprefiles="$newdlprefiles $libdir/$name"
8098775e7de9Smrg		;;
8099775e7de9Smrg	      esac
8100775e7de9Smrg	    done
8101775e7de9Smrg	    dlprefiles="$newdlprefiles"
8102775e7de9Smrg	  else
8103775e7de9Smrg	    newdlfiles=
8104775e7de9Smrg	    for lib in $dlfiles; do
8105775e7de9Smrg	      case $lib in
8106775e7de9Smrg		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
8107775e7de9Smrg		*) abs=`pwd`"/$lib" ;;
8108775e7de9Smrg	      esac
8109775e7de9Smrg	      newdlfiles="$newdlfiles $abs"
8110775e7de9Smrg	    done
8111775e7de9Smrg	    dlfiles="$newdlfiles"
8112775e7de9Smrg	    newdlprefiles=
8113775e7de9Smrg	    for lib in $dlprefiles; do
8114775e7de9Smrg	      case $lib in
8115775e7de9Smrg		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
8116775e7de9Smrg		*) abs=`pwd`"/$lib" ;;
8117775e7de9Smrg	      esac
8118775e7de9Smrg	      newdlprefiles="$newdlprefiles $abs"
8119775e7de9Smrg	    done
8120775e7de9Smrg	    dlprefiles="$newdlprefiles"
8121775e7de9Smrg	  fi
8122775e7de9Smrg	  $RM $output
8123775e7de9Smrg	  # place dlname in correct position for cygwin
8124775e7de9Smrg	  tdlname=$dlname
8125775e7de9Smrg	  case $host,$output,$installed,$module,$dlname in
8126775e7de9Smrg	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
8127775e7de9Smrg	  esac
8128775e7de9Smrg	  $ECHO > $output "\
8129775e7de9Smrg# $outputname - a libtool library file
8130775e7de9Smrg# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
8131775e7de9Smrg#
8132775e7de9Smrg# Please DO NOT delete this file!
8133775e7de9Smrg# It is necessary for linking the library.
81347a84e134Smrg
8135775e7de9Smrg# The name that we can dlopen(3).
8136775e7de9Smrgdlname='$tdlname'
81377a84e134Smrg
8138775e7de9Smrg# Names of this library.
8139775e7de9Smrglibrary_names='$library_names'
81407a84e134Smrg
8141775e7de9Smrg# The name of the static archive.
8142775e7de9Smrgold_library='$old_library'
81437a84e134Smrg
8144775e7de9Smrg# Linker flags that can not go in dependency_libs.
8145775e7de9Smrginherited_linker_flags='$new_inherited_linker_flags'
81467a84e134Smrg
8147775e7de9Smrg# Libraries that this one depends upon.
8148775e7de9Smrgdependency_libs='$dependency_libs'
81497a84e134Smrg
8150775e7de9Smrg# Names of additional weak libraries provided by this library
8151775e7de9Smrgweak_library_names='$weak_libs'
81527a84e134Smrg
8153775e7de9Smrg# Version information for $libname.
8154775e7de9Smrgcurrent=$current
8155775e7de9Smrgage=$age
8156775e7de9Smrgrevision=$revision
81577a84e134Smrg
8158775e7de9Smrg# Is this an already installed library?
8159775e7de9Smrginstalled=$installed
81607a84e134Smrg
8161775e7de9Smrg# Should we warn about portability when linking against -modules?
8162775e7de9Smrgshouldnotlink=$module
81637a84e134Smrg
8164775e7de9Smrg# Files to dlopen/dlpreopen
8165775e7de9Smrgdlopen='$dlfiles'
8166775e7de9Smrgdlpreopen='$dlprefiles'
81677a84e134Smrg
8168775e7de9Smrg# Directory that this library needs to be installed in:
8169775e7de9Smrglibdir='$install_libdir'"
8170775e7de9Smrg	  if test "$installed" = no && test "$need_relink" = yes; then
8171775e7de9Smrg	    $ECHO >> $output "\
8172775e7de9Smrgrelink_command=\"$relink_command\""
8173775e7de9Smrg	  fi
8174775e7de9Smrg	done
8175775e7de9Smrg      }
81767a84e134Smrg
8177775e7de9Smrg      # Do a symbolic link so that the libtool archive can be found in
8178775e7de9Smrg      # LD_LIBRARY_PATH before the program is installed.
8179775e7de9Smrg      func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
8180775e7de9Smrg      ;;
8181775e7de9Smrg    esac
8182775e7de9Smrg    exit $EXIT_SUCCESS
8183775e7de9Smrg}
81847a84e134Smrg
8185775e7de9Smrg{ test "$mode" = link || test "$mode" = relink; } &&
8186775e7de9Smrg    func_mode_link ${1+"$@"}
81877a84e134Smrg
81887a84e134Smrg
8189775e7de9Smrg# func_mode_uninstall arg...
8190775e7de9Smrgfunc_mode_uninstall ()
8191775e7de9Smrg{
8192775e7de9Smrg    $opt_debug
8193775e7de9Smrg    RM="$nonopt"
81947a84e134Smrg    files=
81957a84e134Smrg    rmforce=
81967a84e134Smrg    exit_status=0
81977a84e134Smrg
81987a84e134Smrg    # This variable tells wrapper scripts just to set variables rather
81997a84e134Smrg    # than running their programs.
82007a84e134Smrg    libtool_install_magic="$magic"
82017a84e134Smrg
82027a84e134Smrg    for arg
82037a84e134Smrg    do
82047a84e134Smrg      case $arg in
8205775e7de9Smrg      -f) RM="$RM $arg"; rmforce=yes ;;
8206775e7de9Smrg      -*) RM="$RM $arg" ;;
82077a84e134Smrg      *) files="$files $arg" ;;
82087a84e134Smrg      esac
82097a84e134Smrg    done
82107a84e134Smrg
8211775e7de9Smrg    test -z "$RM" && \
8212775e7de9Smrg      func_fatal_help "you must specify an RM program"
82137a84e134Smrg
82147a84e134Smrg    rmdirs=
82157a84e134Smrg
82167a84e134Smrg    origobjdir="$objdir"
82177a84e134Smrg    for file in $files; do
8218775e7de9Smrg      func_dirname "$file" "" "."
8219775e7de9Smrg      dir="$func_dirname_result"
8220775e7de9Smrg      if test "X$dir" = X.; then
82217a84e134Smrg	objdir="$origobjdir"
82227a84e134Smrg      else
82237a84e134Smrg	objdir="$dir/$origobjdir"
82247a84e134Smrg      fi
8225775e7de9Smrg      func_basename "$file"
8226775e7de9Smrg      name="$func_basename_result"
82277a84e134Smrg      test "$mode" = uninstall && objdir="$dir"
82287a84e134Smrg
82297a84e134Smrg      # Remember objdir for removal later, being careful to avoid duplicates
82307a84e134Smrg      if test "$mode" = clean; then
82317a84e134Smrg	case " $rmdirs " in
82327a84e134Smrg	  *" $objdir "*) ;;
82337a84e134Smrg	  *) rmdirs="$rmdirs $objdir" ;;
82347a84e134Smrg	esac
82357a84e134Smrg      fi
82367a84e134Smrg
82377a84e134Smrg      # Don't error if the file doesn't exist and rm -f was used.
8238775e7de9Smrg      if { test -L "$file"; } >/dev/null 2>&1 ||
8239775e7de9Smrg	 { test -h "$file"; } >/dev/null 2>&1 ||
8240775e7de9Smrg	 test -f "$file"; then
82417a84e134Smrg	:
82427a84e134Smrg      elif test -d "$file"; then
82437a84e134Smrg	exit_status=1
82447a84e134Smrg	continue
82457a84e134Smrg      elif test "$rmforce" = yes; then
82467a84e134Smrg	continue
82477a84e134Smrg      fi
82487a84e134Smrg
82497a84e134Smrg      rmfiles="$file"
82507a84e134Smrg
82517a84e134Smrg      case $name in
82527a84e134Smrg      *.la)
82537a84e134Smrg	# Possibly a libtool archive, so verify it.
8254775e7de9Smrg	if func_lalib_p "$file"; then
8255775e7de9Smrg	  func_source $dir/$name
82567a84e134Smrg
82577a84e134Smrg	  # Delete the libtool libraries and symlinks.
82587a84e134Smrg	  for n in $library_names; do
82597a84e134Smrg	    rmfiles="$rmfiles $objdir/$n"
82607a84e134Smrg	  done
82617a84e134Smrg	  test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
82627a84e134Smrg
82637a84e134Smrg	  case "$mode" in
82647a84e134Smrg	  clean)
82657a84e134Smrg	    case "  $library_names " in
82667a84e134Smrg	    # "  " in the beginning catches empty $dlname
82677a84e134Smrg	    *" $dlname "*) ;;
82687a84e134Smrg	    *) rmfiles="$rmfiles $objdir/$dlname" ;;
82697a84e134Smrg	    esac
8270775e7de9Smrg	    test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
82717a84e134Smrg	    ;;
82727a84e134Smrg	  uninstall)
82737a84e134Smrg	    if test -n "$library_names"; then
82747a84e134Smrg	      # Do each command in the postuninstall commands.
8275775e7de9Smrg	      func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
82767a84e134Smrg	    fi
82777a84e134Smrg
82787a84e134Smrg	    if test -n "$old_library"; then
82797a84e134Smrg	      # Do each command in the old_postuninstall commands.
8280775e7de9Smrg	      func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
82817a84e134Smrg	    fi
82827a84e134Smrg	    # FIXME: should reinstall the best remaining shared library.
82837a84e134Smrg	    ;;
82847a84e134Smrg	  esac
82857a84e134Smrg	fi
82867a84e134Smrg	;;
82877a84e134Smrg
82887a84e134Smrg      *.lo)
82897a84e134Smrg	# Possibly a libtool object, so verify it.
8290775e7de9Smrg	if func_lalib_p "$file"; then
82917a84e134Smrg
82927a84e134Smrg	  # Read the .lo file
8293775e7de9Smrg	  func_source $dir/$name
82947a84e134Smrg
82957a84e134Smrg	  # Add PIC object to the list of files to remove.
8296775e7de9Smrg	  if test -n "$pic_object" &&
8297775e7de9Smrg	     test "$pic_object" != none; then
82987a84e134Smrg	    rmfiles="$rmfiles $dir/$pic_object"
82997a84e134Smrg	  fi
83007a84e134Smrg
83017a84e134Smrg	  # Add non-PIC object to the list of files to remove.
8302775e7de9Smrg	  if test -n "$non_pic_object" &&
8303775e7de9Smrg	     test "$non_pic_object" != none; then
83047a84e134Smrg	    rmfiles="$rmfiles $dir/$non_pic_object"
83057a84e134Smrg	  fi
83067a84e134Smrg	fi
83077a84e134Smrg	;;
83087a84e134Smrg
83097a84e134Smrg      *)
83107a84e134Smrg	if test "$mode" = clean ; then
83117a84e134Smrg	  noexename=$name
83127a84e134Smrg	  case $file in
83137a84e134Smrg	  *.exe)
8314775e7de9Smrg	    func_stripname '' '.exe' "$file"
8315775e7de9Smrg	    file=$func_stripname_result
8316775e7de9Smrg	    func_stripname '' '.exe' "$name"
8317775e7de9Smrg	    noexename=$func_stripname_result
83187a84e134Smrg	    # $file with .exe has already been added to rmfiles,
83197a84e134Smrg	    # add $file without .exe
83207a84e134Smrg	    rmfiles="$rmfiles $file"
83217a84e134Smrg	    ;;
83227a84e134Smrg	  esac
83237a84e134Smrg	  # Do a test to see if this is a libtool program.
8324775e7de9Smrg	  if func_ltwrapper_p "$file"; then
8325775e7de9Smrg	    if func_ltwrapper_executable_p "$file"; then
8326775e7de9Smrg	      func_ltwrapper_scriptname "$file"
8327775e7de9Smrg	      relink_command=
8328775e7de9Smrg	      func_source $func_ltwrapper_scriptname_result
8329775e7de9Smrg	      rmfiles="$rmfiles $func_ltwrapper_scriptname_result"
8330775e7de9Smrg	    else
8331775e7de9Smrg	      relink_command=
8332775e7de9Smrg	      func_source $dir/$noexename
8333775e7de9Smrg	    fi
83347a84e134Smrg
83357a84e134Smrg	    # note $name still contains .exe if it was in $file originally
83367a84e134Smrg	    # as does the version of $file that was added into $rmfiles
83377a84e134Smrg	    rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
83387a84e134Smrg	    if test "$fast_install" = yes && test -n "$relink_command"; then
83397a84e134Smrg	      rmfiles="$rmfiles $objdir/lt-$name"
83407a84e134Smrg	    fi
83417a84e134Smrg	    if test "X$noexename" != "X$name" ; then
83427a84e134Smrg	      rmfiles="$rmfiles $objdir/lt-${noexename}.c"
83437a84e134Smrg	    fi
83447a84e134Smrg	  fi
83457a84e134Smrg	fi
83467a84e134Smrg	;;
83477a84e134Smrg      esac
8348775e7de9Smrg      func_show_eval "$RM $rmfiles" 'exit_status=1'
83497a84e134Smrg    done
83507a84e134Smrg    objdir="$origobjdir"
83517a84e134Smrg
83527a84e134Smrg    # Try to remove the ${objdir}s in the directories where we deleted files
83537a84e134Smrg    for dir in $rmdirs; do
83547a84e134Smrg      if test -d "$dir"; then
8355775e7de9Smrg	func_show_eval "rmdir $dir >/dev/null 2>&1"
83567a84e134Smrg      fi
83577a84e134Smrg    done
83587a84e134Smrg
83597a84e134Smrg    exit $exit_status
8360775e7de9Smrg}
83617a84e134Smrg
8362775e7de9Smrg{ test "$mode" = uninstall || test "$mode" = clean; } &&
8363775e7de9Smrg    func_mode_uninstall ${1+"$@"}
83647a84e134Smrg
8365775e7de9Smrgtest -z "$mode" && {
8366775e7de9Smrg  help="$generic_help"
8367775e7de9Smrg  func_fatal_help "you must specify a MODE"
8368775e7de9Smrg}
8369775e7de9Smrg
8370775e7de9Smrgtest -z "$exec_cmd" && \
8371775e7de9Smrg  func_fatal_help "invalid operation mode \`$mode'"
83727a84e134Smrg
83737a84e134Smrgif test -n "$exec_cmd"; then
8374775e7de9Smrg  eval exec "$exec_cmd"
83757a84e134Smrg  exit $EXIT_FAILURE
83767a84e134Smrgfi
83777a84e134Smrg
8378775e7de9Smrgexit $exit_status
83797a84e134Smrg
83807a84e134Smrg
83817a84e134Smrg# The TAGs below are defined such that we never get into a situation
83827a84e134Smrg# in which we disable both kinds of libraries.  Given conflicting
83837a84e134Smrg# choices, we go for a static library, that is the most portable,
83847a84e134Smrg# since we can't tell whether shared libraries were disabled because
83857a84e134Smrg# the user asked for that or because the platform doesn't support
83867a84e134Smrg# them.  This is particularly important on AIX, because we don't
83877a84e134Smrg# support having both static and shared libraries enabled at the same
83887a84e134Smrg# time on that platform, so we default to a shared-only configuration.
83897a84e134Smrg# If a disable-shared tag is given, we'll fallback to a static-only
83907a84e134Smrg# configuration.  But we'll never go from static-only to shared-only.
83917a84e134Smrg
83927a84e134Smrg# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
8393775e7de9Smrgbuild_libtool_libs=no
8394775e7de9Smrgbuild_old_libs=yes
83957a84e134Smrg# ### END LIBTOOL TAG CONFIG: disable-shared
83967a84e134Smrg
83977a84e134Smrg# ### BEGIN LIBTOOL TAG CONFIG: disable-static
8398775e7de9Smrgbuild_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
83997a84e134Smrg# ### END LIBTOOL TAG CONFIG: disable-static
84007a84e134Smrg
84017a84e134Smrg# Local Variables:
84027a84e134Smrg# mode:shell-script
84037a84e134Smrg# sh-indentation:2
84047a84e134Smrg# End:
8405775e7de9Smrg# vi:sw=2
8406775e7de9Smrg
8407