ltmain.sh revision a7b590b3
1a7b590b3Smrg# Generated from ltmain.m4sh.
2a7b590b3Smrg
3a7b590b3Smrg# ltmain.sh (GNU libtool) 2.2.6b
4a7b590b3Smrg# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
5a7b590b3Smrg
6a7b590b3Smrg# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc.
7a7b590b3Smrg# This is free software; see the source for copying conditions.  There is NO
8a7b590b3Smrg# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
9a7b590b3Smrg
10a7b590b3Smrg# GNU Libtool is free software; you can redistribute it and/or modify
11943345d3Smrg# it under the terms of the GNU General Public License as published by
12943345d3Smrg# the Free Software Foundation; either version 2 of the License, or
13943345d3Smrg# (at your option) any later version.
14943345d3Smrg#
15a7b590b3Smrg# As a special exception to the GNU General Public License,
16a7b590b3Smrg# if you distribute this file as part of a program or library that
17a7b590b3Smrg# is built using GNU Libtool, you may include this file under the
18a7b590b3Smrg# same distribution terms that you use for the rest of that program.
19a7b590b3Smrg#
20a7b590b3Smrg# GNU Libtool is distributed in the hope that it will be useful, but
21943345d3Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of
22943345d3Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
23943345d3Smrg# General Public License for more details.
24943345d3Smrg#
25943345d3Smrg# You should have received a copy of the GNU General Public License
26a7b590b3Smrg# along with GNU Libtool; see the file COPYING.  If not, a copy
27a7b590b3Smrg# can be downloaded from http://www.gnu.org/licenses/gpl.html,
28a7b590b3Smrg# or obtained by writing to the Free Software Foundation, Inc.,
29a7b590b3Smrg# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
30943345d3Smrg
31a7b590b3Smrg# Usage: $progname [OPTION]... [MODE-ARG]...
32a7b590b3Smrg#
33a7b590b3Smrg# Provide generalized library-building support services.
34a7b590b3Smrg#
35a7b590b3Smrg#     --config             show all configuration variables
36a7b590b3Smrg#     --debug              enable verbose shell tracing
37a7b590b3Smrg# -n, --dry-run            display commands without modifying any files
38a7b590b3Smrg#     --features           display basic configuration information and exit
39a7b590b3Smrg#     --mode=MODE          use operation mode MODE
40a7b590b3Smrg#     --preserve-dup-deps  don't remove duplicate dependency libraries
41a7b590b3Smrg#     --quiet, --silent    don't print informational messages
42a7b590b3Smrg#     --tag=TAG            use configuration variables from tag TAG
43a7b590b3Smrg# -v, --verbose            print informational messages (default)
44a7b590b3Smrg#     --version            print version information
45a7b590b3Smrg# -h, --help               print short or long help message
46a7b590b3Smrg#
47a7b590b3Smrg# MODE must be one of the following:
48a7b590b3Smrg#
49a7b590b3Smrg#       clean              remove files from the build directory
50a7b590b3Smrg#       compile            compile a source file into a libtool object
51a7b590b3Smrg#       execute            automatically set library path, then run a program
52a7b590b3Smrg#       finish             complete the installation of libtool libraries
53a7b590b3Smrg#       install            install libraries or executables
54a7b590b3Smrg#       link               create a library or an executable
55a7b590b3Smrg#       uninstall          remove libraries from an installed directory
56a7b590b3Smrg#
57a7b590b3Smrg# MODE-ARGS vary depending on the MODE.
58a7b590b3Smrg# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
59a7b590b3Smrg#
60a7b590b3Smrg# When reporting a bug, please describe a test case to reproduce it and
61a7b590b3Smrg# include the following information:
62a7b590b3Smrg#
63a7b590b3Smrg#       host-triplet:	$host
64a7b590b3Smrg#       shell:		$SHELL
65a7b590b3Smrg#       compiler:		$LTCC
66a7b590b3Smrg#       compiler flags:		$LTCFLAGS
67a7b590b3Smrg#       linker:		$LD (gnu? $with_gnu_ld)
68a7b590b3Smrg#       $progname:		(GNU libtool) 2.2.6b
69a7b590b3Smrg#       automake:		$automake_version
70a7b590b3Smrg#       autoconf:		$autoconf_version
71a7b590b3Smrg#
72a7b590b3Smrg# Report bugs to <bug-libtool@gnu.org>.
73943345d3Smrg
74943345d3SmrgPROGRAM=ltmain.sh
75943345d3SmrgPACKAGE=libtool
76a7b590b3SmrgVERSION=2.2.6b
77a7b590b3SmrgTIMESTAMP=""
78a7b590b3Smrgpackage_revision=1.3017
79943345d3Smrg
80a7b590b3Smrg# Be Bourne compatible
81f67b85aaSmrgif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
82f67b85aaSmrg  emulate sh
83f67b85aaSmrg  NULLCMD=:
84f67b85aaSmrg  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
85f67b85aaSmrg  # is contrary to our usage.  Disable this feature.
86f67b85aaSmrg  alias -g '${1+"$@"}'='"$@"'
87943345d3Smrg  setopt NO_GLOB_SUBST
88f67b85aaSmrgelse
89f67b85aaSmrg  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
90943345d3Smrgfi
915e695a52SmrgBIN_SH=xpg4; export BIN_SH # for Tru64
925e695a52SmrgDUALCASE=1; export DUALCASE # for MKS sh
93943345d3Smrg
94a7b590b3Smrg# NLS nuisances: We save the old values to restore during execute mode.
95943345d3Smrg# Only set LANG and LC_ALL to C if already set.
96943345d3Smrg# These must not be set unconditionally because not all systems understand
97943345d3Smrg# e.g. LANG=C (notably SCO).
98a7b590b3Smrglt_user_locale=
99a7b590b3Smrglt_safe_locale=
1005e695a52Smrgfor lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
101f67b85aaSmrgdo
102f67b85aaSmrg  eval "if test \"\${$lt_var+set}\" = set; then
103a7b590b3Smrg          save_$lt_var=\$$lt_var
104a7b590b3Smrg          $lt_var=C
1055e695a52Smrg	  export $lt_var
106a7b590b3Smrg	  lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
107a7b590b3Smrg	  lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
1085e695a52Smrg	fi"
109f67b85aaSmrgdone
110943345d3Smrg
111a7b590b3Smrg$lt_unset CDPATH
112a7b590b3Smrg
113a7b590b3Smrg
114a7b590b3Smrg
115a7b590b3Smrg
116a7b590b3Smrg
117a7b590b3Smrg: ${CP="cp -f"}
118a7b590b3Smrg: ${ECHO="echo"}
119a7b590b3Smrg: ${EGREP="/bin/grep -E"}
120a7b590b3Smrg: ${FGREP="/bin/grep -F"}
121a7b590b3Smrg: ${GREP="/bin/grep"}
122a7b590b3Smrg: ${LN_S="ln -s"}
123a7b590b3Smrg: ${MAKE="make"}
124a7b590b3Smrg: ${MKDIR="mkdir"}
125a7b590b3Smrg: ${MV="mv -f"}
126a7b590b3Smrg: ${RM="rm -f"}
127a7b590b3Smrg: ${SED="/bin/sed"}
128a7b590b3Smrg: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
129a7b590b3Smrg: ${Xsed="$SED -e 1s/^X//"}
130a7b590b3Smrg
131a7b590b3Smrg# Global variables:
132a7b590b3SmrgEXIT_SUCCESS=0
133a7b590b3SmrgEXIT_FAILURE=1
134a7b590b3SmrgEXIT_MISMATCH=63  # $? = 63 is used to indicate version mismatch to missing.
135a7b590b3SmrgEXIT_SKIP=77	  # $? = 77 is used to indicate a skipped test to automake.
136a7b590b3Smrg
137a7b590b3Smrgexit_status=$EXIT_SUCCESS
1385e695a52Smrg
139943345d3Smrg# Make sure IFS has a sensible default
140943345d3Smrglt_nl='
141943345d3Smrg'
142943345d3SmrgIFS=" 	$lt_nl"
143943345d3Smrg
144a7b590b3Smrgdirname="s,/[^/]*$,,"
145a7b590b3Smrgbasename="s,^.*/,,"
146a7b590b3Smrg
147a7b590b3Smrg# func_dirname_and_basename file append nondir_replacement
148a7b590b3Smrg# perform func_basename and func_dirname in a single function
149a7b590b3Smrg# call:
150a7b590b3Smrg#   dirname:  Compute the dirname of FILE.  If nonempty,
151a7b590b3Smrg#             add APPEND to the result, otherwise set result
152a7b590b3Smrg#             to NONDIR_REPLACEMENT.
153a7b590b3Smrg#             value returned in "$func_dirname_result"
154a7b590b3Smrg#   basename: Compute filename of FILE.
155a7b590b3Smrg#             value retuned in "$func_basename_result"
156a7b590b3Smrg# Implementation must be kept synchronized with func_dirname
157a7b590b3Smrg# and func_basename. For efficiency, we do not delegate to
158a7b590b3Smrg# those functions but instead duplicate the functionality here.
159a7b590b3Smrgfunc_dirname_and_basename ()
160a7b590b3Smrg{
161a7b590b3Smrg  # Extract subdirectory from the argument.
162a7b590b3Smrg  func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"`
163a7b590b3Smrg  if test "X$func_dirname_result" = "X${1}"; then
164a7b590b3Smrg    func_dirname_result="${3}"
165a7b590b3Smrg  else
166a7b590b3Smrg    func_dirname_result="$func_dirname_result${2}"
167a7b590b3Smrg  fi
168a7b590b3Smrg  func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"`
169a7b590b3Smrg}
170943345d3Smrg
171a7b590b3Smrg# Generated shell functions inserted here.
172a7b590b3Smrg
173a7b590b3Smrg# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
174a7b590b3Smrg# is ksh but when the shell is invoked as "sh" and the current value of
175a7b590b3Smrg# the _XPG environment variable is not equal to 1 (one), the special
176a7b590b3Smrg# positional parameter $0, within a function call, is the name of the
177a7b590b3Smrg# function.
178a7b590b3Smrgprogpath="$0"
179a7b590b3Smrg
180a7b590b3Smrg# The name of this program:
181a7b590b3Smrg# In the unlikely event $progname began with a '-', it would play havoc with
182a7b590b3Smrg# func_echo (imagine progname=-n), so we prepend ./ in that case:
183a7b590b3Smrgfunc_dirname_and_basename "$progpath"
184a7b590b3Smrgprogname=$func_basename_result
185a7b590b3Smrgcase $progname in
186a7b590b3Smrg  -*) progname=./$progname ;;
187a7b590b3Smrgesac
188a7b590b3Smrg
189a7b590b3Smrg# Make sure we have an absolute path for reexecution:
190a7b590b3Smrgcase $progpath in
191a7b590b3Smrg  [\\/]*|[A-Za-z]:\\*) ;;
192a7b590b3Smrg  *[\\/]*)
193a7b590b3Smrg     progdir=$func_dirname_result
194a7b590b3Smrg     progdir=`cd "$progdir" && pwd`
195a7b590b3Smrg     progpath="$progdir/$progname"
196a7b590b3Smrg     ;;
197a7b590b3Smrg  *)
198a7b590b3Smrg     save_IFS="$IFS"
199a7b590b3Smrg     IFS=:
200a7b590b3Smrg     for progdir in $PATH; do
201a7b590b3Smrg       IFS="$save_IFS"
202a7b590b3Smrg       test -x "$progdir/$progname" && break
203a7b590b3Smrg     done
204a7b590b3Smrg     IFS="$save_IFS"
205a7b590b3Smrg     test -n "$progdir" || progdir=`pwd`
206a7b590b3Smrg     progpath="$progdir/$progname"
207a7b590b3Smrg     ;;
208a7b590b3Smrgesac
209a7b590b3Smrg
210a7b590b3Smrg# Sed substitution that helps us do robust quoting.  It backslashifies
211a7b590b3Smrg# metacharacters that are still active within double-quoted strings.
212a7b590b3SmrgXsed="${SED}"' -e 1s/^X//'
213a7b590b3Smrgsed_quote_subst='s/\([`"$\\]\)/\\\1/g'
214a7b590b3Smrg
215a7b590b3Smrg# Same as above, but do not quote variable references.
216a7b590b3Smrgdouble_quote_subst='s/\(["`\\]\)/\\\1/g'
217a7b590b3Smrg
218a7b590b3Smrg# Re-`\' parameter expansions in output of double_quote_subst that were
219a7b590b3Smrg# `\'-ed in input to the same.  If an odd number of `\' preceded a '$'
220a7b590b3Smrg# in input to double_quote_subst, that '$' was protected from expansion.
221a7b590b3Smrg# Since each input `\' is now two `\'s, look for any number of runs of
222a7b590b3Smrg# four `\'s followed by two `\'s and then a '$'.  `\' that '$'.
223a7b590b3Smrgbs='\\'
224a7b590b3Smrgbs2='\\\\'
225a7b590b3Smrgbs4='\\\\\\\\'
226a7b590b3Smrgdollar='\$'
227a7b590b3Smrgsed_double_backslash="\
228a7b590b3Smrg  s/$bs4/&\\
229a7b590b3Smrg/g
230a7b590b3Smrg  s/^$bs2$dollar/$bs&/
231a7b590b3Smrg  s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
232a7b590b3Smrg  s/\n//g"
233a7b590b3Smrg
234a7b590b3Smrg# Standard options:
235a7b590b3Smrgopt_dry_run=false
236a7b590b3Smrgopt_help=false
237a7b590b3Smrgopt_quiet=false
238a7b590b3Smrgopt_verbose=false
239a7b590b3Smrgopt_warning=:
240a7b590b3Smrg
241a7b590b3Smrg# func_echo arg...
242a7b590b3Smrg# Echo program name prefixed message, along with the current mode
243a7b590b3Smrg# name if it has been set yet.
244a7b590b3Smrgfunc_echo ()
245a7b590b3Smrg{
246a7b590b3Smrg    $ECHO "$progname${mode+: }$mode: $*"
247a7b590b3Smrg}
248a7b590b3Smrg
249a7b590b3Smrg# func_verbose arg...
250a7b590b3Smrg# Echo program name prefixed message in verbose mode only.
251a7b590b3Smrgfunc_verbose ()
252a7b590b3Smrg{
253a7b590b3Smrg    $opt_verbose && func_echo ${1+"$@"}
254a7b590b3Smrg
255a7b590b3Smrg    # A bug in bash halts the script if the last line of a function
256a7b590b3Smrg    # fails when set -e is in force, so we need another command to
257a7b590b3Smrg    # work around that:
258a7b590b3Smrg    :
259a7b590b3Smrg}
260a7b590b3Smrg
261a7b590b3Smrg# func_error arg...
262a7b590b3Smrg# Echo program name prefixed message to standard error.
263a7b590b3Smrgfunc_error ()
264a7b590b3Smrg{
265a7b590b3Smrg    $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2
266a7b590b3Smrg}
267a7b590b3Smrg
268a7b590b3Smrg# func_warning arg...
269a7b590b3Smrg# Echo program name prefixed warning message to standard error.
270a7b590b3Smrgfunc_warning ()
271a7b590b3Smrg{
272a7b590b3Smrg    $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2
273a7b590b3Smrg
274a7b590b3Smrg    # bash bug again:
275a7b590b3Smrg    :
276a7b590b3Smrg}
277a7b590b3Smrg
278a7b590b3Smrg# func_fatal_error arg...
279a7b590b3Smrg# Echo program name prefixed message to standard error, and exit.
280a7b590b3Smrgfunc_fatal_error ()
281a7b590b3Smrg{
282a7b590b3Smrg    func_error ${1+"$@"}
283a7b590b3Smrg    exit $EXIT_FAILURE
284a7b590b3Smrg}
285a7b590b3Smrg
286a7b590b3Smrg# func_fatal_help arg...
287a7b590b3Smrg# Echo program name prefixed message to standard error, followed by
288a7b590b3Smrg# a help hint, and exit.
289a7b590b3Smrgfunc_fatal_help ()
290a7b590b3Smrg{
291a7b590b3Smrg    func_error ${1+"$@"}
292a7b590b3Smrg    func_fatal_error "$help"
293a7b590b3Smrg}
294a7b590b3Smrghelp="Try \`$progname --help' for more information."  ## default
295a7b590b3Smrg
296a7b590b3Smrg
297a7b590b3Smrg# func_grep expression filename
298a7b590b3Smrg# Check whether EXPRESSION matches any line of FILENAME, without output.
299a7b590b3Smrgfunc_grep ()
300a7b590b3Smrg{
301a7b590b3Smrg    $GREP "$1" "$2" >/dev/null 2>&1
302a7b590b3Smrg}
303a7b590b3Smrg
304a7b590b3Smrg
305a7b590b3Smrg# func_mkdir_p directory-path
306a7b590b3Smrg# Make sure the entire path to DIRECTORY-PATH is available.
307a7b590b3Smrgfunc_mkdir_p ()
308a7b590b3Smrg{
309a7b590b3Smrg    my_directory_path="$1"
310a7b590b3Smrg    my_dir_list=
311a7b590b3Smrg
312a7b590b3Smrg    if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
313a7b590b3Smrg
314a7b590b3Smrg      # Protect directory names starting with `-'
315a7b590b3Smrg      case $my_directory_path in
316a7b590b3Smrg        -*) my_directory_path="./$my_directory_path" ;;
317a7b590b3Smrg      esac
318a7b590b3Smrg
319a7b590b3Smrg      # While some portion of DIR does not yet exist...
320a7b590b3Smrg      while test ! -d "$my_directory_path"; do
321a7b590b3Smrg        # ...make a list in topmost first order.  Use a colon delimited
322a7b590b3Smrg	# list incase some portion of path contains whitespace.
323a7b590b3Smrg        my_dir_list="$my_directory_path:$my_dir_list"
324a7b590b3Smrg
325a7b590b3Smrg        # If the last portion added has no slash in it, the list is done
326a7b590b3Smrg        case $my_directory_path in */*) ;; *) break ;; esac
327a7b590b3Smrg
328a7b590b3Smrg        # ...otherwise throw away the child directory and loop
329a7b590b3Smrg        my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"`
330a7b590b3Smrg      done
331a7b590b3Smrg      my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'`
332a7b590b3Smrg
333a7b590b3Smrg      save_mkdir_p_IFS="$IFS"; IFS=':'
334a7b590b3Smrg      for my_dir in $my_dir_list; do
335a7b590b3Smrg	IFS="$save_mkdir_p_IFS"
336a7b590b3Smrg        # mkdir can fail with a `File exist' error if two processes
337a7b590b3Smrg        # try to create one of the directories concurrently.  Don't
338a7b590b3Smrg        # stop in that case!
339a7b590b3Smrg        $MKDIR "$my_dir" 2>/dev/null || :
340a7b590b3Smrg      done
341a7b590b3Smrg      IFS="$save_mkdir_p_IFS"
342a7b590b3Smrg
343a7b590b3Smrg      # Bail out if we (or some other process) failed to create a directory.
344a7b590b3Smrg      test -d "$my_directory_path" || \
345a7b590b3Smrg        func_fatal_error "Failed to create \`$1'"
346a7b590b3Smrg    fi
347a7b590b3Smrg}
348943345d3Smrg
349943345d3Smrg
350943345d3Smrg# func_mktempdir [string]
351943345d3Smrg# Make a temporary directory that won't clash with other running
352943345d3Smrg# libtool processes, and avoids race conditions if possible.  If
353943345d3Smrg# given, STRING is the basename for that directory.
354943345d3Smrgfunc_mktempdir ()
355943345d3Smrg{
356943345d3Smrg    my_template="${TMPDIR-/tmp}/${1-$progname}"
357943345d3Smrg
358a7b590b3Smrg    if test "$opt_dry_run" = ":"; then
359943345d3Smrg      # Return a directory name, but don't create it in dry-run mode
360943345d3Smrg      my_tmpdir="${my_template}-$$"
361943345d3Smrg    else
362943345d3Smrg
363943345d3Smrg      # If mktemp works, use that first and foremost
364943345d3Smrg      my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
365943345d3Smrg
366943345d3Smrg      if test ! -d "$my_tmpdir"; then
367a7b590b3Smrg        # Failing that, at least try and use $RANDOM to avoid a race
368a7b590b3Smrg        my_tmpdir="${my_template}-${RANDOM-0}$$"
369943345d3Smrg
370a7b590b3Smrg        save_mktempdir_umask=`umask`
371a7b590b3Smrg        umask 0077
372a7b590b3Smrg        $MKDIR "$my_tmpdir"
373a7b590b3Smrg        umask $save_mktempdir_umask
374943345d3Smrg      fi
375943345d3Smrg
376943345d3Smrg      # If we're not in dry-run mode, bomb out on failure
377a7b590b3Smrg      test -d "$my_tmpdir" || \
378a7b590b3Smrg        func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
379943345d3Smrg    fi
380943345d3Smrg
381a7b590b3Smrg    $ECHO "X$my_tmpdir" | $Xsed
382943345d3Smrg}
383943345d3Smrg
384943345d3Smrg
385a7b590b3Smrg# func_quote_for_eval arg
386a7b590b3Smrg# Aesthetically quote ARG to be evaled later.
387a7b590b3Smrg# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
388a7b590b3Smrg# is double-quoted, suitable for a subsequent eval, whereas
389a7b590b3Smrg# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
390a7b590b3Smrg# which are still active within double quotes backslashified.
391a7b590b3Smrgfunc_quote_for_eval ()
392943345d3Smrg{
393a7b590b3Smrg    case $1 in
394a7b590b3Smrg      *[\\\`\"\$]*)
395a7b590b3Smrg	func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;;
396a7b590b3Smrg      *)
397a7b590b3Smrg        func_quote_for_eval_unquoted_result="$1" ;;
398a7b590b3Smrg    esac
399a7b590b3Smrg
400a7b590b3Smrg    case $func_quote_for_eval_unquoted_result in
401a7b590b3Smrg      # Double-quote args containing shell metacharacters to delay
402a7b590b3Smrg      # word splitting, command substitution and and variable
403a7b590b3Smrg      # expansion for a subsequent eval.
404a7b590b3Smrg      # Many Bourne shells cannot handle close brackets correctly
405a7b590b3Smrg      # in scan sets, so we specify it separately.
406a7b590b3Smrg      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
407a7b590b3Smrg        func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
408a7b590b3Smrg        ;;
409a7b590b3Smrg      *)
410a7b590b3Smrg        func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
411943345d3Smrg    esac
412943345d3Smrg}
413943345d3Smrg
414943345d3Smrg
415a7b590b3Smrg# func_quote_for_expand arg
416a7b590b3Smrg# Aesthetically quote ARG to be evaled later; same as above,
417a7b590b3Smrg# but do not quote variable references.
418a7b590b3Smrgfunc_quote_for_expand ()
419943345d3Smrg{
420a7b590b3Smrg    case $1 in
421a7b590b3Smrg      *[\\\`\"]*)
422a7b590b3Smrg	my_arg=`$ECHO "X$1" | $Xsed \
423a7b590b3Smrg	    -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
424943345d3Smrg      *)
425a7b590b3Smrg        my_arg="$1" ;;
426a7b590b3Smrg    esac
427a7b590b3Smrg
428a7b590b3Smrg    case $my_arg in
429a7b590b3Smrg      # Double-quote args containing shell metacharacters to delay
430a7b590b3Smrg      # word splitting and command substitution for a subsequent eval.
431a7b590b3Smrg      # Many Bourne shells cannot handle close brackets correctly
432a7b590b3Smrg      # in scan sets, so we specify it separately.
433a7b590b3Smrg      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
434a7b590b3Smrg        my_arg="\"$my_arg\""
435a7b590b3Smrg        ;;
436a7b590b3Smrg    esac
437a7b590b3Smrg
438a7b590b3Smrg    func_quote_for_expand_result="$my_arg"
439943345d3Smrg}
440943345d3Smrg
441943345d3Smrg
442a7b590b3Smrg# func_show_eval cmd [fail_exp]
443a7b590b3Smrg# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
444a7b590b3Smrg# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
445a7b590b3Smrg# is given, then evaluate it.
446a7b590b3Smrgfunc_show_eval ()
447943345d3Smrg{
448a7b590b3Smrg    my_cmd="$1"
449a7b590b3Smrg    my_fail_exp="${2-:}"
450943345d3Smrg
451a7b590b3Smrg    ${opt_silent-false} || {
452a7b590b3Smrg      func_quote_for_expand "$my_cmd"
453a7b590b3Smrg      eval "func_echo $func_quote_for_expand_result"
454a7b590b3Smrg    }
455a7b590b3Smrg
456a7b590b3Smrg    if ${opt_dry_run-false}; then :; else
457a7b590b3Smrg      eval "$my_cmd"
458a7b590b3Smrg      my_status=$?
459a7b590b3Smrg      if test "$my_status" -eq 0; then :; else
460a7b590b3Smrg	eval "(exit $my_status); $my_fail_exp"
461a7b590b3Smrg      fi
462943345d3Smrg    fi
463943345d3Smrg}
464943345d3Smrg
465a7b590b3Smrg
466a7b590b3Smrg# func_show_eval_locale cmd [fail_exp]
467a7b590b3Smrg# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
468a7b590b3Smrg# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
469a7b590b3Smrg# is given, then evaluate it.  Use the saved locale for evaluation.
470a7b590b3Smrgfunc_show_eval_locale ()
471943345d3Smrg{
472a7b590b3Smrg    my_cmd="$1"
473a7b590b3Smrg    my_fail_exp="${2-:}"
474a7b590b3Smrg
475a7b590b3Smrg    ${opt_silent-false} || {
476a7b590b3Smrg      func_quote_for_expand "$my_cmd"
477a7b590b3Smrg      eval "func_echo $func_quote_for_expand_result"
478a7b590b3Smrg    }
479a7b590b3Smrg
480a7b590b3Smrg    if ${opt_dry_run-false}; then :; else
481a7b590b3Smrg      eval "$lt_user_locale
482a7b590b3Smrg	    $my_cmd"
483a7b590b3Smrg      my_status=$?
484a7b590b3Smrg      eval "$lt_safe_locale"
485a7b590b3Smrg      if test "$my_status" -eq 0; then :; else
486a7b590b3Smrg	eval "(exit $my_status); $my_fail_exp"
487a7b590b3Smrg      fi
488943345d3Smrg    fi
489a7b590b3Smrg}
490943345d3Smrg
491943345d3Smrg
492a7b590b3Smrg
493a7b590b3Smrg
494a7b590b3Smrg
495a7b590b3Smrg# func_version
496a7b590b3Smrg# Echo version message to standard output and exit.
497a7b590b3Smrgfunc_version ()
498a7b590b3Smrg{
499a7b590b3Smrg    $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / {
500a7b590b3Smrg        s/^# //
501a7b590b3Smrg	s/^# *$//
502a7b590b3Smrg        s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
503a7b590b3Smrg        p
504a7b590b3Smrg     }' < "$progpath"
505a7b590b3Smrg     exit $?
506a7b590b3Smrg}
507a7b590b3Smrg
508a7b590b3Smrg# func_usage
509a7b590b3Smrg# Echo short help message to standard output and exit.
510a7b590b3Smrgfunc_usage ()
511a7b590b3Smrg{
512a7b590b3Smrg    $SED -n '/^# Usage:/,/# -h/ {
513a7b590b3Smrg        s/^# //
514a7b590b3Smrg	s/^# *$//
515a7b590b3Smrg	s/\$progname/'$progname'/
516a7b590b3Smrg	p
517a7b590b3Smrg    }' < "$progpath"
518a7b590b3Smrg    $ECHO
519a7b590b3Smrg    $ECHO "run \`$progname --help | more' for full usage"
520a7b590b3Smrg    exit $?
521a7b590b3Smrg}
522a7b590b3Smrg
523a7b590b3Smrg# func_help
524a7b590b3Smrg# Echo long help message to standard output and exit.
525a7b590b3Smrgfunc_help ()
526a7b590b3Smrg{
527a7b590b3Smrg    $SED -n '/^# Usage:/,/# Report bugs to/ {
528a7b590b3Smrg        s/^# //
529a7b590b3Smrg	s/^# *$//
530a7b590b3Smrg	s*\$progname*'$progname'*
531a7b590b3Smrg	s*\$host*'"$host"'*
532a7b590b3Smrg	s*\$SHELL*'"$SHELL"'*
533a7b590b3Smrg	s*\$LTCC*'"$LTCC"'*
534a7b590b3Smrg	s*\$LTCFLAGS*'"$LTCFLAGS"'*
535a7b590b3Smrg	s*\$LD*'"$LD"'*
536a7b590b3Smrg	s/\$with_gnu_ld/'"$with_gnu_ld"'/
537a7b590b3Smrg	s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/
538a7b590b3Smrg	s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/
539a7b590b3Smrg	p
540a7b590b3Smrg     }' < "$progpath"
541a7b590b3Smrg    exit $?
542a7b590b3Smrg}
543a7b590b3Smrg
544a7b590b3Smrg# func_missing_arg argname
545a7b590b3Smrg# Echo program name prefixed message to standard error and set global
546a7b590b3Smrg# exit_cmd.
547a7b590b3Smrgfunc_missing_arg ()
548a7b590b3Smrg{
549a7b590b3Smrg    func_error "missing argument for $1"
550a7b590b3Smrg    exit_cmd=exit
551943345d3Smrg}
552943345d3Smrg
553a7b590b3Smrgexit_cmd=:
554943345d3Smrg
555943345d3Smrg
556a7b590b3Smrg
557a7b590b3Smrg
558a7b590b3Smrg
559a7b590b3Smrg# Check that we have a working $ECHO.
560a7b590b3Smrgif test "X$1" = X--no-reexec; then
561a7b590b3Smrg  # Discard the --no-reexec flag, and continue.
562943345d3Smrg  shift
563a7b590b3Smrgelif test "X$1" = X--fallback-echo; then
564a7b590b3Smrg  # Avoid inline document here, it may be left over
565a7b590b3Smrg  :
566a7b590b3Smrgelif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then
567a7b590b3Smrg  # Yippee, $ECHO works!
568a7b590b3Smrg  :
569a7b590b3Smrgelse
570a7b590b3Smrg  # Restart under the correct shell, and then maybe $ECHO will work.
571a7b590b3Smrg  exec $SHELL "$progpath" --no-reexec ${1+"$@"}
572a7b590b3Smrgfi
573943345d3Smrg
574a7b590b3Smrgif test "X$1" = X--fallback-echo; then
575a7b590b3Smrg  # used as fallback echo
576a7b590b3Smrg  shift
577a7b590b3Smrg  cat <<EOF
578a7b590b3Smrg$*
579a7b590b3SmrgEOF
580a7b590b3Smrg  exit $EXIT_SUCCESS
581a7b590b3Smrgfi
582943345d3Smrg
583a7b590b3Smrgmagic="%%%MAGIC variable%%%"
584a7b590b3Smrgmagic_exe="%%%MAGIC EXE variable%%%"
585943345d3Smrg
586a7b590b3Smrg# Global variables.
587a7b590b3Smrg# $mode is unset
588a7b590b3Smrgnonopt=
589a7b590b3Smrgexecute_dlfiles=
590a7b590b3Smrgpreserve_args=
591a7b590b3Smrglo2o="s/\\.lo\$/.${objext}/"
592a7b590b3Smrgo2lo="s/\\.${objext}\$/.lo/"
593a7b590b3Smrgextracted_archives=
594a7b590b3Smrgextracted_serial=0
595943345d3Smrg
596a7b590b3Smrgopt_dry_run=false
597a7b590b3Smrgopt_duplicate_deps=false
598a7b590b3Smrgopt_silent=false
599a7b590b3Smrgopt_debug=:
600943345d3Smrg
601a7b590b3Smrg# If this variable is set in any of the actions, the command in it
602a7b590b3Smrg# will be execed at the end.  This prevents here-documents from being
603a7b590b3Smrg# left over by shells.
604a7b590b3Smrgexec_cmd=
605a7b590b3Smrg
606a7b590b3Smrg# func_fatal_configuration arg...
607a7b590b3Smrg# Echo program name prefixed message to standard error, followed by
608a7b590b3Smrg# a configuration failure hint, and exit.
609a7b590b3Smrgfunc_fatal_configuration ()
610a7b590b3Smrg{
611a7b590b3Smrg    func_error ${1+"$@"}
612a7b590b3Smrg    func_error "See the $PACKAGE documentation for more information."
613a7b590b3Smrg    func_fatal_error "Fatal configuration error."
614a7b590b3Smrg}
615943345d3Smrg
6165e695a52Smrg
617a7b590b3Smrg# func_config
618a7b590b3Smrg# Display the configuration for all the tags in this script.
619a7b590b3Smrgfunc_config ()
620a7b590b3Smrg{
621a7b590b3Smrg    re_begincf='^# ### BEGIN LIBTOOL'
622a7b590b3Smrg    re_endcf='^# ### END LIBTOOL'
623a7b590b3Smrg
624a7b590b3Smrg    # Default configuration.
625a7b590b3Smrg    $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
626943345d3Smrg
627943345d3Smrg    # Now print the configurations for the tags.
628943345d3Smrg    for tagname in $taglist; do
629a7b590b3Smrg      $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
630943345d3Smrg    done
631943345d3Smrg
632a7b590b3Smrg    exit $?
633a7b590b3Smrg}
634943345d3Smrg
635a7b590b3Smrg# func_features
636a7b590b3Smrg# Display the features supported by this script.
637a7b590b3Smrgfunc_features ()
638a7b590b3Smrg{
639a7b590b3Smrg    $ECHO "host: $host"
640943345d3Smrg    if test "$build_libtool_libs" = yes; then
641a7b590b3Smrg      $ECHO "enable shared libraries"
642943345d3Smrg    else
643a7b590b3Smrg      $ECHO "disable shared libraries"
644943345d3Smrg    fi
645943345d3Smrg    if test "$build_old_libs" = yes; then
646a7b590b3Smrg      $ECHO "enable static libraries"
647943345d3Smrg    else
648a7b590b3Smrg      $ECHO "disable static libraries"
649943345d3Smrg    fi
650a7b590b3Smrg
651943345d3Smrg    exit $?
652a7b590b3Smrg}
653943345d3Smrg
654a7b590b3Smrg# func_enable_tag tagname
655a7b590b3Smrg# Verify that TAGNAME is valid, and either flag an error and exit, or
656a7b590b3Smrg# enable the TAGNAME tag.  We also add TAGNAME to the global $taglist
657a7b590b3Smrg# variable here.
658a7b590b3Smrgfunc_enable_tag ()
659a7b590b3Smrg{
660a7b590b3Smrg  # Global variable:
661a7b590b3Smrg  tagname="$1"
662943345d3Smrg
663a7b590b3Smrg  re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
664a7b590b3Smrg  re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
665a7b590b3Smrg  sed_extractcf="/$re_begincf/,/$re_endcf/p"
666943345d3Smrg
667a7b590b3Smrg  # Validate tagname.
668a7b590b3Smrg  case $tagname in
669a7b590b3Smrg    *[!-_A-Za-z0-9,/]*)
670a7b590b3Smrg      func_fatal_error "invalid tag name: $tagname"
671a7b590b3Smrg      ;;
672a7b590b3Smrg  esac
673943345d3Smrg
674a7b590b3Smrg  # Don't test for the "default" C tag, as we know it's
675a7b590b3Smrg  # there but not specially marked.
676a7b590b3Smrg  case $tagname in
677a7b590b3Smrg    CC) ;;
678a7b590b3Smrg    *)
679a7b590b3Smrg      if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
680a7b590b3Smrg	taglist="$taglist $tagname"
681a7b590b3Smrg
682a7b590b3Smrg	# Evaluate the configuration.  Be careful to quote the path
683a7b590b3Smrg	# and the sed script, to avoid splitting on whitespace, but
684a7b590b3Smrg	# also don't use non-portable quotes within backquotes within
685a7b590b3Smrg	# quotes we have to do it in 2 steps:
686a7b590b3Smrg	extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
687a7b590b3Smrg	eval "$extractedcf"
688a7b590b3Smrg      else
689a7b590b3Smrg	func_error "ignoring unknown tag $tagname"
690a7b590b3Smrg      fi
691a7b590b3Smrg      ;;
692a7b590b3Smrg  esac
693a7b590b3Smrg}
694a7b590b3Smrg
695a7b590b3Smrg# Parse options once, thoroughly.  This comes as soon as possible in
696a7b590b3Smrg# the script to make things like `libtool --version' happen quickly.
697a7b590b3Smrg{
698943345d3Smrg
699a7b590b3Smrg  # Shorthand for --mode=foo, only valid as the first argument
700a7b590b3Smrg  case $1 in
701a7b590b3Smrg  clean|clea|cle|cl)
702a7b590b3Smrg    shift; set dummy --mode clean ${1+"$@"}; shift
703943345d3Smrg    ;;
704a7b590b3Smrg  compile|compil|compi|comp|com|co|c)
705a7b590b3Smrg    shift; set dummy --mode compile ${1+"$@"}; shift
706943345d3Smrg    ;;
707a7b590b3Smrg  execute|execut|execu|exec|exe|ex|e)
708a7b590b3Smrg    shift; set dummy --mode execute ${1+"$@"}; shift
709943345d3Smrg    ;;
710a7b590b3Smrg  finish|finis|fini|fin|fi|f)
711a7b590b3Smrg    shift; set dummy --mode finish ${1+"$@"}; shift
712943345d3Smrg    ;;
713a7b590b3Smrg  install|instal|insta|inst|ins|in|i)
714a7b590b3Smrg    shift; set dummy --mode install ${1+"$@"}; shift
715a7b590b3Smrg    ;;
716a7b590b3Smrg  link|lin|li|l)
717a7b590b3Smrg    shift; set dummy --mode link ${1+"$@"}; shift
718a7b590b3Smrg    ;;
719a7b590b3Smrg  uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
720a7b590b3Smrg    shift; set dummy --mode uninstall ${1+"$@"}; shift
721943345d3Smrg    ;;
722943345d3Smrg  esac
723943345d3Smrg
724a7b590b3Smrg  # Parse non-mode specific arguments:
725a7b590b3Smrg  while test "$#" -gt 0; do
726a7b590b3Smrg    opt="$1"
727a7b590b3Smrg    shift
728943345d3Smrg
729a7b590b3Smrg    case $opt in
730a7b590b3Smrg      --config)		func_config					;;
731943345d3Smrg
732a7b590b3Smrg      --debug)		preserve_args="$preserve_args $opt"
733a7b590b3Smrg			func_echo "enabling shell trace mode"
734a7b590b3Smrg			opt_debug='set -x'
735a7b590b3Smrg			$opt_debug
736a7b590b3Smrg			;;
737943345d3Smrg
738a7b590b3Smrg      -dlopen)		test "$#" -eq 0 && func_missing_arg "$opt" && break
739a7b590b3Smrg			execute_dlfiles="$execute_dlfiles $1"
740a7b590b3Smrg			shift
741a7b590b3Smrg			;;
742943345d3Smrg
743a7b590b3Smrg      --dry-run | -n)	opt_dry_run=:					;;
744a7b590b3Smrg      --features)       func_features					;;
745a7b590b3Smrg      --finish)		mode="finish"					;;
746a7b590b3Smrg
747a7b590b3Smrg      --mode)		test "$#" -eq 0 && func_missing_arg "$opt" && break
748a7b590b3Smrg			case $1 in
749a7b590b3Smrg			  # Valid mode arguments:
750a7b590b3Smrg			  clean)	;;
751a7b590b3Smrg			  compile)	;;
752a7b590b3Smrg			  execute)	;;
753a7b590b3Smrg			  finish)	;;
754a7b590b3Smrg			  install)	;;
755a7b590b3Smrg			  link)		;;
756a7b590b3Smrg			  relink)	;;
757a7b590b3Smrg			  uninstall)	;;
758a7b590b3Smrg
759a7b590b3Smrg			  # Catch anything else as an error
760a7b590b3Smrg			  *) func_error "invalid argument for $opt"
761a7b590b3Smrg			     exit_cmd=exit
762a7b590b3Smrg			     break
763a7b590b3Smrg			     ;;
764a7b590b3Smrg		        esac
765a7b590b3Smrg
766a7b590b3Smrg			mode="$1"
767a7b590b3Smrg			shift
768a7b590b3Smrg			;;
769a7b590b3Smrg
770a7b590b3Smrg      --preserve-dup-deps)
771a7b590b3Smrg			opt_duplicate_deps=:				;;
772a7b590b3Smrg
773a7b590b3Smrg      --quiet|--silent)	preserve_args="$preserve_args $opt"
774a7b590b3Smrg			opt_silent=:
775a7b590b3Smrg			;;
776a7b590b3Smrg
777a7b590b3Smrg      --verbose| -v)	preserve_args="$preserve_args $opt"
778a7b590b3Smrg			opt_silent=false
779a7b590b3Smrg			;;
780a7b590b3Smrg
781a7b590b3Smrg      --tag)		test "$#" -eq 0 && func_missing_arg "$opt" && break
782a7b590b3Smrg			preserve_args="$preserve_args $opt $1"
783a7b590b3Smrg			func_enable_tag "$1"	# tagname is set here
784a7b590b3Smrg			shift
785a7b590b3Smrg			;;
786a7b590b3Smrg
787a7b590b3Smrg      # Separate optargs to long options:
788a7b590b3Smrg      -dlopen=*|--mode=*|--tag=*)
789a7b590b3Smrg			func_opt_split "$opt"
790a7b590b3Smrg			set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"}
791a7b590b3Smrg			shift
792a7b590b3Smrg			;;
793a7b590b3Smrg
794a7b590b3Smrg      -\?|-h)		func_usage					;;
795a7b590b3Smrg      --help)		opt_help=:					;;
796a7b590b3Smrg      --version)	func_version					;;
797a7b590b3Smrg
798a7b590b3Smrg      -*)		func_fatal_help "unrecognized option \`$opt'"	;;
799a7b590b3Smrg
800a7b590b3Smrg      *)		nonopt="$opt"
801a7b590b3Smrg			break
802a7b590b3Smrg			;;
803a7b590b3Smrg    esac
804a7b590b3Smrg  done
805a7b590b3Smrg
806a7b590b3Smrg
807a7b590b3Smrg  case $host in
808a7b590b3Smrg    *cygwin* | *mingw* | *pw32* | *cegcc*)
809a7b590b3Smrg      # don't eliminate duplications in $postdeps and $predeps
810a7b590b3Smrg      opt_duplicate_compiler_generated_deps=:
811943345d3Smrg      ;;
812943345d3Smrg    *)
813a7b590b3Smrg      opt_duplicate_compiler_generated_deps=$opt_duplicate_deps
814a7b590b3Smrg      ;;
815a7b590b3Smrg  esac
816943345d3Smrg
817a7b590b3Smrg  # Having warned about all mis-specified options, bail out if
818a7b590b3Smrg  # anything was wrong.
819a7b590b3Smrg  $exit_cmd $EXIT_FAILURE
820a7b590b3Smrg}
821a7b590b3Smrg
822a7b590b3Smrg# func_check_version_match
823a7b590b3Smrg# Ensure that we are using m4 macros, and libtool script from the same
824a7b590b3Smrg# release of libtool.
825a7b590b3Smrgfunc_check_version_match ()
826a7b590b3Smrg{
827a7b590b3Smrg  if test "$package_revision" != "$macro_revision"; then
828a7b590b3Smrg    if test "$VERSION" != "$macro_version"; then
829a7b590b3Smrg      if test -z "$macro_version"; then
830a7b590b3Smrg        cat >&2 <<_LT_EOF
831a7b590b3Smrg$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
832a7b590b3Smrg$progname: definition of this LT_INIT comes from an older release.
833a7b590b3Smrg$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
834a7b590b3Smrg$progname: and run autoconf again.
835a7b590b3Smrg_LT_EOF
836a7b590b3Smrg      else
837a7b590b3Smrg        cat >&2 <<_LT_EOF
838a7b590b3Smrg$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
839a7b590b3Smrg$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
840a7b590b3Smrg$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
841a7b590b3Smrg$progname: and run autoconf again.
842a7b590b3Smrg_LT_EOF
843943345d3Smrg      fi
844a7b590b3Smrg    else
845a7b590b3Smrg      cat >&2 <<_LT_EOF
846a7b590b3Smrg$progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision,
847a7b590b3Smrg$progname: but the definition of this LT_INIT comes from revision $macro_revision.
848a7b590b3Smrg$progname: You should recreate aclocal.m4 with macros from revision $package_revision
849a7b590b3Smrg$progname: of $PACKAGE $VERSION and run autoconf again.
850a7b590b3Smrg_LT_EOF
851a7b590b3Smrg    fi
852a7b590b3Smrg
853a7b590b3Smrg    exit $EXIT_MISMATCH
854a7b590b3Smrg  fi
855a7b590b3Smrg}
856a7b590b3Smrg
857a7b590b3Smrg
858a7b590b3Smrg## ----------- ##
859a7b590b3Smrg##    Main.    ##
860a7b590b3Smrg## ----------- ##
861a7b590b3Smrg
862a7b590b3Smrg$opt_help || {
863a7b590b3Smrg  # Sanity checks first:
864a7b590b3Smrg  func_check_version_match
865a7b590b3Smrg
866a7b590b3Smrg  if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
867a7b590b3Smrg    func_fatal_configuration "not configured to build any kind of library"
868943345d3Smrg  fi
869943345d3Smrg
870a7b590b3Smrg  test -z "$mode" && func_fatal_error "error: you must specify a MODE."
871a7b590b3Smrg
872a7b590b3Smrg
873a7b590b3Smrg  # Darwin sucks
874a7b590b3Smrg  eval std_shrext=\"$shrext_cmds\"
875a7b590b3Smrg
876a7b590b3Smrg
877943345d3Smrg  # Only execute mode is allowed to have -dlopen flags.
878943345d3Smrg  if test -n "$execute_dlfiles" && test "$mode" != execute; then
879a7b590b3Smrg    func_error "unrecognized option \`-dlopen'"
880a7b590b3Smrg    $ECHO "$help" 1>&2
881943345d3Smrg    exit $EXIT_FAILURE
882943345d3Smrg  fi
883943345d3Smrg
884943345d3Smrg  # Change the help message to a mode-specific one.
885943345d3Smrg  generic_help="$help"
886a7b590b3Smrg  help="Try \`$progname --help --mode=$mode' for more information."
887a7b590b3Smrg}
888943345d3Smrg
889943345d3Smrg
890a7b590b3Smrg# func_lalib_p file
891a7b590b3Smrg# True iff FILE is a libtool `.la' library or `.lo' object file.
892a7b590b3Smrg# This function is only a basic sanity check; it will hardly flush out
893a7b590b3Smrg# determined imposters.
894a7b590b3Smrgfunc_lalib_p ()
895a7b590b3Smrg{
896a7b590b3Smrg    test -f "$1" &&
897a7b590b3Smrg      $SED -e 4q "$1" 2>/dev/null \
898a7b590b3Smrg        | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
899a7b590b3Smrg}
900943345d3Smrg
901a7b590b3Smrg# func_lalib_unsafe_p file
902a7b590b3Smrg# True iff FILE is a libtool `.la' library or `.lo' object file.
903a7b590b3Smrg# This function implements the same check as func_lalib_p without
904a7b590b3Smrg# resorting to external programs.  To this end, it redirects stdin and
905a7b590b3Smrg# closes it afterwards, without saving the original file descriptor.
906a7b590b3Smrg# As a safety measure, use it only where a negative result would be
907a7b590b3Smrg# fatal anyway.  Works if `file' does not exist.
908a7b590b3Smrgfunc_lalib_unsafe_p ()
909a7b590b3Smrg{
910a7b590b3Smrg    lalib_p=no
911a7b590b3Smrg    if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
912a7b590b3Smrg	for lalib_p_l in 1 2 3 4
913a7b590b3Smrg	do
914a7b590b3Smrg	    read lalib_p_line
915a7b590b3Smrg	    case "$lalib_p_line" in
916a7b590b3Smrg		\#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
917a7b590b3Smrg	    esac
918a7b590b3Smrg	done
919a7b590b3Smrg	exec 0<&5 5<&-
920a7b590b3Smrg    fi
921a7b590b3Smrg    test "$lalib_p" = yes
922a7b590b3Smrg}
923943345d3Smrg
924a7b590b3Smrg# func_ltwrapper_script_p file
925a7b590b3Smrg# True iff FILE is a libtool wrapper script
926a7b590b3Smrg# This function is only a basic sanity check; it will hardly flush out
927a7b590b3Smrg# determined imposters.
928a7b590b3Smrgfunc_ltwrapper_script_p ()
929a7b590b3Smrg{
930a7b590b3Smrg    func_lalib_p "$1"
931a7b590b3Smrg}
932943345d3Smrg
933a7b590b3Smrg# func_ltwrapper_executable_p file
934a7b590b3Smrg# True iff FILE is a libtool wrapper executable
935a7b590b3Smrg# This function is only a basic sanity check; it will hardly flush out
936a7b590b3Smrg# determined imposters.
937a7b590b3Smrgfunc_ltwrapper_executable_p ()
938a7b590b3Smrg{
939a7b590b3Smrg    func_ltwrapper_exec_suffix=
940a7b590b3Smrg    case $1 in
941a7b590b3Smrg    *.exe) ;;
942a7b590b3Smrg    *) func_ltwrapper_exec_suffix=.exe ;;
943a7b590b3Smrg    esac
944a7b590b3Smrg    $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
945a7b590b3Smrg}
946943345d3Smrg
947a7b590b3Smrg# func_ltwrapper_scriptname file
948a7b590b3Smrg# Assumes file is an ltwrapper_executable
949a7b590b3Smrg# uses $file to determine the appropriate filename for a
950a7b590b3Smrg# temporary ltwrapper_script.
951a7b590b3Smrgfunc_ltwrapper_scriptname ()
952a7b590b3Smrg{
953a7b590b3Smrg    func_ltwrapper_scriptname_result=""
954a7b590b3Smrg    if func_ltwrapper_executable_p "$1"; then
955a7b590b3Smrg	func_dirname_and_basename "$1" "" "."
956a7b590b3Smrg	func_stripname '' '.exe' "$func_basename_result"
957a7b590b3Smrg	func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
958a7b590b3Smrg    fi
959a7b590b3Smrg}
960a7b590b3Smrg
961a7b590b3Smrg# func_ltwrapper_p file
962a7b590b3Smrg# True iff FILE is a libtool wrapper script or wrapper executable
963a7b590b3Smrg# This function is only a basic sanity check; it will hardly flush out
964a7b590b3Smrg# determined imposters.
965a7b590b3Smrgfunc_ltwrapper_p ()
966a7b590b3Smrg{
967a7b590b3Smrg    func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
968a7b590b3Smrg}
969a7b590b3Smrg
970a7b590b3Smrg
971a7b590b3Smrg# func_execute_cmds commands fail_cmd
972a7b590b3Smrg# Execute tilde-delimited COMMANDS.
973a7b590b3Smrg# If FAIL_CMD is given, eval that upon failure.
974a7b590b3Smrg# FAIL_CMD may read-access the current command in variable CMD!
975a7b590b3Smrgfunc_execute_cmds ()
976a7b590b3Smrg{
977a7b590b3Smrg    $opt_debug
978a7b590b3Smrg    save_ifs=$IFS; IFS='~'
979a7b590b3Smrg    for cmd in $1; do
980a7b590b3Smrg      IFS=$save_ifs
981a7b590b3Smrg      eval cmd=\"$cmd\"
982a7b590b3Smrg      func_show_eval "$cmd" "${2-:}"
983a7b590b3Smrg    done
984a7b590b3Smrg    IFS=$save_ifs
985a7b590b3Smrg}
986a7b590b3Smrg
987a7b590b3Smrg
988a7b590b3Smrg# func_source file
989a7b590b3Smrg# Source FILE, adding directory component if necessary.
990a7b590b3Smrg# Note that it is not necessary on cygwin/mingw to append a dot to
991a7b590b3Smrg# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
992a7b590b3Smrg# behavior happens only for exec(3), not for open(2)!  Also, sourcing
993a7b590b3Smrg# `FILE.' does not work on cygwin managed mounts.
994a7b590b3Smrgfunc_source ()
995a7b590b3Smrg{
996a7b590b3Smrg    $opt_debug
997a7b590b3Smrg    case $1 in
998a7b590b3Smrg    */* | *\\*)	. "$1" ;;
999a7b590b3Smrg    *)		. "./$1" ;;
1000a7b590b3Smrg    esac
1001a7b590b3Smrg}
1002a7b590b3Smrg
1003a7b590b3Smrg
1004a7b590b3Smrg# func_infer_tag arg
1005a7b590b3Smrg# Infer tagged configuration to use if any are available and
1006a7b590b3Smrg# if one wasn't chosen via the "--tag" command line option.
1007a7b590b3Smrg# Only attempt this if the compiler in the base compile
1008a7b590b3Smrg# command doesn't match the default compiler.
1009a7b590b3Smrg# arg is usually of the form 'gcc ...'
1010a7b590b3Smrgfunc_infer_tag ()
1011a7b590b3Smrg{
1012a7b590b3Smrg    $opt_debug
1013a7b590b3Smrg    if test -n "$available_tags" && test -z "$tagname"; then
1014a7b590b3Smrg      CC_quoted=
1015a7b590b3Smrg      for arg in $CC; do
1016a7b590b3Smrg        func_quote_for_eval "$arg"
1017a7b590b3Smrg	CC_quoted="$CC_quoted $func_quote_for_eval_result"
1018a7b590b3Smrg      done
1019a7b590b3Smrg      case $@ in
1020a7b590b3Smrg      # Blanks in the command may have been stripped by the calling shell,
1021a7b590b3Smrg      # but not from the CC environment variable when configure was run.
1022a7b590b3Smrg      " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;;
1023a7b590b3Smrg      # Blanks at the start of $base_compile will cause this to fail
1024a7b590b3Smrg      # if we don't check for them as well.
1025a7b590b3Smrg      *)
1026a7b590b3Smrg	for z in $available_tags; do
1027a7b590b3Smrg	  if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
1028a7b590b3Smrg	    # Evaluate the configuration.
1029a7b590b3Smrg	    eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
1030a7b590b3Smrg	    CC_quoted=
1031a7b590b3Smrg	    for arg in $CC; do
1032a7b590b3Smrg	      # Double-quote args containing other shell metacharacters.
1033a7b590b3Smrg	      func_quote_for_eval "$arg"
1034a7b590b3Smrg	      CC_quoted="$CC_quoted $func_quote_for_eval_result"
1035a7b590b3Smrg	    done
1036a7b590b3Smrg	    case "$@ " in
1037a7b590b3Smrg	      " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*)
1038a7b590b3Smrg	      # The compiler in the base compile command matches
1039a7b590b3Smrg	      # the one in the tagged configuration.
1040a7b590b3Smrg	      # Assume this is the tagged configuration we want.
1041a7b590b3Smrg	      tagname=$z
1042a7b590b3Smrg	      break
1043a7b590b3Smrg	      ;;
1044a7b590b3Smrg	    esac
1045a7b590b3Smrg	  fi
1046a7b590b3Smrg	done
1047a7b590b3Smrg	# If $tagname still isn't set, then no tagged configuration
1048a7b590b3Smrg	# was found and let the user know that the "--tag" command
1049a7b590b3Smrg	# line option must be used.
1050a7b590b3Smrg	if test -z "$tagname"; then
1051a7b590b3Smrg	  func_echo "unable to infer tagged configuration"
1052a7b590b3Smrg	  func_fatal_error "specify a tag with \`--tag'"
1053a7b590b3Smrg#	else
1054a7b590b3Smrg#	  func_verbose "using $tagname tagged configuration"
1055a7b590b3Smrg	fi
1056a7b590b3Smrg	;;
1057a7b590b3Smrg      esac
1058a7b590b3Smrg    fi
1059a7b590b3Smrg}
1060a7b590b3Smrg
1061a7b590b3Smrg
1062a7b590b3Smrg
1063a7b590b3Smrg# func_write_libtool_object output_name pic_name nonpic_name
1064a7b590b3Smrg# Create a libtool object file (analogous to a ".la" file),
1065a7b590b3Smrg# but don't create it if we're doing a dry run.
1066a7b590b3Smrgfunc_write_libtool_object ()
1067a7b590b3Smrg{
1068a7b590b3Smrg    write_libobj=${1}
1069a7b590b3Smrg    if test "$build_libtool_libs" = yes; then
1070a7b590b3Smrg      write_lobj=\'${2}\'
1071a7b590b3Smrg    else
1072a7b590b3Smrg      write_lobj=none
1073a7b590b3Smrg    fi
1074a7b590b3Smrg
1075a7b590b3Smrg    if test "$build_old_libs" = yes; then
1076a7b590b3Smrg      write_oldobj=\'${3}\'
1077a7b590b3Smrg    else
1078a7b590b3Smrg      write_oldobj=none
1079a7b590b3Smrg    fi
1080a7b590b3Smrg
1081a7b590b3Smrg    $opt_dry_run || {
1082a7b590b3Smrg      cat >${write_libobj}T <<EOF
1083a7b590b3Smrg# $write_libobj - a libtool object file
1084a7b590b3Smrg# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
1085a7b590b3Smrg#
1086a7b590b3Smrg# Please DO NOT delete this file!
1087a7b590b3Smrg# It is necessary for linking the library.
1088a7b590b3Smrg
1089a7b590b3Smrg# Name of the PIC object.
1090a7b590b3Smrgpic_object=$write_lobj
1091a7b590b3Smrg
1092a7b590b3Smrg# Name of the non-PIC object
1093a7b590b3Smrgnon_pic_object=$write_oldobj
1094a7b590b3Smrg
1095a7b590b3SmrgEOF
1096a7b590b3Smrg      $MV "${write_libobj}T" "${write_libobj}"
1097a7b590b3Smrg    }
1098a7b590b3Smrg}
1099a7b590b3Smrg
1100a7b590b3Smrg# func_mode_compile arg...
1101a7b590b3Smrgfunc_mode_compile ()
1102a7b590b3Smrg{
1103a7b590b3Smrg    $opt_debug
1104a7b590b3Smrg    # Get the compilation command and the source file.
1105a7b590b3Smrg    base_compile=
1106a7b590b3Smrg    srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
1107a7b590b3Smrg    suppress_opt=yes
1108a7b590b3Smrg    suppress_output=
1109a7b590b3Smrg    arg_mode=normal
1110a7b590b3Smrg    libobj=
1111a7b590b3Smrg    later=
1112a7b590b3Smrg    pie_flag=
1113a7b590b3Smrg
1114a7b590b3Smrg    for arg
1115a7b590b3Smrg    do
1116a7b590b3Smrg      case $arg_mode in
1117a7b590b3Smrg      arg  )
1118a7b590b3Smrg	# do not "continue".  Instead, add this to base_compile
1119a7b590b3Smrg	lastarg="$arg"
1120a7b590b3Smrg	arg_mode=normal
1121a7b590b3Smrg	;;
1122a7b590b3Smrg
1123a7b590b3Smrg      target )
1124a7b590b3Smrg	libobj="$arg"
1125a7b590b3Smrg	arg_mode=normal
1126a7b590b3Smrg	continue
1127a7b590b3Smrg	;;
1128a7b590b3Smrg
1129a7b590b3Smrg      normal )
1130a7b590b3Smrg	# Accept any command-line options.
1131a7b590b3Smrg	case $arg in
1132a7b590b3Smrg	-o)
1133a7b590b3Smrg	  test -n "$libobj" && \
1134a7b590b3Smrg	    func_fatal_error "you cannot specify \`-o' more than once"
1135a7b590b3Smrg	  arg_mode=target
1136a7b590b3Smrg	  continue
1137a7b590b3Smrg	  ;;
1138a7b590b3Smrg
1139a7b590b3Smrg	-pie | -fpie | -fPIE)
1140a7b590b3Smrg          pie_flag="$pie_flag $arg"
1141a7b590b3Smrg	  continue
1142a7b590b3Smrg	  ;;
1143a7b590b3Smrg
1144a7b590b3Smrg	-shared | -static | -prefer-pic | -prefer-non-pic)
1145a7b590b3Smrg	  later="$later $arg"
1146a7b590b3Smrg	  continue
1147a7b590b3Smrg	  ;;
1148a7b590b3Smrg
1149a7b590b3Smrg	-no-suppress)
1150943345d3Smrg	  suppress_opt=no
1151943345d3Smrg	  continue
1152943345d3Smrg	  ;;
1153943345d3Smrg
1154943345d3Smrg	-Xcompiler)
1155943345d3Smrg	  arg_mode=arg  #  the next one goes into the "base_compile" arg list
1156943345d3Smrg	  continue      #  The current "srcfile" will either be retained or
1157943345d3Smrg	  ;;            #  replaced later.  I would guess that would be a bug.
1158943345d3Smrg
1159943345d3Smrg	-Wc,*)
1160a7b590b3Smrg	  func_stripname '-Wc,' '' "$arg"
1161a7b590b3Smrg	  args=$func_stripname_result
1162943345d3Smrg	  lastarg=
1163943345d3Smrg	  save_ifs="$IFS"; IFS=','
1164a7b590b3Smrg	  for arg in $args; do
1165943345d3Smrg	    IFS="$save_ifs"
1166a7b590b3Smrg	    func_quote_for_eval "$arg"
1167a7b590b3Smrg	    lastarg="$lastarg $func_quote_for_eval_result"
1168943345d3Smrg	  done
1169943345d3Smrg	  IFS="$save_ifs"
1170a7b590b3Smrg	  func_stripname ' ' '' "$lastarg"
1171a7b590b3Smrg	  lastarg=$func_stripname_result
1172943345d3Smrg
1173943345d3Smrg	  # Add the arguments to base_compile.
1174943345d3Smrg	  base_compile="$base_compile $lastarg"
1175943345d3Smrg	  continue
1176943345d3Smrg	  ;;
1177943345d3Smrg
1178a7b590b3Smrg	*)
1179943345d3Smrg	  # Accept the current argument as the source file.
1180943345d3Smrg	  # The previous "srcfile" becomes the current argument.
1181943345d3Smrg	  #
1182943345d3Smrg	  lastarg="$srcfile"
1183943345d3Smrg	  srcfile="$arg"
1184943345d3Smrg	  ;;
1185943345d3Smrg	esac  #  case $arg
1186943345d3Smrg	;;
1187943345d3Smrg      esac    #  case $arg_mode
1188943345d3Smrg
1189943345d3Smrg      # Aesthetically quote the previous argument.
1190a7b590b3Smrg      func_quote_for_eval "$lastarg"
1191a7b590b3Smrg      base_compile="$base_compile $func_quote_for_eval_result"
1192943345d3Smrg    done # for arg
1193943345d3Smrg
1194943345d3Smrg    case $arg_mode in
1195943345d3Smrg    arg)
1196a7b590b3Smrg      func_fatal_error "you must specify an argument for -Xcompile"
1197943345d3Smrg      ;;
1198943345d3Smrg    target)
1199a7b590b3Smrg      func_fatal_error "you must specify a target with \`-o'"
1200943345d3Smrg      ;;
1201943345d3Smrg    *)
1202943345d3Smrg      # Get the name of the library object.
1203a7b590b3Smrg      test -z "$libobj" && {
1204a7b590b3Smrg	func_basename "$srcfile"
1205a7b590b3Smrg	libobj="$func_basename_result"
1206a7b590b3Smrg      }
1207943345d3Smrg      ;;
1208943345d3Smrg    esac
1209943345d3Smrg
1210943345d3Smrg    # Recognize several different file suffixes.
1211943345d3Smrg    # If the user specifies -o file.o, it is replaced with file.lo
1212943345d3Smrg    case $libobj in
1213a7b590b3Smrg    *.[cCFSifmso] | \
1214a7b590b3Smrg    *.ada | *.adb | *.ads | *.asm | \
1215a7b590b3Smrg    *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
1216a7b590b3Smrg    *.[fF][09]? | *.for | *.java | *.obj | *.sx)
1217a7b590b3Smrg      func_xform "$libobj"
1218a7b590b3Smrg      libobj=$func_xform_result
1219a7b590b3Smrg      ;;
1220943345d3Smrg    esac
1221943345d3Smrg
1222943345d3Smrg    case $libobj in
1223a7b590b3Smrg    *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
1224943345d3Smrg    *)
1225a7b590b3Smrg      func_fatal_error "cannot determine name of library object from \`$libobj'"
1226943345d3Smrg      ;;
1227943345d3Smrg    esac
1228943345d3Smrg
1229943345d3Smrg    func_infer_tag $base_compile
1230943345d3Smrg
1231943345d3Smrg    for arg in $later; do
1232943345d3Smrg      case $arg in
1233a7b590b3Smrg      -shared)
1234a7b590b3Smrg	test "$build_libtool_libs" != yes && \
1235a7b590b3Smrg	  func_fatal_configuration "can not build a shared library"
1236a7b590b3Smrg	build_old_libs=no
1237a7b590b3Smrg	continue
1238a7b590b3Smrg	;;
1239a7b590b3Smrg
1240943345d3Smrg      -static)
1241a7b590b3Smrg	build_libtool_libs=no
1242943345d3Smrg	build_old_libs=yes
1243943345d3Smrg	continue
1244943345d3Smrg	;;
1245943345d3Smrg
1246943345d3Smrg      -prefer-pic)
1247943345d3Smrg	pic_mode=yes
1248943345d3Smrg	continue
1249943345d3Smrg	;;
1250943345d3Smrg
1251943345d3Smrg      -prefer-non-pic)
1252943345d3Smrg	pic_mode=no
1253943345d3Smrg	continue
1254943345d3Smrg	;;
1255943345d3Smrg      esac
1256943345d3Smrg    done
1257943345d3Smrg
1258a7b590b3Smrg    func_quote_for_eval "$libobj"
1259a7b590b3Smrg    test "X$libobj" != "X$func_quote_for_eval_result" \
1260a7b590b3Smrg      && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"'	 &()|`$[]' \
1261a7b590b3Smrg      && func_warning "libobj name \`$libobj' may not contain shell special characters."
1262a7b590b3Smrg    func_dirname_and_basename "$obj" "/" ""
1263a7b590b3Smrg    objname="$func_basename_result"
1264a7b590b3Smrg    xdir="$func_dirname_result"
1265943345d3Smrg    lobj=${xdir}$objdir/$objname
1266943345d3Smrg
1267a7b590b3Smrg    test -z "$base_compile" && \
1268a7b590b3Smrg      func_fatal_help "you must specify a compilation command"
1269943345d3Smrg
1270943345d3Smrg    # Delete any leftover library objects.
1271943345d3Smrg    if test "$build_old_libs" = yes; then
1272943345d3Smrg      removelist="$obj $lobj $libobj ${libobj}T"
1273943345d3Smrg    else
1274943345d3Smrg      removelist="$lobj $libobj ${libobj}T"
1275943345d3Smrg    fi
1276943345d3Smrg
1277943345d3Smrg    # On Cygwin there's no "real" PIC flag so we must build both object types
1278943345d3Smrg    case $host_os in
1279a7b590b3Smrg    cygwin* | mingw* | pw32* | os2* | cegcc*)
1280943345d3Smrg      pic_mode=default
1281943345d3Smrg      ;;
1282943345d3Smrg    esac
1283943345d3Smrg    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
1284943345d3Smrg      # non-PIC code in shared libraries is not supported
1285943345d3Smrg      pic_mode=default
1286943345d3Smrg    fi
1287943345d3Smrg
1288943345d3Smrg    # Calculate the filename of the output object if compiler does
1289943345d3Smrg    # not support -o with -c
1290943345d3Smrg    if test "$compiler_c_o" = no; then
1291a7b590b3Smrg      output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
1292943345d3Smrg      lockfile="$output_obj.lock"
1293943345d3Smrg    else
1294943345d3Smrg      output_obj=
1295943345d3Smrg      need_locks=no
1296943345d3Smrg      lockfile=
1297943345d3Smrg    fi
1298943345d3Smrg
1299943345d3Smrg    # Lock this critical section if it is needed
1300943345d3Smrg    # We use this script file to make the link, it avoids creating a new file
1301943345d3Smrg    if test "$need_locks" = yes; then
1302a7b590b3Smrg      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
1303a7b590b3Smrg	func_echo "Waiting for $lockfile to be removed"
1304943345d3Smrg	sleep 2
1305943345d3Smrg      done
1306943345d3Smrg    elif test "$need_locks" = warn; then
1307943345d3Smrg      if test -f "$lockfile"; then
1308a7b590b3Smrg	$ECHO "\
1309943345d3Smrg*** ERROR, $lockfile exists and contains:
1310943345d3Smrg`cat $lockfile 2>/dev/null`
1311943345d3Smrg
1312943345d3SmrgThis indicates that another process is trying to use the same
1313943345d3Smrgtemporary object file, and libtool could not work around it because
1314943345d3Smrgyour compiler does not support \`-c' and \`-o' together.  If you
1315943345d3Smrgrepeat this compilation, it may succeed, by chance, but you had better
1316943345d3Smrgavoid parallel builds (make -j) in this platform, or get a better
1317943345d3Smrgcompiler."
1318943345d3Smrg
1319a7b590b3Smrg	$opt_dry_run || $RM $removelist
1320943345d3Smrg	exit $EXIT_FAILURE
1321943345d3Smrg      fi
1322a7b590b3Smrg      removelist="$removelist $output_obj"
1323a7b590b3Smrg      $ECHO "$srcfile" > "$lockfile"
1324943345d3Smrg    fi
1325943345d3Smrg
1326a7b590b3Smrg    $opt_dry_run || $RM $removelist
1327a7b590b3Smrg    removelist="$removelist $lockfile"
1328a7b590b3Smrg    trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
1329a7b590b3Smrg
1330943345d3Smrg    if test -n "$fix_srcfile_path"; then
1331943345d3Smrg      eval srcfile=\"$fix_srcfile_path\"
1332943345d3Smrg    fi
1333a7b590b3Smrg    func_quote_for_eval "$srcfile"
1334a7b590b3Smrg    qsrcfile=$func_quote_for_eval_result
1335943345d3Smrg
1336943345d3Smrg    # Only build a PIC object if we are building libtool libraries.
1337943345d3Smrg    if test "$build_libtool_libs" = yes; then
1338943345d3Smrg      # Without this assignment, base_compile gets emptied.
1339943345d3Smrg      fbsd_hideous_sh_bug=$base_compile
1340943345d3Smrg
1341943345d3Smrg      if test "$pic_mode" != no; then
1342943345d3Smrg	command="$base_compile $qsrcfile $pic_flag"
1343943345d3Smrg      else
1344943345d3Smrg	# Don't build PIC code
1345943345d3Smrg	command="$base_compile $qsrcfile"
1346943345d3Smrg      fi
1347943345d3Smrg
1348a7b590b3Smrg      func_mkdir_p "$xdir$objdir"
1349943345d3Smrg
1350943345d3Smrg      if test -z "$output_obj"; then
1351943345d3Smrg	# Place PIC objects in $objdir
1352943345d3Smrg	command="$command -o $lobj"
1353943345d3Smrg      fi
1354943345d3Smrg
1355a7b590b3Smrg      func_show_eval_locale "$command"	\
1356a7b590b3Smrg          'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
1357943345d3Smrg
1358943345d3Smrg      if test "$need_locks" = warn &&
1359943345d3Smrg	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
1360a7b590b3Smrg	$ECHO "\
1361943345d3Smrg*** ERROR, $lockfile contains:
1362943345d3Smrg`cat $lockfile 2>/dev/null`
1363943345d3Smrg
1364943345d3Smrgbut it should contain:
1365943345d3Smrg$srcfile
1366943345d3Smrg
1367943345d3SmrgThis indicates that another process is trying to use the same
1368943345d3Smrgtemporary object file, and libtool could not work around it because
1369943345d3Smrgyour compiler does not support \`-c' and \`-o' together.  If you
1370943345d3Smrgrepeat this compilation, it may succeed, by chance, but you had better
1371943345d3Smrgavoid parallel builds (make -j) in this platform, or get a better
1372943345d3Smrgcompiler."
1373943345d3Smrg
1374a7b590b3Smrg	$opt_dry_run || $RM $removelist
1375943345d3Smrg	exit $EXIT_FAILURE
1376943345d3Smrg      fi
1377943345d3Smrg
1378943345d3Smrg      # Just move the object if needed, then go on to compile the next one
1379943345d3Smrg      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
1380a7b590b3Smrg	func_show_eval '$MV "$output_obj" "$lobj"' \
1381a7b590b3Smrg	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
1382943345d3Smrg      fi
1383943345d3Smrg
1384943345d3Smrg      # Allow error messages only from the first compilation.
1385943345d3Smrg      if test "$suppress_opt" = yes; then
1386a7b590b3Smrg	suppress_output=' >/dev/null 2>&1'
1387943345d3Smrg      fi
1388943345d3Smrg    fi
1389943345d3Smrg
1390943345d3Smrg    # Only build a position-dependent object if we build old libraries.
1391943345d3Smrg    if test "$build_old_libs" = yes; then
1392943345d3Smrg      if test "$pic_mode" != yes; then
1393943345d3Smrg	# Don't build PIC code
1394a7b590b3Smrg	command="$base_compile $qsrcfile$pie_flag"
1395943345d3Smrg      else
1396943345d3Smrg	command="$base_compile $qsrcfile $pic_flag"
1397943345d3Smrg      fi
1398943345d3Smrg      if test "$compiler_c_o" = yes; then
1399943345d3Smrg	command="$command -o $obj"
1400943345d3Smrg      fi
1401943345d3Smrg
1402943345d3Smrg      # Suppress compiler output if we already did a PIC compilation.
1403943345d3Smrg      command="$command$suppress_output"
1404a7b590b3Smrg      func_show_eval_locale "$command" \
1405a7b590b3Smrg        '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
1406943345d3Smrg
1407943345d3Smrg      if test "$need_locks" = warn &&
1408943345d3Smrg	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
1409a7b590b3Smrg	$ECHO "\
1410943345d3Smrg*** ERROR, $lockfile contains:
1411943345d3Smrg`cat $lockfile 2>/dev/null`
1412943345d3Smrg
1413943345d3Smrgbut it should contain:
1414943345d3Smrg$srcfile
1415943345d3Smrg
1416943345d3SmrgThis indicates that another process is trying to use the same
1417943345d3Smrgtemporary object file, and libtool could not work around it because
1418943345d3Smrgyour compiler does not support \`-c' and \`-o' together.  If you
1419943345d3Smrgrepeat this compilation, it may succeed, by chance, but you had better
1420943345d3Smrgavoid parallel builds (make -j) in this platform, or get a better
1421943345d3Smrgcompiler."
1422943345d3Smrg
1423a7b590b3Smrg	$opt_dry_run || $RM $removelist
1424943345d3Smrg	exit $EXIT_FAILURE
1425943345d3Smrg      fi
1426943345d3Smrg
1427943345d3Smrg      # Just move the object if needed
1428943345d3Smrg      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
1429a7b590b3Smrg	func_show_eval '$MV "$output_obj" "$obj"' \
1430a7b590b3Smrg	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
1431943345d3Smrg      fi
1432943345d3Smrg    fi
1433943345d3Smrg
1434a7b590b3Smrg    $opt_dry_run || {
1435a7b590b3Smrg      func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
1436943345d3Smrg
1437a7b590b3Smrg      # Unlock the critical section if it was locked
1438a7b590b3Smrg      if test "$need_locks" != no; then
1439a7b590b3Smrg	removelist=$lockfile
1440a7b590b3Smrg        $RM "$lockfile"
1441a7b590b3Smrg      fi
1442a7b590b3Smrg    }
1443943345d3Smrg
1444943345d3Smrg    exit $EXIT_SUCCESS
1445a7b590b3Smrg}
1446943345d3Smrg
1447a7b590b3Smrg$opt_help || {
1448a7b590b3Smrgtest "$mode" = compile && func_mode_compile ${1+"$@"}
1449a7b590b3Smrg}
1450943345d3Smrg
1451a7b590b3Smrgfunc_mode_help ()
1452a7b590b3Smrg{
1453a7b590b3Smrg    # We need to display help for each of the modes.
1454a7b590b3Smrg    case $mode in
1455a7b590b3Smrg      "")
1456a7b590b3Smrg        # Generic help is extracted from the usage comments
1457a7b590b3Smrg        # at the start of this file.
1458a7b590b3Smrg        func_help
1459a7b590b3Smrg        ;;
1460943345d3Smrg
1461a7b590b3Smrg      clean)
1462a7b590b3Smrg        $ECHO \
1463a7b590b3Smrg"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
1464943345d3Smrg
1465a7b590b3SmrgRemove files from the build directory.
1466943345d3Smrg
1467a7b590b3SmrgRM is the name of the program to use to delete files associated with each FILE
1468a7b590b3Smrg(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
1469a7b590b3Smrgto RM.
1470943345d3Smrg
1471a7b590b3SmrgIf FILE is a libtool library, object or program, all the files associated
1472a7b590b3Smrgwith it are deleted. Otherwise, only FILE itself is deleted using RM."
1473a7b590b3Smrg        ;;
1474943345d3Smrg
1475a7b590b3Smrg      compile)
1476a7b590b3Smrg      $ECHO \
1477a7b590b3Smrg"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
1478943345d3Smrg
1479a7b590b3SmrgCompile a source file into a libtool library object.
1480943345d3Smrg
1481a7b590b3SmrgThis mode accepts the following additional options:
1482943345d3Smrg
1483a7b590b3Smrg  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
1484a7b590b3Smrg  -no-suppress      do not suppress compiler output for multiple passes
1485a7b590b3Smrg  -prefer-pic       try to building PIC objects only
1486a7b590b3Smrg  -prefer-non-pic   try to building non-PIC objects only
1487a7b590b3Smrg  -shared           do not build a \`.o' file suitable for static linking
1488a7b590b3Smrg  -static           only build a \`.o' file suitable for static linking
1489943345d3Smrg
1490a7b590b3SmrgCOMPILE-COMMAND is a command to be used in creating a \`standard' object file
1491a7b590b3Smrgfrom the given SOURCEFILE.
1492943345d3Smrg
1493a7b590b3SmrgThe output file name is determined by removing the directory component from
1494a7b590b3SmrgSOURCEFILE, then substituting the C source code suffix \`.c' with the
1495a7b590b3Smrglibrary object suffix, \`.lo'."
1496a7b590b3Smrg        ;;
1497943345d3Smrg
1498a7b590b3Smrg      execute)
1499a7b590b3Smrg        $ECHO \
1500a7b590b3Smrg"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
1501943345d3Smrg
1502a7b590b3SmrgAutomatically set library path, then run a program.
1503943345d3Smrg
1504a7b590b3SmrgThis mode accepts the following additional options:
1505943345d3Smrg
1506a7b590b3Smrg  -dlopen FILE      add the directory containing FILE to the library path
1507943345d3Smrg
1508a7b590b3SmrgThis mode sets the library path environment variable according to \`-dlopen'
1509a7b590b3Smrgflags.
1510943345d3Smrg
1511a7b590b3SmrgIf any of the ARGS are libtool executable wrappers, then they are translated
1512a7b590b3Smrginto their corresponding uninstalled binary, and any of their required library
1513a7b590b3Smrgdirectories are added to the library path.
1514943345d3Smrg
1515a7b590b3SmrgThen, COMMAND is executed, with ARGS as arguments."
1516a7b590b3Smrg        ;;
1517943345d3Smrg
1518a7b590b3Smrg      finish)
1519a7b590b3Smrg        $ECHO \
1520a7b590b3Smrg"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
1521943345d3Smrg
1522a7b590b3SmrgComplete the installation of libtool libraries.
1523943345d3Smrg
1524a7b590b3SmrgEach LIBDIR is a directory that contains libtool libraries.
1525943345d3Smrg
1526a7b590b3SmrgThe commands that this mode executes may require superuser privileges.  Use
1527a7b590b3Smrgthe \`--dry-run' option if you just want to see what would be executed."
1528a7b590b3Smrg        ;;
1529943345d3Smrg
1530a7b590b3Smrg      install)
1531a7b590b3Smrg        $ECHO \
1532a7b590b3Smrg"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
1533943345d3Smrg
1534a7b590b3SmrgInstall executables or libraries.
1535943345d3Smrg
1536a7b590b3SmrgINSTALL-COMMAND is the installation command.  The first component should be
1537a7b590b3Smrgeither the \`install' or \`cp' program.
1538943345d3Smrg
1539a7b590b3SmrgThe following components of INSTALL-COMMAND are treated specially:
1540943345d3Smrg
1541a7b590b3Smrg  -inst-prefix PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
1542943345d3Smrg
1543a7b590b3SmrgThe rest of the components are interpreted as arguments to that command (only
1544a7b590b3SmrgBSD-compatible install options are recognized)."
1545a7b590b3Smrg        ;;
1546943345d3Smrg
1547a7b590b3Smrg      link)
1548a7b590b3Smrg        $ECHO \
1549a7b590b3Smrg"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
1550943345d3Smrg
1551a7b590b3SmrgLink object files or libraries together to form another library, or to
1552a7b590b3Smrgcreate an executable program.
1553943345d3Smrg
1554a7b590b3SmrgLINK-COMMAND is a command using the C compiler that you would use to create
1555a7b590b3Smrga program from several object files.
1556943345d3Smrg
1557a7b590b3SmrgThe following components of LINK-COMMAND are treated specially:
1558943345d3Smrg
1559a7b590b3Smrg  -all-static       do not do any dynamic linking at all
1560a7b590b3Smrg  -avoid-version    do not add a version suffix if possible
1561a7b590b3Smrg  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
1562a7b590b3Smrg  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
1563a7b590b3Smrg  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
1564a7b590b3Smrg  -export-symbols SYMFILE
1565a7b590b3Smrg                    try to export only the symbols listed in SYMFILE
1566a7b590b3Smrg  -export-symbols-regex REGEX
1567a7b590b3Smrg                    try to export only the symbols matching REGEX
1568a7b590b3Smrg  -LLIBDIR          search LIBDIR for required installed libraries
1569a7b590b3Smrg  -lNAME            OUTPUT-FILE requires the installed library libNAME
1570a7b590b3Smrg  -module           build a library that can dlopened
1571a7b590b3Smrg  -no-fast-install  disable the fast-install mode
1572a7b590b3Smrg  -no-install       link a not-installable executable
1573a7b590b3Smrg  -no-undefined     declare that a library does not refer to external symbols
1574a7b590b3Smrg  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
1575a7b590b3Smrg  -objectlist FILE  Use a list of object files found in FILE to specify objects
1576a7b590b3Smrg  -precious-files-regex REGEX
1577a7b590b3Smrg                    don't remove output files matching REGEX
1578a7b590b3Smrg  -release RELEASE  specify package release information
1579a7b590b3Smrg  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
1580a7b590b3Smrg  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
1581a7b590b3Smrg  -shared           only do dynamic linking of libtool libraries
1582a7b590b3Smrg  -shrext SUFFIX    override the standard shared library file extension
1583a7b590b3Smrg  -static           do not do any dynamic linking of uninstalled libtool libraries
1584a7b590b3Smrg  -static-libtool-libs
1585a7b590b3Smrg                    do not do any dynamic linking of libtool libraries
1586a7b590b3Smrg  -version-info CURRENT[:REVISION[:AGE]]
1587a7b590b3Smrg                    specify library version info [each variable defaults to 0]
1588a7b590b3Smrg  -weak LIBNAME     declare that the target provides the LIBNAME interface
1589943345d3Smrg
1590a7b590b3SmrgAll other options (arguments beginning with \`-') are ignored.
1591943345d3Smrg
1592a7b590b3SmrgEvery other argument is treated as a filename.  Files ending in \`.la' are
1593a7b590b3Smrgtreated as uninstalled libtool libraries, other files are standard or library
1594a7b590b3Smrgobject files.
15955e695a52Smrg
1596a7b590b3SmrgIf the OUTPUT-FILE ends in \`.la', then a libtool library is created,
1597a7b590b3Smrgonly library objects (\`.lo' files) may be specified, and \`-rpath' is
1598a7b590b3Smrgrequired, except when creating a convenience library.
1599943345d3Smrg
1600a7b590b3SmrgIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
1601a7b590b3Smrgusing \`ar' and \`ranlib', or on Windows using \`lib'.
1602943345d3Smrg
1603a7b590b3SmrgIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
1604a7b590b3Smrgis created, otherwise an executable program is created."
1605943345d3Smrg        ;;
1606943345d3Smrg
1607a7b590b3Smrg      uninstall)
1608a7b590b3Smrg        $ECHO \
1609a7b590b3Smrg"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
1610943345d3Smrg
1611a7b590b3SmrgRemove libraries from an installation directory.
1612943345d3Smrg
1613a7b590b3SmrgRM is the name of the program to use to delete files associated with each FILE
1614a7b590b3Smrg(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
1615a7b590b3Smrgto RM.
1616943345d3Smrg
1617a7b590b3SmrgIf FILE is a libtool library, all the files associated with it are deleted.
1618a7b590b3SmrgOtherwise, only FILE itself is deleted using RM."
1619a7b590b3Smrg        ;;
1620943345d3Smrg
1621a7b590b3Smrg      *)
1622a7b590b3Smrg        func_fatal_help "invalid operation mode \`$mode'"
1623a7b590b3Smrg        ;;
1624a7b590b3Smrg    esac
1625943345d3Smrg
1626a7b590b3Smrg    $ECHO
1627a7b590b3Smrg    $ECHO "Try \`$progname --help' for more information about other modes."
1628943345d3Smrg
1629a7b590b3Smrg    exit $?
1630a7b590b3Smrg}
1631943345d3Smrg
1632a7b590b3Smrg  # Now that we've collected a possible --mode arg, show help if necessary
1633a7b590b3Smrg  $opt_help && func_mode_help
1634943345d3Smrg
1635943345d3Smrg
1636a7b590b3Smrg# func_mode_execute arg...
1637a7b590b3Smrgfunc_mode_execute ()
1638a7b590b3Smrg{
1639a7b590b3Smrg    $opt_debug
1640a7b590b3Smrg    # The first argument is the command name.
1641a7b590b3Smrg    cmd="$nonopt"
1642a7b590b3Smrg    test -z "$cmd" && \
1643a7b590b3Smrg      func_fatal_help "you must specify a COMMAND"
1644943345d3Smrg
1645a7b590b3Smrg    # Handle -dlopen flags immediately.
1646a7b590b3Smrg    for file in $execute_dlfiles; do
1647a7b590b3Smrg      test -f "$file" \
1648a7b590b3Smrg	|| func_fatal_help "\`$file' is not a file"
1649943345d3Smrg
1650a7b590b3Smrg      dir=
1651a7b590b3Smrg      case $file in
1652a7b590b3Smrg      *.la)
1653a7b590b3Smrg	# Check to see that this really is a libtool archive.
1654a7b590b3Smrg	func_lalib_unsafe_p "$file" \
1655a7b590b3Smrg	  || func_fatal_help "\`$lib' is not a valid libtool archive"
1656943345d3Smrg
1657a7b590b3Smrg	# Read the libtool library.
1658a7b590b3Smrg	dlname=
1659a7b590b3Smrg	library_names=
1660a7b590b3Smrg	func_source "$file"
1661943345d3Smrg
1662a7b590b3Smrg	# Skip this library if it cannot be dlopened.
1663a7b590b3Smrg	if test -z "$dlname"; then
1664a7b590b3Smrg	  # Warn if it was a shared library.
1665a7b590b3Smrg	  test -n "$library_names" && \
1666a7b590b3Smrg	    func_warning "\`$file' was not linked with \`-export-dynamic'"
1667a7b590b3Smrg	  continue
1668a7b590b3Smrg	fi
1669943345d3Smrg
1670a7b590b3Smrg	func_dirname "$file" "" "."
1671a7b590b3Smrg	dir="$func_dirname_result"
1672943345d3Smrg
1673a7b590b3Smrg	if test -f "$dir/$objdir/$dlname"; then
1674a7b590b3Smrg	  dir="$dir/$objdir"
1675a7b590b3Smrg	else
1676a7b590b3Smrg	  if test ! -f "$dir/$dlname"; then
1677a7b590b3Smrg	    func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
1678a7b590b3Smrg	  fi
1679a7b590b3Smrg	fi
1680943345d3Smrg	;;
1681943345d3Smrg
1682a7b590b3Smrg      *.lo)
1683a7b590b3Smrg	# Just add the directory containing the .lo file.
1684a7b590b3Smrg	func_dirname "$file" "" "."
1685a7b590b3Smrg	dir="$func_dirname_result"
1686943345d3Smrg	;;
1687943345d3Smrg
1688a7b590b3Smrg      *)
1689a7b590b3Smrg	func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
1690943345d3Smrg	continue
1691943345d3Smrg	;;
1692a7b590b3Smrg      esac
1693943345d3Smrg
1694a7b590b3Smrg      # Get the absolute pathname.
1695a7b590b3Smrg      absdir=`cd "$dir" && pwd`
1696a7b590b3Smrg      test -n "$absdir" && dir="$absdir"
1697943345d3Smrg
1698a7b590b3Smrg      # Now add the directory to shlibpath_var.
1699a7b590b3Smrg      if eval "test -z \"\$$shlibpath_var\""; then
1700a7b590b3Smrg	eval "$shlibpath_var=\"\$dir\""
1701a7b590b3Smrg      else
1702a7b590b3Smrg	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
1703a7b590b3Smrg      fi
1704a7b590b3Smrg    done
1705943345d3Smrg
1706a7b590b3Smrg    # This variable tells wrapper scripts just to set shlibpath_var
1707a7b590b3Smrg    # rather than running their programs.
1708a7b590b3Smrg    libtool_execute_magic="$magic"
1709943345d3Smrg
1710a7b590b3Smrg    # Check if any of the arguments is a wrapper script.
1711a7b590b3Smrg    args=
1712a7b590b3Smrg    for file
1713a7b590b3Smrg    do
1714a7b590b3Smrg      case $file in
1715a7b590b3Smrg      -*) ;;
1716a7b590b3Smrg      *)
1717a7b590b3Smrg	# Do a test to see if this is really a libtool program.
1718a7b590b3Smrg	if func_ltwrapper_script_p "$file"; then
1719a7b590b3Smrg	  func_source "$file"
1720a7b590b3Smrg	  # Transform arg to wrapped name.
1721a7b590b3Smrg	  file="$progdir/$program"
1722a7b590b3Smrg	elif func_ltwrapper_executable_p "$file"; then
1723a7b590b3Smrg	  func_ltwrapper_scriptname "$file"
1724a7b590b3Smrg	  func_source "$func_ltwrapper_scriptname_result"
1725a7b590b3Smrg	  # Transform arg to wrapped name.
1726a7b590b3Smrg	  file="$progdir/$program"
1727a7b590b3Smrg	fi
1728a7b590b3Smrg	;;
1729a7b590b3Smrg      esac
1730a7b590b3Smrg      # Quote arguments (to preserve shell metacharacters).
1731a7b590b3Smrg      func_quote_for_eval "$file"
1732a7b590b3Smrg      args="$args $func_quote_for_eval_result"
1733a7b590b3Smrg    done
1734943345d3Smrg
1735a7b590b3Smrg    if test "X$opt_dry_run" = Xfalse; then
1736a7b590b3Smrg      if test -n "$shlibpath_var"; then
1737a7b590b3Smrg	# Export the shlibpath_var.
1738a7b590b3Smrg	eval "export $shlibpath_var"
1739a7b590b3Smrg      fi
1740943345d3Smrg
1741a7b590b3Smrg      # Restore saved environment variables
1742a7b590b3Smrg      for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
1743a7b590b3Smrg      do
1744a7b590b3Smrg	eval "if test \"\${save_$lt_var+set}\" = set; then
1745a7b590b3Smrg                $lt_var=\$save_$lt_var; export $lt_var
1746943345d3Smrg	      else
1747a7b590b3Smrg		$lt_unset $lt_var
1748a7b590b3Smrg	      fi"
1749a7b590b3Smrg      done
1750943345d3Smrg
1751a7b590b3Smrg      # Now prepare to actually exec the command.
1752a7b590b3Smrg      exec_cmd="\$cmd$args"
1753a7b590b3Smrg    else
1754a7b590b3Smrg      # Display what would be done.
1755a7b590b3Smrg      if test -n "$shlibpath_var"; then
1756a7b590b3Smrg	eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
1757a7b590b3Smrg	$ECHO "export $shlibpath_var"
1758a7b590b3Smrg      fi
1759a7b590b3Smrg      $ECHO "$cmd$args"
1760a7b590b3Smrg      exit $EXIT_SUCCESS
1761a7b590b3Smrg    fi
1762a7b590b3Smrg}
1763943345d3Smrg
1764a7b590b3Smrgtest "$mode" = execute && func_mode_execute ${1+"$@"}
1765943345d3Smrg
1766943345d3Smrg
1767a7b590b3Smrg# func_mode_finish arg...
1768a7b590b3Smrgfunc_mode_finish ()
1769a7b590b3Smrg{
1770a7b590b3Smrg    $opt_debug
1771a7b590b3Smrg    libdirs="$nonopt"
1772a7b590b3Smrg    admincmds=
1773943345d3Smrg
1774a7b590b3Smrg    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
1775a7b590b3Smrg      for dir
1776a7b590b3Smrg      do
1777a7b590b3Smrg	libdirs="$libdirs $dir"
1778a7b590b3Smrg      done
1779943345d3Smrg
1780a7b590b3Smrg      for libdir in $libdirs; do
1781a7b590b3Smrg	if test -n "$finish_cmds"; then
1782a7b590b3Smrg	  # Do each command in the finish commands.
1783a7b590b3Smrg	  func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
1784a7b590b3Smrg'"$cmd"'"'
1785943345d3Smrg	fi
1786a7b590b3Smrg	if test -n "$finish_eval"; then
1787a7b590b3Smrg	  # Do the single finish_eval.
1788a7b590b3Smrg	  eval cmds=\"$finish_eval\"
1789a7b590b3Smrg	  $opt_dry_run || eval "$cmds" || admincmds="$admincmds
1790a7b590b3Smrg       $cmds"
1791a7b590b3Smrg	fi
1792a7b590b3Smrg      done
1793a7b590b3Smrg    fi
1794943345d3Smrg
1795a7b590b3Smrg    # Exit here if they wanted silent mode.
1796a7b590b3Smrg    $opt_silent && exit $EXIT_SUCCESS
1797943345d3Smrg
1798a7b590b3Smrg    $ECHO "X----------------------------------------------------------------------" | $Xsed
1799a7b590b3Smrg    $ECHO "Libraries have been installed in:"
1800a7b590b3Smrg    for libdir in $libdirs; do
1801a7b590b3Smrg      $ECHO "   $libdir"
1802a7b590b3Smrg    done
1803a7b590b3Smrg    $ECHO
1804a7b590b3Smrg    $ECHO "If you ever happen to want to link against installed libraries"
1805a7b590b3Smrg    $ECHO "in a given directory, LIBDIR, you must either use libtool, and"
1806a7b590b3Smrg    $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'"
1807a7b590b3Smrg    $ECHO "flag during linking and do at least one of the following:"
1808a7b590b3Smrg    if test -n "$shlibpath_var"; then
1809a7b590b3Smrg      $ECHO "   - add LIBDIR to the \`$shlibpath_var' environment variable"
1810a7b590b3Smrg      $ECHO "     during execution"
1811a7b590b3Smrg    fi
1812a7b590b3Smrg    if test -n "$runpath_var"; then
1813a7b590b3Smrg      $ECHO "   - add LIBDIR to the \`$runpath_var' environment variable"
1814a7b590b3Smrg      $ECHO "     during linking"
1815a7b590b3Smrg    fi
1816a7b590b3Smrg    if test -n "$hardcode_libdir_flag_spec"; then
1817a7b590b3Smrg      libdir=LIBDIR
1818a7b590b3Smrg      eval flag=\"$hardcode_libdir_flag_spec\"
1819a7b590b3Smrg
1820a7b590b3Smrg      $ECHO "   - use the \`$flag' linker flag"
1821a7b590b3Smrg    fi
1822a7b590b3Smrg    if test -n "$admincmds"; then
1823a7b590b3Smrg      $ECHO "   - have your system administrator run these commands:$admincmds"
1824a7b590b3Smrg    fi
1825a7b590b3Smrg    if test -f /etc/ld.so.conf; then
1826a7b590b3Smrg      $ECHO "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
1827a7b590b3Smrg    fi
1828a7b590b3Smrg    $ECHO
1829a7b590b3Smrg
1830a7b590b3Smrg    $ECHO "See any operating system documentation about shared libraries for"
1831a7b590b3Smrg    case $host in
1832a7b590b3Smrg      solaris2.[6789]|solaris2.1[0-9])
1833a7b590b3Smrg        $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual"
1834a7b590b3Smrg	$ECHO "pages."
1835a7b590b3Smrg	;;
1836a7b590b3Smrg      *)
1837a7b590b3Smrg        $ECHO "more information, such as the ld(1) and ld.so(8) manual pages."
1838a7b590b3Smrg        ;;
1839a7b590b3Smrg    esac
1840a7b590b3Smrg    $ECHO "X----------------------------------------------------------------------" | $Xsed
1841a7b590b3Smrg    exit $EXIT_SUCCESS
1842a7b590b3Smrg}
1843a7b590b3Smrg
1844a7b590b3Smrgtest "$mode" = finish && func_mode_finish ${1+"$@"}
1845a7b590b3Smrg
1846a7b590b3Smrg
1847a7b590b3Smrg# func_mode_install arg...
1848a7b590b3Smrgfunc_mode_install ()
1849a7b590b3Smrg{
1850a7b590b3Smrg    $opt_debug
1851a7b590b3Smrg    # There may be an optional sh(1) argument at the beginning of
1852a7b590b3Smrg    # install_prog (especially on Windows NT).
1853a7b590b3Smrg    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
1854a7b590b3Smrg       # Allow the use of GNU shtool's install command.
1855a7b590b3Smrg       $ECHO "X$nonopt" | $GREP shtool >/dev/null; then
1856a7b590b3Smrg      # Aesthetically quote it.
1857a7b590b3Smrg      func_quote_for_eval "$nonopt"
1858a7b590b3Smrg      install_prog="$func_quote_for_eval_result "
1859a7b590b3Smrg      arg=$1
1860a7b590b3Smrg      shift
1861a7b590b3Smrg    else
1862a7b590b3Smrg      install_prog=
1863a7b590b3Smrg      arg=$nonopt
1864a7b590b3Smrg    fi
1865a7b590b3Smrg
1866a7b590b3Smrg    # The real first argument should be the name of the installation program.
1867a7b590b3Smrg    # Aesthetically quote it.
1868a7b590b3Smrg    func_quote_for_eval "$arg"
1869a7b590b3Smrg    install_prog="$install_prog$func_quote_for_eval_result"
1870a7b590b3Smrg
1871a7b590b3Smrg    # We need to accept at least all the BSD install flags.
1872a7b590b3Smrg    dest=
1873a7b590b3Smrg    files=
1874a7b590b3Smrg    opts=
1875a7b590b3Smrg    prev=
1876a7b590b3Smrg    install_type=
1877a7b590b3Smrg    isdir=no
1878a7b590b3Smrg    stripme=
1879a7b590b3Smrg    for arg
1880a7b590b3Smrg    do
1881a7b590b3Smrg      if test -n "$dest"; then
1882a7b590b3Smrg	files="$files $dest"
1883a7b590b3Smrg	dest=$arg
1884a7b590b3Smrg	continue
1885a7b590b3Smrg      fi
1886a7b590b3Smrg
1887a7b590b3Smrg      case $arg in
1888a7b590b3Smrg      -d) isdir=yes ;;
1889a7b590b3Smrg      -f)
1890a7b590b3Smrg	case " $install_prog " in
1891a7b590b3Smrg	*[\\\ /]cp\ *) ;;
1892a7b590b3Smrg	*) prev=$arg ;;
1893a7b590b3Smrg	esac
1894a7b590b3Smrg	;;
1895a7b590b3Smrg      -g | -m | -o)
1896a7b590b3Smrg	prev=$arg
1897a7b590b3Smrg	;;
1898a7b590b3Smrg      -s)
1899a7b590b3Smrg	stripme=" -s"
1900a7b590b3Smrg	continue
1901a7b590b3Smrg	;;
1902a7b590b3Smrg      -*)
1903a7b590b3Smrg	;;
1904a7b590b3Smrg      *)
1905a7b590b3Smrg	# If the previous option needed an argument, then skip it.
1906a7b590b3Smrg	if test -n "$prev"; then
1907943345d3Smrg	  prev=
1908943345d3Smrg	else
1909a7b590b3Smrg	  dest=$arg
1910a7b590b3Smrg	  continue
1911943345d3Smrg	fi
1912943345d3Smrg	;;
1913a7b590b3Smrg      esac
1914943345d3Smrg
1915a7b590b3Smrg      # Aesthetically quote the argument.
1916a7b590b3Smrg      func_quote_for_eval "$arg"
1917a7b590b3Smrg      install_prog="$install_prog $func_quote_for_eval_result"
1918a7b590b3Smrg    done
1919943345d3Smrg
1920a7b590b3Smrg    test -z "$install_prog" && \
1921a7b590b3Smrg      func_fatal_help "you must specify an install program"
1922943345d3Smrg
1923a7b590b3Smrg    test -n "$prev" && \
1924a7b590b3Smrg      func_fatal_help "the \`$prev' option requires an argument"
1925943345d3Smrg
1926a7b590b3Smrg    if test -z "$files"; then
1927a7b590b3Smrg      if test -z "$dest"; then
1928a7b590b3Smrg	func_fatal_help "no file or destination specified"
1929a7b590b3Smrg      else
1930a7b590b3Smrg	func_fatal_help "you must specify a destination"
1931a7b590b3Smrg      fi
1932943345d3Smrg    fi
1933943345d3Smrg
1934a7b590b3Smrg    # Strip any trailing slash from the destination.
1935a7b590b3Smrg    func_stripname '' '/' "$dest"
1936a7b590b3Smrg    dest=$func_stripname_result
1937943345d3Smrg
1938a7b590b3Smrg    # Check to see that the destination is a directory.
1939a7b590b3Smrg    test -d "$dest" && isdir=yes
1940a7b590b3Smrg    if test "$isdir" = yes; then
1941a7b590b3Smrg      destdir="$dest"
1942a7b590b3Smrg      destname=
1943943345d3Smrg    else
1944a7b590b3Smrg      func_dirname_and_basename "$dest" "" "."
1945a7b590b3Smrg      destdir="$func_dirname_result"
1946a7b590b3Smrg      destname="$func_basename_result"
1947943345d3Smrg
1948a7b590b3Smrg      # Not a directory, so check to see that there is only one file specified.
1949a7b590b3Smrg      set dummy $files; shift
1950a7b590b3Smrg      test "$#" -gt 1 && \
1951a7b590b3Smrg	func_fatal_help "\`$dest' is not a directory"
1952943345d3Smrg    fi
1953a7b590b3Smrg    case $destdir in
1954a7b590b3Smrg    [\\/]* | [A-Za-z]:[\\/]*) ;;
1955943345d3Smrg    *)
1956a7b590b3Smrg      for file in $files; do
1957a7b590b3Smrg	case $file in
1958a7b590b3Smrg	*.lo) ;;
1959a7b590b3Smrg	*)
1960a7b590b3Smrg	  func_fatal_help "\`$destdir' must be an absolute directory name"
1961a7b590b3Smrg	  ;;
1962a7b590b3Smrg	esac
1963a7b590b3Smrg      done
1964943345d3Smrg      ;;
1965943345d3Smrg    esac
1966943345d3Smrg
1967a7b590b3Smrg    # This variable tells wrapper scripts just to set variables rather
1968a7b590b3Smrg    # than running their programs.
1969a7b590b3Smrg    libtool_install_magic="$magic"
1970943345d3Smrg
1971a7b590b3Smrg    staticlibs=
1972a7b590b3Smrg    future_libdirs=
1973a7b590b3Smrg    current_libdirs=
1974a7b590b3Smrg    for file in $files; do
1975943345d3Smrg
1976a7b590b3Smrg      # Do each installation.
1977a7b590b3Smrg      case $file in
1978a7b590b3Smrg      *.$libext)
1979a7b590b3Smrg	# Do the static libraries later.
1980a7b590b3Smrg	staticlibs="$staticlibs $file"
1981a7b590b3Smrg	;;
1982a7b590b3Smrg
1983a7b590b3Smrg      *.la)
1984a7b590b3Smrg	# Check to see that this really is a libtool archive.
1985a7b590b3Smrg	func_lalib_unsafe_p "$file" \
1986a7b590b3Smrg	  || func_fatal_help "\`$file' is not a valid libtool archive"
1987a7b590b3Smrg
1988a7b590b3Smrg	library_names=
1989a7b590b3Smrg	old_library=
1990a7b590b3Smrg	relink_command=
1991a7b590b3Smrg	func_source "$file"
1992a7b590b3Smrg
1993a7b590b3Smrg	# Add the libdir to current_libdirs if it is the destination.
1994a7b590b3Smrg	if test "X$destdir" = "X$libdir"; then
1995a7b590b3Smrg	  case "$current_libdirs " in
1996a7b590b3Smrg	  *" $libdir "*) ;;
1997a7b590b3Smrg	  *) current_libdirs="$current_libdirs $libdir" ;;
1998943345d3Smrg	  esac
1999a7b590b3Smrg	else
2000a7b590b3Smrg	  # Note the libdir as a future libdir.
2001a7b590b3Smrg	  case "$future_libdirs " in
2002a7b590b3Smrg	  *" $libdir "*) ;;
2003a7b590b3Smrg	  *) future_libdirs="$future_libdirs $libdir" ;;
2004a7b590b3Smrg	  esac
2005a7b590b3Smrg	fi
2006943345d3Smrg
2007a7b590b3Smrg	func_dirname "$file" "/" ""
2008a7b590b3Smrg	dir="$func_dirname_result"
2009a7b590b3Smrg	dir="$dir$objdir"
2010a7b590b3Smrg
2011a7b590b3Smrg	if test -n "$relink_command"; then
2012a7b590b3Smrg	  # Determine the prefix the user has applied to our future dir.
2013a7b590b3Smrg	  inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"`
2014a7b590b3Smrg
2015a7b590b3Smrg	  # Don't allow the user to place us outside of our expected
2016a7b590b3Smrg	  # location b/c this prevents finding dependent libraries that
2017a7b590b3Smrg	  # are installed to the same prefix.
2018a7b590b3Smrg	  # At present, this check doesn't affect windows .dll's that
2019a7b590b3Smrg	  # are installed into $libdir/../bin (currently, that works fine)
2020a7b590b3Smrg	  # but it's something to keep an eye on.
2021a7b590b3Smrg	  test "$inst_prefix_dir" = "$destdir" && \
2022a7b590b3Smrg	    func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
2023a7b590b3Smrg
2024a7b590b3Smrg	  if test -n "$inst_prefix_dir"; then
2025a7b590b3Smrg	    # Stick the inst_prefix_dir data into the link command.
2026a7b590b3Smrg	    relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
2027a7b590b3Smrg	  else
2028a7b590b3Smrg	    relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"`
2029a7b590b3Smrg	  fi
2030a7b590b3Smrg
2031a7b590b3Smrg	  func_warning "relinking \`$file'"
2032a7b590b3Smrg	  func_show_eval "$relink_command" \
2033a7b590b3Smrg	    'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
2034a7b590b3Smrg	fi
2035a7b590b3Smrg
2036a7b590b3Smrg	# See the names of the shared library.
2037a7b590b3Smrg	set dummy $library_names; shift
2038a7b590b3Smrg	if test -n "$1"; then
2039a7b590b3Smrg	  realname="$1"
2040a7b590b3Smrg	  shift
2041a7b590b3Smrg
2042a7b590b3Smrg	  srcname="$realname"
2043a7b590b3Smrg	  test -n "$relink_command" && srcname="$realname"T
2044a7b590b3Smrg
2045a7b590b3Smrg	  # Install the shared library and build the symlinks.
2046a7b590b3Smrg	  func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \
2047a7b590b3Smrg	      'exit $?'
2048a7b590b3Smrg	  tstripme="$stripme"
2049a7b590b3Smrg	  case $host_os in
2050a7b590b3Smrg	  cygwin* | mingw* | pw32* | cegcc*)
2051a7b590b3Smrg	    case $realname in
2052a7b590b3Smrg	    *.dll.a)
2053a7b590b3Smrg	      tstripme=""
2054a7b590b3Smrg	      ;;
2055a7b590b3Smrg	    esac
2056943345d3Smrg	    ;;
2057943345d3Smrg	  esac
2058a7b590b3Smrg	  if test -n "$tstripme" && test -n "$striplib"; then
2059a7b590b3Smrg	    func_show_eval "$striplib $destdir/$realname" 'exit $?'
2060943345d3Smrg	  fi
2061a7b590b3Smrg
2062a7b590b3Smrg	  if test "$#" -gt 0; then
2063a7b590b3Smrg	    # Delete the old symlinks, and create new ones.
2064a7b590b3Smrg	    # Try `ln -sf' first, because the `ln' binary might depend on
2065a7b590b3Smrg	    # the symlink we replace!  Solaris /bin/ln does not understand -f,
2066a7b590b3Smrg	    # so we also need to try rm && ln -s.
2067a7b590b3Smrg	    for linkname
2068a7b590b3Smrg	    do
2069a7b590b3Smrg	      test "$linkname" != "$realname" \
2070a7b590b3Smrg		&& func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
2071943345d3Smrg	    done
2072943345d3Smrg	  fi
2073943345d3Smrg
2074a7b590b3Smrg	  # Do each command in the postinstall commands.
2075a7b590b3Smrg	  lib="$destdir/$realname"
2076a7b590b3Smrg	  func_execute_cmds "$postinstall_cmds" 'exit $?'
2077943345d3Smrg	fi
2078943345d3Smrg
2079a7b590b3Smrg	# Install the pseudo-library for information purposes.
2080a7b590b3Smrg	func_basename "$file"
2081a7b590b3Smrg	name="$func_basename_result"
2082a7b590b3Smrg	instname="$dir/$name"i
2083a7b590b3Smrg	func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
2084943345d3Smrg
2085a7b590b3Smrg	# Maybe install the static library, too.
2086a7b590b3Smrg	test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
2087a7b590b3Smrg	;;
2088943345d3Smrg
2089a7b590b3Smrg      *.lo)
2090a7b590b3Smrg	# Install (i.e. copy) a libtool object.
2091943345d3Smrg
2092a7b590b3Smrg	# Figure out destination file name, if it wasn't already specified.
2093a7b590b3Smrg	if test -n "$destname"; then
2094a7b590b3Smrg	  destfile="$destdir/$destname"
2095a7b590b3Smrg	else
2096a7b590b3Smrg	  func_basename "$file"
2097a7b590b3Smrg	  destfile="$func_basename_result"
2098a7b590b3Smrg	  destfile="$destdir/$destfile"
2099943345d3Smrg	fi
2100943345d3Smrg
2101a7b590b3Smrg	# Deduce the name of the destination old-style object file.
2102a7b590b3Smrg	case $destfile in
2103a7b590b3Smrg	*.lo)
2104a7b590b3Smrg	  func_lo2o "$destfile"
2105a7b590b3Smrg	  staticdest=$func_lo2o_result
2106a7b590b3Smrg	  ;;
2107a7b590b3Smrg	*.$objext)
2108a7b590b3Smrg	  staticdest="$destfile"
2109a7b590b3Smrg	  destfile=
2110a7b590b3Smrg	  ;;
2111a7b590b3Smrg	*)
2112a7b590b3Smrg	  func_fatal_help "cannot copy a libtool object to \`$destfile'"
2113a7b590b3Smrg	  ;;
2114a7b590b3Smrg	esac
2115943345d3Smrg
2116a7b590b3Smrg	# Install the libtool object if requested.
2117a7b590b3Smrg	test -n "$destfile" && \
2118a7b590b3Smrg	  func_show_eval "$install_prog $file $destfile" 'exit $?'
2119943345d3Smrg
2120a7b590b3Smrg	# Install the old object if enabled.
2121a7b590b3Smrg	if test "$build_old_libs" = yes; then
2122a7b590b3Smrg	  # Deduce the name of the old-style object file.
2123a7b590b3Smrg	  func_lo2o "$file"
2124a7b590b3Smrg	  staticobj=$func_lo2o_result
2125a7b590b3Smrg	  func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
2126943345d3Smrg	fi
2127a7b590b3Smrg	exit $EXIT_SUCCESS
2128a7b590b3Smrg	;;
2129943345d3Smrg
2130a7b590b3Smrg      *)
2131a7b590b3Smrg	# Figure out destination file name, if it wasn't already specified.
2132a7b590b3Smrg	if test -n "$destname"; then
2133a7b590b3Smrg	  destfile="$destdir/$destname"
2134a7b590b3Smrg	else
2135a7b590b3Smrg	  func_basename "$file"
2136a7b590b3Smrg	  destfile="$func_basename_result"
2137a7b590b3Smrg	  destfile="$destdir/$destfile"
2138a7b590b3Smrg	fi
2139943345d3Smrg
2140a7b590b3Smrg	# If the file is missing, and there is a .exe on the end, strip it
2141a7b590b3Smrg	# because it is most likely a libtool script we actually want to
2142a7b590b3Smrg	# install
2143a7b590b3Smrg	stripped_ext=""
2144a7b590b3Smrg	case $file in
2145a7b590b3Smrg	  *.exe)
2146a7b590b3Smrg	    if test ! -f "$file"; then
2147a7b590b3Smrg	      func_stripname '' '.exe' "$file"
2148a7b590b3Smrg	      file=$func_stripname_result
2149a7b590b3Smrg	      stripped_ext=".exe"
2150a7b590b3Smrg	    fi
2151a7b590b3Smrg	    ;;
2152a7b590b3Smrg	esac
2153a7b590b3Smrg
2154a7b590b3Smrg	# Do a test to see if this is really a libtool program.
2155a7b590b3Smrg	case $host in
2156a7b590b3Smrg	*cygwin* | *mingw*)
2157a7b590b3Smrg	    if func_ltwrapper_executable_p "$file"; then
2158a7b590b3Smrg	      func_ltwrapper_scriptname "$file"
2159a7b590b3Smrg	      wrapper=$func_ltwrapper_scriptname_result
2160a7b590b3Smrg	    else
2161a7b590b3Smrg	      func_stripname '' '.exe' "$file"
2162a7b590b3Smrg	      wrapper=$func_stripname_result
2163a7b590b3Smrg	    fi
2164a7b590b3Smrg	    ;;
2165943345d3Smrg	*)
2166a7b590b3Smrg	    wrapper=$file
2167a7b590b3Smrg	    ;;
2168a7b590b3Smrg	esac
2169a7b590b3Smrg	if func_ltwrapper_script_p "$wrapper"; then
2170a7b590b3Smrg	  notinst_deplibs=
2171a7b590b3Smrg	  relink_command=
2172a7b590b3Smrg
2173a7b590b3Smrg	  func_source "$wrapper"
2174a7b590b3Smrg
2175a7b590b3Smrg	  # Check the variables that should have been set.
2176a7b590b3Smrg	  test -z "$generated_by_libtool_version" && \
2177a7b590b3Smrg	    func_fatal_error "invalid libtool wrapper script \`$wrapper'"
2178a7b590b3Smrg
2179a7b590b3Smrg	  finalize=yes
2180a7b590b3Smrg	  for lib in $notinst_deplibs; do
2181a7b590b3Smrg	    # Check to see that each library is installed.
2182a7b590b3Smrg	    libdir=
2183a7b590b3Smrg	    if test -f "$lib"; then
2184a7b590b3Smrg	      func_source "$lib"
2185a7b590b3Smrg	    fi
2186a7b590b3Smrg	    libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
2187a7b590b3Smrg	    if test -n "$libdir" && test ! -f "$libfile"; then
2188a7b590b3Smrg	      func_warning "\`$lib' has not been installed in \`$libdir'"
2189a7b590b3Smrg	      finalize=no
2190a7b590b3Smrg	    fi
2191a7b590b3Smrg	  done
2192a7b590b3Smrg
2193a7b590b3Smrg	  relink_command=
2194a7b590b3Smrg	  func_source "$wrapper"
2195a7b590b3Smrg
2196a7b590b3Smrg	  outputname=
2197a7b590b3Smrg	  if test "$fast_install" = no && test -n "$relink_command"; then
2198a7b590b3Smrg	    $opt_dry_run || {
2199a7b590b3Smrg	      if test "$finalize" = yes; then
2200a7b590b3Smrg	        tmpdir=`func_mktempdir`
2201a7b590b3Smrg		func_basename "$file$stripped_ext"
2202a7b590b3Smrg		file="$func_basename_result"
2203a7b590b3Smrg	        outputname="$tmpdir/$file"
2204a7b590b3Smrg	        # Replace the output file specification.
2205a7b590b3Smrg	        relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
2206a7b590b3Smrg
2207a7b590b3Smrg	        $opt_silent || {
2208a7b590b3Smrg	          func_quote_for_expand "$relink_command"
2209a7b590b3Smrg		  eval "func_echo $func_quote_for_expand_result"
2210a7b590b3Smrg	        }
2211a7b590b3Smrg	        if eval "$relink_command"; then :
2212a7b590b3Smrg	          else
2213a7b590b3Smrg		  func_error "error: relink \`$file' with the above command before installing it"
2214a7b590b3Smrg		  $opt_dry_run || ${RM}r "$tmpdir"
2215a7b590b3Smrg		  continue
2216a7b590b3Smrg	        fi
2217a7b590b3Smrg	        file="$outputname"
2218a7b590b3Smrg	      else
2219a7b590b3Smrg	        func_warning "cannot relink \`$file'"
2220a7b590b3Smrg	      fi
2221a7b590b3Smrg	    }
2222a7b590b3Smrg	  else
2223a7b590b3Smrg	    # Install the binary that we compiled earlier.
2224a7b590b3Smrg	    file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
2225943345d3Smrg	  fi
2226a7b590b3Smrg	fi
2227a7b590b3Smrg
2228a7b590b3Smrg	# remove .exe since cygwin /usr/bin/install will append another
2229a7b590b3Smrg	# one anyway
2230a7b590b3Smrg	case $install_prog,$host in
2231a7b590b3Smrg	*/usr/bin/install*,*cygwin*)
2232a7b590b3Smrg	  case $file:$destfile in
2233a7b590b3Smrg	  *.exe:*.exe)
2234a7b590b3Smrg	    # this is ok
2235a7b590b3Smrg	    ;;
2236a7b590b3Smrg	  *.exe:*)
2237a7b590b3Smrg	    destfile=$destfile.exe
2238a7b590b3Smrg	    ;;
2239a7b590b3Smrg	  *:*.exe)
2240a7b590b3Smrg	    func_stripname '' '.exe' "$destfile"
2241a7b590b3Smrg	    destfile=$func_stripname_result
2242a7b590b3Smrg	    ;;
2243a7b590b3Smrg	  esac
2244943345d3Smrg	  ;;
2245943345d3Smrg	esac
2246a7b590b3Smrg	func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
2247a7b590b3Smrg	$opt_dry_run || if test -n "$outputname"; then
2248a7b590b3Smrg	  ${RM}r "$tmpdir"
2249a7b590b3Smrg	fi
2250a7b590b3Smrg	;;
2251a7b590b3Smrg      esac
2252a7b590b3Smrg    done
2253943345d3Smrg
2254a7b590b3Smrg    for file in $staticlibs; do
2255a7b590b3Smrg      func_basename "$file"
2256a7b590b3Smrg      name="$func_basename_result"
2257a7b590b3Smrg
2258a7b590b3Smrg      # Set up the ranlib parameters.
2259a7b590b3Smrg      oldlib="$destdir/$name"
2260a7b590b3Smrg
2261a7b590b3Smrg      func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
2262a7b590b3Smrg
2263a7b590b3Smrg      if test -n "$stripme" && test -n "$old_striplib"; then
2264a7b590b3Smrg	func_show_eval "$old_striplib $oldlib" 'exit $?'
2265a7b590b3Smrg      fi
2266a7b590b3Smrg
2267a7b590b3Smrg      # Do each command in the postinstall commands.
2268a7b590b3Smrg      func_execute_cmds "$old_postinstall_cmds" 'exit $?'
2269a7b590b3Smrg    done
2270a7b590b3Smrg
2271a7b590b3Smrg    test -n "$future_libdirs" && \
2272a7b590b3Smrg      func_warning "remember to run \`$progname --finish$future_libdirs'"
2273a7b590b3Smrg
2274a7b590b3Smrg    if test -n "$current_libdirs"; then
2275a7b590b3Smrg      # Maybe just do a dry run.
2276a7b590b3Smrg      $opt_dry_run && current_libdirs=" -n$current_libdirs"
2277a7b590b3Smrg      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
2278a7b590b3Smrg    else
2279a7b590b3Smrg      exit $EXIT_SUCCESS
2280a7b590b3Smrg    fi
2281a7b590b3Smrg}
2282a7b590b3Smrg
2283a7b590b3Smrgtest "$mode" = install && func_mode_install ${1+"$@"}
2284a7b590b3Smrg
2285a7b590b3Smrg
2286a7b590b3Smrg# func_generate_dlsyms outputname originator pic_p
2287a7b590b3Smrg# Extract symbols from dlprefiles and create ${outputname}S.o with
2288a7b590b3Smrg# a dlpreopen symbol table.
2289a7b590b3Smrgfunc_generate_dlsyms ()
2290a7b590b3Smrg{
2291a7b590b3Smrg    $opt_debug
2292a7b590b3Smrg    my_outputname="$1"
2293a7b590b3Smrg    my_originator="$2"
2294a7b590b3Smrg    my_pic_p="${3-no}"
2295a7b590b3Smrg    my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
2296a7b590b3Smrg    my_dlsyms=
2297a7b590b3Smrg
2298a7b590b3Smrg    if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
2299a7b590b3Smrg      if test -n "$NM" && test -n "$global_symbol_pipe"; then
2300a7b590b3Smrg	my_dlsyms="${my_outputname}S.c"
2301a7b590b3Smrg      else
2302a7b590b3Smrg	func_error "not configured to extract global symbols from dlpreopened files"
2303a7b590b3Smrg      fi
2304a7b590b3Smrg    fi
2305a7b590b3Smrg
2306a7b590b3Smrg    if test -n "$my_dlsyms"; then
2307a7b590b3Smrg      case $my_dlsyms in
2308a7b590b3Smrg      "") ;;
2309a7b590b3Smrg      *.c)
2310a7b590b3Smrg	# Discover the nlist of each of the dlfiles.
2311a7b590b3Smrg	nlist="$output_objdir/${my_outputname}.nm"
2312a7b590b3Smrg
2313a7b590b3Smrg	func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
2314a7b590b3Smrg
2315a7b590b3Smrg	# Parse the name list into a source file.
2316a7b590b3Smrg	func_verbose "creating $output_objdir/$my_dlsyms"
2317a7b590b3Smrg
2318a7b590b3Smrg	$opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
2319a7b590b3Smrg/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
2320a7b590b3Smrg/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
2321a7b590b3Smrg
2322a7b590b3Smrg#ifdef __cplusplus
2323a7b590b3Smrgextern \"C\" {
2324a7b590b3Smrg#endif
2325a7b590b3Smrg
2326a7b590b3Smrg/* External symbol declarations for the compiler. */\
2327a7b590b3Smrg"
2328a7b590b3Smrg
2329a7b590b3Smrg	if test "$dlself" = yes; then
2330a7b590b3Smrg	  func_verbose "generating symbol list for \`$output'"
2331a7b590b3Smrg
2332a7b590b3Smrg	  $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
2333a7b590b3Smrg
2334a7b590b3Smrg	  # Add our own program objects to the symbol list.
2335a7b590b3Smrg	  progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
2336a7b590b3Smrg	  for progfile in $progfiles; do
2337a7b590b3Smrg	    func_verbose "extracting global C symbols from \`$progfile'"
2338a7b590b3Smrg	    $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'"
2339a7b590b3Smrg	  done
2340a7b590b3Smrg
2341a7b590b3Smrg	  if test -n "$exclude_expsyms"; then
2342a7b590b3Smrg	    $opt_dry_run || {
2343a7b590b3Smrg	      eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
2344a7b590b3Smrg	      eval '$MV "$nlist"T "$nlist"'
2345a7b590b3Smrg	    }
2346943345d3Smrg	  fi
2347a7b590b3Smrg
2348a7b590b3Smrg	  if test -n "$export_symbols_regex"; then
2349a7b590b3Smrg	    $opt_dry_run || {
2350a7b590b3Smrg	      eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
2351a7b590b3Smrg	      eval '$MV "$nlist"T "$nlist"'
2352a7b590b3Smrg	    }
2353a7b590b3Smrg	  fi
2354a7b590b3Smrg
2355a7b590b3Smrg	  # Prepare the list of exported symbols
2356a7b590b3Smrg	  if test -z "$export_symbols"; then
2357a7b590b3Smrg	    export_symbols="$output_objdir/$outputname.exp"
2358a7b590b3Smrg	    $opt_dry_run || {
2359a7b590b3Smrg	      $RM $export_symbols
2360a7b590b3Smrg	      eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
2361a7b590b3Smrg	      case $host in
2362a7b590b3Smrg	      *cygwin* | *mingw* | *cegcc* )
2363a7b590b3Smrg                eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
2364a7b590b3Smrg                eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
2365a7b590b3Smrg	        ;;
2366a7b590b3Smrg	      esac
2367a7b590b3Smrg	    }
2368943345d3Smrg	  else
2369a7b590b3Smrg	    $opt_dry_run || {
2370a7b590b3Smrg	      eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
2371a7b590b3Smrg	      eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
2372a7b590b3Smrg	      eval '$MV "$nlist"T "$nlist"'
2373a7b590b3Smrg	      case $host in
2374a7b590b3Smrg	        *cygwin | *mingw* | *cegcc* )
2375a7b590b3Smrg	          eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
2376a7b590b3Smrg	          eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
2377a7b590b3Smrg	          ;;
2378a7b590b3Smrg	      esac
2379a7b590b3Smrg	    }
2380943345d3Smrg	  fi
2381a7b590b3Smrg	fi
2382943345d3Smrg
2383a7b590b3Smrg	for dlprefile in $dlprefiles; do
2384a7b590b3Smrg	  func_verbose "extracting global C symbols from \`$dlprefile'"
2385a7b590b3Smrg	  func_basename "$dlprefile"
2386a7b590b3Smrg	  name="$func_basename_result"
2387a7b590b3Smrg	  $opt_dry_run || {
2388a7b590b3Smrg	    eval '$ECHO ": $name " >> "$nlist"'
2389a7b590b3Smrg	    eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'"
2390a7b590b3Smrg	  }
2391a7b590b3Smrg	done
2392a7b590b3Smrg
2393a7b590b3Smrg	$opt_dry_run || {
2394a7b590b3Smrg	  # Make sure we have at least an empty file.
2395a7b590b3Smrg	  test -f "$nlist" || : > "$nlist"
2396a7b590b3Smrg
2397a7b590b3Smrg	  if test -n "$exclude_expsyms"; then
2398a7b590b3Smrg	    $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
2399a7b590b3Smrg	    $MV "$nlist"T "$nlist"
2400943345d3Smrg	  fi
2401a7b590b3Smrg
2402a7b590b3Smrg	  # Try sorting and uniquifying the output.
2403a7b590b3Smrg	  if $GREP -v "^: " < "$nlist" |
2404a7b590b3Smrg	      if sort -k 3 </dev/null >/dev/null 2>&1; then
2405a7b590b3Smrg		sort -k 3
2406a7b590b3Smrg	      else
2407a7b590b3Smrg		sort +2
2408a7b590b3Smrg	      fi |
2409a7b590b3Smrg	      uniq > "$nlist"S; then
2410a7b590b3Smrg	    :
2411943345d3Smrg	  else
2412a7b590b3Smrg	    $GREP -v "^: " < "$nlist" > "$nlist"S
2413943345d3Smrg	  fi
2414943345d3Smrg
2415a7b590b3Smrg	  if test -f "$nlist"S; then
2416a7b590b3Smrg	    eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
2417943345d3Smrg	  else
2418a7b590b3Smrg	    $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms"
2419943345d3Smrg	  fi
2420943345d3Smrg
2421a7b590b3Smrg	  $ECHO >> "$output_objdir/$my_dlsyms" "\
2422943345d3Smrg
2423a7b590b3Smrg/* The mapping between symbol names and symbols.  */
2424a7b590b3Smrgtypedef struct {
2425a7b590b3Smrg  const char *name;
2426a7b590b3Smrg  void *address;
2427a7b590b3Smrg} lt_dlsymlist;
2428a7b590b3Smrg"
2429a7b590b3Smrg	  case $host in
2430a7b590b3Smrg	  *cygwin* | *mingw* | *cegcc* )
2431a7b590b3Smrg	    $ECHO >> "$output_objdir/$my_dlsyms" "\
2432a7b590b3Smrg/* DATA imports from DLLs on WIN32 con't be const, because
2433a7b590b3Smrg   runtime relocations are performed -- see ld's documentation
2434a7b590b3Smrg   on pseudo-relocs.  */"
2435a7b590b3Smrg	    lt_dlsym_const= ;;
2436a7b590b3Smrg	  *osf5*)
2437a7b590b3Smrg	    echo >> "$output_objdir/$my_dlsyms" "\
2438a7b590b3Smrg/* This system does not cope well with relocations in const data */"
2439a7b590b3Smrg	    lt_dlsym_const= ;;
2440a7b590b3Smrg	  *)
2441a7b590b3Smrg	    lt_dlsym_const=const ;;
2442a7b590b3Smrg	  esac
2443943345d3Smrg
2444a7b590b3Smrg	  $ECHO >> "$output_objdir/$my_dlsyms" "\
2445a7b590b3Smrgextern $lt_dlsym_const lt_dlsymlist
2446a7b590b3Smrglt_${my_prefix}_LTX_preloaded_symbols[];
2447a7b590b3Smrg$lt_dlsym_const lt_dlsymlist
2448a7b590b3Smrglt_${my_prefix}_LTX_preloaded_symbols[] =
2449a7b590b3Smrg{\
2450a7b590b3Smrg  { \"$my_originator\", (void *) 0 },"
2451943345d3Smrg
2452a7b590b3Smrg	  case $need_lib_prefix in
2453a7b590b3Smrg	  no)
2454a7b590b3Smrg	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
2455a7b590b3Smrg	    ;;
2456a7b590b3Smrg	  *)
2457a7b590b3Smrg	    eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
2458a7b590b3Smrg	    ;;
2459a7b590b3Smrg	  esac
2460a7b590b3Smrg	  $ECHO >> "$output_objdir/$my_dlsyms" "\
2461a7b590b3Smrg  {0, (void *) 0}
2462a7b590b3Smrg};
2463943345d3Smrg
2464a7b590b3Smrg/* This works around a problem in FreeBSD linker */
2465a7b590b3Smrg#ifdef FREEBSD_WORKAROUND
2466a7b590b3Smrgstatic const void *lt_preloaded_setup() {
2467a7b590b3Smrg  return lt_${my_prefix}_LTX_preloaded_symbols;
2468a7b590b3Smrg}
2469a7b590b3Smrg#endif
2470a7b590b3Smrg
2471a7b590b3Smrg#ifdef __cplusplus
2472a7b590b3Smrg}
2473a7b590b3Smrg#endif\
2474a7b590b3Smrg"
2475a7b590b3Smrg	} # !$opt_dry_run
2476a7b590b3Smrg
2477a7b590b3Smrg	pic_flag_for_symtable=
2478a7b590b3Smrg	case "$compile_command " in
2479a7b590b3Smrg	*" -static "*) ;;
2480a7b590b3Smrg	*)
2481a7b590b3Smrg	  case $host in
2482a7b590b3Smrg	  # compiling the symbol table file with pic_flag works around
2483a7b590b3Smrg	  # a FreeBSD bug that causes programs to crash when -lm is
2484a7b590b3Smrg	  # linked before any other PIC object.  But we must not use
2485a7b590b3Smrg	  # pic_flag when linking with -static.  The problem exists in
2486a7b590b3Smrg	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
2487a7b590b3Smrg	  *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
2488a7b590b3Smrg	    pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
2489a7b590b3Smrg	  *-*-hpux*)
2490a7b590b3Smrg	    pic_flag_for_symtable=" $pic_flag"  ;;
2491a7b590b3Smrg	  *)
2492a7b590b3Smrg	    if test "X$my_pic_p" != Xno; then
2493a7b590b3Smrg	      pic_flag_for_symtable=" $pic_flag"
2494943345d3Smrg	    fi
2495a7b590b3Smrg	    ;;
2496a7b590b3Smrg	  esac
2497a7b590b3Smrg	  ;;
2498a7b590b3Smrg	esac
2499a7b590b3Smrg	symtab_cflags=
2500a7b590b3Smrg	for arg in $LTCFLAGS; do
2501a7b590b3Smrg	  case $arg in
2502a7b590b3Smrg	  -pie | -fpie | -fPIE) ;;
2503a7b590b3Smrg	  *) symtab_cflags="$symtab_cflags $arg" ;;
2504a7b590b3Smrg	  esac
2505a7b590b3Smrg	done
2506943345d3Smrg
2507a7b590b3Smrg	# Now compile the dynamic symbol file.
2508a7b590b3Smrg	func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
2509943345d3Smrg
2510a7b590b3Smrg	# Clean up the generated files.
2511a7b590b3Smrg	func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
2512943345d3Smrg
2513a7b590b3Smrg	# Transform the symbol file into the correct name.
2514a7b590b3Smrg	symfileobj="$output_objdir/${my_outputname}S.$objext"
2515a7b590b3Smrg	case $host in
2516a7b590b3Smrg	*cygwin* | *mingw* | *cegcc* )
2517a7b590b3Smrg	  if test -f "$output_objdir/$my_outputname.def"; then
2518a7b590b3Smrg	    compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
2519a7b590b3Smrg	    finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
2520a7b590b3Smrg	  else
2521a7b590b3Smrg	    compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
2522a7b590b3Smrg	    finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
2523943345d3Smrg	  fi
2524a7b590b3Smrg	  ;;
2525a7b590b3Smrg	*)
2526a7b590b3Smrg	  compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
2527a7b590b3Smrg	  finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
2528a7b590b3Smrg	  ;;
2529a7b590b3Smrg	esac
2530a7b590b3Smrg	;;
2531a7b590b3Smrg      *)
2532a7b590b3Smrg	func_fatal_error "unknown suffix for \`$my_dlsyms'"
2533a7b590b3Smrg	;;
2534a7b590b3Smrg      esac
2535a7b590b3Smrg    else
2536a7b590b3Smrg      # We keep going just in case the user didn't refer to
2537a7b590b3Smrg      # lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
2538a7b590b3Smrg      # really was required.
2539943345d3Smrg
2540a7b590b3Smrg      # Nullify the symbol file.
2541a7b590b3Smrg      compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
2542a7b590b3Smrg      finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
2543a7b590b3Smrg    fi
2544a7b590b3Smrg}
2545943345d3Smrg
2546a7b590b3Smrg# func_win32_libid arg
2547a7b590b3Smrg# return the library type of file 'arg'
2548a7b590b3Smrg#
2549a7b590b3Smrg# Need a lot of goo to handle *both* DLLs and import libs
2550a7b590b3Smrg# Has to be a shell function in order to 'eat' the argument
2551a7b590b3Smrg# that is supplied when $file_magic_command is called.
2552a7b590b3Smrgfunc_win32_libid ()
2553a7b590b3Smrg{
2554a7b590b3Smrg  $opt_debug
2555a7b590b3Smrg  win32_libid_type="unknown"
2556a7b590b3Smrg  win32_fileres=`file -L $1 2>/dev/null`
2557a7b590b3Smrg  case $win32_fileres in
2558a7b590b3Smrg  *ar\ archive\ import\ library*) # definitely import
2559a7b590b3Smrg    win32_libid_type="x86 archive import"
2560a7b590b3Smrg    ;;
2561a7b590b3Smrg  *ar\ archive*) # could be an import, or static
2562a7b590b3Smrg    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
2563a7b590b3Smrg       $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
2564a7b590b3Smrg      win32_nmres=`eval $NM -f posix -A $1 |
2565a7b590b3Smrg	$SED -n -e '
2566a7b590b3Smrg	    1,100{
2567a7b590b3Smrg		/ I /{
2568a7b590b3Smrg		    s,.*,import,
2569a7b590b3Smrg		    p
2570a7b590b3Smrg		    q
2571a7b590b3Smrg		}
2572a7b590b3Smrg	    }'`
2573a7b590b3Smrg      case $win32_nmres in
2574a7b590b3Smrg      import*)  win32_libid_type="x86 archive import";;
2575a7b590b3Smrg      *)        win32_libid_type="x86 archive static";;
2576a7b590b3Smrg      esac
2577a7b590b3Smrg    fi
2578a7b590b3Smrg    ;;
2579a7b590b3Smrg  *DLL*)
2580a7b590b3Smrg    win32_libid_type="x86 DLL"
2581a7b590b3Smrg    ;;
2582a7b590b3Smrg  *executable*) # but shell scripts are "executable" too...
2583a7b590b3Smrg    case $win32_fileres in
2584a7b590b3Smrg    *MS\ Windows\ PE\ Intel*)
2585a7b590b3Smrg      win32_libid_type="x86 DLL"
2586a7b590b3Smrg      ;;
2587a7b590b3Smrg    esac
2588a7b590b3Smrg    ;;
2589a7b590b3Smrg  esac
2590a7b590b3Smrg  $ECHO "$win32_libid_type"
2591a7b590b3Smrg}
2592943345d3Smrg
2593943345d3Smrg
2594943345d3Smrg
2595a7b590b3Smrg# func_extract_an_archive dir oldlib
2596a7b590b3Smrgfunc_extract_an_archive ()
2597a7b590b3Smrg{
2598a7b590b3Smrg    $opt_debug
2599a7b590b3Smrg    f_ex_an_ar_dir="$1"; shift
2600a7b590b3Smrg    f_ex_an_ar_oldlib="$1"
2601a7b590b3Smrg    func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?'
2602a7b590b3Smrg    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
2603a7b590b3Smrg     :
2604a7b590b3Smrg    else
2605a7b590b3Smrg      func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
2606a7b590b3Smrg    fi
2607a7b590b3Smrg}
2608943345d3Smrg
2609943345d3Smrg
2610a7b590b3Smrg# func_extract_archives gentop oldlib ...
2611a7b590b3Smrgfunc_extract_archives ()
2612a7b590b3Smrg{
2613a7b590b3Smrg    $opt_debug
2614a7b590b3Smrg    my_gentop="$1"; shift
2615a7b590b3Smrg    my_oldlibs=${1+"$@"}
2616a7b590b3Smrg    my_oldobjs=""
2617a7b590b3Smrg    my_xlib=""
2618a7b590b3Smrg    my_xabs=""
2619a7b590b3Smrg    my_xdir=""
2620943345d3Smrg
2621a7b590b3Smrg    for my_xlib in $my_oldlibs; do
2622a7b590b3Smrg      # Extract the objects.
2623a7b590b3Smrg      case $my_xlib in
2624a7b590b3Smrg	[\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
2625a7b590b3Smrg	*) my_xabs=`pwd`"/$my_xlib" ;;
2626a7b590b3Smrg      esac
2627a7b590b3Smrg      func_basename "$my_xlib"
2628a7b590b3Smrg      my_xlib="$func_basename_result"
2629a7b590b3Smrg      my_xlib_u=$my_xlib
2630a7b590b3Smrg      while :; do
2631a7b590b3Smrg        case " $extracted_archives " in
2632a7b590b3Smrg	*" $my_xlib_u "*)
2633a7b590b3Smrg	  func_arith $extracted_serial + 1
2634a7b590b3Smrg	  extracted_serial=$func_arith_result
2635a7b590b3Smrg	  my_xlib_u=lt$extracted_serial-$my_xlib ;;
2636a7b590b3Smrg	*) break ;;
2637a7b590b3Smrg	esac
2638a7b590b3Smrg      done
2639a7b590b3Smrg      extracted_archives="$extracted_archives $my_xlib_u"
2640a7b590b3Smrg      my_xdir="$my_gentop/$my_xlib_u"
2641943345d3Smrg
2642a7b590b3Smrg      func_mkdir_p "$my_xdir"
2643943345d3Smrg
2644a7b590b3Smrg      case $host in
2645a7b590b3Smrg      *-darwin*)
2646a7b590b3Smrg	func_verbose "Extracting $my_xabs"
2647a7b590b3Smrg	# Do not bother doing anything if just a dry run
2648a7b590b3Smrg	$opt_dry_run || {
2649a7b590b3Smrg	  darwin_orig_dir=`pwd`
2650a7b590b3Smrg	  cd $my_xdir || exit $?
2651a7b590b3Smrg	  darwin_archive=$my_xabs
2652a7b590b3Smrg	  darwin_curdir=`pwd`
2653a7b590b3Smrg	  darwin_base_archive=`basename "$darwin_archive"`
2654a7b590b3Smrg	  darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
2655a7b590b3Smrg	  if test -n "$darwin_arches"; then
2656a7b590b3Smrg	    darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
2657a7b590b3Smrg	    darwin_arch=
2658a7b590b3Smrg	    func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
2659a7b590b3Smrg	    for darwin_arch in  $darwin_arches ; do
2660a7b590b3Smrg	      func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
2661a7b590b3Smrg	      $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
2662a7b590b3Smrg	      cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
2663a7b590b3Smrg	      func_extract_an_archive "`pwd`" "${darwin_base_archive}"
2664a7b590b3Smrg	      cd "$darwin_curdir"
2665a7b590b3Smrg	      $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
2666a7b590b3Smrg	    done # $darwin_arches
2667a7b590b3Smrg            ## Okay now we've a bunch of thin objects, gotta fatten them up :)
2668a7b590b3Smrg	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
2669a7b590b3Smrg	    darwin_file=
2670a7b590b3Smrg	    darwin_files=
2671a7b590b3Smrg	    for darwin_file in $darwin_filelist; do
2672a7b590b3Smrg	      darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
2673a7b590b3Smrg	      $LIPO -create -output "$darwin_file" $darwin_files
2674a7b590b3Smrg	    done # $darwin_filelist
2675a7b590b3Smrg	    $RM -rf unfat-$$
2676a7b590b3Smrg	    cd "$darwin_orig_dir"
2677943345d3Smrg	  else
2678a7b590b3Smrg	    cd $darwin_orig_dir
2679a7b590b3Smrg	    func_extract_an_archive "$my_xdir" "$my_xabs"
2680a7b590b3Smrg	  fi # $darwin_arches
2681a7b590b3Smrg	} # !$opt_dry_run
2682a7b590b3Smrg	;;
2683a7b590b3Smrg      *)
2684a7b590b3Smrg        func_extract_an_archive "$my_xdir" "$my_xabs"
2685a7b590b3Smrg	;;
2686a7b590b3Smrg      esac
2687a7b590b3Smrg      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
2688a7b590b3Smrg    done
2689943345d3Smrg
2690a7b590b3Smrg    func_extract_archives_result="$my_oldobjs"
2691a7b590b3Smrg}
2692943345d3Smrg
2693943345d3Smrg
2694943345d3Smrg
2695a7b590b3Smrg# func_emit_wrapper_part1 [arg=no]
2696a7b590b3Smrg#
2697a7b590b3Smrg# Emit the first part of a libtool wrapper script on stdout.
2698a7b590b3Smrg# For more information, see the description associated with
2699a7b590b3Smrg# func_emit_wrapper(), below.
2700a7b590b3Smrgfunc_emit_wrapper_part1 ()
2701a7b590b3Smrg{
2702a7b590b3Smrg	func_emit_wrapper_part1_arg1=no
2703a7b590b3Smrg	if test -n "$1" ; then
2704a7b590b3Smrg	  func_emit_wrapper_part1_arg1=$1
2705943345d3Smrg	fi
2706943345d3Smrg
2707a7b590b3Smrg	$ECHO "\
2708a7b590b3Smrg#! $SHELL
2709943345d3Smrg
2710a7b590b3Smrg# $output - temporary wrapper script for $objdir/$outputname
2711a7b590b3Smrg# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
2712a7b590b3Smrg#
2713a7b590b3Smrg# The $output program cannot be directly executed until all the libtool
2714a7b590b3Smrg# libraries that it depends on are installed.
2715a7b590b3Smrg#
2716a7b590b3Smrg# This wrapper script should never be moved out of the build directory.
2717a7b590b3Smrg# If it is, it will not operate correctly.
2718943345d3Smrg
2719a7b590b3Smrg# Sed substitution that helps us do robust quoting.  It backslashifies
2720a7b590b3Smrg# metacharacters that are still active within double-quoted strings.
2721a7b590b3SmrgXsed='${SED} -e 1s/^X//'
2722a7b590b3Smrgsed_quote_subst='$sed_quote_subst'
2723943345d3Smrg
2724a7b590b3Smrg# Be Bourne compatible
2725a7b590b3Smrgif test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
2726a7b590b3Smrg  emulate sh
2727a7b590b3Smrg  NULLCMD=:
2728a7b590b3Smrg  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
2729a7b590b3Smrg  # is contrary to our usage.  Disable this feature.
2730a7b590b3Smrg  alias -g '\${1+\"\$@\"}'='\"\$@\"'
2731a7b590b3Smrg  setopt NO_GLOB_SUBST
2732a7b590b3Smrgelse
2733a7b590b3Smrg  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
2734a7b590b3Smrgfi
2735a7b590b3SmrgBIN_SH=xpg4; export BIN_SH # for Tru64
2736a7b590b3SmrgDUALCASE=1; export DUALCASE # for MKS sh
2737943345d3Smrg
2738a7b590b3Smrg# The HP-UX ksh and POSIX shell print the target directory to stdout
2739a7b590b3Smrg# if CDPATH is set.
2740a7b590b3Smrg(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
2741943345d3Smrg
2742a7b590b3Smrgrelink_command=\"$relink_command\"
2743943345d3Smrg
2744a7b590b3Smrg# This environment variable determines our operation mode.
2745a7b590b3Smrgif test \"\$libtool_install_magic\" = \"$magic\"; then
2746a7b590b3Smrg  # install mode needs the following variables:
2747a7b590b3Smrg  generated_by_libtool_version='$macro_version'
2748a7b590b3Smrg  notinst_deplibs='$notinst_deplibs'
2749a7b590b3Smrgelse
2750a7b590b3Smrg  # When we are sourced in execute mode, \$file and \$ECHO are already set.
2751a7b590b3Smrg  if test \"\$libtool_execute_magic\" != \"$magic\"; then
2752a7b590b3Smrg    ECHO=\"$qecho\"
2753a7b590b3Smrg    file=\"\$0\"
2754a7b590b3Smrg    # Make sure echo works.
2755a7b590b3Smrg    if test \"X\$1\" = X--no-reexec; then
2756a7b590b3Smrg      # Discard the --no-reexec flag, and continue.
2757a7b590b3Smrg      shift
2758a7b590b3Smrg    elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then
2759a7b590b3Smrg      # Yippee, \$ECHO works!
2760a7b590b3Smrg      :
2761a7b590b3Smrg    else
2762a7b590b3Smrg      # Restart under the correct shell, and then maybe \$ECHO will work.
2763a7b590b3Smrg      exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
2764a7b590b3Smrg    fi
2765a7b590b3Smrg  fi\
2766a7b590b3Smrg"
2767a7b590b3Smrg	$ECHO "\
2768943345d3Smrg
2769a7b590b3Smrg  # Find the directory that this script lives in.
2770a7b590b3Smrg  thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
2771a7b590b3Smrg  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
2772943345d3Smrg
2773a7b590b3Smrg  # Follow symbolic links until we get to the real thisdir.
2774a7b590b3Smrg  file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
2775a7b590b3Smrg  while test -n \"\$file\"; do
2776a7b590b3Smrg    destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
2777943345d3Smrg
2778a7b590b3Smrg    # If there was a directory component, then change thisdir.
2779a7b590b3Smrg    if test \"x\$destdir\" != \"x\$file\"; then
2780a7b590b3Smrg      case \"\$destdir\" in
2781a7b590b3Smrg      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
2782a7b590b3Smrg      *) thisdir=\"\$thisdir/\$destdir\" ;;
2783943345d3Smrg      esac
2784a7b590b3Smrg    fi
2785943345d3Smrg
2786a7b590b3Smrg    file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
2787a7b590b3Smrg    file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
2788a7b590b3Smrg  done
2789a7b590b3Smrg"
2790a7b590b3Smrg}
2791a7b590b3Smrg# end: func_emit_wrapper_part1
2792a7b590b3Smrg
2793a7b590b3Smrg# func_emit_wrapper_part2 [arg=no]
2794a7b590b3Smrg#
2795a7b590b3Smrg# Emit the second part of a libtool wrapper script on stdout.
2796a7b590b3Smrg# For more information, see the description associated with
2797a7b590b3Smrg# func_emit_wrapper(), below.
2798a7b590b3Smrgfunc_emit_wrapper_part2 ()
2799a7b590b3Smrg{
2800a7b590b3Smrg	func_emit_wrapper_part2_arg1=no
2801a7b590b3Smrg	if test -n "$1" ; then
2802a7b590b3Smrg	  func_emit_wrapper_part2_arg1=$1
2803943345d3Smrg	fi
2804943345d3Smrg
2805a7b590b3Smrg	$ECHO "\
2806943345d3Smrg
2807a7b590b3Smrg  # Usually 'no', except on cygwin/mingw when embedded into
2808a7b590b3Smrg  # the cwrapper.
2809a7b590b3Smrg  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_part2_arg1
2810a7b590b3Smrg  if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
2811a7b590b3Smrg    # special case for '.'
2812a7b590b3Smrg    if test \"\$thisdir\" = \".\"; then
2813a7b590b3Smrg      thisdir=\`pwd\`
2814a7b590b3Smrg    fi
2815a7b590b3Smrg    # remove .libs from thisdir
2816a7b590b3Smrg    case \"\$thisdir\" in
2817a7b590b3Smrg    *[\\\\/]$objdir ) thisdir=\`\$ECHO \"X\$thisdir\" | \$Xsed -e 's%[\\\\/][^\\\\/]*$%%'\` ;;
2818a7b590b3Smrg    $objdir )   thisdir=. ;;
2819a7b590b3Smrg    esac
2820a7b590b3Smrg  fi
2821a7b590b3Smrg
2822a7b590b3Smrg  # Try to get the absolute directory name.
2823a7b590b3Smrg  absdir=\`cd \"\$thisdir\" && pwd\`
2824a7b590b3Smrg  test -n \"\$absdir\" && thisdir=\"\$absdir\"
2825a7b590b3Smrg"
2826a7b590b3Smrg
2827a7b590b3Smrg	if test "$fast_install" = yes; then
2828a7b590b3Smrg	  $ECHO "\
2829a7b590b3Smrg  program=lt-'$outputname'$exeext
2830a7b590b3Smrg  progdir=\"\$thisdir/$objdir\"
2831a7b590b3Smrg
2832a7b590b3Smrg  if test ! -f \"\$progdir/\$program\" ||
2833a7b590b3Smrg     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
2834a7b590b3Smrg       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
2835a7b590b3Smrg
2836a7b590b3Smrg    file=\"\$\$-\$program\"
2837a7b590b3Smrg
2838a7b590b3Smrg    if test ! -d \"\$progdir\"; then
2839a7b590b3Smrg      $MKDIR \"\$progdir\"
2840a7b590b3Smrg    else
2841a7b590b3Smrg      $RM \"\$progdir/\$file\"
2842a7b590b3Smrg    fi"
2843a7b590b3Smrg
2844a7b590b3Smrg	  $ECHO "\
2845a7b590b3Smrg
2846a7b590b3Smrg    # relink executable if necessary
2847a7b590b3Smrg    if test -n \"\$relink_command\"; then
2848a7b590b3Smrg      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
2849a7b590b3Smrg      else
2850a7b590b3Smrg	$ECHO \"\$relink_command_output\" >&2
2851a7b590b3Smrg	$RM \"\$progdir/\$file\"
2852a7b590b3Smrg	exit 1
2853943345d3Smrg      fi
2854a7b590b3Smrg    fi
2855943345d3Smrg
2856a7b590b3Smrg    $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
2857a7b590b3Smrg    { $RM \"\$progdir/\$program\";
2858a7b590b3Smrg      $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
2859a7b590b3Smrg    $RM \"\$progdir/\$file\"
2860a7b590b3Smrg  fi"
2861a7b590b3Smrg	else
2862a7b590b3Smrg	  $ECHO "\
2863a7b590b3Smrg  program='$outputname'
2864a7b590b3Smrg  progdir=\"\$thisdir/$objdir\"
2865a7b590b3Smrg"
2866943345d3Smrg	fi
2867943345d3Smrg
2868a7b590b3Smrg	$ECHO "\
2869943345d3Smrg
2870a7b590b3Smrg  if test -f \"\$progdir/\$program\"; then"
2871943345d3Smrg
2872a7b590b3Smrg	# Export our shlibpath_var if we have one.
2873a7b590b3Smrg	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
2874a7b590b3Smrg	  $ECHO "\
2875a7b590b3Smrg    # Add our own library path to $shlibpath_var
2876a7b590b3Smrg    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
2877a7b590b3Smrg
2878a7b590b3Smrg    # Some systems cannot cope with colon-terminated $shlibpath_var
2879a7b590b3Smrg    # The second colon is a workaround for a bug in BeOS R4 sed
2880a7b590b3Smrg    $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
2881943345d3Smrg
2882a7b590b3Smrg    export $shlibpath_var
2883a7b590b3Smrg"
2884943345d3Smrg	fi
2885943345d3Smrg
2886a7b590b3Smrg	# fixup the dll searchpath if we need to.
2887a7b590b3Smrg	if test -n "$dllsearchpath"; then
2888a7b590b3Smrg	  $ECHO "\
2889a7b590b3Smrg    # Add the dll search path components to the executable PATH
2890a7b590b3Smrg    PATH=$dllsearchpath:\$PATH
2891a7b590b3Smrg"
2892a7b590b3Smrg	fi
2893943345d3Smrg
2894a7b590b3Smrg	$ECHO "\
2895a7b590b3Smrg    if test \"\$libtool_execute_magic\" != \"$magic\"; then
2896a7b590b3Smrg      # Run the actual program with our arguments.
2897a7b590b3Smrg"
2898a7b590b3Smrg	case $host in
2899a7b590b3Smrg	# Backslashes separate directories on plain windows
2900a7b590b3Smrg	*-*-mingw | *-*-os2* | *-cegcc*)
2901a7b590b3Smrg	  $ECHO "\
2902a7b590b3Smrg      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
2903a7b590b3Smrg"
2904943345d3Smrg	  ;;
2905943345d3Smrg
2906943345d3Smrg	*)
2907a7b590b3Smrg	  $ECHO "\
2908a7b590b3Smrg      exec \"\$progdir/\$program\" \${1+\"\$@\"}
2909a7b590b3Smrg"
2910943345d3Smrg	  ;;
2911943345d3Smrg	esac
2912a7b590b3Smrg	$ECHO "\
2913a7b590b3Smrg      \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
2914a7b590b3Smrg      exit 1
2915a7b590b3Smrg    fi
2916a7b590b3Smrg  else
2917a7b590b3Smrg    # The program doesn't exist.
2918a7b590b3Smrg    \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
2919a7b590b3Smrg    \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
2920a7b590b3Smrg    $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
2921a7b590b3Smrg    exit 1
2922a7b590b3Smrg  fi
2923a7b590b3Smrgfi\
2924a7b590b3Smrg"
2925a7b590b3Smrg}
2926a7b590b3Smrg# end: func_emit_wrapper_part2
2927943345d3Smrg
2928943345d3Smrg
2929a7b590b3Smrg# func_emit_wrapper [arg=no]
2930a7b590b3Smrg#
2931a7b590b3Smrg# Emit a libtool wrapper script on stdout.
2932a7b590b3Smrg# Don't directly open a file because we may want to
2933a7b590b3Smrg# incorporate the script contents within a cygwin/mingw
2934a7b590b3Smrg# wrapper executable.  Must ONLY be called from within
2935a7b590b3Smrg# func_mode_link because it depends on a number of variables
2936a7b590b3Smrg# set therein.
2937a7b590b3Smrg#
2938a7b590b3Smrg# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
2939a7b590b3Smrg# variable will take.  If 'yes', then the emitted script
2940a7b590b3Smrg# will assume that the directory in which it is stored is
2941a7b590b3Smrg# the $objdir directory.  This is a cygwin/mingw-specific
2942a7b590b3Smrg# behavior.
2943a7b590b3Smrgfunc_emit_wrapper ()
2944a7b590b3Smrg{
2945a7b590b3Smrg	func_emit_wrapper_arg1=no
2946a7b590b3Smrg	if test -n "$1" ; then
2947a7b590b3Smrg	  func_emit_wrapper_arg1=$1
2948943345d3Smrg	fi
2949943345d3Smrg
2950a7b590b3Smrg	# split this up so that func_emit_cwrapperexe_src
2951a7b590b3Smrg	# can call each part independently.
2952a7b590b3Smrg	func_emit_wrapper_part1 "${func_emit_wrapper_arg1}"
2953a7b590b3Smrg	func_emit_wrapper_part2 "${func_emit_wrapper_arg1}"
2954a7b590b3Smrg}
2955943345d3Smrg
2956943345d3Smrg
2957a7b590b3Smrg# func_to_host_path arg
2958a7b590b3Smrg#
2959a7b590b3Smrg# Convert paths to host format when used with build tools.
2960a7b590b3Smrg# Intended for use with "native" mingw (where libtool itself
2961a7b590b3Smrg# is running under the msys shell), or in the following cross-
2962a7b590b3Smrg# build environments:
2963a7b590b3Smrg#    $build          $host
2964a7b590b3Smrg#    mingw (msys)    mingw  [e.g. native]
2965a7b590b3Smrg#    cygwin          mingw
2966a7b590b3Smrg#    *nix + wine     mingw
2967a7b590b3Smrg# where wine is equipped with the `winepath' executable.
2968a7b590b3Smrg# In the native mingw case, the (msys) shell automatically
2969a7b590b3Smrg# converts paths for any non-msys applications it launches,
2970a7b590b3Smrg# but that facility isn't available from inside the cwrapper.
2971a7b590b3Smrg# Similar accommodations are necessary for $host mingw and
2972a7b590b3Smrg# $build cygwin.  Calling this function does no harm for other
2973a7b590b3Smrg# $host/$build combinations not listed above.
2974a7b590b3Smrg#
2975a7b590b3Smrg# ARG is the path (on $build) that should be converted to
2976a7b590b3Smrg# the proper representation for $host. The result is stored
2977a7b590b3Smrg# in $func_to_host_path_result.
2978a7b590b3Smrgfunc_to_host_path ()
2979a7b590b3Smrg{
2980a7b590b3Smrg  func_to_host_path_result="$1"
2981a7b590b3Smrg  if test -n "$1" ; then
2982a7b590b3Smrg    case $host in
2983a7b590b3Smrg      *mingw* )
2984a7b590b3Smrg        lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
2985a7b590b3Smrg        case $build in
2986a7b590b3Smrg          *mingw* ) # actually, msys
2987a7b590b3Smrg            # awkward: cmd appends spaces to result
2988a7b590b3Smrg            lt_sed_strip_trailing_spaces="s/[ ]*\$//"
2989a7b590b3Smrg            func_to_host_path_tmp1=`( cmd //c echo "$1" |\
2990a7b590b3Smrg              $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""`
2991a7b590b3Smrg            func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
2992a7b590b3Smrg              $SED -e "$lt_sed_naive_backslashify"`
2993a7b590b3Smrg            ;;
2994a7b590b3Smrg          *cygwin* )
2995a7b590b3Smrg            func_to_host_path_tmp1=`cygpath -w "$1"`
2996a7b590b3Smrg            func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
2997a7b590b3Smrg              $SED -e "$lt_sed_naive_backslashify"`
2998a7b590b3Smrg            ;;
2999a7b590b3Smrg          * )
3000a7b590b3Smrg            # Unfortunately, winepath does not exit with a non-zero
3001a7b590b3Smrg            # error code, so we are forced to check the contents of
3002a7b590b3Smrg            # stdout. On the other hand, if the command is not
3003a7b590b3Smrg            # found, the shell will set an exit code of 127 and print
3004a7b590b3Smrg            # *an error message* to stdout. So we must check for both
3005a7b590b3Smrg            # error code of zero AND non-empty stdout, which explains
3006a7b590b3Smrg            # the odd construction:
3007a7b590b3Smrg            func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null`
3008a7b590b3Smrg            if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then
3009a7b590b3Smrg              func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
3010a7b590b3Smrg                $SED -e "$lt_sed_naive_backslashify"`
3011a7b590b3Smrg            else
3012a7b590b3Smrg              # Allow warning below.
3013a7b590b3Smrg              func_to_host_path_result=""
3014a7b590b3Smrg            fi
3015a7b590b3Smrg            ;;
3016a7b590b3Smrg        esac
3017a7b590b3Smrg        if test -z "$func_to_host_path_result" ; then
3018a7b590b3Smrg          func_error "Could not determine host path corresponding to"
3019a7b590b3Smrg          func_error "  '$1'"
3020a7b590b3Smrg          func_error "Continuing, but uninstalled executables may not work."
3021a7b590b3Smrg          # Fallback:
3022a7b590b3Smrg          func_to_host_path_result="$1"
3023a7b590b3Smrg        fi
3024a7b590b3Smrg        ;;
3025a7b590b3Smrg    esac
3026a7b590b3Smrg  fi
3027a7b590b3Smrg}
3028a7b590b3Smrg# end: func_to_host_path
3029943345d3Smrg
3030a7b590b3Smrg# func_to_host_pathlist arg
3031a7b590b3Smrg#
3032a7b590b3Smrg# Convert pathlists to host format when used with build tools.
3033a7b590b3Smrg# See func_to_host_path(), above. This function supports the
3034a7b590b3Smrg# following $build/$host combinations (but does no harm for
3035a7b590b3Smrg# combinations not listed here):
3036a7b590b3Smrg#    $build          $host
3037a7b590b3Smrg#    mingw (msys)    mingw  [e.g. native]
3038a7b590b3Smrg#    cygwin          mingw
3039a7b590b3Smrg#    *nix + wine     mingw
3040a7b590b3Smrg#
3041a7b590b3Smrg# Path separators are also converted from $build format to
3042a7b590b3Smrg# $host format. If ARG begins or ends with a path separator
3043a7b590b3Smrg# character, it is preserved (but converted to $host format)
3044a7b590b3Smrg# on output.
3045a7b590b3Smrg#
3046a7b590b3Smrg# ARG is a pathlist (on $build) that should be converted to
3047a7b590b3Smrg# the proper representation on $host. The result is stored
3048a7b590b3Smrg# in $func_to_host_pathlist_result.
3049a7b590b3Smrgfunc_to_host_pathlist ()
3050a7b590b3Smrg{
3051a7b590b3Smrg  func_to_host_pathlist_result="$1"
3052a7b590b3Smrg  if test -n "$1" ; then
3053a7b590b3Smrg    case $host in
3054a7b590b3Smrg      *mingw* )
3055a7b590b3Smrg        lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
3056a7b590b3Smrg        # Remove leading and trailing path separator characters from
3057a7b590b3Smrg        # ARG. msys behavior is inconsistent here, cygpath turns them
3058a7b590b3Smrg        # into '.;' and ';.', and winepath ignores them completely.
3059a7b590b3Smrg        func_to_host_pathlist_tmp2="$1"
3060a7b590b3Smrg        # Once set for this call, this variable should not be
3061a7b590b3Smrg        # reassigned. It is used in tha fallback case.
3062a7b590b3Smrg        func_to_host_pathlist_tmp1=`echo "$func_to_host_pathlist_tmp2" |\
3063a7b590b3Smrg          $SED -e 's|^:*||' -e 's|:*$||'`
3064a7b590b3Smrg        case $build in
3065a7b590b3Smrg          *mingw* ) # Actually, msys.
3066a7b590b3Smrg            # Awkward: cmd appends spaces to result.
3067a7b590b3Smrg            lt_sed_strip_trailing_spaces="s/[ ]*\$//"
3068a7b590b3Smrg            func_to_host_pathlist_tmp2=`( cmd //c echo "$func_to_host_pathlist_tmp1" |\
3069a7b590b3Smrg              $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""`
3070a7b590b3Smrg            func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\
3071a7b590b3Smrg              $SED -e "$lt_sed_naive_backslashify"`
3072a7b590b3Smrg            ;;
3073a7b590b3Smrg          *cygwin* )
3074a7b590b3Smrg            func_to_host_pathlist_tmp2=`cygpath -w -p "$func_to_host_pathlist_tmp1"`
3075a7b590b3Smrg            func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\
3076a7b590b3Smrg              $SED -e "$lt_sed_naive_backslashify"`
3077a7b590b3Smrg            ;;
3078a7b590b3Smrg          * )
3079a7b590b3Smrg            # unfortunately, winepath doesn't convert pathlists
3080a7b590b3Smrg            func_to_host_pathlist_result=""
3081a7b590b3Smrg            func_to_host_pathlist_oldIFS=$IFS
3082a7b590b3Smrg            IFS=:
3083a7b590b3Smrg            for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do
3084a7b590b3Smrg              IFS=$func_to_host_pathlist_oldIFS
3085a7b590b3Smrg              if test -n "$func_to_host_pathlist_f" ; then
3086a7b590b3Smrg                func_to_host_path "$func_to_host_pathlist_f"
3087a7b590b3Smrg                if test -n "$func_to_host_path_result" ; then
3088a7b590b3Smrg                  if test -z "$func_to_host_pathlist_result" ; then
3089a7b590b3Smrg                    func_to_host_pathlist_result="$func_to_host_path_result"
3090a7b590b3Smrg                  else
3091a7b590b3Smrg                    func_to_host_pathlist_result="$func_to_host_pathlist_result;$func_to_host_path_result"
3092a7b590b3Smrg                  fi
3093a7b590b3Smrg                fi
3094a7b590b3Smrg              fi
3095a7b590b3Smrg              IFS=:
3096a7b590b3Smrg            done
3097a7b590b3Smrg            IFS=$func_to_host_pathlist_oldIFS
3098a7b590b3Smrg            ;;
3099a7b590b3Smrg        esac
3100a7b590b3Smrg        if test -z "$func_to_host_pathlist_result" ; then
3101a7b590b3Smrg          func_error "Could not determine the host path(s) corresponding to"
3102a7b590b3Smrg          func_error "  '$1'"
3103a7b590b3Smrg          func_error "Continuing, but uninstalled executables may not work."
3104a7b590b3Smrg          # Fallback. This may break if $1 contains DOS-style drive
3105a7b590b3Smrg          # specifications. The fix is not to complicate the expression
3106a7b590b3Smrg          # below, but for the user to provide a working wine installation
3107a7b590b3Smrg          # with winepath so that path translation in the cross-to-mingw
3108a7b590b3Smrg          # case works properly.
3109a7b590b3Smrg          lt_replace_pathsep_nix_to_dos="s|:|;|g"
3110a7b590b3Smrg          func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\
3111a7b590b3Smrg            $SED -e "$lt_replace_pathsep_nix_to_dos"`
3112a7b590b3Smrg        fi
3113a7b590b3Smrg        # Now, add the leading and trailing path separators back
3114a7b590b3Smrg        case "$1" in
3115a7b590b3Smrg          :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result"
3116a7b590b3Smrg            ;;
3117a7b590b3Smrg        esac
3118a7b590b3Smrg        case "$1" in
3119a7b590b3Smrg          *: ) func_to_host_pathlist_result="$func_to_host_pathlist_result;"
3120a7b590b3Smrg            ;;
3121a7b590b3Smrg        esac
3122a7b590b3Smrg        ;;
3123a7b590b3Smrg    esac
3124a7b590b3Smrg  fi
3125a7b590b3Smrg}
3126a7b590b3Smrg# end: func_to_host_pathlist
3127943345d3Smrg
3128a7b590b3Smrg# func_emit_cwrapperexe_src
3129a7b590b3Smrg# emit the source code for a wrapper executable on stdout
3130a7b590b3Smrg# Must ONLY be called from within func_mode_link because
3131a7b590b3Smrg# it depends on a number of variable set therein.
3132a7b590b3Smrgfunc_emit_cwrapperexe_src ()
3133a7b590b3Smrg{
3134a7b590b3Smrg	cat <<EOF
3135943345d3Smrg
3136a7b590b3Smrg/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
3137a7b590b3Smrg   Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
3138943345d3Smrg
3139a7b590b3Smrg   The $output program cannot be directly executed until all the libtool
3140a7b590b3Smrg   libraries that it depends on are installed.
3141943345d3Smrg
3142a7b590b3Smrg   This wrapper executable should never be moved out of the build directory.
3143a7b590b3Smrg   If it is, it will not operate correctly.
3144943345d3Smrg
3145a7b590b3Smrg   Currently, it simply execs the wrapper *script* "$SHELL $output",
3146a7b590b3Smrg   but could eventually absorb all of the scripts functionality and
3147a7b590b3Smrg   exec $objdir/$outputname directly.
3148a7b590b3Smrg*/
3149a7b590b3SmrgEOF
3150a7b590b3Smrg	    cat <<"EOF"
3151a7b590b3Smrg#include <stdio.h>
3152a7b590b3Smrg#include <stdlib.h>
3153a7b590b3Smrg#ifdef _MSC_VER
3154a7b590b3Smrg# include <direct.h>
3155a7b590b3Smrg# include <process.h>
3156a7b590b3Smrg# include <io.h>
3157a7b590b3Smrg# define setmode _setmode
3158a7b590b3Smrg#else
3159a7b590b3Smrg# include <unistd.h>
3160a7b590b3Smrg# include <stdint.h>
3161a7b590b3Smrg# ifdef __CYGWIN__
3162a7b590b3Smrg#  include <io.h>
3163a7b590b3Smrg#  define HAVE_SETENV
3164a7b590b3Smrg#  ifdef __STRICT_ANSI__
3165a7b590b3Smrgchar *realpath (const char *, char *);
3166a7b590b3Smrgint putenv (char *);
3167a7b590b3Smrgint setenv (const char *, const char *, int);
3168a7b590b3Smrg#  endif
3169a7b590b3Smrg# endif
3170a7b590b3Smrg#endif
3171a7b590b3Smrg#include <malloc.h>
3172a7b590b3Smrg#include <stdarg.h>
3173a7b590b3Smrg#include <assert.h>
3174a7b590b3Smrg#include <string.h>
3175a7b590b3Smrg#include <ctype.h>
3176a7b590b3Smrg#include <errno.h>
3177a7b590b3Smrg#include <fcntl.h>
3178a7b590b3Smrg#include <sys/stat.h>
3179943345d3Smrg
3180a7b590b3Smrg#if defined(PATH_MAX)
3181a7b590b3Smrg# define LT_PATHMAX PATH_MAX
3182a7b590b3Smrg#elif defined(MAXPATHLEN)
3183a7b590b3Smrg# define LT_PATHMAX MAXPATHLEN
3184a7b590b3Smrg#else
3185a7b590b3Smrg# define LT_PATHMAX 1024
3186a7b590b3Smrg#endif
3187943345d3Smrg
3188a7b590b3Smrg#ifndef S_IXOTH
3189a7b590b3Smrg# define S_IXOTH 0
3190a7b590b3Smrg#endif
3191a7b590b3Smrg#ifndef S_IXGRP
3192a7b590b3Smrg# define S_IXGRP 0
3193a7b590b3Smrg#endif
3194943345d3Smrg
3195a7b590b3Smrg#ifdef _MSC_VER
3196a7b590b3Smrg# define S_IXUSR _S_IEXEC
3197a7b590b3Smrg# define stat _stat
3198a7b590b3Smrg# ifndef _INTPTR_T_DEFINED
3199a7b590b3Smrg#  define intptr_t int
3200a7b590b3Smrg# endif
3201a7b590b3Smrg#endif
3202943345d3Smrg
3203a7b590b3Smrg#ifndef DIR_SEPARATOR
3204a7b590b3Smrg# define DIR_SEPARATOR '/'
3205a7b590b3Smrg# define PATH_SEPARATOR ':'
3206a7b590b3Smrg#endif
3207943345d3Smrg
3208a7b590b3Smrg#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
3209a7b590b3Smrg  defined (__OS2__)
3210a7b590b3Smrg# define HAVE_DOS_BASED_FILE_SYSTEM
3211a7b590b3Smrg# define FOPEN_WB "wb"
3212a7b590b3Smrg# ifndef DIR_SEPARATOR_2
3213a7b590b3Smrg#  define DIR_SEPARATOR_2 '\\'
3214a7b590b3Smrg# endif
3215a7b590b3Smrg# ifndef PATH_SEPARATOR_2
3216a7b590b3Smrg#  define PATH_SEPARATOR_2 ';'
3217a7b590b3Smrg# endif
3218a7b590b3Smrg#endif
3219943345d3Smrg
3220a7b590b3Smrg#ifndef DIR_SEPARATOR_2
3221a7b590b3Smrg# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
3222a7b590b3Smrg#else /* DIR_SEPARATOR_2 */
3223a7b590b3Smrg# define IS_DIR_SEPARATOR(ch) \
3224a7b590b3Smrg	(((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
3225a7b590b3Smrg#endif /* DIR_SEPARATOR_2 */
3226943345d3Smrg
3227a7b590b3Smrg#ifndef PATH_SEPARATOR_2
3228a7b590b3Smrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
3229a7b590b3Smrg#else /* PATH_SEPARATOR_2 */
3230a7b590b3Smrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
3231a7b590b3Smrg#endif /* PATH_SEPARATOR_2 */
3232943345d3Smrg
3233a7b590b3Smrg#ifdef __CYGWIN__
3234a7b590b3Smrg# define FOPEN_WB "wb"
3235a7b590b3Smrg#endif
3236943345d3Smrg
3237a7b590b3Smrg#ifndef FOPEN_WB
3238a7b590b3Smrg# define FOPEN_WB "w"
3239a7b590b3Smrg#endif
3240a7b590b3Smrg#ifndef _O_BINARY
3241a7b590b3Smrg# define _O_BINARY 0
3242a7b590b3Smrg#endif
3243943345d3Smrg
3244a7b590b3Smrg#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
3245a7b590b3Smrg#define XFREE(stale) do { \
3246a7b590b3Smrg  if (stale) { free ((void *) stale); stale = 0; } \
3247a7b590b3Smrg} while (0)
3248943345d3Smrg
3249a7b590b3Smrg#undef LTWRAPPER_DEBUGPRINTF
3250a7b590b3Smrg#if defined DEBUGWRAPPER
3251a7b590b3Smrg# define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args
3252a7b590b3Smrgstatic void
3253a7b590b3Smrgltwrapper_debugprintf (const char *fmt, ...)
3254a7b590b3Smrg{
3255a7b590b3Smrg    va_list args;
3256a7b590b3Smrg    va_start (args, fmt);
3257a7b590b3Smrg    (void) vfprintf (stderr, fmt, args);
3258a7b590b3Smrg    va_end (args);
3259a7b590b3Smrg}
3260a7b590b3Smrg#else
3261a7b590b3Smrg# define LTWRAPPER_DEBUGPRINTF(args)
3262a7b590b3Smrg#endif
3263943345d3Smrg
3264a7b590b3Smrgconst char *program_name = NULL;
3265943345d3Smrg
3266a7b590b3Smrgvoid *xmalloc (size_t num);
3267a7b590b3Smrgchar *xstrdup (const char *string);
3268a7b590b3Smrgconst char *base_name (const char *name);
3269a7b590b3Smrgchar *find_executable (const char *wrapper);
3270a7b590b3Smrgchar *chase_symlinks (const char *pathspec);
3271a7b590b3Smrgint make_executable (const char *path);
3272a7b590b3Smrgint check_executable (const char *path);
3273a7b590b3Smrgchar *strendzap (char *str, const char *pat);
3274a7b590b3Smrgvoid lt_fatal (const char *message, ...);
3275a7b590b3Smrgvoid lt_setenv (const char *name, const char *value);
3276a7b590b3Smrgchar *lt_extend_str (const char *orig_value, const char *add, int to_end);
3277a7b590b3Smrgvoid lt_opt_process_env_set (const char *arg);
3278a7b590b3Smrgvoid lt_opt_process_env_prepend (const char *arg);
3279a7b590b3Smrgvoid lt_opt_process_env_append (const char *arg);
3280a7b590b3Smrgint lt_split_name_value (const char *arg, char** name, char** value);
3281a7b590b3Smrgvoid lt_update_exe_path (const char *name, const char *value);
3282a7b590b3Smrgvoid lt_update_lib_path (const char *name, const char *value);
3283a7b590b3Smrg
3284a7b590b3Smrgstatic const char *script_text_part1 =
3285a7b590b3SmrgEOF
3286943345d3Smrg
3287a7b590b3Smrg	    func_emit_wrapper_part1 yes |
3288a7b590b3Smrg	        $SED -e 's/\([\\"]\)/\\\1/g' \
3289a7b590b3Smrg	             -e 's/^/  "/' -e 's/$/\\n"/'
3290a7b590b3Smrg	    echo ";"
3291a7b590b3Smrg	    cat <<EOF
3292943345d3Smrg
3293a7b590b3Smrgstatic const char *script_text_part2 =
3294a7b590b3SmrgEOF
3295a7b590b3Smrg	    func_emit_wrapper_part2 yes |
3296a7b590b3Smrg	        $SED -e 's/\([\\"]\)/\\\1/g' \
3297a7b590b3Smrg	             -e 's/^/  "/' -e 's/$/\\n"/'
3298a7b590b3Smrg	    echo ";"
3299a7b590b3Smrg
3300a7b590b3Smrg	    cat <<EOF
3301a7b590b3Smrgconst char * MAGIC_EXE = "$magic_exe";
3302a7b590b3Smrgconst char * LIB_PATH_VARNAME = "$shlibpath_var";
3303a7b590b3SmrgEOF
3304943345d3Smrg
3305a7b590b3Smrg	    if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
3306a7b590b3Smrg              func_to_host_pathlist "$temp_rpath"
3307a7b590b3Smrg	      cat <<EOF
3308a7b590b3Smrgconst char * LIB_PATH_VALUE   = "$func_to_host_pathlist_result";
3309a7b590b3SmrgEOF
3310a7b590b3Smrg	    else
3311a7b590b3Smrg	      cat <<"EOF"
3312a7b590b3Smrgconst char * LIB_PATH_VALUE   = "";
3313a7b590b3SmrgEOF
3314943345d3Smrg	    fi
3315943345d3Smrg
3316a7b590b3Smrg	    if test -n "$dllsearchpath"; then
3317a7b590b3Smrg              func_to_host_pathlist "$dllsearchpath:"
3318a7b590b3Smrg	      cat <<EOF
3319a7b590b3Smrgconst char * EXE_PATH_VARNAME = "PATH";
3320a7b590b3Smrgconst char * EXE_PATH_VALUE   = "$func_to_host_pathlist_result";
3321943345d3SmrgEOF
3322943345d3Smrg	    else
3323a7b590b3Smrg	      cat <<"EOF"
3324a7b590b3Smrgconst char * EXE_PATH_VARNAME = "";
3325a7b590b3Smrgconst char * EXE_PATH_VALUE   = "";
3326a7b590b3SmrgEOF
3327943345d3Smrg	    fi
3328a7b590b3Smrg
3329a7b590b3Smrg	    if test "$fast_install" = yes; then
3330a7b590b3Smrg	      cat <<EOF
3331a7b590b3Smrgconst char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
3332a7b590b3SmrgEOF
3333943345d3Smrg	    else
3334a7b590b3Smrg	      cat <<EOF
3335a7b590b3Smrgconst char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
3336a7b590b3SmrgEOF
3337943345d3Smrg	    fi
3338943345d3Smrg
3339943345d3Smrg
3340a7b590b3Smrg	    cat <<"EOF"
3341943345d3Smrg
3342a7b590b3Smrg#define LTWRAPPER_OPTION_PREFIX         "--lt-"
3343a7b590b3Smrg#define LTWRAPPER_OPTION_PREFIX_LENGTH  5
3344943345d3Smrg
3345a7b590b3Smrgstatic const size_t opt_prefix_len         = LTWRAPPER_OPTION_PREFIX_LENGTH;
3346a7b590b3Smrgstatic const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
3347943345d3Smrg
3348a7b590b3Smrgstatic const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX "dump-script";
3349943345d3Smrg
3350a7b590b3Smrgstatic const size_t env_set_opt_len     = LTWRAPPER_OPTION_PREFIX_LENGTH + 7;
3351a7b590b3Smrgstatic const char *env_set_opt          = LTWRAPPER_OPTION_PREFIX "env-set";
3352a7b590b3Smrg  /* argument is putenv-style "foo=bar", value of foo is set to bar */
3353943345d3Smrg
3354a7b590b3Smrgstatic const size_t env_prepend_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 11;
3355a7b590b3Smrgstatic const char *env_prepend_opt      = LTWRAPPER_OPTION_PREFIX "env-prepend";
3356a7b590b3Smrg  /* argument is putenv-style "foo=bar", new value of foo is bar${foo} */
3357943345d3Smrg
3358a7b590b3Smrgstatic const size_t env_append_opt_len  = LTWRAPPER_OPTION_PREFIX_LENGTH + 10;
3359a7b590b3Smrgstatic const char *env_append_opt       = LTWRAPPER_OPTION_PREFIX "env-append";
3360a7b590b3Smrg  /* argument is putenv-style "foo=bar", new value of foo is ${foo}bar */
3361943345d3Smrg
3362a7b590b3Smrgint
3363a7b590b3Smrgmain (int argc, char *argv[])
3364a7b590b3Smrg{
3365a7b590b3Smrg  char **newargz;
3366a7b590b3Smrg  int  newargc;
3367a7b590b3Smrg  char *tmp_pathspec;
3368a7b590b3Smrg  char *actual_cwrapper_path;
3369a7b590b3Smrg  char *actual_cwrapper_name;
3370a7b590b3Smrg  char *target_name;
3371a7b590b3Smrg  char *lt_argv_zero;
3372a7b590b3Smrg  intptr_t rval = 127;
3373943345d3Smrg
3374a7b590b3Smrg  int i;
3375943345d3Smrg
3376a7b590b3Smrg  program_name = (char *) xstrdup (base_name (argv[0]));
3377a7b590b3Smrg  LTWRAPPER_DEBUGPRINTF (("(main) argv[0]      : %s\n", argv[0]));
3378a7b590b3Smrg  LTWRAPPER_DEBUGPRINTF (("(main) program_name : %s\n", program_name));
3379943345d3Smrg
3380a7b590b3Smrg  /* very simple arg parsing; don't want to rely on getopt */
3381a7b590b3Smrg  for (i = 1; i < argc; i++)
3382a7b590b3Smrg    {
3383a7b590b3Smrg      if (strcmp (argv[i], dumpscript_opt) == 0)
3384a7b590b3Smrg	{
3385a7b590b3SmrgEOF
3386a7b590b3Smrg	    case "$host" in
3387a7b590b3Smrg	      *mingw* | *cygwin* )
3388a7b590b3Smrg		# make stdout use "unix" line endings
3389a7b590b3Smrg		echo "          setmode(1,_O_BINARY);"
3390a7b590b3Smrg		;;
3391a7b590b3Smrg	      esac
3392943345d3Smrg
3393a7b590b3Smrg	    cat <<"EOF"
3394a7b590b3Smrg	  printf ("%s", script_text_part1);
3395a7b590b3Smrg	  printf ("%s", script_text_part2);
3396a7b590b3Smrg	  return 0;
3397a7b590b3Smrg	}
3398a7b590b3Smrg    }
3399943345d3Smrg
3400a7b590b3Smrg  newargz = XMALLOC (char *, argc + 1);
3401a7b590b3Smrg  tmp_pathspec = find_executable (argv[0]);
3402a7b590b3Smrg  if (tmp_pathspec == NULL)
3403a7b590b3Smrg    lt_fatal ("Couldn't find %s", argv[0]);
3404a7b590b3Smrg  LTWRAPPER_DEBUGPRINTF (("(main) found exe (before symlink chase) at : %s\n",
3405a7b590b3Smrg			  tmp_pathspec));
3406a7b590b3Smrg
3407a7b590b3Smrg  actual_cwrapper_path = chase_symlinks (tmp_pathspec);
3408a7b590b3Smrg  LTWRAPPER_DEBUGPRINTF (("(main) found exe (after symlink chase) at : %s\n",
3409a7b590b3Smrg			  actual_cwrapper_path));
3410a7b590b3Smrg  XFREE (tmp_pathspec);
3411a7b590b3Smrg
3412a7b590b3Smrg  actual_cwrapper_name = xstrdup( base_name (actual_cwrapper_path));
3413a7b590b3Smrg  strendzap (actual_cwrapper_path, actual_cwrapper_name);
3414a7b590b3Smrg
3415a7b590b3Smrg  /* wrapper name transforms */
3416a7b590b3Smrg  strendzap (actual_cwrapper_name, ".exe");
3417a7b590b3Smrg  tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
3418a7b590b3Smrg  XFREE (actual_cwrapper_name);
3419a7b590b3Smrg  actual_cwrapper_name = tmp_pathspec;
3420a7b590b3Smrg  tmp_pathspec = 0;
3421a7b590b3Smrg
3422a7b590b3Smrg  /* target_name transforms -- use actual target program name; might have lt- prefix */
3423a7b590b3Smrg  target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
3424a7b590b3Smrg  strendzap (target_name, ".exe");
3425a7b590b3Smrg  tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
3426a7b590b3Smrg  XFREE (target_name);
3427a7b590b3Smrg  target_name = tmp_pathspec;
3428a7b590b3Smrg  tmp_pathspec = 0;
3429a7b590b3Smrg
3430a7b590b3Smrg  LTWRAPPER_DEBUGPRINTF (("(main) libtool target name: %s\n",
3431a7b590b3Smrg			  target_name));
3432a7b590b3SmrgEOF
3433943345d3Smrg
3434a7b590b3Smrg	    cat <<EOF
3435a7b590b3Smrg  newargz[0] =
3436a7b590b3Smrg    XMALLOC (char, (strlen (actual_cwrapper_path) +
3437a7b590b3Smrg		    strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
3438a7b590b3Smrg  strcpy (newargz[0], actual_cwrapper_path);
3439a7b590b3Smrg  strcat (newargz[0], "$objdir");
3440a7b590b3Smrg  strcat (newargz[0], "/");
3441a7b590b3SmrgEOF
3442943345d3Smrg
3443a7b590b3Smrg	    cat <<"EOF"
3444a7b590b3Smrg  /* stop here, and copy so we don't have to do this twice */
3445a7b590b3Smrg  tmp_pathspec = xstrdup (newargz[0]);
3446943345d3Smrg
3447a7b590b3Smrg  /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
3448a7b590b3Smrg  strcat (newargz[0], actual_cwrapper_name);
3449943345d3Smrg
3450a7b590b3Smrg  /* DO want the lt- prefix here if it exists, so use target_name */
3451a7b590b3Smrg  lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
3452a7b590b3Smrg  XFREE (tmp_pathspec);
3453a7b590b3Smrg  tmp_pathspec = NULL;
3454a7b590b3SmrgEOF
3455943345d3Smrg
3456a7b590b3Smrg	    case $host_os in
3457a7b590b3Smrg	      mingw*)
3458a7b590b3Smrg	    cat <<"EOF"
3459a7b590b3Smrg  {
3460a7b590b3Smrg    char* p;
3461a7b590b3Smrg    while ((p = strchr (newargz[0], '\\')) != NULL)
3462a7b590b3Smrg      {
3463a7b590b3Smrg	*p = '/';
3464a7b590b3Smrg      }
3465a7b590b3Smrg    while ((p = strchr (lt_argv_zero, '\\')) != NULL)
3466a7b590b3Smrg      {
3467a7b590b3Smrg	*p = '/';
3468a7b590b3Smrg      }
3469a7b590b3Smrg  }
3470a7b590b3SmrgEOF
3471a7b590b3Smrg	    ;;
3472a7b590b3Smrg	    esac
3473943345d3Smrg
3474a7b590b3Smrg	    cat <<"EOF"
3475a7b590b3Smrg  XFREE (target_name);
3476a7b590b3Smrg  XFREE (actual_cwrapper_path);
3477a7b590b3Smrg  XFREE (actual_cwrapper_name);
3478943345d3Smrg
3479a7b590b3Smrg  lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
3480a7b590b3Smrg  lt_setenv ("DUALCASE", "1");  /* for MSK sh */
3481a7b590b3Smrg  lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
3482a7b590b3Smrg  lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
3483943345d3Smrg
3484a7b590b3Smrg  newargc=0;
3485a7b590b3Smrg  for (i = 1; i < argc; i++)
3486a7b590b3Smrg    {
3487a7b590b3Smrg      if (strncmp (argv[i], env_set_opt, env_set_opt_len) == 0)
3488a7b590b3Smrg        {
3489a7b590b3Smrg          if (argv[i][env_set_opt_len] == '=')
3490a7b590b3Smrg            {
3491a7b590b3Smrg              const char *p = argv[i] + env_set_opt_len + 1;
3492a7b590b3Smrg              lt_opt_process_env_set (p);
3493a7b590b3Smrg            }
3494a7b590b3Smrg          else if (argv[i][env_set_opt_len] == '\0' && i + 1 < argc)
3495a7b590b3Smrg            {
3496a7b590b3Smrg              lt_opt_process_env_set (argv[++i]); /* don't copy */
3497a7b590b3Smrg            }
3498a7b590b3Smrg          else
3499a7b590b3Smrg            lt_fatal ("%s missing required argument", env_set_opt);
3500a7b590b3Smrg          continue;
3501a7b590b3Smrg        }
3502a7b590b3Smrg      if (strncmp (argv[i], env_prepend_opt, env_prepend_opt_len) == 0)
3503a7b590b3Smrg        {
3504a7b590b3Smrg          if (argv[i][env_prepend_opt_len] == '=')
3505a7b590b3Smrg            {
3506a7b590b3Smrg              const char *p = argv[i] + env_prepend_opt_len + 1;
3507a7b590b3Smrg              lt_opt_process_env_prepend (p);
3508a7b590b3Smrg            }
3509a7b590b3Smrg          else if (argv[i][env_prepend_opt_len] == '\0' && i + 1 < argc)
3510a7b590b3Smrg            {
3511a7b590b3Smrg              lt_opt_process_env_prepend (argv[++i]); /* don't copy */
3512a7b590b3Smrg            }
3513a7b590b3Smrg          else
3514a7b590b3Smrg            lt_fatal ("%s missing required argument", env_prepend_opt);
3515a7b590b3Smrg          continue;
3516a7b590b3Smrg        }
3517a7b590b3Smrg      if (strncmp (argv[i], env_append_opt, env_append_opt_len) == 0)
3518a7b590b3Smrg        {
3519a7b590b3Smrg          if (argv[i][env_append_opt_len] == '=')
3520a7b590b3Smrg            {
3521a7b590b3Smrg              const char *p = argv[i] + env_append_opt_len + 1;
3522a7b590b3Smrg              lt_opt_process_env_append (p);
3523a7b590b3Smrg            }
3524a7b590b3Smrg          else if (argv[i][env_append_opt_len] == '\0' && i + 1 < argc)
3525a7b590b3Smrg            {
3526a7b590b3Smrg              lt_opt_process_env_append (argv[++i]); /* don't copy */
3527a7b590b3Smrg            }
3528a7b590b3Smrg          else
3529a7b590b3Smrg            lt_fatal ("%s missing required argument", env_append_opt);
3530a7b590b3Smrg          continue;
3531a7b590b3Smrg        }
3532a7b590b3Smrg      if (strncmp (argv[i], ltwrapper_option_prefix, opt_prefix_len) == 0)
3533a7b590b3Smrg        {
3534a7b590b3Smrg          /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
3535a7b590b3Smrg             namespace, but it is not one of the ones we know about and
3536a7b590b3Smrg             have already dealt with, above (inluding dump-script), then
3537a7b590b3Smrg             report an error. Otherwise, targets might begin to believe
3538a7b590b3Smrg             they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
3539a7b590b3Smrg             namespace. The first time any user complains about this, we'll
3540a7b590b3Smrg             need to make LTWRAPPER_OPTION_PREFIX a configure-time option
3541a7b590b3Smrg             or a configure.ac-settable value.
3542a7b590b3Smrg           */
3543a7b590b3Smrg          lt_fatal ("Unrecognized option in %s namespace: '%s'",
3544a7b590b3Smrg                    ltwrapper_option_prefix, argv[i]);
3545a7b590b3Smrg        }
3546a7b590b3Smrg      /* otherwise ... */
3547a7b590b3Smrg      newargz[++newargc] = xstrdup (argv[i]);
3548a7b590b3Smrg    }
3549a7b590b3Smrg  newargz[++newargc] = NULL;
3550943345d3Smrg
3551a7b590b3Smrg  LTWRAPPER_DEBUGPRINTF     (("(main) lt_argv_zero : %s\n", (lt_argv_zero ? lt_argv_zero : "<NULL>")));
3552a7b590b3Smrg  for (i = 0; i < newargc; i++)
3553a7b590b3Smrg    {
3554a7b590b3Smrg      LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d]   : %s\n", i, (newargz[i] ? newargz[i] : "<NULL>")));
3555a7b590b3Smrg    }
3556943345d3Smrg
3557a7b590b3SmrgEOF
3558943345d3Smrg
3559a7b590b3Smrg	    case $host_os in
3560a7b590b3Smrg	      mingw*)
3561a7b590b3Smrg		cat <<"EOF"
3562a7b590b3Smrg  /* execv doesn't actually work on mingw as expected on unix */
3563a7b590b3Smrg  rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
3564a7b590b3Smrg  if (rval == -1)
3565a7b590b3Smrg    {
3566a7b590b3Smrg      /* failed to start process */
3567a7b590b3Smrg      LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, errno));
3568a7b590b3Smrg      return 127;
3569a7b590b3Smrg    }
3570a7b590b3Smrg  return rval;
3571a7b590b3SmrgEOF
3572a7b590b3Smrg		;;
3573a7b590b3Smrg	      *)
3574a7b590b3Smrg		cat <<"EOF"
3575a7b590b3Smrg  execv (lt_argv_zero, newargz);
3576a7b590b3Smrg  return rval; /* =127, but avoids unused variable warning */
3577a7b590b3SmrgEOF
3578a7b590b3Smrg		;;
3579a7b590b3Smrg	    esac
3580943345d3Smrg
3581a7b590b3Smrg	    cat <<"EOF"
3582a7b590b3Smrg}
3583943345d3Smrg
3584a7b590b3Smrgvoid *
3585a7b590b3Smrgxmalloc (size_t num)
3586a7b590b3Smrg{
3587a7b590b3Smrg  void *p = (void *) malloc (num);
3588a7b590b3Smrg  if (!p)
3589a7b590b3Smrg    lt_fatal ("Memory exhausted");
3590943345d3Smrg
3591a7b590b3Smrg  return p;
3592a7b590b3Smrg}
3593943345d3Smrg
3594a7b590b3Smrgchar *
3595a7b590b3Smrgxstrdup (const char *string)
3596a7b590b3Smrg{
3597a7b590b3Smrg  return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
3598a7b590b3Smrg			  string) : NULL;
3599a7b590b3Smrg}
3600943345d3Smrg
3601a7b590b3Smrgconst char *
3602a7b590b3Smrgbase_name (const char *name)
3603a7b590b3Smrg{
3604a7b590b3Smrg  const char *base;
3605943345d3Smrg
3606a7b590b3Smrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
3607a7b590b3Smrg  /* Skip over the disk name in MSDOS pathnames. */
3608a7b590b3Smrg  if (isalpha ((unsigned char) name[0]) && name[1] == ':')
3609a7b590b3Smrg    name += 2;
3610a7b590b3Smrg#endif
3611943345d3Smrg
3612a7b590b3Smrg  for (base = name; *name; name++)
3613a7b590b3Smrg    if (IS_DIR_SEPARATOR (*name))
3614a7b590b3Smrg      base = name + 1;
3615a7b590b3Smrg  return base;
3616a7b590b3Smrg}
3617943345d3Smrg
3618a7b590b3Smrgint
3619a7b590b3Smrgcheck_executable (const char *path)
3620a7b590b3Smrg{
3621a7b590b3Smrg  struct stat st;
3622943345d3Smrg
3623a7b590b3Smrg  LTWRAPPER_DEBUGPRINTF (("(check_executable)  : %s\n",
3624a7b590b3Smrg			  path ? (*path ? path : "EMPTY!") : "NULL!"));
3625a7b590b3Smrg  if ((!path) || (!*path))
3626a7b590b3Smrg    return 0;
3627943345d3Smrg
3628a7b590b3Smrg  if ((stat (path, &st) >= 0)
3629a7b590b3Smrg      && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
3630a7b590b3Smrg    return 1;
3631a7b590b3Smrg  else
3632a7b590b3Smrg    return 0;
3633a7b590b3Smrg}
3634943345d3Smrg
3635a7b590b3Smrgint
3636a7b590b3Smrgmake_executable (const char *path)
3637a7b590b3Smrg{
3638a7b590b3Smrg  int rval = 0;
3639a7b590b3Smrg  struct stat st;
3640943345d3Smrg
3641a7b590b3Smrg  LTWRAPPER_DEBUGPRINTF (("(make_executable)   : %s\n",
3642a7b590b3Smrg			  path ? (*path ? path : "EMPTY!") : "NULL!"));
3643a7b590b3Smrg  if ((!path) || (!*path))
3644a7b590b3Smrg    return 0;
3645943345d3Smrg
3646a7b590b3Smrg  if (stat (path, &st) >= 0)
3647a7b590b3Smrg    {
3648a7b590b3Smrg      rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
3649a7b590b3Smrg    }
3650a7b590b3Smrg  return rval;
3651a7b590b3Smrg}
3652943345d3Smrg
3653a7b590b3Smrg/* Searches for the full path of the wrapper.  Returns
3654a7b590b3Smrg   newly allocated full path name if found, NULL otherwise
3655a7b590b3Smrg   Does not chase symlinks, even on platforms that support them.
3656a7b590b3Smrg*/
3657a7b590b3Smrgchar *
3658a7b590b3Smrgfind_executable (const char *wrapper)
3659a7b590b3Smrg{
3660a7b590b3Smrg  int has_slash = 0;
3661a7b590b3Smrg  const char *p;
3662a7b590b3Smrg  const char *p_next;
3663a7b590b3Smrg  /* static buffer for getcwd */
3664a7b590b3Smrg  char tmp[LT_PATHMAX + 1];
3665a7b590b3Smrg  int tmp_len;
3666a7b590b3Smrg  char *concat_name;
3667943345d3Smrg
3668a7b590b3Smrg  LTWRAPPER_DEBUGPRINTF (("(find_executable)   : %s\n",
3669a7b590b3Smrg			  wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!"));
3670943345d3Smrg
3671a7b590b3Smrg  if ((wrapper == NULL) || (*wrapper == '\0'))
3672a7b590b3Smrg    return NULL;
3673943345d3Smrg
3674a7b590b3Smrg  /* Absolute path? */
3675a7b590b3Smrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
3676a7b590b3Smrg  if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
3677a7b590b3Smrg    {
3678a7b590b3Smrg      concat_name = xstrdup (wrapper);
3679a7b590b3Smrg      if (check_executable (concat_name))
3680a7b590b3Smrg	return concat_name;
3681a7b590b3Smrg      XFREE (concat_name);
3682a7b590b3Smrg    }
3683a7b590b3Smrg  else
3684a7b590b3Smrg    {
3685a7b590b3Smrg#endif
3686a7b590b3Smrg      if (IS_DIR_SEPARATOR (wrapper[0]))
3687a7b590b3Smrg	{
3688a7b590b3Smrg	  concat_name = xstrdup (wrapper);
3689a7b590b3Smrg	  if (check_executable (concat_name))
3690a7b590b3Smrg	    return concat_name;
3691a7b590b3Smrg	  XFREE (concat_name);
3692a7b590b3Smrg	}
3693a7b590b3Smrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
3694a7b590b3Smrg    }
3695a7b590b3Smrg#endif
3696943345d3Smrg
3697a7b590b3Smrg  for (p = wrapper; *p; p++)
3698a7b590b3Smrg    if (*p == '/')
3699a7b590b3Smrg      {
3700a7b590b3Smrg	has_slash = 1;
3701a7b590b3Smrg	break;
3702a7b590b3Smrg      }
3703a7b590b3Smrg  if (!has_slash)
3704a7b590b3Smrg    {
3705a7b590b3Smrg      /* no slashes; search PATH */
3706a7b590b3Smrg      const char *path = getenv ("PATH");
3707a7b590b3Smrg      if (path != NULL)
3708a7b590b3Smrg	{
3709a7b590b3Smrg	  for (p = path; *p; p = p_next)
3710a7b590b3Smrg	    {
3711a7b590b3Smrg	      const char *q;
3712a7b590b3Smrg	      size_t p_len;
3713a7b590b3Smrg	      for (q = p; *q; q++)
3714a7b590b3Smrg		if (IS_PATH_SEPARATOR (*q))
3715a7b590b3Smrg		  break;
3716a7b590b3Smrg	      p_len = q - p;
3717a7b590b3Smrg	      p_next = (*q == '\0' ? q : q + 1);
3718a7b590b3Smrg	      if (p_len == 0)
3719a7b590b3Smrg		{
3720a7b590b3Smrg		  /* empty path: current directory */
3721a7b590b3Smrg		  if (getcwd (tmp, LT_PATHMAX) == NULL)
3722a7b590b3Smrg		    lt_fatal ("getcwd failed");
3723a7b590b3Smrg		  tmp_len = strlen (tmp);
3724a7b590b3Smrg		  concat_name =
3725a7b590b3Smrg		    XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
3726a7b590b3Smrg		  memcpy (concat_name, tmp, tmp_len);
3727a7b590b3Smrg		  concat_name[tmp_len] = '/';
3728a7b590b3Smrg		  strcpy (concat_name + tmp_len + 1, wrapper);
3729a7b590b3Smrg		}
3730a7b590b3Smrg	      else
3731a7b590b3Smrg		{
3732a7b590b3Smrg		  concat_name =
3733a7b590b3Smrg		    XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
3734a7b590b3Smrg		  memcpy (concat_name, p, p_len);
3735a7b590b3Smrg		  concat_name[p_len] = '/';
3736a7b590b3Smrg		  strcpy (concat_name + p_len + 1, wrapper);
3737a7b590b3Smrg		}
3738a7b590b3Smrg	      if (check_executable (concat_name))
3739a7b590b3Smrg		return concat_name;
3740a7b590b3Smrg	      XFREE (concat_name);
3741a7b590b3Smrg	    }
3742a7b590b3Smrg	}
3743a7b590b3Smrg      /* not found in PATH; assume curdir */
3744a7b590b3Smrg    }
3745a7b590b3Smrg  /* Relative path | not found in path: prepend cwd */
3746a7b590b3Smrg  if (getcwd (tmp, LT_PATHMAX) == NULL)
3747a7b590b3Smrg    lt_fatal ("getcwd failed");
3748a7b590b3Smrg  tmp_len = strlen (tmp);
3749a7b590b3Smrg  concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
3750a7b590b3Smrg  memcpy (concat_name, tmp, tmp_len);
3751a7b590b3Smrg  concat_name[tmp_len] = '/';
3752a7b590b3Smrg  strcpy (concat_name + tmp_len + 1, wrapper);
3753943345d3Smrg
3754a7b590b3Smrg  if (check_executable (concat_name))
3755a7b590b3Smrg    return concat_name;
3756a7b590b3Smrg  XFREE (concat_name);
3757a7b590b3Smrg  return NULL;
3758a7b590b3Smrg}
3759943345d3Smrg
3760a7b590b3Smrgchar *
3761a7b590b3Smrgchase_symlinks (const char *pathspec)
3762a7b590b3Smrg{
3763a7b590b3Smrg#ifndef S_ISLNK
3764a7b590b3Smrg  return xstrdup (pathspec);
3765a7b590b3Smrg#else
3766a7b590b3Smrg  char buf[LT_PATHMAX];
3767a7b590b3Smrg  struct stat s;
3768a7b590b3Smrg  char *tmp_pathspec = xstrdup (pathspec);
3769a7b590b3Smrg  char *p;
3770a7b590b3Smrg  int has_symlinks = 0;
3771a7b590b3Smrg  while (strlen (tmp_pathspec) && !has_symlinks)
3772a7b590b3Smrg    {
3773a7b590b3Smrg      LTWRAPPER_DEBUGPRINTF (("checking path component for symlinks: %s\n",
3774a7b590b3Smrg			      tmp_pathspec));
3775a7b590b3Smrg      if (lstat (tmp_pathspec, &s) == 0)
3776a7b590b3Smrg	{
3777a7b590b3Smrg	  if (S_ISLNK (s.st_mode) != 0)
3778a7b590b3Smrg	    {
3779a7b590b3Smrg	      has_symlinks = 1;
3780a7b590b3Smrg	      break;
3781a7b590b3Smrg	    }
3782943345d3Smrg
3783a7b590b3Smrg	  /* search backwards for last DIR_SEPARATOR */
3784a7b590b3Smrg	  p = tmp_pathspec + strlen (tmp_pathspec) - 1;
3785a7b590b3Smrg	  while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
3786a7b590b3Smrg	    p--;
3787a7b590b3Smrg	  if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
3788a7b590b3Smrg	    {
3789a7b590b3Smrg	      /* no more DIR_SEPARATORS left */
3790a7b590b3Smrg	      break;
3791a7b590b3Smrg	    }
3792a7b590b3Smrg	  *p = '\0';
3793a7b590b3Smrg	}
3794a7b590b3Smrg      else
3795a7b590b3Smrg	{
3796a7b590b3Smrg	  char *errstr = strerror (errno);
3797a7b590b3Smrg	  lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr);
3798a7b590b3Smrg	}
3799a7b590b3Smrg    }
3800a7b590b3Smrg  XFREE (tmp_pathspec);
3801943345d3Smrg
3802a7b590b3Smrg  if (!has_symlinks)
3803a7b590b3Smrg    {
3804a7b590b3Smrg      return xstrdup (pathspec);
3805a7b590b3Smrg    }
3806943345d3Smrg
3807a7b590b3Smrg  tmp_pathspec = realpath (pathspec, buf);
3808a7b590b3Smrg  if (tmp_pathspec == 0)
3809a7b590b3Smrg    {
3810a7b590b3Smrg      lt_fatal ("Could not follow symlinks for %s", pathspec);
3811a7b590b3Smrg    }
3812a7b590b3Smrg  return xstrdup (tmp_pathspec);
3813a7b590b3Smrg#endif
3814a7b590b3Smrg}
3815943345d3Smrg
3816a7b590b3Smrgchar *
3817a7b590b3Smrgstrendzap (char *str, const char *pat)
3818a7b590b3Smrg{
3819a7b590b3Smrg  size_t len, patlen;
3820943345d3Smrg
3821a7b590b3Smrg  assert (str != NULL);
3822a7b590b3Smrg  assert (pat != NULL);
3823943345d3Smrg
3824a7b590b3Smrg  len = strlen (str);
3825a7b590b3Smrg  patlen = strlen (pat);
3826943345d3Smrg
3827a7b590b3Smrg  if (patlen <= len)
3828a7b590b3Smrg    {
3829a7b590b3Smrg      str += len - patlen;
3830a7b590b3Smrg      if (strcmp (str, pat) == 0)
3831a7b590b3Smrg	*str = '\0';
3832a7b590b3Smrg    }
3833a7b590b3Smrg  return str;
3834a7b590b3Smrg}
3835943345d3Smrg
3836a7b590b3Smrgstatic void
3837a7b590b3Smrglt_error_core (int exit_status, const char *mode,
3838a7b590b3Smrg	       const char *message, va_list ap)
3839a7b590b3Smrg{
3840a7b590b3Smrg  fprintf (stderr, "%s: %s: ", program_name, mode);
3841a7b590b3Smrg  vfprintf (stderr, message, ap);
3842a7b590b3Smrg  fprintf (stderr, ".\n");
3843943345d3Smrg
3844a7b590b3Smrg  if (exit_status >= 0)
3845a7b590b3Smrg    exit (exit_status);
3846a7b590b3Smrg}
3847943345d3Smrg
3848a7b590b3Smrgvoid
3849a7b590b3Smrglt_fatal (const char *message, ...)
3850a7b590b3Smrg{
3851a7b590b3Smrg  va_list ap;
3852a7b590b3Smrg  va_start (ap, message);
3853a7b590b3Smrg  lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
3854a7b590b3Smrg  va_end (ap);
3855a7b590b3Smrg}
3856943345d3Smrg
3857a7b590b3Smrgvoid
3858a7b590b3Smrglt_setenv (const char *name, const char *value)
3859a7b590b3Smrg{
3860a7b590b3Smrg  LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n",
3861a7b590b3Smrg                          (name ? name : "<NULL>"),
3862a7b590b3Smrg                          (value ? value : "<NULL>")));
3863a7b590b3Smrg  {
3864a7b590b3Smrg#ifdef HAVE_SETENV
3865a7b590b3Smrg    /* always make a copy, for consistency with !HAVE_SETENV */
3866a7b590b3Smrg    char *str = xstrdup (value);
3867a7b590b3Smrg    setenv (name, str, 1);
3868a7b590b3Smrg#else
3869a7b590b3Smrg    int len = strlen (name) + 1 + strlen (value) + 1;
3870a7b590b3Smrg    char *str = XMALLOC (char, len);
3871a7b590b3Smrg    sprintf (str, "%s=%s", name, value);
3872a7b590b3Smrg    if (putenv (str) != EXIT_SUCCESS)
3873a7b590b3Smrg      {
3874a7b590b3Smrg        XFREE (str);
3875a7b590b3Smrg      }
3876a7b590b3Smrg#endif
3877a7b590b3Smrg  }
3878a7b590b3Smrg}
3879943345d3Smrg
3880a7b590b3Smrgchar *
3881a7b590b3Smrglt_extend_str (const char *orig_value, const char *add, int to_end)
3882a7b590b3Smrg{
3883a7b590b3Smrg  char *new_value;
3884a7b590b3Smrg  if (orig_value && *orig_value)
3885a7b590b3Smrg    {
3886a7b590b3Smrg      int orig_value_len = strlen (orig_value);
3887a7b590b3Smrg      int add_len = strlen (add);
3888a7b590b3Smrg      new_value = XMALLOC (char, add_len + orig_value_len + 1);
3889a7b590b3Smrg      if (to_end)
3890a7b590b3Smrg        {
3891a7b590b3Smrg          strcpy (new_value, orig_value);
3892a7b590b3Smrg          strcpy (new_value + orig_value_len, add);
3893a7b590b3Smrg        }
3894a7b590b3Smrg      else
3895a7b590b3Smrg        {
3896a7b590b3Smrg          strcpy (new_value, add);
3897a7b590b3Smrg          strcpy (new_value + add_len, orig_value);
3898a7b590b3Smrg        }
3899a7b590b3Smrg    }
3900a7b590b3Smrg  else
3901a7b590b3Smrg    {
3902a7b590b3Smrg      new_value = xstrdup (add);
3903a7b590b3Smrg    }
3904a7b590b3Smrg  return new_value;
3905a7b590b3Smrg}
3906943345d3Smrg
3907a7b590b3Smrgint
3908a7b590b3Smrglt_split_name_value (const char *arg, char** name, char** value)
3909a7b590b3Smrg{
3910a7b590b3Smrg  const char *p;
3911a7b590b3Smrg  int len;
3912a7b590b3Smrg  if (!arg || !*arg)
3913a7b590b3Smrg    return 1;
3914943345d3Smrg
3915a7b590b3Smrg  p = strchr (arg, (int)'=');
3916943345d3Smrg
3917a7b590b3Smrg  if (!p)
3918a7b590b3Smrg    return 1;
3919943345d3Smrg
3920a7b590b3Smrg  *value = xstrdup (++p);
3921943345d3Smrg
3922a7b590b3Smrg  len = strlen (arg) - strlen (*value);
3923a7b590b3Smrg  *name = XMALLOC (char, len);
3924a7b590b3Smrg  strncpy (*name, arg, len-1);
3925a7b590b3Smrg  (*name)[len - 1] = '\0';
3926943345d3Smrg
3927a7b590b3Smrg  return 0;
3928a7b590b3Smrg}
3929943345d3Smrg
3930a7b590b3Smrgvoid
3931a7b590b3Smrglt_opt_process_env_set (const char *arg)
3932a7b590b3Smrg{
3933a7b590b3Smrg  char *name = NULL;
3934a7b590b3Smrg  char *value = NULL;
3935943345d3Smrg
3936a7b590b3Smrg  if (lt_split_name_value (arg, &name, &value) != 0)
3937a7b590b3Smrg    {
3938a7b590b3Smrg      XFREE (name);
3939a7b590b3Smrg      XFREE (value);
3940a7b590b3Smrg      lt_fatal ("bad argument for %s: '%s'", env_set_opt, arg);
3941a7b590b3Smrg    }
3942943345d3Smrg
3943a7b590b3Smrg  lt_setenv (name, value);
3944a7b590b3Smrg  XFREE (name);
3945a7b590b3Smrg  XFREE (value);
3946a7b590b3Smrg}
3947943345d3Smrg
3948a7b590b3Smrgvoid
3949a7b590b3Smrglt_opt_process_env_prepend (const char *arg)
3950a7b590b3Smrg{
3951a7b590b3Smrg  char *name = NULL;
3952a7b590b3Smrg  char *value = NULL;
3953a7b590b3Smrg  char *new_value = NULL;
3954943345d3Smrg
3955a7b590b3Smrg  if (lt_split_name_value (arg, &name, &value) != 0)
3956a7b590b3Smrg    {
3957a7b590b3Smrg      XFREE (name);
3958a7b590b3Smrg      XFREE (value);
3959a7b590b3Smrg      lt_fatal ("bad argument for %s: '%s'", env_prepend_opt, arg);
3960a7b590b3Smrg    }
3961943345d3Smrg
3962a7b590b3Smrg  new_value = lt_extend_str (getenv (name), value, 0);
3963a7b590b3Smrg  lt_setenv (name, new_value);
3964a7b590b3Smrg  XFREE (new_value);
3965a7b590b3Smrg  XFREE (name);
3966a7b590b3Smrg  XFREE (value);
3967a7b590b3Smrg}
3968943345d3Smrg
3969a7b590b3Smrgvoid
3970a7b590b3Smrglt_opt_process_env_append (const char *arg)
3971a7b590b3Smrg{
3972a7b590b3Smrg  char *name = NULL;
3973a7b590b3Smrg  char *value = NULL;
3974a7b590b3Smrg  char *new_value = NULL;
3975943345d3Smrg
3976a7b590b3Smrg  if (lt_split_name_value (arg, &name, &value) != 0)
3977a7b590b3Smrg    {
3978a7b590b3Smrg      XFREE (name);
3979a7b590b3Smrg      XFREE (value);
3980a7b590b3Smrg      lt_fatal ("bad argument for %s: '%s'", env_append_opt, arg);
3981a7b590b3Smrg    }
3982943345d3Smrg
3983a7b590b3Smrg  new_value = lt_extend_str (getenv (name), value, 1);
3984a7b590b3Smrg  lt_setenv (name, new_value);
3985a7b590b3Smrg  XFREE (new_value);
3986a7b590b3Smrg  XFREE (name);
3987a7b590b3Smrg  XFREE (value);
3988a7b590b3Smrg}
3989943345d3Smrg
3990a7b590b3Smrgvoid
3991a7b590b3Smrglt_update_exe_path (const char *name, const char *value)
3992a7b590b3Smrg{
3993a7b590b3Smrg  LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
3994a7b590b3Smrg                          (name ? name : "<NULL>"),
3995a7b590b3Smrg                          (value ? value : "<NULL>")));
3996943345d3Smrg
3997a7b590b3Smrg  if (name && *name && value && *value)
3998a7b590b3Smrg    {
3999a7b590b3Smrg      char *new_value = lt_extend_str (getenv (name), value, 0);
4000a7b590b3Smrg      /* some systems can't cope with a ':'-terminated path #' */
4001a7b590b3Smrg      int len = strlen (new_value);
4002a7b590b3Smrg      while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
4003a7b590b3Smrg        {
4004a7b590b3Smrg          new_value[len-1] = '\0';
4005a7b590b3Smrg        }
4006a7b590b3Smrg      lt_setenv (name, new_value);
4007a7b590b3Smrg      XFREE (new_value);
4008a7b590b3Smrg    }
4009a7b590b3Smrg}
4010943345d3Smrg
4011a7b590b3Smrgvoid
4012a7b590b3Smrglt_update_lib_path (const char *name, const char *value)
4013a7b590b3Smrg{
4014a7b590b3Smrg  LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
4015a7b590b3Smrg                          (name ? name : "<NULL>"),
4016a7b590b3Smrg                          (value ? value : "<NULL>")));
4017943345d3Smrg
4018a7b590b3Smrg  if (name && *name && value && *value)
4019a7b590b3Smrg    {
4020a7b590b3Smrg      char *new_value = lt_extend_str (getenv (name), value, 0);
4021a7b590b3Smrg      lt_setenv (name, new_value);
4022a7b590b3Smrg      XFREE (new_value);
4023a7b590b3Smrg    }
4024a7b590b3Smrg}
4025943345d3Smrg
4026943345d3Smrg
4027a7b590b3SmrgEOF
4028a7b590b3Smrg}
4029a7b590b3Smrg# end: func_emit_cwrapperexe_src
4030943345d3Smrg
4031a7b590b3Smrg# func_mode_link arg...
4032a7b590b3Smrgfunc_mode_link ()
4033a7b590b3Smrg{
4034a7b590b3Smrg    $opt_debug
4035a7b590b3Smrg    case $host in
4036a7b590b3Smrg    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
4037a7b590b3Smrg      # It is impossible to link a dll without this setting, and
4038a7b590b3Smrg      # we shouldn't force the makefile maintainer to figure out
4039a7b590b3Smrg      # which system we are compiling for in order to pass an extra
4040a7b590b3Smrg      # flag for every libtool invocation.
4041a7b590b3Smrg      # allow_undefined=no
4042943345d3Smrg
4043a7b590b3Smrg      # FIXME: Unfortunately, there are problems with the above when trying
4044a7b590b3Smrg      # to make a dll which has undefined symbols, in which case not
4045a7b590b3Smrg      # even a static library is built.  For now, we need to specify
4046a7b590b3Smrg      # -no-undefined on the libtool link line when we can be certain
4047a7b590b3Smrg      # that all symbols are satisfied, otherwise we get a static library.
4048a7b590b3Smrg      allow_undefined=yes
4049a7b590b3Smrg      ;;
4050a7b590b3Smrg    *)
4051a7b590b3Smrg      allow_undefined=yes
4052a7b590b3Smrg      ;;
4053a7b590b3Smrg    esac
4054a7b590b3Smrg    libtool_args=$nonopt
4055a7b590b3Smrg    base_compile="$nonopt $@"
4056a7b590b3Smrg    compile_command=$nonopt
4057a7b590b3Smrg    finalize_command=$nonopt
4058943345d3Smrg
4059a7b590b3Smrg    compile_rpath=
4060a7b590b3Smrg    finalize_rpath=
4061a7b590b3Smrg    compile_shlibpath=
4062a7b590b3Smrg    finalize_shlibpath=
4063a7b590b3Smrg    convenience=
4064a7b590b3Smrg    old_convenience=
4065a7b590b3Smrg    deplibs=
4066a7b590b3Smrg    old_deplibs=
4067a7b590b3Smrg    compiler_flags=
4068a7b590b3Smrg    linker_flags=
4069a7b590b3Smrg    dllsearchpath=
4070a7b590b3Smrg    lib_search_path=`pwd`
4071a7b590b3Smrg    inst_prefix_dir=
4072a7b590b3Smrg    new_inherited_linker_flags=
4073943345d3Smrg
4074a7b590b3Smrg    avoid_version=no
4075a7b590b3Smrg    dlfiles=
4076a7b590b3Smrg    dlprefiles=
4077a7b590b3Smrg    dlself=no
4078a7b590b3Smrg    export_dynamic=no
4079a7b590b3Smrg    export_symbols=
4080a7b590b3Smrg    export_symbols_regex=
4081a7b590b3Smrg    generated=
4082a7b590b3Smrg    libobjs=
4083a7b590b3Smrg    ltlibs=
4084a7b590b3Smrg    module=no
4085a7b590b3Smrg    no_install=no
4086a7b590b3Smrg    objs=
4087a7b590b3Smrg    non_pic_objects=
4088a7b590b3Smrg    precious_files_regex=
4089a7b590b3Smrg    prefer_static_libs=no
4090a7b590b3Smrg    preload=no
4091a7b590b3Smrg    prev=
4092a7b590b3Smrg    prevarg=
4093a7b590b3Smrg    release=
4094a7b590b3Smrg    rpath=
4095a7b590b3Smrg    xrpath=
4096a7b590b3Smrg    perm_rpath=
4097a7b590b3Smrg    temp_rpath=
4098a7b590b3Smrg    thread_safe=no
4099a7b590b3Smrg    vinfo=
4100a7b590b3Smrg    vinfo_number=no
4101a7b590b3Smrg    weak_libs=
4102a7b590b3Smrg    single_module="${wl}-single_module"
4103a7b590b3Smrg    func_infer_tag $base_compile
4104a7b590b3Smrg
4105a7b590b3Smrg    # We need to know -static, to get the right output filenames.
4106a7b590b3Smrg    for arg
4107a7b590b3Smrg    do
4108a7b590b3Smrg      case $arg in
4109a7b590b3Smrg      -shared)
4110a7b590b3Smrg	test "$build_libtool_libs" != yes && \
4111a7b590b3Smrg	  func_fatal_configuration "can not build a shared library"
4112a7b590b3Smrg	build_old_libs=no
4113a7b590b3Smrg	break
4114a7b590b3Smrg	;;
4115a7b590b3Smrg      -all-static | -static | -static-libtool-libs)
4116a7b590b3Smrg	case $arg in
4117a7b590b3Smrg	-all-static)
4118a7b590b3Smrg	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
4119a7b590b3Smrg	    func_warning "complete static linking is impossible in this configuration"
4120a7b590b3Smrg	  fi
4121a7b590b3Smrg	  if test -n "$link_static_flag"; then
4122a7b590b3Smrg	    dlopen_self=$dlopen_self_static
4123a7b590b3Smrg	  fi
4124a7b590b3Smrg	  prefer_static_libs=yes
4125a7b590b3Smrg	  ;;
4126a7b590b3Smrg	-static)
4127a7b590b3Smrg	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
4128a7b590b3Smrg	    dlopen_self=$dlopen_self_static
4129a7b590b3Smrg	  fi
4130a7b590b3Smrg	  prefer_static_libs=built
4131a7b590b3Smrg	  ;;
4132a7b590b3Smrg	-static-libtool-libs)
4133a7b590b3Smrg	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
4134a7b590b3Smrg	    dlopen_self=$dlopen_self_static
4135943345d3Smrg	  fi
4136a7b590b3Smrg	  prefer_static_libs=yes
4137a7b590b3Smrg	  ;;
4138a7b590b3Smrg	esac
4139a7b590b3Smrg	build_libtool_libs=no
4140a7b590b3Smrg	build_old_libs=yes
4141a7b590b3Smrg	break
4142a7b590b3Smrg	;;
4143a7b590b3Smrg      esac
4144a7b590b3Smrg    done
4145943345d3Smrg
4146a7b590b3Smrg    # See if our shared archives depend on static archives.
4147a7b590b3Smrg    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
4148943345d3Smrg
4149a7b590b3Smrg    # Go through the arguments, transforming them on the way.
4150a7b590b3Smrg    while test "$#" -gt 0; do
4151a7b590b3Smrg      arg="$1"
4152a7b590b3Smrg      shift
4153a7b590b3Smrg      func_quote_for_eval "$arg"
4154a7b590b3Smrg      qarg=$func_quote_for_eval_unquoted_result
4155a7b590b3Smrg      func_append libtool_args " $func_quote_for_eval_result"
4156943345d3Smrg
4157a7b590b3Smrg      # If the previous option needs an argument, assign it.
4158a7b590b3Smrg      if test -n "$prev"; then
4159a7b590b3Smrg	case $prev in
4160a7b590b3Smrg	output)
4161a7b590b3Smrg	  func_append compile_command " @OUTPUT@"
4162a7b590b3Smrg	  func_append finalize_command " @OUTPUT@"
4163a7b590b3Smrg	  ;;
4164a7b590b3Smrg	esac
4165943345d3Smrg
4166a7b590b3Smrg	case $prev in
4167a7b590b3Smrg	dlfiles|dlprefiles)
4168a7b590b3Smrg	  if test "$preload" = no; then
4169a7b590b3Smrg	    # Add the symbol object into the linking commands.
4170a7b590b3Smrg	    func_append compile_command " @SYMFILE@"
4171a7b590b3Smrg	    func_append finalize_command " @SYMFILE@"
4172a7b590b3Smrg	    preload=yes
4173a7b590b3Smrg	  fi
4174a7b590b3Smrg	  case $arg in
4175a7b590b3Smrg	  *.la | *.lo) ;;  # We handle these cases below.
4176a7b590b3Smrg	  force)
4177a7b590b3Smrg	    if test "$dlself" = no; then
4178a7b590b3Smrg	      dlself=needless
4179a7b590b3Smrg	      export_dynamic=yes
4180a7b590b3Smrg	    fi
4181a7b590b3Smrg	    prev=
4182a7b590b3Smrg	    continue
4183a7b590b3Smrg	    ;;
4184a7b590b3Smrg	  self)
4185a7b590b3Smrg	    if test "$prev" = dlprefiles; then
4186a7b590b3Smrg	      dlself=yes
4187a7b590b3Smrg	    elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
4188a7b590b3Smrg	      dlself=yes
4189943345d3Smrg	    else
4190a7b590b3Smrg	      dlself=needless
4191a7b590b3Smrg	      export_dynamic=yes
4192943345d3Smrg	    fi
4193a7b590b3Smrg	    prev=
4194a7b590b3Smrg	    continue
4195a7b590b3Smrg	    ;;
4196a7b590b3Smrg	  *)
4197a7b590b3Smrg	    if test "$prev" = dlfiles; then
4198a7b590b3Smrg	      dlfiles="$dlfiles $arg"
4199943345d3Smrg	    else
4200a7b590b3Smrg	      dlprefiles="$dlprefiles $arg"
4201943345d3Smrg	    fi
4202a7b590b3Smrg	    prev=
4203a7b590b3Smrg	    continue
4204a7b590b3Smrg	    ;;
4205a7b590b3Smrg	  esac
4206a7b590b3Smrg	  ;;
4207a7b590b3Smrg	expsyms)
4208a7b590b3Smrg	  export_symbols="$arg"
4209a7b590b3Smrg	  test -f "$arg" \
4210a7b590b3Smrg	    || func_fatal_error "symbol file \`$arg' does not exist"
4211a7b590b3Smrg	  prev=
4212a7b590b3Smrg	  continue
4213a7b590b3Smrg	  ;;
4214a7b590b3Smrg	expsyms_regex)
4215a7b590b3Smrg	  export_symbols_regex="$arg"
4216a7b590b3Smrg	  prev=
4217a7b590b3Smrg	  continue
4218a7b590b3Smrg	  ;;
4219a7b590b3Smrg	framework)
4220943345d3Smrg	  case $host in
4221a7b590b3Smrg	    *-*-darwin*)
4222a7b590b3Smrg	      case "$deplibs " in
4223a7b590b3Smrg		*" $qarg.ltframework "*) ;;
4224a7b590b3Smrg		*) deplibs="$deplibs $qarg.ltframework" # this is fixed later
4225a7b590b3Smrg		   ;;
4226a7b590b3Smrg	      esac
4227a7b590b3Smrg	      ;;
4228943345d3Smrg	  esac
4229a7b590b3Smrg	  prev=
4230a7b590b3Smrg	  continue
4231943345d3Smrg	  ;;
4232a7b590b3Smrg	inst_prefix)
4233a7b590b3Smrg	  inst_prefix_dir="$arg"
4234a7b590b3Smrg	  prev=
4235a7b590b3Smrg	  continue
4236943345d3Smrg	  ;;
4237a7b590b3Smrg	objectlist)
4238a7b590b3Smrg	  if test -f "$arg"; then
4239a7b590b3Smrg	    save_arg=$arg
4240a7b590b3Smrg	    moreargs=
4241a7b590b3Smrg	    for fil in `cat "$save_arg"`
4242a7b590b3Smrg	    do
4243a7b590b3Smrg#	      moreargs="$moreargs $fil"
4244a7b590b3Smrg	      arg=$fil
4245a7b590b3Smrg	      # A libtool-controlled object.
4246943345d3Smrg
4247a7b590b3Smrg	      # Check to see that this really is a libtool object.
4248a7b590b3Smrg	      if func_lalib_unsafe_p "$arg"; then
4249a7b590b3Smrg		pic_object=
4250a7b590b3Smrg		non_pic_object=
4251943345d3Smrg
4252a7b590b3Smrg		# Read the .lo file
4253a7b590b3Smrg		func_source "$arg"
4254943345d3Smrg
4255a7b590b3Smrg		if test -z "$pic_object" ||
4256a7b590b3Smrg		   test -z "$non_pic_object" ||
4257a7b590b3Smrg		   test "$pic_object" = none &&
4258a7b590b3Smrg		   test "$non_pic_object" = none; then
4259a7b590b3Smrg		  func_fatal_error "cannot find name of object for \`$arg'"
4260a7b590b3Smrg		fi
4261943345d3Smrg
4262a7b590b3Smrg		# Extract subdirectory from the argument.
4263a7b590b3Smrg		func_dirname "$arg" "/" ""
4264a7b590b3Smrg		xdir="$func_dirname_result"
4265943345d3Smrg
4266a7b590b3Smrg		if test "$pic_object" != none; then
4267a7b590b3Smrg		  # Prepend the subdirectory the object is found in.
4268a7b590b3Smrg		  pic_object="$xdir$pic_object"
4269943345d3Smrg
4270a7b590b3Smrg		  if test "$prev" = dlfiles; then
4271a7b590b3Smrg		    if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
4272a7b590b3Smrg		      dlfiles="$dlfiles $pic_object"
4273a7b590b3Smrg		      prev=
4274a7b590b3Smrg		      continue
4275a7b590b3Smrg		    else
4276a7b590b3Smrg		      # If libtool objects are unsupported, then we need to preload.
4277a7b590b3Smrg		      prev=dlprefiles
4278a7b590b3Smrg		    fi
4279a7b590b3Smrg		  fi
4280943345d3Smrg
4281a7b590b3Smrg		  # CHECK ME:  I think I busted this.  -Ossama
4282a7b590b3Smrg		  if test "$prev" = dlprefiles; then
4283a7b590b3Smrg		    # Preload the old-style object.
4284a7b590b3Smrg		    dlprefiles="$dlprefiles $pic_object"
4285a7b590b3Smrg		    prev=
4286a7b590b3Smrg		  fi
4287943345d3Smrg
4288a7b590b3Smrg		  # A PIC object.
4289a7b590b3Smrg		  func_append libobjs " $pic_object"
4290a7b590b3Smrg		  arg="$pic_object"
4291a7b590b3Smrg		fi
4292943345d3Smrg
4293a7b590b3Smrg		# Non-PIC object.
4294a7b590b3Smrg		if test "$non_pic_object" != none; then
4295a7b590b3Smrg		  # Prepend the subdirectory the object is found in.
4296a7b590b3Smrg		  non_pic_object="$xdir$non_pic_object"
4297943345d3Smrg
4298a7b590b3Smrg		  # A standard non-PIC object
4299a7b590b3Smrg		  func_append non_pic_objects " $non_pic_object"
4300a7b590b3Smrg		  if test -z "$pic_object" || test "$pic_object" = none ; then
4301a7b590b3Smrg		    arg="$non_pic_object"
4302a7b590b3Smrg		  fi
4303a7b590b3Smrg		else
4304a7b590b3Smrg		  # If the PIC object exists, use it instead.
4305a7b590b3Smrg		  # $xdir was prepended to $pic_object above.
4306a7b590b3Smrg		  non_pic_object="$pic_object"
4307a7b590b3Smrg		  func_append non_pic_objects " $non_pic_object"
4308a7b590b3Smrg		fi
4309a7b590b3Smrg	      else
4310a7b590b3Smrg		# Only an error if not doing a dry-run.
4311a7b590b3Smrg		if $opt_dry_run; then
4312a7b590b3Smrg		  # Extract subdirectory from the argument.
4313a7b590b3Smrg		  func_dirname "$arg" "/" ""
4314a7b590b3Smrg		  xdir="$func_dirname_result"
4315a7b590b3Smrg
4316a7b590b3Smrg		  func_lo2o "$arg"
4317a7b590b3Smrg		  pic_object=$xdir$objdir/$func_lo2o_result
4318a7b590b3Smrg		  non_pic_object=$xdir$func_lo2o_result
4319a7b590b3Smrg		  func_append libobjs " $pic_object"
4320a7b590b3Smrg		  func_append non_pic_objects " $non_pic_object"
4321a7b590b3Smrg	        else
4322a7b590b3Smrg		  func_fatal_error "\`$arg' is not a valid libtool object"
4323a7b590b3Smrg		fi
4324a7b590b3Smrg	      fi
4325a7b590b3Smrg	    done
4326943345d3Smrg	  else
4327a7b590b3Smrg	    func_fatal_error "link input file \`$arg' does not exist"
4328943345d3Smrg	  fi
4329a7b590b3Smrg	  arg=$save_arg
4330a7b590b3Smrg	  prev=
4331a7b590b3Smrg	  continue
4332a7b590b3Smrg	  ;;
4333a7b590b3Smrg	precious_regex)
4334a7b590b3Smrg	  precious_files_regex="$arg"
4335a7b590b3Smrg	  prev=
4336a7b590b3Smrg	  continue
4337a7b590b3Smrg	  ;;
4338a7b590b3Smrg	release)
4339a7b590b3Smrg	  release="-$arg"
4340a7b590b3Smrg	  prev=
4341a7b590b3Smrg	  continue
4342a7b590b3Smrg	  ;;
4343a7b590b3Smrg	rpath | xrpath)
4344a7b590b3Smrg	  # We need an absolute path.
4345a7b590b3Smrg	  case $arg in
4346a7b590b3Smrg	  [\\/]* | [A-Za-z]:[\\/]*) ;;
4347a7b590b3Smrg	  *)
4348a7b590b3Smrg	    func_fatal_error "only absolute run-paths are allowed"
4349a7b590b3Smrg	    ;;
4350a7b590b3Smrg	  esac
4351a7b590b3Smrg	  if test "$prev" = rpath; then
4352a7b590b3Smrg	    case "$rpath " in
4353a7b590b3Smrg	    *" $arg "*) ;;
4354a7b590b3Smrg	    *) rpath="$rpath $arg" ;;
4355a7b590b3Smrg	    esac
4356943345d3Smrg	  else
4357a7b590b3Smrg	    case "$xrpath " in
4358a7b590b3Smrg	    *" $arg "*) ;;
4359a7b590b3Smrg	    *) xrpath="$xrpath $arg" ;;
4360a7b590b3Smrg	    esac
4361943345d3Smrg	  fi
4362a7b590b3Smrg	  prev=
4363a7b590b3Smrg	  continue
4364a7b590b3Smrg	  ;;
4365a7b590b3Smrg	shrext)
4366a7b590b3Smrg	  shrext_cmds="$arg"
4367a7b590b3Smrg	  prev=
4368a7b590b3Smrg	  continue
4369a7b590b3Smrg	  ;;
4370a7b590b3Smrg	weak)
4371a7b590b3Smrg	  weak_libs="$weak_libs $arg"
4372a7b590b3Smrg	  prev=
4373a7b590b3Smrg	  continue
4374a7b590b3Smrg	  ;;
4375a7b590b3Smrg	xcclinker)
4376a7b590b3Smrg	  linker_flags="$linker_flags $qarg"
4377a7b590b3Smrg	  compiler_flags="$compiler_flags $qarg"
4378a7b590b3Smrg	  prev=
4379a7b590b3Smrg	  func_append compile_command " $qarg"
4380a7b590b3Smrg	  func_append finalize_command " $qarg"
4381a7b590b3Smrg	  continue
4382a7b590b3Smrg	  ;;
4383a7b590b3Smrg	xcompiler)
4384a7b590b3Smrg	  compiler_flags="$compiler_flags $qarg"
4385a7b590b3Smrg	  prev=
4386a7b590b3Smrg	  func_append compile_command " $qarg"
4387a7b590b3Smrg	  func_append finalize_command " $qarg"
4388a7b590b3Smrg	  continue
4389a7b590b3Smrg	  ;;
4390a7b590b3Smrg	xlinker)
4391a7b590b3Smrg	  linker_flags="$linker_flags $qarg"
4392a7b590b3Smrg	  compiler_flags="$compiler_flags $wl$qarg"
4393a7b590b3Smrg	  prev=
4394a7b590b3Smrg	  func_append compile_command " $wl$qarg"
4395a7b590b3Smrg	  func_append finalize_command " $wl$qarg"
4396a7b590b3Smrg	  continue
4397a7b590b3Smrg	  ;;
4398a7b590b3Smrg	*)
4399a7b590b3Smrg	  eval "$prev=\"\$arg\""
4400a7b590b3Smrg	  prev=
4401a7b590b3Smrg	  continue
4402a7b590b3Smrg	  ;;
4403943345d3Smrg	esac
4404a7b590b3Smrg      fi # test -n "$prev"
4405943345d3Smrg
4406a7b590b3Smrg      prevarg="$arg"
4407943345d3Smrg
4408a7b590b3Smrg      case $arg in
4409a7b590b3Smrg      -all-static)
4410a7b590b3Smrg	if test -n "$link_static_flag"; then
4411a7b590b3Smrg	  # See comment for -static flag below, for more details.
4412a7b590b3Smrg	  func_append compile_command " $link_static_flag"
4413a7b590b3Smrg	  func_append finalize_command " $link_static_flag"
4414a7b590b3Smrg	fi
4415a7b590b3Smrg	continue
4416a7b590b3Smrg	;;
4417943345d3Smrg
4418a7b590b3Smrg      -allow-undefined)
4419a7b590b3Smrg	# FIXME: remove this flag sometime in the future.
4420a7b590b3Smrg	func_fatal_error "\`-allow-undefined' must not be used because it is the default"
4421a7b590b3Smrg	;;
4422943345d3Smrg
4423a7b590b3Smrg      -avoid-version)
4424a7b590b3Smrg	avoid_version=yes
4425a7b590b3Smrg	continue
4426a7b590b3Smrg	;;
4427943345d3Smrg
4428a7b590b3Smrg      -dlopen)
4429a7b590b3Smrg	prev=dlfiles
4430a7b590b3Smrg	continue
4431a7b590b3Smrg	;;
4432943345d3Smrg
4433a7b590b3Smrg      -dlpreopen)
4434a7b590b3Smrg	prev=dlprefiles
4435a7b590b3Smrg	continue
4436a7b590b3Smrg	;;
4437943345d3Smrg
4438a7b590b3Smrg      -export-dynamic)
4439a7b590b3Smrg	export_dynamic=yes
4440a7b590b3Smrg	continue
4441a7b590b3Smrg	;;
4442943345d3Smrg
4443a7b590b3Smrg      -export-symbols | -export-symbols-regex)
4444a7b590b3Smrg	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
4445a7b590b3Smrg	  func_fatal_error "more than one -exported-symbols argument is not allowed"
4446a7b590b3Smrg	fi
4447a7b590b3Smrg	if test "X$arg" = "X-export-symbols"; then
4448a7b590b3Smrg	  prev=expsyms
4449a7b590b3Smrg	else
4450a7b590b3Smrg	  prev=expsyms_regex
4451a7b590b3Smrg	fi
4452a7b590b3Smrg	continue
4453a7b590b3Smrg	;;
4454943345d3Smrg
4455a7b590b3Smrg      -framework)
4456a7b590b3Smrg	prev=framework
4457a7b590b3Smrg	continue
4458a7b590b3Smrg	;;
4459943345d3Smrg
4460a7b590b3Smrg      -inst-prefix-dir)
4461a7b590b3Smrg	prev=inst_prefix
4462a7b590b3Smrg	continue
4463a7b590b3Smrg	;;
4464943345d3Smrg
4465a7b590b3Smrg      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
4466a7b590b3Smrg      # so, if we see these flags be careful not to treat them like -L
4467a7b590b3Smrg      -L[A-Z][A-Z]*:*)
4468a7b590b3Smrg	case $with_gcc/$host in
4469a7b590b3Smrg	no/*-*-irix* | /*-*-irix*)
4470a7b590b3Smrg	  func_append compile_command " $arg"
4471a7b590b3Smrg	  func_append finalize_command " $arg"
4472a7b590b3Smrg	  ;;
4473a7b590b3Smrg	esac
4474a7b590b3Smrg	continue
4475a7b590b3Smrg	;;
4476943345d3Smrg
4477a7b590b3Smrg      -L*)
4478a7b590b3Smrg	func_stripname '-L' '' "$arg"
4479a7b590b3Smrg	dir=$func_stripname_result
4480a7b590b3Smrg	if test -z "$dir"; then
4481a7b590b3Smrg	  if test "$#" -gt 0; then
4482a7b590b3Smrg	    func_fatal_error "require no space between \`-L' and \`$1'"
4483a7b590b3Smrg	  else
4484a7b590b3Smrg	    func_fatal_error "need path for \`-L' option"
4485a7b590b3Smrg	  fi
4486a7b590b3Smrg	fi
4487a7b590b3Smrg	# We need an absolute path.
4488a7b590b3Smrg	case $dir in
4489a7b590b3Smrg	[\\/]* | [A-Za-z]:[\\/]*) ;;
4490a7b590b3Smrg	*)
4491a7b590b3Smrg	  absdir=`cd "$dir" && pwd`
4492a7b590b3Smrg	  test -z "$absdir" && \
4493a7b590b3Smrg	    func_fatal_error "cannot determine absolute directory name of \`$dir'"
4494a7b590b3Smrg	  dir="$absdir"
4495a7b590b3Smrg	  ;;
4496a7b590b3Smrg	esac
4497a7b590b3Smrg	case "$deplibs " in
4498a7b590b3Smrg	*" -L$dir "*) ;;
4499a7b590b3Smrg	*)
4500a7b590b3Smrg	  deplibs="$deplibs -L$dir"
4501a7b590b3Smrg	  lib_search_path="$lib_search_path $dir"
4502a7b590b3Smrg	  ;;
4503a7b590b3Smrg	esac
4504a7b590b3Smrg	case $host in
4505a7b590b3Smrg	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
4506a7b590b3Smrg	  testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'`
4507a7b590b3Smrg	  case :$dllsearchpath: in
4508a7b590b3Smrg	  *":$dir:"*) ;;
4509a7b590b3Smrg	  ::) dllsearchpath=$dir;;
4510a7b590b3Smrg	  *) dllsearchpath="$dllsearchpath:$dir";;
4511a7b590b3Smrg	  esac
4512a7b590b3Smrg	  case :$dllsearchpath: in
4513a7b590b3Smrg	  *":$testbindir:"*) ;;
4514a7b590b3Smrg	  ::) dllsearchpath=$testbindir;;
4515a7b590b3Smrg	  *) dllsearchpath="$dllsearchpath:$testbindir";;
4516a7b590b3Smrg	  esac
4517a7b590b3Smrg	  ;;
4518a7b590b3Smrg	esac
4519a7b590b3Smrg	continue
4520a7b590b3Smrg	;;
4521943345d3Smrg
4522a7b590b3Smrg      -l*)
4523a7b590b3Smrg	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
4524a7b590b3Smrg	  case $host in
4525a7b590b3Smrg	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc*)
4526a7b590b3Smrg	    # These systems don't actually have a C or math library (as such)
4527a7b590b3Smrg	    continue
4528a7b590b3Smrg	    ;;
4529a7b590b3Smrg	  *-*-os2*)
4530a7b590b3Smrg	    # These systems don't actually have a C library (as such)
4531a7b590b3Smrg	    test "X$arg" = "X-lc" && continue
4532a7b590b3Smrg	    ;;
4533a7b590b3Smrg	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
4534a7b590b3Smrg	    # Do not include libc due to us having libc/libc_r.
4535a7b590b3Smrg	    test "X$arg" = "X-lc" && continue
4536a7b590b3Smrg	    ;;
4537a7b590b3Smrg	  *-*-rhapsody* | *-*-darwin1.[012])
4538a7b590b3Smrg	    # Rhapsody C and math libraries are in the System framework
4539a7b590b3Smrg	    deplibs="$deplibs System.ltframework"
4540a7b590b3Smrg	    continue
4541a7b590b3Smrg	    ;;
4542a7b590b3Smrg	  *-*-sco3.2v5* | *-*-sco5v6*)
4543a7b590b3Smrg	    # Causes problems with __ctype
4544a7b590b3Smrg	    test "X$arg" = "X-lc" && continue
4545a7b590b3Smrg	    ;;
4546a7b590b3Smrg	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
4547a7b590b3Smrg	    # Compiler inserts libc in the correct place for threads to work
4548a7b590b3Smrg	    test "X$arg" = "X-lc" && continue
4549a7b590b3Smrg	    ;;
4550a7b590b3Smrg	  esac
4551a7b590b3Smrg	elif test "X$arg" = "X-lc_r"; then
4552a7b590b3Smrg	 case $host in
4553a7b590b3Smrg	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
4554a7b590b3Smrg	   # Do not include libc_r directly, use -pthread flag.
4555a7b590b3Smrg	   continue
4556a7b590b3Smrg	   ;;
4557a7b590b3Smrg	 esac
4558a7b590b3Smrg	fi
4559a7b590b3Smrg	deplibs="$deplibs $arg"
4560a7b590b3Smrg	continue
4561a7b590b3Smrg	;;
4562943345d3Smrg
4563a7b590b3Smrg      -module)
4564a7b590b3Smrg	module=yes
4565a7b590b3Smrg	continue
4566a7b590b3Smrg	;;
4567943345d3Smrg
4568a7b590b3Smrg      # Tru64 UNIX uses -model [arg] to determine the layout of C++
4569a7b590b3Smrg      # classes, name mangling, and exception handling.
4570a7b590b3Smrg      # Darwin uses the -arch flag to determine output architecture.
4571a7b590b3Smrg      -model|-arch|-isysroot)
4572a7b590b3Smrg	compiler_flags="$compiler_flags $arg"
4573a7b590b3Smrg	func_append compile_command " $arg"
4574a7b590b3Smrg	func_append finalize_command " $arg"
4575a7b590b3Smrg	prev=xcompiler
4576a7b590b3Smrg	continue
4577a7b590b3Smrg	;;
4578943345d3Smrg
4579a7b590b3Smrg      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
4580a7b590b3Smrg	compiler_flags="$compiler_flags $arg"
4581a7b590b3Smrg	func_append compile_command " $arg"
4582a7b590b3Smrg	func_append finalize_command " $arg"
4583a7b590b3Smrg	case "$new_inherited_linker_flags " in
4584a7b590b3Smrg	    *" $arg "*) ;;
4585a7b590b3Smrg	    * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;;
4586a7b590b3Smrg	esac
4587a7b590b3Smrg	continue
4588a7b590b3Smrg	;;
4589943345d3Smrg
4590a7b590b3Smrg      -multi_module)
4591a7b590b3Smrg	single_module="${wl}-multi_module"
4592a7b590b3Smrg	continue
4593a7b590b3Smrg	;;
4594943345d3Smrg
4595a7b590b3Smrg      -no-fast-install)
4596a7b590b3Smrg	fast_install=no
4597a7b590b3Smrg	continue
4598a7b590b3Smrg	;;
4599943345d3Smrg
4600a7b590b3Smrg      -no-install)
4601a7b590b3Smrg	case $host in
4602a7b590b3Smrg	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
4603a7b590b3Smrg	  # The PATH hackery in wrapper scripts is required on Windows
4604a7b590b3Smrg	  # and Darwin in order for the loader to find any dlls it needs.
4605a7b590b3Smrg	  func_warning "\`-no-install' is ignored for $host"
4606a7b590b3Smrg	  func_warning "assuming \`-no-fast-install' instead"
4607a7b590b3Smrg	  fast_install=no
4608a7b590b3Smrg	  ;;
4609a7b590b3Smrg	*) no_install=yes ;;
4610a7b590b3Smrg	esac
4611a7b590b3Smrg	continue
4612a7b590b3Smrg	;;
4613943345d3Smrg
4614a7b590b3Smrg      -no-undefined)
4615a7b590b3Smrg	allow_undefined=no
4616a7b590b3Smrg	continue
4617a7b590b3Smrg	;;
4618943345d3Smrg
4619a7b590b3Smrg      -objectlist)
4620a7b590b3Smrg	prev=objectlist
4621a7b590b3Smrg	continue
4622a7b590b3Smrg	;;
4623943345d3Smrg
4624a7b590b3Smrg      -o) prev=output ;;
4625943345d3Smrg
4626a7b590b3Smrg      -precious-files-regex)
4627a7b590b3Smrg	prev=precious_regex
4628a7b590b3Smrg	continue
4629a7b590b3Smrg	;;
4630943345d3Smrg
4631a7b590b3Smrg      -release)
4632a7b590b3Smrg	prev=release
4633a7b590b3Smrg	continue
4634a7b590b3Smrg	;;
4635943345d3Smrg
4636a7b590b3Smrg      -rpath)
4637a7b590b3Smrg	prev=rpath
4638a7b590b3Smrg	continue
4639a7b590b3Smrg	;;
4640943345d3Smrg
4641a7b590b3Smrg      -R)
4642a7b590b3Smrg	prev=xrpath
4643a7b590b3Smrg	continue
4644a7b590b3Smrg	;;
4645943345d3Smrg
4646a7b590b3Smrg      -R*)
4647a7b590b3Smrg	func_stripname '-R' '' "$arg"
4648a7b590b3Smrg	dir=$func_stripname_result
4649a7b590b3Smrg	# We need an absolute path.
4650a7b590b3Smrg	case $dir in
4651a7b590b3Smrg	[\\/]* | [A-Za-z]:[\\/]*) ;;
4652a7b590b3Smrg	*)
4653a7b590b3Smrg	  func_fatal_error "only absolute run-paths are allowed"
4654a7b590b3Smrg	  ;;
4655a7b590b3Smrg	esac
4656a7b590b3Smrg	case "$xrpath " in
4657a7b590b3Smrg	*" $dir "*) ;;
4658a7b590b3Smrg	*) xrpath="$xrpath $dir" ;;
4659a7b590b3Smrg	esac
4660a7b590b3Smrg	continue
4661a7b590b3Smrg	;;
4662943345d3Smrg
4663a7b590b3Smrg      -shared)
4664a7b590b3Smrg	# The effects of -shared are defined in a previous loop.
4665a7b590b3Smrg	continue
4666a7b590b3Smrg	;;
4667943345d3Smrg
4668a7b590b3Smrg      -shrext)
4669a7b590b3Smrg	prev=shrext
4670a7b590b3Smrg	continue
4671a7b590b3Smrg	;;
4672943345d3Smrg
4673a7b590b3Smrg      -static | -static-libtool-libs)
4674a7b590b3Smrg	# The effects of -static are defined in a previous loop.
4675a7b590b3Smrg	# We used to do the same as -all-static on platforms that
4676a7b590b3Smrg	# didn't have a PIC flag, but the assumption that the effects
4677a7b590b3Smrg	# would be equivalent was wrong.  It would break on at least
4678a7b590b3Smrg	# Digital Unix and AIX.
4679a7b590b3Smrg	continue
4680a7b590b3Smrg	;;
4681943345d3Smrg
4682a7b590b3Smrg      -thread-safe)
4683a7b590b3Smrg	thread_safe=yes
4684a7b590b3Smrg	continue
4685a7b590b3Smrg	;;
4686943345d3Smrg
4687a7b590b3Smrg      -version-info)
4688a7b590b3Smrg	prev=vinfo
4689a7b590b3Smrg	continue
4690a7b590b3Smrg	;;
4691943345d3Smrg
4692a7b590b3Smrg      -version-number)
4693a7b590b3Smrg	prev=vinfo
4694a7b590b3Smrg	vinfo_number=yes
4695a7b590b3Smrg	continue
4696a7b590b3Smrg	;;
4697943345d3Smrg
4698a7b590b3Smrg      -weak)
4699a7b590b3Smrg        prev=weak
4700a7b590b3Smrg	continue
4701a7b590b3Smrg	;;
4702943345d3Smrg
4703a7b590b3Smrg      -Wc,*)
4704a7b590b3Smrg	func_stripname '-Wc,' '' "$arg"
4705a7b590b3Smrg	args=$func_stripname_result
4706a7b590b3Smrg	arg=
4707a7b590b3Smrg	save_ifs="$IFS"; IFS=','
4708a7b590b3Smrg	for flag in $args; do
4709a7b590b3Smrg	  IFS="$save_ifs"
4710a7b590b3Smrg          func_quote_for_eval "$flag"
4711a7b590b3Smrg	  arg="$arg $wl$func_quote_for_eval_result"
4712a7b590b3Smrg	  compiler_flags="$compiler_flags $func_quote_for_eval_result"
4713a7b590b3Smrg	done
4714a7b590b3Smrg	IFS="$save_ifs"
4715a7b590b3Smrg	func_stripname ' ' '' "$arg"
4716a7b590b3Smrg	arg=$func_stripname_result
4717a7b590b3Smrg	;;
4718943345d3Smrg
4719a7b590b3Smrg      -Wl,*)
4720a7b590b3Smrg	func_stripname '-Wl,' '' "$arg"
4721a7b590b3Smrg	args=$func_stripname_result
4722a7b590b3Smrg	arg=
4723a7b590b3Smrg	save_ifs="$IFS"; IFS=','
4724a7b590b3Smrg	for flag in $args; do
4725a7b590b3Smrg	  IFS="$save_ifs"
4726a7b590b3Smrg          func_quote_for_eval "$flag"
4727a7b590b3Smrg	  arg="$arg $wl$func_quote_for_eval_result"
4728a7b590b3Smrg	  compiler_flags="$compiler_flags $wl$func_quote_for_eval_result"
4729a7b590b3Smrg	  linker_flags="$linker_flags $func_quote_for_eval_result"
4730a7b590b3Smrg	done
4731a7b590b3Smrg	IFS="$save_ifs"
4732a7b590b3Smrg	func_stripname ' ' '' "$arg"
4733a7b590b3Smrg	arg=$func_stripname_result
4734a7b590b3Smrg	;;
4735943345d3Smrg
4736a7b590b3Smrg      -Xcompiler)
4737a7b590b3Smrg	prev=xcompiler
4738a7b590b3Smrg	continue
4739a7b590b3Smrg	;;
4740943345d3Smrg
4741a7b590b3Smrg      -Xlinker)
4742a7b590b3Smrg	prev=xlinker
4743a7b590b3Smrg	continue
4744a7b590b3Smrg	;;
4745943345d3Smrg
4746a7b590b3Smrg      -XCClinker)
4747a7b590b3Smrg	prev=xcclinker
4748a7b590b3Smrg	continue
4749a7b590b3Smrg	;;
4750943345d3Smrg
4751a7b590b3Smrg      # -msg_* for osf cc
4752a7b590b3Smrg      -msg_*)
4753a7b590b3Smrg	func_quote_for_eval "$arg"
4754a7b590b3Smrg	arg="$func_quote_for_eval_result"
4755a7b590b3Smrg	;;
4756943345d3Smrg
4757a7b590b3Smrg      # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
4758a7b590b3Smrg      # -r[0-9][0-9]* specifies the processor on the SGI compiler
4759a7b590b3Smrg      # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
4760a7b590b3Smrg      # +DA*, +DD* enable 64-bit mode on the HP compiler
4761a7b590b3Smrg      # -q* pass through compiler args for the IBM compiler
4762a7b590b3Smrg      # -m*, -t[45]*, -txscale* pass through architecture-specific
4763a7b590b3Smrg      # compiler args for GCC
4764a7b590b3Smrg      # -F/path gives path to uninstalled frameworks, gcc on darwin
4765a7b590b3Smrg      # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC
4766a7b590b3Smrg      # @file GCC response files
4767a7b590b3Smrg      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
4768a7b590b3Smrg      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*)
4769a7b590b3Smrg        func_quote_for_eval "$arg"
4770a7b590b3Smrg	arg="$func_quote_for_eval_result"
4771a7b590b3Smrg        func_append compile_command " $arg"
4772a7b590b3Smrg        func_append finalize_command " $arg"
4773a7b590b3Smrg        compiler_flags="$compiler_flags $arg"
4774a7b590b3Smrg        continue
4775a7b590b3Smrg        ;;
4776943345d3Smrg
4777a7b590b3Smrg      # Some other compiler flag.
4778a7b590b3Smrg      -* | +*)
4779a7b590b3Smrg        func_quote_for_eval "$arg"
4780a7b590b3Smrg	arg="$func_quote_for_eval_result"
4781a7b590b3Smrg	;;
4782943345d3Smrg
4783a7b590b3Smrg      *.$objext)
4784a7b590b3Smrg	# A standard object.
4785a7b590b3Smrg	objs="$objs $arg"
4786a7b590b3Smrg	;;
4787943345d3Smrg
4788a7b590b3Smrg      *.lo)
4789a7b590b3Smrg	# A libtool-controlled object.
4790943345d3Smrg
4791a7b590b3Smrg	# Check to see that this really is a libtool object.
4792a7b590b3Smrg	if func_lalib_unsafe_p "$arg"; then
4793a7b590b3Smrg	  pic_object=
4794a7b590b3Smrg	  non_pic_object=
4795943345d3Smrg
4796a7b590b3Smrg	  # Read the .lo file
4797a7b590b3Smrg	  func_source "$arg"
4798943345d3Smrg
4799a7b590b3Smrg	  if test -z "$pic_object" ||
4800a7b590b3Smrg	     test -z "$non_pic_object" ||
4801a7b590b3Smrg	     test "$pic_object" = none &&
4802a7b590b3Smrg	     test "$non_pic_object" = none; then
4803a7b590b3Smrg	    func_fatal_error "cannot find name of object for \`$arg'"
4804a7b590b3Smrg	  fi
4805943345d3Smrg
4806a7b590b3Smrg	  # Extract subdirectory from the argument.
4807a7b590b3Smrg	  func_dirname "$arg" "/" ""
4808a7b590b3Smrg	  xdir="$func_dirname_result"
4809f67b85aaSmrg
4810a7b590b3Smrg	  if test "$pic_object" != none; then
4811a7b590b3Smrg	    # Prepend the subdirectory the object is found in.
4812a7b590b3Smrg	    pic_object="$xdir$pic_object"
4813943345d3Smrg
4814a7b590b3Smrg	    if test "$prev" = dlfiles; then
4815a7b590b3Smrg	      if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
4816a7b590b3Smrg		dlfiles="$dlfiles $pic_object"
4817a7b590b3Smrg		prev=
4818a7b590b3Smrg		continue
4819a7b590b3Smrg	      else
4820a7b590b3Smrg		# If libtool objects are unsupported, then we need to preload.
4821a7b590b3Smrg		prev=dlprefiles
4822a7b590b3Smrg	      fi
4823a7b590b3Smrg	    fi
4824943345d3Smrg
4825a7b590b3Smrg	    # CHECK ME:  I think I busted this.  -Ossama
4826a7b590b3Smrg	    if test "$prev" = dlprefiles; then
4827a7b590b3Smrg	      # Preload the old-style object.
4828a7b590b3Smrg	      dlprefiles="$dlprefiles $pic_object"
4829a7b590b3Smrg	      prev=
4830a7b590b3Smrg	    fi
4831943345d3Smrg
4832a7b590b3Smrg	    # A PIC object.
4833a7b590b3Smrg	    func_append libobjs " $pic_object"
4834a7b590b3Smrg	    arg="$pic_object"
4835a7b590b3Smrg	  fi
4836943345d3Smrg
4837a7b590b3Smrg	  # Non-PIC object.
4838a7b590b3Smrg	  if test "$non_pic_object" != none; then
4839a7b590b3Smrg	    # Prepend the subdirectory the object is found in.
4840a7b590b3Smrg	    non_pic_object="$xdir$non_pic_object"
4841943345d3Smrg
4842a7b590b3Smrg	    # A standard non-PIC object
4843a7b590b3Smrg	    func_append non_pic_objects " $non_pic_object"
4844a7b590b3Smrg	    if test -z "$pic_object" || test "$pic_object" = none ; then
4845a7b590b3Smrg	      arg="$non_pic_object"
4846a7b590b3Smrg	    fi
4847a7b590b3Smrg	  else
4848a7b590b3Smrg	    # If the PIC object exists, use it instead.
4849a7b590b3Smrg	    # $xdir was prepended to $pic_object above.
4850a7b590b3Smrg	    non_pic_object="$pic_object"
4851a7b590b3Smrg	    func_append non_pic_objects " $non_pic_object"
4852a7b590b3Smrg	  fi
4853a7b590b3Smrg	else
4854a7b590b3Smrg	  # Only an error if not doing a dry-run.
4855a7b590b3Smrg	  if $opt_dry_run; then
4856a7b590b3Smrg	    # Extract subdirectory from the argument.
4857a7b590b3Smrg	    func_dirname "$arg" "/" ""
4858a7b590b3Smrg	    xdir="$func_dirname_result"
4859a7b590b3Smrg
4860a7b590b3Smrg	    func_lo2o "$arg"
4861a7b590b3Smrg	    pic_object=$xdir$objdir/$func_lo2o_result
4862a7b590b3Smrg	    non_pic_object=$xdir$func_lo2o_result
4863a7b590b3Smrg	    func_append libobjs " $pic_object"
4864a7b590b3Smrg	    func_append non_pic_objects " $non_pic_object"
4865a7b590b3Smrg	  else
4866a7b590b3Smrg	    func_fatal_error "\`$arg' is not a valid libtool object"
4867a7b590b3Smrg	  fi
4868a7b590b3Smrg	fi
4869a7b590b3Smrg	;;
4870943345d3Smrg
4871a7b590b3Smrg      *.$libext)
4872a7b590b3Smrg	# An archive.
4873a7b590b3Smrg	deplibs="$deplibs $arg"
4874a7b590b3Smrg	old_deplibs="$old_deplibs $arg"
4875a7b590b3Smrg	continue
4876a7b590b3Smrg	;;
4877a7b590b3Smrg
4878a7b590b3Smrg      *.la)
4879a7b590b3Smrg	# A libtool-controlled library.
4880a7b590b3Smrg
4881a7b590b3Smrg	if test "$prev" = dlfiles; then
4882a7b590b3Smrg	  # This library was specified with -dlopen.
4883a7b590b3Smrg	  dlfiles="$dlfiles $arg"
4884a7b590b3Smrg	  prev=
4885a7b590b3Smrg	elif test "$prev" = dlprefiles; then
4886a7b590b3Smrg	  # The library was specified with -dlpreopen.
4887a7b590b3Smrg	  dlprefiles="$dlprefiles $arg"
4888a7b590b3Smrg	  prev=
4889a7b590b3Smrg	else
4890a7b590b3Smrg	  deplibs="$deplibs $arg"
4891a7b590b3Smrg	fi
4892a7b590b3Smrg	continue
4893a7b590b3Smrg	;;
4894a7b590b3Smrg
4895a7b590b3Smrg      # Some other compiler argument.
4896a7b590b3Smrg      *)
4897a7b590b3Smrg	# Unknown arguments in both finalize_command and compile_command need
4898a7b590b3Smrg	# to be aesthetically quoted because they are evaled later.
4899a7b590b3Smrg	func_quote_for_eval "$arg"
4900a7b590b3Smrg	arg="$func_quote_for_eval_result"
4901a7b590b3Smrg	;;
4902a7b590b3Smrg      esac # arg
4903a7b590b3Smrg
4904a7b590b3Smrg      # Now actually substitute the argument into the commands.
4905a7b590b3Smrg      if test -n "$arg"; then
4906a7b590b3Smrg	func_append compile_command " $arg"
4907a7b590b3Smrg	func_append finalize_command " $arg"
4908a7b590b3Smrg      fi
4909a7b590b3Smrg    done # argument parsing loop
4910a7b590b3Smrg
4911a7b590b3Smrg    test -n "$prev" && \
4912a7b590b3Smrg      func_fatal_help "the \`$prevarg' option requires an argument"
4913a7b590b3Smrg
4914a7b590b3Smrg    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
4915a7b590b3Smrg      eval arg=\"$export_dynamic_flag_spec\"
4916a7b590b3Smrg      func_append compile_command " $arg"
4917a7b590b3Smrg      func_append finalize_command " $arg"
4918a7b590b3Smrg    fi
4919a7b590b3Smrg
4920a7b590b3Smrg    oldlibs=
4921a7b590b3Smrg    # calculate the name of the file, without its directory
4922a7b590b3Smrg    func_basename "$output"
4923a7b590b3Smrg    outputname="$func_basename_result"
4924a7b590b3Smrg    libobjs_save="$libobjs"
4925a7b590b3Smrg
4926a7b590b3Smrg    if test -n "$shlibpath_var"; then
4927a7b590b3Smrg      # get the directories listed in $shlibpath_var
4928a7b590b3Smrg      eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
4929a7b590b3Smrg    else
4930a7b590b3Smrg      shlib_search_path=
4931a7b590b3Smrg    fi
4932a7b590b3Smrg    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
4933a7b590b3Smrg    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
4934a7b590b3Smrg
4935a7b590b3Smrg    func_dirname "$output" "/" ""
4936a7b590b3Smrg    output_objdir="$func_dirname_result$objdir"
4937a7b590b3Smrg    # Create the object directory.
4938a7b590b3Smrg    func_mkdir_p "$output_objdir"
4939a7b590b3Smrg
4940a7b590b3Smrg    # Determine the type of output
4941a7b590b3Smrg    case $output in
4942a7b590b3Smrg    "")
4943a7b590b3Smrg      func_fatal_help "you must specify an output file"
4944a7b590b3Smrg      ;;
4945a7b590b3Smrg    *.$libext) linkmode=oldlib ;;
4946a7b590b3Smrg    *.lo | *.$objext) linkmode=obj ;;
4947a7b590b3Smrg    *.la) linkmode=lib ;;
4948a7b590b3Smrg    *) linkmode=prog ;; # Anything else should be a program.
4949a7b590b3Smrg    esac
4950a7b590b3Smrg
4951a7b590b3Smrg    specialdeplibs=
4952a7b590b3Smrg
4953a7b590b3Smrg    libs=
4954a7b590b3Smrg    # Find all interdependent deplibs by searching for libraries
4955a7b590b3Smrg    # that are linked more than once (e.g. -la -lb -la)
4956a7b590b3Smrg    for deplib in $deplibs; do
4957a7b590b3Smrg      if $opt_duplicate_deps ; then
4958a7b590b3Smrg	case "$libs " in
4959a7b590b3Smrg	*" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
4960a7b590b3Smrg	esac
4961a7b590b3Smrg      fi
4962a7b590b3Smrg      libs="$libs $deplib"
4963a7b590b3Smrg    done
4964a7b590b3Smrg
4965a7b590b3Smrg    if test "$linkmode" = lib; then
4966a7b590b3Smrg      libs="$predeps $libs $compiler_lib_search_path $postdeps"
4967a7b590b3Smrg
4968a7b590b3Smrg      # Compute libraries that are listed more than once in $predeps
4969a7b590b3Smrg      # $postdeps and mark them as special (i.e., whose duplicates are
4970a7b590b3Smrg      # not to be eliminated).
4971a7b590b3Smrg      pre_post_deps=
4972a7b590b3Smrg      if $opt_duplicate_compiler_generated_deps; then
4973a7b590b3Smrg	for pre_post_dep in $predeps $postdeps; do
4974a7b590b3Smrg	  case "$pre_post_deps " in
4975a7b590b3Smrg	  *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
4976a7b590b3Smrg	  esac
4977a7b590b3Smrg	  pre_post_deps="$pre_post_deps $pre_post_dep"
4978a7b590b3Smrg	done
4979a7b590b3Smrg      fi
4980a7b590b3Smrg      pre_post_deps=
4981a7b590b3Smrg    fi
4982a7b590b3Smrg
4983a7b590b3Smrg    deplibs=
4984a7b590b3Smrg    newdependency_libs=
4985a7b590b3Smrg    newlib_search_path=
4986a7b590b3Smrg    need_relink=no # whether we're linking any uninstalled libtool libraries
4987a7b590b3Smrg    notinst_deplibs= # not-installed libtool libraries
4988a7b590b3Smrg    notinst_path= # paths that contain not-installed libtool libraries
4989a7b590b3Smrg
4990a7b590b3Smrg    case $linkmode in
4991a7b590b3Smrg    lib)
4992a7b590b3Smrg	passes="conv dlpreopen link"
4993a7b590b3Smrg	for file in $dlfiles $dlprefiles; do
4994a7b590b3Smrg	  case $file in
4995a7b590b3Smrg	  *.la) ;;
4996a7b590b3Smrg	  *)
4997a7b590b3Smrg	    func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
4998a7b590b3Smrg	    ;;
4999a7b590b3Smrg	  esac
5000a7b590b3Smrg	done
5001a7b590b3Smrg	;;
5002a7b590b3Smrg    prog)
5003a7b590b3Smrg	compile_deplibs=
5004a7b590b3Smrg	finalize_deplibs=
5005a7b590b3Smrg	alldeplibs=no
5006a7b590b3Smrg	newdlfiles=
5007a7b590b3Smrg	newdlprefiles=
5008a7b590b3Smrg	passes="conv scan dlopen dlpreopen link"
5009a7b590b3Smrg	;;
5010a7b590b3Smrg    *)  passes="conv"
5011a7b590b3Smrg	;;
5012a7b590b3Smrg    esac
5013a7b590b3Smrg
5014a7b590b3Smrg    for pass in $passes; do
5015a7b590b3Smrg      # The preopen pass in lib mode reverses $deplibs; put it back here
5016a7b590b3Smrg      # so that -L comes before libs that need it for instance...
5017a7b590b3Smrg      if test "$linkmode,$pass" = "lib,link"; then
5018a7b590b3Smrg	## FIXME: Find the place where the list is rebuilt in the wrong
5019a7b590b3Smrg	##        order, and fix it there properly
5020a7b590b3Smrg        tmp_deplibs=
5021a7b590b3Smrg	for deplib in $deplibs; do
5022a7b590b3Smrg	  tmp_deplibs="$deplib $tmp_deplibs"
5023a7b590b3Smrg	done
5024a7b590b3Smrg	deplibs="$tmp_deplibs"
5025a7b590b3Smrg      fi
5026a7b590b3Smrg
5027a7b590b3Smrg      if test "$linkmode,$pass" = "lib,link" ||
5028a7b590b3Smrg	 test "$linkmode,$pass" = "prog,scan"; then
5029a7b590b3Smrg	libs="$deplibs"
5030a7b590b3Smrg	deplibs=
5031a7b590b3Smrg      fi
5032a7b590b3Smrg      if test "$linkmode" = prog; then
5033a7b590b3Smrg	case $pass in
5034a7b590b3Smrg	dlopen) libs="$dlfiles" ;;
5035a7b590b3Smrg	dlpreopen) libs="$dlprefiles" ;;
5036a7b590b3Smrg	link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
5037a7b590b3Smrg	esac
5038a7b590b3Smrg      fi
5039a7b590b3Smrg      if test "$linkmode,$pass" = "lib,dlpreopen"; then
5040a7b590b3Smrg	# Collect and forward deplibs of preopened libtool libs
5041a7b590b3Smrg	for lib in $dlprefiles; do
5042a7b590b3Smrg	  # Ignore non-libtool-libs
5043a7b590b3Smrg	  dependency_libs=
5044a7b590b3Smrg	  case $lib in
5045a7b590b3Smrg	  *.la)	func_source "$lib" ;;
5046a7b590b3Smrg	  esac
5047a7b590b3Smrg
5048a7b590b3Smrg	  # Collect preopened libtool deplibs, except any this library
5049a7b590b3Smrg	  # has declared as weak libs
5050a7b590b3Smrg	  for deplib in $dependency_libs; do
5051a7b590b3Smrg            deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"`
5052a7b590b3Smrg	    case " $weak_libs " in
5053a7b590b3Smrg	    *" $deplib_base "*) ;;
5054a7b590b3Smrg	    *) deplibs="$deplibs $deplib" ;;
5055a7b590b3Smrg	    esac
5056a7b590b3Smrg	  done
5057a7b590b3Smrg	done
5058a7b590b3Smrg	libs="$dlprefiles"
5059a7b590b3Smrg      fi
5060a7b590b3Smrg      if test "$pass" = dlopen; then
5061a7b590b3Smrg	# Collect dlpreopened libraries
5062a7b590b3Smrg	save_deplibs="$deplibs"
5063a7b590b3Smrg	deplibs=
5064a7b590b3Smrg      fi
5065a7b590b3Smrg
5066a7b590b3Smrg      for deplib in $libs; do
5067a7b590b3Smrg	lib=
5068a7b590b3Smrg	found=no
5069a7b590b3Smrg	case $deplib in
5070a7b590b3Smrg	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
5071a7b590b3Smrg	  if test "$linkmode,$pass" = "prog,link"; then
5072a7b590b3Smrg	    compile_deplibs="$deplib $compile_deplibs"
5073a7b590b3Smrg	    finalize_deplibs="$deplib $finalize_deplibs"
5074a7b590b3Smrg	  else
5075a7b590b3Smrg	    compiler_flags="$compiler_flags $deplib"
5076a7b590b3Smrg	    if test "$linkmode" = lib ; then
5077a7b590b3Smrg		case "$new_inherited_linker_flags " in
5078a7b590b3Smrg		    *" $deplib "*) ;;
5079a7b590b3Smrg		    * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
5080a7b590b3Smrg		esac
5081a7b590b3Smrg	    fi
5082a7b590b3Smrg	  fi
5083a7b590b3Smrg	  continue
5084a7b590b3Smrg	  ;;
5085a7b590b3Smrg	-l*)
5086a7b590b3Smrg	  if test "$linkmode" != lib && test "$linkmode" != prog; then
5087a7b590b3Smrg	    func_warning "\`-l' is ignored for archives/objects"
5088a7b590b3Smrg	    continue
5089a7b590b3Smrg	  fi
5090a7b590b3Smrg	  func_stripname '-l' '' "$deplib"
5091a7b590b3Smrg	  name=$func_stripname_result
5092a7b590b3Smrg	  if test "$linkmode" = lib; then
5093a7b590b3Smrg	    searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
5094a7b590b3Smrg	  else
5095a7b590b3Smrg	    searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
5096a7b590b3Smrg	  fi
5097a7b590b3Smrg	  for searchdir in $searchdirs; do
5098a7b590b3Smrg	    for search_ext in .la $std_shrext .so .a; do
5099a7b590b3Smrg	      # Search the libtool library
5100a7b590b3Smrg	      lib="$searchdir/lib${name}${search_ext}"
5101a7b590b3Smrg	      if test -f "$lib"; then
5102a7b590b3Smrg		if test "$search_ext" = ".la"; then
5103a7b590b3Smrg		  found=yes
5104a7b590b3Smrg		else
5105a7b590b3Smrg		  found=no
5106a7b590b3Smrg		fi
5107a7b590b3Smrg		break 2
5108a7b590b3Smrg	      fi
5109a7b590b3Smrg	    done
5110a7b590b3Smrg	  done
5111a7b590b3Smrg	  if test "$found" != yes; then
5112a7b590b3Smrg	    # deplib doesn't seem to be a libtool library
5113a7b590b3Smrg	    if test "$linkmode,$pass" = "prog,link"; then
5114a7b590b3Smrg	      compile_deplibs="$deplib $compile_deplibs"
5115a7b590b3Smrg	      finalize_deplibs="$deplib $finalize_deplibs"
5116a7b590b3Smrg	    else
5117a7b590b3Smrg	      deplibs="$deplib $deplibs"
5118a7b590b3Smrg	      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
5119a7b590b3Smrg	    fi
5120a7b590b3Smrg	    continue
5121a7b590b3Smrg	  else # deplib is a libtool library
5122a7b590b3Smrg	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
5123a7b590b3Smrg	    # We need to do some special things here, and not later.
5124a7b590b3Smrg	    if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
5125a7b590b3Smrg	      case " $predeps $postdeps " in
5126a7b590b3Smrg	      *" $deplib "*)
5127a7b590b3Smrg		if func_lalib_p "$lib"; then
5128a7b590b3Smrg		  library_names=
5129a7b590b3Smrg		  old_library=
5130a7b590b3Smrg		  func_source "$lib"
5131a7b590b3Smrg		  for l in $old_library $library_names; do
5132a7b590b3Smrg		    ll="$l"
5133a7b590b3Smrg		  done
5134a7b590b3Smrg		  if test "X$ll" = "X$old_library" ; then # only static version available
5135a7b590b3Smrg		    found=no
5136a7b590b3Smrg		    func_dirname "$lib" "" "."
5137a7b590b3Smrg		    ladir="$func_dirname_result"
5138a7b590b3Smrg		    lib=$ladir/$old_library
5139a7b590b3Smrg		    if test "$linkmode,$pass" = "prog,link"; then
5140a7b590b3Smrg		      compile_deplibs="$deplib $compile_deplibs"
5141a7b590b3Smrg		      finalize_deplibs="$deplib $finalize_deplibs"
5142a7b590b3Smrg		    else
5143a7b590b3Smrg		      deplibs="$deplib $deplibs"
5144a7b590b3Smrg		      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
5145a7b590b3Smrg		    fi
5146a7b590b3Smrg		    continue
5147a7b590b3Smrg		  fi
5148a7b590b3Smrg		fi
5149a7b590b3Smrg		;;
5150a7b590b3Smrg	      *) ;;
5151a7b590b3Smrg	      esac
5152a7b590b3Smrg	    fi
5153a7b590b3Smrg	  fi
5154a7b590b3Smrg	  ;; # -l
5155a7b590b3Smrg	*.ltframework)
5156a7b590b3Smrg	  if test "$linkmode,$pass" = "prog,link"; then
5157a7b590b3Smrg	    compile_deplibs="$deplib $compile_deplibs"
5158a7b590b3Smrg	    finalize_deplibs="$deplib $finalize_deplibs"
5159a7b590b3Smrg	  else
5160a7b590b3Smrg	    deplibs="$deplib $deplibs"
5161a7b590b3Smrg	    if test "$linkmode" = lib ; then
5162a7b590b3Smrg		case "$new_inherited_linker_flags " in
5163a7b590b3Smrg		    *" $deplib "*) ;;
5164a7b590b3Smrg		    * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
5165a7b590b3Smrg		esac
5166a7b590b3Smrg	    fi
5167a7b590b3Smrg	  fi
5168a7b590b3Smrg	  continue
5169a7b590b3Smrg	  ;;
5170a7b590b3Smrg	-L*)
5171a7b590b3Smrg	  case $linkmode in
5172a7b590b3Smrg	  lib)
5173a7b590b3Smrg	    deplibs="$deplib $deplibs"
5174a7b590b3Smrg	    test "$pass" = conv && continue
5175a7b590b3Smrg	    newdependency_libs="$deplib $newdependency_libs"
5176a7b590b3Smrg	    func_stripname '-L' '' "$deplib"
5177a7b590b3Smrg	    newlib_search_path="$newlib_search_path $func_stripname_result"
5178a7b590b3Smrg	    ;;
5179a7b590b3Smrg	  prog)
5180a7b590b3Smrg	    if test "$pass" = conv; then
5181a7b590b3Smrg	      deplibs="$deplib $deplibs"
5182a7b590b3Smrg	      continue
5183a7b590b3Smrg	    fi
5184a7b590b3Smrg	    if test "$pass" = scan; then
5185a7b590b3Smrg	      deplibs="$deplib $deplibs"
5186a7b590b3Smrg	    else
5187a7b590b3Smrg	      compile_deplibs="$deplib $compile_deplibs"
5188a7b590b3Smrg	      finalize_deplibs="$deplib $finalize_deplibs"
5189a7b590b3Smrg	    fi
5190a7b590b3Smrg	    func_stripname '-L' '' "$deplib"
5191a7b590b3Smrg	    newlib_search_path="$newlib_search_path $func_stripname_result"
5192a7b590b3Smrg	    ;;
5193a7b590b3Smrg	  *)
5194a7b590b3Smrg	    func_warning "\`-L' is ignored for archives/objects"
5195a7b590b3Smrg	    ;;
5196a7b590b3Smrg	  esac # linkmode
5197a7b590b3Smrg	  continue
5198a7b590b3Smrg	  ;; # -L
5199a7b590b3Smrg	-R*)
5200a7b590b3Smrg	  if test "$pass" = link; then
5201a7b590b3Smrg	    func_stripname '-R' '' "$deplib"
5202a7b590b3Smrg	    dir=$func_stripname_result
5203a7b590b3Smrg	    # Make sure the xrpath contains only unique directories.
5204a7b590b3Smrg	    case "$xrpath " in
5205a7b590b3Smrg	    *" $dir "*) ;;
5206a7b590b3Smrg	    *) xrpath="$xrpath $dir" ;;
5207a7b590b3Smrg	    esac
5208a7b590b3Smrg	  fi
5209a7b590b3Smrg	  deplibs="$deplib $deplibs"
5210a7b590b3Smrg	  continue
5211a7b590b3Smrg	  ;;
5212a7b590b3Smrg	*.la) lib="$deplib" ;;
5213a7b590b3Smrg	*.$libext)
5214a7b590b3Smrg	  if test "$pass" = conv; then
5215a7b590b3Smrg	    deplibs="$deplib $deplibs"
5216a7b590b3Smrg	    continue
5217a7b590b3Smrg	  fi
5218a7b590b3Smrg	  case $linkmode in
5219a7b590b3Smrg	  lib)
5220a7b590b3Smrg	    # Linking convenience modules into shared libraries is allowed,
5221a7b590b3Smrg	    # but linking other static libraries is non-portable.
5222a7b590b3Smrg	    case " $dlpreconveniencelibs " in
5223a7b590b3Smrg	    *" $deplib "*) ;;
5224a7b590b3Smrg	    *)
5225a7b590b3Smrg	      valid_a_lib=no
5226a7b590b3Smrg	      case $deplibs_check_method in
5227a7b590b3Smrg		match_pattern*)
5228a7b590b3Smrg		  set dummy $deplibs_check_method; shift
5229a7b590b3Smrg		  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
5230a7b590b3Smrg		  if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \
5231a7b590b3Smrg		    | $EGREP "$match_pattern_regex" > /dev/null; then
5232a7b590b3Smrg		    valid_a_lib=yes
5233a7b590b3Smrg		  fi
5234a7b590b3Smrg		;;
5235a7b590b3Smrg		pass_all)
5236a7b590b3Smrg		  valid_a_lib=yes
5237a7b590b3Smrg		;;
5238a7b590b3Smrg	      esac
5239a7b590b3Smrg	      if test "$valid_a_lib" != yes; then
5240a7b590b3Smrg		$ECHO
5241a7b590b3Smrg		$ECHO "*** Warning: Trying to link with static lib archive $deplib."
5242a7b590b3Smrg		$ECHO "*** I have the capability to make that library automatically link in when"
5243a7b590b3Smrg		$ECHO "*** you link to this library.  But I can only do this if you have a"
5244a7b590b3Smrg		$ECHO "*** shared version of the library, which you do not appear to have"
5245a7b590b3Smrg		$ECHO "*** because the file extensions .$libext of this argument makes me believe"
5246a7b590b3Smrg		$ECHO "*** that it is just a static archive that I should not use here."
5247a7b590b3Smrg	      else
5248a7b590b3Smrg		$ECHO
5249a7b590b3Smrg		$ECHO "*** Warning: Linking the shared library $output against the"
5250a7b590b3Smrg		$ECHO "*** static library $deplib is not portable!"
5251a7b590b3Smrg		deplibs="$deplib $deplibs"
5252a7b590b3Smrg	      fi
5253a7b590b3Smrg	      ;;
5254a7b590b3Smrg	    esac
5255a7b590b3Smrg	    continue
5256a7b590b3Smrg	    ;;
5257a7b590b3Smrg	  prog)
5258a7b590b3Smrg	    if test "$pass" != link; then
5259a7b590b3Smrg	      deplibs="$deplib $deplibs"
5260a7b590b3Smrg	    else
5261a7b590b3Smrg	      compile_deplibs="$deplib $compile_deplibs"
5262a7b590b3Smrg	      finalize_deplibs="$deplib $finalize_deplibs"
5263a7b590b3Smrg	    fi
5264a7b590b3Smrg	    continue
5265a7b590b3Smrg	    ;;
5266a7b590b3Smrg	  esac # linkmode
5267a7b590b3Smrg	  ;; # *.$libext
5268a7b590b3Smrg	*.lo | *.$objext)
5269a7b590b3Smrg	  if test "$pass" = conv; then
5270a7b590b3Smrg	    deplibs="$deplib $deplibs"
5271a7b590b3Smrg	  elif test "$linkmode" = prog; then
5272a7b590b3Smrg	    if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
5273a7b590b3Smrg	      # If there is no dlopen support or we're linking statically,
5274a7b590b3Smrg	      # we need to preload.
5275a7b590b3Smrg	      newdlprefiles="$newdlprefiles $deplib"
5276a7b590b3Smrg	      compile_deplibs="$deplib $compile_deplibs"
5277a7b590b3Smrg	      finalize_deplibs="$deplib $finalize_deplibs"
5278a7b590b3Smrg	    else
5279a7b590b3Smrg	      newdlfiles="$newdlfiles $deplib"
5280a7b590b3Smrg	    fi
5281a7b590b3Smrg	  fi
5282a7b590b3Smrg	  continue
5283a7b590b3Smrg	  ;;
5284a7b590b3Smrg	%DEPLIBS%)
5285a7b590b3Smrg	  alldeplibs=yes
5286a7b590b3Smrg	  continue
5287a7b590b3Smrg	  ;;
5288a7b590b3Smrg	esac # case $deplib
5289a7b590b3Smrg
5290a7b590b3Smrg	if test "$found" = yes || test -f "$lib"; then :
5291a7b590b3Smrg	else
5292a7b590b3Smrg	  func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
5293a7b590b3Smrg	fi
5294a7b590b3Smrg
5295a7b590b3Smrg	# Check to see that this really is a libtool archive.
5296a7b590b3Smrg	func_lalib_unsafe_p "$lib" \
5297a7b590b3Smrg	  || func_fatal_error "\`$lib' is not a valid libtool archive"
5298a7b590b3Smrg
5299a7b590b3Smrg	func_dirname "$lib" "" "."
5300a7b590b3Smrg	ladir="$func_dirname_result"
5301a7b590b3Smrg
5302a7b590b3Smrg	dlname=
5303a7b590b3Smrg	dlopen=
5304a7b590b3Smrg	dlpreopen=
5305a7b590b3Smrg	libdir=
5306a7b590b3Smrg	library_names=
5307a7b590b3Smrg	old_library=
5308a7b590b3Smrg	inherited_linker_flags=
5309a7b590b3Smrg	# If the library was installed with an old release of libtool,
5310a7b590b3Smrg	# it will not redefine variables installed, or shouldnotlink
5311a7b590b3Smrg	installed=yes
5312a7b590b3Smrg	shouldnotlink=no
5313a7b590b3Smrg	avoidtemprpath=
5314a7b590b3Smrg
5315a7b590b3Smrg
5316a7b590b3Smrg	# Read the .la file
5317a7b590b3Smrg	func_source "$lib"
5318a7b590b3Smrg
5319a7b590b3Smrg	# Convert "-framework foo" to "foo.ltframework"
5320a7b590b3Smrg	if test -n "$inherited_linker_flags"; then
5321a7b590b3Smrg	  tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'`
5322a7b590b3Smrg	  for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
5323a7b590b3Smrg	    case " $new_inherited_linker_flags " in
5324a7b590b3Smrg	      *" $tmp_inherited_linker_flag "*) ;;
5325a7b590b3Smrg	      *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";;
5326a7b590b3Smrg	    esac
5327a7b590b3Smrg	  done
5328a7b590b3Smrg	fi
5329a7b590b3Smrg	dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
5330a7b590b3Smrg	if test "$linkmode,$pass" = "lib,link" ||
5331a7b590b3Smrg	   test "$linkmode,$pass" = "prog,scan" ||
5332a7b590b3Smrg	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then
5333a7b590b3Smrg	  test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
5334a7b590b3Smrg	  test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
5335a7b590b3Smrg	fi
5336a7b590b3Smrg
5337a7b590b3Smrg	if test "$pass" = conv; then
5338a7b590b3Smrg	  # Only check for convenience libraries
5339a7b590b3Smrg	  deplibs="$lib $deplibs"
5340a7b590b3Smrg	  if test -z "$libdir"; then
5341a7b590b3Smrg	    if test -z "$old_library"; then
5342a7b590b3Smrg	      func_fatal_error "cannot find name of link library for \`$lib'"
5343a7b590b3Smrg	    fi
5344a7b590b3Smrg	    # It is a libtool convenience library, so add in its objects.
5345a7b590b3Smrg	    convenience="$convenience $ladir/$objdir/$old_library"
5346a7b590b3Smrg	    old_convenience="$old_convenience $ladir/$objdir/$old_library"
5347a7b590b3Smrg	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
5348a7b590b3Smrg	    func_fatal_error "\`$lib' is not a convenience library"
5349a7b590b3Smrg	  fi
5350a7b590b3Smrg	  tmp_libs=
5351a7b590b3Smrg	  for deplib in $dependency_libs; do
5352a7b590b3Smrg	    deplibs="$deplib $deplibs"
5353a7b590b3Smrg	    if $opt_duplicate_deps ; then
5354a7b590b3Smrg	      case "$tmp_libs " in
5355a7b590b3Smrg	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
5356a7b590b3Smrg	      esac
5357a7b590b3Smrg	    fi
5358a7b590b3Smrg	    tmp_libs="$tmp_libs $deplib"
5359a7b590b3Smrg	  done
5360a7b590b3Smrg	  continue
5361a7b590b3Smrg	fi # $pass = conv
5362a7b590b3Smrg
5363a7b590b3Smrg
5364a7b590b3Smrg	# Get the name of the library we link against.
5365a7b590b3Smrg	linklib=
5366a7b590b3Smrg	for l in $old_library $library_names; do
5367a7b590b3Smrg	  linklib="$l"
5368a7b590b3Smrg	done
5369a7b590b3Smrg	if test -z "$linklib"; then
5370a7b590b3Smrg	  func_fatal_error "cannot find name of link library for \`$lib'"
5371a7b590b3Smrg	fi
5372a7b590b3Smrg
5373a7b590b3Smrg	# This library was specified with -dlopen.
5374a7b590b3Smrg	if test "$pass" = dlopen; then
5375a7b590b3Smrg	  if test -z "$libdir"; then
5376a7b590b3Smrg	    func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
5377a7b590b3Smrg	  fi
5378a7b590b3Smrg	  if test -z "$dlname" ||
5379a7b590b3Smrg	     test "$dlopen_support" != yes ||
5380a7b590b3Smrg	     test "$build_libtool_libs" = no; then
5381a7b590b3Smrg	    # If there is no dlname, no dlopen support or we're linking
5382a7b590b3Smrg	    # statically, we need to preload.  We also need to preload any
5383a7b590b3Smrg	    # dependent libraries so libltdl's deplib preloader doesn't
5384a7b590b3Smrg	    # bomb out in the load deplibs phase.
5385a7b590b3Smrg	    dlprefiles="$dlprefiles $lib $dependency_libs"
5386a7b590b3Smrg	  else
5387a7b590b3Smrg	    newdlfiles="$newdlfiles $lib"
5388a7b590b3Smrg	  fi
5389a7b590b3Smrg	  continue
5390a7b590b3Smrg	fi # $pass = dlopen
5391a7b590b3Smrg
5392a7b590b3Smrg	# We need an absolute path.
5393a7b590b3Smrg	case $ladir in
5394a7b590b3Smrg	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
5395a7b590b3Smrg	*)
5396a7b590b3Smrg	  abs_ladir=`cd "$ladir" && pwd`
5397a7b590b3Smrg	  if test -z "$abs_ladir"; then
5398a7b590b3Smrg	    func_warning "cannot determine absolute directory name of \`$ladir'"
5399a7b590b3Smrg	    func_warning "passing it literally to the linker, although it might fail"
5400a7b590b3Smrg	    abs_ladir="$ladir"
5401a7b590b3Smrg	  fi
5402a7b590b3Smrg	  ;;
5403a7b590b3Smrg	esac
5404a7b590b3Smrg	func_basename "$lib"
5405a7b590b3Smrg	laname="$func_basename_result"
5406a7b590b3Smrg
5407a7b590b3Smrg	# Find the relevant object directory and library name.
5408a7b590b3Smrg	if test "X$installed" = Xyes; then
5409a7b590b3Smrg	  if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
5410a7b590b3Smrg	    func_warning "library \`$lib' was moved."
5411a7b590b3Smrg	    dir="$ladir"
5412a7b590b3Smrg	    absdir="$abs_ladir"
5413a7b590b3Smrg	    libdir="$abs_ladir"
5414a7b590b3Smrg	  else
5415a7b590b3Smrg	    dir="$libdir"
5416a7b590b3Smrg	    absdir="$libdir"
5417a7b590b3Smrg	  fi
5418a7b590b3Smrg	  test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
5419a7b590b3Smrg	else
5420a7b590b3Smrg	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
5421a7b590b3Smrg	    dir="$ladir"
5422a7b590b3Smrg	    absdir="$abs_ladir"
5423a7b590b3Smrg	    # Remove this search path later
5424a7b590b3Smrg	    notinst_path="$notinst_path $abs_ladir"
5425a7b590b3Smrg	  else
5426a7b590b3Smrg	    dir="$ladir/$objdir"
5427a7b590b3Smrg	    absdir="$abs_ladir/$objdir"
5428a7b590b3Smrg	    # Remove this search path later
5429a7b590b3Smrg	    notinst_path="$notinst_path $abs_ladir"
5430a7b590b3Smrg	  fi
5431a7b590b3Smrg	fi # $installed = yes
5432a7b590b3Smrg	func_stripname 'lib' '.la' "$laname"
5433a7b590b3Smrg	name=$func_stripname_result
5434a7b590b3Smrg
5435a7b590b3Smrg	# This library was specified with -dlpreopen.
5436a7b590b3Smrg	if test "$pass" = dlpreopen; then
5437a7b590b3Smrg	  if test -z "$libdir" && test "$linkmode" = prog; then
5438a7b590b3Smrg	    func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
5439a7b590b3Smrg	  fi
5440a7b590b3Smrg	  # Prefer using a static library (so that no silly _DYNAMIC symbols
5441a7b590b3Smrg	  # are required to link).
5442a7b590b3Smrg	  if test -n "$old_library"; then
5443a7b590b3Smrg	    newdlprefiles="$newdlprefiles $dir/$old_library"
5444a7b590b3Smrg	    # Keep a list of preopened convenience libraries to check
5445a7b590b3Smrg	    # that they are being used correctly in the link pass.
5446a7b590b3Smrg	    test -z "$libdir" && \
5447a7b590b3Smrg		dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library"
5448a7b590b3Smrg	  # Otherwise, use the dlname, so that lt_dlopen finds it.
5449a7b590b3Smrg	  elif test -n "$dlname"; then
5450a7b590b3Smrg	    newdlprefiles="$newdlprefiles $dir/$dlname"
5451a7b590b3Smrg	  else
5452a7b590b3Smrg	    newdlprefiles="$newdlprefiles $dir/$linklib"
5453a7b590b3Smrg	  fi
5454a7b590b3Smrg	fi # $pass = dlpreopen
5455a7b590b3Smrg
5456a7b590b3Smrg	if test -z "$libdir"; then
5457a7b590b3Smrg	  # Link the convenience library
5458a7b590b3Smrg	  if test "$linkmode" = lib; then
5459a7b590b3Smrg	    deplibs="$dir/$old_library $deplibs"
5460a7b590b3Smrg	  elif test "$linkmode,$pass" = "prog,link"; then
5461a7b590b3Smrg	    compile_deplibs="$dir/$old_library $compile_deplibs"
5462a7b590b3Smrg	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
5463a7b590b3Smrg	  else
5464a7b590b3Smrg	    deplibs="$lib $deplibs" # used for prog,scan pass
5465a7b590b3Smrg	  fi
5466a7b590b3Smrg	  continue
5467a7b590b3Smrg	fi
5468a7b590b3Smrg
5469a7b590b3Smrg
5470a7b590b3Smrg	if test "$linkmode" = prog && test "$pass" != link; then
5471a7b590b3Smrg	  newlib_search_path="$newlib_search_path $ladir"
5472a7b590b3Smrg	  deplibs="$lib $deplibs"
5473a7b590b3Smrg
5474a7b590b3Smrg	  linkalldeplibs=no
5475a7b590b3Smrg	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
5476a7b590b3Smrg	     test "$build_libtool_libs" = no; then
5477a7b590b3Smrg	    linkalldeplibs=yes
5478a7b590b3Smrg	  fi
5479a7b590b3Smrg
5480a7b590b3Smrg	  tmp_libs=
5481a7b590b3Smrg	  for deplib in $dependency_libs; do
5482a7b590b3Smrg	    case $deplib in
5483a7b590b3Smrg	    -L*) func_stripname '-L' '' "$deplib"
5484a7b590b3Smrg	         newlib_search_path="$newlib_search_path $func_stripname_result"
5485a7b590b3Smrg		 ;;
5486a7b590b3Smrg	    esac
5487a7b590b3Smrg	    # Need to link against all dependency_libs?
5488a7b590b3Smrg	    if test "$linkalldeplibs" = yes; then
5489a7b590b3Smrg	      deplibs="$deplib $deplibs"
5490a7b590b3Smrg	    else
5491a7b590b3Smrg	      # Need to hardcode shared library paths
5492a7b590b3Smrg	      # or/and link against static libraries
5493a7b590b3Smrg	      newdependency_libs="$deplib $newdependency_libs"
5494a7b590b3Smrg	    fi
5495a7b590b3Smrg	    if $opt_duplicate_deps ; then
5496a7b590b3Smrg	      case "$tmp_libs " in
5497a7b590b3Smrg	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
5498a7b590b3Smrg	      esac
5499a7b590b3Smrg	    fi
5500a7b590b3Smrg	    tmp_libs="$tmp_libs $deplib"
5501a7b590b3Smrg	  done # for deplib
5502a7b590b3Smrg	  continue
5503a7b590b3Smrg	fi # $linkmode = prog...
5504a7b590b3Smrg
5505a7b590b3Smrg	if test "$linkmode,$pass" = "prog,link"; then
5506a7b590b3Smrg	  if test -n "$library_names" &&
5507a7b590b3Smrg	     { { test "$prefer_static_libs" = no ||
5508a7b590b3Smrg	         test "$prefer_static_libs,$installed" = "built,yes"; } ||
5509a7b590b3Smrg	       test -z "$old_library"; }; then
5510a7b590b3Smrg	    # We need to hardcode the library path
5511a7b590b3Smrg	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
5512a7b590b3Smrg	      # Make sure the rpath contains only unique directories.
5513a7b590b3Smrg	      case "$temp_rpath:" in
5514a7b590b3Smrg	      *"$absdir:"*) ;;
5515a7b590b3Smrg	      *) temp_rpath="$temp_rpath$absdir:" ;;
5516a7b590b3Smrg	      esac
5517a7b590b3Smrg	    fi
5518a7b590b3Smrg
5519a7b590b3Smrg	    # Hardcode the library path.
5520a7b590b3Smrg	    # Skip directories that are in the system default run-time
5521a7b590b3Smrg	    # search path.
5522a7b590b3Smrg	    case " $sys_lib_dlsearch_path " in
5523a7b590b3Smrg	    *" $absdir "*) ;;
5524a7b590b3Smrg	    *)
5525a7b590b3Smrg	      case "$compile_rpath " in
5526a7b590b3Smrg	      *" $absdir "*) ;;
5527a7b590b3Smrg	      *) compile_rpath="$compile_rpath $absdir"
5528a7b590b3Smrg	      esac
5529a7b590b3Smrg	      ;;
5530a7b590b3Smrg	    esac
5531a7b590b3Smrg	    case " $sys_lib_dlsearch_path " in
5532a7b590b3Smrg	    *" $libdir "*) ;;
5533a7b590b3Smrg	    *)
5534a7b590b3Smrg	      case "$finalize_rpath " in
5535a7b590b3Smrg	      *" $libdir "*) ;;
5536a7b590b3Smrg	      *) finalize_rpath="$finalize_rpath $libdir"
5537a7b590b3Smrg	      esac
5538a7b590b3Smrg	      ;;
5539a7b590b3Smrg	    esac
5540a7b590b3Smrg	  fi # $linkmode,$pass = prog,link...
5541a7b590b3Smrg
5542a7b590b3Smrg	  if test "$alldeplibs" = yes &&
5543a7b590b3Smrg	     { test "$deplibs_check_method" = pass_all ||
5544a7b590b3Smrg	       { test "$build_libtool_libs" = yes &&
5545a7b590b3Smrg		 test -n "$library_names"; }; }; then
5546a7b590b3Smrg	    # We only need to search for static libraries
5547a7b590b3Smrg	    continue
5548a7b590b3Smrg	  fi
5549a7b590b3Smrg	fi
5550a7b590b3Smrg
5551a7b590b3Smrg	link_static=no # Whether the deplib will be linked statically
5552a7b590b3Smrg	use_static_libs=$prefer_static_libs
5553a7b590b3Smrg	if test "$use_static_libs" = built && test "$installed" = yes; then
5554a7b590b3Smrg	  use_static_libs=no
5555a7b590b3Smrg	fi
5556a7b590b3Smrg	if test -n "$library_names" &&
5557a7b590b3Smrg	   { test "$use_static_libs" = no || test -z "$old_library"; }; then
5558a7b590b3Smrg	  case $host in
5559a7b590b3Smrg	  *cygwin* | *mingw* | *cegcc*)
5560a7b590b3Smrg	      # No point in relinking DLLs because paths are not encoded
5561a7b590b3Smrg	      notinst_deplibs="$notinst_deplibs $lib"
5562a7b590b3Smrg	      need_relink=no
5563a7b590b3Smrg	    ;;
5564a7b590b3Smrg	  *)
5565a7b590b3Smrg	    if test "$installed" = no; then
5566a7b590b3Smrg	      notinst_deplibs="$notinst_deplibs $lib"
5567a7b590b3Smrg	      need_relink=yes
5568a7b590b3Smrg	    fi
5569a7b590b3Smrg	    ;;
5570a7b590b3Smrg	  esac
5571a7b590b3Smrg	  # This is a shared library
5572a7b590b3Smrg
5573a7b590b3Smrg	  # Warn about portability, can't link against -module's on some
5574a7b590b3Smrg	  # systems (darwin).  Don't bleat about dlopened modules though!
5575a7b590b3Smrg	  dlopenmodule=""
5576a7b590b3Smrg	  for dlpremoduletest in $dlprefiles; do
5577a7b590b3Smrg	    if test "X$dlpremoduletest" = "X$lib"; then
5578a7b590b3Smrg	      dlopenmodule="$dlpremoduletest"
5579a7b590b3Smrg	      break
5580a7b590b3Smrg	    fi
5581a7b590b3Smrg	  done
5582a7b590b3Smrg	  if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
5583a7b590b3Smrg	    $ECHO
5584a7b590b3Smrg	    if test "$linkmode" = prog; then
5585a7b590b3Smrg	      $ECHO "*** Warning: Linking the executable $output against the loadable module"
5586a7b590b3Smrg	    else
5587a7b590b3Smrg	      $ECHO "*** Warning: Linking the shared library $output against the loadable module"
5588a7b590b3Smrg	    fi
5589a7b590b3Smrg	    $ECHO "*** $linklib is not portable!"
5590a7b590b3Smrg	  fi
5591a7b590b3Smrg	  if test "$linkmode" = lib &&
5592a7b590b3Smrg	     test "$hardcode_into_libs" = yes; then
5593a7b590b3Smrg	    # Hardcode the library path.
5594a7b590b3Smrg	    # Skip directories that are in the system default run-time
5595a7b590b3Smrg	    # search path.
5596a7b590b3Smrg	    case " $sys_lib_dlsearch_path " in
5597a7b590b3Smrg	    *" $absdir "*) ;;
5598a7b590b3Smrg	    *)
5599a7b590b3Smrg	      case "$compile_rpath " in
5600a7b590b3Smrg	      *" $absdir "*) ;;
5601a7b590b3Smrg	      *) compile_rpath="$compile_rpath $absdir"
5602a7b590b3Smrg	      esac
5603a7b590b3Smrg	      ;;
5604a7b590b3Smrg	    esac
5605a7b590b3Smrg	    case " $sys_lib_dlsearch_path " in
5606a7b590b3Smrg	    *" $libdir "*) ;;
5607a7b590b3Smrg	    *)
5608a7b590b3Smrg	      case "$finalize_rpath " in
5609a7b590b3Smrg	      *" $libdir "*) ;;
5610a7b590b3Smrg	      *) finalize_rpath="$finalize_rpath $libdir"
5611a7b590b3Smrg	      esac
5612a7b590b3Smrg	      ;;
5613a7b590b3Smrg	    esac
5614a7b590b3Smrg	  fi
5615a7b590b3Smrg
5616a7b590b3Smrg	  if test -n "$old_archive_from_expsyms_cmds"; then
5617a7b590b3Smrg	    # figure out the soname
5618a7b590b3Smrg	    set dummy $library_names
5619a7b590b3Smrg	    shift
5620a7b590b3Smrg	    realname="$1"
5621a7b590b3Smrg	    shift
5622a7b590b3Smrg	    libname=`eval "\\$ECHO \"$libname_spec\""`
5623a7b590b3Smrg	    # use dlname if we got it. it's perfectly good, no?
5624a7b590b3Smrg	    if test -n "$dlname"; then
5625a7b590b3Smrg	      soname="$dlname"
5626a7b590b3Smrg	    elif test -n "$soname_spec"; then
5627a7b590b3Smrg	      # bleh windows
5628a7b590b3Smrg	      case $host in
5629a7b590b3Smrg	      *cygwin* | mingw* | *cegcc*)
5630a7b590b3Smrg	        func_arith $current - $age
5631a7b590b3Smrg		major=$func_arith_result
5632a7b590b3Smrg		versuffix="-$major"
5633a7b590b3Smrg		;;
5634a7b590b3Smrg	      esac
5635a7b590b3Smrg	      eval soname=\"$soname_spec\"
5636a7b590b3Smrg	    else
5637a7b590b3Smrg	      soname="$realname"
5638a7b590b3Smrg	    fi
5639a7b590b3Smrg
5640a7b590b3Smrg	    # Make a new name for the extract_expsyms_cmds to use
5641a7b590b3Smrg	    soroot="$soname"
5642a7b590b3Smrg	    func_basename "$soroot"
5643a7b590b3Smrg	    soname="$func_basename_result"
5644a7b590b3Smrg	    func_stripname 'lib' '.dll' "$soname"
5645a7b590b3Smrg	    newlib=libimp-$func_stripname_result.a
5646a7b590b3Smrg
5647a7b590b3Smrg	    # If the library has no export list, then create one now
5648a7b590b3Smrg	    if test -f "$output_objdir/$soname-def"; then :
5649a7b590b3Smrg	    else
5650a7b590b3Smrg	      func_verbose "extracting exported symbol list from \`$soname'"
5651a7b590b3Smrg	      func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
5652a7b590b3Smrg	    fi
5653a7b590b3Smrg
5654a7b590b3Smrg	    # Create $newlib
5655a7b590b3Smrg	    if test -f "$output_objdir/$newlib"; then :; else
5656a7b590b3Smrg	      func_verbose "generating import library for \`$soname'"
5657a7b590b3Smrg	      func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
5658a7b590b3Smrg	    fi
5659a7b590b3Smrg	    # make sure the library variables are pointing to the new library
5660a7b590b3Smrg	    dir=$output_objdir
5661a7b590b3Smrg	    linklib=$newlib
5662a7b590b3Smrg	  fi # test -n "$old_archive_from_expsyms_cmds"
5663a7b590b3Smrg
5664a7b590b3Smrg	  if test "$linkmode" = prog || test "$mode" != relink; then
5665a7b590b3Smrg	    add_shlibpath=
5666a7b590b3Smrg	    add_dir=
5667a7b590b3Smrg	    add=
5668a7b590b3Smrg	    lib_linked=yes
5669a7b590b3Smrg	    case $hardcode_action in
5670a7b590b3Smrg	    immediate | unsupported)
5671a7b590b3Smrg	      if test "$hardcode_direct" = no; then
5672a7b590b3Smrg		add="$dir/$linklib"
5673a7b590b3Smrg		case $host in
5674a7b590b3Smrg		  *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
5675a7b590b3Smrg		  *-*-sysv4*uw2*) add_dir="-L$dir" ;;
5676a7b590b3Smrg		  *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
5677a7b590b3Smrg		    *-*-unixware7*) add_dir="-L$dir" ;;
5678a7b590b3Smrg		  *-*-darwin* )
5679a7b590b3Smrg		    # if the lib is a (non-dlopened) module then we can not
5680a7b590b3Smrg		    # link against it, someone is ignoring the earlier warnings
5681a7b590b3Smrg		    if /usr/bin/file -L $add 2> /dev/null |
5682a7b590b3Smrg			 $GREP ": [^:]* bundle" >/dev/null ; then
5683a7b590b3Smrg		      if test "X$dlopenmodule" != "X$lib"; then
5684a7b590b3Smrg			$ECHO "*** Warning: lib $linklib is a module, not a shared library"
5685a7b590b3Smrg			if test -z "$old_library" ; then
5686a7b590b3Smrg			  $ECHO
5687a7b590b3Smrg			  $ECHO "*** And there doesn't seem to be a static archive available"
5688a7b590b3Smrg			  $ECHO "*** The link will probably fail, sorry"
5689a7b590b3Smrg			else
5690a7b590b3Smrg			  add="$dir/$old_library"
5691a7b590b3Smrg			fi
5692a7b590b3Smrg		      elif test -n "$old_library"; then
5693a7b590b3Smrg			add="$dir/$old_library"
5694a7b590b3Smrg		      fi
5695a7b590b3Smrg		    fi
5696a7b590b3Smrg		esac
5697a7b590b3Smrg	      elif test "$hardcode_minus_L" = no; then
5698a7b590b3Smrg		case $host in
5699a7b590b3Smrg		*-*-sunos*) add_shlibpath="$dir" ;;
5700a7b590b3Smrg		esac
5701a7b590b3Smrg		add_dir="-L$dir"
5702a7b590b3Smrg		add="-l$name"
5703a7b590b3Smrg	      elif test "$hardcode_shlibpath_var" = no; then
5704a7b590b3Smrg		add_shlibpath="$dir"
5705a7b590b3Smrg		add="-l$name"
5706a7b590b3Smrg	      else
5707a7b590b3Smrg		lib_linked=no
5708a7b590b3Smrg	      fi
5709a7b590b3Smrg	      ;;
5710a7b590b3Smrg	    relink)
5711a7b590b3Smrg	      if test "$hardcode_direct" = yes &&
5712a7b590b3Smrg	         test "$hardcode_direct_absolute" = no; then
5713a7b590b3Smrg		add="$dir/$linklib"
5714a7b590b3Smrg	      elif test "$hardcode_minus_L" = yes; then
5715a7b590b3Smrg		add_dir="-L$dir"
5716a7b590b3Smrg		# Try looking first in the location we're being installed to.
5717a7b590b3Smrg		if test -n "$inst_prefix_dir"; then
5718a7b590b3Smrg		  case $libdir in
5719a7b590b3Smrg		    [\\/]*)
5720a7b590b3Smrg		      add_dir="$add_dir -L$inst_prefix_dir$libdir"
5721a7b590b3Smrg		      ;;
5722a7b590b3Smrg		  esac
5723a7b590b3Smrg		fi
5724a7b590b3Smrg		add="-l$name"
5725a7b590b3Smrg	      elif test "$hardcode_shlibpath_var" = yes; then
5726a7b590b3Smrg		add_shlibpath="$dir"
5727a7b590b3Smrg		add="-l$name"
5728a7b590b3Smrg	      else
5729a7b590b3Smrg		lib_linked=no
5730a7b590b3Smrg	      fi
5731a7b590b3Smrg	      ;;
5732a7b590b3Smrg	    *) lib_linked=no ;;
5733a7b590b3Smrg	    esac
5734a7b590b3Smrg
5735a7b590b3Smrg	    if test "$lib_linked" != yes; then
5736a7b590b3Smrg	      func_fatal_configuration "unsupported hardcode properties"
5737a7b590b3Smrg	    fi
5738a7b590b3Smrg
5739a7b590b3Smrg	    if test -n "$add_shlibpath"; then
5740a7b590b3Smrg	      case :$compile_shlibpath: in
5741a7b590b3Smrg	      *":$add_shlibpath:"*) ;;
5742a7b590b3Smrg	      *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
5743a7b590b3Smrg	      esac
5744a7b590b3Smrg	    fi
5745a7b590b3Smrg	    if test "$linkmode" = prog; then
5746a7b590b3Smrg	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
5747a7b590b3Smrg	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
5748a7b590b3Smrg	    else
5749a7b590b3Smrg	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
5750a7b590b3Smrg	      test -n "$add" && deplibs="$add $deplibs"
5751a7b590b3Smrg	      if test "$hardcode_direct" != yes &&
5752a7b590b3Smrg		 test "$hardcode_minus_L" != yes &&
5753a7b590b3Smrg		 test "$hardcode_shlibpath_var" = yes; then
5754a7b590b3Smrg		case :$finalize_shlibpath: in
5755a7b590b3Smrg		*":$libdir:"*) ;;
5756a7b590b3Smrg		*) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
5757a7b590b3Smrg		esac
5758a7b590b3Smrg	      fi
5759a7b590b3Smrg	    fi
5760a7b590b3Smrg	  fi
5761a7b590b3Smrg
5762a7b590b3Smrg	  if test "$linkmode" = prog || test "$mode" = relink; then
5763a7b590b3Smrg	    add_shlibpath=
5764a7b590b3Smrg	    add_dir=
5765a7b590b3Smrg	    add=
5766a7b590b3Smrg	    # Finalize command for both is simple: just hardcode it.
5767a7b590b3Smrg	    if test "$hardcode_direct" = yes &&
5768a7b590b3Smrg	       test "$hardcode_direct_absolute" = no; then
5769a7b590b3Smrg	      add="$libdir/$linklib"
5770a7b590b3Smrg	    elif test "$hardcode_minus_L" = yes; then
5771a7b590b3Smrg	      add_dir="-L$libdir"
5772a7b590b3Smrg	      add="-l$name"
5773a7b590b3Smrg	    elif test "$hardcode_shlibpath_var" = yes; then
5774a7b590b3Smrg	      case :$finalize_shlibpath: in
5775a7b590b3Smrg	      *":$libdir:"*) ;;
5776a7b590b3Smrg	      *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
5777a7b590b3Smrg	      esac
5778a7b590b3Smrg	      add="-l$name"
5779a7b590b3Smrg	    elif test "$hardcode_automatic" = yes; then
5780a7b590b3Smrg	      if test -n "$inst_prefix_dir" &&
5781a7b590b3Smrg		 test -f "$inst_prefix_dir$libdir/$linklib" ; then
5782a7b590b3Smrg		add="$inst_prefix_dir$libdir/$linklib"
5783a7b590b3Smrg	      else
5784a7b590b3Smrg		add="$libdir/$linklib"
5785a7b590b3Smrg	      fi
5786a7b590b3Smrg	    else
5787a7b590b3Smrg	      # We cannot seem to hardcode it, guess we'll fake it.
5788a7b590b3Smrg	      add_dir="-L$libdir"
5789a7b590b3Smrg	      # Try looking first in the location we're being installed to.
5790a7b590b3Smrg	      if test -n "$inst_prefix_dir"; then
5791a7b590b3Smrg		case $libdir in
5792a7b590b3Smrg		  [\\/]*)
5793a7b590b3Smrg		    add_dir="$add_dir -L$inst_prefix_dir$libdir"
5794a7b590b3Smrg		    ;;
5795a7b590b3Smrg		esac
5796a7b590b3Smrg	      fi
5797a7b590b3Smrg	      add="-l$name"
5798a7b590b3Smrg	    fi
5799a7b590b3Smrg
5800a7b590b3Smrg	    if test "$linkmode" = prog; then
5801a7b590b3Smrg	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
5802a7b590b3Smrg	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
5803a7b590b3Smrg	    else
5804a7b590b3Smrg	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
5805a7b590b3Smrg	      test -n "$add" && deplibs="$add $deplibs"
5806a7b590b3Smrg	    fi
5807a7b590b3Smrg	  fi
5808a7b590b3Smrg	elif test "$linkmode" = prog; then
5809a7b590b3Smrg	  # Here we assume that one of hardcode_direct or hardcode_minus_L
5810a7b590b3Smrg	  # is not unsupported.  This is valid on all known static and
5811a7b590b3Smrg	  # shared platforms.
5812a7b590b3Smrg	  if test "$hardcode_direct" != unsupported; then
5813a7b590b3Smrg	    test -n "$old_library" && linklib="$old_library"
5814a7b590b3Smrg	    compile_deplibs="$dir/$linklib $compile_deplibs"
5815a7b590b3Smrg	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
5816a7b590b3Smrg	  else
5817a7b590b3Smrg	    compile_deplibs="-l$name -L$dir $compile_deplibs"
5818a7b590b3Smrg	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
5819a7b590b3Smrg	  fi
5820a7b590b3Smrg	elif test "$build_libtool_libs" = yes; then
5821a7b590b3Smrg	  # Not a shared library
5822a7b590b3Smrg	  if test "$deplibs_check_method" != pass_all; then
5823a7b590b3Smrg	    # We're trying link a shared library against a static one
5824a7b590b3Smrg	    # but the system doesn't support it.
5825a7b590b3Smrg
5826a7b590b3Smrg	    # Just print a warning and add the library to dependency_libs so
5827a7b590b3Smrg	    # that the program can be linked against the static library.
5828a7b590b3Smrg	    $ECHO
5829a7b590b3Smrg	    $ECHO "*** Warning: This system can not link to static lib archive $lib."
5830a7b590b3Smrg	    $ECHO "*** I have the capability to make that library automatically link in when"
5831a7b590b3Smrg	    $ECHO "*** you link to this library.  But I can only do this if you have a"
5832a7b590b3Smrg	    $ECHO "*** shared version of the library, which you do not appear to have."
5833a7b590b3Smrg	    if test "$module" = yes; then
5834a7b590b3Smrg	      $ECHO "*** But as you try to build a module library, libtool will still create "
5835a7b590b3Smrg	      $ECHO "*** a static module, that should work as long as the dlopening application"
5836a7b590b3Smrg	      $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime."
5837a7b590b3Smrg	      if test -z "$global_symbol_pipe"; then
5838a7b590b3Smrg		$ECHO
5839a7b590b3Smrg		$ECHO "*** However, this would only work if libtool was able to extract symbol"
5840a7b590b3Smrg		$ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
5841a7b590b3Smrg		$ECHO "*** not find such a program.  So, this module is probably useless."
5842a7b590b3Smrg		$ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
5843a7b590b3Smrg	      fi
5844a7b590b3Smrg	      if test "$build_old_libs" = no; then
5845a7b590b3Smrg		build_libtool_libs=module
5846a7b590b3Smrg		build_old_libs=yes
5847a7b590b3Smrg	      else
5848a7b590b3Smrg		build_libtool_libs=no
5849a7b590b3Smrg	      fi
5850a7b590b3Smrg	    fi
5851a7b590b3Smrg	  else
5852a7b590b3Smrg	    deplibs="$dir/$old_library $deplibs"
5853a7b590b3Smrg	    link_static=yes
5854a7b590b3Smrg	  fi
5855a7b590b3Smrg	fi # link shared/static library?
5856a7b590b3Smrg
5857a7b590b3Smrg	if test "$linkmode" = lib; then
5858a7b590b3Smrg	  if test -n "$dependency_libs" &&
5859a7b590b3Smrg	     { test "$hardcode_into_libs" != yes ||
5860a7b590b3Smrg	       test "$build_old_libs" = yes ||
5861a7b590b3Smrg	       test "$link_static" = yes; }; then
5862a7b590b3Smrg	    # Extract -R from dependency_libs
5863a7b590b3Smrg	    temp_deplibs=
5864a7b590b3Smrg	    for libdir in $dependency_libs; do
5865a7b590b3Smrg	      case $libdir in
5866a7b590b3Smrg	      -R*) func_stripname '-R' '' "$libdir"
5867a7b590b3Smrg	           temp_xrpath=$func_stripname_result
5868a7b590b3Smrg		   case " $xrpath " in
5869a7b590b3Smrg		   *" $temp_xrpath "*) ;;
5870a7b590b3Smrg		   *) xrpath="$xrpath $temp_xrpath";;
5871a7b590b3Smrg		   esac;;
5872a7b590b3Smrg	      *) temp_deplibs="$temp_deplibs $libdir";;
5873a7b590b3Smrg	      esac
5874a7b590b3Smrg	    done
5875a7b590b3Smrg	    dependency_libs="$temp_deplibs"
5876a7b590b3Smrg	  fi
5877a7b590b3Smrg
5878a7b590b3Smrg	  newlib_search_path="$newlib_search_path $absdir"
5879a7b590b3Smrg	  # Link against this library
5880a7b590b3Smrg	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
5881a7b590b3Smrg	  # ... and its dependency_libs
5882a7b590b3Smrg	  tmp_libs=
5883a7b590b3Smrg	  for deplib in $dependency_libs; do
5884a7b590b3Smrg	    newdependency_libs="$deplib $newdependency_libs"
5885a7b590b3Smrg	    if $opt_duplicate_deps ; then
5886a7b590b3Smrg	      case "$tmp_libs " in
5887a7b590b3Smrg	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
5888a7b590b3Smrg	      esac
5889a7b590b3Smrg	    fi
5890a7b590b3Smrg	    tmp_libs="$tmp_libs $deplib"
5891a7b590b3Smrg	  done
5892a7b590b3Smrg
5893a7b590b3Smrg	  if test "$link_all_deplibs" != no; then
5894a7b590b3Smrg	    # Add the search paths of all dependency libraries
5895a7b590b3Smrg	    for deplib in $dependency_libs; do
5896a7b590b3Smrg	      case $deplib in
5897a7b590b3Smrg	      -L*) path="$deplib" ;;
5898a7b590b3Smrg	      *.la)
5899a7b590b3Smrg	        func_dirname "$deplib" "" "."
5900a7b590b3Smrg		dir="$func_dirname_result"
5901a7b590b3Smrg		# We need an absolute path.
5902a7b590b3Smrg		case $dir in
5903a7b590b3Smrg		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
5904a7b590b3Smrg		*)
5905a7b590b3Smrg		  absdir=`cd "$dir" && pwd`
5906a7b590b3Smrg		  if test -z "$absdir"; then
5907a7b590b3Smrg		    func_warning "cannot determine absolute directory name of \`$dir'"
5908a7b590b3Smrg		    absdir="$dir"
5909a7b590b3Smrg		  fi
5910a7b590b3Smrg		  ;;
5911a7b590b3Smrg		esac
5912a7b590b3Smrg		if $GREP "^installed=no" $deplib > /dev/null; then
5913a7b590b3Smrg		case $host in
5914a7b590b3Smrg		*-*-darwin*)
5915a7b590b3Smrg		  depdepl=
5916a7b590b3Smrg		  eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
5917a7b590b3Smrg		  if test -n "$deplibrary_names" ; then
5918a7b590b3Smrg		    for tmp in $deplibrary_names ; do
5919a7b590b3Smrg		      depdepl=$tmp
5920a7b590b3Smrg		    done
5921a7b590b3Smrg		    if test -f "$absdir/$objdir/$depdepl" ; then
5922a7b590b3Smrg		      depdepl="$absdir/$objdir/$depdepl"
5923a7b590b3Smrg		      darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
5924a7b590b3Smrg                      if test -z "$darwin_install_name"; then
5925a7b590b3Smrg                          darwin_install_name=`${OTOOL64} -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
5926a7b590b3Smrg                      fi
5927a7b590b3Smrg		      compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
5928a7b590b3Smrg		      linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}"
5929a7b590b3Smrg		      path=
5930a7b590b3Smrg		    fi
5931a7b590b3Smrg		  fi
5932a7b590b3Smrg		  ;;
5933a7b590b3Smrg		*)
5934a7b590b3Smrg		  path="-L$absdir/$objdir"
5935a7b590b3Smrg		  ;;
5936a7b590b3Smrg		esac
5937a7b590b3Smrg		else
5938a7b590b3Smrg		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
5939a7b590b3Smrg		  test -z "$libdir" && \
5940a7b590b3Smrg		    func_fatal_error "\`$deplib' is not a valid libtool archive"
5941a7b590b3Smrg		  test "$absdir" != "$libdir" && \
5942a7b590b3Smrg		    func_warning "\`$deplib' seems to be moved"
5943a7b590b3Smrg
5944a7b590b3Smrg		  path="-L$absdir"
5945a7b590b3Smrg		fi
5946a7b590b3Smrg		;;
5947a7b590b3Smrg	      esac
5948a7b590b3Smrg	      case " $deplibs " in
5949a7b590b3Smrg	      *" $path "*) ;;
5950a7b590b3Smrg	      *) deplibs="$path $deplibs" ;;
5951a7b590b3Smrg	      esac
5952a7b590b3Smrg	    done
5953a7b590b3Smrg	  fi # link_all_deplibs != no
5954a7b590b3Smrg	fi # linkmode = lib
5955a7b590b3Smrg      done # for deplib in $libs
5956a7b590b3Smrg      if test "$pass" = link; then
5957a7b590b3Smrg	if test "$linkmode" = "prog"; then
5958a7b590b3Smrg	  compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
5959a7b590b3Smrg	  finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
5960a7b590b3Smrg	else
5961a7b590b3Smrg	  compiler_flags="$compiler_flags "`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
5962a7b590b3Smrg	fi
5963a7b590b3Smrg      fi
5964a7b590b3Smrg      dependency_libs="$newdependency_libs"
5965a7b590b3Smrg      if test "$pass" = dlpreopen; then
5966a7b590b3Smrg	# Link the dlpreopened libraries before other libraries
5967a7b590b3Smrg	for deplib in $save_deplibs; do
5968a7b590b3Smrg	  deplibs="$deplib $deplibs"
5969a7b590b3Smrg	done
5970a7b590b3Smrg      fi
5971a7b590b3Smrg      if test "$pass" != dlopen; then
5972a7b590b3Smrg	if test "$pass" != conv; then
5973a7b590b3Smrg	  # Make sure lib_search_path contains only unique directories.
5974a7b590b3Smrg	  lib_search_path=
5975a7b590b3Smrg	  for dir in $newlib_search_path; do
5976a7b590b3Smrg	    case "$lib_search_path " in
5977a7b590b3Smrg	    *" $dir "*) ;;
5978a7b590b3Smrg	    *) lib_search_path="$lib_search_path $dir" ;;
5979a7b590b3Smrg	    esac
5980a7b590b3Smrg	  done
5981a7b590b3Smrg	  newlib_search_path=
5982a7b590b3Smrg	fi
5983a7b590b3Smrg
5984a7b590b3Smrg	if test "$linkmode,$pass" != "prog,link"; then
5985a7b590b3Smrg	  vars="deplibs"
5986a7b590b3Smrg	else
5987a7b590b3Smrg	  vars="compile_deplibs finalize_deplibs"
5988a7b590b3Smrg	fi
5989a7b590b3Smrg	for var in $vars dependency_libs; do
5990a7b590b3Smrg	  # Add libraries to $var in reverse order
5991a7b590b3Smrg	  eval tmp_libs=\"\$$var\"
5992a7b590b3Smrg	  new_libs=
5993a7b590b3Smrg	  for deplib in $tmp_libs; do
5994a7b590b3Smrg	    # FIXME: Pedantically, this is the right thing to do, so
5995a7b590b3Smrg	    #        that some nasty dependency loop isn't accidentally
5996a7b590b3Smrg	    #        broken:
5997a7b590b3Smrg	    #new_libs="$deplib $new_libs"
5998a7b590b3Smrg	    # Pragmatically, this seems to cause very few problems in
5999a7b590b3Smrg	    # practice:
6000a7b590b3Smrg	    case $deplib in
6001a7b590b3Smrg	    -L*) new_libs="$deplib $new_libs" ;;
6002a7b590b3Smrg	    -R*) ;;
6003a7b590b3Smrg	    *)
6004a7b590b3Smrg	      # And here is the reason: when a library appears more
6005a7b590b3Smrg	      # than once as an explicit dependence of a library, or
6006a7b590b3Smrg	      # is implicitly linked in more than once by the
6007a7b590b3Smrg	      # compiler, it is considered special, and multiple
6008a7b590b3Smrg	      # occurrences thereof are not removed.  Compare this
6009a7b590b3Smrg	      # with having the same library being listed as a
6010a7b590b3Smrg	      # dependency of multiple other libraries: in this case,
6011a7b590b3Smrg	      # we know (pedantically, we assume) the library does not
6012a7b590b3Smrg	      # need to be listed more than once, so we keep only the
6013a7b590b3Smrg	      # last copy.  This is not always right, but it is rare
6014a7b590b3Smrg	      # enough that we require users that really mean to play
6015a7b590b3Smrg	      # such unportable linking tricks to link the library
6016a7b590b3Smrg	      # using -Wl,-lname, so that libtool does not consider it
6017a7b590b3Smrg	      # for duplicate removal.
6018a7b590b3Smrg	      case " $specialdeplibs " in
6019a7b590b3Smrg	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
6020a7b590b3Smrg	      *)
6021a7b590b3Smrg		case " $new_libs " in
6022a7b590b3Smrg		*" $deplib "*) ;;
6023a7b590b3Smrg		*) new_libs="$deplib $new_libs" ;;
6024a7b590b3Smrg		esac
6025a7b590b3Smrg		;;
6026a7b590b3Smrg	      esac
6027a7b590b3Smrg	      ;;
6028a7b590b3Smrg	    esac
6029a7b590b3Smrg	  done
6030a7b590b3Smrg	  tmp_libs=
6031a7b590b3Smrg	  for deplib in $new_libs; do
6032a7b590b3Smrg	    case $deplib in
6033a7b590b3Smrg	    -L*)
6034a7b590b3Smrg	      case " $tmp_libs " in
6035a7b590b3Smrg	      *" $deplib "*) ;;
6036a7b590b3Smrg	      *) tmp_libs="$tmp_libs $deplib" ;;
6037a7b590b3Smrg	      esac
6038a7b590b3Smrg	      ;;
6039a7b590b3Smrg	    *) tmp_libs="$tmp_libs $deplib" ;;
6040a7b590b3Smrg	    esac
6041a7b590b3Smrg	  done
6042a7b590b3Smrg	  eval $var=\"$tmp_libs\"
6043a7b590b3Smrg	done # for var
6044a7b590b3Smrg      fi
6045a7b590b3Smrg      # Last step: remove runtime libs from dependency_libs
6046a7b590b3Smrg      # (they stay in deplibs)
6047a7b590b3Smrg      tmp_libs=
6048a7b590b3Smrg      for i in $dependency_libs ; do
6049a7b590b3Smrg	case " $predeps $postdeps $compiler_lib_search_path " in
6050a7b590b3Smrg	*" $i "*)
6051a7b590b3Smrg	  i=""
6052a7b590b3Smrg	  ;;
6053a7b590b3Smrg	esac
6054a7b590b3Smrg	if test -n "$i" ; then
6055a7b590b3Smrg	  tmp_libs="$tmp_libs $i"
6056a7b590b3Smrg	fi
6057a7b590b3Smrg      done
6058a7b590b3Smrg      dependency_libs=$tmp_libs
6059a7b590b3Smrg    done # for pass
6060a7b590b3Smrg    if test "$linkmode" = prog; then
6061a7b590b3Smrg      dlfiles="$newdlfiles"
6062a7b590b3Smrg    fi
6063a7b590b3Smrg    if test "$linkmode" = prog || test "$linkmode" = lib; then
6064a7b590b3Smrg      dlprefiles="$newdlprefiles"
6065a7b590b3Smrg    fi
6066a7b590b3Smrg
6067a7b590b3Smrg    case $linkmode in
6068a7b590b3Smrg    oldlib)
6069a7b590b3Smrg      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
6070a7b590b3Smrg	func_warning "\`-dlopen' is ignored for archives"
6071a7b590b3Smrg      fi
6072a7b590b3Smrg
6073a7b590b3Smrg      case " $deplibs" in
6074a7b590b3Smrg      *\ -l* | *\ -L*)
6075a7b590b3Smrg	func_warning "\`-l' and \`-L' are ignored for archives" ;;
6076a7b590b3Smrg      esac
6077a7b590b3Smrg
6078a7b590b3Smrg      test -n "$rpath" && \
6079a7b590b3Smrg	func_warning "\`-rpath' is ignored for archives"
6080a7b590b3Smrg
6081a7b590b3Smrg      test -n "$xrpath" && \
6082a7b590b3Smrg	func_warning "\`-R' is ignored for archives"
6083a7b590b3Smrg
6084a7b590b3Smrg      test -n "$vinfo" && \
6085a7b590b3Smrg	func_warning "\`-version-info/-version-number' is ignored for archives"
6086a7b590b3Smrg
6087a7b590b3Smrg      test -n "$release" && \
6088a7b590b3Smrg	func_warning "\`-release' is ignored for archives"
6089a7b590b3Smrg
6090a7b590b3Smrg      test -n "$export_symbols$export_symbols_regex" && \
6091a7b590b3Smrg	func_warning "\`-export-symbols' is ignored for archives"
6092a7b590b3Smrg
6093a7b590b3Smrg      # Now set the variables for building old libraries.
6094a7b590b3Smrg      build_libtool_libs=no
6095a7b590b3Smrg      oldlibs="$output"
6096a7b590b3Smrg      objs="$objs$old_deplibs"
6097a7b590b3Smrg      ;;
6098a7b590b3Smrg
6099a7b590b3Smrg    lib)
6100a7b590b3Smrg      # Make sure we only generate libraries of the form `libNAME.la'.
6101a7b590b3Smrg      case $outputname in
6102a7b590b3Smrg      lib*)
6103a7b590b3Smrg	func_stripname 'lib' '.la' "$outputname"
6104a7b590b3Smrg	name=$func_stripname_result
6105a7b590b3Smrg	eval shared_ext=\"$shrext_cmds\"
6106a7b590b3Smrg	eval libname=\"$libname_spec\"
6107a7b590b3Smrg	;;
6108a7b590b3Smrg      *)
6109a7b590b3Smrg	test "$module" = no && \
6110a7b590b3Smrg	  func_fatal_help "libtool library \`$output' must begin with \`lib'"
6111a7b590b3Smrg
6112a7b590b3Smrg	if test "$need_lib_prefix" != no; then
6113a7b590b3Smrg	  # Add the "lib" prefix for modules if required
6114a7b590b3Smrg	  func_stripname '' '.la' "$outputname"
6115a7b590b3Smrg	  name=$func_stripname_result
6116a7b590b3Smrg	  eval shared_ext=\"$shrext_cmds\"
6117a7b590b3Smrg	  eval libname=\"$libname_spec\"
6118a7b590b3Smrg	else
6119a7b590b3Smrg	  func_stripname '' '.la' "$outputname"
6120a7b590b3Smrg	  libname=$func_stripname_result
6121a7b590b3Smrg	fi
6122a7b590b3Smrg	;;
6123a7b590b3Smrg      esac
6124a7b590b3Smrg
6125a7b590b3Smrg      if test -n "$objs"; then
6126a7b590b3Smrg	if test "$deplibs_check_method" != pass_all; then
6127a7b590b3Smrg	  func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
6128a7b590b3Smrg	else
6129a7b590b3Smrg	  $ECHO
6130a7b590b3Smrg	  $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
6131a7b590b3Smrg	  $ECHO "*** objects $objs is not portable!"
6132a7b590b3Smrg	  libobjs="$libobjs $objs"
6133a7b590b3Smrg	fi
6134a7b590b3Smrg      fi
6135a7b590b3Smrg
6136a7b590b3Smrg      test "$dlself" != no && \
6137a7b590b3Smrg	func_warning "\`-dlopen self' is ignored for libtool libraries"
6138a7b590b3Smrg
6139a7b590b3Smrg      set dummy $rpath
6140a7b590b3Smrg      shift
6141a7b590b3Smrg      test "$#" -gt 1 && \
6142a7b590b3Smrg	func_warning "ignoring multiple \`-rpath's for a libtool library"
6143a7b590b3Smrg
6144a7b590b3Smrg      install_libdir="$1"
6145a7b590b3Smrg
6146a7b590b3Smrg      oldlibs=
6147a7b590b3Smrg      if test -z "$rpath"; then
6148a7b590b3Smrg	if test "$build_libtool_libs" = yes; then
6149a7b590b3Smrg	  # Building a libtool convenience library.
6150a7b590b3Smrg	  # Some compilers have problems with a `.al' extension so
6151a7b590b3Smrg	  # convenience libraries should have the same extension an
6152a7b590b3Smrg	  # archive normally would.
6153a7b590b3Smrg	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
6154a7b590b3Smrg	  build_libtool_libs=convenience
6155a7b590b3Smrg	  build_old_libs=yes
6156a7b590b3Smrg	fi
6157a7b590b3Smrg
6158a7b590b3Smrg	test -n "$vinfo" && \
6159a7b590b3Smrg	  func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
6160a7b590b3Smrg
6161a7b590b3Smrg	test -n "$release" && \
6162a7b590b3Smrg	  func_warning "\`-release' is ignored for convenience libraries"
6163a7b590b3Smrg      else
6164a7b590b3Smrg
6165a7b590b3Smrg	# Parse the version information argument.
6166a7b590b3Smrg	save_ifs="$IFS"; IFS=':'
6167a7b590b3Smrg	set dummy $vinfo 0 0 0
6168a7b590b3Smrg	shift
6169a7b590b3Smrg	IFS="$save_ifs"
6170a7b590b3Smrg
6171a7b590b3Smrg	test -n "$7" && \
6172a7b590b3Smrg	  func_fatal_help "too many parameters to \`-version-info'"
6173a7b590b3Smrg
6174a7b590b3Smrg	# convert absolute version numbers to libtool ages
6175a7b590b3Smrg	# this retains compatibility with .la files and attempts
6176a7b590b3Smrg	# to make the code below a bit more comprehensible
6177a7b590b3Smrg
6178a7b590b3Smrg	case $vinfo_number in
6179a7b590b3Smrg	yes)
6180a7b590b3Smrg	  number_major="$1"
6181a7b590b3Smrg	  number_minor="$2"
6182a7b590b3Smrg	  number_revision="$3"
6183a7b590b3Smrg	  #
6184a7b590b3Smrg	  # There are really only two kinds -- those that
6185a7b590b3Smrg	  # use the current revision as the major version
6186a7b590b3Smrg	  # and those that subtract age and use age as
6187a7b590b3Smrg	  # a minor version.  But, then there is irix
6188a7b590b3Smrg	  # which has an extra 1 added just for fun
6189a7b590b3Smrg	  #
6190a7b590b3Smrg	  case $version_type in
6191a7b590b3Smrg	  darwin|linux|osf|windows|none)
6192a7b590b3Smrg	    func_arith $number_major + $number_minor
6193a7b590b3Smrg	    current=$func_arith_result
6194a7b590b3Smrg	    age="$number_minor"
6195a7b590b3Smrg	    revision="$number_revision"
6196a7b590b3Smrg	    ;;
6197a7b590b3Smrg	  freebsd-aout|freebsd-elf|sunos)
6198a7b590b3Smrg	    current="$number_major"
6199a7b590b3Smrg	    revision="$number_minor"
6200a7b590b3Smrg	    age="0"
6201a7b590b3Smrg	    ;;
6202a7b590b3Smrg	  irix|nonstopux)
6203a7b590b3Smrg	    func_arith $number_major + $number_minor
6204a7b590b3Smrg	    current=$func_arith_result
6205a7b590b3Smrg	    age="$number_minor"
6206a7b590b3Smrg	    revision="$number_minor"
6207a7b590b3Smrg	    lt_irix_increment=no
6208a7b590b3Smrg	    ;;
6209a7b590b3Smrg	  esac
6210a7b590b3Smrg	  ;;
6211a7b590b3Smrg	no)
6212a7b590b3Smrg	  current="$1"
6213a7b590b3Smrg	  revision="$2"
6214a7b590b3Smrg	  age="$3"
6215a7b590b3Smrg	  ;;
6216a7b590b3Smrg	esac
6217a7b590b3Smrg
6218a7b590b3Smrg	# Check that each of the things are valid numbers.
6219a7b590b3Smrg	case $current in
6220a7b590b3Smrg	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]) ;;
6221a7b590b3Smrg	*)
6222a7b590b3Smrg	  func_error "CURRENT \`$current' must be a nonnegative integer"
6223a7b590b3Smrg	  func_fatal_error "\`$vinfo' is not valid version information"
6224a7b590b3Smrg	  ;;
6225a7b590b3Smrg	esac
6226a7b590b3Smrg
6227a7b590b3Smrg	case $revision in
6228a7b590b3Smrg	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]) ;;
6229a7b590b3Smrg	*)
6230a7b590b3Smrg	  func_error "REVISION \`$revision' must be a nonnegative integer"
6231a7b590b3Smrg	  func_fatal_error "\`$vinfo' is not valid version information"
6232a7b590b3Smrg	  ;;
6233a7b590b3Smrg	esac
6234a7b590b3Smrg
6235a7b590b3Smrg	case $age in
6236a7b590b3Smrg	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]) ;;
6237a7b590b3Smrg	*)
6238a7b590b3Smrg	  func_error "AGE \`$age' must be a nonnegative integer"
6239a7b590b3Smrg	  func_fatal_error "\`$vinfo' is not valid version information"
6240a7b590b3Smrg	  ;;
6241a7b590b3Smrg	esac
6242a7b590b3Smrg
6243a7b590b3Smrg	if test "$age" -gt "$current"; then
6244a7b590b3Smrg	  func_error "AGE \`$age' is greater than the current interface number \`$current'"
6245a7b590b3Smrg	  func_fatal_error "\`$vinfo' is not valid version information"
6246a7b590b3Smrg	fi
6247a7b590b3Smrg
6248a7b590b3Smrg	# Calculate the version variables.
6249a7b590b3Smrg	major=
6250a7b590b3Smrg	versuffix=
6251a7b590b3Smrg	verstring=
6252a7b590b3Smrg	case $version_type in
6253a7b590b3Smrg	none) ;;
6254a7b590b3Smrg
6255a7b590b3Smrg	darwin)
6256a7b590b3Smrg	  # Like Linux, but with the current version available in
6257a7b590b3Smrg	  # verstring for coding it into the library header
6258a7b590b3Smrg	  func_arith $current - $age
6259a7b590b3Smrg	  major=.$func_arith_result
6260a7b590b3Smrg	  versuffix="$major.$age.$revision"
6261a7b590b3Smrg	  # Darwin ld doesn't like 0 for these options...
6262a7b590b3Smrg	  func_arith $current + 1
6263a7b590b3Smrg	  minor_current=$func_arith_result
6264a7b590b3Smrg	  xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
6265a7b590b3Smrg	  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
6266a7b590b3Smrg	  ;;
6267a7b590b3Smrg
6268a7b590b3Smrg	freebsd-aout)
6269a7b590b3Smrg	  major=".$current"
6270a7b590b3Smrg	  versuffix=".$current.$revision";
6271a7b590b3Smrg	  ;;
6272a7b590b3Smrg
6273a7b590b3Smrg	freebsd-elf)
6274a7b590b3Smrg	  major=".$current"
6275a7b590b3Smrg	  versuffix=".$current"
6276a7b590b3Smrg	  ;;
6277a7b590b3Smrg
6278a7b590b3Smrg	irix | nonstopux)
6279a7b590b3Smrg	  if test "X$lt_irix_increment" = "Xno"; then
6280a7b590b3Smrg	    func_arith $current - $age
6281a7b590b3Smrg	  else
6282a7b590b3Smrg	    func_arith $current - $age + 1
6283a7b590b3Smrg	  fi
6284a7b590b3Smrg	  major=$func_arith_result
6285a7b590b3Smrg
6286a7b590b3Smrg	  case $version_type in
6287a7b590b3Smrg	    nonstopux) verstring_prefix=nonstopux ;;
6288a7b590b3Smrg	    *)         verstring_prefix=sgi ;;
6289a7b590b3Smrg	  esac
6290a7b590b3Smrg	  verstring="$verstring_prefix$major.$revision"
6291a7b590b3Smrg
6292a7b590b3Smrg	  # Add in all the interfaces that we are compatible with.
6293a7b590b3Smrg	  loop=$revision
6294a7b590b3Smrg	  while test "$loop" -ne 0; do
6295a7b590b3Smrg	    func_arith $revision - $loop
6296a7b590b3Smrg	    iface=$func_arith_result
6297a7b590b3Smrg	    func_arith $loop - 1
6298a7b590b3Smrg	    loop=$func_arith_result
6299a7b590b3Smrg	    verstring="$verstring_prefix$major.$iface:$verstring"
6300a7b590b3Smrg	  done
6301a7b590b3Smrg
6302a7b590b3Smrg	  # Before this point, $major must not contain `.'.
6303a7b590b3Smrg	  major=.$major
6304a7b590b3Smrg	  versuffix="$major.$revision"
6305a7b590b3Smrg	  ;;
6306a7b590b3Smrg
6307a7b590b3Smrg	linux)
6308a7b590b3Smrg	  func_arith $current - $age
6309a7b590b3Smrg	  major=.$func_arith_result
6310a7b590b3Smrg	  versuffix="$major.$age.$revision"
6311a7b590b3Smrg	  ;;
6312a7b590b3Smrg
6313a7b590b3Smrg	osf)
6314a7b590b3Smrg	  func_arith $current - $age
6315a7b590b3Smrg	  major=.$func_arith_result
6316a7b590b3Smrg	  versuffix=".$current.$age.$revision"
6317a7b590b3Smrg	  verstring="$current.$age.$revision"
6318a7b590b3Smrg
6319a7b590b3Smrg	  # Add in all the interfaces that we are compatible with.
6320a7b590b3Smrg	  loop=$age
6321a7b590b3Smrg	  while test "$loop" -ne 0; do
6322a7b590b3Smrg	    func_arith $current - $loop
6323a7b590b3Smrg	    iface=$func_arith_result
6324a7b590b3Smrg	    func_arith $loop - 1
6325a7b590b3Smrg	    loop=$func_arith_result
6326a7b590b3Smrg	    verstring="$verstring:${iface}.0"
6327a7b590b3Smrg	  done
6328a7b590b3Smrg
6329a7b590b3Smrg	  # Make executables depend on our current version.
6330a7b590b3Smrg	  verstring="$verstring:${current}.0"
6331a7b590b3Smrg	  ;;
6332a7b590b3Smrg
6333a7b590b3Smrg	qnx)
6334a7b590b3Smrg	  major=".$current"
6335a7b590b3Smrg	  versuffix=".$current"
6336a7b590b3Smrg	  ;;
6337a7b590b3Smrg
6338a7b590b3Smrg	sunos)
6339a7b590b3Smrg	  major=".$current"
6340a7b590b3Smrg	  versuffix=".$current.$revision"
6341a7b590b3Smrg	  ;;
6342a7b590b3Smrg
6343a7b590b3Smrg	windows)
6344a7b590b3Smrg	  # Use '-' rather than '.', since we only want one
6345a7b590b3Smrg	  # extension on DOS 8.3 filesystems.
6346a7b590b3Smrg	  func_arith $current - $age
6347a7b590b3Smrg	  major=$func_arith_result
6348a7b590b3Smrg	  versuffix="-$major"
6349a7b590b3Smrg	  ;;
6350a7b590b3Smrg
6351a7b590b3Smrg	*)
6352a7b590b3Smrg	  func_fatal_configuration "unknown library version type \`$version_type'"
6353a7b590b3Smrg	  ;;
6354a7b590b3Smrg	esac
6355a7b590b3Smrg
6356a7b590b3Smrg	# Clear the version info if we defaulted, and they specified a release.
6357a7b590b3Smrg	if test -z "$vinfo" && test -n "$release"; then
6358a7b590b3Smrg	  major=
6359a7b590b3Smrg	  case $version_type in
6360a7b590b3Smrg	  darwin)
6361a7b590b3Smrg	    # we can't check for "0.0" in archive_cmds due to quoting
6362a7b590b3Smrg	    # problems, so we reset it completely
6363a7b590b3Smrg	    verstring=
6364a7b590b3Smrg	    ;;
6365a7b590b3Smrg	  *)
6366a7b590b3Smrg	    verstring="0.0"
6367a7b590b3Smrg	    ;;
6368a7b590b3Smrg	  esac
6369a7b590b3Smrg	  if test "$need_version" = no; then
6370a7b590b3Smrg	    versuffix=
6371a7b590b3Smrg	  else
6372a7b590b3Smrg	    versuffix=".0.0"
6373a7b590b3Smrg	  fi
6374a7b590b3Smrg	fi
6375a7b590b3Smrg
6376a7b590b3Smrg	# Remove version info from name if versioning should be avoided
6377a7b590b3Smrg	if test "$avoid_version" = yes && test "$need_version" = no; then
6378a7b590b3Smrg	  major=
6379a7b590b3Smrg	  versuffix=
6380a7b590b3Smrg	  verstring=""
6381a7b590b3Smrg	fi
6382a7b590b3Smrg
6383a7b590b3Smrg	# Check to see if the archive will have undefined symbols.
6384a7b590b3Smrg	if test "$allow_undefined" = yes; then
6385a7b590b3Smrg	  if test "$allow_undefined_flag" = unsupported; then
6386a7b590b3Smrg	    func_warning "undefined symbols not allowed in $host shared libraries"
6387a7b590b3Smrg	    build_libtool_libs=no
6388a7b590b3Smrg	    build_old_libs=yes
6389a7b590b3Smrg	  fi
6390a7b590b3Smrg	else
6391a7b590b3Smrg	  # Don't allow undefined symbols.
6392a7b590b3Smrg	  allow_undefined_flag="$no_undefined_flag"
6393a7b590b3Smrg	fi
6394a7b590b3Smrg
6395a7b590b3Smrg      fi
6396a7b590b3Smrg
6397a7b590b3Smrg      func_generate_dlsyms "$libname" "$libname" "yes"
6398a7b590b3Smrg      libobjs="$libobjs $symfileobj"
6399a7b590b3Smrg      test "X$libobjs" = "X " && libobjs=
6400a7b590b3Smrg
6401a7b590b3Smrg      if test "$mode" != relink; then
6402a7b590b3Smrg	# Remove our outputs, but don't remove object files since they
6403a7b590b3Smrg	# may have been created when compiling PIC objects.
6404a7b590b3Smrg	removelist=
6405a7b590b3Smrg	tempremovelist=`$ECHO "$output_objdir/*"`
6406a7b590b3Smrg	for p in $tempremovelist; do
6407a7b590b3Smrg	  case $p in
6408a7b590b3Smrg	    *.$objext | *.gcno)
6409a7b590b3Smrg	       ;;
6410a7b590b3Smrg	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
6411a7b590b3Smrg	       if test "X$precious_files_regex" != "X"; then
6412a7b590b3Smrg		 if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
6413a7b590b3Smrg		 then
6414a7b590b3Smrg		   continue
6415a7b590b3Smrg		 fi
6416a7b590b3Smrg	       fi
6417a7b590b3Smrg	       removelist="$removelist $p"
6418a7b590b3Smrg	       ;;
6419a7b590b3Smrg	    *) ;;
6420a7b590b3Smrg	  esac
6421a7b590b3Smrg	done
6422a7b590b3Smrg	test -n "$removelist" && \
6423a7b590b3Smrg	  func_show_eval "${RM}r \$removelist"
6424a7b590b3Smrg      fi
6425a7b590b3Smrg
6426a7b590b3Smrg      # Now set the variables for building old libraries.
6427a7b590b3Smrg      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
6428a7b590b3Smrg	oldlibs="$oldlibs $output_objdir/$libname.$libext"
6429a7b590b3Smrg
6430a7b590b3Smrg	# Transform .lo files to .o files.
6431a7b590b3Smrg	oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
6432a7b590b3Smrg      fi
6433a7b590b3Smrg
6434a7b590b3Smrg      # Eliminate all temporary directories.
6435a7b590b3Smrg      #for path in $notinst_path; do
6436a7b590b3Smrg      #	lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"`
6437a7b590b3Smrg      #	deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"`
6438a7b590b3Smrg      #	dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"`
6439a7b590b3Smrg      #done
6440a7b590b3Smrg
6441a7b590b3Smrg      if test -n "$xrpath"; then
6442a7b590b3Smrg	# If the user specified any rpath flags, then add them.
6443a7b590b3Smrg	temp_xrpath=
6444a7b590b3Smrg	for libdir in $xrpath; do
6445a7b590b3Smrg	  temp_xrpath="$temp_xrpath -R$libdir"
6446a7b590b3Smrg	  case "$finalize_rpath " in
6447a7b590b3Smrg	  *" $libdir "*) ;;
6448a7b590b3Smrg	  *) finalize_rpath="$finalize_rpath $libdir" ;;
6449a7b590b3Smrg	  esac
6450a7b590b3Smrg	done
6451a7b590b3Smrg	if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
6452a7b590b3Smrg	  dependency_libs="$temp_xrpath $dependency_libs"
6453a7b590b3Smrg	fi
6454a7b590b3Smrg      fi
6455a7b590b3Smrg
6456a7b590b3Smrg      # Make sure dlfiles contains only unique files that won't be dlpreopened
6457a7b590b3Smrg      old_dlfiles="$dlfiles"
6458a7b590b3Smrg      dlfiles=
6459a7b590b3Smrg      for lib in $old_dlfiles; do
6460a7b590b3Smrg	case " $dlprefiles $dlfiles " in
6461a7b590b3Smrg	*" $lib "*) ;;
6462a7b590b3Smrg	*) dlfiles="$dlfiles $lib" ;;
6463a7b590b3Smrg	esac
6464a7b590b3Smrg      done
6465a7b590b3Smrg
6466a7b590b3Smrg      # Make sure dlprefiles contains only unique files
6467a7b590b3Smrg      old_dlprefiles="$dlprefiles"
6468a7b590b3Smrg      dlprefiles=
6469a7b590b3Smrg      for lib in $old_dlprefiles; do
6470a7b590b3Smrg	case "$dlprefiles " in
6471a7b590b3Smrg	*" $lib "*) ;;
6472a7b590b3Smrg	*) dlprefiles="$dlprefiles $lib" ;;
6473a7b590b3Smrg	esac
6474a7b590b3Smrg      done
6475a7b590b3Smrg
6476a7b590b3Smrg      if test "$build_libtool_libs" = yes; then
6477a7b590b3Smrg	if test -n "$rpath"; then
6478a7b590b3Smrg	  case $host in
6479a7b590b3Smrg	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc*)
6480a7b590b3Smrg	    # these systems don't actually have a c library (as such)!
6481a7b590b3Smrg	    ;;
6482a7b590b3Smrg	  *-*-rhapsody* | *-*-darwin1.[012])
6483a7b590b3Smrg	    # Rhapsody C library is in the System framework
6484a7b590b3Smrg	    deplibs="$deplibs System.ltframework"
6485a7b590b3Smrg	    ;;
6486a7b590b3Smrg	  *-*-netbsd*)
6487a7b590b3Smrg	    # Don't link with libc until the a.out ld.so is fixed.
6488a7b590b3Smrg	    ;;
6489a7b590b3Smrg	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
6490a7b590b3Smrg	    # Do not include libc due to us having libc/libc_r.
6491a7b590b3Smrg	    ;;
6492a7b590b3Smrg	  *-*-sco3.2v5* | *-*-sco5v6*)
6493a7b590b3Smrg	    # Causes problems with __ctype
6494a7b590b3Smrg	    ;;
6495a7b590b3Smrg	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
6496a7b590b3Smrg	    # Compiler inserts libc in the correct place for threads to work
6497a7b590b3Smrg	    ;;
6498a7b590b3Smrg	  *)
6499a7b590b3Smrg	    # Add libc to deplibs on all other systems if necessary.
6500a7b590b3Smrg	    if test "$build_libtool_need_lc" = "yes"; then
6501a7b590b3Smrg	      deplibs="$deplibs -lc"
6502a7b590b3Smrg	    fi
6503a7b590b3Smrg	    ;;
6504a7b590b3Smrg	  esac
6505a7b590b3Smrg	fi
6506a7b590b3Smrg
6507a7b590b3Smrg	# Transform deplibs into only deplibs that can be linked in shared.
6508a7b590b3Smrg	name_save=$name
6509a7b590b3Smrg	libname_save=$libname
6510a7b590b3Smrg	release_save=$release
6511a7b590b3Smrg	versuffix_save=$versuffix
6512a7b590b3Smrg	major_save=$major
6513a7b590b3Smrg	# I'm not sure if I'm treating the release correctly.  I think
6514a7b590b3Smrg	# release should show up in the -l (ie -lgmp5) so we don't want to
6515a7b590b3Smrg	# add it in twice.  Is that correct?
6516a7b590b3Smrg	release=""
6517a7b590b3Smrg	versuffix=""
6518a7b590b3Smrg	major=""
6519a7b590b3Smrg	newdeplibs=
6520a7b590b3Smrg	droppeddeps=no
6521a7b590b3Smrg	case $deplibs_check_method in
6522a7b590b3Smrg	pass_all)
6523a7b590b3Smrg	  # Don't check for shared/static.  Everything works.
6524a7b590b3Smrg	  # This might be a little naive.  We might want to check
6525a7b590b3Smrg	  # whether the library exists or not.  But this is on
6526a7b590b3Smrg	  # osf3 & osf4 and I'm not really sure... Just
6527a7b590b3Smrg	  # implementing what was already the behavior.
6528a7b590b3Smrg	  newdeplibs=$deplibs
6529a7b590b3Smrg	  ;;
6530a7b590b3Smrg	test_compile)
6531a7b590b3Smrg	  # This code stresses the "libraries are programs" paradigm to its
6532a7b590b3Smrg	  # limits. Maybe even breaks it.  We compile a program, linking it
6533a7b590b3Smrg	  # against the deplibs as a proxy for the library.  Then we can check
6534a7b590b3Smrg	  # whether they linked in statically or dynamically with ldd.
6535a7b590b3Smrg	  $opt_dry_run || $RM conftest.c
6536a7b590b3Smrg	  cat > conftest.c <<EOF
6537a7b590b3Smrg	  int main() { return 0; }
6538a7b590b3SmrgEOF
6539a7b590b3Smrg	  $opt_dry_run || $RM conftest
6540a7b590b3Smrg	  if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
6541a7b590b3Smrg	    ldd_output=`ldd conftest`
6542a7b590b3Smrg	    for i in $deplibs; do
6543a7b590b3Smrg	      case $i in
6544a7b590b3Smrg	      -l*)
6545a7b590b3Smrg		func_stripname -l '' "$i"
6546a7b590b3Smrg		name=$func_stripname_result
6547a7b590b3Smrg		if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
6548a7b590b3Smrg		  case " $predeps $postdeps " in
6549a7b590b3Smrg		  *" $i "*)
6550a7b590b3Smrg		    newdeplibs="$newdeplibs $i"
6551a7b590b3Smrg		    i=""
6552a7b590b3Smrg		    ;;
6553a7b590b3Smrg		  esac
6554a7b590b3Smrg		fi
6555a7b590b3Smrg		if test -n "$i" ; then
6556a7b590b3Smrg		  libname=`eval "\\$ECHO \"$libname_spec\""`
6557a7b590b3Smrg		  deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
6558a7b590b3Smrg		  set dummy $deplib_matches; shift
6559a7b590b3Smrg		  deplib_match=$1
6560a7b590b3Smrg		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
6561a7b590b3Smrg		    newdeplibs="$newdeplibs $i"
6562a7b590b3Smrg		  else
6563a7b590b3Smrg		    droppeddeps=yes
6564a7b590b3Smrg		    $ECHO
6565a7b590b3Smrg		    $ECHO "*** Warning: dynamic linker does not accept needed library $i."
6566a7b590b3Smrg		    $ECHO "*** I have the capability to make that library automatically link in when"
6567a7b590b3Smrg		    $ECHO "*** you link to this library.  But I can only do this if you have a"
6568a7b590b3Smrg		    $ECHO "*** shared version of the library, which I believe you do not have"
6569a7b590b3Smrg		    $ECHO "*** because a test_compile did reveal that the linker did not use it for"
6570a7b590b3Smrg		    $ECHO "*** its dynamic dependency list that programs get resolved with at runtime."
6571a7b590b3Smrg		  fi
6572a7b590b3Smrg		fi
6573a7b590b3Smrg		;;
6574a7b590b3Smrg	      *)
6575a7b590b3Smrg		newdeplibs="$newdeplibs $i"
6576a7b590b3Smrg		;;
6577a7b590b3Smrg	      esac
6578a7b590b3Smrg	    done
6579a7b590b3Smrg	  else
6580a7b590b3Smrg	    # Error occurred in the first compile.  Let's try to salvage
6581a7b590b3Smrg	    # the situation: Compile a separate program for each library.
6582a7b590b3Smrg	    for i in $deplibs; do
6583a7b590b3Smrg	      case $i in
6584a7b590b3Smrg	      -l*)
6585a7b590b3Smrg		func_stripname -l '' "$i"
6586a7b590b3Smrg		name=$func_stripname_result
6587a7b590b3Smrg		$opt_dry_run || $RM conftest
6588a7b590b3Smrg		if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
6589a7b590b3Smrg		  ldd_output=`ldd conftest`
6590a7b590b3Smrg		  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
6591a7b590b3Smrg		    case " $predeps $postdeps " in
6592a7b590b3Smrg		    *" $i "*)
6593a7b590b3Smrg		      newdeplibs="$newdeplibs $i"
6594a7b590b3Smrg		      i=""
6595a7b590b3Smrg		      ;;
6596a7b590b3Smrg		    esac
6597a7b590b3Smrg		  fi
6598a7b590b3Smrg		  if test -n "$i" ; then
6599a7b590b3Smrg		    libname=`eval "\\$ECHO \"$libname_spec\""`
6600a7b590b3Smrg		    deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
6601a7b590b3Smrg		    set dummy $deplib_matches; shift
6602a7b590b3Smrg		    deplib_match=$1
6603a7b590b3Smrg		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
6604a7b590b3Smrg		      newdeplibs="$newdeplibs $i"
6605a7b590b3Smrg		    else
6606a7b590b3Smrg		      droppeddeps=yes
6607a7b590b3Smrg		      $ECHO
6608a7b590b3Smrg		      $ECHO "*** Warning: dynamic linker does not accept needed library $i."
6609a7b590b3Smrg		      $ECHO "*** I have the capability to make that library automatically link in when"
6610a7b590b3Smrg		      $ECHO "*** you link to this library.  But I can only do this if you have a"
6611a7b590b3Smrg		      $ECHO "*** shared version of the library, which you do not appear to have"
6612a7b590b3Smrg		      $ECHO "*** because a test_compile did reveal that the linker did not use this one"
6613a7b590b3Smrg		      $ECHO "*** as a dynamic dependency that programs can get resolved with at runtime."
6614a7b590b3Smrg		    fi
6615a7b590b3Smrg		  fi
6616a7b590b3Smrg		else
6617a7b590b3Smrg		  droppeddeps=yes
6618a7b590b3Smrg		  $ECHO
6619a7b590b3Smrg		  $ECHO "*** Warning!  Library $i is needed by this library but I was not able to"
6620a7b590b3Smrg		  $ECHO "*** make it link in!  You will probably need to install it or some"
6621a7b590b3Smrg		  $ECHO "*** library that it depends on before this library will be fully"
6622a7b590b3Smrg		  $ECHO "*** functional.  Installing it before continuing would be even better."
6623a7b590b3Smrg		fi
6624a7b590b3Smrg		;;
6625a7b590b3Smrg	      *)
6626a7b590b3Smrg		newdeplibs="$newdeplibs $i"
6627a7b590b3Smrg		;;
6628a7b590b3Smrg	      esac
6629a7b590b3Smrg	    done
6630a7b590b3Smrg	  fi
6631a7b590b3Smrg	  ;;
6632a7b590b3Smrg	file_magic*)
6633a7b590b3Smrg	  set dummy $deplibs_check_method; shift
6634a7b590b3Smrg	  file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
6635a7b590b3Smrg	  for a_deplib in $deplibs; do
6636a7b590b3Smrg	    case $a_deplib in
6637a7b590b3Smrg	    -l*)
6638a7b590b3Smrg	      func_stripname -l '' "$a_deplib"
6639a7b590b3Smrg	      name=$func_stripname_result
6640a7b590b3Smrg	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
6641a7b590b3Smrg		case " $predeps $postdeps " in
6642a7b590b3Smrg		*" $a_deplib "*)
6643a7b590b3Smrg		  newdeplibs="$newdeplibs $a_deplib"
6644a7b590b3Smrg		  a_deplib=""
6645a7b590b3Smrg		  ;;
6646a7b590b3Smrg		esac
6647a7b590b3Smrg	      fi
6648a7b590b3Smrg	      if test -n "$a_deplib" ; then
6649a7b590b3Smrg		libname=`eval "\\$ECHO \"$libname_spec\""`
6650a7b590b3Smrg		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
6651a7b590b3Smrg		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
6652a7b590b3Smrg		  for potent_lib in $potential_libs; do
6653a7b590b3Smrg		      # Follow soft links.
6654a7b590b3Smrg		      if ls -lLd "$potent_lib" 2>/dev/null |
6655a7b590b3Smrg			 $GREP " -> " >/dev/null; then
6656a7b590b3Smrg			continue
6657a7b590b3Smrg		      fi
6658a7b590b3Smrg		      # The statement above tries to avoid entering an
6659a7b590b3Smrg		      # endless loop below, in case of cyclic links.
6660a7b590b3Smrg		      # We might still enter an endless loop, since a link
6661a7b590b3Smrg		      # loop can be closed while we follow links,
6662a7b590b3Smrg		      # but so what?
6663a7b590b3Smrg		      potlib="$potent_lib"
6664a7b590b3Smrg		      while test -h "$potlib" 2>/dev/null; do
6665a7b590b3Smrg			potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
6666a7b590b3Smrg			case $potliblink in
6667a7b590b3Smrg			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
6668a7b590b3Smrg			*) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
6669a7b590b3Smrg			esac
6670a7b590b3Smrg		      done
6671a7b590b3Smrg		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
6672a7b590b3Smrg			 $SED -e 10q |
6673a7b590b3Smrg			 $EGREP "$file_magic_regex" > /dev/null; then
6674a7b590b3Smrg			newdeplibs="$newdeplibs $a_deplib"
6675a7b590b3Smrg			a_deplib=""
6676a7b590b3Smrg			break 2
6677a7b590b3Smrg		      fi
6678a7b590b3Smrg		  done
6679a7b590b3Smrg		done
6680a7b590b3Smrg	      fi
6681a7b590b3Smrg	      if test -n "$a_deplib" ; then
6682a7b590b3Smrg		droppeddeps=yes
6683a7b590b3Smrg		$ECHO
6684a7b590b3Smrg		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
6685a7b590b3Smrg		$ECHO "*** I have the capability to make that library automatically link in when"
6686a7b590b3Smrg		$ECHO "*** you link to this library.  But I can only do this if you have a"
6687a7b590b3Smrg		$ECHO "*** shared version of the library, which you do not appear to have"
6688a7b590b3Smrg		$ECHO "*** because I did check the linker path looking for a file starting"
6689a7b590b3Smrg		if test -z "$potlib" ; then
6690a7b590b3Smrg		  $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
6691a7b590b3Smrg		else
6692a7b590b3Smrg		  $ECHO "*** with $libname and none of the candidates passed a file format test"
6693a7b590b3Smrg		  $ECHO "*** using a file magic. Last file checked: $potlib"
6694a7b590b3Smrg		fi
6695a7b590b3Smrg	      fi
6696a7b590b3Smrg	      ;;
6697a7b590b3Smrg	    *)
6698a7b590b3Smrg	      # Add a -L argument.
6699a7b590b3Smrg	      newdeplibs="$newdeplibs $a_deplib"
6700a7b590b3Smrg	      ;;
6701a7b590b3Smrg	    esac
6702a7b590b3Smrg	  done # Gone through all deplibs.
6703a7b590b3Smrg	  ;;
6704a7b590b3Smrg	match_pattern*)
6705a7b590b3Smrg	  set dummy $deplibs_check_method; shift
6706a7b590b3Smrg	  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
6707a7b590b3Smrg	  for a_deplib in $deplibs; do
6708a7b590b3Smrg	    case $a_deplib in
6709a7b590b3Smrg	    -l*)
6710a7b590b3Smrg	      func_stripname -l '' "$a_deplib"
6711a7b590b3Smrg	      name=$func_stripname_result
6712a7b590b3Smrg	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
6713a7b590b3Smrg		case " $predeps $postdeps " in
6714a7b590b3Smrg		*" $a_deplib "*)
6715a7b590b3Smrg		  newdeplibs="$newdeplibs $a_deplib"
6716a7b590b3Smrg		  a_deplib=""
6717a7b590b3Smrg		  ;;
6718a7b590b3Smrg		esac
6719a7b590b3Smrg	      fi
6720a7b590b3Smrg	      if test -n "$a_deplib" ; then
6721a7b590b3Smrg		libname=`eval "\\$ECHO \"$libname_spec\""`
6722a7b590b3Smrg		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
6723a7b590b3Smrg		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
6724a7b590b3Smrg		  for potent_lib in $potential_libs; do
6725a7b590b3Smrg		    potlib="$potent_lib" # see symlink-check above in file_magic test
6726a7b590b3Smrg		    if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \
6727a7b590b3Smrg		       $EGREP "$match_pattern_regex" > /dev/null; then
6728a7b590b3Smrg		      newdeplibs="$newdeplibs $a_deplib"
6729a7b590b3Smrg		      a_deplib=""
6730a7b590b3Smrg		      break 2
6731a7b590b3Smrg		    fi
6732a7b590b3Smrg		  done
6733a7b590b3Smrg		done
6734a7b590b3Smrg	      fi
6735a7b590b3Smrg	      if test -n "$a_deplib" ; then
6736a7b590b3Smrg		droppeddeps=yes
6737a7b590b3Smrg		$ECHO
6738a7b590b3Smrg		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
6739a7b590b3Smrg		$ECHO "*** I have the capability to make that library automatically link in when"
6740a7b590b3Smrg		$ECHO "*** you link to this library.  But I can only do this if you have a"
6741a7b590b3Smrg		$ECHO "*** shared version of the library, which you do not appear to have"
6742a7b590b3Smrg		$ECHO "*** because I did check the linker path looking for a file starting"
6743a7b590b3Smrg		if test -z "$potlib" ; then
6744a7b590b3Smrg		  $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
6745a7b590b3Smrg		else
6746a7b590b3Smrg		  $ECHO "*** with $libname and none of the candidates passed a file format test"
6747a7b590b3Smrg		  $ECHO "*** using a regex pattern. Last file checked: $potlib"
6748a7b590b3Smrg		fi
6749a7b590b3Smrg	      fi
6750a7b590b3Smrg	      ;;
6751a7b590b3Smrg	    *)
6752a7b590b3Smrg	      # Add a -L argument.
6753a7b590b3Smrg	      newdeplibs="$newdeplibs $a_deplib"
6754a7b590b3Smrg	      ;;
6755a7b590b3Smrg	    esac
6756a7b590b3Smrg	  done # Gone through all deplibs.
6757a7b590b3Smrg	  ;;
6758a7b590b3Smrg	none | unknown | *)
6759a7b590b3Smrg	  newdeplibs=""
6760a7b590b3Smrg	  tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \
6761a7b590b3Smrg	      -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'`
6762a7b590b3Smrg	  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
6763a7b590b3Smrg	    for i in $predeps $postdeps ; do
6764a7b590b3Smrg	      # can't use Xsed below, because $i might contain '/'
6765a7b590b3Smrg	      tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"`
6766a7b590b3Smrg	    done
6767a7b590b3Smrg	  fi
6768a7b590b3Smrg	  if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[	 ]//g' |
6769a7b590b3Smrg	     $GREP . >/dev/null; then
6770a7b590b3Smrg	    $ECHO
6771a7b590b3Smrg	    if test "X$deplibs_check_method" = "Xnone"; then
6772a7b590b3Smrg	      $ECHO "*** Warning: inter-library dependencies are not supported in this platform."
6773a7b590b3Smrg	    else
6774a7b590b3Smrg	      $ECHO "*** Warning: inter-library dependencies are not known to be supported."
6775a7b590b3Smrg	    fi
6776a7b590b3Smrg	    $ECHO "*** All declared inter-library dependencies are being dropped."
6777a7b590b3Smrg	    droppeddeps=yes
6778a7b590b3Smrg	  fi
6779a7b590b3Smrg	  ;;
6780a7b590b3Smrg	esac
6781a7b590b3Smrg	versuffix=$versuffix_save
6782a7b590b3Smrg	major=$major_save
6783a7b590b3Smrg	release=$release_save
6784a7b590b3Smrg	libname=$libname_save
6785a7b590b3Smrg	name=$name_save
6786a7b590b3Smrg
6787a7b590b3Smrg	case $host in
6788a7b590b3Smrg	*-*-rhapsody* | *-*-darwin1.[012])
6789a7b590b3Smrg	  # On Rhapsody replace the C library with the System framework
6790a7b590b3Smrg	  newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
6791a7b590b3Smrg	  ;;
6792a7b590b3Smrg	esac
6793a7b590b3Smrg
6794a7b590b3Smrg	if test "$droppeddeps" = yes; then
6795a7b590b3Smrg	  if test "$module" = yes; then
6796a7b590b3Smrg	    $ECHO
6797a7b590b3Smrg	    $ECHO "*** Warning: libtool could not satisfy all declared inter-library"
6798a7b590b3Smrg	    $ECHO "*** dependencies of module $libname.  Therefore, libtool will create"
6799a7b590b3Smrg	    $ECHO "*** a static module, that should work as long as the dlopening"
6800a7b590b3Smrg	    $ECHO "*** application is linked with the -dlopen flag."
6801a7b590b3Smrg	    if test -z "$global_symbol_pipe"; then
6802a7b590b3Smrg	      $ECHO
6803a7b590b3Smrg	      $ECHO "*** However, this would only work if libtool was able to extract symbol"
6804a7b590b3Smrg	      $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
6805a7b590b3Smrg	      $ECHO "*** not find such a program.  So, this module is probably useless."
6806a7b590b3Smrg	      $ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
6807a7b590b3Smrg	    fi
6808a7b590b3Smrg	    if test "$build_old_libs" = no; then
6809a7b590b3Smrg	      oldlibs="$output_objdir/$libname.$libext"
6810a7b590b3Smrg	      build_libtool_libs=module
6811a7b590b3Smrg	      build_old_libs=yes
6812a7b590b3Smrg	    else
6813a7b590b3Smrg	      build_libtool_libs=no
6814a7b590b3Smrg	    fi
6815a7b590b3Smrg	  else
6816a7b590b3Smrg	    $ECHO "*** The inter-library dependencies that have been dropped here will be"
6817a7b590b3Smrg	    $ECHO "*** automatically added whenever a program is linked with this library"
6818a7b590b3Smrg	    $ECHO "*** or is declared to -dlopen it."
6819a7b590b3Smrg
6820a7b590b3Smrg	    if test "$allow_undefined" = no; then
6821a7b590b3Smrg	      $ECHO
6822a7b590b3Smrg	      $ECHO "*** Since this library must not contain undefined symbols,"
6823a7b590b3Smrg	      $ECHO "*** because either the platform does not support them or"
6824a7b590b3Smrg	      $ECHO "*** it was explicitly requested with -no-undefined,"
6825a7b590b3Smrg	      $ECHO "*** libtool will only create a static version of it."
6826a7b590b3Smrg	      if test "$build_old_libs" = no; then
6827a7b590b3Smrg		oldlibs="$output_objdir/$libname.$libext"
6828a7b590b3Smrg		build_libtool_libs=module
6829a7b590b3Smrg		build_old_libs=yes
6830a7b590b3Smrg	      else
6831a7b590b3Smrg		build_libtool_libs=no
6832a7b590b3Smrg	      fi
6833a7b590b3Smrg	    fi
6834a7b590b3Smrg	  fi
6835a7b590b3Smrg	fi
6836a7b590b3Smrg	# Done checking deplibs!
6837a7b590b3Smrg	deplibs=$newdeplibs
6838a7b590b3Smrg      fi
6839a7b590b3Smrg      # Time to change all our "foo.ltframework" stuff back to "-framework foo"
6840a7b590b3Smrg      case $host in
6841a7b590b3Smrg	*-*-darwin*)
6842a7b590b3Smrg	  newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
6843a7b590b3Smrg	  new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
6844a7b590b3Smrg	  deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
6845a7b590b3Smrg	  ;;
6846a7b590b3Smrg      esac
6847a7b590b3Smrg
6848a7b590b3Smrg      # move library search paths that coincide with paths to not yet
6849a7b590b3Smrg      # installed libraries to the beginning of the library search list
6850a7b590b3Smrg      new_libs=
6851a7b590b3Smrg      for path in $notinst_path; do
6852a7b590b3Smrg	case " $new_libs " in
6853a7b590b3Smrg	*" -L$path/$objdir "*) ;;
6854a7b590b3Smrg	*)
6855a7b590b3Smrg	  case " $deplibs " in
6856a7b590b3Smrg	  *" -L$path/$objdir "*)
6857a7b590b3Smrg	    new_libs="$new_libs -L$path/$objdir" ;;
6858a7b590b3Smrg	  esac
6859a7b590b3Smrg	  ;;
6860a7b590b3Smrg	esac
6861a7b590b3Smrg      done
6862a7b590b3Smrg      for deplib in $deplibs; do
6863a7b590b3Smrg	case $deplib in
6864a7b590b3Smrg	-L*)
6865a7b590b3Smrg	  case " $new_libs " in
6866a7b590b3Smrg	  *" $deplib "*) ;;
6867a7b590b3Smrg	  *) new_libs="$new_libs $deplib" ;;
6868a7b590b3Smrg	  esac
6869a7b590b3Smrg	  ;;
6870a7b590b3Smrg	*) new_libs="$new_libs $deplib" ;;
6871a7b590b3Smrg	esac
6872a7b590b3Smrg      done
6873a7b590b3Smrg      deplibs="$new_libs"
6874a7b590b3Smrg
6875a7b590b3Smrg      # All the library-specific variables (install_libdir is set above).
6876a7b590b3Smrg      library_names=
6877a7b590b3Smrg      old_library=
6878a7b590b3Smrg      dlname=
6879a7b590b3Smrg
6880a7b590b3Smrg      # Test again, we may have decided not to build it any more
6881a7b590b3Smrg      if test "$build_libtool_libs" = yes; then
6882a7b590b3Smrg	if test "$hardcode_into_libs" = yes; then
6883a7b590b3Smrg	  # Hardcode the library paths
6884a7b590b3Smrg	  hardcode_libdirs=
6885a7b590b3Smrg	  dep_rpath=
6886a7b590b3Smrg	  rpath="$finalize_rpath"
6887a7b590b3Smrg	  test "$mode" != relink && rpath="$compile_rpath$rpath"
6888a7b590b3Smrg	  for libdir in $rpath; do
6889a7b590b3Smrg	    if test -n "$hardcode_libdir_flag_spec"; then
6890a7b590b3Smrg	      if test -n "$hardcode_libdir_separator"; then
6891a7b590b3Smrg		if test -z "$hardcode_libdirs"; then
6892a7b590b3Smrg		  hardcode_libdirs="$libdir"
6893a7b590b3Smrg		else
6894a7b590b3Smrg		  # Just accumulate the unique libdirs.
6895a7b590b3Smrg		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
6896a7b590b3Smrg		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
6897a7b590b3Smrg		    ;;
6898a7b590b3Smrg		  *)
6899a7b590b3Smrg		    hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
6900a7b590b3Smrg		    ;;
6901a7b590b3Smrg		  esac
6902a7b590b3Smrg		fi
6903a7b590b3Smrg	      else
6904a7b590b3Smrg		eval flag=\"$hardcode_libdir_flag_spec\"
6905a7b590b3Smrg		dep_rpath="$dep_rpath $flag"
6906a7b590b3Smrg	      fi
6907a7b590b3Smrg	    elif test -n "$runpath_var"; then
6908a7b590b3Smrg	      case "$perm_rpath " in
6909a7b590b3Smrg	      *" $libdir "*) ;;
6910a7b590b3Smrg	      *) perm_rpath="$perm_rpath $libdir" ;;
6911a7b590b3Smrg	      esac
6912a7b590b3Smrg	    fi
6913a7b590b3Smrg	  done
6914a7b590b3Smrg	  # Substitute the hardcoded libdirs into the rpath.
6915a7b590b3Smrg	  if test -n "$hardcode_libdir_separator" &&
6916a7b590b3Smrg	     test -n "$hardcode_libdirs"; then
6917a7b590b3Smrg	    libdir="$hardcode_libdirs"
6918a7b590b3Smrg	    if test -n "$hardcode_libdir_flag_spec_ld"; then
6919a7b590b3Smrg	      eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
6920a7b590b3Smrg	    else
6921a7b590b3Smrg	      eval dep_rpath=\"$hardcode_libdir_flag_spec\"
6922a7b590b3Smrg	    fi
6923a7b590b3Smrg	  fi
6924a7b590b3Smrg	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
6925a7b590b3Smrg	    # We should set the runpath_var.
6926a7b590b3Smrg	    rpath=
6927a7b590b3Smrg	    for dir in $perm_rpath; do
6928a7b590b3Smrg	      rpath="$rpath$dir:"
6929a7b590b3Smrg	    done
6930a7b590b3Smrg	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
6931a7b590b3Smrg	  fi
6932a7b590b3Smrg	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
6933a7b590b3Smrg	fi
6934943345d3Smrg
6935a7b590b3Smrg	shlibpath="$finalize_shlibpath"
6936a7b590b3Smrg	test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
6937a7b590b3Smrg	if test -n "$shlibpath"; then
6938a7b590b3Smrg	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
6939a7b590b3Smrg	fi
6940943345d3Smrg
6941a7b590b3Smrg	# Get the real and link names of the library.
6942a7b590b3Smrg	eval shared_ext=\"$shrext_cmds\"
6943a7b590b3Smrg	eval library_names=\"$library_names_spec\"
6944a7b590b3Smrg	set dummy $library_names
6945a7b590b3Smrg	shift
6946a7b590b3Smrg	realname="$1"
6947a7b590b3Smrg	shift
6948943345d3Smrg
6949a7b590b3Smrg	if test -n "$soname_spec"; then
6950a7b590b3Smrg	  eval soname=\"$soname_spec\"
6951a7b590b3Smrg	else
6952a7b590b3Smrg	  soname="$realname"
6953a7b590b3Smrg	fi
6954a7b590b3Smrg	if test -z "$dlname"; then
6955a7b590b3Smrg	  dlname=$soname
6956a7b590b3Smrg	fi
6957943345d3Smrg
6958a7b590b3Smrg	lib="$output_objdir/$realname"
6959a7b590b3Smrg	linknames=
6960a7b590b3Smrg	for link
6961a7b590b3Smrg	do
6962a7b590b3Smrg	  linknames="$linknames $link"
6963a7b590b3Smrg	done
6964943345d3Smrg
6965a7b590b3Smrg	# Use standard objects if they are pic
6966a7b590b3Smrg	test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
6967a7b590b3Smrg	test "X$libobjs" = "X " && libobjs=
6968943345d3Smrg
6969a7b590b3Smrg	delfiles=
6970a7b590b3Smrg	if test -n "$export_symbols" && test -n "$include_expsyms"; then
6971a7b590b3Smrg	  $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
6972a7b590b3Smrg	  export_symbols="$output_objdir/$libname.uexp"
6973a7b590b3Smrg	  delfiles="$delfiles $export_symbols"
6974a7b590b3Smrg	fi
6975943345d3Smrg
6976a7b590b3Smrg	orig_export_symbols=
6977a7b590b3Smrg	case $host_os in
6978a7b590b3Smrg	cygwin* | mingw* | cegcc*)
6979a7b590b3Smrg	  if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
6980a7b590b3Smrg	    # exporting using user supplied symfile
6981a7b590b3Smrg	    if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
6982a7b590b3Smrg	      # and it's NOT already a .def file. Must figure out
6983a7b590b3Smrg	      # which of the given symbols are data symbols and tag
6984a7b590b3Smrg	      # them as such. So, trigger use of export_symbols_cmds.
6985a7b590b3Smrg	      # export_symbols gets reassigned inside the "prepare
6986a7b590b3Smrg	      # the list of exported symbols" if statement, so the
6987a7b590b3Smrg	      # include_expsyms logic still works.
6988a7b590b3Smrg	      orig_export_symbols="$export_symbols"
6989a7b590b3Smrg	      export_symbols=
6990a7b590b3Smrg	      always_export_symbols=yes
6991a7b590b3Smrg	    fi
6992a7b590b3Smrg	  fi
6993a7b590b3Smrg	  ;;
6994a7b590b3Smrg	esac
6995943345d3Smrg
6996a7b590b3Smrg	# Prepare the list of exported symbols
6997a7b590b3Smrg	if test -z "$export_symbols"; then
6998a7b590b3Smrg	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
6999a7b590b3Smrg	    func_verbose "generating symbol list for \`$libname.la'"
7000a7b590b3Smrg	    export_symbols="$output_objdir/$libname.exp"
7001a7b590b3Smrg	    $opt_dry_run || $RM $export_symbols
7002a7b590b3Smrg	    cmds=$export_symbols_cmds
7003a7b590b3Smrg	    save_ifs="$IFS"; IFS='~'
7004a7b590b3Smrg	    for cmd in $cmds; do
7005a7b590b3Smrg	      IFS="$save_ifs"
7006a7b590b3Smrg	      eval cmd=\"$cmd\"
7007a7b590b3Smrg	      func_len " $cmd"
7008a7b590b3Smrg	      len=$func_len_result
7009a7b590b3Smrg	      if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
7010a7b590b3Smrg		func_show_eval "$cmd" 'exit $?'
7011a7b590b3Smrg		skipped_export=false
7012a7b590b3Smrg	      else
7013a7b590b3Smrg		# The command line is too long to execute in one step.
7014a7b590b3Smrg		func_verbose "using reloadable object file for export list..."
7015a7b590b3Smrg		skipped_export=:
7016a7b590b3Smrg		# Break out early, otherwise skipped_export may be
7017a7b590b3Smrg		# set to false by a later but shorter cmd.
7018a7b590b3Smrg		break
7019a7b590b3Smrg	      fi
7020a7b590b3Smrg	    done
7021a7b590b3Smrg	    IFS="$save_ifs"
7022a7b590b3Smrg	    if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
7023a7b590b3Smrg	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
7024a7b590b3Smrg	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
7025a7b590b3Smrg	    fi
7026a7b590b3Smrg	  fi
7027943345d3Smrg	fi
7028943345d3Smrg
7029a7b590b3Smrg	if test -n "$export_symbols" && test -n "$include_expsyms"; then
7030a7b590b3Smrg	  tmp_export_symbols="$export_symbols"
7031a7b590b3Smrg	  test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
7032a7b590b3Smrg	  $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
7033a7b590b3Smrg	fi
7034943345d3Smrg
7035a7b590b3Smrg	if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
7036a7b590b3Smrg	  # The given exports_symbols file has to be filtered, so filter it.
7037a7b590b3Smrg	  func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
7038a7b590b3Smrg	  # FIXME: $output_objdir/$libname.filter potentially contains lots of
7039a7b590b3Smrg	  # 's' commands which not all seds can handle. GNU sed should be fine
7040a7b590b3Smrg	  # though. Also, the filter scales superlinearly with the number of
7041a7b590b3Smrg	  # global variables. join(1) would be nice here, but unfortunately
7042a7b590b3Smrg	  # isn't a blessed tool.
7043a7b590b3Smrg	  $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
7044a7b590b3Smrg	  delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
7045a7b590b3Smrg	  export_symbols=$output_objdir/$libname.def
7046a7b590b3Smrg	  $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
7047a7b590b3Smrg	fi
7048943345d3Smrg
7049a7b590b3Smrg	tmp_deplibs=
7050a7b590b3Smrg	for test_deplib in $deplibs; do
7051a7b590b3Smrg	  case " $convenience " in
7052a7b590b3Smrg	  *" $test_deplib "*) ;;
7053a7b590b3Smrg	  *)
7054a7b590b3Smrg	    tmp_deplibs="$tmp_deplibs $test_deplib"
7055a7b590b3Smrg	    ;;
7056a7b590b3Smrg	  esac
7057a7b590b3Smrg	done
7058a7b590b3Smrg	deplibs="$tmp_deplibs"
7059943345d3Smrg
7060a7b590b3Smrg	if test -n "$convenience"; then
7061a7b590b3Smrg	  if test -n "$whole_archive_flag_spec" &&
7062a7b590b3Smrg	    test "$compiler_needs_object" = yes &&
7063a7b590b3Smrg	    test -z "$libobjs"; then
7064a7b590b3Smrg	    # extract the archives, so we have objects to list.
7065a7b590b3Smrg	    # TODO: could optimize this to just extract one archive.
7066a7b590b3Smrg	    whole_archive_flag_spec=
7067a7b590b3Smrg	  fi
7068a7b590b3Smrg	  if test -n "$whole_archive_flag_spec"; then
7069a7b590b3Smrg	    save_libobjs=$libobjs
7070a7b590b3Smrg	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
7071a7b590b3Smrg	    test "X$libobjs" = "X " && libobjs=
7072a7b590b3Smrg	  else
7073a7b590b3Smrg	    gentop="$output_objdir/${outputname}x"
7074a7b590b3Smrg	    generated="$generated $gentop"
7075943345d3Smrg
7076a7b590b3Smrg	    func_extract_archives $gentop $convenience
7077a7b590b3Smrg	    libobjs="$libobjs $func_extract_archives_result"
7078a7b590b3Smrg	    test "X$libobjs" = "X " && libobjs=
7079a7b590b3Smrg	  fi
7080943345d3Smrg	fi
7081943345d3Smrg
7082a7b590b3Smrg	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
7083a7b590b3Smrg	  eval flag=\"$thread_safe_flag_spec\"
7084a7b590b3Smrg	  linker_flags="$linker_flags $flag"
7085943345d3Smrg	fi
7086943345d3Smrg
7087a7b590b3Smrg	# Make a backup of the uninstalled library when relinking
7088a7b590b3Smrg	if test "$mode" = relink; then
7089a7b590b3Smrg	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
7090a7b590b3Smrg	fi
7091943345d3Smrg
7092a7b590b3Smrg	# Do each of the archive commands.
7093a7b590b3Smrg	if test "$module" = yes && test -n "$module_cmds" ; then
7094a7b590b3Smrg	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
7095a7b590b3Smrg	    eval test_cmds=\"$module_expsym_cmds\"
7096a7b590b3Smrg	    cmds=$module_expsym_cmds
7097a7b590b3Smrg	  else
7098a7b590b3Smrg	    eval test_cmds=\"$module_cmds\"
7099a7b590b3Smrg	    cmds=$module_cmds
7100a7b590b3Smrg	  fi
7101943345d3Smrg	else
7102a7b590b3Smrg	  if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
7103a7b590b3Smrg	    eval test_cmds=\"$archive_expsym_cmds\"
7104a7b590b3Smrg	    cmds=$archive_expsym_cmds
7105a7b590b3Smrg	  else
7106a7b590b3Smrg	    eval test_cmds=\"$archive_cmds\"
7107a7b590b3Smrg	    cmds=$archive_cmds
7108a7b590b3Smrg	  fi
7109943345d3Smrg	fi
7110943345d3Smrg
7111a7b590b3Smrg	if test "X$skipped_export" != "X:" &&
7112a7b590b3Smrg	   func_len " $test_cmds" &&
7113a7b590b3Smrg	   len=$func_len_result &&
7114a7b590b3Smrg	   test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
7115a7b590b3Smrg	  :
7116a7b590b3Smrg	else
7117a7b590b3Smrg	  # The command line is too long to link in one step, link piecewise
7118a7b590b3Smrg	  # or, if using GNU ld and skipped_export is not :, use a linker
7119a7b590b3Smrg	  # script.
7120943345d3Smrg
7121a7b590b3Smrg	  # Save the value of $output and $libobjs because we want to
7122a7b590b3Smrg	  # use them later.  If we have whole_archive_flag_spec, we
7123a7b590b3Smrg	  # want to use save_libobjs as it was before
7124a7b590b3Smrg	  # whole_archive_flag_spec was expanded, because we can't
7125a7b590b3Smrg	  # assume the linker understands whole_archive_flag_spec.
7126a7b590b3Smrg	  # This may have to be revisited, in case too many
7127a7b590b3Smrg	  # convenience libraries get linked in and end up exceeding
7128a7b590b3Smrg	  # the spec.
7129a7b590b3Smrg	  if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
7130a7b590b3Smrg	    save_libobjs=$libobjs
7131a7b590b3Smrg	  fi
7132a7b590b3Smrg	  save_output=$output
7133a7b590b3Smrg	  output_la=`$ECHO "X$output" | $Xsed -e "$basename"`
7134943345d3Smrg
7135a7b590b3Smrg	  # Clear the reloadable object creation command queue and
7136a7b590b3Smrg	  # initialize k to one.
7137a7b590b3Smrg	  test_cmds=
7138a7b590b3Smrg	  concat_cmds=
7139a7b590b3Smrg	  objlist=
7140a7b590b3Smrg	  last_robj=
7141a7b590b3Smrg	  k=1
7142a7b590b3Smrg
7143a7b590b3Smrg	  if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
7144a7b590b3Smrg	    output=${output_objdir}/${output_la}.lnkscript
7145a7b590b3Smrg	    func_verbose "creating GNU ld script: $output"
7146a7b590b3Smrg	    $ECHO 'INPUT (' > $output
7147a7b590b3Smrg	    for obj in $save_libobjs
7148943345d3Smrg	    do
7149a7b590b3Smrg	      $ECHO "$obj" >> $output
7150a7b590b3Smrg	    done
7151a7b590b3Smrg	    $ECHO ')' >> $output
7152a7b590b3Smrg	    delfiles="$delfiles $output"
7153a7b590b3Smrg	  elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
7154a7b590b3Smrg	    output=${output_objdir}/${output_la}.lnk
7155a7b590b3Smrg	    func_verbose "creating linker input file list: $output"
7156a7b590b3Smrg	    : > $output
7157a7b590b3Smrg	    set x $save_libobjs
7158a7b590b3Smrg	    shift
7159a7b590b3Smrg	    firstobj=
7160a7b590b3Smrg	    if test "$compiler_needs_object" = yes; then
7161a7b590b3Smrg	      firstobj="$1 "
7162a7b590b3Smrg	      shift
7163a7b590b3Smrg	    fi
7164a7b590b3Smrg	    for obj
7165a7b590b3Smrg	    do
7166a7b590b3Smrg	      $ECHO "$obj" >> $output
7167a7b590b3Smrg	    done
7168a7b590b3Smrg	    delfiles="$delfiles $output"
7169a7b590b3Smrg	    output=$firstobj\"$file_list_spec$output\"
7170a7b590b3Smrg	  else
7171a7b590b3Smrg	    if test -n "$save_libobjs"; then
7172a7b590b3Smrg	      func_verbose "creating reloadable object files..."
7173a7b590b3Smrg	      output=$output_objdir/$output_la-${k}.$objext
7174a7b590b3Smrg	      eval test_cmds=\"$reload_cmds\"
7175a7b590b3Smrg	      func_len " $test_cmds"
7176a7b590b3Smrg	      len0=$func_len_result
7177a7b590b3Smrg	      len=$len0
7178a7b590b3Smrg
7179a7b590b3Smrg	      # Loop over the list of objects to be linked.
7180a7b590b3Smrg	      for obj in $save_libobjs
7181a7b590b3Smrg	      do
7182a7b590b3Smrg		func_len " $obj"
7183a7b590b3Smrg		func_arith $len + $func_len_result
7184a7b590b3Smrg		len=$func_arith_result
7185a7b590b3Smrg		if test "X$objlist" = X ||
7186a7b590b3Smrg		   test "$len" -lt "$max_cmd_len"; then
7187a7b590b3Smrg		  func_append objlist " $obj"
7188a7b590b3Smrg		else
7189a7b590b3Smrg		  # The command $test_cmds is almost too long, add a
7190a7b590b3Smrg		  # command to the queue.
7191a7b590b3Smrg		  if test "$k" -eq 1 ; then
7192a7b590b3Smrg		    # The first file doesn't have a previous command to add.
7193a7b590b3Smrg		    eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
7194a7b590b3Smrg		  else
7195a7b590b3Smrg		    # All subsequent reloadable object files will link in
7196a7b590b3Smrg		    # the last one created.
7197a7b590b3Smrg		    eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj~\$RM $last_robj\"
7198a7b590b3Smrg		  fi
7199a7b590b3Smrg		  last_robj=$output_objdir/$output_la-${k}.$objext
7200a7b590b3Smrg		  func_arith $k + 1
7201a7b590b3Smrg		  k=$func_arith_result
7202a7b590b3Smrg		  output=$output_objdir/$output_la-${k}.$objext
7203a7b590b3Smrg		  objlist=$obj
7204a7b590b3Smrg		  func_len " $last_robj"
7205a7b590b3Smrg		  func_arith $len0 + $func_len_result
7206a7b590b3Smrg		  len=$func_arith_result
7207a7b590b3Smrg		fi
7208a7b590b3Smrg	      done
7209a7b590b3Smrg	      # Handle the remaining objects by creating one last
7210a7b590b3Smrg	      # reloadable object file.  All subsequent reloadable object
7211a7b590b3Smrg	      # files will link in the last one created.
7212a7b590b3Smrg	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
7213a7b590b3Smrg	      eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
7214a7b590b3Smrg	      if test -n "$last_robj"; then
7215a7b590b3Smrg	        eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
7216a7b590b3Smrg	      fi
7217a7b590b3Smrg	      delfiles="$delfiles $output"
7218943345d3Smrg
7219a7b590b3Smrg	    else
7220a7b590b3Smrg	      output=
7221a7b590b3Smrg	    fi
7222943345d3Smrg
7223a7b590b3Smrg	    if ${skipped_export-false}; then
7224a7b590b3Smrg	      func_verbose "generating symbol list for \`$libname.la'"
7225a7b590b3Smrg	      export_symbols="$output_objdir/$libname.exp"
7226a7b590b3Smrg	      $opt_dry_run || $RM $export_symbols
7227a7b590b3Smrg	      libobjs=$output
7228a7b590b3Smrg	      # Append the command to create the export file.
7229a7b590b3Smrg	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
7230a7b590b3Smrg	      eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
7231a7b590b3Smrg	      if test -n "$last_robj"; then
7232a7b590b3Smrg		eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
7233a7b590b3Smrg	      fi
7234943345d3Smrg	    fi
7235943345d3Smrg
7236a7b590b3Smrg	    test -n "$save_libobjs" &&
7237a7b590b3Smrg	      func_verbose "creating a temporary reloadable object file: $output"
7238943345d3Smrg
7239a7b590b3Smrg	    # Loop through the commands generated above and execute them.
7240a7b590b3Smrg	    save_ifs="$IFS"; IFS='~'
7241a7b590b3Smrg	    for cmd in $concat_cmds; do
7242a7b590b3Smrg	      IFS="$save_ifs"
7243a7b590b3Smrg	      $opt_silent || {
7244a7b590b3Smrg		  func_quote_for_expand "$cmd"
7245a7b590b3Smrg		  eval "func_echo $func_quote_for_expand_result"
7246a7b590b3Smrg	      }
7247a7b590b3Smrg	      $opt_dry_run || eval "$cmd" || {
7248a7b590b3Smrg		lt_exit=$?
7249a7b590b3Smrg
7250a7b590b3Smrg		# Restore the uninstalled library and exit
7251a7b590b3Smrg		if test "$mode" = relink; then
7252a7b590b3Smrg		  ( cd "$output_objdir" && \
7253a7b590b3Smrg		    $RM "${realname}T" && \
7254a7b590b3Smrg		    $MV "${realname}U" "$realname" )
7255a7b590b3Smrg		fi
7256943345d3Smrg
7257a7b590b3Smrg		exit $lt_exit
7258a7b590b3Smrg	      }
7259a7b590b3Smrg	    done
7260a7b590b3Smrg	    IFS="$save_ifs"
7261943345d3Smrg
7262a7b590b3Smrg	    if test -n "$export_symbols_regex" && ${skipped_export-false}; then
7263a7b590b3Smrg	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
7264a7b590b3Smrg	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
7265943345d3Smrg	    fi
7266943345d3Smrg	  fi
7267943345d3Smrg
7268a7b590b3Smrg          if ${skipped_export-false}; then
7269a7b590b3Smrg	    if test -n "$export_symbols" && test -n "$include_expsyms"; then
7270a7b590b3Smrg	      tmp_export_symbols="$export_symbols"
7271a7b590b3Smrg	      test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
7272a7b590b3Smrg	      $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
7273a7b590b3Smrg	    fi
7274943345d3Smrg
7275a7b590b3Smrg	    if test -n "$orig_export_symbols"; then
7276a7b590b3Smrg	      # The given exports_symbols file has to be filtered, so filter it.
7277a7b590b3Smrg	      func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
7278a7b590b3Smrg	      # FIXME: $output_objdir/$libname.filter potentially contains lots of
7279a7b590b3Smrg	      # 's' commands which not all seds can handle. GNU sed should be fine
7280a7b590b3Smrg	      # though. Also, the filter scales superlinearly with the number of
7281a7b590b3Smrg	      # global variables. join(1) would be nice here, but unfortunately
7282a7b590b3Smrg	      # isn't a blessed tool.
7283a7b590b3Smrg	      $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
7284a7b590b3Smrg	      delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
7285a7b590b3Smrg	      export_symbols=$output_objdir/$libname.def
7286a7b590b3Smrg	      $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
7287a7b590b3Smrg	    fi
7288a7b590b3Smrg	  fi
7289943345d3Smrg
7290a7b590b3Smrg	  libobjs=$output
7291a7b590b3Smrg	  # Restore the value of output.
7292a7b590b3Smrg	  output=$save_output
7293943345d3Smrg
7294a7b590b3Smrg	  if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
7295a7b590b3Smrg	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
7296a7b590b3Smrg	    test "X$libobjs" = "X " && libobjs=
7297a7b590b3Smrg	  fi
7298a7b590b3Smrg	  # Expand the library linking commands again to reset the
7299a7b590b3Smrg	  # value of $libobjs for piecewise linking.
7300943345d3Smrg
7301a7b590b3Smrg	  # Do each of the archive commands.
7302a7b590b3Smrg	  if test "$module" = yes && test -n "$module_cmds" ; then
7303a7b590b3Smrg	    if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
7304a7b590b3Smrg	      cmds=$module_expsym_cmds
7305a7b590b3Smrg	    else
7306a7b590b3Smrg	      cmds=$module_cmds
7307943345d3Smrg	    fi
7308943345d3Smrg	  else
7309a7b590b3Smrg	    if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
7310a7b590b3Smrg	      cmds=$archive_expsym_cmds
7311a7b590b3Smrg	    else
7312a7b590b3Smrg	      cmds=$archive_cmds
7313a7b590b3Smrg	    fi
7314943345d3Smrg	  fi
7315a7b590b3Smrg	fi
7316943345d3Smrg
7317a7b590b3Smrg	if test -n "$delfiles"; then
7318a7b590b3Smrg	  # Append the command to remove temporary files to $cmds.
7319a7b590b3Smrg	  eval cmds=\"\$cmds~\$RM $delfiles\"
7320a7b590b3Smrg	fi
7321943345d3Smrg
7322a7b590b3Smrg	# Add any objects from preloaded convenience libraries
7323a7b590b3Smrg	if test -n "$dlprefiles"; then
7324a7b590b3Smrg	  gentop="$output_objdir/${outputname}x"
7325a7b590b3Smrg	  generated="$generated $gentop"
7326943345d3Smrg
7327a7b590b3Smrg	  func_extract_archives $gentop $dlprefiles
7328a7b590b3Smrg	  libobjs="$libobjs $func_extract_archives_result"
7329a7b590b3Smrg	  test "X$libobjs" = "X " && libobjs=
7330a7b590b3Smrg	fi
7331943345d3Smrg
7332a7b590b3Smrg	save_ifs="$IFS"; IFS='~'
7333a7b590b3Smrg	for cmd in $cmds; do
7334a7b590b3Smrg	  IFS="$save_ifs"
7335a7b590b3Smrg	  eval cmd=\"$cmd\"
7336a7b590b3Smrg	  $opt_silent || {
7337a7b590b3Smrg	    func_quote_for_expand "$cmd"
7338a7b590b3Smrg	    eval "func_echo $func_quote_for_expand_result"
7339a7b590b3Smrg	  }
7340a7b590b3Smrg	  $opt_dry_run || eval "$cmd" || {
7341a7b590b3Smrg	    lt_exit=$?
7342943345d3Smrg
7343a7b590b3Smrg	    # Restore the uninstalled library and exit
7344a7b590b3Smrg	    if test "$mode" = relink; then
7345a7b590b3Smrg	      ( cd "$output_objdir" && \
7346a7b590b3Smrg	        $RM "${realname}T" && \
7347a7b590b3Smrg		$MV "${realname}U" "$realname" )
7348a7b590b3Smrg	    fi
7349943345d3Smrg
7350a7b590b3Smrg	    exit $lt_exit
7351a7b590b3Smrg	  }
7352a7b590b3Smrg	done
7353a7b590b3Smrg	IFS="$save_ifs"
7354943345d3Smrg
7355a7b590b3Smrg	# Restore the uninstalled library and exit
7356a7b590b3Smrg	if test "$mode" = relink; then
7357a7b590b3Smrg	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
7358943345d3Smrg
7359a7b590b3Smrg	  if test -n "$convenience"; then
7360a7b590b3Smrg	    if test -z "$whole_archive_flag_spec"; then
7361a7b590b3Smrg	      func_show_eval '${RM}r "$gentop"'
7362a7b590b3Smrg	    fi
7363a7b590b3Smrg	  fi
7364943345d3Smrg
7365a7b590b3Smrg	  exit $EXIT_SUCCESS
7366a7b590b3Smrg	fi
7367a7b590b3Smrg
7368a7b590b3Smrg	# Create links to the real library.
7369a7b590b3Smrg	for linkname in $linknames; do
7370a7b590b3Smrg	  if test "$realname" != "$linkname"; then
7371a7b590b3Smrg	    func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
7372943345d3Smrg	  fi
7373943345d3Smrg	done
7374943345d3Smrg
7375a7b590b3Smrg	# If -module or -export-dynamic was specified, set the dlname.
7376a7b590b3Smrg	if test "$module" = yes || test "$export_dynamic" = yes; then
7377a7b590b3Smrg	  # On all known operating systems, these are identical.
7378a7b590b3Smrg	  dlname="$soname"
7379a7b590b3Smrg	fi
7380a7b590b3Smrg      fi
7381943345d3Smrg      ;;
7382943345d3Smrg
7383a7b590b3Smrg    obj)
7384a7b590b3Smrg      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
7385a7b590b3Smrg	func_warning "\`-dlopen' is ignored for objects"
7386a7b590b3Smrg      fi
7387943345d3Smrg
7388a7b590b3Smrg      case " $deplibs" in
7389a7b590b3Smrg      *\ -l* | *\ -L*)
7390a7b590b3Smrg	func_warning "\`-l' and \`-L' are ignored for objects" ;;
7391943345d3Smrg      esac
7392943345d3Smrg
7393a7b590b3Smrg      test -n "$rpath" && \
7394a7b590b3Smrg	func_warning "\`-rpath' is ignored for objects"
7395a7b590b3Smrg
7396a7b590b3Smrg      test -n "$xrpath" && \
7397a7b590b3Smrg	func_warning "\`-R' is ignored for objects"
7398943345d3Smrg
7399a7b590b3Smrg      test -n "$vinfo" && \
7400a7b590b3Smrg	func_warning "\`-version-info' is ignored for objects"
7401943345d3Smrg
7402a7b590b3Smrg      test -n "$release" && \
7403a7b590b3Smrg	func_warning "\`-release' is ignored for objects"
7404a7b590b3Smrg
7405a7b590b3Smrg      case $output in
7406a7b590b3Smrg      *.lo)
7407a7b590b3Smrg	test -n "$objs$old_deplibs" && \
7408a7b590b3Smrg	  func_fatal_error "cannot build library object \`$output' from non-libtool objects"
7409a7b590b3Smrg
7410a7b590b3Smrg	libobj=$output
7411a7b590b3Smrg	func_lo2o "$libobj"
7412a7b590b3Smrg	obj=$func_lo2o_result
7413943345d3Smrg	;;
7414943345d3Smrg      *)
7415a7b590b3Smrg	libobj=
7416a7b590b3Smrg	obj="$output"
7417943345d3Smrg	;;
7418943345d3Smrg      esac
7419943345d3Smrg
7420a7b590b3Smrg      # Delete the old objects.
7421a7b590b3Smrg      $opt_dry_run || $RM $obj $libobj
7422943345d3Smrg
7423a7b590b3Smrg      # Objects from convenience libraries.  This assumes
7424a7b590b3Smrg      # single-version convenience libraries.  Whenever we create
7425a7b590b3Smrg      # different ones for PIC/non-PIC, this we'll have to duplicate
7426a7b590b3Smrg      # the extraction.
7427a7b590b3Smrg      reload_conv_objs=
7428a7b590b3Smrg      gentop=
7429a7b590b3Smrg      # reload_cmds runs $LD directly, so let us get rid of
7430a7b590b3Smrg      # -Wl from whole_archive_flag_spec and hope we can get by with
7431a7b590b3Smrg      # turning comma into space..
7432a7b590b3Smrg      wl=
7433943345d3Smrg
7434a7b590b3Smrg      if test -n "$convenience"; then
7435a7b590b3Smrg	if test -n "$whole_archive_flag_spec"; then
7436a7b590b3Smrg	  eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
7437a7b590b3Smrg	  reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'`
7438a7b590b3Smrg	else
7439a7b590b3Smrg	  gentop="$output_objdir/${obj}x"
7440a7b590b3Smrg	  generated="$generated $gentop"
7441943345d3Smrg
7442a7b590b3Smrg	  func_extract_archives $gentop $convenience
7443a7b590b3Smrg	  reload_conv_objs="$reload_objs $func_extract_archives_result"
7444a7b590b3Smrg	fi
7445943345d3Smrg      fi
7446943345d3Smrg
7447a7b590b3Smrg      # Create the old-style object.
7448a7b590b3Smrg      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
7449943345d3Smrg
7450a7b590b3Smrg      output="$obj"
7451a7b590b3Smrg      func_execute_cmds "$reload_cmds" 'exit $?'
7452943345d3Smrg
7453a7b590b3Smrg      # Exit if we aren't doing a library object file.
7454a7b590b3Smrg      if test -z "$libobj"; then
7455a7b590b3Smrg	if test -n "$gentop"; then
7456a7b590b3Smrg	  func_show_eval '${RM}r "$gentop"'
7457a7b590b3Smrg	fi
7458a7b590b3Smrg
7459a7b590b3Smrg	exit $EXIT_SUCCESS
7460943345d3Smrg      fi
7461a7b590b3Smrg
7462a7b590b3Smrg      if test "$build_libtool_libs" != yes; then
7463a7b590b3Smrg	if test -n "$gentop"; then
7464a7b590b3Smrg	  func_show_eval '${RM}r "$gentop"'
7465a7b590b3Smrg	fi
7466a7b590b3Smrg
7467a7b590b3Smrg	# Create an invalid libtool object if no PIC, so that we don't
7468a7b590b3Smrg	# accidentally link it into a program.
7469a7b590b3Smrg	# $show "echo timestamp > $libobj"
7470a7b590b3Smrg	# $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
7471a7b590b3Smrg	exit $EXIT_SUCCESS
7472a7b590b3Smrg      fi
7473a7b590b3Smrg
7474a7b590b3Smrg      if test -n "$pic_flag" || test "$pic_mode" != default; then
7475a7b590b3Smrg	# Only do commands if we really have different PIC objects.
7476a7b590b3Smrg	reload_objs="$libobjs $reload_conv_objs"
7477a7b590b3Smrg	output="$libobj"
7478a7b590b3Smrg	func_execute_cmds "$reload_cmds" 'exit $?'
7479a7b590b3Smrg      fi
7480a7b590b3Smrg
7481a7b590b3Smrg      if test -n "$gentop"; then
7482a7b590b3Smrg	func_show_eval '${RM}r "$gentop"'
7483a7b590b3Smrg      fi
7484a7b590b3Smrg
7485a7b590b3Smrg      exit $EXIT_SUCCESS
7486943345d3Smrg      ;;
7487943345d3Smrg
7488a7b590b3Smrg    prog)
7489a7b590b3Smrg      case $host in
7490a7b590b3Smrg	*cygwin*) func_stripname '' '.exe' "$output"
7491a7b590b3Smrg	          output=$func_stripname_result.exe;;
7492a7b590b3Smrg      esac
7493a7b590b3Smrg      test -n "$vinfo" && \
7494a7b590b3Smrg	func_warning "\`-version-info' is ignored for programs"
7495943345d3Smrg
7496a7b590b3Smrg      test -n "$release" && \
7497a7b590b3Smrg	func_warning "\`-release' is ignored for programs"
7498943345d3Smrg
7499a7b590b3Smrg      test "$preload" = yes \
7500a7b590b3Smrg        && test "$dlopen_support" = unknown \
7501a7b590b3Smrg	&& test "$dlopen_self" = unknown \
7502a7b590b3Smrg	&& test "$dlopen_self_static" = unknown && \
7503a7b590b3Smrg	  func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
7504a7b590b3Smrg
7505a7b590b3Smrg      case $host in
7506a7b590b3Smrg      *-*-rhapsody* | *-*-darwin1.[012])
7507a7b590b3Smrg	# On Rhapsody replace the C library is the System framework
7508a7b590b3Smrg	compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
7509a7b590b3Smrg	finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
7510943345d3Smrg	;;
7511a7b590b3Smrg      esac
7512943345d3Smrg
7513a7b590b3Smrg      case $host in
7514a7b590b3Smrg      *-*-darwin*)
7515a7b590b3Smrg	# Don't allow lazy linking, it breaks C++ global constructors
7516a7b590b3Smrg	# But is supposedly fixed on 10.4 or later (yay!).
7517a7b590b3Smrg	if test "$tagname" = CXX ; then
7518a7b590b3Smrg	  case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
7519a7b590b3Smrg	    10.[0123])
7520a7b590b3Smrg	      compile_command="$compile_command ${wl}-bind_at_load"
7521a7b590b3Smrg	      finalize_command="$finalize_command ${wl}-bind_at_load"
7522a7b590b3Smrg	    ;;
7523a7b590b3Smrg	  esac
7524943345d3Smrg	fi
7525a7b590b3Smrg	# Time to change all our "foo.ltframework" stuff back to "-framework foo"
7526a7b590b3Smrg	compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
7527a7b590b3Smrg	finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
7528a7b590b3Smrg	;;
7529a7b590b3Smrg      esac
7530943345d3Smrg
7531943345d3Smrg
7532a7b590b3Smrg      # move library search paths that coincide with paths to not yet
7533a7b590b3Smrg      # installed libraries to the beginning of the library search list
7534a7b590b3Smrg      new_libs=
7535a7b590b3Smrg      for path in $notinst_path; do
7536a7b590b3Smrg	case " $new_libs " in
7537a7b590b3Smrg	*" -L$path/$objdir "*) ;;
7538a7b590b3Smrg	*)
7539a7b590b3Smrg	  case " $compile_deplibs " in
7540a7b590b3Smrg	  *" -L$path/$objdir "*)
7541a7b590b3Smrg	    new_libs="$new_libs -L$path/$objdir" ;;
7542943345d3Smrg	  esac
7543a7b590b3Smrg	  ;;
7544a7b590b3Smrg	esac
7545a7b590b3Smrg      done
7546a7b590b3Smrg      for deplib in $compile_deplibs; do
7547a7b590b3Smrg	case $deplib in
7548a7b590b3Smrg	-L*)
7549a7b590b3Smrg	  case " $new_libs " in
7550a7b590b3Smrg	  *" $deplib "*) ;;
7551a7b590b3Smrg	  *) new_libs="$new_libs $deplib" ;;
7552943345d3Smrg	  esac
7553a7b590b3Smrg	  ;;
7554a7b590b3Smrg	*) new_libs="$new_libs $deplib" ;;
7555a7b590b3Smrg	esac
7556a7b590b3Smrg      done
7557a7b590b3Smrg      compile_deplibs="$new_libs"
7558943345d3Smrg
7559943345d3Smrg
7560a7b590b3Smrg      compile_command="$compile_command $compile_deplibs"
7561a7b590b3Smrg      finalize_command="$finalize_command $finalize_deplibs"
7562943345d3Smrg
7563a7b590b3Smrg      if test -n "$rpath$xrpath"; then
7564a7b590b3Smrg	# If the user specified any rpath flags, then add them.
7565a7b590b3Smrg	for libdir in $rpath $xrpath; do
7566a7b590b3Smrg	  # This is the magic to use -rpath.
7567a7b590b3Smrg	  case "$finalize_rpath " in
7568a7b590b3Smrg	  *" $libdir "*) ;;
7569a7b590b3Smrg	  *) finalize_rpath="$finalize_rpath $libdir" ;;
7570a7b590b3Smrg	  esac
7571a7b590b3Smrg	done
7572a7b590b3Smrg      fi
7573943345d3Smrg
7574a7b590b3Smrg      # Now hardcode the library paths
7575a7b590b3Smrg      rpath=
7576a7b590b3Smrg      hardcode_libdirs=
7577a7b590b3Smrg      for libdir in $compile_rpath $finalize_rpath; do
7578a7b590b3Smrg	if test -n "$hardcode_libdir_flag_spec"; then
7579a7b590b3Smrg	  if test -n "$hardcode_libdir_separator"; then
7580a7b590b3Smrg	    if test -z "$hardcode_libdirs"; then
7581a7b590b3Smrg	      hardcode_libdirs="$libdir"
7582a7b590b3Smrg	    else
7583a7b590b3Smrg	      # Just accumulate the unique libdirs.
7584a7b590b3Smrg	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
7585a7b590b3Smrg	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
7586a7b590b3Smrg		;;
7587a7b590b3Smrg	      *)
7588a7b590b3Smrg		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
7589a7b590b3Smrg		;;
7590a7b590b3Smrg	      esac
7591a7b590b3Smrg	    fi
7592943345d3Smrg	  else
7593a7b590b3Smrg	    eval flag=\"$hardcode_libdir_flag_spec\"
7594a7b590b3Smrg	    rpath="$rpath $flag"
7595943345d3Smrg	  fi
7596a7b590b3Smrg	elif test -n "$runpath_var"; then
7597a7b590b3Smrg	  case "$perm_rpath " in
7598a7b590b3Smrg	  *" $libdir "*) ;;
7599a7b590b3Smrg	  *) perm_rpath="$perm_rpath $libdir" ;;
7600a7b590b3Smrg	  esac
7601a7b590b3Smrg	fi
7602a7b590b3Smrg	case $host in
7603a7b590b3Smrg	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
7604a7b590b3Smrg	  testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
7605a7b590b3Smrg	  case :$dllsearchpath: in
7606a7b590b3Smrg	  *":$libdir:"*) ;;
7607a7b590b3Smrg	  ::) dllsearchpath=$libdir;;
7608a7b590b3Smrg	  *) dllsearchpath="$dllsearchpath:$libdir";;
7609a7b590b3Smrg	  esac
7610a7b590b3Smrg	  case :$dllsearchpath: in
7611a7b590b3Smrg	  *":$testbindir:"*) ;;
7612a7b590b3Smrg	  ::) dllsearchpath=$testbindir;;
7613a7b590b3Smrg	  *) dllsearchpath="$dllsearchpath:$testbindir";;
7614a7b590b3Smrg	  esac
7615a7b590b3Smrg	  ;;
7616a7b590b3Smrg	esac
7617a7b590b3Smrg      done
7618a7b590b3Smrg      # Substitute the hardcoded libdirs into the rpath.
7619a7b590b3Smrg      if test -n "$hardcode_libdir_separator" &&
7620a7b590b3Smrg	 test -n "$hardcode_libdirs"; then
7621a7b590b3Smrg	libdir="$hardcode_libdirs"
7622a7b590b3Smrg	eval rpath=\" $hardcode_libdir_flag_spec\"
7623a7b590b3Smrg      fi
7624a7b590b3Smrg      compile_rpath="$rpath"
7625943345d3Smrg
7626a7b590b3Smrg      rpath=
7627a7b590b3Smrg      hardcode_libdirs=
7628a7b590b3Smrg      for libdir in $finalize_rpath; do
7629a7b590b3Smrg	if test -n "$hardcode_libdir_flag_spec"; then
7630a7b590b3Smrg	  if test -n "$hardcode_libdir_separator"; then
7631a7b590b3Smrg	    if test -z "$hardcode_libdirs"; then
7632a7b590b3Smrg	      hardcode_libdirs="$libdir"
7633a7b590b3Smrg	    else
7634a7b590b3Smrg	      # Just accumulate the unique libdirs.
7635a7b590b3Smrg	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
7636a7b590b3Smrg	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
7637a7b590b3Smrg		;;
7638a7b590b3Smrg	      *)
7639a7b590b3Smrg		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
7640a7b590b3Smrg		;;
7641a7b590b3Smrg	      esac
7642a7b590b3Smrg	    fi
7643943345d3Smrg	  else
7644a7b590b3Smrg	    eval flag=\"$hardcode_libdir_flag_spec\"
7645a7b590b3Smrg	    rpath="$rpath $flag"
7646943345d3Smrg	  fi
7647a7b590b3Smrg	elif test -n "$runpath_var"; then
7648a7b590b3Smrg	  case "$finalize_perm_rpath " in
7649a7b590b3Smrg	  *" $libdir "*) ;;
7650a7b590b3Smrg	  *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
7651a7b590b3Smrg	  esac
7652943345d3Smrg	fi
7653a7b590b3Smrg      done
7654a7b590b3Smrg      # Substitute the hardcoded libdirs into the rpath.
7655a7b590b3Smrg      if test -n "$hardcode_libdir_separator" &&
7656a7b590b3Smrg	 test -n "$hardcode_libdirs"; then
7657a7b590b3Smrg	libdir="$hardcode_libdirs"
7658a7b590b3Smrg	eval rpath=\" $hardcode_libdir_flag_spec\"
7659a7b590b3Smrg      fi
7660a7b590b3Smrg      finalize_rpath="$rpath"
7661943345d3Smrg
7662a7b590b3Smrg      if test -n "$libobjs" && test "$build_old_libs" = yes; then
7663a7b590b3Smrg	# Transform all the library objects into standard objects.
7664a7b590b3Smrg	compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
7665a7b590b3Smrg	finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
7666a7b590b3Smrg      fi
7667943345d3Smrg
7668a7b590b3Smrg      func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
7669943345d3Smrg
7670a7b590b3Smrg      # template prelinking step
7671a7b590b3Smrg      if test -n "$prelink_cmds"; then
7672a7b590b3Smrg	func_execute_cmds "$prelink_cmds" 'exit $?'
7673a7b590b3Smrg      fi
7674943345d3Smrg
7675a7b590b3Smrg      wrappers_required=yes
7676a7b590b3Smrg      case $host in
7677a7b590b3Smrg      *cygwin* | *mingw* )
7678a7b590b3Smrg        if test "$build_libtool_libs" != yes; then
7679a7b590b3Smrg          wrappers_required=no
7680a7b590b3Smrg        fi
7681a7b590b3Smrg        ;;
7682a7b590b3Smrg      *cegcc)
7683a7b590b3Smrg        # Disable wrappers for cegcc, we are cross compiling anyway.
7684a7b590b3Smrg        wrappers_required=no
7685a7b590b3Smrg        ;;
7686a7b590b3Smrg      *)
7687a7b590b3Smrg        if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
7688a7b590b3Smrg          wrappers_required=no
7689a7b590b3Smrg        fi
7690a7b590b3Smrg        ;;
7691a7b590b3Smrg      esac
7692a7b590b3Smrg      if test "$wrappers_required" = no; then
7693a7b590b3Smrg	# Replace the output file specification.
7694a7b590b3Smrg	compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
7695a7b590b3Smrg	link_command="$compile_command$compile_rpath"
7696943345d3Smrg
7697a7b590b3Smrg	# We have no uninstalled library dependencies, so finalize right now.
7698a7b590b3Smrg	exit_status=0
7699a7b590b3Smrg	func_show_eval "$link_command" 'exit_status=$?'
7700943345d3Smrg
7701a7b590b3Smrg	# Delete the generated files.
7702a7b590b3Smrg	if test -f "$output_objdir/${outputname}S.${objext}"; then
7703a7b590b3Smrg	  func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
7704943345d3Smrg	fi
7705943345d3Smrg
7706a7b590b3Smrg	exit $exit_status
7707a7b590b3Smrg      fi
7708943345d3Smrg
7709a7b590b3Smrg      if test -n "$compile_shlibpath$finalize_shlibpath"; then
7710a7b590b3Smrg	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
7711a7b590b3Smrg      fi
7712a7b590b3Smrg      if test -n "$finalize_shlibpath"; then
7713a7b590b3Smrg	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
7714a7b590b3Smrg      fi
7715943345d3Smrg
7716a7b590b3Smrg      compile_var=
7717a7b590b3Smrg      finalize_var=
7718a7b590b3Smrg      if test -n "$runpath_var"; then
7719a7b590b3Smrg	if test -n "$perm_rpath"; then
7720a7b590b3Smrg	  # We should set the runpath_var.
7721a7b590b3Smrg	  rpath=
7722a7b590b3Smrg	  for dir in $perm_rpath; do
7723a7b590b3Smrg	    rpath="$rpath$dir:"
7724a7b590b3Smrg	  done
7725a7b590b3Smrg	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
7726943345d3Smrg	fi
7727a7b590b3Smrg	if test -n "$finalize_perm_rpath"; then
7728a7b590b3Smrg	  # We should set the runpath_var.
7729a7b590b3Smrg	  rpath=
7730a7b590b3Smrg	  for dir in $finalize_perm_rpath; do
7731a7b590b3Smrg	    rpath="$rpath$dir:"
7732a7b590b3Smrg	  done
7733a7b590b3Smrg	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
7734943345d3Smrg	fi
7735a7b590b3Smrg      fi
7736943345d3Smrg
7737a7b590b3Smrg      if test "$no_install" = yes; then
7738a7b590b3Smrg	# We don't need to create a wrapper script.
7739a7b590b3Smrg	link_command="$compile_var$compile_command$compile_rpath"
7740a7b590b3Smrg	# Replace the output file specification.
7741a7b590b3Smrg	link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
7742a7b590b3Smrg	# Delete the old output file.
7743a7b590b3Smrg	$opt_dry_run || $RM $output
7744a7b590b3Smrg	# Link the executable and exit
7745a7b590b3Smrg	func_show_eval "$link_command" 'exit $?'
7746943345d3Smrg	exit $EXIT_SUCCESS
7747a7b590b3Smrg      fi
7748943345d3Smrg
7749a7b590b3Smrg      if test "$hardcode_action" = relink; then
7750a7b590b3Smrg	# Fast installation is not supported
7751a7b590b3Smrg	link_command="$compile_var$compile_command$compile_rpath"
7752a7b590b3Smrg	relink_command="$finalize_var$finalize_command$finalize_rpath"
7753a7b590b3Smrg
7754a7b590b3Smrg	func_warning "this platform does not like uninstalled shared libraries"
7755a7b590b3Smrg	func_warning "\`$output' will be relinked during installation"
7756a7b590b3Smrg      else
7757a7b590b3Smrg	if test "$fast_install" != no; then
7758a7b590b3Smrg	  link_command="$finalize_var$compile_command$finalize_rpath"
7759a7b590b3Smrg	  if test "$fast_install" = yes; then
7760a7b590b3Smrg	    relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
7761a7b590b3Smrg	  else
7762a7b590b3Smrg	    # fast_install is set to needless
7763a7b590b3Smrg	    relink_command=
7764a7b590b3Smrg	  fi
7765943345d3Smrg	else
7766a7b590b3Smrg	  link_command="$compile_var$compile_command$compile_rpath"
7767a7b590b3Smrg	  relink_command="$finalize_var$finalize_command$finalize_rpath"
7768943345d3Smrg	fi
7769a7b590b3Smrg      fi
7770943345d3Smrg
7771a7b590b3Smrg      # Replace the output file specification.
7772a7b590b3Smrg      link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
7773943345d3Smrg
7774a7b590b3Smrg      # Delete the old output files.
7775a7b590b3Smrg      $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
7776943345d3Smrg
7777a7b590b3Smrg      func_show_eval "$link_command" 'exit $?'
7778943345d3Smrg
7779a7b590b3Smrg      # Now create the wrapper script.
7780a7b590b3Smrg      func_verbose "creating $output"
7781943345d3Smrg
7782a7b590b3Smrg      # Quote the relink command for shipping.
7783a7b590b3Smrg      if test -n "$relink_command"; then
7784a7b590b3Smrg	# Preserve any variables that may affect compiler behavior
7785a7b590b3Smrg	for var in $variables_saved_for_relink; do
7786a7b590b3Smrg	  if eval test -z \"\${$var+set}\"; then
7787a7b590b3Smrg	    relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
7788a7b590b3Smrg	  elif eval var_value=\$$var; test -z "$var_value"; then
7789a7b590b3Smrg	    relink_command="$var=; export $var; $relink_command"
7790943345d3Smrg	  else
7791a7b590b3Smrg	    func_quote_for_eval "$var_value"
7792a7b590b3Smrg	    relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
7793943345d3Smrg	  fi
7794a7b590b3Smrg	done
7795a7b590b3Smrg	relink_command="(cd `pwd`; $relink_command)"
7796a7b590b3Smrg	relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
7797a7b590b3Smrg      fi
7798943345d3Smrg
7799a7b590b3Smrg      # Quote $ECHO for shipping.
7800a7b590b3Smrg      if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then
7801a7b590b3Smrg	case $progpath in
7802a7b590b3Smrg	[\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
7803a7b590b3Smrg	*) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
7804a7b590b3Smrg	esac
7805a7b590b3Smrg	qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"`
7806a7b590b3Smrg      else
7807a7b590b3Smrg	qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"`
7808a7b590b3Smrg      fi
7809a7b590b3Smrg
7810a7b590b3Smrg      # Only actually do things if not in dry run mode.
7811a7b590b3Smrg      $opt_dry_run || {
7812a7b590b3Smrg	# win32 will think the script is a binary if it has
7813a7b590b3Smrg	# a .exe suffix, so we strip it off here.
7814a7b590b3Smrg	case $output in
7815a7b590b3Smrg	  *.exe) func_stripname '' '.exe' "$output"
7816a7b590b3Smrg	         output=$func_stripname_result ;;
7817a7b590b3Smrg	esac
7818a7b590b3Smrg	# test for cygwin because mv fails w/o .exe extensions
7819a7b590b3Smrg	case $host in
7820a7b590b3Smrg	  *cygwin*)
7821a7b590b3Smrg	    exeext=.exe
7822a7b590b3Smrg	    func_stripname '' '.exe' "$outputname"
7823a7b590b3Smrg	    outputname=$func_stripname_result ;;
7824a7b590b3Smrg	  *) exeext= ;;
7825943345d3Smrg	esac
7826a7b590b3Smrg	case $host in
7827a7b590b3Smrg	  *cygwin* | *mingw* )
7828a7b590b3Smrg	    func_dirname_and_basename "$output" "" "."
7829a7b590b3Smrg	    output_name=$func_basename_result
7830a7b590b3Smrg	    output_path=$func_dirname_result
7831a7b590b3Smrg	    cwrappersource="$output_path/$objdir/lt-$output_name.c"
7832a7b590b3Smrg	    cwrapper="$output_path/$output_name.exe"
7833a7b590b3Smrg	    $RM $cwrappersource $cwrapper
7834a7b590b3Smrg	    trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
7835a7b590b3Smrg
7836a7b590b3Smrg	    func_emit_cwrapperexe_src > $cwrappersource
7837a7b590b3Smrg
7838a7b590b3Smrg	    # The wrapper executable is built using the $host compiler,
7839a7b590b3Smrg	    # because it contains $host paths and files. If cross-
7840a7b590b3Smrg	    # compiling, it, like the target executable, must be
7841a7b590b3Smrg	    # executed on the $host or under an emulation environment.
7842a7b590b3Smrg	    $opt_dry_run || {
7843a7b590b3Smrg	      $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
7844a7b590b3Smrg	      $STRIP $cwrapper
7845a7b590b3Smrg	    }
7846943345d3Smrg
7847a7b590b3Smrg	    # Now, create the wrapper script for func_source use:
7848a7b590b3Smrg	    func_ltwrapper_scriptname $cwrapper
7849a7b590b3Smrg	    $RM $func_ltwrapper_scriptname_result
7850a7b590b3Smrg	    trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
7851a7b590b3Smrg	    $opt_dry_run || {
7852a7b590b3Smrg	      # note: this script will not be executed, so do not chmod.
7853a7b590b3Smrg	      if test "x$build" = "x$host" ; then
7854a7b590b3Smrg		$cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
7855a7b590b3Smrg	      else
7856a7b590b3Smrg		func_emit_wrapper no > $func_ltwrapper_scriptname_result
7857a7b590b3Smrg	      fi
7858a7b590b3Smrg	    }
7859a7b590b3Smrg	  ;;
7860a7b590b3Smrg	  * )
7861a7b590b3Smrg	    $RM $output
7862a7b590b3Smrg	    trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
7863943345d3Smrg
7864a7b590b3Smrg	    func_emit_wrapper no > $output
7865a7b590b3Smrg	    chmod +x $output
7866a7b590b3Smrg	  ;;
7867a7b590b3Smrg	esac
7868a7b590b3Smrg      }
7869a7b590b3Smrg      exit $EXIT_SUCCESS
7870a7b590b3Smrg      ;;
7871a7b590b3Smrg    esac
7872943345d3Smrg
7873a7b590b3Smrg    # See if we need to build an old-fashioned archive.
7874a7b590b3Smrg    for oldlib in $oldlibs; do
7875943345d3Smrg
7876a7b590b3Smrg      if test "$build_libtool_libs" = convenience; then
7877a7b590b3Smrg	oldobjs="$libobjs_save $symfileobj"
7878a7b590b3Smrg	addlibs="$convenience"
7879a7b590b3Smrg	build_libtool_libs=no
7880a7b590b3Smrg      else
7881a7b590b3Smrg	if test "$build_libtool_libs" = module; then
7882a7b590b3Smrg	  oldobjs="$libobjs_save"
7883a7b590b3Smrg	  build_libtool_libs=no
7884a7b590b3Smrg	else
7885a7b590b3Smrg	  oldobjs="$old_deplibs $non_pic_objects"
7886a7b590b3Smrg	  if test "$preload" = yes && test -f "$symfileobj"; then
7887a7b590b3Smrg	    oldobjs="$oldobjs $symfileobj"
7888a7b590b3Smrg	  fi
7889a7b590b3Smrg	fi
7890a7b590b3Smrg	addlibs="$old_convenience"
7891943345d3Smrg      fi
7892943345d3Smrg
7893a7b590b3Smrg      if test -n "$addlibs"; then
7894a7b590b3Smrg	gentop="$output_objdir/${outputname}x"
7895a7b590b3Smrg	generated="$generated $gentop"
7896943345d3Smrg
7897a7b590b3Smrg	func_extract_archives $gentop $addlibs
7898a7b590b3Smrg	oldobjs="$oldobjs $func_extract_archives_result"
7899a7b590b3Smrg      fi
7900943345d3Smrg
7901a7b590b3Smrg      # Do each command in the archive commands.
7902a7b590b3Smrg      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
7903a7b590b3Smrg	cmds=$old_archive_from_new_cmds
7904a7b590b3Smrg      else
7905943345d3Smrg
7906a7b590b3Smrg	# Add any objects from preloaded convenience libraries
7907a7b590b3Smrg	if test -n "$dlprefiles"; then
7908a7b590b3Smrg	  gentop="$output_objdir/${outputname}x"
7909a7b590b3Smrg	  generated="$generated $gentop"
7910943345d3Smrg
7911a7b590b3Smrg	  func_extract_archives $gentop $dlprefiles
7912a7b590b3Smrg	  oldobjs="$oldobjs $func_extract_archives_result"
7913a7b590b3Smrg	fi
7914943345d3Smrg
7915a7b590b3Smrg	# POSIX demands no paths to be encoded in archives.  We have
7916a7b590b3Smrg	# to avoid creating archives with duplicate basenames if we
7917a7b590b3Smrg	# might have to extract them afterwards, e.g., when creating a
7918a7b590b3Smrg	# static archive out of a convenience library, or when linking
7919a7b590b3Smrg	# the entirety of a libtool archive into another (currently
7920a7b590b3Smrg	# not supported by libtool).
7921a7b590b3Smrg	if (for obj in $oldobjs
7922a7b590b3Smrg	    do
7923a7b590b3Smrg	      func_basename "$obj"
7924a7b590b3Smrg	      $ECHO "$func_basename_result"
7925a7b590b3Smrg	    done | sort | sort -uc >/dev/null 2>&1); then
7926a7b590b3Smrg	  :
7927a7b590b3Smrg	else
7928a7b590b3Smrg	  $ECHO "copying selected object files to avoid basename conflicts..."
7929a7b590b3Smrg	  gentop="$output_objdir/${outputname}x"
7930a7b590b3Smrg	  generated="$generated $gentop"
7931a7b590b3Smrg	  func_mkdir_p "$gentop"
7932a7b590b3Smrg	  save_oldobjs=$oldobjs
7933a7b590b3Smrg	  oldobjs=
7934a7b590b3Smrg	  counter=1
7935a7b590b3Smrg	  for obj in $save_oldobjs
7936a7b590b3Smrg	  do
7937a7b590b3Smrg	    func_basename "$obj"
7938a7b590b3Smrg	    objbase="$func_basename_result"
7939a7b590b3Smrg	    case " $oldobjs " in
7940a7b590b3Smrg	    " ") oldobjs=$obj ;;
7941a7b590b3Smrg	    *[\ /]"$objbase "*)
7942a7b590b3Smrg	      while :; do
7943a7b590b3Smrg		# Make sure we don't pick an alternate name that also
7944a7b590b3Smrg		# overlaps.
7945a7b590b3Smrg		newobj=lt$counter-$objbase
7946a7b590b3Smrg		func_arith $counter + 1
7947a7b590b3Smrg		counter=$func_arith_result
7948a7b590b3Smrg		case " $oldobjs " in
7949a7b590b3Smrg		*[\ /]"$newobj "*) ;;
7950a7b590b3Smrg		*) if test ! -f "$gentop/$newobj"; then break; fi ;;
7951a7b590b3Smrg		esac
7952a7b590b3Smrg	      done
7953a7b590b3Smrg	      func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
7954a7b590b3Smrg	      oldobjs="$oldobjs $gentop/$newobj"
7955a7b590b3Smrg	      ;;
7956a7b590b3Smrg	    *) oldobjs="$oldobjs $obj" ;;
7957a7b590b3Smrg	    esac
7958943345d3Smrg	  done
7959943345d3Smrg	fi
7960a7b590b3Smrg	eval cmds=\"$old_archive_cmds\"
7961943345d3Smrg
7962a7b590b3Smrg	func_len " $cmds"
7963a7b590b3Smrg	len=$func_len_result
7964a7b590b3Smrg	if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
7965a7b590b3Smrg	  cmds=$old_archive_cmds
7966a7b590b3Smrg	else
7967a7b590b3Smrg	  # the command line is too long to link in one step, link in parts
7968a7b590b3Smrg	  func_verbose "using piecewise archive linking..."
7969a7b590b3Smrg	  save_RANLIB=$RANLIB
7970a7b590b3Smrg	  RANLIB=:
7971a7b590b3Smrg	  objlist=
7972a7b590b3Smrg	  concat_cmds=
7973a7b590b3Smrg	  save_oldobjs=$oldobjs
7974a7b590b3Smrg	  oldobjs=
7975a7b590b3Smrg	  # Is there a better way of finding the last object in the list?
7976a7b590b3Smrg	  for obj in $save_oldobjs
7977a7b590b3Smrg	  do
7978a7b590b3Smrg	    last_oldobj=$obj
7979a7b590b3Smrg	  done
7980a7b590b3Smrg	  eval test_cmds=\"$old_archive_cmds\"
7981a7b590b3Smrg	  func_len " $test_cmds"
7982a7b590b3Smrg	  len0=$func_len_result
7983a7b590b3Smrg	  len=$len0
7984a7b590b3Smrg	  for obj in $save_oldobjs
7985a7b590b3Smrg	  do
7986a7b590b3Smrg	    func_len " $obj"
7987a7b590b3Smrg	    func_arith $len + $func_len_result
7988a7b590b3Smrg	    len=$func_arith_result
7989a7b590b3Smrg	    func_append objlist " $obj"
7990a7b590b3Smrg	    if test "$len" -lt "$max_cmd_len"; then
7991a7b590b3Smrg	      :
7992a7b590b3Smrg	    else
7993a7b590b3Smrg	      # the above command should be used before it gets too long
7994a7b590b3Smrg	      oldobjs=$objlist
7995a7b590b3Smrg	      if test "$obj" = "$last_oldobj" ; then
7996a7b590b3Smrg		RANLIB=$save_RANLIB
7997a7b590b3Smrg	      fi
7998a7b590b3Smrg	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
7999a7b590b3Smrg	      eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
8000a7b590b3Smrg	      objlist=
8001a7b590b3Smrg	      len=$len0
8002a7b590b3Smrg	    fi
8003a7b590b3Smrg	  done
8004a7b590b3Smrg	  RANLIB=$save_RANLIB
8005a7b590b3Smrg	  oldobjs=$objlist
8006a7b590b3Smrg	  if test "X$oldobjs" = "X" ; then
8007a7b590b3Smrg	    eval cmds=\"\$concat_cmds\"
8008a7b590b3Smrg	  else
8009a7b590b3Smrg	    eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
8010a7b590b3Smrg	  fi
8011a7b590b3Smrg	fi
8012a7b590b3Smrg      fi
8013a7b590b3Smrg      func_execute_cmds "$cmds" 'exit $?'
8014943345d3Smrg    done
8015943345d3Smrg
8016a7b590b3Smrg    test -n "$generated" && \
8017a7b590b3Smrg      func_show_eval "${RM}r$generated"
8018943345d3Smrg
8019a7b590b3Smrg    # Now create the libtool archive.
8020a7b590b3Smrg    case $output in
8021a7b590b3Smrg    *.la)
8022a7b590b3Smrg      old_library=
8023a7b590b3Smrg      test "$build_old_libs" = yes && old_library="$libname.$libext"
8024a7b590b3Smrg      func_verbose "creating $output"
8025943345d3Smrg
8026a7b590b3Smrg      # Preserve any variables that may affect compiler behavior
8027a7b590b3Smrg      for var in $variables_saved_for_relink; do
8028a7b590b3Smrg	if eval test -z \"\${$var+set}\"; then
8029a7b590b3Smrg	  relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
8030a7b590b3Smrg	elif eval var_value=\$$var; test -z "$var_value"; then
8031a7b590b3Smrg	  relink_command="$var=; export $var; $relink_command"
8032943345d3Smrg	else
8033a7b590b3Smrg	  func_quote_for_eval "$var_value"
8034a7b590b3Smrg	  relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
8035943345d3Smrg	fi
8036a7b590b3Smrg      done
8037a7b590b3Smrg      # Quote the link command for shipping.
8038a7b590b3Smrg      relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
8039a7b590b3Smrg      relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
8040a7b590b3Smrg      if test "$hardcode_automatic" = yes ; then
8041a7b590b3Smrg	relink_command=
8042a7b590b3Smrg      fi
8043943345d3Smrg
8044a7b590b3Smrg      # Only create the output if not a dry run.
8045a7b590b3Smrg      $opt_dry_run || {
8046a7b590b3Smrg	for installed in no yes; do
8047a7b590b3Smrg	  if test "$installed" = yes; then
8048a7b590b3Smrg	    if test -z "$install_libdir"; then
8049a7b590b3Smrg	      break
8050a7b590b3Smrg	    fi
8051a7b590b3Smrg	    output="$output_objdir/$outputname"i
8052a7b590b3Smrg	    # Replace all uninstalled libtool libraries with the installed ones
8053a7b590b3Smrg	    newdependency_libs=
8054a7b590b3Smrg	    for deplib in $dependency_libs; do
8055a7b590b3Smrg	      case $deplib in
8056a7b590b3Smrg	      *.la)
8057a7b590b3Smrg		func_basename "$deplib"
8058a7b590b3Smrg		name="$func_basename_result"
8059a7b590b3Smrg		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
8060a7b590b3Smrg		test -z "$libdir" && \
8061a7b590b3Smrg		  func_fatal_error "\`$deplib' is not a valid libtool archive"
8062a7b590b3Smrg		newdependency_libs="$newdependency_libs $libdir/$name"
8063a7b590b3Smrg		;;
8064a7b590b3Smrg	      *) newdependency_libs="$newdependency_libs $deplib" ;;
8065a7b590b3Smrg	      esac
8066a7b590b3Smrg	    done
8067a7b590b3Smrg	    dependency_libs="$newdependency_libs"
8068a7b590b3Smrg	    newdlfiles=
8069a7b590b3Smrg
8070a7b590b3Smrg	    for lib in $dlfiles; do
8071a7b590b3Smrg	      case $lib in
8072a7b590b3Smrg	      *.la)
8073a7b590b3Smrg	        func_basename "$lib"
8074a7b590b3Smrg		name="$func_basename_result"
8075a7b590b3Smrg		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
8076a7b590b3Smrg		test -z "$libdir" && \
8077a7b590b3Smrg		  func_fatal_error "\`$lib' is not a valid libtool archive"
8078a7b590b3Smrg		newdlfiles="$newdlfiles $libdir/$name"
8079a7b590b3Smrg		;;
8080a7b590b3Smrg	      *) newdlfiles="$newdlfiles $lib" ;;
8081a7b590b3Smrg	      esac
8082a7b590b3Smrg	    done
8083a7b590b3Smrg	    dlfiles="$newdlfiles"
8084a7b590b3Smrg	    newdlprefiles=
8085a7b590b3Smrg	    for lib in $dlprefiles; do
8086a7b590b3Smrg	      case $lib in
8087a7b590b3Smrg	      *.la)
8088a7b590b3Smrg		# Only pass preopened files to the pseudo-archive (for
8089a7b590b3Smrg		# eventual linking with the app. that links it) if we
8090a7b590b3Smrg		# didn't already link the preopened objects directly into
8091a7b590b3Smrg		# the library:
8092a7b590b3Smrg		func_basename "$lib"
8093a7b590b3Smrg		name="$func_basename_result"
8094a7b590b3Smrg		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
8095a7b590b3Smrg		test -z "$libdir" && \
8096a7b590b3Smrg		  func_fatal_error "\`$lib' is not a valid libtool archive"
8097a7b590b3Smrg		newdlprefiles="$newdlprefiles $libdir/$name"
8098a7b590b3Smrg		;;
8099a7b590b3Smrg	      esac
8100a7b590b3Smrg	    done
8101a7b590b3Smrg	    dlprefiles="$newdlprefiles"
8102a7b590b3Smrg	  else
8103a7b590b3Smrg	    newdlfiles=
8104a7b590b3Smrg	    for lib in $dlfiles; do
8105a7b590b3Smrg	      case $lib in
8106a7b590b3Smrg		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
8107a7b590b3Smrg		*) abs=`pwd`"/$lib" ;;
8108a7b590b3Smrg	      esac
8109a7b590b3Smrg	      newdlfiles="$newdlfiles $abs"
8110a7b590b3Smrg	    done
8111a7b590b3Smrg	    dlfiles="$newdlfiles"
8112a7b590b3Smrg	    newdlprefiles=
8113a7b590b3Smrg	    for lib in $dlprefiles; do
8114a7b590b3Smrg	      case $lib in
8115a7b590b3Smrg		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
8116a7b590b3Smrg		*) abs=`pwd`"/$lib" ;;
8117a7b590b3Smrg	      esac
8118a7b590b3Smrg	      newdlprefiles="$newdlprefiles $abs"
8119a7b590b3Smrg	    done
8120a7b590b3Smrg	    dlprefiles="$newdlprefiles"
8121a7b590b3Smrg	  fi
8122a7b590b3Smrg	  $RM $output
8123a7b590b3Smrg	  # place dlname in correct position for cygwin
8124a7b590b3Smrg	  tdlname=$dlname
8125a7b590b3Smrg	  case $host,$output,$installed,$module,$dlname in
8126a7b590b3Smrg	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
8127a7b590b3Smrg	  esac
8128a7b590b3Smrg	  $ECHO > $output "\
8129a7b590b3Smrg# $outputname - a libtool library file
8130a7b590b3Smrg# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
8131a7b590b3Smrg#
8132a7b590b3Smrg# Please DO NOT delete this file!
8133a7b590b3Smrg# It is necessary for linking the library.
8134943345d3Smrg
8135a7b590b3Smrg# The name that we can dlopen(3).
8136a7b590b3Smrgdlname='$tdlname'
8137943345d3Smrg
8138a7b590b3Smrg# Names of this library.
8139a7b590b3Smrglibrary_names='$library_names'
8140943345d3Smrg
8141a7b590b3Smrg# The name of the static archive.
8142a7b590b3Smrgold_library='$old_library'
8143943345d3Smrg
8144a7b590b3Smrg# Linker flags that can not go in dependency_libs.
8145a7b590b3Smrginherited_linker_flags='$new_inherited_linker_flags'
8146943345d3Smrg
8147a7b590b3Smrg# Libraries that this one depends upon.
8148a7b590b3Smrgdependency_libs='$dependency_libs'
8149943345d3Smrg
8150a7b590b3Smrg# Names of additional weak libraries provided by this library
8151a7b590b3Smrgweak_library_names='$weak_libs'
8152943345d3Smrg
8153a7b590b3Smrg# Version information for $libname.
8154a7b590b3Smrgcurrent=$current
8155a7b590b3Smrgage=$age
8156a7b590b3Smrgrevision=$revision
8157943345d3Smrg
8158a7b590b3Smrg# Is this an already installed library?
8159a7b590b3Smrginstalled=$installed
8160943345d3Smrg
8161a7b590b3Smrg# Should we warn about portability when linking against -modules?
8162a7b590b3Smrgshouldnotlink=$module
8163943345d3Smrg
8164a7b590b3Smrg# Files to dlopen/dlpreopen
8165a7b590b3Smrgdlopen='$dlfiles'
8166a7b590b3Smrgdlpreopen='$dlprefiles'
8167943345d3Smrg
8168a7b590b3Smrg# Directory that this library needs to be installed in:
8169a7b590b3Smrglibdir='$install_libdir'"
8170a7b590b3Smrg	  if test "$installed" = no && test "$need_relink" = yes; then
8171a7b590b3Smrg	    $ECHO >> $output "\
8172a7b590b3Smrgrelink_command=\"$relink_command\""
8173a7b590b3Smrg	  fi
8174a7b590b3Smrg	done
8175a7b590b3Smrg      }
8176943345d3Smrg
8177a7b590b3Smrg      # Do a symbolic link so that the libtool archive can be found in
8178a7b590b3Smrg      # LD_LIBRARY_PATH before the program is installed.
8179a7b590b3Smrg      func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
8180a7b590b3Smrg      ;;
8181a7b590b3Smrg    esac
8182a7b590b3Smrg    exit $EXIT_SUCCESS
8183a7b590b3Smrg}
8184943345d3Smrg
8185a7b590b3Smrg{ test "$mode" = link || test "$mode" = relink; } &&
8186a7b590b3Smrg    func_mode_link ${1+"$@"}
8187f67b85aaSmrg
8188943345d3Smrg
8189a7b590b3Smrg# func_mode_uninstall arg...
8190a7b590b3Smrgfunc_mode_uninstall ()
8191a7b590b3Smrg{
8192a7b590b3Smrg    $opt_debug
8193a7b590b3Smrg    RM="$nonopt"
8194943345d3Smrg    files=
8195943345d3Smrg    rmforce=
8196943345d3Smrg    exit_status=0
8197943345d3Smrg
8198943345d3Smrg    # This variable tells wrapper scripts just to set variables rather
8199943345d3Smrg    # than running their programs.
8200943345d3Smrg    libtool_install_magic="$magic"
8201943345d3Smrg
8202943345d3Smrg    for arg
8203943345d3Smrg    do
8204943345d3Smrg      case $arg in
8205a7b590b3Smrg      -f) RM="$RM $arg"; rmforce=yes ;;
8206a7b590b3Smrg      -*) RM="$RM $arg" ;;
8207943345d3Smrg      *) files="$files $arg" ;;
8208943345d3Smrg      esac
8209943345d3Smrg    done
8210943345d3Smrg
8211a7b590b3Smrg    test -z "$RM" && \
8212a7b590b3Smrg      func_fatal_help "you must specify an RM program"
8213943345d3Smrg
8214943345d3Smrg    rmdirs=
8215943345d3Smrg
8216943345d3Smrg    origobjdir="$objdir"
8217943345d3Smrg    for file in $files; do
8218a7b590b3Smrg      func_dirname "$file" "" "."
8219a7b590b3Smrg      dir="$func_dirname_result"
8220a7b590b3Smrg      if test "X$dir" = X.; then
8221943345d3Smrg	objdir="$origobjdir"
8222943345d3Smrg      else
8223943345d3Smrg	objdir="$dir/$origobjdir"
8224943345d3Smrg      fi
8225a7b590b3Smrg      func_basename "$file"
8226a7b590b3Smrg      name="$func_basename_result"
8227943345d3Smrg      test "$mode" = uninstall && objdir="$dir"
8228943345d3Smrg
8229943345d3Smrg      # Remember objdir for removal later, being careful to avoid duplicates
8230943345d3Smrg      if test "$mode" = clean; then
8231943345d3Smrg	case " $rmdirs " in
8232943345d3Smrg	  *" $objdir "*) ;;
8233943345d3Smrg	  *) rmdirs="$rmdirs $objdir" ;;
8234943345d3Smrg	esac
8235943345d3Smrg      fi
8236943345d3Smrg
8237943345d3Smrg      # Don't error if the file doesn't exist and rm -f was used.
8238a7b590b3Smrg      if { test -L "$file"; } >/dev/null 2>&1 ||
8239a7b590b3Smrg	 { test -h "$file"; } >/dev/null 2>&1 ||
8240a7b590b3Smrg	 test -f "$file"; then
8241943345d3Smrg	:
8242943345d3Smrg      elif test -d "$file"; then
8243943345d3Smrg	exit_status=1
8244943345d3Smrg	continue
8245943345d3Smrg      elif test "$rmforce" = yes; then
8246943345d3Smrg	continue
8247943345d3Smrg      fi
8248943345d3Smrg
8249943345d3Smrg      rmfiles="$file"
8250943345d3Smrg
8251943345d3Smrg      case $name in
8252943345d3Smrg      *.la)
8253943345d3Smrg	# Possibly a libtool archive, so verify it.
8254a7b590b3Smrg	if func_lalib_p "$file"; then
8255a7b590b3Smrg	  func_source $dir/$name
8256943345d3Smrg
8257943345d3Smrg	  # Delete the libtool libraries and symlinks.
8258943345d3Smrg	  for n in $library_names; do
8259943345d3Smrg	    rmfiles="$rmfiles $objdir/$n"
8260943345d3Smrg	  done
8261943345d3Smrg	  test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
8262943345d3Smrg
8263943345d3Smrg	  case "$mode" in
8264943345d3Smrg	  clean)
8265943345d3Smrg	    case "  $library_names " in
8266943345d3Smrg	    # "  " in the beginning catches empty $dlname
8267943345d3Smrg	    *" $dlname "*) ;;
8268943345d3Smrg	    *) rmfiles="$rmfiles $objdir/$dlname" ;;
8269943345d3Smrg	    esac
8270a7b590b3Smrg	    test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
8271943345d3Smrg	    ;;
8272943345d3Smrg	  uninstall)
8273943345d3Smrg	    if test -n "$library_names"; then
8274943345d3Smrg	      # Do each command in the postuninstall commands.
8275a7b590b3Smrg	      func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
8276943345d3Smrg	    fi
8277943345d3Smrg
8278943345d3Smrg	    if test -n "$old_library"; then
8279943345d3Smrg	      # Do each command in the old_postuninstall commands.
8280a7b590b3Smrg	      func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
8281943345d3Smrg	    fi
8282943345d3Smrg	    # FIXME: should reinstall the best remaining shared library.
8283943345d3Smrg	    ;;
8284943345d3Smrg	  esac
8285943345d3Smrg	fi
8286943345d3Smrg	;;
8287943345d3Smrg
8288943345d3Smrg      *.lo)
8289943345d3Smrg	# Possibly a libtool object, so verify it.
8290a7b590b3Smrg	if func_lalib_p "$file"; then
8291943345d3Smrg
8292943345d3Smrg	  # Read the .lo file
8293a7b590b3Smrg	  func_source $dir/$name
8294943345d3Smrg
8295943345d3Smrg	  # Add PIC object to the list of files to remove.
8296a7b590b3Smrg	  if test -n "$pic_object" &&
8297a7b590b3Smrg	     test "$pic_object" != none; then
8298943345d3Smrg	    rmfiles="$rmfiles $dir/$pic_object"
8299943345d3Smrg	  fi
8300943345d3Smrg
8301943345d3Smrg	  # Add non-PIC object to the list of files to remove.
8302a7b590b3Smrg	  if test -n "$non_pic_object" &&
8303a7b590b3Smrg	     test "$non_pic_object" != none; then
8304943345d3Smrg	    rmfiles="$rmfiles $dir/$non_pic_object"
8305943345d3Smrg	  fi
8306943345d3Smrg	fi
8307943345d3Smrg	;;
8308943345d3Smrg
8309943345d3Smrg      *)
8310943345d3Smrg	if test "$mode" = clean ; then
8311943345d3Smrg	  noexename=$name
8312943345d3Smrg	  case $file in
8313943345d3Smrg	  *.exe)
8314a7b590b3Smrg	    func_stripname '' '.exe' "$file"
8315a7b590b3Smrg	    file=$func_stripname_result
8316a7b590b3Smrg	    func_stripname '' '.exe' "$name"
8317a7b590b3Smrg	    noexename=$func_stripname_result
8318943345d3Smrg	    # $file with .exe has already been added to rmfiles,
8319943345d3Smrg	    # add $file without .exe
8320943345d3Smrg	    rmfiles="$rmfiles $file"
8321943345d3Smrg	    ;;
8322943345d3Smrg	  esac
8323943345d3Smrg	  # Do a test to see if this is a libtool program.
8324a7b590b3Smrg	  if func_ltwrapper_p "$file"; then
8325a7b590b3Smrg	    if func_ltwrapper_executable_p "$file"; then
8326a7b590b3Smrg	      func_ltwrapper_scriptname "$file"
8327a7b590b3Smrg	      relink_command=
8328a7b590b3Smrg	      func_source $func_ltwrapper_scriptname_result
8329a7b590b3Smrg	      rmfiles="$rmfiles $func_ltwrapper_scriptname_result"
8330a7b590b3Smrg	    else
8331a7b590b3Smrg	      relink_command=
8332a7b590b3Smrg	      func_source $dir/$noexename
8333a7b590b3Smrg	    fi
8334943345d3Smrg
8335943345d3Smrg	    # note $name still contains .exe if it was in $file originally
8336943345d3Smrg	    # as does the version of $file that was added into $rmfiles
8337943345d3Smrg	    rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
8338943345d3Smrg	    if test "$fast_install" = yes && test -n "$relink_command"; then
8339943345d3Smrg	      rmfiles="$rmfiles $objdir/lt-$name"
8340943345d3Smrg	    fi
8341943345d3Smrg	    if test "X$noexename" != "X$name" ; then
8342943345d3Smrg	      rmfiles="$rmfiles $objdir/lt-${noexename}.c"
8343943345d3Smrg	    fi
8344943345d3Smrg	  fi
8345943345d3Smrg	fi
8346943345d3Smrg	;;
8347943345d3Smrg      esac
8348a7b590b3Smrg      func_show_eval "$RM $rmfiles" 'exit_status=1'
8349943345d3Smrg    done
8350943345d3Smrg    objdir="$origobjdir"
8351943345d3Smrg
8352943345d3Smrg    # Try to remove the ${objdir}s in the directories where we deleted files
8353943345d3Smrg    for dir in $rmdirs; do
8354943345d3Smrg      if test -d "$dir"; then
8355a7b590b3Smrg	func_show_eval "rmdir $dir >/dev/null 2>&1"
8356943345d3Smrg      fi
8357943345d3Smrg    done
8358943345d3Smrg
8359943345d3Smrg    exit $exit_status
8360a7b590b3Smrg}
8361943345d3Smrg
8362a7b590b3Smrg{ test "$mode" = uninstall || test "$mode" = clean; } &&
8363a7b590b3Smrg    func_mode_uninstall ${1+"$@"}
8364943345d3Smrg
8365a7b590b3Smrgtest -z "$mode" && {
8366a7b590b3Smrg  help="$generic_help"
8367a7b590b3Smrg  func_fatal_help "you must specify a MODE"
8368a7b590b3Smrg}
8369a7b590b3Smrg
8370a7b590b3Smrgtest -z "$exec_cmd" && \
8371a7b590b3Smrg  func_fatal_help "invalid operation mode \`$mode'"
8372943345d3Smrg
8373943345d3Smrgif test -n "$exec_cmd"; then
8374a7b590b3Smrg  eval exec "$exec_cmd"
8375943345d3Smrg  exit $EXIT_FAILURE
8376943345d3Smrgfi
8377943345d3Smrg
8378a7b590b3Smrgexit $exit_status
8379943345d3Smrg
8380943345d3Smrg
8381943345d3Smrg# The TAGs below are defined such that we never get into a situation
8382943345d3Smrg# in which we disable both kinds of libraries.  Given conflicting
8383943345d3Smrg# choices, we go for a static library, that is the most portable,
8384943345d3Smrg# since we can't tell whether shared libraries were disabled because
8385943345d3Smrg# the user asked for that or because the platform doesn't support
8386943345d3Smrg# them.  This is particularly important on AIX, because we don't
8387943345d3Smrg# support having both static and shared libraries enabled at the same
8388943345d3Smrg# time on that platform, so we default to a shared-only configuration.
8389943345d3Smrg# If a disable-shared tag is given, we'll fallback to a static-only
8390943345d3Smrg# configuration.  But we'll never go from static-only to shared-only.
8391943345d3Smrg
8392943345d3Smrg# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
8393a7b590b3Smrgbuild_libtool_libs=no
8394a7b590b3Smrgbuild_old_libs=yes
8395943345d3Smrg# ### END LIBTOOL TAG CONFIG: disable-shared
8396943345d3Smrg
8397943345d3Smrg# ### BEGIN LIBTOOL TAG CONFIG: disable-static
8398a7b590b3Smrgbuild_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
8399943345d3Smrg# ### END LIBTOOL TAG CONFIG: disable-static
8400943345d3Smrg
8401943345d3Smrg# Local Variables:
8402943345d3Smrg# mode:shell-script
8403943345d3Smrg# sh-indentation:2
8404943345d3Smrg# End:
8405a7b590b3Smrg# vi:sw=2
8406a7b590b3Smrg
8407