ltmain.sh revision e8ead290
1e169010aSmrg# Generated from ltmain.m4sh.
2e169010aSmrg
3e8ead290Smrg# libtool (GNU libtool) 2.2.10
4e169010aSmrg# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
5e169010aSmrg
6e8ead290Smrg# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
7e8ead290Smrg# 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
8e169010aSmrg# This is free software; see the source for copying conditions.  There is NO
9e169010aSmrg# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
10e169010aSmrg
11e169010aSmrg# GNU Libtool is free software; you can redistribute it and/or modify
127914d74bSmrg# it under the terms of the GNU General Public License as published by
137914d74bSmrg# the Free Software Foundation; either version 2 of the License, or
147914d74bSmrg# (at your option) any later version.
157914d74bSmrg#
16e169010aSmrg# As a special exception to the GNU General Public License,
17e169010aSmrg# if you distribute this file as part of a program or library that
18e169010aSmrg# is built using GNU Libtool, you may include this file under the
19e169010aSmrg# same distribution terms that you use for the rest of that program.
20e169010aSmrg#
21e169010aSmrg# GNU Libtool is distributed in the hope that it will be useful, but
227914d74bSmrg# WITHOUT ANY WARRANTY; without even the implied warranty of
237914d74bSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
247914d74bSmrg# General Public License for more details.
257914d74bSmrg#
267914d74bSmrg# You should have received a copy of the GNU General Public License
27e169010aSmrg# along with GNU Libtool; see the file COPYING.  If not, a copy
28e169010aSmrg# can be downloaded from http://www.gnu.org/licenses/gpl.html,
29e169010aSmrg# or obtained by writing to the Free Software Foundation, Inc.,
30e169010aSmrg# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
31e169010aSmrg
32e169010aSmrg# Usage: $progname [OPTION]... [MODE-ARG]...
33e169010aSmrg#
34e169010aSmrg# Provide generalized library-building support services.
357914d74bSmrg#
36e8ead290Smrg#       --config             show all configuration variables
37e8ead290Smrg#       --debug              enable verbose shell tracing
38e8ead290Smrg#   -n, --dry-run            display commands without modifying any files
39e8ead290Smrg#       --features           display basic configuration information and exit
40e8ead290Smrg#       --mode=MODE          use operation mode MODE
41e8ead290Smrg#       --preserve-dup-deps  don't remove duplicate dependency libraries
42e8ead290Smrg#       --quiet, --silent    don't print informational messages
43e8ead290Smrg#       --no-quiet, --no-silent
44e8ead290Smrg#                            print informational messages (default)
45e8ead290Smrg#       --tag=TAG            use configuration variables from tag TAG
46e8ead290Smrg#   -v, --verbose            print more informational messages than default
47e8ead290Smrg#       --no-verbose         don't print the extra informational messages
48e8ead290Smrg#       --version            print version information
49e8ead290Smrg#   -h, --help, --help-all   print short, long, or detailed help message
50e169010aSmrg#
51e169010aSmrg# MODE must be one of the following:
52e169010aSmrg#
53e8ead290Smrg#         clean              remove files from the build directory
54e8ead290Smrg#         compile            compile a source file into a libtool object
55e8ead290Smrg#         execute            automatically set library path, then run a program
56e8ead290Smrg#         finish             complete the installation of libtool libraries
57e8ead290Smrg#         install            install libraries or executables
58e8ead290Smrg#         link               create a library or an executable
59e8ead290Smrg#         uninstall          remove libraries from an installed directory
60e169010aSmrg#
61e8ead290Smrg# MODE-ARGS vary depending on the MODE.  When passed as first option,
62e8ead290Smrg# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that.
63e169010aSmrg# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
64e169010aSmrg#
65e169010aSmrg# When reporting a bug, please describe a test case to reproduce it and
66e169010aSmrg# include the following information:
67e169010aSmrg#
68e8ead290Smrg#         host-triplet:	$host
69e8ead290Smrg#         shell:		$SHELL
70e8ead290Smrg#         compiler:		$LTCC
71e8ead290Smrg#         compiler flags:		$LTCFLAGS
72e8ead290Smrg#         linker:		$LD (gnu? $with_gnu_ld)
73e8ead290Smrg#         $progname:	(GNU libtool) 2.2.10
74e8ead290Smrg#         automake:	$automake_version
75e8ead290Smrg#         autoconf:	$autoconf_version
76e169010aSmrg#
77e169010aSmrg# Report bugs to <bug-libtool@gnu.org>.
78e169010aSmrg
79e8ead290SmrgPROGRAM=libtool
80e169010aSmrgPACKAGE=libtool
81e8ead290SmrgVERSION=2.2.10
82e169010aSmrgTIMESTAMP=""
83e8ead290Smrgpackage_revision=1.3175
84e169010aSmrg
85e169010aSmrg# Be Bourne compatible
86e169010aSmrgif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
87e169010aSmrg  emulate sh
88e169010aSmrg  NULLCMD=:
89e169010aSmrg  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
90e169010aSmrg  # is contrary to our usage.  Disable this feature.
91e169010aSmrg  alias -g '${1+"$@"}'='"$@"'
92e169010aSmrg  setopt NO_GLOB_SUBST
93e169010aSmrgelse
94e169010aSmrg  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
95e169010aSmrgfi
96e169010aSmrgBIN_SH=xpg4; export BIN_SH # for Tru64
97e169010aSmrgDUALCASE=1; export DUALCASE # for MKS sh
98e169010aSmrg
99e8ead290Smrg# A function that is used when there is no print builtin or printf.
100e8ead290Smrgfunc_fallback_echo ()
101e8ead290Smrg{
102e8ead290Smrg  eval 'cat <<_LTECHO_EOF
103e8ead290Smrg$1
104e8ead290Smrg_LTECHO_EOF'
105e8ead290Smrg}
106e8ead290Smrg
107e169010aSmrg# NLS nuisances: We save the old values to restore during execute mode.
108e169010aSmrglt_user_locale=
109e169010aSmrglt_safe_locale=
110e169010aSmrgfor lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
111e169010aSmrgdo
112e169010aSmrg  eval "if test \"\${$lt_var+set}\" = set; then
113e169010aSmrg          save_$lt_var=\$$lt_var
114e169010aSmrg          $lt_var=C
115e169010aSmrg	  export $lt_var
116e169010aSmrg	  lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
117e169010aSmrg	  lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
118e169010aSmrg	fi"
119e169010aSmrgdone
120e8ead290SmrgLC_ALL=C
121e8ead290SmrgLANGUAGE=C
122e8ead290Smrgexport LANGUAGE LC_ALL
123e169010aSmrg
124e169010aSmrg$lt_unset CDPATH
125e169010aSmrg
126e169010aSmrg
127e8ead290Smrg# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
128e8ead290Smrg# is ksh but when the shell is invoked as "sh" and the current value of
129e8ead290Smrg# the _XPG environment variable is not equal to 1 (one), the special
130e8ead290Smrg# positional parameter $0, within a function call, is the name of the
131e8ead290Smrg# function.
132e8ead290Smrgprogpath="$0"
133e169010aSmrg
134e169010aSmrg
135e169010aSmrg
136e169010aSmrg: ${CP="cp -f"}
137e8ead290Smrgtest "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
138e8ead290Smrg: ${EGREP="grep -E"}
139e8ead290Smrg: ${FGREP="grep -F"}
140e8ead290Smrg: ${GREP="grep"}
141e169010aSmrg: ${LN_S="ln -s"}
142e169010aSmrg: ${MAKE="make"}
143e169010aSmrg: ${MKDIR="mkdir"}
144e169010aSmrg: ${MV="mv -f"}
145e169010aSmrg: ${RM="rm -f"}
146e8ead290Smrg: ${SED="sed"}
147e169010aSmrg: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
148e169010aSmrg: ${Xsed="$SED -e 1s/^X//"}
1497914d74bSmrg
150e169010aSmrg# Global variables:
151e169010aSmrgEXIT_SUCCESS=0
152e169010aSmrgEXIT_FAILURE=1
153e169010aSmrgEXIT_MISMATCH=63  # $? = 63 is used to indicate version mismatch to missing.
154e169010aSmrgEXIT_SKIP=77	  # $? = 77 is used to indicate a skipped test to automake.
155e169010aSmrg
156e169010aSmrgexit_status=$EXIT_SUCCESS
157e169010aSmrg
158e169010aSmrg# Make sure IFS has a sensible default
159e169010aSmrglt_nl='
160e169010aSmrg'
161e169010aSmrgIFS=" 	$lt_nl"
162e169010aSmrg
163e169010aSmrgdirname="s,/[^/]*$,,"
164e169010aSmrgbasename="s,^.*/,,"
165e169010aSmrg
166e169010aSmrg# func_dirname_and_basename file append nondir_replacement
167e169010aSmrg# perform func_basename and func_dirname in a single function
168e169010aSmrg# call:
169e169010aSmrg#   dirname:  Compute the dirname of FILE.  If nonempty,
170e169010aSmrg#             add APPEND to the result, otherwise set result
171e169010aSmrg#             to NONDIR_REPLACEMENT.
172e169010aSmrg#             value returned in "$func_dirname_result"
173e169010aSmrg#   basename: Compute filename of FILE.
174e169010aSmrg#             value retuned in "$func_basename_result"
175e169010aSmrg# Implementation must be kept synchronized with func_dirname
176e169010aSmrg# and func_basename. For efficiency, we do not delegate to
177e169010aSmrg# those functions but instead duplicate the functionality here.
178e169010aSmrgfunc_dirname_and_basename ()
179e169010aSmrg{
180e169010aSmrg  # Extract subdirectory from the argument.
181e8ead290Smrg  func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"`
182e169010aSmrg  if test "X$func_dirname_result" = "X${1}"; then
183e169010aSmrg    func_dirname_result="${3}"
184e169010aSmrg  else
185e169010aSmrg    func_dirname_result="$func_dirname_result${2}"
186e169010aSmrg  fi
187e8ead290Smrg  func_basename_result=`$ECHO "${1}" | $SED -e "$basename"`
188e169010aSmrg}
189e169010aSmrg
190e169010aSmrg# Generated shell functions inserted here.
1917914d74bSmrg
192e8ead290Smrg# These SED scripts presuppose an absolute path with a trailing slash.
193e8ead290Smrgpathcar='s,^/\([^/]*\).*$,\1,'
194e8ead290Smrgpathcdr='s,^/[^/]*,,'
195e8ead290Smrgremovedotparts=':dotsl
196e8ead290Smrg		s@/\./@/@g
197e8ead290Smrg		t dotsl
198e8ead290Smrg		s,/\.$,/,'
199e8ead290Smrgcollapseslashes='s@/\{1,\}@/@g'
200e8ead290Smrgfinalslash='s,/*$,/,'
201e8ead290Smrg
202e8ead290Smrg# func_normal_abspath PATH
203e8ead290Smrg# Remove doubled-up and trailing slashes, "." path components,
204e8ead290Smrg# and cancel out any ".." path components in PATH after making
205e8ead290Smrg# it an absolute path.
206e8ead290Smrg#             value returned in "$func_normal_abspath_result"
207e8ead290Smrgfunc_normal_abspath ()
208e8ead290Smrg{
209e8ead290Smrg  # Start from root dir and reassemble the path.
210e8ead290Smrg  func_normal_abspath_result=
211e8ead290Smrg  func_normal_abspath_tpath=$1
212e8ead290Smrg  func_normal_abspath_altnamespace=
213e8ead290Smrg  case $func_normal_abspath_tpath in
214e8ead290Smrg    "")
215e8ead290Smrg      # Empty path, that just means $cwd.
216e8ead290Smrg      func_stripname '' '/' "`pwd`"
217e8ead290Smrg      func_normal_abspath_result=$func_stripname_result
218e8ead290Smrg      return
219e8ead290Smrg    ;;
220e8ead290Smrg    # The next three entries are used to spot a run of precisely
221e8ead290Smrg    # two leading slashes without using negated character classes;
222e8ead290Smrg    # we take advantage of case's first-match behaviour.
223e8ead290Smrg    ///*)
224e8ead290Smrg      # Unusual form of absolute path, do nothing.
225e8ead290Smrg    ;;
226e8ead290Smrg    //*)
227e8ead290Smrg      # Not necessarily an ordinary path; POSIX reserves leading '//'
228e8ead290Smrg      # and for example Cygwin uses it to access remote file shares
229e8ead290Smrg      # over CIFS/SMB, so we conserve a leading double slash if found.
230e8ead290Smrg      func_normal_abspath_altnamespace=/
231e8ead290Smrg    ;;
232e8ead290Smrg    /*)
233e8ead290Smrg      # Absolute path, do nothing.
234e8ead290Smrg    ;;
235e8ead290Smrg    *)
236e8ead290Smrg      # Relative path, prepend $cwd.
237e8ead290Smrg      func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath
238e8ead290Smrg    ;;
239e8ead290Smrg  esac
240e8ead290Smrg  # Cancel out all the simple stuff to save iterations.  We also want
241e8ead290Smrg  # the path to end with a slash for ease of parsing, so make sure
242e8ead290Smrg  # there is one (and only one) here.
243e8ead290Smrg  func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
244e8ead290Smrg        -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"`
245e8ead290Smrg  while :; do
246e8ead290Smrg    # Processed it all yet?
247e8ead290Smrg    if test "$func_normal_abspath_tpath" = / ; then
248e8ead290Smrg      # If we ascended to the root using ".." the result may be empty now.
249e8ead290Smrg      if test -z "$func_normal_abspath_result" ; then
250e8ead290Smrg        func_normal_abspath_result=/
251e8ead290Smrg      fi
252e8ead290Smrg      break
253e8ead290Smrg    fi
254e8ead290Smrg    func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \
255e8ead290Smrg        -e "$pathcar"`
256e8ead290Smrg    func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
257e8ead290Smrg        -e "$pathcdr"`
258e8ead290Smrg    # Figure out what to do with it
259e8ead290Smrg    case $func_normal_abspath_tcomponent in
260e8ead290Smrg      "")
261e8ead290Smrg        # Trailing empty path component, ignore it.
262e8ead290Smrg      ;;
263e8ead290Smrg      ..)
264e8ead290Smrg        # Parent dir; strip last assembled component from result.
265e8ead290Smrg        func_dirname "$func_normal_abspath_result"
266e8ead290Smrg        func_normal_abspath_result=$func_dirname_result
267e8ead290Smrg      ;;
268e8ead290Smrg      *)
269e8ead290Smrg        # Actual path component, append it.
270e8ead290Smrg        func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent
271e8ead290Smrg      ;;
272e8ead290Smrg    esac
273e8ead290Smrg  done
274e8ead290Smrg  # Restore leading double-slash if one was found on entry.
275e8ead290Smrg  func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result
276e8ead290Smrg}
277e8ead290Smrg
278e8ead290Smrg# func_relative_path SRCDIR DSTDIR
279e8ead290Smrg# generates a relative path from SRCDIR to DSTDIR, with a trailing
280e8ead290Smrg# slash if non-empty, suitable for immediately appending a filename
281e8ead290Smrg# without needing to append a separator.
282e8ead290Smrg#             value returned in "$func_relative_path_result"
283e8ead290Smrgfunc_relative_path ()
284e8ead290Smrg{
285e8ead290Smrg  func_relative_path_result=
286e8ead290Smrg  func_normal_abspath "$1"
287e8ead290Smrg  func_relative_path_tlibdir=$func_normal_abspath_result
288e8ead290Smrg  func_normal_abspath "$2"
289e8ead290Smrg  func_relative_path_tbindir=$func_normal_abspath_result
290e8ead290Smrg
291e8ead290Smrg  # Ascend the tree starting from libdir
292e8ead290Smrg  while :; do
293e8ead290Smrg    # check if we have found a prefix of bindir
294e8ead290Smrg    case $func_relative_path_tbindir in
295e8ead290Smrg      $func_relative_path_tlibdir)
296e8ead290Smrg        # found an exact match
297e8ead290Smrg        func_relative_path_tcancelled=
298e8ead290Smrg        break
299e8ead290Smrg        ;;
300e8ead290Smrg      $func_relative_path_tlibdir*)
301e8ead290Smrg        # found a matching prefix
302e8ead290Smrg        func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir"
303e8ead290Smrg        func_relative_path_tcancelled=$func_stripname_result
304e8ead290Smrg        if test -z "$func_relative_path_result"; then
305e8ead290Smrg          func_relative_path_result=.
306e8ead290Smrg        fi
307e8ead290Smrg        break
308e8ead290Smrg        ;;
309e8ead290Smrg      *)
310e8ead290Smrg        func_dirname $func_relative_path_tlibdir
311e8ead290Smrg        func_relative_path_tlibdir=${func_dirname_result}
312e8ead290Smrg        if test "x$func_relative_path_tlibdir" = x ; then
313e8ead290Smrg          # Have to descend all the way to the root!
314e8ead290Smrg          func_relative_path_result=../$func_relative_path_result
315e8ead290Smrg          func_relative_path_tcancelled=$func_relative_path_tbindir
316e8ead290Smrg          break
317e8ead290Smrg        fi
318e8ead290Smrg        func_relative_path_result=../$func_relative_path_result
319e8ead290Smrg        ;;
320e8ead290Smrg    esac
321e8ead290Smrg  done
322e8ead290Smrg
323e8ead290Smrg  # Now calculate path; take care to avoid doubling-up slashes.
324e8ead290Smrg  func_stripname '' '/' "$func_relative_path_result"
325e8ead290Smrg  func_relative_path_result=$func_stripname_result
326e8ead290Smrg  func_stripname '/' '/' "$func_relative_path_tcancelled"
327e8ead290Smrg  if test "x$func_stripname_result" != x ; then
328e8ead290Smrg    func_relative_path_result=${func_relative_path_result}/${func_stripname_result}
329e8ead290Smrg  fi
330e8ead290Smrg
331e8ead290Smrg  # Normalisation. If bindir is libdir, return empty string,
332e8ead290Smrg  # else relative path ending with a slash; either way, target
333e8ead290Smrg  # file name can be directly appended.
334e8ead290Smrg  if test ! -z "$func_relative_path_result"; then
335e8ead290Smrg    func_stripname './' '' "$func_relative_path_result/"
336e8ead290Smrg    func_relative_path_result=$func_stripname_result
337e8ead290Smrg  fi
338e8ead290Smrg}
3397914d74bSmrg
3407914d74bSmrg# The name of this program:
341e169010aSmrgfunc_dirname_and_basename "$progpath"
342e169010aSmrgprogname=$func_basename_result
3437914d74bSmrg
344e169010aSmrg# Make sure we have an absolute path for reexecution:
345e169010aSmrgcase $progpath in
346e169010aSmrg  [\\/]*|[A-Za-z]:\\*) ;;
347e169010aSmrg  *[\\/]*)
348e169010aSmrg     progdir=$func_dirname_result
349e169010aSmrg     progdir=`cd "$progdir" && pwd`
350e169010aSmrg     progpath="$progdir/$progname"
351e169010aSmrg     ;;
352e169010aSmrg  *)
353e169010aSmrg     save_IFS="$IFS"
354e169010aSmrg     IFS=:
355e169010aSmrg     for progdir in $PATH; do
356e169010aSmrg       IFS="$save_IFS"
357e169010aSmrg       test -x "$progdir/$progname" && break
358e169010aSmrg     done
359e169010aSmrg     IFS="$save_IFS"
360e169010aSmrg     test -n "$progdir" || progdir=`pwd`
361e169010aSmrg     progpath="$progdir/$progname"
362e169010aSmrg     ;;
363e169010aSmrgesac
3647914d74bSmrg
365e169010aSmrg# Sed substitution that helps us do robust quoting.  It backslashifies
366e169010aSmrg# metacharacters that are still active within double-quoted strings.
367e169010aSmrgXsed="${SED}"' -e 1s/^X//'
368e169010aSmrgsed_quote_subst='s/\([`"$\\]\)/\\\1/g'
369e169010aSmrg
370e169010aSmrg# Same as above, but do not quote variable references.
371e169010aSmrgdouble_quote_subst='s/\(["`\\]\)/\\\1/g'
372e169010aSmrg
373e169010aSmrg# Re-`\' parameter expansions in output of double_quote_subst that were
374e169010aSmrg# `\'-ed in input to the same.  If an odd number of `\' preceded a '$'
375e169010aSmrg# in input to double_quote_subst, that '$' was protected from expansion.
376e169010aSmrg# Since each input `\' is now two `\'s, look for any number of runs of
377e169010aSmrg# four `\'s followed by two `\'s and then a '$'.  `\' that '$'.
378e169010aSmrgbs='\\'
379e169010aSmrgbs2='\\\\'
380e169010aSmrgbs4='\\\\\\\\'
381e169010aSmrgdollar='\$'
382e169010aSmrgsed_double_backslash="\
383e169010aSmrg  s/$bs4/&\\
384e169010aSmrg/g
385e169010aSmrg  s/^$bs2$dollar/$bs&/
386e169010aSmrg  s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
387e169010aSmrg  s/\n//g"
388e169010aSmrg
389e169010aSmrg# Standard options:
390e169010aSmrgopt_dry_run=false
391e169010aSmrgopt_help=false
392e169010aSmrgopt_quiet=false
393e169010aSmrgopt_verbose=false
394e169010aSmrgopt_warning=:
395e169010aSmrg
396e169010aSmrg# func_echo arg...
397e169010aSmrg# Echo program name prefixed message, along with the current mode
398e169010aSmrg# name if it has been set yet.
399e169010aSmrgfunc_echo ()
400e169010aSmrg{
401e169010aSmrg    $ECHO "$progname${mode+: }$mode: $*"
402e169010aSmrg}
4037914d74bSmrg
404e169010aSmrg# func_verbose arg...
405e169010aSmrg# Echo program name prefixed message in verbose mode only.
406e169010aSmrgfunc_verbose ()
407e169010aSmrg{
408e169010aSmrg    $opt_verbose && func_echo ${1+"$@"}
4097914d74bSmrg
410e169010aSmrg    # A bug in bash halts the script if the last line of a function
411e169010aSmrg    # fails when set -e is in force, so we need another command to
412e169010aSmrg    # work around that:
413e169010aSmrg    :
414e169010aSmrg}
4157914d74bSmrg
416e8ead290Smrg# func_echo_all arg...
417e8ead290Smrg# Invoke $ECHO with all args, space-separated.
418e8ead290Smrgfunc_echo_all ()
419e8ead290Smrg{
420e8ead290Smrg    $ECHO "$*"
421e8ead290Smrg}
422e8ead290Smrg
423e169010aSmrg# func_error arg...
424e169010aSmrg# Echo program name prefixed message to standard error.
425e169010aSmrgfunc_error ()
426e169010aSmrg{
427e169010aSmrg    $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2
428e169010aSmrg}
4297914d74bSmrg
430e169010aSmrg# func_warning arg...
431e169010aSmrg# Echo program name prefixed warning message to standard error.
432e169010aSmrgfunc_warning ()
433e169010aSmrg{
434e169010aSmrg    $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2
4357914d74bSmrg
436e169010aSmrg    # bash bug again:
437e169010aSmrg    :
438e169010aSmrg}
4397914d74bSmrg
440e169010aSmrg# func_fatal_error arg...
441e169010aSmrg# Echo program name prefixed message to standard error, and exit.
442e169010aSmrgfunc_fatal_error ()
443e169010aSmrg{
444e169010aSmrg    func_error ${1+"$@"}
445e169010aSmrg    exit $EXIT_FAILURE
446e169010aSmrg}
4477914d74bSmrg
448e169010aSmrg# func_fatal_help arg...
449e169010aSmrg# Echo program name prefixed message to standard error, followed by
450e169010aSmrg# a help hint, and exit.
451e169010aSmrgfunc_fatal_help ()
452e169010aSmrg{
453e169010aSmrg    func_error ${1+"$@"}
454e169010aSmrg    func_fatal_error "$help"
455e169010aSmrg}
456e169010aSmrghelp="Try \`$progname --help' for more information."  ## default
4577914d74bSmrg
4587914d74bSmrg
459e169010aSmrg# func_grep expression filename
460e169010aSmrg# Check whether EXPRESSION matches any line of FILENAME, without output.
461e169010aSmrgfunc_grep ()
462e169010aSmrg{
463e169010aSmrg    $GREP "$1" "$2" >/dev/null 2>&1
464e169010aSmrg}
465e169010aSmrg
466e169010aSmrg
467e169010aSmrg# func_mkdir_p directory-path
468e169010aSmrg# Make sure the entire path to DIRECTORY-PATH is available.
469e169010aSmrgfunc_mkdir_p ()
470e169010aSmrg{
471e169010aSmrg    my_directory_path="$1"
472e169010aSmrg    my_dir_list=
473e169010aSmrg
474e169010aSmrg    if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
475e169010aSmrg
476e169010aSmrg      # Protect directory names starting with `-'
477e169010aSmrg      case $my_directory_path in
478e169010aSmrg        -*) my_directory_path="./$my_directory_path" ;;
479e169010aSmrg      esac
480e169010aSmrg
481e169010aSmrg      # While some portion of DIR does not yet exist...
482e169010aSmrg      while test ! -d "$my_directory_path"; do
483e169010aSmrg        # ...make a list in topmost first order.  Use a colon delimited
484e169010aSmrg	# list incase some portion of path contains whitespace.
485e169010aSmrg        my_dir_list="$my_directory_path:$my_dir_list"
486e169010aSmrg
487e169010aSmrg        # If the last portion added has no slash in it, the list is done
488e169010aSmrg        case $my_directory_path in */*) ;; *) break ;; esac
489e169010aSmrg
490e169010aSmrg        # ...otherwise throw away the child directory and loop
491e8ead290Smrg        my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"`
492e169010aSmrg      done
493e8ead290Smrg      my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'`
494e169010aSmrg
495e169010aSmrg      save_mkdir_p_IFS="$IFS"; IFS=':'
496e169010aSmrg      for my_dir in $my_dir_list; do
497e169010aSmrg	IFS="$save_mkdir_p_IFS"
498e169010aSmrg        # mkdir can fail with a `File exist' error if two processes
499e169010aSmrg        # try to create one of the directories concurrently.  Don't
500e169010aSmrg        # stop in that case!
501e169010aSmrg        $MKDIR "$my_dir" 2>/dev/null || :
502e169010aSmrg      done
503e169010aSmrg      IFS="$save_mkdir_p_IFS"
504e169010aSmrg
505e169010aSmrg      # Bail out if we (or some other process) failed to create a directory.
506e169010aSmrg      test -d "$my_directory_path" || \
507e169010aSmrg        func_fatal_error "Failed to create \`$1'"
508e169010aSmrg    fi
509e169010aSmrg}
5107914d74bSmrg
5117914d74bSmrg
5127914d74bSmrg# func_mktempdir [string]
5137914d74bSmrg# Make a temporary directory that won't clash with other running
5147914d74bSmrg# libtool processes, and avoids race conditions if possible.  If
5157914d74bSmrg# given, STRING is the basename for that directory.
5167914d74bSmrgfunc_mktempdir ()
5177914d74bSmrg{
5187914d74bSmrg    my_template="${TMPDIR-/tmp}/${1-$progname}"
5197914d74bSmrg
520e169010aSmrg    if test "$opt_dry_run" = ":"; then
5217914d74bSmrg      # Return a directory name, but don't create it in dry-run mode
5227914d74bSmrg      my_tmpdir="${my_template}-$$"
5237914d74bSmrg    else
5247914d74bSmrg
5257914d74bSmrg      # If mktemp works, use that first and foremost
5267914d74bSmrg      my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
5277914d74bSmrg
5287914d74bSmrg      if test ! -d "$my_tmpdir"; then
529e169010aSmrg        # Failing that, at least try and use $RANDOM to avoid a race
530e169010aSmrg        my_tmpdir="${my_template}-${RANDOM-0}$$"
5317914d74bSmrg
532e169010aSmrg        save_mktempdir_umask=`umask`
533e169010aSmrg        umask 0077
534e169010aSmrg        $MKDIR "$my_tmpdir"
535e169010aSmrg        umask $save_mktempdir_umask
5367914d74bSmrg      fi
5377914d74bSmrg
5387914d74bSmrg      # If we're not in dry-run mode, bomb out on failure
539e169010aSmrg      test -d "$my_tmpdir" || \
540e169010aSmrg        func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
5417914d74bSmrg    fi
5427914d74bSmrg
543e8ead290Smrg    $ECHO "$my_tmpdir"
5447914d74bSmrg}
5457914d74bSmrg
5467914d74bSmrg
547e169010aSmrg# func_quote_for_eval arg
548e169010aSmrg# Aesthetically quote ARG to be evaled later.
549e169010aSmrg# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
550e169010aSmrg# is double-quoted, suitable for a subsequent eval, whereas
551e169010aSmrg# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
552e169010aSmrg# which are still active within double quotes backslashified.
553e169010aSmrgfunc_quote_for_eval ()
5547914d74bSmrg{
555e169010aSmrg    case $1 in
556e169010aSmrg      *[\\\`\"\$]*)
557e8ead290Smrg	func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;;
558e169010aSmrg      *)
559e169010aSmrg        func_quote_for_eval_unquoted_result="$1" ;;
560e169010aSmrg    esac
561e169010aSmrg
562e169010aSmrg    case $func_quote_for_eval_unquoted_result in
563e169010aSmrg      # Double-quote args containing shell metacharacters to delay
564e169010aSmrg      # word splitting, command substitution and and variable
565e169010aSmrg      # expansion for a subsequent eval.
566e169010aSmrg      # Many Bourne shells cannot handle close brackets correctly
567e169010aSmrg      # in scan sets, so we specify it separately.
568e169010aSmrg      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
569e169010aSmrg        func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
570e169010aSmrg        ;;
571e169010aSmrg      *)
572e169010aSmrg        func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
5737914d74bSmrg    esac
5747914d74bSmrg}
5757914d74bSmrg
5767914d74bSmrg
577e169010aSmrg# func_quote_for_expand arg
578e169010aSmrg# Aesthetically quote ARG to be evaled later; same as above,
579e169010aSmrg# but do not quote variable references.
580e169010aSmrgfunc_quote_for_expand ()
5817914d74bSmrg{
582e169010aSmrg    case $1 in
583e169010aSmrg      *[\\\`\"]*)
584e8ead290Smrg	my_arg=`$ECHO "$1" | $SED \
585e169010aSmrg	    -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
5867914d74bSmrg      *)
587e169010aSmrg        my_arg="$1" ;;
588e169010aSmrg    esac
589e169010aSmrg
590e169010aSmrg    case $my_arg in
591e169010aSmrg      # Double-quote args containing shell metacharacters to delay
592e169010aSmrg      # word splitting and command substitution for a subsequent eval.
593e169010aSmrg      # Many Bourne shells cannot handle close brackets correctly
594e169010aSmrg      # in scan sets, so we specify it separately.
595e169010aSmrg      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
596e169010aSmrg        my_arg="\"$my_arg\""
597e169010aSmrg        ;;
598e169010aSmrg    esac
599e169010aSmrg
600e169010aSmrg    func_quote_for_expand_result="$my_arg"
6017914d74bSmrg}
6027914d74bSmrg
6037914d74bSmrg
604e169010aSmrg# func_show_eval cmd [fail_exp]
605e169010aSmrg# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
606e169010aSmrg# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
607e169010aSmrg# is given, then evaluate it.
608e169010aSmrgfunc_show_eval ()
6097914d74bSmrg{
610e169010aSmrg    my_cmd="$1"
611e169010aSmrg    my_fail_exp="${2-:}"
6127914d74bSmrg
613e169010aSmrg    ${opt_silent-false} || {
614e169010aSmrg      func_quote_for_expand "$my_cmd"
615e169010aSmrg      eval "func_echo $func_quote_for_expand_result"
616e169010aSmrg    }
617e169010aSmrg
618e169010aSmrg    if ${opt_dry_run-false}; then :; else
619e169010aSmrg      eval "$my_cmd"
620e169010aSmrg      my_status=$?
621e169010aSmrg      if test "$my_status" -eq 0; then :; else
622e169010aSmrg	eval "(exit $my_status); $my_fail_exp"
623e169010aSmrg      fi
6247914d74bSmrg    fi
6257914d74bSmrg}
6267914d74bSmrg
627e169010aSmrg
628e169010aSmrg# func_show_eval_locale cmd [fail_exp]
629e169010aSmrg# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
630e169010aSmrg# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
631e169010aSmrg# is given, then evaluate it.  Use the saved locale for evaluation.
632e169010aSmrgfunc_show_eval_locale ()
6337914d74bSmrg{
634e169010aSmrg    my_cmd="$1"
635e169010aSmrg    my_fail_exp="${2-:}"
6367914d74bSmrg
637e169010aSmrg    ${opt_silent-false} || {
638e169010aSmrg      func_quote_for_expand "$my_cmd"
639e169010aSmrg      eval "func_echo $func_quote_for_expand_result"
640e169010aSmrg    }
641e169010aSmrg
642e169010aSmrg    if ${opt_dry_run-false}; then :; else
643e169010aSmrg      eval "$lt_user_locale
644e169010aSmrg	    $my_cmd"
645e169010aSmrg      my_status=$?
646e169010aSmrg      eval "$lt_safe_locale"
647e169010aSmrg      if test "$my_status" -eq 0; then :; else
648e169010aSmrg	eval "(exit $my_status); $my_fail_exp"
6497914d74bSmrg      fi
650e169010aSmrg    fi
6517914d74bSmrg}
6527914d74bSmrg
6537914d74bSmrg
654e169010aSmrg# func_version
655e169010aSmrg# Echo version message to standard output and exit.
656e169010aSmrgfunc_version ()
657e169010aSmrg{
658e8ead290Smrg    $SED -n '/(C)/!b go
659e8ead290Smrg	:more
660e8ead290Smrg	/\./!{
661e8ead290Smrg	  N
662e8ead290Smrg	  s/\n# / /
663e8ead290Smrg	  b more
664e8ead290Smrg	}
665e8ead290Smrg	:go
666e8ead290Smrg	/^# '$PROGRAM' (GNU /,/# warranty; / {
667e169010aSmrg        s/^# //
668e169010aSmrg	s/^# *$//
669e169010aSmrg        s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
670e169010aSmrg        p
671e169010aSmrg     }' < "$progpath"
672e169010aSmrg     exit $?
673e169010aSmrg}
674e169010aSmrg
675e169010aSmrg# func_usage
676e169010aSmrg# Echo short help message to standard output and exit.
677e169010aSmrgfunc_usage ()
678e169010aSmrg{
679e8ead290Smrg    $SED -n '/^# Usage:/,/^#  *.*--help/ {
680e169010aSmrg        s/^# //
681e169010aSmrg	s/^# *$//
682e169010aSmrg	s/\$progname/'$progname'/
683e169010aSmrg	p
684e169010aSmrg    }' < "$progpath"
685e8ead290Smrg    echo
686e169010aSmrg    $ECHO "run \`$progname --help | more' for full usage"
687e169010aSmrg    exit $?
688e169010aSmrg}
689e169010aSmrg
690e8ead290Smrg# func_help [NOEXIT]
691e8ead290Smrg# Echo long help message to standard output and exit,
692e8ead290Smrg# unless 'noexit' is passed as argument.
693e169010aSmrgfunc_help ()
694e169010aSmrg{
695e169010aSmrg    $SED -n '/^# Usage:/,/# Report bugs to/ {
696e169010aSmrg        s/^# //
697e169010aSmrg	s/^# *$//
698e169010aSmrg	s*\$progname*'$progname'*
699e169010aSmrg	s*\$host*'"$host"'*
700e169010aSmrg	s*\$SHELL*'"$SHELL"'*
701e169010aSmrg	s*\$LTCC*'"$LTCC"'*
702e169010aSmrg	s*\$LTCFLAGS*'"$LTCFLAGS"'*
703e169010aSmrg	s*\$LD*'"$LD"'*
704e169010aSmrg	s/\$with_gnu_ld/'"$with_gnu_ld"'/
705e169010aSmrg	s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/
706e169010aSmrg	s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/
707e169010aSmrg	p
708e169010aSmrg     }' < "$progpath"
709e8ead290Smrg    ret=$?
710e8ead290Smrg    if test -z "$1"; then
711e8ead290Smrg      exit $ret
712e8ead290Smrg    fi
713e169010aSmrg}
714e169010aSmrg
715e169010aSmrg# func_missing_arg argname
716e169010aSmrg# Echo program name prefixed message to standard error and set global
717e169010aSmrg# exit_cmd.
718e169010aSmrgfunc_missing_arg ()
719e169010aSmrg{
720e8ead290Smrg    func_error "missing argument for $1."
721e169010aSmrg    exit_cmd=exit
722e169010aSmrg}
723e169010aSmrg
724e169010aSmrgexit_cmd=:
725e169010aSmrg
726e169010aSmrg
727e169010aSmrg
728e169010aSmrg
729e169010aSmrg
7307914d74bSmrg
731e169010aSmrgmagic="%%%MAGIC variable%%%"
732e169010aSmrgmagic_exe="%%%MAGIC EXE variable%%%"
7337914d74bSmrg
734e169010aSmrg# Global variables.
735e169010aSmrg# $mode is unset
736e169010aSmrgnonopt=
737e169010aSmrgexecute_dlfiles=
738e169010aSmrgpreserve_args=
739e169010aSmrglo2o="s/\\.lo\$/.${objext}/"
740e169010aSmrgo2lo="s/\\.${objext}\$/.lo/"
741e169010aSmrgextracted_archives=
742e169010aSmrgextracted_serial=0
7437914d74bSmrg
744e169010aSmrgopt_dry_run=false
745e169010aSmrgopt_duplicate_deps=false
746e169010aSmrgopt_silent=false
747e169010aSmrgopt_debug=:
7487914d74bSmrg
749e169010aSmrg# If this variable is set in any of the actions, the command in it
750e169010aSmrg# will be execed at the end.  This prevents here-documents from being
751e169010aSmrg# left over by shells.
752e169010aSmrgexec_cmd=
7537914d74bSmrg
754e169010aSmrg# func_fatal_configuration arg...
755e169010aSmrg# Echo program name prefixed message to standard error, followed by
756e169010aSmrg# a configuration failure hint, and exit.
757e169010aSmrgfunc_fatal_configuration ()
758e169010aSmrg{
759e169010aSmrg    func_error ${1+"$@"}
760e169010aSmrg    func_error "See the $PACKAGE documentation for more information."
761e169010aSmrg    func_fatal_error "Fatal configuration error."
762e169010aSmrg}
763e169010aSmrg
764e169010aSmrg
765e169010aSmrg# func_config
766e169010aSmrg# Display the configuration for all the tags in this script.
767e169010aSmrgfunc_config ()
768e169010aSmrg{
769e169010aSmrg    re_begincf='^# ### BEGIN LIBTOOL'
770e169010aSmrg    re_endcf='^# ### END LIBTOOL'
771e169010aSmrg
772e169010aSmrg    # Default configuration.
773e169010aSmrg    $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
7747914d74bSmrg
7757914d74bSmrg    # Now print the configurations for the tags.
7767914d74bSmrg    for tagname in $taglist; do
777e169010aSmrg      $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
7787914d74bSmrg    done
7797914d74bSmrg
780e169010aSmrg    exit $?
781e169010aSmrg}
7827914d74bSmrg
783e169010aSmrg# func_features
784e169010aSmrg# Display the features supported by this script.
785e169010aSmrgfunc_features ()
786e169010aSmrg{
787e8ead290Smrg    echo "host: $host"
7887914d74bSmrg    if test "$build_libtool_libs" = yes; then
789e8ead290Smrg      echo "enable shared libraries"
7907914d74bSmrg    else
791e8ead290Smrg      echo "disable shared libraries"
7927914d74bSmrg    fi
7937914d74bSmrg    if test "$build_old_libs" = yes; then
794e8ead290Smrg      echo "enable static libraries"
7957914d74bSmrg    else
796e8ead290Smrg      echo "disable static libraries"
7977914d74bSmrg    fi
798e169010aSmrg
7997914d74bSmrg    exit $?
800e169010aSmrg}
801e169010aSmrg
802e169010aSmrg# func_enable_tag tagname
803e169010aSmrg# Verify that TAGNAME is valid, and either flag an error and exit, or
804e169010aSmrg# enable the TAGNAME tag.  We also add TAGNAME to the global $taglist
805e169010aSmrg# variable here.
806e169010aSmrgfunc_enable_tag ()
807e169010aSmrg{
808e169010aSmrg  # Global variable:
809e169010aSmrg  tagname="$1"
8107914d74bSmrg
811e169010aSmrg  re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
812e169010aSmrg  re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
813e169010aSmrg  sed_extractcf="/$re_begincf/,/$re_endcf/p"
8147914d74bSmrg
815e169010aSmrg  # Validate tagname.
816e169010aSmrg  case $tagname in
817e169010aSmrg    *[!-_A-Za-z0-9,/]*)
818e169010aSmrg      func_fatal_error "invalid tag name: $tagname"
819e169010aSmrg      ;;
820e169010aSmrg  esac
8217914d74bSmrg
822e169010aSmrg  # Don't test for the "default" C tag, as we know it's
823e169010aSmrg  # there but not specially marked.
824e169010aSmrg  case $tagname in
825e169010aSmrg    CC) ;;
826e169010aSmrg    *)
827e169010aSmrg      if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
828e169010aSmrg	taglist="$taglist $tagname"
829e169010aSmrg
830e169010aSmrg	# Evaluate the configuration.  Be careful to quote the path
831e169010aSmrg	# and the sed script, to avoid splitting on whitespace, but
832e169010aSmrg	# also don't use non-portable quotes within backquotes within
833e169010aSmrg	# quotes we have to do it in 2 steps:
834e169010aSmrg	extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
835e169010aSmrg	eval "$extractedcf"
836e169010aSmrg      else
837e169010aSmrg	func_error "ignoring unknown tag $tagname"
838e169010aSmrg      fi
839e169010aSmrg      ;;
840e169010aSmrg  esac
841e169010aSmrg}
8427914d74bSmrg
843e169010aSmrg# Parse options once, thoroughly.  This comes as soon as possible in
844e169010aSmrg# the script to make things like `libtool --version' happen quickly.
845e169010aSmrg{
8467914d74bSmrg
847e169010aSmrg  # Shorthand for --mode=foo, only valid as the first argument
848e169010aSmrg  case $1 in
849e169010aSmrg  clean|clea|cle|cl)
850e169010aSmrg    shift; set dummy --mode clean ${1+"$@"}; shift
8517914d74bSmrg    ;;
852e169010aSmrg  compile|compil|compi|comp|com|co|c)
853e169010aSmrg    shift; set dummy --mode compile ${1+"$@"}; shift
8547914d74bSmrg    ;;
855e169010aSmrg  execute|execut|execu|exec|exe|ex|e)
856e169010aSmrg    shift; set dummy --mode execute ${1+"$@"}; shift
8577914d74bSmrg    ;;
858e169010aSmrg  finish|finis|fini|fin|fi|f)
859e169010aSmrg    shift; set dummy --mode finish ${1+"$@"}; shift
8607914d74bSmrg    ;;
861e169010aSmrg  install|instal|insta|inst|ins|in|i)
862e169010aSmrg    shift; set dummy --mode install ${1+"$@"}; shift
863e169010aSmrg    ;;
864e169010aSmrg  link|lin|li|l)
865e169010aSmrg    shift; set dummy --mode link ${1+"$@"}; shift
866e169010aSmrg    ;;
867e169010aSmrg  uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
868e169010aSmrg    shift; set dummy --mode uninstall ${1+"$@"}; shift
8697914d74bSmrg    ;;
8707914d74bSmrg  esac
8717914d74bSmrg
872e169010aSmrg  # Parse non-mode specific arguments:
873e169010aSmrg  while test "$#" -gt 0; do
874e169010aSmrg    opt="$1"
875e169010aSmrg    shift
8767914d74bSmrg
877e169010aSmrg    case $opt in
878e169010aSmrg      --config)		func_config					;;
8797914d74bSmrg
880e169010aSmrg      --debug)		preserve_args="$preserve_args $opt"
881e169010aSmrg			func_echo "enabling shell trace mode"
882e169010aSmrg			opt_debug='set -x'
883e169010aSmrg			$opt_debug
884e169010aSmrg			;;
8857914d74bSmrg
886e169010aSmrg      -dlopen)		test "$#" -eq 0 && func_missing_arg "$opt" && break
887e169010aSmrg			execute_dlfiles="$execute_dlfiles $1"
888e169010aSmrg			shift
889e169010aSmrg			;;
8907914d74bSmrg
891e169010aSmrg      --dry-run | -n)	opt_dry_run=:					;;
892e169010aSmrg      --features)       func_features					;;
893e169010aSmrg      --finish)		mode="finish"					;;
894e169010aSmrg
895e169010aSmrg      --mode)		test "$#" -eq 0 && func_missing_arg "$opt" && break
896e169010aSmrg			case $1 in
897e169010aSmrg			  # Valid mode arguments:
898e169010aSmrg			  clean)	;;
899e169010aSmrg			  compile)	;;
900e169010aSmrg			  execute)	;;
901e169010aSmrg			  finish)	;;
902e169010aSmrg			  install)	;;
903e169010aSmrg			  link)		;;
904e169010aSmrg			  relink)	;;
905e169010aSmrg			  uninstall)	;;
906e169010aSmrg
907e169010aSmrg			  # Catch anything else as an error
908e169010aSmrg			  *) func_error "invalid argument for $opt"
909e169010aSmrg			     exit_cmd=exit
910e169010aSmrg			     break
911e169010aSmrg			     ;;
912e169010aSmrg		        esac
913e169010aSmrg
914e169010aSmrg			mode="$1"
915e169010aSmrg			shift
916e169010aSmrg			;;
917e169010aSmrg
918e169010aSmrg      --preserve-dup-deps)
919e169010aSmrg			opt_duplicate_deps=:				;;
920e169010aSmrg
921e169010aSmrg      --quiet|--silent)	preserve_args="$preserve_args $opt"
922e169010aSmrg			opt_silent=:
923e8ead290Smrg			opt_verbose=false
924e8ead290Smrg			;;
925e8ead290Smrg
926e8ead290Smrg      --no-quiet|--no-silent)
927e8ead290Smrg			preserve_args="$preserve_args $opt"
928e8ead290Smrg			opt_silent=false
929e169010aSmrg			;;
930e169010aSmrg
931e169010aSmrg      --verbose| -v)	preserve_args="$preserve_args $opt"
932e169010aSmrg			opt_silent=false
933e8ead290Smrg			opt_verbose=:
934e8ead290Smrg			;;
935e8ead290Smrg
936e8ead290Smrg      --no-verbose)	preserve_args="$preserve_args $opt"
937e8ead290Smrg			opt_verbose=false
938e169010aSmrg			;;
939e169010aSmrg
940e169010aSmrg      --tag)		test "$#" -eq 0 && func_missing_arg "$opt" && break
941e169010aSmrg			preserve_args="$preserve_args $opt $1"
942e169010aSmrg			func_enable_tag "$1"	# tagname is set here
943e169010aSmrg			shift
944e169010aSmrg			;;
945e169010aSmrg
946e169010aSmrg      # Separate optargs to long options:
947e169010aSmrg      -dlopen=*|--mode=*|--tag=*)
948e169010aSmrg			func_opt_split "$opt"
949e169010aSmrg			set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"}
950e169010aSmrg			shift
951e169010aSmrg			;;
952e169010aSmrg
953e169010aSmrg      -\?|-h)		func_usage					;;
954e169010aSmrg      --help)		opt_help=:					;;
955e8ead290Smrg      --help-all)	opt_help=': help-all'				;;
956e169010aSmrg      --version)	func_version					;;
957e169010aSmrg
958e169010aSmrg      -*)		func_fatal_help "unrecognized option \`$opt'"	;;
959e169010aSmrg
960e169010aSmrg      *)		nonopt="$opt"
961e169010aSmrg			break
962e169010aSmrg			;;
963e169010aSmrg    esac
964e169010aSmrg  done
965e169010aSmrg
966e169010aSmrg
967e169010aSmrg  case $host in
968e169010aSmrg    *cygwin* | *mingw* | *pw32* | *cegcc*)
969e169010aSmrg      # don't eliminate duplications in $postdeps and $predeps
970e169010aSmrg      opt_duplicate_compiler_generated_deps=:
9717914d74bSmrg      ;;
9727914d74bSmrg    *)
973e169010aSmrg      opt_duplicate_compiler_generated_deps=$opt_duplicate_deps
974e169010aSmrg      ;;
975e169010aSmrg  esac
9767914d74bSmrg
977e169010aSmrg  # Having warned about all mis-specified options, bail out if
978e169010aSmrg  # anything was wrong.
979e169010aSmrg  $exit_cmd $EXIT_FAILURE
980e169010aSmrg}
981e169010aSmrg
982e169010aSmrg# func_check_version_match
983e169010aSmrg# Ensure that we are using m4 macros, and libtool script from the same
984e169010aSmrg# release of libtool.
985e169010aSmrgfunc_check_version_match ()
986e169010aSmrg{
987e169010aSmrg  if test "$package_revision" != "$macro_revision"; then
988e169010aSmrg    if test "$VERSION" != "$macro_version"; then
989e169010aSmrg      if test -z "$macro_version"; then
990e169010aSmrg        cat >&2 <<_LT_EOF
991e169010aSmrg$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
992e169010aSmrg$progname: definition of this LT_INIT comes from an older release.
993e169010aSmrg$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
994e169010aSmrg$progname: and run autoconf again.
995e169010aSmrg_LT_EOF
996e169010aSmrg      else
997e169010aSmrg        cat >&2 <<_LT_EOF
998e169010aSmrg$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
999e169010aSmrg$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
1000e169010aSmrg$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
1001e169010aSmrg$progname: and run autoconf again.
1002e169010aSmrg_LT_EOF
10037914d74bSmrg      fi
1004e169010aSmrg    else
1005e169010aSmrg      cat >&2 <<_LT_EOF
1006e169010aSmrg$progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision,
1007e169010aSmrg$progname: but the definition of this LT_INIT comes from revision $macro_revision.
1008e169010aSmrg$progname: You should recreate aclocal.m4 with macros from revision $package_revision
1009e169010aSmrg$progname: of $PACKAGE $VERSION and run autoconf again.
1010e169010aSmrg_LT_EOF
1011e169010aSmrg    fi
1012e169010aSmrg
1013e169010aSmrg    exit $EXIT_MISMATCH
1014e169010aSmrg  fi
1015e169010aSmrg}
1016e169010aSmrg
1017e169010aSmrg
1018e169010aSmrg## ----------- ##
1019e169010aSmrg##    Main.    ##
1020e169010aSmrg## ----------- ##
1021e169010aSmrg
1022e169010aSmrg$opt_help || {
1023e169010aSmrg  # Sanity checks first:
1024e169010aSmrg  func_check_version_match
1025e169010aSmrg
1026e169010aSmrg  if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
1027e169010aSmrg    func_fatal_configuration "not configured to build any kind of library"
10287914d74bSmrg  fi
10297914d74bSmrg
1030e169010aSmrg  test -z "$mode" && func_fatal_error "error: you must specify a MODE."
1031e169010aSmrg
1032e169010aSmrg
1033e169010aSmrg  # Darwin sucks
1034e169010aSmrg  eval std_shrext=\"$shrext_cmds\"
1035e169010aSmrg
1036e169010aSmrg
10377914d74bSmrg  # Only execute mode is allowed to have -dlopen flags.
10387914d74bSmrg  if test -n "$execute_dlfiles" && test "$mode" != execute; then
1039e169010aSmrg    func_error "unrecognized option \`-dlopen'"
1040e169010aSmrg    $ECHO "$help" 1>&2
10417914d74bSmrg    exit $EXIT_FAILURE
10427914d74bSmrg  fi
10437914d74bSmrg
10447914d74bSmrg  # Change the help message to a mode-specific one.
10457914d74bSmrg  generic_help="$help"
1046e169010aSmrg  help="Try \`$progname --help --mode=$mode' for more information."
1047e169010aSmrg}
10487914d74bSmrg
10497914d74bSmrg
1050e169010aSmrg# func_lalib_p file
1051e169010aSmrg# True iff FILE is a libtool `.la' library or `.lo' object file.
1052e169010aSmrg# This function is only a basic sanity check; it will hardly flush out
1053e169010aSmrg# determined imposters.
1054e169010aSmrgfunc_lalib_p ()
1055e169010aSmrg{
1056e169010aSmrg    test -f "$1" &&
1057e169010aSmrg      $SED -e 4q "$1" 2>/dev/null \
1058e169010aSmrg        | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
1059e169010aSmrg}
10607914d74bSmrg
1061e169010aSmrg# func_lalib_unsafe_p file
1062e169010aSmrg# True iff FILE is a libtool `.la' library or `.lo' object file.
1063e169010aSmrg# This function implements the same check as func_lalib_p without
1064e169010aSmrg# resorting to external programs.  To this end, it redirects stdin and
1065e169010aSmrg# closes it afterwards, without saving the original file descriptor.
1066e169010aSmrg# As a safety measure, use it only where a negative result would be
1067e169010aSmrg# fatal anyway.  Works if `file' does not exist.
1068e169010aSmrgfunc_lalib_unsafe_p ()
1069e169010aSmrg{
1070e169010aSmrg    lalib_p=no
1071e169010aSmrg    if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
1072e169010aSmrg	for lalib_p_l in 1 2 3 4
1073e169010aSmrg	do
1074e169010aSmrg	    read lalib_p_line
1075e169010aSmrg	    case "$lalib_p_line" in
1076e169010aSmrg		\#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
1077e169010aSmrg	    esac
1078e169010aSmrg	done
1079e169010aSmrg	exec 0<&5 5<&-
1080e169010aSmrg    fi
1081e169010aSmrg    test "$lalib_p" = yes
1082e169010aSmrg}
10837914d74bSmrg
1084e169010aSmrg# func_ltwrapper_script_p file
1085e169010aSmrg# True iff FILE is a libtool wrapper script
1086e169010aSmrg# This function is only a basic sanity check; it will hardly flush out
1087e169010aSmrg# determined imposters.
1088e169010aSmrgfunc_ltwrapper_script_p ()
1089e169010aSmrg{
1090e169010aSmrg    func_lalib_p "$1"
1091e169010aSmrg}
10927914d74bSmrg
1093e169010aSmrg# func_ltwrapper_executable_p file
1094e169010aSmrg# True iff FILE is a libtool wrapper executable
1095e169010aSmrg# This function is only a basic sanity check; it will hardly flush out
1096e169010aSmrg# determined imposters.
1097e169010aSmrgfunc_ltwrapper_executable_p ()
1098e169010aSmrg{
1099e169010aSmrg    func_ltwrapper_exec_suffix=
1100e169010aSmrg    case $1 in
1101e169010aSmrg    *.exe) ;;
1102e169010aSmrg    *) func_ltwrapper_exec_suffix=.exe ;;
1103e169010aSmrg    esac
1104e169010aSmrg    $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
1105e169010aSmrg}
11067914d74bSmrg
1107e169010aSmrg# func_ltwrapper_scriptname file
1108e169010aSmrg# Assumes file is an ltwrapper_executable
1109e169010aSmrg# uses $file to determine the appropriate filename for a
1110e169010aSmrg# temporary ltwrapper_script.
1111e169010aSmrgfunc_ltwrapper_scriptname ()
1112e169010aSmrg{
1113e169010aSmrg    func_ltwrapper_scriptname_result=""
1114e169010aSmrg    if func_ltwrapper_executable_p "$1"; then
1115e169010aSmrg	func_dirname_and_basename "$1" "" "."
1116e169010aSmrg	func_stripname '' '.exe' "$func_basename_result"
1117e169010aSmrg	func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
1118e169010aSmrg    fi
1119e169010aSmrg}
11207914d74bSmrg
1121e169010aSmrg# func_ltwrapper_p file
1122e169010aSmrg# True iff FILE is a libtool wrapper script or wrapper executable
1123e169010aSmrg# This function is only a basic sanity check; it will hardly flush out
1124e169010aSmrg# determined imposters.
1125e169010aSmrgfunc_ltwrapper_p ()
1126e169010aSmrg{
1127e169010aSmrg    func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
1128e169010aSmrg}
11297914d74bSmrg
11307914d74bSmrg
1131e169010aSmrg# func_execute_cmds commands fail_cmd
1132e169010aSmrg# Execute tilde-delimited COMMANDS.
1133e169010aSmrg# If FAIL_CMD is given, eval that upon failure.
1134e169010aSmrg# FAIL_CMD may read-access the current command in variable CMD!
1135e169010aSmrgfunc_execute_cmds ()
1136e169010aSmrg{
1137e169010aSmrg    $opt_debug
1138e169010aSmrg    save_ifs=$IFS; IFS='~'
1139e169010aSmrg    for cmd in $1; do
1140e169010aSmrg      IFS=$save_ifs
1141e169010aSmrg      eval cmd=\"$cmd\"
1142e169010aSmrg      func_show_eval "$cmd" "${2-:}"
1143e169010aSmrg    done
1144e169010aSmrg    IFS=$save_ifs
1145e169010aSmrg}
1146e169010aSmrg
1147e169010aSmrg
1148e169010aSmrg# func_source file
1149e169010aSmrg# Source FILE, adding directory component if necessary.
1150e169010aSmrg# Note that it is not necessary on cygwin/mingw to append a dot to
1151e169010aSmrg# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
1152e169010aSmrg# behavior happens only for exec(3), not for open(2)!  Also, sourcing
1153e169010aSmrg# `FILE.' does not work on cygwin managed mounts.
1154e169010aSmrgfunc_source ()
1155e169010aSmrg{
1156e169010aSmrg    $opt_debug
1157e169010aSmrg    case $1 in
1158e169010aSmrg    */* | *\\*)	. "$1" ;;
1159e169010aSmrg    *)		. "./$1" ;;
1160e169010aSmrg    esac
1161e169010aSmrg}
1162e169010aSmrg
1163e169010aSmrg
1164e169010aSmrg# func_infer_tag arg
1165e169010aSmrg# Infer tagged configuration to use if any are available and
1166e169010aSmrg# if one wasn't chosen via the "--tag" command line option.
1167e169010aSmrg# Only attempt this if the compiler in the base compile
1168e169010aSmrg# command doesn't match the default compiler.
1169e169010aSmrg# arg is usually of the form 'gcc ...'
1170e169010aSmrgfunc_infer_tag ()
1171e169010aSmrg{
1172e169010aSmrg    $opt_debug
1173e169010aSmrg    if test -n "$available_tags" && test -z "$tagname"; then
1174e169010aSmrg      CC_quoted=
1175e169010aSmrg      for arg in $CC; do
1176e169010aSmrg        func_quote_for_eval "$arg"
1177e169010aSmrg	CC_quoted="$CC_quoted $func_quote_for_eval_result"
1178e169010aSmrg      done
1179e8ead290Smrg      CC_expanded=`func_echo_all $CC`
1180e8ead290Smrg      CC_quoted_expanded=`func_echo_all $CC_quoted`
1181e169010aSmrg      case $@ in
1182e169010aSmrg      # Blanks in the command may have been stripped by the calling shell,
1183e169010aSmrg      # but not from the CC environment variable when configure was run.
1184e8ead290Smrg      " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
1185e8ead290Smrg      " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;;
1186e169010aSmrg      # Blanks at the start of $base_compile will cause this to fail
1187e169010aSmrg      # if we don't check for them as well.
1188e169010aSmrg      *)
1189e169010aSmrg	for z in $available_tags; do
1190e169010aSmrg	  if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
1191e169010aSmrg	    # Evaluate the configuration.
1192e169010aSmrg	    eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
1193e169010aSmrg	    CC_quoted=
1194e169010aSmrg	    for arg in $CC; do
1195e169010aSmrg	      # Double-quote args containing other shell metacharacters.
1196e169010aSmrg	      func_quote_for_eval "$arg"
1197e169010aSmrg	      CC_quoted="$CC_quoted $func_quote_for_eval_result"
1198e169010aSmrg	    done
1199e8ead290Smrg	    CC_expanded=`func_echo_all $CC`
1200e8ead290Smrg	    CC_quoted_expanded=`func_echo_all $CC_quoted`
1201e169010aSmrg	    case "$@ " in
1202e8ead290Smrg	    " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
1203e8ead290Smrg	    " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*)
1204e169010aSmrg	      # The compiler in the base compile command matches
1205e169010aSmrg	      # the one in the tagged configuration.
1206e169010aSmrg	      # Assume this is the tagged configuration we want.
1207e169010aSmrg	      tagname=$z
1208e169010aSmrg	      break
1209e169010aSmrg	      ;;
12107914d74bSmrg	    esac
1211e169010aSmrg	  fi
1212e169010aSmrg	done
1213e169010aSmrg	# If $tagname still isn't set, then no tagged configuration
1214e169010aSmrg	# was found and let the user know that the "--tag" command
1215e169010aSmrg	# line option must be used.
1216e169010aSmrg	if test -z "$tagname"; then
1217e169010aSmrg	  func_echo "unable to infer tagged configuration"
1218e169010aSmrg	  func_fatal_error "specify a tag with \`--tag'"
1219e169010aSmrg#	else
1220e169010aSmrg#	  func_verbose "using $tagname tagged configuration"
1221e169010aSmrg	fi
1222e169010aSmrg	;;
1223e169010aSmrg      esac
1224e169010aSmrg    fi
1225e169010aSmrg}
1226e169010aSmrg
1227e169010aSmrg
1228e169010aSmrg
1229e169010aSmrg# func_write_libtool_object output_name pic_name nonpic_name
1230e169010aSmrg# Create a libtool object file (analogous to a ".la" file),
1231e169010aSmrg# but don't create it if we're doing a dry run.
1232e169010aSmrgfunc_write_libtool_object ()
1233e169010aSmrg{
1234e169010aSmrg    write_libobj=${1}
1235e169010aSmrg    if test "$build_libtool_libs" = yes; then
1236e169010aSmrg      write_lobj=\'${2}\'
1237e169010aSmrg    else
1238e169010aSmrg      write_lobj=none
1239e169010aSmrg    fi
1240e169010aSmrg
1241e169010aSmrg    if test "$build_old_libs" = yes; then
1242e169010aSmrg      write_oldobj=\'${3}\'
1243e169010aSmrg    else
1244e169010aSmrg      write_oldobj=none
1245e169010aSmrg    fi
1246e169010aSmrg
1247e169010aSmrg    $opt_dry_run || {
1248e169010aSmrg      cat >${write_libobj}T <<EOF
1249e169010aSmrg# $write_libobj - a libtool object file
1250e169010aSmrg# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
1251e169010aSmrg#
1252e169010aSmrg# Please DO NOT delete this file!
1253e169010aSmrg# It is necessary for linking the library.
1254e169010aSmrg
1255e169010aSmrg# Name of the PIC object.
1256e169010aSmrgpic_object=$write_lobj
1257e169010aSmrg
1258e169010aSmrg# Name of the non-PIC object
1259e169010aSmrgnon_pic_object=$write_oldobj
1260e169010aSmrg
1261e169010aSmrgEOF
1262e169010aSmrg      $MV "${write_libobj}T" "${write_libobj}"
1263e169010aSmrg    }
1264e169010aSmrg}
1265e169010aSmrg
1266e169010aSmrg# func_mode_compile arg...
1267e169010aSmrgfunc_mode_compile ()
1268e169010aSmrg{
1269e169010aSmrg    $opt_debug
1270e169010aSmrg    # Get the compilation command and the source file.
1271e169010aSmrg    base_compile=
1272e169010aSmrg    srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
1273e169010aSmrg    suppress_opt=yes
1274e169010aSmrg    suppress_output=
1275e169010aSmrg    arg_mode=normal
1276e169010aSmrg    libobj=
1277e169010aSmrg    later=
1278e169010aSmrg    pie_flag=
1279e169010aSmrg
1280e169010aSmrg    for arg
1281e169010aSmrg    do
1282e169010aSmrg      case $arg_mode in
1283e169010aSmrg      arg  )
1284e169010aSmrg	# do not "continue".  Instead, add this to base_compile
1285e169010aSmrg	lastarg="$arg"
1286e169010aSmrg	arg_mode=normal
1287e169010aSmrg	;;
1288e169010aSmrg
1289e169010aSmrg      target )
1290e169010aSmrg	libobj="$arg"
1291e169010aSmrg	arg_mode=normal
1292e169010aSmrg	continue
1293e169010aSmrg	;;
1294e169010aSmrg
1295e169010aSmrg      normal )
1296e169010aSmrg	# Accept any command-line options.
1297e169010aSmrg	case $arg in
1298e169010aSmrg	-o)
1299e169010aSmrg	  test -n "$libobj" && \
1300e169010aSmrg	    func_fatal_error "you cannot specify \`-o' more than once"
1301e169010aSmrg	  arg_mode=target
1302e169010aSmrg	  continue
1303e169010aSmrg	  ;;
1304e169010aSmrg
1305e169010aSmrg	-pie | -fpie | -fPIE)
1306e169010aSmrg          pie_flag="$pie_flag $arg"
1307e169010aSmrg	  continue
1308e169010aSmrg	  ;;
1309e169010aSmrg
1310e169010aSmrg	-shared | -static | -prefer-pic | -prefer-non-pic)
1311e169010aSmrg	  later="$later $arg"
1312e169010aSmrg	  continue
1313e169010aSmrg	  ;;
1314e169010aSmrg
1315e169010aSmrg	-no-suppress)
1316e169010aSmrg	  suppress_opt=no
1317e169010aSmrg	  continue
1318e169010aSmrg	  ;;
1319e169010aSmrg
1320e169010aSmrg	-Xcompiler)
1321e169010aSmrg	  arg_mode=arg  #  the next one goes into the "base_compile" arg list
1322e169010aSmrg	  continue      #  The current "srcfile" will either be retained or
1323e169010aSmrg	  ;;            #  replaced later.  I would guess that would be a bug.
1324e169010aSmrg
1325e169010aSmrg	-Wc,*)
1326e169010aSmrg	  func_stripname '-Wc,' '' "$arg"
1327e169010aSmrg	  args=$func_stripname_result
1328e169010aSmrg	  lastarg=
1329e169010aSmrg	  save_ifs="$IFS"; IFS=','
1330e169010aSmrg	  for arg in $args; do
1331e169010aSmrg	    IFS="$save_ifs"
1332e169010aSmrg	    func_quote_for_eval "$arg"
1333e169010aSmrg	    lastarg="$lastarg $func_quote_for_eval_result"
13347914d74bSmrg	  done
13357914d74bSmrg	  IFS="$save_ifs"
1336e169010aSmrg	  func_stripname ' ' '' "$lastarg"
1337e169010aSmrg	  lastarg=$func_stripname_result
13387914d74bSmrg
13397914d74bSmrg	  # Add the arguments to base_compile.
13407914d74bSmrg	  base_compile="$base_compile $lastarg"
13417914d74bSmrg	  continue
13427914d74bSmrg	  ;;
13437914d74bSmrg
1344e169010aSmrg	*)
13457914d74bSmrg	  # Accept the current argument as the source file.
13467914d74bSmrg	  # The previous "srcfile" becomes the current argument.
13477914d74bSmrg	  #
13487914d74bSmrg	  lastarg="$srcfile"
13497914d74bSmrg	  srcfile="$arg"
13507914d74bSmrg	  ;;
13517914d74bSmrg	esac  #  case $arg
13527914d74bSmrg	;;
13537914d74bSmrg      esac    #  case $arg_mode
13547914d74bSmrg
13557914d74bSmrg      # Aesthetically quote the previous argument.
1356e169010aSmrg      func_quote_for_eval "$lastarg"
1357e169010aSmrg      base_compile="$base_compile $func_quote_for_eval_result"
13587914d74bSmrg    done # for arg
13597914d74bSmrg
13607914d74bSmrg    case $arg_mode in
13617914d74bSmrg    arg)
1362e169010aSmrg      func_fatal_error "you must specify an argument for -Xcompile"
13637914d74bSmrg      ;;
13647914d74bSmrg    target)
1365e169010aSmrg      func_fatal_error "you must specify a target with \`-o'"
13667914d74bSmrg      ;;
13677914d74bSmrg    *)
13687914d74bSmrg      # Get the name of the library object.
1369e169010aSmrg      test -z "$libobj" && {
1370e169010aSmrg	func_basename "$srcfile"
1371e169010aSmrg	libobj="$func_basename_result"
1372e169010aSmrg      }
13737914d74bSmrg      ;;
13747914d74bSmrg    esac
13757914d74bSmrg
13767914d74bSmrg    # Recognize several different file suffixes.
13777914d74bSmrg    # If the user specifies -o file.o, it is replaced with file.lo
13787914d74bSmrg    case $libobj in
1379e169010aSmrg    *.[cCFSifmso] | \
1380e169010aSmrg    *.ada | *.adb | *.ads | *.asm | \
1381e169010aSmrg    *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
1382e8ead290Smrg    *.[fF][09]? | *.for | *.java | *.obj | *.sx | *.cu | *.cup)
1383e169010aSmrg      func_xform "$libobj"
1384e169010aSmrg      libobj=$func_xform_result
1385e169010aSmrg      ;;
13867914d74bSmrg    esac
13877914d74bSmrg
13887914d74bSmrg    case $libobj in
1389e169010aSmrg    *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
13907914d74bSmrg    *)
1391e169010aSmrg      func_fatal_error "cannot determine name of library object from \`$libobj'"
13927914d74bSmrg      ;;
13937914d74bSmrg    esac
13947914d74bSmrg
13957914d74bSmrg    func_infer_tag $base_compile
13967914d74bSmrg
13977914d74bSmrg    for arg in $later; do
13987914d74bSmrg      case $arg in
1399e169010aSmrg      -shared)
1400e169010aSmrg	test "$build_libtool_libs" != yes && \
1401e169010aSmrg	  func_fatal_configuration "can not build a shared library"
1402e169010aSmrg	build_old_libs=no
1403e169010aSmrg	continue
1404e169010aSmrg	;;
1405e169010aSmrg
14067914d74bSmrg      -static)
1407e169010aSmrg	build_libtool_libs=no
14087914d74bSmrg	build_old_libs=yes
14097914d74bSmrg	continue
14107914d74bSmrg	;;
14117914d74bSmrg
14127914d74bSmrg      -prefer-pic)
14137914d74bSmrg	pic_mode=yes
14147914d74bSmrg	continue
14157914d74bSmrg	;;
14167914d74bSmrg
14177914d74bSmrg      -prefer-non-pic)
14187914d74bSmrg	pic_mode=no
14197914d74bSmrg	continue
14207914d74bSmrg	;;
14217914d74bSmrg      esac
14227914d74bSmrg    done
14237914d74bSmrg
1424e169010aSmrg    func_quote_for_eval "$libobj"
1425e169010aSmrg    test "X$libobj" != "X$func_quote_for_eval_result" \
1426e169010aSmrg      && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"'	 &()|`$[]' \
1427e169010aSmrg      && func_warning "libobj name \`$libobj' may not contain shell special characters."
1428e169010aSmrg    func_dirname_and_basename "$obj" "/" ""
1429e169010aSmrg    objname="$func_basename_result"
1430e169010aSmrg    xdir="$func_dirname_result"
14317914d74bSmrg    lobj=${xdir}$objdir/$objname
14327914d74bSmrg
1433e169010aSmrg    test -z "$base_compile" && \
1434e169010aSmrg      func_fatal_help "you must specify a compilation command"
14357914d74bSmrg
14367914d74bSmrg    # Delete any leftover library objects.
14377914d74bSmrg    if test "$build_old_libs" = yes; then
14387914d74bSmrg      removelist="$obj $lobj $libobj ${libobj}T"
14397914d74bSmrg    else
14407914d74bSmrg      removelist="$lobj $libobj ${libobj}T"
14417914d74bSmrg    fi
14427914d74bSmrg
14437914d74bSmrg    # On Cygwin there's no "real" PIC flag so we must build both object types
14447914d74bSmrg    case $host_os in
1445e169010aSmrg    cygwin* | mingw* | pw32* | os2* | cegcc*)
14467914d74bSmrg      pic_mode=default
14477914d74bSmrg      ;;
14487914d74bSmrg    esac
14497914d74bSmrg    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
14507914d74bSmrg      # non-PIC code in shared libraries is not supported
14517914d74bSmrg      pic_mode=default
14527914d74bSmrg    fi
14537914d74bSmrg
14547914d74bSmrg    # Calculate the filename of the output object if compiler does
14557914d74bSmrg    # not support -o with -c
14567914d74bSmrg    if test "$compiler_c_o" = no; then
1457e8ead290Smrg      output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext}
14587914d74bSmrg      lockfile="$output_obj.lock"
14597914d74bSmrg    else
14607914d74bSmrg      output_obj=
14617914d74bSmrg      need_locks=no
14627914d74bSmrg      lockfile=
14637914d74bSmrg    fi
14647914d74bSmrg
14657914d74bSmrg    # Lock this critical section if it is needed
14667914d74bSmrg    # We use this script file to make the link, it avoids creating a new file
14677914d74bSmrg    if test "$need_locks" = yes; then
1468e169010aSmrg      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
1469e169010aSmrg	func_echo "Waiting for $lockfile to be removed"
14707914d74bSmrg	sleep 2
14717914d74bSmrg      done
14727914d74bSmrg    elif test "$need_locks" = warn; then
14737914d74bSmrg      if test -f "$lockfile"; then
1474e169010aSmrg	$ECHO "\
14757914d74bSmrg*** ERROR, $lockfile exists and contains:
14767914d74bSmrg`cat $lockfile 2>/dev/null`
14777914d74bSmrg
14787914d74bSmrgThis indicates that another process is trying to use the same
14797914d74bSmrgtemporary object file, and libtool could not work around it because
14807914d74bSmrgyour compiler does not support \`-c' and \`-o' together.  If you
14817914d74bSmrgrepeat this compilation, it may succeed, by chance, but you had better
14827914d74bSmrgavoid parallel builds (make -j) in this platform, or get a better
14837914d74bSmrgcompiler."
14847914d74bSmrg
1485e169010aSmrg	$opt_dry_run || $RM $removelist
14867914d74bSmrg	exit $EXIT_FAILURE
14877914d74bSmrg      fi
1488e169010aSmrg      removelist="$removelist $output_obj"
1489e169010aSmrg      $ECHO "$srcfile" > "$lockfile"
14907914d74bSmrg    fi
14917914d74bSmrg
1492e169010aSmrg    $opt_dry_run || $RM $removelist
1493e169010aSmrg    removelist="$removelist $lockfile"
1494e169010aSmrg    trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
1495e169010aSmrg
14967914d74bSmrg    if test -n "$fix_srcfile_path"; then
14977914d74bSmrg      eval srcfile=\"$fix_srcfile_path\"
14987914d74bSmrg    fi
1499e169010aSmrg    func_quote_for_eval "$srcfile"
1500e169010aSmrg    qsrcfile=$func_quote_for_eval_result
15017914d74bSmrg
15027914d74bSmrg    # Only build a PIC object if we are building libtool libraries.
15037914d74bSmrg    if test "$build_libtool_libs" = yes; then
15047914d74bSmrg      # Without this assignment, base_compile gets emptied.
15057914d74bSmrg      fbsd_hideous_sh_bug=$base_compile
15067914d74bSmrg
15077914d74bSmrg      if test "$pic_mode" != no; then
15087914d74bSmrg	command="$base_compile $qsrcfile $pic_flag"
15097914d74bSmrg      else
15107914d74bSmrg	# Don't build PIC code
15117914d74bSmrg	command="$base_compile $qsrcfile"
15127914d74bSmrg      fi
15137914d74bSmrg
1514e169010aSmrg      func_mkdir_p "$xdir$objdir"
15157914d74bSmrg
15167914d74bSmrg      if test -z "$output_obj"; then
15177914d74bSmrg	# Place PIC objects in $objdir
15187914d74bSmrg	command="$command -o $lobj"
15197914d74bSmrg      fi
15207914d74bSmrg
1521e169010aSmrg      func_show_eval_locale "$command"	\
1522e169010aSmrg          'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
15237914d74bSmrg
15247914d74bSmrg      if test "$need_locks" = warn &&
15257914d74bSmrg	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
1526e169010aSmrg	$ECHO "\
15277914d74bSmrg*** ERROR, $lockfile contains:
15287914d74bSmrg`cat $lockfile 2>/dev/null`
15297914d74bSmrg
15307914d74bSmrgbut it should contain:
15317914d74bSmrg$srcfile
15327914d74bSmrg
15337914d74bSmrgThis indicates that another process is trying to use the same
15347914d74bSmrgtemporary object file, and libtool could not work around it because
15357914d74bSmrgyour compiler does not support \`-c' and \`-o' together.  If you
15367914d74bSmrgrepeat this compilation, it may succeed, by chance, but you had better
15377914d74bSmrgavoid parallel builds (make -j) in this platform, or get a better
15387914d74bSmrgcompiler."
15397914d74bSmrg
1540e169010aSmrg	$opt_dry_run || $RM $removelist
15417914d74bSmrg	exit $EXIT_FAILURE
15427914d74bSmrg      fi
15437914d74bSmrg
15447914d74bSmrg      # Just move the object if needed, then go on to compile the next one
15457914d74bSmrg      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
1546e169010aSmrg	func_show_eval '$MV "$output_obj" "$lobj"' \
1547e169010aSmrg	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
15487914d74bSmrg      fi
15497914d74bSmrg
15507914d74bSmrg      # Allow error messages only from the first compilation.
15517914d74bSmrg      if test "$suppress_opt" = yes; then
1552e169010aSmrg	suppress_output=' >/dev/null 2>&1'
15537914d74bSmrg      fi
15547914d74bSmrg    fi
15557914d74bSmrg
15567914d74bSmrg    # Only build a position-dependent object if we build old libraries.
15577914d74bSmrg    if test "$build_old_libs" = yes; then
15587914d74bSmrg      if test "$pic_mode" != yes; then
15597914d74bSmrg	# Don't build PIC code
1560e169010aSmrg	command="$base_compile $qsrcfile$pie_flag"
15617914d74bSmrg      else
15627914d74bSmrg	command="$base_compile $qsrcfile $pic_flag"
15637914d74bSmrg      fi
15647914d74bSmrg      if test "$compiler_c_o" = yes; then
15657914d74bSmrg	command="$command -o $obj"
15667914d74bSmrg      fi
15677914d74bSmrg
15687914d74bSmrg      # Suppress compiler output if we already did a PIC compilation.
15697914d74bSmrg      command="$command$suppress_output"
1570e169010aSmrg      func_show_eval_locale "$command" \
1571e169010aSmrg        '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
15727914d74bSmrg
15737914d74bSmrg      if test "$need_locks" = warn &&
15747914d74bSmrg	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
1575e169010aSmrg	$ECHO "\
15767914d74bSmrg*** ERROR, $lockfile contains:
15777914d74bSmrg`cat $lockfile 2>/dev/null`
15787914d74bSmrg
15797914d74bSmrgbut it should contain:
15807914d74bSmrg$srcfile
15817914d74bSmrg
15827914d74bSmrgThis indicates that another process is trying to use the same
15837914d74bSmrgtemporary object file, and libtool could not work around it because
15847914d74bSmrgyour compiler does not support \`-c' and \`-o' together.  If you
15857914d74bSmrgrepeat this compilation, it may succeed, by chance, but you had better
15867914d74bSmrgavoid parallel builds (make -j) in this platform, or get a better
15877914d74bSmrgcompiler."
15887914d74bSmrg
1589e169010aSmrg	$opt_dry_run || $RM $removelist
15907914d74bSmrg	exit $EXIT_FAILURE
15917914d74bSmrg      fi
15927914d74bSmrg
15937914d74bSmrg      # Just move the object if needed
15947914d74bSmrg      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
1595e169010aSmrg	func_show_eval '$MV "$output_obj" "$obj"' \
1596e169010aSmrg	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
15977914d74bSmrg      fi
15987914d74bSmrg    fi
15997914d74bSmrg
1600e169010aSmrg    $opt_dry_run || {
1601e169010aSmrg      func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
16027914d74bSmrg
1603e169010aSmrg      # Unlock the critical section if it was locked
1604e169010aSmrg      if test "$need_locks" != no; then
1605e169010aSmrg	removelist=$lockfile
1606e169010aSmrg        $RM "$lockfile"
1607e169010aSmrg      fi
1608e169010aSmrg    }
16097914d74bSmrg
16107914d74bSmrg    exit $EXIT_SUCCESS
1611e169010aSmrg}
16127914d74bSmrg
1613e169010aSmrg$opt_help || {
1614e8ead290Smrg  test "$mode" = compile && func_mode_compile ${1+"$@"}
1615e169010aSmrg}
16167914d74bSmrg
1617e169010aSmrgfunc_mode_help ()
1618e169010aSmrg{
1619e169010aSmrg    # We need to display help for each of the modes.
1620e169010aSmrg    case $mode in
1621e169010aSmrg      "")
1622e169010aSmrg        # Generic help is extracted from the usage comments
1623e169010aSmrg        # at the start of this file.
1624e169010aSmrg        func_help
1625e169010aSmrg        ;;
16267914d74bSmrg
1627e169010aSmrg      clean)
1628e169010aSmrg        $ECHO \
1629e169010aSmrg"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
16307914d74bSmrg
1631e169010aSmrgRemove files from the build directory.
16327914d74bSmrg
1633e169010aSmrgRM is the name of the program to use to delete files associated with each FILE
1634e169010aSmrg(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
1635e169010aSmrgto RM.
16367914d74bSmrg
1637e169010aSmrgIf FILE is a libtool library, object or program, all the files associated
1638e169010aSmrgwith it are deleted. Otherwise, only FILE itself is deleted using RM."
1639e169010aSmrg        ;;
16407914d74bSmrg
1641e169010aSmrg      compile)
1642e169010aSmrg      $ECHO \
1643e169010aSmrg"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
16447914d74bSmrg
1645e169010aSmrgCompile a source file into a libtool library object.
16467914d74bSmrg
1647e169010aSmrgThis mode accepts the following additional options:
16487914d74bSmrg
1649e169010aSmrg  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
1650e169010aSmrg  -no-suppress      do not suppress compiler output for multiple passes
1651e8ead290Smrg  -prefer-pic       try to build PIC objects only
1652e8ead290Smrg  -prefer-non-pic   try to build non-PIC objects only
1653e169010aSmrg  -shared           do not build a \`.o' file suitable for static linking
1654e169010aSmrg  -static           only build a \`.o' file suitable for static linking
1655e8ead290Smrg  -Wc,FLAG          pass FLAG directly to the compiler
16567914d74bSmrg
1657e169010aSmrgCOMPILE-COMMAND is a command to be used in creating a \`standard' object file
1658e169010aSmrgfrom the given SOURCEFILE.
16597914d74bSmrg
1660e169010aSmrgThe output file name is determined by removing the directory component from
1661e169010aSmrgSOURCEFILE, then substituting the C source code suffix \`.c' with the
1662e169010aSmrglibrary object suffix, \`.lo'."
1663e169010aSmrg        ;;
16647914d74bSmrg
1665e169010aSmrg      execute)
1666e169010aSmrg        $ECHO \
1667e169010aSmrg"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
16687914d74bSmrg
1669e169010aSmrgAutomatically set library path, then run a program.
16707914d74bSmrg
1671e169010aSmrgThis mode accepts the following additional options:
16727914d74bSmrg
1673e169010aSmrg  -dlopen FILE      add the directory containing FILE to the library path
16747914d74bSmrg
1675e169010aSmrgThis mode sets the library path environment variable according to \`-dlopen'
1676e169010aSmrgflags.
16777914d74bSmrg
1678e169010aSmrgIf any of the ARGS are libtool executable wrappers, then they are translated
1679e169010aSmrginto their corresponding uninstalled binary, and any of their required library
1680e169010aSmrgdirectories are added to the library path.
16817914d74bSmrg
1682e169010aSmrgThen, COMMAND is executed, with ARGS as arguments."
1683e169010aSmrg        ;;
16847914d74bSmrg
1685e169010aSmrg      finish)
1686e169010aSmrg        $ECHO \
1687e169010aSmrg"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
16887914d74bSmrg
1689e169010aSmrgComplete the installation of libtool libraries.
16907914d74bSmrg
1691e169010aSmrgEach LIBDIR is a directory that contains libtool libraries.
16927914d74bSmrg
1693e169010aSmrgThe commands that this mode executes may require superuser privileges.  Use
1694e169010aSmrgthe \`--dry-run' option if you just want to see what would be executed."
1695e169010aSmrg        ;;
16967914d74bSmrg
1697e169010aSmrg      install)
1698e169010aSmrg        $ECHO \
1699e169010aSmrg"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
17007914d74bSmrg
1701e169010aSmrgInstall executables or libraries.
17027914d74bSmrg
1703e169010aSmrgINSTALL-COMMAND is the installation command.  The first component should be
1704e169010aSmrgeither the \`install' or \`cp' program.
17057914d74bSmrg
1706e169010aSmrgThe following components of INSTALL-COMMAND are treated specially:
17077914d74bSmrg
1708e8ead290Smrg  -inst-prefix-dir PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
17097914d74bSmrg
1710e169010aSmrgThe rest of the components are interpreted as arguments to that command (only
1711e169010aSmrgBSD-compatible install options are recognized)."
1712e169010aSmrg        ;;
17137914d74bSmrg
1714e169010aSmrg      link)
1715e169010aSmrg        $ECHO \
1716e169010aSmrg"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
17177914d74bSmrg
1718e169010aSmrgLink object files or libraries together to form another library, or to
1719e169010aSmrgcreate an executable program.
17207914d74bSmrg
1721e169010aSmrgLINK-COMMAND is a command using the C compiler that you would use to create
1722e169010aSmrga program from several object files.
17237914d74bSmrg
1724e169010aSmrgThe following components of LINK-COMMAND are treated specially:
17257914d74bSmrg
1726e169010aSmrg  -all-static       do not do any dynamic linking at all
1727e169010aSmrg  -avoid-version    do not add a version suffix if possible
1728e8ead290Smrg  -bindir BINDIR    specify path to binaries directory (for systems where
1729e8ead290Smrg                    libraries must be found in the PATH setting at runtime)
1730e169010aSmrg  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
1731e169010aSmrg  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
1732e169010aSmrg  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
1733e169010aSmrg  -export-symbols SYMFILE
1734e169010aSmrg                    try to export only the symbols listed in SYMFILE
1735e169010aSmrg  -export-symbols-regex REGEX
1736e169010aSmrg                    try to export only the symbols matching REGEX
1737e169010aSmrg  -LLIBDIR          search LIBDIR for required installed libraries
1738e169010aSmrg  -lNAME            OUTPUT-FILE requires the installed library libNAME
1739e169010aSmrg  -module           build a library that can dlopened
1740e169010aSmrg  -no-fast-install  disable the fast-install mode
1741e169010aSmrg  -no-install       link a not-installable executable
1742e169010aSmrg  -no-undefined     declare that a library does not refer to external symbols
1743e169010aSmrg  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
1744e169010aSmrg  -objectlist FILE  Use a list of object files found in FILE to specify objects
1745e169010aSmrg  -precious-files-regex REGEX
1746e169010aSmrg                    don't remove output files matching REGEX
1747e169010aSmrg  -release RELEASE  specify package release information
1748e169010aSmrg  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
1749e169010aSmrg  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
1750e169010aSmrg  -shared           only do dynamic linking of libtool libraries
1751e169010aSmrg  -shrext SUFFIX    override the standard shared library file extension
1752e169010aSmrg  -static           do not do any dynamic linking of uninstalled libtool libraries
1753e169010aSmrg  -static-libtool-libs
1754e169010aSmrg                    do not do any dynamic linking of libtool libraries
1755e169010aSmrg  -version-info CURRENT[:REVISION[:AGE]]
1756e169010aSmrg                    specify library version info [each variable defaults to 0]
1757e169010aSmrg  -weak LIBNAME     declare that the target provides the LIBNAME interface
1758e8ead290Smrg  -Wc,FLAG
1759e8ead290Smrg  -Xcompiler FLAG   pass linker-specific FLAG directly to the compiler
1760e8ead290Smrg  -Wl,FLAG
1761e8ead290Smrg  -Xlinker FLAG     pass linker-specific FLAG directly to the linker
1762e8ead290Smrg  -XCClinker FLAG   pass link-specific FLAG to the compiler driver (CC)
17637914d74bSmrg
1764e169010aSmrgAll other options (arguments beginning with \`-') are ignored.
17657914d74bSmrg
1766e169010aSmrgEvery other argument is treated as a filename.  Files ending in \`.la' are
1767e169010aSmrgtreated as uninstalled libtool libraries, other files are standard or library
1768e169010aSmrgobject files.
17697914d74bSmrg
1770e169010aSmrgIf the OUTPUT-FILE ends in \`.la', then a libtool library is created,
1771e169010aSmrgonly library objects (\`.lo' files) may be specified, and \`-rpath' is
1772e169010aSmrgrequired, except when creating a convenience library.
17737914d74bSmrg
1774e169010aSmrgIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
1775e169010aSmrgusing \`ar' and \`ranlib', or on Windows using \`lib'.
17767914d74bSmrg
1777e169010aSmrgIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
1778e169010aSmrgis created, otherwise an executable program is created."
17797914d74bSmrg        ;;
17807914d74bSmrg
1781e169010aSmrg      uninstall)
1782e169010aSmrg        $ECHO \
1783e169010aSmrg"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
17847914d74bSmrg
1785e169010aSmrgRemove libraries from an installation directory.
17867914d74bSmrg
1787e169010aSmrgRM is the name of the program to use to delete files associated with each FILE
1788e169010aSmrg(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
1789e169010aSmrgto RM.
17907914d74bSmrg
1791e169010aSmrgIf FILE is a libtool library, all the files associated with it are deleted.
1792e169010aSmrgOtherwise, only FILE itself is deleted using RM."
1793e169010aSmrg        ;;
17947914d74bSmrg
1795e169010aSmrg      *)
1796e169010aSmrg        func_fatal_help "invalid operation mode \`$mode'"
1797e169010aSmrg        ;;
1798e169010aSmrg    esac
17997914d74bSmrg
1800e8ead290Smrg    echo
1801e169010aSmrg    $ECHO "Try \`$progname --help' for more information about other modes."
1802e169010aSmrg}
18037914d74bSmrg
1804e8ead290Smrg# Now that we've collected a possible --mode arg, show help if necessary
1805e8ead290Smrgif $opt_help; then
1806e8ead290Smrg  if test "$opt_help" = :; then
1807e8ead290Smrg    func_mode_help
1808e8ead290Smrg  else
1809e8ead290Smrg    {
1810e8ead290Smrg      func_help noexit
1811e8ead290Smrg      for mode in compile link execute install finish uninstall clean; do
1812e8ead290Smrg	func_mode_help
1813e8ead290Smrg      done
1814e8ead290Smrg    } | sed -n '1p; 2,$s/^Usage:/  or: /p'
1815e8ead290Smrg    {
1816e8ead290Smrg      func_help noexit
1817e8ead290Smrg      for mode in compile link execute install finish uninstall clean; do
1818e8ead290Smrg	echo
1819e8ead290Smrg	func_mode_help
1820e8ead290Smrg      done
1821e8ead290Smrg    } |
1822e8ead290Smrg    sed '1d
1823e8ead290Smrg      /^When reporting/,/^Report/{
1824e8ead290Smrg	H
1825e8ead290Smrg	d
1826e8ead290Smrg      }
1827e8ead290Smrg      $x
1828e8ead290Smrg      /information about other modes/d
1829e8ead290Smrg      /more detailed .*MODE/d
1830e8ead290Smrg      s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/'
1831e8ead290Smrg  fi
1832e8ead290Smrg  exit $?
1833e8ead290Smrgfi
18347914d74bSmrg
18357914d74bSmrg
1836e169010aSmrg# func_mode_execute arg...
1837e169010aSmrgfunc_mode_execute ()
1838e169010aSmrg{
1839e169010aSmrg    $opt_debug
1840e169010aSmrg    # The first argument is the command name.
1841e169010aSmrg    cmd="$nonopt"
1842e169010aSmrg    test -z "$cmd" && \
1843e169010aSmrg      func_fatal_help "you must specify a COMMAND"
18447914d74bSmrg
1845e169010aSmrg    # Handle -dlopen flags immediately.
1846e169010aSmrg    for file in $execute_dlfiles; do
1847e169010aSmrg      test -f "$file" \
1848e169010aSmrg	|| func_fatal_help "\`$file' is not a file"
18497914d74bSmrg
1850e169010aSmrg      dir=
1851e169010aSmrg      case $file in
1852e169010aSmrg      *.la)
1853e169010aSmrg	# Check to see that this really is a libtool archive.
1854e169010aSmrg	func_lalib_unsafe_p "$file" \
1855e169010aSmrg	  || func_fatal_help "\`$lib' is not a valid libtool archive"
18567914d74bSmrg
1857e169010aSmrg	# Read the libtool library.
1858e169010aSmrg	dlname=
1859e169010aSmrg	library_names=
1860e169010aSmrg	func_source "$file"
18617914d74bSmrg
1862e169010aSmrg	# Skip this library if it cannot be dlopened.
1863e169010aSmrg	if test -z "$dlname"; then
1864e169010aSmrg	  # Warn if it was a shared library.
1865e169010aSmrg	  test -n "$library_names" && \
1866e169010aSmrg	    func_warning "\`$file' was not linked with \`-export-dynamic'"
1867e169010aSmrg	  continue
1868e169010aSmrg	fi
18697914d74bSmrg
1870e169010aSmrg	func_dirname "$file" "" "."
1871e169010aSmrg	dir="$func_dirname_result"
18727914d74bSmrg
1873e169010aSmrg	if test -f "$dir/$objdir/$dlname"; then
1874e169010aSmrg	  dir="$dir/$objdir"
1875e169010aSmrg	else
1876e169010aSmrg	  if test ! -f "$dir/$dlname"; then
1877e169010aSmrg	    func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
1878e169010aSmrg	  fi
1879e169010aSmrg	fi
18807914d74bSmrg	;;
18817914d74bSmrg
1882e169010aSmrg      *.lo)
1883e169010aSmrg	# Just add the directory containing the .lo file.
1884e169010aSmrg	func_dirname "$file" "" "."
1885e169010aSmrg	dir="$func_dirname_result"
18867914d74bSmrg	;;
18877914d74bSmrg
1888e169010aSmrg      *)
1889e169010aSmrg	func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
18907914d74bSmrg	continue
18917914d74bSmrg	;;
1892e169010aSmrg      esac
18937914d74bSmrg
1894e169010aSmrg      # Get the absolute pathname.
1895e169010aSmrg      absdir=`cd "$dir" && pwd`
1896e169010aSmrg      test -n "$absdir" && dir="$absdir"
18977914d74bSmrg
1898e169010aSmrg      # Now add the directory to shlibpath_var.
1899e169010aSmrg      if eval "test -z \"\$$shlibpath_var\""; then
1900e169010aSmrg	eval "$shlibpath_var=\"\$dir\""
1901e169010aSmrg      else
1902e169010aSmrg	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
1903e169010aSmrg      fi
1904e169010aSmrg    done
19057914d74bSmrg
1906e169010aSmrg    # This variable tells wrapper scripts just to set shlibpath_var
1907e169010aSmrg    # rather than running their programs.
1908e169010aSmrg    libtool_execute_magic="$magic"
19097914d74bSmrg
1910e169010aSmrg    # Check if any of the arguments is a wrapper script.
1911e169010aSmrg    args=
1912e169010aSmrg    for file
1913e169010aSmrg    do
1914e169010aSmrg      case $file in
1915e8ead290Smrg      -* | *.la | *.lo ) ;;
1916e169010aSmrg      *)
1917e169010aSmrg	# Do a test to see if this is really a libtool program.
1918e169010aSmrg	if func_ltwrapper_script_p "$file"; then
1919e169010aSmrg	  func_source "$file"
1920e169010aSmrg	  # Transform arg to wrapped name.
1921e169010aSmrg	  file="$progdir/$program"
1922e169010aSmrg	elif func_ltwrapper_executable_p "$file"; then
1923e169010aSmrg	  func_ltwrapper_scriptname "$file"
1924e169010aSmrg	  func_source "$func_ltwrapper_scriptname_result"
1925e169010aSmrg	  # Transform arg to wrapped name.
1926e169010aSmrg	  file="$progdir/$program"
1927e169010aSmrg	fi
1928e169010aSmrg	;;
1929e169010aSmrg      esac
1930e169010aSmrg      # Quote arguments (to preserve shell metacharacters).
1931e169010aSmrg      func_quote_for_eval "$file"
1932e169010aSmrg      args="$args $func_quote_for_eval_result"
1933e169010aSmrg    done
19347914d74bSmrg
1935e169010aSmrg    if test "X$opt_dry_run" = Xfalse; then
1936e169010aSmrg      if test -n "$shlibpath_var"; then
1937e169010aSmrg	# Export the shlibpath_var.
1938e169010aSmrg	eval "export $shlibpath_var"
1939e169010aSmrg      fi
19407914d74bSmrg
1941e169010aSmrg      # Restore saved environment variables
1942e169010aSmrg      for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
1943e169010aSmrg      do
1944e169010aSmrg	eval "if test \"\${save_$lt_var+set}\" = set; then
1945e169010aSmrg                $lt_var=\$save_$lt_var; export $lt_var
1946e169010aSmrg	      else
1947e169010aSmrg		$lt_unset $lt_var
1948e169010aSmrg	      fi"
1949e169010aSmrg      done
19507914d74bSmrg
1951e169010aSmrg      # Now prepare to actually exec the command.
1952e169010aSmrg      exec_cmd="\$cmd$args"
1953e169010aSmrg    else
1954e169010aSmrg      # Display what would be done.
1955e169010aSmrg      if test -n "$shlibpath_var"; then
1956e169010aSmrg	eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
1957e8ead290Smrg	echo "export $shlibpath_var"
1958e169010aSmrg      fi
1959e169010aSmrg      $ECHO "$cmd$args"
1960e169010aSmrg      exit $EXIT_SUCCESS
1961e169010aSmrg    fi
1962e169010aSmrg}
19637914d74bSmrg
1964e169010aSmrgtest "$mode" = execute && func_mode_execute ${1+"$@"}
19657914d74bSmrg
19667914d74bSmrg
1967e169010aSmrg# func_mode_finish arg...
1968e169010aSmrgfunc_mode_finish ()
1969e169010aSmrg{
1970e169010aSmrg    $opt_debug
1971e169010aSmrg    libdirs="$nonopt"
1972e169010aSmrg    admincmds=
19737914d74bSmrg
1974e169010aSmrg    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
1975e169010aSmrg      for dir
1976e169010aSmrg      do
1977e169010aSmrg	libdirs="$libdirs $dir"
1978e169010aSmrg      done
19797914d74bSmrg
1980e169010aSmrg      for libdir in $libdirs; do
1981e169010aSmrg	if test -n "$finish_cmds"; then
1982e169010aSmrg	  # Do each command in the finish commands.
1983e169010aSmrg	  func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
1984e169010aSmrg'"$cmd"'"'
1985e169010aSmrg	fi
1986e169010aSmrg	if test -n "$finish_eval"; then
1987e169010aSmrg	  # Do the single finish_eval.
1988e169010aSmrg	  eval cmds=\"$finish_eval\"
1989e169010aSmrg	  $opt_dry_run || eval "$cmds" || admincmds="$admincmds
1990e169010aSmrg       $cmds"
1991e169010aSmrg	fi
1992e169010aSmrg      done
1993e169010aSmrg    fi
19947914d74bSmrg
1995e169010aSmrg    # Exit here if they wanted silent mode.
1996e169010aSmrg    $opt_silent && exit $EXIT_SUCCESS
19977914d74bSmrg
1998e8ead290Smrg    echo "----------------------------------------------------------------------"
1999e8ead290Smrg    echo "Libraries have been installed in:"
2000e169010aSmrg    for libdir in $libdirs; do
2001e169010aSmrg      $ECHO "   $libdir"
2002e169010aSmrg    done
2003e8ead290Smrg    echo
2004e8ead290Smrg    echo "If you ever happen to want to link against installed libraries"
2005e8ead290Smrg    echo "in a given directory, LIBDIR, you must either use libtool, and"
2006e8ead290Smrg    echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
2007e8ead290Smrg    echo "flag during linking and do at least one of the following:"
2008e169010aSmrg    if test -n "$shlibpath_var"; then
2009e8ead290Smrg      echo "   - add LIBDIR to the \`$shlibpath_var' environment variable"
2010e8ead290Smrg      echo "     during execution"
2011e169010aSmrg    fi
2012e169010aSmrg    if test -n "$runpath_var"; then
2013e8ead290Smrg      echo "   - add LIBDIR to the \`$runpath_var' environment variable"
2014e8ead290Smrg      echo "     during linking"
2015e169010aSmrg    fi
2016e169010aSmrg    if test -n "$hardcode_libdir_flag_spec"; then
2017e169010aSmrg      libdir=LIBDIR
2018e169010aSmrg      eval flag=\"$hardcode_libdir_flag_spec\"
20197914d74bSmrg
2020e169010aSmrg      $ECHO "   - use the \`$flag' linker flag"
2021e169010aSmrg    fi
2022e169010aSmrg    if test -n "$admincmds"; then
2023e169010aSmrg      $ECHO "   - have your system administrator run these commands:$admincmds"
2024e169010aSmrg    fi
2025e169010aSmrg    if test -f /etc/ld.so.conf; then
2026e8ead290Smrg      echo "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
2027e169010aSmrg    fi
2028e8ead290Smrg    echo
20297914d74bSmrg
2030e8ead290Smrg    echo "See any operating system documentation about shared libraries for"
2031e169010aSmrg    case $host in
2032e169010aSmrg      solaris2.[6789]|solaris2.1[0-9])
2033e8ead290Smrg        echo "more information, such as the ld(1), crle(1) and ld.so(8) manual"
2034e8ead290Smrg	echo "pages."
20357914d74bSmrg	;;
2036e169010aSmrg      *)
2037e8ead290Smrg        echo "more information, such as the ld(1) and ld.so(8) manual pages."
2038e169010aSmrg        ;;
2039e169010aSmrg    esac
2040e8ead290Smrg    echo "----------------------------------------------------------------------"
2041e169010aSmrg    exit $EXIT_SUCCESS
2042e169010aSmrg}
20437914d74bSmrg
2044e169010aSmrgtest "$mode" = finish && func_mode_finish ${1+"$@"}
20457914d74bSmrg
20467914d74bSmrg
2047e169010aSmrg# func_mode_install arg...
2048e169010aSmrgfunc_mode_install ()
2049e169010aSmrg{
2050e169010aSmrg    $opt_debug
2051e169010aSmrg    # There may be an optional sh(1) argument at the beginning of
2052e169010aSmrg    # install_prog (especially on Windows NT).
2053e169010aSmrg    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
2054e169010aSmrg       # Allow the use of GNU shtool's install command.
2055e8ead290Smrg       case $nonopt in *shtool*) :;; *) false;; esac; then
2056e169010aSmrg      # Aesthetically quote it.
2057e169010aSmrg      func_quote_for_eval "$nonopt"
2058e169010aSmrg      install_prog="$func_quote_for_eval_result "
2059e169010aSmrg      arg=$1
2060e169010aSmrg      shift
2061e169010aSmrg    else
2062e169010aSmrg      install_prog=
2063e169010aSmrg      arg=$nonopt
2064e169010aSmrg    fi
20657914d74bSmrg
2066e169010aSmrg    # The real first argument should be the name of the installation program.
2067e169010aSmrg    # Aesthetically quote it.
2068e169010aSmrg    func_quote_for_eval "$arg"
2069e169010aSmrg    install_prog="$install_prog$func_quote_for_eval_result"
2070e8ead290Smrg    install_shared_prog=$install_prog
2071e8ead290Smrg    case " $install_prog " in
2072e8ead290Smrg      *[\\\ /]cp\ *) install_cp=: ;;
2073e8ead290Smrg      *) install_cp=false ;;
2074e8ead290Smrg    esac
2075e169010aSmrg
2076e169010aSmrg    # We need to accept at least all the BSD install flags.
2077e169010aSmrg    dest=
2078e169010aSmrg    files=
2079e169010aSmrg    opts=
2080e169010aSmrg    prev=
2081e169010aSmrg    install_type=
2082e169010aSmrg    isdir=no
2083e169010aSmrg    stripme=
2084e8ead290Smrg    no_mode=:
2085e169010aSmrg    for arg
2086e169010aSmrg    do
2087e8ead290Smrg      arg2=
2088e169010aSmrg      if test -n "$dest"; then
2089e169010aSmrg	files="$files $dest"
2090e169010aSmrg	dest=$arg
2091e169010aSmrg	continue
20927914d74bSmrg      fi
20937914d74bSmrg
2094e169010aSmrg      case $arg in
2095e169010aSmrg      -d) isdir=yes ;;
2096e169010aSmrg      -f)
2097e8ead290Smrg	if $install_cp; then :; else
2098e8ead290Smrg	  prev=$arg
2099e8ead290Smrg	fi
2100e169010aSmrg	;;
2101e169010aSmrg      -g | -m | -o)
2102e169010aSmrg	prev=$arg
2103e169010aSmrg	;;
2104e169010aSmrg      -s)
2105e169010aSmrg	stripme=" -s"
2106e169010aSmrg	continue
2107e169010aSmrg	;;
2108e169010aSmrg      -*)
2109e169010aSmrg	;;
2110e169010aSmrg      *)
2111e169010aSmrg	# If the previous option needed an argument, then skip it.
2112e169010aSmrg	if test -n "$prev"; then
2113e8ead290Smrg	  if test "x$prev" = x-m && test -n "$install_override_mode"; then
2114e8ead290Smrg	    arg2=$install_override_mode
2115e8ead290Smrg	    no_mode=false
2116e8ead290Smrg	  fi
2117e169010aSmrg	  prev=
2118e169010aSmrg	else
2119e169010aSmrg	  dest=$arg
2120e169010aSmrg	  continue
2121e169010aSmrg	fi
2122e169010aSmrg	;;
2123e169010aSmrg      esac
21247914d74bSmrg
2125e169010aSmrg      # Aesthetically quote the argument.
2126e169010aSmrg      func_quote_for_eval "$arg"
2127e169010aSmrg      install_prog="$install_prog $func_quote_for_eval_result"
2128e8ead290Smrg      if test -n "$arg2"; then
2129e8ead290Smrg	func_quote_for_eval "$arg2"
2130e8ead290Smrg      fi
2131e8ead290Smrg      install_shared_prog="$install_shared_prog $func_quote_for_eval_result"
2132e169010aSmrg    done
21337914d74bSmrg
2134e169010aSmrg    test -z "$install_prog" && \
2135e169010aSmrg      func_fatal_help "you must specify an install program"
21367914d74bSmrg
2137e169010aSmrg    test -n "$prev" && \
2138e169010aSmrg      func_fatal_help "the \`$prev' option requires an argument"
21397914d74bSmrg
2140e8ead290Smrg    if test -n "$install_override_mode" && $no_mode; then
2141e8ead290Smrg      if $install_cp; then :; else
2142e8ead290Smrg	func_quote_for_eval "$install_override_mode"
2143e8ead290Smrg	install_shared_prog="$install_shared_prog -m $func_quote_for_eval_result"
2144e8ead290Smrg      fi
2145e8ead290Smrg    fi
2146e8ead290Smrg
2147e169010aSmrg    if test -z "$files"; then
2148e169010aSmrg      if test -z "$dest"; then
2149e169010aSmrg	func_fatal_help "no file or destination specified"
2150e169010aSmrg      else
2151e169010aSmrg	func_fatal_help "you must specify a destination"
21527914d74bSmrg      fi
21537914d74bSmrg    fi
21547914d74bSmrg
2155e169010aSmrg    # Strip any trailing slash from the destination.
2156e169010aSmrg    func_stripname '' '/' "$dest"
2157e169010aSmrg    dest=$func_stripname_result
21587914d74bSmrg
2159e169010aSmrg    # Check to see that the destination is a directory.
2160e169010aSmrg    test -d "$dest" && isdir=yes
2161e169010aSmrg    if test "$isdir" = yes; then
2162e169010aSmrg      destdir="$dest"
2163e169010aSmrg      destname=
2164e169010aSmrg    else
2165e169010aSmrg      func_dirname_and_basename "$dest" "" "."
2166e169010aSmrg      destdir="$func_dirname_result"
2167e169010aSmrg      destname="$func_basename_result"
2168e169010aSmrg
2169e169010aSmrg      # Not a directory, so check to see that there is only one file specified.
2170e169010aSmrg      set dummy $files; shift
2171e169010aSmrg      test "$#" -gt 1 && \
2172e169010aSmrg	func_fatal_help "\`$dest' is not a directory"
2173e169010aSmrg    fi
2174e169010aSmrg    case $destdir in
2175e169010aSmrg    [\\/]* | [A-Za-z]:[\\/]*) ;;
21767914d74bSmrg    *)
2177e169010aSmrg      for file in $files; do
2178e169010aSmrg	case $file in
2179e169010aSmrg	*.lo) ;;
2180e169010aSmrg	*)
2181e169010aSmrg	  func_fatal_help "\`$destdir' must be an absolute directory name"
2182e169010aSmrg	  ;;
2183e169010aSmrg	esac
2184e169010aSmrg      done
21857914d74bSmrg      ;;
21867914d74bSmrg    esac
21877914d74bSmrg
2188e169010aSmrg    # This variable tells wrapper scripts just to set variables rather
2189e169010aSmrg    # than running their programs.
2190e169010aSmrg    libtool_install_magic="$magic"
21917914d74bSmrg
2192e169010aSmrg    staticlibs=
2193e169010aSmrg    future_libdirs=
2194e169010aSmrg    current_libdirs=
2195e169010aSmrg    for file in $files; do
21967914d74bSmrg
2197e169010aSmrg      # Do each installation.
2198e169010aSmrg      case $file in
2199e169010aSmrg      *.$libext)
2200e169010aSmrg	# Do the static libraries later.
2201e169010aSmrg	staticlibs="$staticlibs $file"
2202e169010aSmrg	;;
2203e169010aSmrg
2204e169010aSmrg      *.la)
2205e169010aSmrg	# Check to see that this really is a libtool archive.
2206e169010aSmrg	func_lalib_unsafe_p "$file" \
2207e169010aSmrg	  || func_fatal_help "\`$file' is not a valid libtool archive"
2208e169010aSmrg
2209e169010aSmrg	library_names=
2210e169010aSmrg	old_library=
2211e169010aSmrg	relink_command=
2212e169010aSmrg	func_source "$file"
2213e169010aSmrg
2214e169010aSmrg	# Add the libdir to current_libdirs if it is the destination.
2215e169010aSmrg	if test "X$destdir" = "X$libdir"; then
2216e169010aSmrg	  case "$current_libdirs " in
2217e169010aSmrg	  *" $libdir "*) ;;
2218e169010aSmrg	  *) current_libdirs="$current_libdirs $libdir" ;;
22197914d74bSmrg	  esac
2220e169010aSmrg	else
2221e169010aSmrg	  # Note the libdir as a future libdir.
2222e169010aSmrg	  case "$future_libdirs " in
2223e169010aSmrg	  *" $libdir "*) ;;
2224e169010aSmrg	  *) future_libdirs="$future_libdirs $libdir" ;;
2225e169010aSmrg	  esac
2226e169010aSmrg	fi
22277914d74bSmrg
2228e169010aSmrg	func_dirname "$file" "/" ""
2229e169010aSmrg	dir="$func_dirname_result"
2230e169010aSmrg	dir="$dir$objdir"
2231e169010aSmrg
2232e169010aSmrg	if test -n "$relink_command"; then
2233e169010aSmrg	  # Determine the prefix the user has applied to our future dir.
2234e8ead290Smrg	  inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"`
2235e169010aSmrg
2236e169010aSmrg	  # Don't allow the user to place us outside of our expected
2237e169010aSmrg	  # location b/c this prevents finding dependent libraries that
2238e169010aSmrg	  # are installed to the same prefix.
2239e169010aSmrg	  # At present, this check doesn't affect windows .dll's that
2240e169010aSmrg	  # are installed into $libdir/../bin (currently, that works fine)
2241e169010aSmrg	  # but it's something to keep an eye on.
2242e169010aSmrg	  test "$inst_prefix_dir" = "$destdir" && \
2243e169010aSmrg	    func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
2244e169010aSmrg
2245e169010aSmrg	  if test -n "$inst_prefix_dir"; then
2246e169010aSmrg	    # Stick the inst_prefix_dir data into the link command.
2247e8ead290Smrg	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
2248e169010aSmrg	  else
2249e8ead290Smrg	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
2250e169010aSmrg	  fi
2251e169010aSmrg
2252e169010aSmrg	  func_warning "relinking \`$file'"
2253e169010aSmrg	  func_show_eval "$relink_command" \
2254e169010aSmrg	    'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
2255e169010aSmrg	fi
2256e169010aSmrg
2257e169010aSmrg	# See the names of the shared library.
2258e169010aSmrg	set dummy $library_names; shift
2259e169010aSmrg	if test -n "$1"; then
2260e169010aSmrg	  realname="$1"
2261e169010aSmrg	  shift
2262e169010aSmrg
2263e169010aSmrg	  srcname="$realname"
2264e169010aSmrg	  test -n "$relink_command" && srcname="$realname"T
2265e169010aSmrg
2266e169010aSmrg	  # Install the shared library and build the symlinks.
2267e8ead290Smrg	  func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \
2268e169010aSmrg	      'exit $?'
2269e169010aSmrg	  tstripme="$stripme"
2270e169010aSmrg	  case $host_os in
2271e169010aSmrg	  cygwin* | mingw* | pw32* | cegcc*)
2272e169010aSmrg	    case $realname in
2273e169010aSmrg	    *.dll.a)
2274e169010aSmrg	      tstripme=""
2275e169010aSmrg	      ;;
2276e169010aSmrg	    esac
22777914d74bSmrg	    ;;
22787914d74bSmrg	  esac
2279e169010aSmrg	  if test -n "$tstripme" && test -n "$striplib"; then
2280e169010aSmrg	    func_show_eval "$striplib $destdir/$realname" 'exit $?'
22817914d74bSmrg	  fi
2282e169010aSmrg
2283e169010aSmrg	  if test "$#" -gt 0; then
2284e169010aSmrg	    # Delete the old symlinks, and create new ones.
2285e169010aSmrg	    # Try `ln -sf' first, because the `ln' binary might depend on
2286e169010aSmrg	    # the symlink we replace!  Solaris /bin/ln does not understand -f,
2287e169010aSmrg	    # so we also need to try rm && ln -s.
2288e169010aSmrg	    for linkname
2289e169010aSmrg	    do
2290e169010aSmrg	      test "$linkname" != "$realname" \
2291e169010aSmrg		&& func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
22927914d74bSmrg	    done
22937914d74bSmrg	  fi
22947914d74bSmrg
2295e169010aSmrg	  # Do each command in the postinstall commands.
2296e169010aSmrg	  lib="$destdir/$realname"
2297e169010aSmrg	  func_execute_cmds "$postinstall_cmds" 'exit $?'
22987914d74bSmrg	fi
22997914d74bSmrg
2300e169010aSmrg	# Install the pseudo-library for information purposes.
2301e169010aSmrg	func_basename "$file"
2302e169010aSmrg	name="$func_basename_result"
2303e169010aSmrg	instname="$dir/$name"i
2304e169010aSmrg	func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
23057914d74bSmrg
2306e169010aSmrg	# Maybe install the static library, too.
2307e169010aSmrg	test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
2308e169010aSmrg	;;
23097914d74bSmrg
2310e169010aSmrg      *.lo)
2311e169010aSmrg	# Install (i.e. copy) a libtool object.
23127914d74bSmrg
2313e169010aSmrg	# Figure out destination file name, if it wasn't already specified.
2314e169010aSmrg	if test -n "$destname"; then
2315e169010aSmrg	  destfile="$destdir/$destname"
2316e169010aSmrg	else
2317e169010aSmrg	  func_basename "$file"
2318e169010aSmrg	  destfile="$func_basename_result"
2319e169010aSmrg	  destfile="$destdir/$destfile"
2320e169010aSmrg	fi
2321e169010aSmrg
2322e169010aSmrg	# Deduce the name of the destination old-style object file.
2323e169010aSmrg	case $destfile in
2324e169010aSmrg	*.lo)
2325e169010aSmrg	  func_lo2o "$destfile"
2326e169010aSmrg	  staticdest=$func_lo2o_result
2327e169010aSmrg	  ;;
2328e169010aSmrg	*.$objext)
2329e169010aSmrg	  staticdest="$destfile"
2330e169010aSmrg	  destfile=
2331e169010aSmrg	  ;;
2332e169010aSmrg	*)
2333e169010aSmrg	  func_fatal_help "cannot copy a libtool object to \`$destfile'"
2334e169010aSmrg	  ;;
23357914d74bSmrg	esac
23367914d74bSmrg
2337e169010aSmrg	# Install the libtool object if requested.
2338e169010aSmrg	test -n "$destfile" && \
2339e169010aSmrg	  func_show_eval "$install_prog $file $destfile" 'exit $?'
2340e169010aSmrg
2341e169010aSmrg	# Install the old object if enabled.
2342e169010aSmrg	if test "$build_old_libs" = yes; then
2343e169010aSmrg	  # Deduce the name of the old-style object file.
2344e169010aSmrg	  func_lo2o "$file"
2345e169010aSmrg	  staticobj=$func_lo2o_result
2346e169010aSmrg	  func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
23477914d74bSmrg	fi
2348e169010aSmrg	exit $EXIT_SUCCESS
2349e169010aSmrg	;;
23507914d74bSmrg
2351e169010aSmrg      *)
2352e169010aSmrg	# Figure out destination file name, if it wasn't already specified.
2353e169010aSmrg	if test -n "$destname"; then
2354e169010aSmrg	  destfile="$destdir/$destname"
2355e169010aSmrg	else
2356e169010aSmrg	  func_basename "$file"
2357e169010aSmrg	  destfile="$func_basename_result"
2358e169010aSmrg	  destfile="$destdir/$destfile"
2359e169010aSmrg	fi
2360e169010aSmrg
2361e169010aSmrg	# If the file is missing, and there is a .exe on the end, strip it
2362e169010aSmrg	# because it is most likely a libtool script we actually want to
2363e169010aSmrg	# install
2364e169010aSmrg	stripped_ext=""
2365e169010aSmrg	case $file in
2366e169010aSmrg	  *.exe)
2367e169010aSmrg	    if test ! -f "$file"; then
2368e169010aSmrg	      func_stripname '' '.exe' "$file"
2369e169010aSmrg	      file=$func_stripname_result
2370e169010aSmrg	      stripped_ext=".exe"
23717914d74bSmrg	    fi
2372e169010aSmrg	    ;;
2373e169010aSmrg	esac
23747914d74bSmrg
2375e169010aSmrg	# Do a test to see if this is really a libtool program.
2376e169010aSmrg	case $host in
2377e169010aSmrg	*cygwin* | *mingw*)
2378e169010aSmrg	    if func_ltwrapper_executable_p "$file"; then
2379e169010aSmrg	      func_ltwrapper_scriptname "$file"
2380e169010aSmrg	      wrapper=$func_ltwrapper_scriptname_result
2381e169010aSmrg	    else
2382e169010aSmrg	      func_stripname '' '.exe' "$file"
2383e169010aSmrg	      wrapper=$func_stripname_result
2384e169010aSmrg	    fi
2385e169010aSmrg	    ;;
2386e169010aSmrg	*)
2387e169010aSmrg	    wrapper=$file
2388e169010aSmrg	    ;;
2389e169010aSmrg	esac
2390e169010aSmrg	if func_ltwrapper_script_p "$wrapper"; then
2391e169010aSmrg	  notinst_deplibs=
2392e169010aSmrg	  relink_command=
23937914d74bSmrg
2394e169010aSmrg	  func_source "$wrapper"
23957914d74bSmrg
2396e169010aSmrg	  # Check the variables that should have been set.
2397e169010aSmrg	  test -z "$generated_by_libtool_version" && \
2398e169010aSmrg	    func_fatal_error "invalid libtool wrapper script \`$wrapper'"
2399e169010aSmrg
2400e169010aSmrg	  finalize=yes
2401e169010aSmrg	  for lib in $notinst_deplibs; do
2402e169010aSmrg	    # Check to see that each library is installed.
2403e169010aSmrg	    libdir=
2404e169010aSmrg	    if test -f "$lib"; then
2405e169010aSmrg	      func_source "$lib"
2406e169010aSmrg	    fi
2407e8ead290Smrg	    libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test
2408e169010aSmrg	    if test -n "$libdir" && test ! -f "$libfile"; then
2409e169010aSmrg	      func_warning "\`$lib' has not been installed in \`$libdir'"
2410e169010aSmrg	      finalize=no
2411e169010aSmrg	    fi
2412e169010aSmrg	  done
2413e169010aSmrg
2414e169010aSmrg	  relink_command=
2415e169010aSmrg	  func_source "$wrapper"
2416e169010aSmrg
2417e169010aSmrg	  outputname=
2418e169010aSmrg	  if test "$fast_install" = no && test -n "$relink_command"; then
2419e169010aSmrg	    $opt_dry_run || {
2420e169010aSmrg	      if test "$finalize" = yes; then
2421e169010aSmrg	        tmpdir=`func_mktempdir`
2422e169010aSmrg		func_basename "$file$stripped_ext"
2423e169010aSmrg		file="$func_basename_result"
2424e169010aSmrg	        outputname="$tmpdir/$file"
2425e169010aSmrg	        # Replace the output file specification.
2426e8ead290Smrg	        relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'`
2427e169010aSmrg
2428e169010aSmrg	        $opt_silent || {
2429e169010aSmrg	          func_quote_for_expand "$relink_command"
2430e169010aSmrg		  eval "func_echo $func_quote_for_expand_result"
2431e169010aSmrg	        }
2432e169010aSmrg	        if eval "$relink_command"; then :
2433e169010aSmrg	          else
2434e169010aSmrg		  func_error "error: relink \`$file' with the above command before installing it"
2435e169010aSmrg		  $opt_dry_run || ${RM}r "$tmpdir"
2436e169010aSmrg		  continue
2437e169010aSmrg	        fi
2438e169010aSmrg	        file="$outputname"
2439e169010aSmrg	      else
2440e169010aSmrg	        func_warning "cannot relink \`$file'"
2441e169010aSmrg	      fi
2442e169010aSmrg	    }
24437914d74bSmrg	  else
2444e169010aSmrg	    # Install the binary that we compiled earlier.
2445e8ead290Smrg	    file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"`
24467914d74bSmrg	  fi
2447e169010aSmrg	fi
24487914d74bSmrg
2449e169010aSmrg	# remove .exe since cygwin /usr/bin/install will append another
2450e169010aSmrg	# one anyway
2451e169010aSmrg	case $install_prog,$host in
2452e169010aSmrg	*/usr/bin/install*,*cygwin*)
2453e169010aSmrg	  case $file:$destfile in
2454e169010aSmrg	  *.exe:*.exe)
2455e169010aSmrg	    # this is ok
2456e169010aSmrg	    ;;
2457e169010aSmrg	  *.exe:*)
2458e169010aSmrg	    destfile=$destfile.exe
2459e169010aSmrg	    ;;
2460e169010aSmrg	  *:*.exe)
2461e169010aSmrg	    func_stripname '' '.exe' "$destfile"
2462e169010aSmrg	    destfile=$func_stripname_result
2463e169010aSmrg	    ;;
2464e169010aSmrg	  esac
24657914d74bSmrg	  ;;
24667914d74bSmrg	esac
2467e169010aSmrg	func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
2468e169010aSmrg	$opt_dry_run || if test -n "$outputname"; then
2469e169010aSmrg	  ${RM}r "$tmpdir"
2470e169010aSmrg	fi
2471e169010aSmrg	;;
2472e169010aSmrg      esac
2473e169010aSmrg    done
24747914d74bSmrg
2475e169010aSmrg    for file in $staticlibs; do
2476e169010aSmrg      func_basename "$file"
2477e169010aSmrg      name="$func_basename_result"
24787914d74bSmrg
2479e169010aSmrg      # Set up the ranlib parameters.
2480e169010aSmrg      oldlib="$destdir/$name"
24817914d74bSmrg
2482e169010aSmrg      func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
24837914d74bSmrg
2484e169010aSmrg      if test -n "$stripme" && test -n "$old_striplib"; then
2485e169010aSmrg	func_show_eval "$old_striplib $oldlib" 'exit $?'
2486e169010aSmrg      fi
24877914d74bSmrg
2488e169010aSmrg      # Do each command in the postinstall commands.
2489e169010aSmrg      func_execute_cmds "$old_postinstall_cmds" 'exit $?'
2490e169010aSmrg    done
24917914d74bSmrg
2492e169010aSmrg    test -n "$future_libdirs" && \
2493e169010aSmrg      func_warning "remember to run \`$progname --finish$future_libdirs'"
24947914d74bSmrg
2495e169010aSmrg    if test -n "$current_libdirs"; then
2496e169010aSmrg      # Maybe just do a dry run.
2497e169010aSmrg      $opt_dry_run && current_libdirs=" -n$current_libdirs"
2498e169010aSmrg      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
2499e169010aSmrg    else
2500e169010aSmrg      exit $EXIT_SUCCESS
2501e169010aSmrg    fi
2502e169010aSmrg}
25037914d74bSmrg
2504e169010aSmrgtest "$mode" = install && func_mode_install ${1+"$@"}
25057914d74bSmrg
25067914d74bSmrg
2507e169010aSmrg# func_generate_dlsyms outputname originator pic_p
2508e169010aSmrg# Extract symbols from dlprefiles and create ${outputname}S.o with
2509e169010aSmrg# a dlpreopen symbol table.
2510e169010aSmrgfunc_generate_dlsyms ()
2511e169010aSmrg{
2512e169010aSmrg    $opt_debug
2513e169010aSmrg    my_outputname="$1"
2514e169010aSmrg    my_originator="$2"
2515e169010aSmrg    my_pic_p="${3-no}"
2516e169010aSmrg    my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
2517e169010aSmrg    my_dlsyms=
2518e169010aSmrg
2519e169010aSmrg    if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
2520e169010aSmrg      if test -n "$NM" && test -n "$global_symbol_pipe"; then
2521e169010aSmrg	my_dlsyms="${my_outputname}S.c"
2522e169010aSmrg      else
2523e169010aSmrg	func_error "not configured to extract global symbols from dlpreopened files"
2524e169010aSmrg      fi
2525e169010aSmrg    fi
25267914d74bSmrg
2527e169010aSmrg    if test -n "$my_dlsyms"; then
2528e169010aSmrg      case $my_dlsyms in
2529e169010aSmrg      "") ;;
2530e169010aSmrg      *.c)
2531e169010aSmrg	# Discover the nlist of each of the dlfiles.
2532e169010aSmrg	nlist="$output_objdir/${my_outputname}.nm"
2533e169010aSmrg
2534e169010aSmrg	func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
2535e169010aSmrg
2536e169010aSmrg	# Parse the name list into a source file.
2537e169010aSmrg	func_verbose "creating $output_objdir/$my_dlsyms"
2538e169010aSmrg
2539e169010aSmrg	$opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
2540e169010aSmrg/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
2541e169010aSmrg/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
2542e169010aSmrg
2543e169010aSmrg#ifdef __cplusplus
2544e169010aSmrgextern \"C\" {
2545e169010aSmrg#endif
2546e169010aSmrg
2547e8ead290Smrg#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4))
2548e8ead290Smrg#pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
2549e8ead290Smrg#endif
2550e8ead290Smrg
2551e169010aSmrg/* External symbol declarations for the compiler. */\
2552e169010aSmrg"
2553e169010aSmrg
2554e169010aSmrg	if test "$dlself" = yes; then
2555e169010aSmrg	  func_verbose "generating symbol list for \`$output'"
2556e169010aSmrg
2557e169010aSmrg	  $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
2558e169010aSmrg
2559e169010aSmrg	  # Add our own program objects to the symbol list.
2560e8ead290Smrg	  progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP`
2561e169010aSmrg	  for progfile in $progfiles; do
2562e169010aSmrg	    func_verbose "extracting global C symbols from \`$progfile'"
2563e169010aSmrg	    $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'"
2564e169010aSmrg	  done
2565e169010aSmrg
2566e169010aSmrg	  if test -n "$exclude_expsyms"; then
2567e169010aSmrg	    $opt_dry_run || {
2568e169010aSmrg	      eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
2569e169010aSmrg	      eval '$MV "$nlist"T "$nlist"'
2570e169010aSmrg	    }
25717914d74bSmrg	  fi
25727914d74bSmrg
2573e169010aSmrg	  if test -n "$export_symbols_regex"; then
2574e169010aSmrg	    $opt_dry_run || {
2575e169010aSmrg	      eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
2576e169010aSmrg	      eval '$MV "$nlist"T "$nlist"'
2577e169010aSmrg	    }
25787914d74bSmrg	  fi
2579e169010aSmrg
2580e169010aSmrg	  # Prepare the list of exported symbols
2581e169010aSmrg	  if test -z "$export_symbols"; then
2582e169010aSmrg	    export_symbols="$output_objdir/$outputname.exp"
2583e169010aSmrg	    $opt_dry_run || {
2584e169010aSmrg	      $RM $export_symbols
2585e169010aSmrg	      eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
2586e169010aSmrg	      case $host in
2587e169010aSmrg	      *cygwin* | *mingw* | *cegcc* )
2588e169010aSmrg                eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
2589e169010aSmrg                eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
2590e169010aSmrg	        ;;
25917914d74bSmrg	      esac
2592e169010aSmrg	    }
2593e169010aSmrg	  else
2594e169010aSmrg	    $opt_dry_run || {
2595e169010aSmrg	      eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
2596e169010aSmrg	      eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
2597e169010aSmrg	      eval '$MV "$nlist"T "$nlist"'
2598e169010aSmrg	      case $host in
2599e8ead290Smrg	        *cygwin* | *mingw* | *cegcc* )
2600e169010aSmrg	          eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
2601e169010aSmrg	          eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
2602e169010aSmrg	          ;;
26037914d74bSmrg	      esac
2604e169010aSmrg	    }
26057914d74bSmrg	  fi
2606e169010aSmrg	fi
26077914d74bSmrg
2608e169010aSmrg	for dlprefile in $dlprefiles; do
2609e169010aSmrg	  func_verbose "extracting global C symbols from \`$dlprefile'"
2610e169010aSmrg	  func_basename "$dlprefile"
2611e169010aSmrg	  name="$func_basename_result"
2612e169010aSmrg	  $opt_dry_run || {
2613e169010aSmrg	    eval '$ECHO ": $name " >> "$nlist"'
2614e169010aSmrg	    eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'"
2615e169010aSmrg	  }
2616e169010aSmrg	done
26177914d74bSmrg
2618e169010aSmrg	$opt_dry_run || {
2619e169010aSmrg	  # Make sure we have at least an empty file.
2620e169010aSmrg	  test -f "$nlist" || : > "$nlist"
26217914d74bSmrg
2622e169010aSmrg	  if test -n "$exclude_expsyms"; then
2623e169010aSmrg	    $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
2624e169010aSmrg	    $MV "$nlist"T "$nlist"
26257914d74bSmrg	  fi
26267914d74bSmrg
2627e169010aSmrg	  # Try sorting and uniquifying the output.
2628e169010aSmrg	  if $GREP -v "^: " < "$nlist" |
2629e169010aSmrg	      if sort -k 3 </dev/null >/dev/null 2>&1; then
2630e169010aSmrg		sort -k 3
26317914d74bSmrg	      else
2632e169010aSmrg		sort +2
2633e169010aSmrg	      fi |
2634e169010aSmrg	      uniq > "$nlist"S; then
2635e169010aSmrg	    :
26367914d74bSmrg	  else
2637e169010aSmrg	    $GREP -v "^: " < "$nlist" > "$nlist"S
26387914d74bSmrg	  fi
26397914d74bSmrg
2640e169010aSmrg	  if test -f "$nlist"S; then
2641e169010aSmrg	    eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
26427914d74bSmrg	  else
2643e8ead290Smrg	    echo '/* NONE */' >> "$output_objdir/$my_dlsyms"
26447914d74bSmrg	  fi
26457914d74bSmrg
2646e8ead290Smrg	  echo >> "$output_objdir/$my_dlsyms" "\
26477914d74bSmrg
2648e169010aSmrg/* The mapping between symbol names and symbols.  */
2649e169010aSmrgtypedef struct {
2650e169010aSmrg  const char *name;
2651e169010aSmrg  void *address;
2652e169010aSmrg} lt_dlsymlist;
2653e169010aSmrg"
2654e169010aSmrg	  case $host in
2655e169010aSmrg	  *cygwin* | *mingw* | *cegcc* )
2656e8ead290Smrg	    echo >> "$output_objdir/$my_dlsyms" "\
2657e169010aSmrg/* DATA imports from DLLs on WIN32 con't be const, because
2658e169010aSmrg   runtime relocations are performed -- see ld's documentation
2659e169010aSmrg   on pseudo-relocs.  */"
2660e169010aSmrg	    lt_dlsym_const= ;;
2661e169010aSmrg	  *osf5*)
2662e169010aSmrg	    echo >> "$output_objdir/$my_dlsyms" "\
2663e169010aSmrg/* This system does not cope well with relocations in const data */"
2664e169010aSmrg	    lt_dlsym_const= ;;
2665e169010aSmrg	  *)
2666e169010aSmrg	    lt_dlsym_const=const ;;
2667e169010aSmrg	  esac
2668e169010aSmrg
2669e8ead290Smrg	  echo >> "$output_objdir/$my_dlsyms" "\
2670e169010aSmrgextern $lt_dlsym_const lt_dlsymlist
2671e169010aSmrglt_${my_prefix}_LTX_preloaded_symbols[];
2672e169010aSmrg$lt_dlsym_const lt_dlsymlist
2673e169010aSmrglt_${my_prefix}_LTX_preloaded_symbols[] =
2674e169010aSmrg{\
2675e169010aSmrg  { \"$my_originator\", (void *) 0 },"
2676e169010aSmrg
2677e169010aSmrg	  case $need_lib_prefix in
2678e169010aSmrg	  no)
2679e169010aSmrg	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
2680e169010aSmrg	    ;;
2681e169010aSmrg	  *)
2682e169010aSmrg	    eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
2683e169010aSmrg	    ;;
2684e169010aSmrg	  esac
2685e8ead290Smrg	  echo >> "$output_objdir/$my_dlsyms" "\
2686e169010aSmrg  {0, (void *) 0}
2687e169010aSmrg};
2688e169010aSmrg
2689e169010aSmrg/* This works around a problem in FreeBSD linker */
2690e169010aSmrg#ifdef FREEBSD_WORKAROUND
2691e169010aSmrgstatic const void *lt_preloaded_setup() {
2692e169010aSmrg  return lt_${my_prefix}_LTX_preloaded_symbols;
2693e169010aSmrg}
2694e169010aSmrg#endif
2695e169010aSmrg
2696e169010aSmrg#ifdef __cplusplus
2697e169010aSmrg}
2698e169010aSmrg#endif\
2699e169010aSmrg"
2700e169010aSmrg	} # !$opt_dry_run
2701e169010aSmrg
2702e169010aSmrg	pic_flag_for_symtable=
2703e169010aSmrg	case "$compile_command " in
2704e169010aSmrg	*" -static "*) ;;
2705e169010aSmrg	*)
2706e169010aSmrg	  case $host in
2707e169010aSmrg	  # compiling the symbol table file with pic_flag works around
2708e169010aSmrg	  # a FreeBSD bug that causes programs to crash when -lm is
2709e169010aSmrg	  # linked before any other PIC object.  But we must not use
2710e169010aSmrg	  # pic_flag when linking with -static.  The problem exists in
2711e169010aSmrg	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
2712e169010aSmrg	  *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
2713e169010aSmrg	    pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
2714e169010aSmrg	  *-*-hpux*)
2715e169010aSmrg	    pic_flag_for_symtable=" $pic_flag"  ;;
2716e169010aSmrg	  *)
2717e169010aSmrg	    if test "X$my_pic_p" != Xno; then
2718e169010aSmrg	      pic_flag_for_symtable=" $pic_flag"
27197914d74bSmrg	    fi
2720e169010aSmrg	    ;;
2721e169010aSmrg	  esac
2722e169010aSmrg	  ;;
2723e169010aSmrg	esac
2724e169010aSmrg	symtab_cflags=
2725e169010aSmrg	for arg in $LTCFLAGS; do
2726e169010aSmrg	  case $arg in
2727e169010aSmrg	  -pie | -fpie | -fPIE) ;;
2728e169010aSmrg	  *) symtab_cflags="$symtab_cflags $arg" ;;
2729e169010aSmrg	  esac
2730e169010aSmrg	done
27317914d74bSmrg
2732e169010aSmrg	# Now compile the dynamic symbol file.
2733e169010aSmrg	func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
27347914d74bSmrg
2735e169010aSmrg	# Clean up the generated files.
2736e169010aSmrg	func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
2737e169010aSmrg
2738e169010aSmrg	# Transform the symbol file into the correct name.
2739e169010aSmrg	symfileobj="$output_objdir/${my_outputname}S.$objext"
2740e169010aSmrg	case $host in
2741e169010aSmrg	*cygwin* | *mingw* | *cegcc* )
2742e169010aSmrg	  if test -f "$output_objdir/$my_outputname.def"; then
2743e8ead290Smrg	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
2744e8ead290Smrg	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
2745e169010aSmrg	  else
2746e8ead290Smrg	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
2747e8ead290Smrg	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
2748e169010aSmrg	  fi
2749e169010aSmrg	  ;;
2750e169010aSmrg	*)
2751e8ead290Smrg	  compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
2752e8ead290Smrg	  finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
27537914d74bSmrg	  ;;
27547914d74bSmrg	esac
2755e169010aSmrg	;;
2756e169010aSmrg      *)
2757e169010aSmrg	func_fatal_error "unknown suffix for \`$my_dlsyms'"
2758e169010aSmrg	;;
2759e169010aSmrg      esac
2760e169010aSmrg    else
2761e169010aSmrg      # We keep going just in case the user didn't refer to
2762e169010aSmrg      # lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
2763e169010aSmrg      # really was required.
2764e169010aSmrg
2765e169010aSmrg      # Nullify the symbol file.
2766e8ead290Smrg      compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"`
2767e8ead290Smrg      finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"`
27687914d74bSmrg    fi
2769e169010aSmrg}
27707914d74bSmrg
2771e169010aSmrg# func_win32_libid arg
2772e169010aSmrg# return the library type of file 'arg'
2773e169010aSmrg#
2774e169010aSmrg# Need a lot of goo to handle *both* DLLs and import libs
2775e169010aSmrg# Has to be a shell function in order to 'eat' the argument
2776e169010aSmrg# that is supplied when $file_magic_command is called.
2777e8ead290Smrg# Despite the name, also deal with 64 bit binaries.
2778e169010aSmrgfunc_win32_libid ()
2779e169010aSmrg{
2780e169010aSmrg  $opt_debug
2781e169010aSmrg  win32_libid_type="unknown"
2782e169010aSmrg  win32_fileres=`file -L $1 2>/dev/null`
2783e169010aSmrg  case $win32_fileres in
2784e169010aSmrg  *ar\ archive\ import\ library*) # definitely import
2785e169010aSmrg    win32_libid_type="x86 archive import"
2786e169010aSmrg    ;;
2787e169010aSmrg  *ar\ archive*) # could be an import, or static
2788e8ead290Smrg    # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD.
2789e169010aSmrg    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
2790e8ead290Smrg       $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then
2791e169010aSmrg      win32_nmres=`eval $NM -f posix -A $1 |
2792e169010aSmrg	$SED -n -e '
2793e169010aSmrg	    1,100{
2794e169010aSmrg		/ I /{
2795e169010aSmrg		    s,.*,import,
2796e169010aSmrg		    p
2797e169010aSmrg		    q
2798e169010aSmrg		}
2799e169010aSmrg	    }'`
2800e169010aSmrg      case $win32_nmres in
2801e169010aSmrg      import*)  win32_libid_type="x86 archive import";;
2802e169010aSmrg      *)        win32_libid_type="x86 archive static";;
2803e169010aSmrg      esac
2804e169010aSmrg    fi
2805e169010aSmrg    ;;
2806e169010aSmrg  *DLL*)
2807e169010aSmrg    win32_libid_type="x86 DLL"
2808e169010aSmrg    ;;
2809e169010aSmrg  *executable*) # but shell scripts are "executable" too...
2810e169010aSmrg    case $win32_fileres in
2811e169010aSmrg    *MS\ Windows\ PE\ Intel*)
2812e169010aSmrg      win32_libid_type="x86 DLL"
2813e169010aSmrg      ;;
2814e169010aSmrg    esac
2815e169010aSmrg    ;;
2816e169010aSmrg  esac
2817e169010aSmrg  $ECHO "$win32_libid_type"
2818e169010aSmrg}
28197914d74bSmrg
28207914d74bSmrg
28217914d74bSmrg
2822e169010aSmrg# func_extract_an_archive dir oldlib
2823e169010aSmrgfunc_extract_an_archive ()
2824e169010aSmrg{
2825e169010aSmrg    $opt_debug
2826e169010aSmrg    f_ex_an_ar_dir="$1"; shift
2827e169010aSmrg    f_ex_an_ar_oldlib="$1"
2828e8ead290Smrg    if test "$lock_old_archive_extraction" = yes; then
2829e8ead290Smrg      lockfile=$f_ex_an_ar_oldlib.lock
2830e8ead290Smrg      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
2831e8ead290Smrg	func_echo "Waiting for $lockfile to be removed"
2832e8ead290Smrg	sleep 2
2833e8ead290Smrg      done
2834e8ead290Smrg    fi
2835e8ead290Smrg    func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \
2836e8ead290Smrg		   'stat=$?; rm -f "$lockfile"; exit $stat'
2837e8ead290Smrg    if test "$lock_old_archive_extraction" = yes; then
2838e8ead290Smrg      $opt_dry_run || rm -f "$lockfile"
2839e8ead290Smrg    fi
2840e169010aSmrg    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
2841e169010aSmrg     :
2842e169010aSmrg    else
2843e169010aSmrg      func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
2844e169010aSmrg    fi
2845e169010aSmrg}
28467914d74bSmrg
28477914d74bSmrg
2848e169010aSmrg# func_extract_archives gentop oldlib ...
2849e169010aSmrgfunc_extract_archives ()
2850e169010aSmrg{
2851e169010aSmrg    $opt_debug
2852e169010aSmrg    my_gentop="$1"; shift
2853e169010aSmrg    my_oldlibs=${1+"$@"}
2854e169010aSmrg    my_oldobjs=""
2855e169010aSmrg    my_xlib=""
2856e169010aSmrg    my_xabs=""
2857e169010aSmrg    my_xdir=""
28587914d74bSmrg
2859e169010aSmrg    for my_xlib in $my_oldlibs; do
2860e169010aSmrg      # Extract the objects.
2861e169010aSmrg      case $my_xlib in
2862e169010aSmrg	[\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
2863e169010aSmrg	*) my_xabs=`pwd`"/$my_xlib" ;;
2864e169010aSmrg      esac
2865e169010aSmrg      func_basename "$my_xlib"
2866e169010aSmrg      my_xlib="$func_basename_result"
2867e169010aSmrg      my_xlib_u=$my_xlib
2868e169010aSmrg      while :; do
2869e169010aSmrg        case " $extracted_archives " in
2870e169010aSmrg	*" $my_xlib_u "*)
2871e169010aSmrg	  func_arith $extracted_serial + 1
2872e169010aSmrg	  extracted_serial=$func_arith_result
2873e169010aSmrg	  my_xlib_u=lt$extracted_serial-$my_xlib ;;
2874e169010aSmrg	*) break ;;
2875e169010aSmrg	esac
2876e169010aSmrg      done
2877e169010aSmrg      extracted_archives="$extracted_archives $my_xlib_u"
2878e169010aSmrg      my_xdir="$my_gentop/$my_xlib_u"
28797914d74bSmrg
2880e169010aSmrg      func_mkdir_p "$my_xdir"
28817914d74bSmrg
2882e169010aSmrg      case $host in
2883e169010aSmrg      *-darwin*)
2884e169010aSmrg	func_verbose "Extracting $my_xabs"
2885e169010aSmrg	# Do not bother doing anything if just a dry run
2886e169010aSmrg	$opt_dry_run || {
2887e169010aSmrg	  darwin_orig_dir=`pwd`
2888e169010aSmrg	  cd $my_xdir || exit $?
2889e169010aSmrg	  darwin_archive=$my_xabs
2890e169010aSmrg	  darwin_curdir=`pwd`
2891e169010aSmrg	  darwin_base_archive=`basename "$darwin_archive"`
2892e169010aSmrg	  darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
2893e169010aSmrg	  if test -n "$darwin_arches"; then
2894e169010aSmrg	    darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
2895e169010aSmrg	    darwin_arch=
2896e169010aSmrg	    func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
2897e169010aSmrg	    for darwin_arch in  $darwin_arches ; do
2898e169010aSmrg	      func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
2899e169010aSmrg	      $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
2900e169010aSmrg	      cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
2901e169010aSmrg	      func_extract_an_archive "`pwd`" "${darwin_base_archive}"
2902e169010aSmrg	      cd "$darwin_curdir"
2903e169010aSmrg	      $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
2904e169010aSmrg	    done # $darwin_arches
2905e169010aSmrg            ## Okay now we've a bunch of thin objects, gotta fatten them up :)
2906e169010aSmrg	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
2907e169010aSmrg	    darwin_file=
2908e169010aSmrg	    darwin_files=
2909e169010aSmrg	    for darwin_file in $darwin_filelist; do
2910e8ead290Smrg	      darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP`
2911e169010aSmrg	      $LIPO -create -output "$darwin_file" $darwin_files
2912e169010aSmrg	    done # $darwin_filelist
2913e169010aSmrg	    $RM -rf unfat-$$
2914e169010aSmrg	    cd "$darwin_orig_dir"
2915e169010aSmrg	  else
2916e169010aSmrg	    cd $darwin_orig_dir
2917e169010aSmrg	    func_extract_an_archive "$my_xdir" "$my_xabs"
2918e169010aSmrg	  fi # $darwin_arches
2919e169010aSmrg	} # !$opt_dry_run
2920e169010aSmrg	;;
2921e169010aSmrg      *)
2922e169010aSmrg        func_extract_an_archive "$my_xdir" "$my_xabs"
2923e169010aSmrg	;;
29247914d74bSmrg      esac
2925e8ead290Smrg      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP`
2926e169010aSmrg    done
29277914d74bSmrg
2928e169010aSmrg    func_extract_archives_result="$my_oldobjs"
2929e169010aSmrg}
29307914d74bSmrg
29317914d74bSmrg
2932e8ead290Smrg# func_emit_wrapper [arg=no]
2933e8ead290Smrg#
2934e8ead290Smrg# Emit a libtool wrapper script on stdout.
2935e8ead290Smrg# Don't directly open a file because we may want to
2936e8ead290Smrg# incorporate the script contents within a cygwin/mingw
2937e8ead290Smrg# wrapper executable.  Must ONLY be called from within
2938e8ead290Smrg# func_mode_link because it depends on a number of variables
2939e8ead290Smrg# set therein.
2940e169010aSmrg#
2941e8ead290Smrg# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
2942e8ead290Smrg# variable will take.  If 'yes', then the emitted script
2943e8ead290Smrg# will assume that the directory in which it is stored is
2944e8ead290Smrg# the $objdir directory.  This is a cygwin/mingw-specific
2945e8ead290Smrg# behavior.
2946e8ead290Smrgfunc_emit_wrapper ()
2947e169010aSmrg{
2948e8ead290Smrg	func_emit_wrapper_arg1=${1-no}
29497914d74bSmrg
2950e169010aSmrg	$ECHO "\
2951e169010aSmrg#! $SHELL
29527914d74bSmrg
2953e169010aSmrg# $output - temporary wrapper script for $objdir/$outputname
2954e169010aSmrg# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
2955e169010aSmrg#
2956e169010aSmrg# The $output program cannot be directly executed until all the libtool
2957e169010aSmrg# libraries that it depends on are installed.
2958e169010aSmrg#
2959e169010aSmrg# This wrapper script should never be moved out of the build directory.
2960e169010aSmrg# If it is, it will not operate correctly.
29617914d74bSmrg
2962e169010aSmrg# Sed substitution that helps us do robust quoting.  It backslashifies
2963e169010aSmrg# metacharacters that are still active within double-quoted strings.
2964e169010aSmrgsed_quote_subst='$sed_quote_subst'
29657914d74bSmrg
2966e169010aSmrg# Be Bourne compatible
2967e169010aSmrgif test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
2968e169010aSmrg  emulate sh
2969e169010aSmrg  NULLCMD=:
2970e169010aSmrg  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
2971e169010aSmrg  # is contrary to our usage.  Disable this feature.
2972e169010aSmrg  alias -g '\${1+\"\$@\"}'='\"\$@\"'
2973e169010aSmrg  setopt NO_GLOB_SUBST
2974e169010aSmrgelse
2975e169010aSmrg  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
2976e169010aSmrgfi
2977e169010aSmrgBIN_SH=xpg4; export BIN_SH # for Tru64
2978e169010aSmrgDUALCASE=1; export DUALCASE # for MKS sh
29797914d74bSmrg
2980e169010aSmrg# The HP-UX ksh and POSIX shell print the target directory to stdout
2981e169010aSmrg# if CDPATH is set.
2982e169010aSmrg(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
29837914d74bSmrg
2984e169010aSmrgrelink_command=\"$relink_command\"
29857914d74bSmrg
2986e169010aSmrg# This environment variable determines our operation mode.
2987e169010aSmrgif test \"\$libtool_install_magic\" = \"$magic\"; then
2988e169010aSmrg  # install mode needs the following variables:
2989e169010aSmrg  generated_by_libtool_version='$macro_version'
2990e169010aSmrg  notinst_deplibs='$notinst_deplibs'
2991e169010aSmrgelse
2992e169010aSmrg  # When we are sourced in execute mode, \$file and \$ECHO are already set.
2993e169010aSmrg  if test \"\$libtool_execute_magic\" != \"$magic\"; then
2994e8ead290Smrg    file=\"\$0\""
2995e8ead290Smrg
2996e8ead290Smrg    qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"`
2997e8ead290Smrg    $ECHO "\
2998e8ead290Smrg
2999e8ead290Smrg# A function that is used when there is no print builtin or printf.
3000e8ead290Smrgfunc_fallback_echo ()
3001e8ead290Smrg{
3002e8ead290Smrg  eval 'cat <<_LTECHO_EOF
3003e8ead290Smrg\$1
3004e8ead290Smrg_LTECHO_EOF'
3005e8ead290Smrg}
3006e8ead290Smrg    ECHO=\"$qECHO\"
3007e8ead290Smrg  fi
3008e8ead290Smrg
3009e8ead290Smrg# Very basic option parsing. These options are (a) specific to
3010e8ead290Smrg# the libtool wrapper, (b) are identical between the wrapper
3011e8ead290Smrg# /script/ and the wrapper /executable/ which is used only on
3012e8ead290Smrg# windows platforms, and (c) all begin with the string "--lt-"
3013e8ead290Smrg# (application programs are unlikely to have options which match
3014e8ead290Smrg# this pattern).
3015e8ead290Smrg#
3016e8ead290Smrg# There are only two supported options: --lt-debug and
3017e8ead290Smrg# --lt-dump-script. There is, deliberately, no --lt-help.
3018e8ead290Smrg#
3019e8ead290Smrg# The first argument to this parsing function should be the
3020e8ead290Smrg# script's $0 value, followed by "$@".
3021e8ead290Smrglt_option_debug=
3022e8ead290Smrgfunc_parse_lt_options ()
3023e8ead290Smrg{
3024e8ead290Smrg  lt_script_arg0=\$0
3025e8ead290Smrg  shift
3026e8ead290Smrg  for lt_opt
3027e8ead290Smrg  do
3028e8ead290Smrg    case \"\$lt_opt\" in
3029e8ead290Smrg    --lt-debug) lt_option_debug=1 ;;
3030e8ead290Smrg    --lt-dump-script)
3031e8ead290Smrg        lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\`
3032e8ead290Smrg        test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=.
3033e8ead290Smrg        lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\`
3034e8ead290Smrg        cat \"\$lt_dump_D/\$lt_dump_F\"
3035e8ead290Smrg        exit 0
3036e8ead290Smrg      ;;
3037e8ead290Smrg    --lt-*)
3038e8ead290Smrg        \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2
3039e8ead290Smrg        exit 1
3040e8ead290Smrg      ;;
3041e8ead290Smrg    esac
3042e8ead290Smrg  done
3043e8ead290Smrg
3044e8ead290Smrg  # Print the debug banner immediately:
3045e8ead290Smrg  if test -n \"\$lt_option_debug\"; then
3046e8ead290Smrg    echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2
3047e8ead290Smrg  fi
3048e8ead290Smrg}
3049e8ead290Smrg
3050e8ead290Smrg# Used when --lt-debug. Prints its arguments to stdout
3051e8ead290Smrg# (redirection is the responsibility of the caller)
3052e8ead290Smrgfunc_lt_dump_args ()
3053e8ead290Smrg{
3054e8ead290Smrg  lt_dump_args_N=1;
3055e8ead290Smrg  for lt_arg
3056e8ead290Smrg  do
3057e8ead290Smrg    \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\"
3058e8ead290Smrg    lt_dump_args_N=\`expr \$lt_dump_args_N + 1\`
3059e8ead290Smrg  done
3060e8ead290Smrg}
3061e8ead290Smrg
3062e8ead290Smrg# Core function for launching the target application
3063e8ead290Smrgfunc_exec_program_core ()
3064e8ead290Smrg{
3065e169010aSmrg"
3066e8ead290Smrg  case $host in
3067e8ead290Smrg  # Backslashes separate directories on plain windows
3068e8ead290Smrg  *-*-mingw | *-*-os2* | *-cegcc*)
3069e8ead290Smrg    $ECHO "\
3070e8ead290Smrg      if test -n \"\$lt_option_debug\"; then
3071e8ead290Smrg        \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2
3072e8ead290Smrg        func_lt_dump_args \${1+\"\$@\"} 1>&2
3073e8ead290Smrg      fi
3074e8ead290Smrg      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
3075e8ead290Smrg"
3076e8ead290Smrg    ;;
3077e8ead290Smrg
3078e8ead290Smrg  *)
3079e8ead290Smrg    $ECHO "\
3080e8ead290Smrg      if test -n \"\$lt_option_debug\"; then
3081e8ead290Smrg        \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2
3082e8ead290Smrg        func_lt_dump_args \${1+\"\$@\"} 1>&2
3083e8ead290Smrg      fi
3084e8ead290Smrg      exec \"\$progdir/\$program\" \${1+\"\$@\"}
3085e8ead290Smrg"
3086e8ead290Smrg    ;;
3087e8ead290Smrg  esac
3088e8ead290Smrg  $ECHO "\
3089e8ead290Smrg      \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
3090e8ead290Smrg      exit 1
3091e8ead290Smrg}
3092e8ead290Smrg
3093e8ead290Smrg# A function to encapsulate launching the target application
3094e8ead290Smrg# Strips options in the --lt-* namespace from \$@ and
3095e8ead290Smrg# launches target application with the remaining arguments.
3096e8ead290Smrgfunc_exec_program ()
3097e8ead290Smrg{
3098e8ead290Smrg  for lt_wr_arg
3099e8ead290Smrg  do
3100e8ead290Smrg    case \$lt_wr_arg in
3101e8ead290Smrg    --lt-*) ;;
3102e8ead290Smrg    *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
3103e8ead290Smrg    esac
3104e8ead290Smrg    shift
3105e8ead290Smrg  done
3106e8ead290Smrg  func_exec_program_core \${1+\"\$@\"}
3107e8ead290Smrg}
3108e8ead290Smrg
3109e8ead290Smrg  # Parse options
3110e8ead290Smrg  func_parse_lt_options \"\$0\" \${1+\"\$@\"}
31117914d74bSmrg
3112e169010aSmrg  # Find the directory that this script lives in.
3113e8ead290Smrg  thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\`
3114e169010aSmrg  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
31157914d74bSmrg
3116e169010aSmrg  # Follow symbolic links until we get to the real thisdir.
3117e8ead290Smrg  file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\`
3118e169010aSmrg  while test -n \"\$file\"; do
3119e8ead290Smrg    destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\`
31207914d74bSmrg
3121e169010aSmrg    # If there was a directory component, then change thisdir.
3122e169010aSmrg    if test \"x\$destdir\" != \"x\$file\"; then
3123e169010aSmrg      case \"\$destdir\" in
3124e169010aSmrg      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
3125e169010aSmrg      *) thisdir=\"\$thisdir/\$destdir\" ;;
3126e169010aSmrg      esac
3127e169010aSmrg    fi
31287914d74bSmrg
3129e8ead290Smrg    file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\`
3130e8ead290Smrg    file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\`
3131e169010aSmrg  done
31327914d74bSmrg
3133e169010aSmrg  # Usually 'no', except on cygwin/mingw when embedded into
3134e169010aSmrg  # the cwrapper.
3135e8ead290Smrg  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1
3136e169010aSmrg  if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
3137e169010aSmrg    # special case for '.'
3138e169010aSmrg    if test \"\$thisdir\" = \".\"; then
3139e169010aSmrg      thisdir=\`pwd\`
3140e169010aSmrg    fi
3141e169010aSmrg    # remove .libs from thisdir
3142e169010aSmrg    case \"\$thisdir\" in
3143e8ead290Smrg    *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;;
3144e169010aSmrg    $objdir )   thisdir=. ;;
3145e169010aSmrg    esac
3146e169010aSmrg  fi
31477914d74bSmrg
3148e169010aSmrg  # Try to get the absolute directory name.
3149e169010aSmrg  absdir=\`cd \"\$thisdir\" && pwd\`
3150e169010aSmrg  test -n \"\$absdir\" && thisdir=\"\$absdir\"
3151e169010aSmrg"
31527914d74bSmrg
3153e169010aSmrg	if test "$fast_install" = yes; then
3154e169010aSmrg	  $ECHO "\
3155e169010aSmrg  program=lt-'$outputname'$exeext
3156e169010aSmrg  progdir=\"\$thisdir/$objdir\"
31577914d74bSmrg
3158e169010aSmrg  if test ! -f \"\$progdir/\$program\" ||
3159e169010aSmrg     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
3160e169010aSmrg       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
31617914d74bSmrg
3162e169010aSmrg    file=\"\$\$-\$program\"
31637914d74bSmrg
3164e169010aSmrg    if test ! -d \"\$progdir\"; then
3165e169010aSmrg      $MKDIR \"\$progdir\"
3166e169010aSmrg    else
3167e169010aSmrg      $RM \"\$progdir/\$file\"
3168e169010aSmrg    fi"
31697914d74bSmrg
3170e169010aSmrg	  $ECHO "\
31717914d74bSmrg
3172e169010aSmrg    # relink executable if necessary
3173e169010aSmrg    if test -n \"\$relink_command\"; then
3174e169010aSmrg      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
3175e169010aSmrg      else
3176e169010aSmrg	$ECHO \"\$relink_command_output\" >&2
3177e169010aSmrg	$RM \"\$progdir/\$file\"
3178e169010aSmrg	exit 1
3179e169010aSmrg      fi
3180e169010aSmrg    fi
31817914d74bSmrg
3182e169010aSmrg    $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
3183e169010aSmrg    { $RM \"\$progdir/\$program\";
3184e169010aSmrg      $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
3185e169010aSmrg    $RM \"\$progdir/\$file\"
3186e169010aSmrg  fi"
3187e169010aSmrg	else
3188e169010aSmrg	  $ECHO "\
3189e169010aSmrg  program='$outputname'
3190e169010aSmrg  progdir=\"\$thisdir/$objdir\"
3191e169010aSmrg"
3192e169010aSmrg	fi
31937914d74bSmrg
3194e169010aSmrg	$ECHO "\
31957914d74bSmrg
3196e169010aSmrg  if test -f \"\$progdir/\$program\"; then"
31977914d74bSmrg
3198e169010aSmrg	# Export our shlibpath_var if we have one.
3199e169010aSmrg	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
3200e169010aSmrg	  $ECHO "\
3201e169010aSmrg    # Add our own library path to $shlibpath_var
3202e169010aSmrg    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
32037914d74bSmrg
3204e169010aSmrg    # Some systems cannot cope with colon-terminated $shlibpath_var
3205e169010aSmrg    # The second colon is a workaround for a bug in BeOS R4 sed
3206e8ead290Smrg    $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\`
32077914d74bSmrg
3208e169010aSmrg    export $shlibpath_var
3209e169010aSmrg"
32107914d74bSmrg	fi
32117914d74bSmrg
3212e169010aSmrg	# fixup the dll searchpath if we need to.
3213e169010aSmrg	if test -n "$dllsearchpath"; then
3214e169010aSmrg	  $ECHO "\
3215e169010aSmrg    # Add the dll search path components to the executable PATH
3216e169010aSmrg    PATH=$dllsearchpath:\$PATH
3217e169010aSmrg"
32187914d74bSmrg	fi
32197914d74bSmrg
3220e169010aSmrg	$ECHO "\
3221e169010aSmrg    if test \"\$libtool_execute_magic\" != \"$magic\"; then
3222e169010aSmrg      # Run the actual program with our arguments.
3223e8ead290Smrg      func_exec_program \${1+\"\$@\"}
3224e169010aSmrg    fi
3225e169010aSmrg  else
3226e169010aSmrg    # The program doesn't exist.
3227e169010aSmrg    \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
3228e169010aSmrg    \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
3229e8ead290Smrg    \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
3230e169010aSmrg    exit 1
3231e169010aSmrg  fi
3232e169010aSmrgfi\
3233e169010aSmrg"
3234e169010aSmrg}
32357914d74bSmrg
32367914d74bSmrg
3237e169010aSmrg# func_to_host_path arg
3238e169010aSmrg#
3239e169010aSmrg# Convert paths to host format when used with build tools.
3240e169010aSmrg# Intended for use with "native" mingw (where libtool itself
3241e169010aSmrg# is running under the msys shell), or in the following cross-
3242e169010aSmrg# build environments:
3243e169010aSmrg#    $build          $host
3244e169010aSmrg#    mingw (msys)    mingw  [e.g. native]
3245e169010aSmrg#    cygwin          mingw
3246e169010aSmrg#    *nix + wine     mingw
3247e169010aSmrg# where wine is equipped with the `winepath' executable.
3248e169010aSmrg# In the native mingw case, the (msys) shell automatically
3249e169010aSmrg# converts paths for any non-msys applications it launches,
3250e169010aSmrg# but that facility isn't available from inside the cwrapper.
3251e169010aSmrg# Similar accommodations are necessary for $host mingw and
3252e169010aSmrg# $build cygwin.  Calling this function does no harm for other
3253e169010aSmrg# $host/$build combinations not listed above.
3254e169010aSmrg#
3255e169010aSmrg# ARG is the path (on $build) that should be converted to
3256e169010aSmrg# the proper representation for $host. The result is stored
3257e169010aSmrg# in $func_to_host_path_result.
3258e169010aSmrgfunc_to_host_path ()
3259e169010aSmrg{
3260e169010aSmrg  func_to_host_path_result="$1"
3261e8ead290Smrg  if test -n "$1"; then
3262e169010aSmrg    case $host in
3263e169010aSmrg      *mingw* )
3264e169010aSmrg        lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
3265e169010aSmrg        case $build in
3266e169010aSmrg          *mingw* ) # actually, msys
3267e169010aSmrg            # awkward: cmd appends spaces to result
3268e8ead290Smrg            func_to_host_path_result=`( cmd //c echo "$1" ) 2>/dev/null |
3269e8ead290Smrg              $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"`
3270e169010aSmrg            ;;
3271e169010aSmrg          *cygwin* )
3272e8ead290Smrg            func_to_host_path_result=`cygpath -w "$1" |
3273e8ead290Smrg	      $SED -e "$lt_sed_naive_backslashify"`
3274e169010aSmrg            ;;
3275e169010aSmrg          * )
3276e169010aSmrg            # Unfortunately, winepath does not exit with a non-zero
3277e169010aSmrg            # error code, so we are forced to check the contents of
3278e169010aSmrg            # stdout. On the other hand, if the command is not
3279e169010aSmrg            # found, the shell will set an exit code of 127 and print
3280e169010aSmrg            # *an error message* to stdout. So we must check for both
3281e169010aSmrg            # error code of zero AND non-empty stdout, which explains
3282e169010aSmrg            # the odd construction:
3283e169010aSmrg            func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null`
3284e169010aSmrg            if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then
3285e8ead290Smrg              func_to_host_path_result=`$ECHO "$func_to_host_path_tmp1" |
3286e169010aSmrg                $SED -e "$lt_sed_naive_backslashify"`
3287e169010aSmrg            else
3288e169010aSmrg              # Allow warning below.
3289e8ead290Smrg              func_to_host_path_result=
3290e169010aSmrg            fi
3291e169010aSmrg            ;;
3292e169010aSmrg        esac
3293e169010aSmrg        if test -z "$func_to_host_path_result" ; then
3294e169010aSmrg          func_error "Could not determine host path corresponding to"
3295e8ead290Smrg          func_error "  \`$1'"
3296e169010aSmrg          func_error "Continuing, but uninstalled executables may not work."
3297e169010aSmrg          # Fallback:
3298e169010aSmrg          func_to_host_path_result="$1"
3299e169010aSmrg        fi
3300e169010aSmrg        ;;
3301e169010aSmrg    esac
3302e169010aSmrg  fi
3303e169010aSmrg}
3304e169010aSmrg# end: func_to_host_path
33057914d74bSmrg
3306e169010aSmrg# func_to_host_pathlist arg
3307e169010aSmrg#
3308e169010aSmrg# Convert pathlists to host format when used with build tools.
3309e169010aSmrg# See func_to_host_path(), above. This function supports the
3310e169010aSmrg# following $build/$host combinations (but does no harm for
3311e169010aSmrg# combinations not listed here):
3312e169010aSmrg#    $build          $host
3313e169010aSmrg#    mingw (msys)    mingw  [e.g. native]
3314e169010aSmrg#    cygwin          mingw
3315e169010aSmrg#    *nix + wine     mingw
3316e169010aSmrg#
3317e169010aSmrg# Path separators are also converted from $build format to
3318e169010aSmrg# $host format. If ARG begins or ends with a path separator
3319e169010aSmrg# character, it is preserved (but converted to $host format)
3320e169010aSmrg# on output.
3321e169010aSmrg#
3322e169010aSmrg# ARG is a pathlist (on $build) that should be converted to
3323e169010aSmrg# the proper representation on $host. The result is stored
3324e169010aSmrg# in $func_to_host_pathlist_result.
3325e169010aSmrgfunc_to_host_pathlist ()
3326e169010aSmrg{
3327e169010aSmrg  func_to_host_pathlist_result="$1"
3328e8ead290Smrg  if test -n "$1"; then
3329e169010aSmrg    case $host in
3330e169010aSmrg      *mingw* )
3331e169010aSmrg        lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
3332e169010aSmrg        # Remove leading and trailing path separator characters from
3333e169010aSmrg        # ARG. msys behavior is inconsistent here, cygpath turns them
3334e169010aSmrg        # into '.;' and ';.', and winepath ignores them completely.
3335e8ead290Smrg	func_stripname : : "$1"
3336e8ead290Smrg        func_to_host_pathlist_tmp1=$func_stripname_result
3337e169010aSmrg        case $build in
3338e169010aSmrg          *mingw* ) # Actually, msys.
3339e169010aSmrg            # Awkward: cmd appends spaces to result.
3340e8ead290Smrg            func_to_host_pathlist_result=`
3341e8ead290Smrg	      ( cmd //c echo "$func_to_host_pathlist_tmp1" ) 2>/dev/null |
3342e8ead290Smrg	      $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"`
3343e169010aSmrg            ;;
3344e169010aSmrg          *cygwin* )
3345e8ead290Smrg            func_to_host_pathlist_result=`cygpath -w -p "$func_to_host_pathlist_tmp1" |
3346e169010aSmrg              $SED -e "$lt_sed_naive_backslashify"`
3347e169010aSmrg            ;;
3348e169010aSmrg          * )
3349e169010aSmrg            # unfortunately, winepath doesn't convert pathlists
3350e169010aSmrg            func_to_host_pathlist_result=""
3351e169010aSmrg            func_to_host_pathlist_oldIFS=$IFS
3352e169010aSmrg            IFS=:
3353e169010aSmrg            for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do
3354e169010aSmrg              IFS=$func_to_host_pathlist_oldIFS
3355e169010aSmrg              if test -n "$func_to_host_pathlist_f" ; then
3356e169010aSmrg                func_to_host_path "$func_to_host_pathlist_f"
3357e169010aSmrg                if test -n "$func_to_host_path_result" ; then
3358e169010aSmrg                  if test -z "$func_to_host_pathlist_result" ; then
3359e169010aSmrg                    func_to_host_pathlist_result="$func_to_host_path_result"
3360e169010aSmrg                  else
3361e8ead290Smrg                    func_append func_to_host_pathlist_result ";$func_to_host_path_result"
3362e169010aSmrg                  fi
3363e169010aSmrg                fi
3364e169010aSmrg              fi
3365e169010aSmrg            done
3366e169010aSmrg            IFS=$func_to_host_pathlist_oldIFS
3367e169010aSmrg            ;;
3368e169010aSmrg        esac
3369e8ead290Smrg        if test -z "$func_to_host_pathlist_result"; then
3370e169010aSmrg          func_error "Could not determine the host path(s) corresponding to"
3371e8ead290Smrg          func_error "  \`$1'"
3372e169010aSmrg          func_error "Continuing, but uninstalled executables may not work."
3373e169010aSmrg          # Fallback. This may break if $1 contains DOS-style drive
3374e169010aSmrg          # specifications. The fix is not to complicate the expression
3375e169010aSmrg          # below, but for the user to provide a working wine installation
3376e169010aSmrg          # with winepath so that path translation in the cross-to-mingw
3377e169010aSmrg          # case works properly.
3378e169010aSmrg          lt_replace_pathsep_nix_to_dos="s|:|;|g"
3379e169010aSmrg          func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\
3380e169010aSmrg            $SED -e "$lt_replace_pathsep_nix_to_dos"`
3381e169010aSmrg        fi
3382e169010aSmrg        # Now, add the leading and trailing path separators back
3383e169010aSmrg        case "$1" in
3384e169010aSmrg          :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result"
3385e169010aSmrg            ;;
3386e169010aSmrg        esac
3387e169010aSmrg        case "$1" in
3388e8ead290Smrg          *: ) func_append func_to_host_pathlist_result ";"
3389e169010aSmrg            ;;
3390e169010aSmrg        esac
3391e169010aSmrg        ;;
3392e169010aSmrg    esac
3393e169010aSmrg  fi
3394e169010aSmrg}
3395e169010aSmrg# end: func_to_host_pathlist
33967914d74bSmrg
3397e169010aSmrg# func_emit_cwrapperexe_src
3398e169010aSmrg# emit the source code for a wrapper executable on stdout
3399e169010aSmrg# Must ONLY be called from within func_mode_link because
3400e169010aSmrg# it depends on a number of variable set therein.
3401e169010aSmrgfunc_emit_cwrapperexe_src ()
3402e169010aSmrg{
3403e169010aSmrg	cat <<EOF
34047914d74bSmrg
3405e169010aSmrg/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
3406e169010aSmrg   Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
34077914d74bSmrg
3408e169010aSmrg   The $output program cannot be directly executed until all the libtool
3409e169010aSmrg   libraries that it depends on are installed.
34107914d74bSmrg
3411e169010aSmrg   This wrapper executable should never be moved out of the build directory.
3412e169010aSmrg   If it is, it will not operate correctly.
3413e169010aSmrg*/
3414e169010aSmrgEOF
3415e169010aSmrg	    cat <<"EOF"
3416e8ead290Smrg#ifdef _MSC_VER
3417e8ead290Smrg# define _CRT_SECURE_NO_DEPRECATE 1
3418e8ead290Smrg#endif
3419e169010aSmrg#include <stdio.h>
3420e169010aSmrg#include <stdlib.h>
3421e169010aSmrg#ifdef _MSC_VER
3422e169010aSmrg# include <direct.h>
3423e169010aSmrg# include <process.h>
3424e169010aSmrg# include <io.h>
3425e169010aSmrg#else
3426e169010aSmrg# include <unistd.h>
3427e169010aSmrg# include <stdint.h>
3428e169010aSmrg# ifdef __CYGWIN__
3429e169010aSmrg#  include <io.h>
3430e169010aSmrg# endif
3431e169010aSmrg#endif
3432e169010aSmrg#include <malloc.h>
3433e169010aSmrg#include <stdarg.h>
3434e169010aSmrg#include <assert.h>
3435e169010aSmrg#include <string.h>
3436e169010aSmrg#include <ctype.h>
3437e169010aSmrg#include <errno.h>
3438e169010aSmrg#include <fcntl.h>
3439e169010aSmrg#include <sys/stat.h>
3440e169010aSmrg
3441e8ead290Smrg/* declarations of non-ANSI functions */
3442e8ead290Smrg#if defined(__MINGW32__)
3443e8ead290Smrg# ifdef __STRICT_ANSI__
3444e8ead290Smrgint _putenv (const char *);
3445e8ead290Smrg# endif
3446e8ead290Smrg#elif defined(__CYGWIN__)
3447e8ead290Smrg# ifdef __STRICT_ANSI__
3448e8ead290Smrgchar *realpath (const char *, char *);
3449e8ead290Smrgint putenv (char *);
3450e8ead290Smrgint setenv (const char *, const char *, int);
3451e8ead290Smrg# endif
3452e8ead290Smrg/* #elif defined (other platforms) ... */
3453e8ead290Smrg#endif
3454e8ead290Smrg
3455e8ead290Smrg/* portability defines, excluding path handling macros */
3456e8ead290Smrg#if defined(_MSC_VER)
3457e8ead290Smrg# define setmode _setmode
3458e8ead290Smrg# define stat    _stat
3459e8ead290Smrg# define chmod   _chmod
3460e8ead290Smrg# define getcwd  _getcwd
3461e8ead290Smrg# define putenv  _putenv
3462e8ead290Smrg# define S_IXUSR _S_IEXEC
3463e8ead290Smrg# ifndef _INTPTR_T_DEFINED
3464e8ead290Smrg#  define _INTPTR_T_DEFINED
3465e8ead290Smrg#  define intptr_t int
3466e8ead290Smrg# endif
3467e8ead290Smrg#elif defined(__MINGW32__)
3468e8ead290Smrg# define setmode _setmode
3469e8ead290Smrg# define stat    _stat
3470e8ead290Smrg# define chmod   _chmod
3471e8ead290Smrg# define getcwd  _getcwd
3472e8ead290Smrg# define putenv  _putenv
3473e8ead290Smrg#elif defined(__CYGWIN__)
3474e8ead290Smrg# define HAVE_SETENV
3475e8ead290Smrg# define FOPEN_WB "wb"
3476e8ead290Smrg/* #elif defined (other platforms) ... */
3477e8ead290Smrg#endif
3478e8ead290Smrg
3479e169010aSmrg#if defined(PATH_MAX)
3480e169010aSmrg# define LT_PATHMAX PATH_MAX
3481e169010aSmrg#elif defined(MAXPATHLEN)
3482e169010aSmrg# define LT_PATHMAX MAXPATHLEN
3483e169010aSmrg#else
3484e169010aSmrg# define LT_PATHMAX 1024
3485e169010aSmrg#endif
3486e169010aSmrg
3487e169010aSmrg#ifndef S_IXOTH
3488e169010aSmrg# define S_IXOTH 0
3489e169010aSmrg#endif
3490e169010aSmrg#ifndef S_IXGRP
3491e169010aSmrg# define S_IXGRP 0
3492e169010aSmrg#endif
3493e169010aSmrg
3494e8ead290Smrg/* path handling portability macros */
3495e169010aSmrg#ifndef DIR_SEPARATOR
3496e169010aSmrg# define DIR_SEPARATOR '/'
3497e169010aSmrg# define PATH_SEPARATOR ':'
3498e169010aSmrg#endif
3499e169010aSmrg
3500e169010aSmrg#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
3501e169010aSmrg  defined (__OS2__)
3502e169010aSmrg# define HAVE_DOS_BASED_FILE_SYSTEM
3503e169010aSmrg# define FOPEN_WB "wb"
3504e169010aSmrg# ifndef DIR_SEPARATOR_2
3505e169010aSmrg#  define DIR_SEPARATOR_2 '\\'
3506e169010aSmrg# endif
3507e169010aSmrg# ifndef PATH_SEPARATOR_2
3508e169010aSmrg#  define PATH_SEPARATOR_2 ';'
3509e169010aSmrg# endif
3510e169010aSmrg#endif
3511e169010aSmrg
3512e169010aSmrg#ifndef DIR_SEPARATOR_2
3513e169010aSmrg# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
3514e169010aSmrg#else /* DIR_SEPARATOR_2 */
3515e169010aSmrg# define IS_DIR_SEPARATOR(ch) \
3516e169010aSmrg	(((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
3517e169010aSmrg#endif /* DIR_SEPARATOR_2 */
3518e169010aSmrg
3519e169010aSmrg#ifndef PATH_SEPARATOR_2
3520e169010aSmrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
3521e169010aSmrg#else /* PATH_SEPARATOR_2 */
3522e169010aSmrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
3523e169010aSmrg#endif /* PATH_SEPARATOR_2 */
3524e169010aSmrg
3525e169010aSmrg#ifndef FOPEN_WB
3526e169010aSmrg# define FOPEN_WB "w"
3527e169010aSmrg#endif
3528e169010aSmrg#ifndef _O_BINARY
3529e169010aSmrg# define _O_BINARY 0
3530e169010aSmrg#endif
3531e169010aSmrg
3532e169010aSmrg#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
3533e169010aSmrg#define XFREE(stale) do { \
3534e169010aSmrg  if (stale) { free ((void *) stale); stale = 0; } \
3535e169010aSmrg} while (0)
3536e169010aSmrg
3537e8ead290Smrg#if defined(LT_DEBUGWRAPPER)
3538e8ead290Smrgstatic int lt_debug = 1;
3539e169010aSmrg#else
3540e8ead290Smrgstatic int lt_debug = 0;
3541e169010aSmrg#endif
3542e169010aSmrg
3543e8ead290Smrgconst char *program_name = "libtool-wrapper"; /* in case xstrdup fails */
3544e169010aSmrg
3545e169010aSmrgvoid *xmalloc (size_t num);
3546e169010aSmrgchar *xstrdup (const char *string);
3547e169010aSmrgconst char *base_name (const char *name);
3548e169010aSmrgchar *find_executable (const char *wrapper);
3549e169010aSmrgchar *chase_symlinks (const char *pathspec);
3550e169010aSmrgint make_executable (const char *path);
3551e169010aSmrgint check_executable (const char *path);
3552e169010aSmrgchar *strendzap (char *str, const char *pat);
3553e8ead290Smrgvoid lt_debugprintf (const char *file, int line, const char *fmt, ...);
3554e8ead290Smrgvoid lt_fatal (const char *file, int line, const char *message, ...);
3555e8ead290Smrgstatic const char *nonnull (const char *s);
3556e8ead290Smrgstatic const char *nonempty (const char *s);
3557e169010aSmrgvoid lt_setenv (const char *name, const char *value);
3558e169010aSmrgchar *lt_extend_str (const char *orig_value, const char *add, int to_end);
3559e169010aSmrgvoid lt_update_exe_path (const char *name, const char *value);
3560e169010aSmrgvoid lt_update_lib_path (const char *name, const char *value);
3561e8ead290Smrgchar **prepare_spawn (char **argv);
3562e8ead290Smrgvoid lt_dump_script (FILE *f);
3563e169010aSmrgEOF
3564e169010aSmrg
3565e169010aSmrg	    cat <<EOF
3566e169010aSmrgconst char * MAGIC_EXE = "$magic_exe";
3567e169010aSmrgconst char * LIB_PATH_VARNAME = "$shlibpath_var";
3568e169010aSmrgEOF
3569e169010aSmrg
3570e169010aSmrg	    if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
3571e169010aSmrg              func_to_host_pathlist "$temp_rpath"
3572e169010aSmrg	      cat <<EOF
3573e169010aSmrgconst char * LIB_PATH_VALUE   = "$func_to_host_pathlist_result";
35747914d74bSmrgEOF
35757914d74bSmrg	    else
3576e169010aSmrg	      cat <<"EOF"
3577e169010aSmrgconst char * LIB_PATH_VALUE   = "";
3578e169010aSmrgEOF
35797914d74bSmrg	    fi
3580e169010aSmrg
3581e169010aSmrg	    if test -n "$dllsearchpath"; then
3582e169010aSmrg              func_to_host_pathlist "$dllsearchpath:"
3583e169010aSmrg	      cat <<EOF
3584e169010aSmrgconst char * EXE_PATH_VARNAME = "PATH";
3585e169010aSmrgconst char * EXE_PATH_VALUE   = "$func_to_host_pathlist_result";
3586e169010aSmrgEOF
35877914d74bSmrg	    else
3588e169010aSmrg	      cat <<"EOF"
3589e169010aSmrgconst char * EXE_PATH_VARNAME = "";
3590e169010aSmrgconst char * EXE_PATH_VALUE   = "";
3591e169010aSmrgEOF
35927914d74bSmrg	    fi
3593e169010aSmrg
3594e169010aSmrg	    if test "$fast_install" = yes; then
3595e169010aSmrg	      cat <<EOF
3596e169010aSmrgconst char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
3597e169010aSmrgEOF
35987914d74bSmrg	    else
3599e169010aSmrg	      cat <<EOF
3600e169010aSmrgconst char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
3601e169010aSmrgEOF
36027914d74bSmrg	    fi
36037914d74bSmrg
36047914d74bSmrg
3605e169010aSmrg	    cat <<"EOF"
36067914d74bSmrg
3607e169010aSmrg#define LTWRAPPER_OPTION_PREFIX         "--lt-"
36087914d74bSmrg
3609e169010aSmrgstatic const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
3610e169010aSmrgstatic const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX "dump-script";
3611e8ead290Smrgstatic const char *debug_opt            = LTWRAPPER_OPTION_PREFIX "debug";
36127914d74bSmrg
3613e169010aSmrgint
3614e169010aSmrgmain (int argc, char *argv[])
3615e169010aSmrg{
3616e169010aSmrg  char **newargz;
3617e169010aSmrg  int  newargc;
3618e169010aSmrg  char *tmp_pathspec;
3619e169010aSmrg  char *actual_cwrapper_path;
3620e169010aSmrg  char *actual_cwrapper_name;
3621e169010aSmrg  char *target_name;
3622e169010aSmrg  char *lt_argv_zero;
3623e169010aSmrg  intptr_t rval = 127;
36247914d74bSmrg
3625e169010aSmrg  int i;
36267914d74bSmrg
3627e169010aSmrg  program_name = (char *) xstrdup (base_name (argv[0]));
3628e8ead290Smrg  newargz = XMALLOC (char *, argc + 1);
36297914d74bSmrg
3630e8ead290Smrg  /* very simple arg parsing; don't want to rely on getopt
3631e8ead290Smrg   * also, copy all non cwrapper options to newargz, except
3632e8ead290Smrg   * argz[0], which is handled differently
3633e8ead290Smrg   */
3634e8ead290Smrg  newargc=0;
3635e169010aSmrg  for (i = 1; i < argc; i++)
3636e169010aSmrg    {
3637e169010aSmrg      if (strcmp (argv[i], dumpscript_opt) == 0)
3638e169010aSmrg	{
3639e169010aSmrgEOF
3640e169010aSmrg	    case "$host" in
3641e169010aSmrg	      *mingw* | *cygwin* )
3642e169010aSmrg		# make stdout use "unix" line endings
3643e169010aSmrg		echo "          setmode(1,_O_BINARY);"
3644e169010aSmrg		;;
3645e169010aSmrg	      esac
36467914d74bSmrg
3647e169010aSmrg	    cat <<"EOF"
3648e8ead290Smrg	  lt_dump_script (stdout);
3649e169010aSmrg	  return 0;
3650e169010aSmrg	}
3651e8ead290Smrg      if (strcmp (argv[i], debug_opt) == 0)
3652e8ead290Smrg	{
3653e8ead290Smrg          lt_debug = 1;
3654e8ead290Smrg          continue;
3655e8ead290Smrg	}
3656e8ead290Smrg      if (strcmp (argv[i], ltwrapper_option_prefix) == 0)
3657e8ead290Smrg        {
3658e8ead290Smrg          /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
3659e8ead290Smrg             namespace, but it is not one of the ones we know about and
3660e8ead290Smrg             have already dealt with, above (inluding dump-script), then
3661e8ead290Smrg             report an error. Otherwise, targets might begin to believe
3662e8ead290Smrg             they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
3663e8ead290Smrg             namespace. The first time any user complains about this, we'll
3664e8ead290Smrg             need to make LTWRAPPER_OPTION_PREFIX a configure-time option
3665e8ead290Smrg             or a configure.ac-settable value.
3666e8ead290Smrg           */
3667e8ead290Smrg          lt_fatal (__FILE__, __LINE__,
3668e8ead290Smrg		    "unrecognized %s option: '%s'",
3669e8ead290Smrg                    ltwrapper_option_prefix, argv[i]);
3670e8ead290Smrg        }
3671e8ead290Smrg      /* otherwise ... */
3672e8ead290Smrg      newargz[++newargc] = xstrdup (argv[i]);
3673e169010aSmrg    }
3674e8ead290Smrg  newargz[++newargc] = NULL;
3675e8ead290Smrg
3676e8ead290SmrgEOF
3677e8ead290Smrg	    cat <<EOF
3678e8ead290Smrg  /* The GNU banner must be the first non-error debug message */
3679e8ead290Smrg  lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n");
3680e8ead290SmrgEOF
3681e8ead290Smrg	    cat <<"EOF"
3682e8ead290Smrg  lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]);
3683e8ead290Smrg  lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name);
36847914d74bSmrg
3685e169010aSmrg  tmp_pathspec = find_executable (argv[0]);
3686e169010aSmrg  if (tmp_pathspec == NULL)
3687e8ead290Smrg    lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]);
3688e8ead290Smrg  lt_debugprintf (__FILE__, __LINE__,
3689e8ead290Smrg                  "(main) found exe (before symlink chase) at: %s\n",
3690e8ead290Smrg		  tmp_pathspec);
3691e169010aSmrg
3692e169010aSmrg  actual_cwrapper_path = chase_symlinks (tmp_pathspec);
3693e8ead290Smrg  lt_debugprintf (__FILE__, __LINE__,
3694e8ead290Smrg                  "(main) found exe (after symlink chase) at: %s\n",
3695e8ead290Smrg		  actual_cwrapper_path);
3696e169010aSmrg  XFREE (tmp_pathspec);
3697e169010aSmrg
3698e8ead290Smrg  actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path));
3699e169010aSmrg  strendzap (actual_cwrapper_path, actual_cwrapper_name);
3700e169010aSmrg
3701e169010aSmrg  /* wrapper name transforms */
3702e169010aSmrg  strendzap (actual_cwrapper_name, ".exe");
3703e169010aSmrg  tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
3704e169010aSmrg  XFREE (actual_cwrapper_name);
3705e169010aSmrg  actual_cwrapper_name = tmp_pathspec;
3706e169010aSmrg  tmp_pathspec = 0;
3707e169010aSmrg
3708e169010aSmrg  /* target_name transforms -- use actual target program name; might have lt- prefix */
3709e169010aSmrg  target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
3710e169010aSmrg  strendzap (target_name, ".exe");
3711e169010aSmrg  tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
3712e169010aSmrg  XFREE (target_name);
3713e169010aSmrg  target_name = tmp_pathspec;
3714e169010aSmrg  tmp_pathspec = 0;
3715e169010aSmrg
3716e8ead290Smrg  lt_debugprintf (__FILE__, __LINE__,
3717e8ead290Smrg		  "(main) libtool target name: %s\n",
3718e8ead290Smrg		  target_name);
3719e169010aSmrgEOF
37207914d74bSmrg
3721e169010aSmrg	    cat <<EOF
3722e169010aSmrg  newargz[0] =
3723e169010aSmrg    XMALLOC (char, (strlen (actual_cwrapper_path) +
3724e169010aSmrg		    strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
3725e169010aSmrg  strcpy (newargz[0], actual_cwrapper_path);
3726e169010aSmrg  strcat (newargz[0], "$objdir");
3727e169010aSmrg  strcat (newargz[0], "/");
3728e169010aSmrgEOF
37297914d74bSmrg
3730e169010aSmrg	    cat <<"EOF"
3731e169010aSmrg  /* stop here, and copy so we don't have to do this twice */
3732e169010aSmrg  tmp_pathspec = xstrdup (newargz[0]);
37337914d74bSmrg
3734e169010aSmrg  /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
3735e169010aSmrg  strcat (newargz[0], actual_cwrapper_name);
37367914d74bSmrg
3737e169010aSmrg  /* DO want the lt- prefix here if it exists, so use target_name */
3738e169010aSmrg  lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
3739e169010aSmrg  XFREE (tmp_pathspec);
3740e169010aSmrg  tmp_pathspec = NULL;
3741e169010aSmrgEOF
37427914d74bSmrg
3743e169010aSmrg	    case $host_os in
3744e169010aSmrg	      mingw*)
3745e169010aSmrg	    cat <<"EOF"
3746e169010aSmrg  {
3747e169010aSmrg    char* p;
3748e169010aSmrg    while ((p = strchr (newargz[0], '\\')) != NULL)
3749e169010aSmrg      {
3750e169010aSmrg	*p = '/';
3751e169010aSmrg      }
3752e169010aSmrg    while ((p = strchr (lt_argv_zero, '\\')) != NULL)
3753e169010aSmrg      {
3754e169010aSmrg	*p = '/';
3755e169010aSmrg      }
3756e169010aSmrg  }
3757e169010aSmrgEOF
3758e169010aSmrg	    ;;
3759e169010aSmrg	    esac
37607914d74bSmrg
3761e169010aSmrg	    cat <<"EOF"
3762e169010aSmrg  XFREE (target_name);
3763e169010aSmrg  XFREE (actual_cwrapper_path);
3764e169010aSmrg  XFREE (actual_cwrapper_name);
37657914d74bSmrg
3766e169010aSmrg  lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
3767e169010aSmrg  lt_setenv ("DUALCASE", "1");  /* for MSK sh */
3768e169010aSmrg  lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
3769e169010aSmrg  lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
37707914d74bSmrg
3771e8ead290Smrg  lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n",
3772e8ead290Smrg		  nonnull (lt_argv_zero));
3773e169010aSmrg  for (i = 0; i < newargc; i++)
3774e169010aSmrg    {
3775e8ead290Smrg      lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n",
3776e8ead290Smrg		      i, nonnull (newargz[i]));
3777e169010aSmrg    }
37787914d74bSmrg
3779e169010aSmrgEOF
37807914d74bSmrg
3781e169010aSmrg	    case $host_os in
3782e169010aSmrg	      mingw*)
3783e169010aSmrg		cat <<"EOF"
3784e169010aSmrg  /* execv doesn't actually work on mingw as expected on unix */
3785e8ead290Smrg  newargz = prepare_spawn (newargz);
3786e169010aSmrg  rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
3787e169010aSmrg  if (rval == -1)
3788e169010aSmrg    {
3789e169010aSmrg      /* failed to start process */
3790e8ead290Smrg      lt_debugprintf (__FILE__, __LINE__,
3791e8ead290Smrg		      "(main) failed to launch target \"%s\": %s\n",
3792e8ead290Smrg		      lt_argv_zero, nonnull (strerror (errno)));
3793e169010aSmrg      return 127;
3794e169010aSmrg    }
3795e169010aSmrg  return rval;
3796e169010aSmrgEOF
3797e169010aSmrg		;;
3798e169010aSmrg	      *)
3799e169010aSmrg		cat <<"EOF"
3800e169010aSmrg  execv (lt_argv_zero, newargz);
3801e169010aSmrg  return rval; /* =127, but avoids unused variable warning */
3802e169010aSmrgEOF
3803e169010aSmrg		;;
3804e169010aSmrg	    esac
38057914d74bSmrg
3806e169010aSmrg	    cat <<"EOF"
3807e169010aSmrg}
38087914d74bSmrg
3809e169010aSmrgvoid *
3810e169010aSmrgxmalloc (size_t num)
3811e169010aSmrg{
3812e169010aSmrg  void *p = (void *) malloc (num);
3813e169010aSmrg  if (!p)
3814e8ead290Smrg    lt_fatal (__FILE__, __LINE__, "memory exhausted");
38157914d74bSmrg
3816e169010aSmrg  return p;
3817e169010aSmrg}
38187914d74bSmrg
3819e169010aSmrgchar *
3820e169010aSmrgxstrdup (const char *string)
3821e169010aSmrg{
3822e169010aSmrg  return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
3823e169010aSmrg			  string) : NULL;
3824e169010aSmrg}
38257914d74bSmrg
3826e169010aSmrgconst char *
3827e169010aSmrgbase_name (const char *name)
3828e169010aSmrg{
3829e169010aSmrg  const char *base;
38307914d74bSmrg
3831e169010aSmrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
3832e169010aSmrg  /* Skip over the disk name in MSDOS pathnames. */
3833e169010aSmrg  if (isalpha ((unsigned char) name[0]) && name[1] == ':')
3834e169010aSmrg    name += 2;
3835e169010aSmrg#endif
38367914d74bSmrg
3837e169010aSmrg  for (base = name; *name; name++)
3838e169010aSmrg    if (IS_DIR_SEPARATOR (*name))
3839e169010aSmrg      base = name + 1;
3840e169010aSmrg  return base;
3841e169010aSmrg}
38427914d74bSmrg
3843e169010aSmrgint
3844e169010aSmrgcheck_executable (const char *path)
3845e169010aSmrg{
3846e169010aSmrg  struct stat st;
38477914d74bSmrg
3848e8ead290Smrg  lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n",
3849e8ead290Smrg                  nonempty (path));
3850e169010aSmrg  if ((!path) || (!*path))
3851e169010aSmrg    return 0;
38527914d74bSmrg
3853e169010aSmrg  if ((stat (path, &st) >= 0)
3854e169010aSmrg      && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
3855e169010aSmrg    return 1;
3856e169010aSmrg  else
3857e169010aSmrg    return 0;
3858e169010aSmrg}
38597914d74bSmrg
3860e169010aSmrgint
3861e169010aSmrgmake_executable (const char *path)
3862e169010aSmrg{
3863e169010aSmrg  int rval = 0;
3864e169010aSmrg  struct stat st;
38657914d74bSmrg
3866e8ead290Smrg  lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n",
3867e8ead290Smrg                  nonempty (path));
3868e169010aSmrg  if ((!path) || (!*path))
3869e169010aSmrg    return 0;
38707914d74bSmrg
3871e169010aSmrg  if (stat (path, &st) >= 0)
3872e169010aSmrg    {
3873e169010aSmrg      rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
3874e169010aSmrg    }
3875e169010aSmrg  return rval;
3876e169010aSmrg}
38777914d74bSmrg
3878e169010aSmrg/* Searches for the full path of the wrapper.  Returns
3879e169010aSmrg   newly allocated full path name if found, NULL otherwise
3880e169010aSmrg   Does not chase symlinks, even on platforms that support them.
3881e169010aSmrg*/
3882e169010aSmrgchar *
3883e169010aSmrgfind_executable (const char *wrapper)
3884e169010aSmrg{
3885e169010aSmrg  int has_slash = 0;
3886e169010aSmrg  const char *p;
3887e169010aSmrg  const char *p_next;
3888e169010aSmrg  /* static buffer for getcwd */
3889e169010aSmrg  char tmp[LT_PATHMAX + 1];
3890e169010aSmrg  int tmp_len;
3891e169010aSmrg  char *concat_name;
38927914d74bSmrg
3893e8ead290Smrg  lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n",
3894e8ead290Smrg                  nonempty (wrapper));
38957914d74bSmrg
3896e169010aSmrg  if ((wrapper == NULL) || (*wrapper == '\0'))
3897e169010aSmrg    return NULL;
38987914d74bSmrg
3899e169010aSmrg  /* Absolute path? */
3900e169010aSmrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
3901e169010aSmrg  if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
3902e169010aSmrg    {
3903e169010aSmrg      concat_name = xstrdup (wrapper);
3904e169010aSmrg      if (check_executable (concat_name))
3905e169010aSmrg	return concat_name;
3906e169010aSmrg      XFREE (concat_name);
3907e169010aSmrg    }
3908e169010aSmrg  else
3909e169010aSmrg    {
3910e169010aSmrg#endif
3911e169010aSmrg      if (IS_DIR_SEPARATOR (wrapper[0]))
3912e169010aSmrg	{
3913e169010aSmrg	  concat_name = xstrdup (wrapper);
3914e169010aSmrg	  if (check_executable (concat_name))
3915e169010aSmrg	    return concat_name;
3916e169010aSmrg	  XFREE (concat_name);
3917e169010aSmrg	}
3918e169010aSmrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
3919e169010aSmrg    }
3920e169010aSmrg#endif
39217914d74bSmrg
3922e169010aSmrg  for (p = wrapper; *p; p++)
3923e169010aSmrg    if (*p == '/')
3924e169010aSmrg      {
3925e169010aSmrg	has_slash = 1;
3926e169010aSmrg	break;
3927e169010aSmrg      }
3928e169010aSmrg  if (!has_slash)
3929e169010aSmrg    {
3930e169010aSmrg      /* no slashes; search PATH */
3931e169010aSmrg      const char *path = getenv ("PATH");
3932e169010aSmrg      if (path != NULL)
3933e169010aSmrg	{
3934e169010aSmrg	  for (p = path; *p; p = p_next)
3935e169010aSmrg	    {
3936e169010aSmrg	      const char *q;
3937e169010aSmrg	      size_t p_len;
3938e169010aSmrg	      for (q = p; *q; q++)
3939e169010aSmrg		if (IS_PATH_SEPARATOR (*q))
3940e169010aSmrg		  break;
3941e169010aSmrg	      p_len = q - p;
3942e169010aSmrg	      p_next = (*q == '\0' ? q : q + 1);
3943e169010aSmrg	      if (p_len == 0)
3944e169010aSmrg		{
3945e169010aSmrg		  /* empty path: current directory */
3946e169010aSmrg		  if (getcwd (tmp, LT_PATHMAX) == NULL)
3947e8ead290Smrg		    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
3948e8ead290Smrg                              nonnull (strerror (errno)));
3949e169010aSmrg		  tmp_len = strlen (tmp);
3950e169010aSmrg		  concat_name =
3951e169010aSmrg		    XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
3952e169010aSmrg		  memcpy (concat_name, tmp, tmp_len);
3953e169010aSmrg		  concat_name[tmp_len] = '/';
3954e169010aSmrg		  strcpy (concat_name + tmp_len + 1, wrapper);
3955e169010aSmrg		}
3956e169010aSmrg	      else
3957e169010aSmrg		{
3958e169010aSmrg		  concat_name =
3959e169010aSmrg		    XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
3960e169010aSmrg		  memcpy (concat_name, p, p_len);
3961e169010aSmrg		  concat_name[p_len] = '/';
3962e169010aSmrg		  strcpy (concat_name + p_len + 1, wrapper);
3963e169010aSmrg		}
3964e169010aSmrg	      if (check_executable (concat_name))
3965e169010aSmrg		return concat_name;
3966e169010aSmrg	      XFREE (concat_name);
3967e169010aSmrg	    }
3968e169010aSmrg	}
3969e169010aSmrg      /* not found in PATH; assume curdir */
3970e169010aSmrg    }
3971e169010aSmrg  /* Relative path | not found in path: prepend cwd */
3972e169010aSmrg  if (getcwd (tmp, LT_PATHMAX) == NULL)
3973e8ead290Smrg    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
3974e8ead290Smrg              nonnull (strerror (errno)));
3975e169010aSmrg  tmp_len = strlen (tmp);
3976e169010aSmrg  concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
3977e169010aSmrg  memcpy (concat_name, tmp, tmp_len);
3978e169010aSmrg  concat_name[tmp_len] = '/';
3979e169010aSmrg  strcpy (concat_name + tmp_len + 1, wrapper);
39807914d74bSmrg
3981e169010aSmrg  if (check_executable (concat_name))
3982e169010aSmrg    return concat_name;
3983e169010aSmrg  XFREE (concat_name);
3984e169010aSmrg  return NULL;
3985e169010aSmrg}
39867914d74bSmrg
3987e169010aSmrgchar *
3988e169010aSmrgchase_symlinks (const char *pathspec)
3989e169010aSmrg{
3990e169010aSmrg#ifndef S_ISLNK
3991e169010aSmrg  return xstrdup (pathspec);
3992e169010aSmrg#else
3993e169010aSmrg  char buf[LT_PATHMAX];
3994e169010aSmrg  struct stat s;
3995e169010aSmrg  char *tmp_pathspec = xstrdup (pathspec);
3996e169010aSmrg  char *p;
3997e169010aSmrg  int has_symlinks = 0;
3998e169010aSmrg  while (strlen (tmp_pathspec) && !has_symlinks)
3999e169010aSmrg    {
4000e8ead290Smrg      lt_debugprintf (__FILE__, __LINE__,
4001e8ead290Smrg		      "checking path component for symlinks: %s\n",
4002e8ead290Smrg		      tmp_pathspec);
4003e169010aSmrg      if (lstat (tmp_pathspec, &s) == 0)
4004e169010aSmrg	{
4005e169010aSmrg	  if (S_ISLNK (s.st_mode) != 0)
4006e169010aSmrg	    {
4007e169010aSmrg	      has_symlinks = 1;
4008e169010aSmrg	      break;
4009e169010aSmrg	    }
40107914d74bSmrg
4011e169010aSmrg	  /* search backwards for last DIR_SEPARATOR */
4012e169010aSmrg	  p = tmp_pathspec + strlen (tmp_pathspec) - 1;
4013e169010aSmrg	  while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
4014e169010aSmrg	    p--;
4015e169010aSmrg	  if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
4016e169010aSmrg	    {
4017e169010aSmrg	      /* no more DIR_SEPARATORS left */
4018e169010aSmrg	      break;
4019e169010aSmrg	    }
4020e169010aSmrg	  *p = '\0';
4021e169010aSmrg	}
4022e169010aSmrg      else
4023e169010aSmrg	{
4024e8ead290Smrg	  lt_fatal (__FILE__, __LINE__,
4025e8ead290Smrg		    "error accessing file \"%s\": %s",
4026e8ead290Smrg		    tmp_pathspec, nonnull (strerror (errno)));
4027e169010aSmrg	}
4028e169010aSmrg    }
4029e169010aSmrg  XFREE (tmp_pathspec);
40307914d74bSmrg
4031e169010aSmrg  if (!has_symlinks)
4032e169010aSmrg    {
4033e169010aSmrg      return xstrdup (pathspec);
4034e169010aSmrg    }
40357914d74bSmrg
4036e169010aSmrg  tmp_pathspec = realpath (pathspec, buf);
4037e169010aSmrg  if (tmp_pathspec == 0)
4038e169010aSmrg    {
4039e8ead290Smrg      lt_fatal (__FILE__, __LINE__,
4040e8ead290Smrg		"could not follow symlinks for %s", pathspec);
4041e169010aSmrg    }
4042e169010aSmrg  return xstrdup (tmp_pathspec);
4043e169010aSmrg#endif
4044e169010aSmrg}
40457914d74bSmrg
4046e169010aSmrgchar *
4047e169010aSmrgstrendzap (char *str, const char *pat)
4048e169010aSmrg{
4049e169010aSmrg  size_t len, patlen;
40507914d74bSmrg
4051e169010aSmrg  assert (str != NULL);
4052e169010aSmrg  assert (pat != NULL);
40537914d74bSmrg
4054e169010aSmrg  len = strlen (str);
4055e169010aSmrg  patlen = strlen (pat);
40567914d74bSmrg
4057e169010aSmrg  if (patlen <= len)
4058e169010aSmrg    {
4059e169010aSmrg      str += len - patlen;
4060e169010aSmrg      if (strcmp (str, pat) == 0)
4061e169010aSmrg	*str = '\0';
4062e169010aSmrg    }
4063e169010aSmrg  return str;
4064e169010aSmrg}
40657914d74bSmrg
4066e8ead290Smrgvoid
4067e8ead290Smrglt_debugprintf (const char *file, int line, const char *fmt, ...)
4068e8ead290Smrg{
4069e8ead290Smrg  va_list args;
4070e8ead290Smrg  if (lt_debug)
4071e8ead290Smrg    {
4072e8ead290Smrg      (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line);
4073e8ead290Smrg      va_start (args, fmt);
4074e8ead290Smrg      (void) vfprintf (stderr, fmt, args);
4075e8ead290Smrg      va_end (args);
4076e8ead290Smrg    }
4077e8ead290Smrg}
4078e8ead290Smrg
4079e169010aSmrgstatic void
4080e8ead290Smrglt_error_core (int exit_status, const char *file,
4081e8ead290Smrg	       int line, const char *mode,
4082e169010aSmrg	       const char *message, va_list ap)
4083e169010aSmrg{
4084e8ead290Smrg  fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode);
4085e169010aSmrg  vfprintf (stderr, message, ap);
4086e169010aSmrg  fprintf (stderr, ".\n");
40877914d74bSmrg
4088e169010aSmrg  if (exit_status >= 0)
4089e169010aSmrg    exit (exit_status);
4090e169010aSmrg}
40917914d74bSmrg
4092e169010aSmrgvoid
4093e8ead290Smrglt_fatal (const char *file, int line, const char *message, ...)
4094e169010aSmrg{
4095e169010aSmrg  va_list ap;
4096e169010aSmrg  va_start (ap, message);
4097e8ead290Smrg  lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap);
4098e169010aSmrg  va_end (ap);
4099e169010aSmrg}
41007914d74bSmrg
4101e8ead290Smrgstatic const char *
4102e8ead290Smrgnonnull (const char *s)
4103e8ead290Smrg{
4104e8ead290Smrg  return s ? s : "(null)";
4105e8ead290Smrg}
4106e8ead290Smrg
4107e8ead290Smrgstatic const char *
4108e8ead290Smrgnonempty (const char *s)
4109e8ead290Smrg{
4110e8ead290Smrg  return (s && !*s) ? "(empty)" : nonnull (s);
4111e8ead290Smrg}
4112e8ead290Smrg
4113e169010aSmrgvoid
4114e169010aSmrglt_setenv (const char *name, const char *value)
4115e169010aSmrg{
4116e8ead290Smrg  lt_debugprintf (__FILE__, __LINE__,
4117e8ead290Smrg		  "(lt_setenv) setting '%s' to '%s'\n",
4118e8ead290Smrg                  nonnull (name), nonnull (value));
4119e169010aSmrg  {
4120e169010aSmrg#ifdef HAVE_SETENV
4121e169010aSmrg    /* always make a copy, for consistency with !HAVE_SETENV */
4122e169010aSmrg    char *str = xstrdup (value);
4123e169010aSmrg    setenv (name, str, 1);
4124e169010aSmrg#else
4125e169010aSmrg    int len = strlen (name) + 1 + strlen (value) + 1;
4126e169010aSmrg    char *str = XMALLOC (char, len);
4127e169010aSmrg    sprintf (str, "%s=%s", name, value);
4128e169010aSmrg    if (putenv (str) != EXIT_SUCCESS)
4129e169010aSmrg      {
4130e169010aSmrg        XFREE (str);
4131e169010aSmrg      }
4132e169010aSmrg#endif
4133e169010aSmrg  }
4134e169010aSmrg}
41357914d74bSmrg
4136e169010aSmrgchar *
4137e169010aSmrglt_extend_str (const char *orig_value, const char *add, int to_end)
4138e169010aSmrg{
4139e169010aSmrg  char *new_value;
4140e169010aSmrg  if (orig_value && *orig_value)
4141e169010aSmrg    {
4142e169010aSmrg      int orig_value_len = strlen (orig_value);
4143e169010aSmrg      int add_len = strlen (add);
4144e169010aSmrg      new_value = XMALLOC (char, add_len + orig_value_len + 1);
4145e169010aSmrg      if (to_end)
4146e169010aSmrg        {
4147e169010aSmrg          strcpy (new_value, orig_value);
4148e169010aSmrg          strcpy (new_value + orig_value_len, add);
4149e169010aSmrg        }
4150e169010aSmrg      else
4151e169010aSmrg        {
4152e169010aSmrg          strcpy (new_value, add);
4153e169010aSmrg          strcpy (new_value + add_len, orig_value);
4154e169010aSmrg        }
4155e169010aSmrg    }
4156e169010aSmrg  else
4157e169010aSmrg    {
4158e169010aSmrg      new_value = xstrdup (add);
4159e169010aSmrg    }
4160e169010aSmrg  return new_value;
4161e169010aSmrg}
41627914d74bSmrg
4163e169010aSmrgvoid
4164e169010aSmrglt_update_exe_path (const char *name, const char *value)
4165e169010aSmrg{
4166e8ead290Smrg  lt_debugprintf (__FILE__, __LINE__,
4167e8ead290Smrg		  "(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
4168e8ead290Smrg                  nonnull (name), nonnull (value));
41697914d74bSmrg
4170e169010aSmrg  if (name && *name && value && *value)
4171e169010aSmrg    {
4172e169010aSmrg      char *new_value = lt_extend_str (getenv (name), value, 0);
4173e169010aSmrg      /* some systems can't cope with a ':'-terminated path #' */
4174e169010aSmrg      int len = strlen (new_value);
4175e169010aSmrg      while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
4176e169010aSmrg        {
4177e169010aSmrg          new_value[len-1] = '\0';
4178e169010aSmrg        }
4179e169010aSmrg      lt_setenv (name, new_value);
4180e169010aSmrg      XFREE (new_value);
4181e169010aSmrg    }
4182e169010aSmrg}
41837914d74bSmrg
4184e169010aSmrgvoid
4185e169010aSmrglt_update_lib_path (const char *name, const char *value)
4186e169010aSmrg{
4187e8ead290Smrg  lt_debugprintf (__FILE__, __LINE__,
4188e8ead290Smrg		  "(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
4189e8ead290Smrg                  nonnull (name), nonnull (value));
41907914d74bSmrg
4191e169010aSmrg  if (name && *name && value && *value)
4192e169010aSmrg    {
4193e169010aSmrg      char *new_value = lt_extend_str (getenv (name), value, 0);
4194e169010aSmrg      lt_setenv (name, new_value);
4195e169010aSmrg      XFREE (new_value);
4196e169010aSmrg    }
4197e169010aSmrg}
41987914d74bSmrg
4199e8ead290SmrgEOF
4200e8ead290Smrg	    case $host_os in
4201e8ead290Smrg	      mingw*)
4202e8ead290Smrg		cat <<"EOF"
4203e8ead290Smrg
4204e8ead290Smrg/* Prepares an argument vector before calling spawn().
4205e8ead290Smrg   Note that spawn() does not by itself call the command interpreter
4206e8ead290Smrg     (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") :
4207e8ead290Smrg      ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
4208e8ead290Smrg         GetVersionEx(&v);
4209e8ead290Smrg         v.dwPlatformId == VER_PLATFORM_WIN32_NT;
4210e8ead290Smrg      }) ? "cmd.exe" : "command.com").
4211e8ead290Smrg   Instead it simply concatenates the arguments, separated by ' ', and calls
4212e8ead290Smrg   CreateProcess().  We must quote the arguments since Win32 CreateProcess()
4213e8ead290Smrg   interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a
4214e8ead290Smrg   special way:
4215e8ead290Smrg   - Space and tab are interpreted as delimiters. They are not treated as
4216e8ead290Smrg     delimiters if they are surrounded by double quotes: "...".
4217e8ead290Smrg   - Unescaped double quotes are removed from the input. Their only effect is
4218e8ead290Smrg     that within double quotes, space and tab are treated like normal
4219e8ead290Smrg     characters.
4220e8ead290Smrg   - Backslashes not followed by double quotes are not special.
4221e8ead290Smrg   - But 2*n+1 backslashes followed by a double quote become
4222e8ead290Smrg     n backslashes followed by a double quote (n >= 0):
4223e8ead290Smrg       \" -> "
4224e8ead290Smrg       \\\" -> \"
4225e8ead290Smrg       \\\\\" -> \\"
4226e8ead290Smrg */
4227e8ead290Smrg#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
4228e8ead290Smrg#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
4229e8ead290Smrgchar **
4230e8ead290Smrgprepare_spawn (char **argv)
4231e8ead290Smrg{
4232e8ead290Smrg  size_t argc;
4233e8ead290Smrg  char **new_argv;
4234e8ead290Smrg  size_t i;
4235e8ead290Smrg
4236e8ead290Smrg  /* Count number of arguments.  */
4237e8ead290Smrg  for (argc = 0; argv[argc] != NULL; argc++)
4238e8ead290Smrg    ;
4239e8ead290Smrg
4240e8ead290Smrg  /* Allocate new argument vector.  */
4241e8ead290Smrg  new_argv = XMALLOC (char *, argc + 1);
4242e8ead290Smrg
4243e8ead290Smrg  /* Put quoted arguments into the new argument vector.  */
4244e8ead290Smrg  for (i = 0; i < argc; i++)
4245e8ead290Smrg    {
4246e8ead290Smrg      const char *string = argv[i];
4247e8ead290Smrg
4248e8ead290Smrg      if (string[0] == '\0')
4249e8ead290Smrg	new_argv[i] = xstrdup ("\"\"");
4250e8ead290Smrg      else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL)
4251e8ead290Smrg	{
4252e8ead290Smrg	  int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL);
4253e8ead290Smrg	  size_t length;
4254e8ead290Smrg	  unsigned int backslashes;
4255e8ead290Smrg	  const char *s;
4256e8ead290Smrg	  char *quoted_string;
4257e8ead290Smrg	  char *p;
4258e8ead290Smrg
4259e8ead290Smrg	  length = 0;
4260e8ead290Smrg	  backslashes = 0;
4261e8ead290Smrg	  if (quote_around)
4262e8ead290Smrg	    length++;
4263e8ead290Smrg	  for (s = string; *s != '\0'; s++)
4264e8ead290Smrg	    {
4265e8ead290Smrg	      char c = *s;
4266e8ead290Smrg	      if (c == '"')
4267e8ead290Smrg		length += backslashes + 1;
4268e8ead290Smrg	      length++;
4269e8ead290Smrg	      if (c == '\\')
4270e8ead290Smrg		backslashes++;
4271e8ead290Smrg	      else
4272e8ead290Smrg		backslashes = 0;
4273e8ead290Smrg	    }
4274e8ead290Smrg	  if (quote_around)
4275e8ead290Smrg	    length += backslashes + 1;
4276e8ead290Smrg
4277e8ead290Smrg	  quoted_string = XMALLOC (char, length + 1);
4278e8ead290Smrg
4279e8ead290Smrg	  p = quoted_string;
4280e8ead290Smrg	  backslashes = 0;
4281e8ead290Smrg	  if (quote_around)
4282e8ead290Smrg	    *p++ = '"';
4283e8ead290Smrg	  for (s = string; *s != '\0'; s++)
4284e8ead290Smrg	    {
4285e8ead290Smrg	      char c = *s;
4286e8ead290Smrg	      if (c == '"')
4287e8ead290Smrg		{
4288e8ead290Smrg		  unsigned int j;
4289e8ead290Smrg		  for (j = backslashes + 1; j > 0; j--)
4290e8ead290Smrg		    *p++ = '\\';
4291e8ead290Smrg		}
4292e8ead290Smrg	      *p++ = c;
4293e8ead290Smrg	      if (c == '\\')
4294e8ead290Smrg		backslashes++;
4295e8ead290Smrg	      else
4296e8ead290Smrg		backslashes = 0;
4297e8ead290Smrg	    }
4298e8ead290Smrg	  if (quote_around)
4299e8ead290Smrg	    {
4300e8ead290Smrg	      unsigned int j;
4301e8ead290Smrg	      for (j = backslashes; j > 0; j--)
4302e8ead290Smrg		*p++ = '\\';
4303e8ead290Smrg	      *p++ = '"';
4304e8ead290Smrg	    }
4305e8ead290Smrg	  *p = '\0';
4306e8ead290Smrg
4307e8ead290Smrg	  new_argv[i] = quoted_string;
4308e8ead290Smrg	}
4309e8ead290Smrg      else
4310e8ead290Smrg	new_argv[i] = (char *) string;
4311e8ead290Smrg    }
4312e8ead290Smrg  new_argv[argc] = NULL;
4313e8ead290Smrg
4314e8ead290Smrg  return new_argv;
4315e8ead290Smrg}
4316e8ead290SmrgEOF
4317e8ead290Smrg		;;
4318e8ead290Smrg	    esac
4319e8ead290Smrg
4320e8ead290Smrg            cat <<"EOF"
4321e8ead290Smrgvoid lt_dump_script (FILE* f)
4322e8ead290Smrg{
4323e8ead290SmrgEOF
4324e8ead290Smrg	    func_emit_wrapper yes |
4325e8ead290Smrg              $SED -e 's/\([\\"]\)/\\\1/g' \
4326e8ead290Smrg	           -e 's/^/  fputs ("/' -e 's/$/\\n", f);/'
43277914d74bSmrg
4328e8ead290Smrg            cat <<"EOF"
4329e8ead290Smrg}
4330e169010aSmrgEOF
4331e169010aSmrg}
4332e169010aSmrg# end: func_emit_cwrapperexe_src
43337914d74bSmrg
4334e8ead290Smrg# func_win32_import_lib_p ARG
4335e8ead290Smrg# True if ARG is an import lib, as indicated by $file_magic_cmd
4336e8ead290Smrgfunc_win32_import_lib_p ()
4337e8ead290Smrg{
4338e8ead290Smrg    $opt_debug
4339e8ead290Smrg    case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in
4340e8ead290Smrg    *import*) : ;;
4341e8ead290Smrg    *) false ;;
4342e8ead290Smrg    esac
4343e8ead290Smrg}
4344e8ead290Smrg
4345e169010aSmrg# func_mode_link arg...
4346e169010aSmrgfunc_mode_link ()
4347e169010aSmrg{
4348e169010aSmrg    $opt_debug
4349e169010aSmrg    case $host in
4350e169010aSmrg    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
4351e169010aSmrg      # It is impossible to link a dll without this setting, and
4352e169010aSmrg      # we shouldn't force the makefile maintainer to figure out
4353e169010aSmrg      # which system we are compiling for in order to pass an extra
4354e169010aSmrg      # flag for every libtool invocation.
4355e169010aSmrg      # allow_undefined=no
43567914d74bSmrg
4357e169010aSmrg      # FIXME: Unfortunately, there are problems with the above when trying
4358e169010aSmrg      # to make a dll which has undefined symbols, in which case not
4359e169010aSmrg      # even a static library is built.  For now, we need to specify
4360e169010aSmrg      # -no-undefined on the libtool link line when we can be certain
4361e169010aSmrg      # that all symbols are satisfied, otherwise we get a static library.
4362e169010aSmrg      allow_undefined=yes
4363e169010aSmrg      ;;
4364e169010aSmrg    *)
4365e169010aSmrg      allow_undefined=yes
4366e169010aSmrg      ;;
4367e169010aSmrg    esac
4368e169010aSmrg    libtool_args=$nonopt
4369e169010aSmrg    base_compile="$nonopt $@"
4370e169010aSmrg    compile_command=$nonopt
4371e169010aSmrg    finalize_command=$nonopt
43727914d74bSmrg
4373e169010aSmrg    compile_rpath=
4374e169010aSmrg    finalize_rpath=
4375e169010aSmrg    compile_shlibpath=
4376e169010aSmrg    finalize_shlibpath=
4377e169010aSmrg    convenience=
4378e169010aSmrg    old_convenience=
4379e169010aSmrg    deplibs=
4380e169010aSmrg    old_deplibs=
4381e169010aSmrg    compiler_flags=
4382e169010aSmrg    linker_flags=
4383e169010aSmrg    dllsearchpath=
4384e169010aSmrg    lib_search_path=`pwd`
4385e169010aSmrg    inst_prefix_dir=
4386e169010aSmrg    new_inherited_linker_flags=
43877914d74bSmrg
4388e169010aSmrg    avoid_version=no
4389e8ead290Smrg    bindir=
4390e169010aSmrg    dlfiles=
4391e169010aSmrg    dlprefiles=
4392e169010aSmrg    dlself=no
4393e169010aSmrg    export_dynamic=no
4394e169010aSmrg    export_symbols=
4395e169010aSmrg    export_symbols_regex=
4396e169010aSmrg    generated=
4397e169010aSmrg    libobjs=
4398e169010aSmrg    ltlibs=
4399e169010aSmrg    module=no
4400e169010aSmrg    no_install=no
4401e169010aSmrg    objs=
4402e169010aSmrg    non_pic_objects=
4403e169010aSmrg    precious_files_regex=
4404e169010aSmrg    prefer_static_libs=no
4405e169010aSmrg    preload=no
4406e169010aSmrg    prev=
4407e169010aSmrg    prevarg=
4408e169010aSmrg    release=
4409e169010aSmrg    rpath=
4410e169010aSmrg    xrpath=
4411e169010aSmrg    perm_rpath=
4412e169010aSmrg    temp_rpath=
4413e169010aSmrg    thread_safe=no
4414e169010aSmrg    vinfo=
4415e169010aSmrg    vinfo_number=no
4416e169010aSmrg    weak_libs=
4417e169010aSmrg    single_module="${wl}-single_module"
4418e169010aSmrg    func_infer_tag $base_compile
44197914d74bSmrg
4420e169010aSmrg    # We need to know -static, to get the right output filenames.
4421e169010aSmrg    for arg
4422e169010aSmrg    do
4423e169010aSmrg      case $arg in
4424e169010aSmrg      -shared)
4425e169010aSmrg	test "$build_libtool_libs" != yes && \
4426e169010aSmrg	  func_fatal_configuration "can not build a shared library"
4427e169010aSmrg	build_old_libs=no
4428e169010aSmrg	break
4429e169010aSmrg	;;
4430e169010aSmrg      -all-static | -static | -static-libtool-libs)
4431e169010aSmrg	case $arg in
4432e169010aSmrg	-all-static)
4433e169010aSmrg	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
4434e169010aSmrg	    func_warning "complete static linking is impossible in this configuration"
44357914d74bSmrg	  fi
4436e169010aSmrg	  if test -n "$link_static_flag"; then
4437e169010aSmrg	    dlopen_self=$dlopen_self_static
44387914d74bSmrg	  fi
4439e169010aSmrg	  prefer_static_libs=yes
44407914d74bSmrg	  ;;
4441e169010aSmrg	-static)
4442e169010aSmrg	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
4443e169010aSmrg	    dlopen_self=$dlopen_self_static
4444e169010aSmrg	  fi
4445e169010aSmrg	  prefer_static_libs=built
4446e169010aSmrg	  ;;
4447e169010aSmrg	-static-libtool-libs)
4448e169010aSmrg	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
4449e169010aSmrg	    dlopen_self=$dlopen_self_static
4450e169010aSmrg	  fi
4451e169010aSmrg	  prefer_static_libs=yes
44527914d74bSmrg	  ;;
44537914d74bSmrg	esac
4454e169010aSmrg	build_libtool_libs=no
4455e169010aSmrg	build_old_libs=yes
4456e169010aSmrg	break
4457e169010aSmrg	;;
4458e169010aSmrg      esac
4459e169010aSmrg    done
44607914d74bSmrg
4461e169010aSmrg    # See if our shared archives depend on static archives.
4462e169010aSmrg    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
44637914d74bSmrg
4464e169010aSmrg    # Go through the arguments, transforming them on the way.
4465e169010aSmrg    while test "$#" -gt 0; do
4466e169010aSmrg      arg="$1"
4467e169010aSmrg      shift
4468e169010aSmrg      func_quote_for_eval "$arg"
4469e169010aSmrg      qarg=$func_quote_for_eval_unquoted_result
4470e169010aSmrg      func_append libtool_args " $func_quote_for_eval_result"
44717914d74bSmrg
4472e169010aSmrg      # If the previous option needs an argument, assign it.
4473e169010aSmrg      if test -n "$prev"; then
4474e169010aSmrg	case $prev in
4475e169010aSmrg	output)
4476e169010aSmrg	  func_append compile_command " @OUTPUT@"
4477e169010aSmrg	  func_append finalize_command " @OUTPUT@"
4478e169010aSmrg	  ;;
4479e169010aSmrg	esac
44807914d74bSmrg
4481e169010aSmrg	case $prev in
4482e8ead290Smrg	bindir)
4483e8ead290Smrg	  bindir="$arg"
4484e8ead290Smrg	  prev=
4485e8ead290Smrg	  continue
4486e8ead290Smrg	  ;;
4487e169010aSmrg	dlfiles|dlprefiles)
4488e169010aSmrg	  if test "$preload" = no; then
4489e169010aSmrg	    # Add the symbol object into the linking commands.
4490e169010aSmrg	    func_append compile_command " @SYMFILE@"
4491e169010aSmrg	    func_append finalize_command " @SYMFILE@"
4492e169010aSmrg	    preload=yes
4493e169010aSmrg	  fi
4494e169010aSmrg	  case $arg in
4495e169010aSmrg	  *.la | *.lo) ;;  # We handle these cases below.
4496e169010aSmrg	  force)
4497e169010aSmrg	    if test "$dlself" = no; then
4498e169010aSmrg	      dlself=needless
4499e169010aSmrg	      export_dynamic=yes
4500e169010aSmrg	    fi
4501e169010aSmrg	    prev=
4502e169010aSmrg	    continue
4503e169010aSmrg	    ;;
4504e169010aSmrg	  self)
4505e169010aSmrg	    if test "$prev" = dlprefiles; then
4506e169010aSmrg	      dlself=yes
4507e169010aSmrg	    elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
4508e169010aSmrg	      dlself=yes
4509e169010aSmrg	    else
4510e169010aSmrg	      dlself=needless
4511e169010aSmrg	      export_dynamic=yes
4512e169010aSmrg	    fi
4513e169010aSmrg	    prev=
4514e169010aSmrg	    continue
45157914d74bSmrg	    ;;
45167914d74bSmrg	  *)
4517e169010aSmrg	    if test "$prev" = dlfiles; then
4518e169010aSmrg	      dlfiles="$dlfiles $arg"
4519e169010aSmrg	    else
4520e169010aSmrg	      dlprefiles="$dlprefiles $arg"
4521e169010aSmrg	    fi
4522e169010aSmrg	    prev=
4523e169010aSmrg	    continue
45247914d74bSmrg	    ;;
45257914d74bSmrg	  esac
4526e169010aSmrg	  ;;
4527e169010aSmrg	expsyms)
4528e169010aSmrg	  export_symbols="$arg"
4529e169010aSmrg	  test -f "$arg" \
4530e169010aSmrg	    || func_fatal_error "symbol file \`$arg' does not exist"
4531e169010aSmrg	  prev=
4532e169010aSmrg	  continue
4533e169010aSmrg	  ;;
4534e169010aSmrg	expsyms_regex)
4535e169010aSmrg	  export_symbols_regex="$arg"
4536e169010aSmrg	  prev=
4537e169010aSmrg	  continue
4538e169010aSmrg	  ;;
4539e169010aSmrg	framework)
4540e169010aSmrg	  case $host in
4541e169010aSmrg	    *-*-darwin*)
4542e169010aSmrg	      case "$deplibs " in
4543e169010aSmrg		*" $qarg.ltframework "*) ;;
4544e169010aSmrg		*) deplibs="$deplibs $qarg.ltframework" # this is fixed later
4545e169010aSmrg		   ;;
4546e169010aSmrg	      esac
4547e169010aSmrg	      ;;
4548e169010aSmrg	  esac
4549e169010aSmrg	  prev=
4550e169010aSmrg	  continue
4551e169010aSmrg	  ;;
4552e169010aSmrg	inst_prefix)
4553e169010aSmrg	  inst_prefix_dir="$arg"
4554e169010aSmrg	  prev=
4555e169010aSmrg	  continue
4556e169010aSmrg	  ;;
4557e169010aSmrg	objectlist)
4558e169010aSmrg	  if test -f "$arg"; then
4559e169010aSmrg	    save_arg=$arg
4560e169010aSmrg	    moreargs=
4561e169010aSmrg	    for fil in `cat "$save_arg"`
4562e169010aSmrg	    do
4563e169010aSmrg#	      moreargs="$moreargs $fil"
4564e169010aSmrg	      arg=$fil
4565e169010aSmrg	      # A libtool-controlled object.
45667914d74bSmrg
4567e169010aSmrg	      # Check to see that this really is a libtool object.
4568e169010aSmrg	      if func_lalib_unsafe_p "$arg"; then
4569e169010aSmrg		pic_object=
4570e169010aSmrg		non_pic_object=
45717914d74bSmrg
4572e169010aSmrg		# Read the .lo file
4573e169010aSmrg		func_source "$arg"
45747914d74bSmrg
4575e169010aSmrg		if test -z "$pic_object" ||
4576e169010aSmrg		   test -z "$non_pic_object" ||
4577e169010aSmrg		   test "$pic_object" = none &&
4578e169010aSmrg		   test "$non_pic_object" = none; then
4579e169010aSmrg		  func_fatal_error "cannot find name of object for \`$arg'"
4580e169010aSmrg		fi
45817914d74bSmrg
4582e169010aSmrg		# Extract subdirectory from the argument.
4583e169010aSmrg		func_dirname "$arg" "/" ""
4584e169010aSmrg		xdir="$func_dirname_result"
45857914d74bSmrg
4586e169010aSmrg		if test "$pic_object" != none; then
4587e169010aSmrg		  # Prepend the subdirectory the object is found in.
4588e169010aSmrg		  pic_object="$xdir$pic_object"
45897914d74bSmrg
4590e169010aSmrg		  if test "$prev" = dlfiles; then
4591e169010aSmrg		    if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
4592e169010aSmrg		      dlfiles="$dlfiles $pic_object"
4593e169010aSmrg		      prev=
4594e169010aSmrg		      continue
4595e169010aSmrg		    else
4596e169010aSmrg		      # If libtool objects are unsupported, then we need to preload.
4597e169010aSmrg		      prev=dlprefiles
4598e169010aSmrg		    fi
4599e169010aSmrg		  fi
46007914d74bSmrg
4601e169010aSmrg		  # CHECK ME:  I think I busted this.  -Ossama
4602e169010aSmrg		  if test "$prev" = dlprefiles; then
4603e169010aSmrg		    # Preload the old-style object.
4604e169010aSmrg		    dlprefiles="$dlprefiles $pic_object"
4605e169010aSmrg		    prev=
4606e169010aSmrg		  fi
46077914d74bSmrg
4608e169010aSmrg		  # A PIC object.
4609e169010aSmrg		  func_append libobjs " $pic_object"
4610e169010aSmrg		  arg="$pic_object"
4611e169010aSmrg		fi
46127914d74bSmrg
4613e169010aSmrg		# Non-PIC object.
4614e169010aSmrg		if test "$non_pic_object" != none; then
4615e169010aSmrg		  # Prepend the subdirectory the object is found in.
4616e169010aSmrg		  non_pic_object="$xdir$non_pic_object"
46177914d74bSmrg
4618e169010aSmrg		  # A standard non-PIC object
4619e169010aSmrg		  func_append non_pic_objects " $non_pic_object"
4620e169010aSmrg		  if test -z "$pic_object" || test "$pic_object" = none ; then
4621e169010aSmrg		    arg="$non_pic_object"
4622e169010aSmrg		  fi
4623e169010aSmrg		else
4624e169010aSmrg		  # If the PIC object exists, use it instead.
4625e169010aSmrg		  # $xdir was prepended to $pic_object above.
4626e169010aSmrg		  non_pic_object="$pic_object"
4627e169010aSmrg		  func_append non_pic_objects " $non_pic_object"
4628e169010aSmrg		fi
4629e169010aSmrg	      else
4630e169010aSmrg		# Only an error if not doing a dry-run.
4631e169010aSmrg		if $opt_dry_run; then
4632e169010aSmrg		  # Extract subdirectory from the argument.
4633e169010aSmrg		  func_dirname "$arg" "/" ""
4634e169010aSmrg		  xdir="$func_dirname_result"
4635e169010aSmrg
4636e169010aSmrg		  func_lo2o "$arg"
4637e169010aSmrg		  pic_object=$xdir$objdir/$func_lo2o_result
4638e169010aSmrg		  non_pic_object=$xdir$func_lo2o_result
4639e169010aSmrg		  func_append libobjs " $pic_object"
4640e169010aSmrg		  func_append non_pic_objects " $non_pic_object"
4641e169010aSmrg	        else
4642e169010aSmrg		  func_fatal_error "\`$arg' is not a valid libtool object"
4643e169010aSmrg		fi
4644e169010aSmrg	      fi
4645e169010aSmrg	    done
4646e169010aSmrg	  else
4647e169010aSmrg	    func_fatal_error "link input file \`$arg' does not exist"
4648e169010aSmrg	  fi
4649e169010aSmrg	  arg=$save_arg
4650e169010aSmrg	  prev=
4651e169010aSmrg	  continue
4652e169010aSmrg	  ;;
4653e169010aSmrg	precious_regex)
4654e169010aSmrg	  precious_files_regex="$arg"
4655e169010aSmrg	  prev=
4656e169010aSmrg	  continue
4657e169010aSmrg	  ;;
4658e169010aSmrg	release)
4659e169010aSmrg	  release="-$arg"
4660e169010aSmrg	  prev=
4661e169010aSmrg	  continue
4662e169010aSmrg	  ;;
4663e169010aSmrg	rpath | xrpath)
4664e169010aSmrg	  # We need an absolute path.
4665e169010aSmrg	  case $arg in
4666e169010aSmrg	  [\\/]* | [A-Za-z]:[\\/]*) ;;
4667e169010aSmrg	  *)
4668e169010aSmrg	    func_fatal_error "only absolute run-paths are allowed"
4669e169010aSmrg	    ;;
4670e169010aSmrg	  esac
4671e169010aSmrg	  if test "$prev" = rpath; then
4672e169010aSmrg	    case "$rpath " in
4673e169010aSmrg	    *" $arg "*) ;;
4674e169010aSmrg	    *) rpath="$rpath $arg" ;;
4675e169010aSmrg	    esac
4676e169010aSmrg	  else
4677e169010aSmrg	    case "$xrpath " in
4678e169010aSmrg	    *" $arg "*) ;;
4679e169010aSmrg	    *) xrpath="$xrpath $arg" ;;
4680e169010aSmrg	    esac
4681e169010aSmrg	  fi
4682e169010aSmrg	  prev=
4683e169010aSmrg	  continue
4684e169010aSmrg	  ;;
4685e169010aSmrg	shrext)
4686e169010aSmrg	  shrext_cmds="$arg"
4687e169010aSmrg	  prev=
4688e169010aSmrg	  continue
4689e169010aSmrg	  ;;
4690e169010aSmrg	weak)
4691e169010aSmrg	  weak_libs="$weak_libs $arg"
4692e169010aSmrg	  prev=
4693e169010aSmrg	  continue
4694e169010aSmrg	  ;;
4695e169010aSmrg	xcclinker)
4696e169010aSmrg	  linker_flags="$linker_flags $qarg"
4697e169010aSmrg	  compiler_flags="$compiler_flags $qarg"
4698e169010aSmrg	  prev=
4699e169010aSmrg	  func_append compile_command " $qarg"
4700e169010aSmrg	  func_append finalize_command " $qarg"
4701e169010aSmrg	  continue
4702e169010aSmrg	  ;;
4703e169010aSmrg	xcompiler)
4704e169010aSmrg	  compiler_flags="$compiler_flags $qarg"
4705e169010aSmrg	  prev=
4706e169010aSmrg	  func_append compile_command " $qarg"
4707e169010aSmrg	  func_append finalize_command " $qarg"
4708e169010aSmrg	  continue
4709e169010aSmrg	  ;;
4710e169010aSmrg	xlinker)
4711e169010aSmrg	  linker_flags="$linker_flags $qarg"
4712e169010aSmrg	  compiler_flags="$compiler_flags $wl$qarg"
4713e169010aSmrg	  prev=
4714e169010aSmrg	  func_append compile_command " $wl$qarg"
4715e169010aSmrg	  func_append finalize_command " $wl$qarg"
4716e169010aSmrg	  continue
4717e169010aSmrg	  ;;
4718e169010aSmrg	*)
4719e169010aSmrg	  eval "$prev=\"\$arg\""
4720e169010aSmrg	  prev=
4721e169010aSmrg	  continue
4722e169010aSmrg	  ;;
47237914d74bSmrg	esac
4724e169010aSmrg      fi # test -n "$prev"
47257914d74bSmrg
4726e169010aSmrg      prevarg="$arg"
47277914d74bSmrg
4728e169010aSmrg      case $arg in
4729e169010aSmrg      -all-static)
4730e169010aSmrg	if test -n "$link_static_flag"; then
4731e169010aSmrg	  # See comment for -static flag below, for more details.
4732e169010aSmrg	  func_append compile_command " $link_static_flag"
4733e169010aSmrg	  func_append finalize_command " $link_static_flag"
4734e169010aSmrg	fi
4735e169010aSmrg	continue
4736e169010aSmrg	;;
47377914d74bSmrg
4738e169010aSmrg      -allow-undefined)
4739e169010aSmrg	# FIXME: remove this flag sometime in the future.
4740e169010aSmrg	func_fatal_error "\`-allow-undefined' must not be used because it is the default"
4741e169010aSmrg	;;
47427914d74bSmrg
4743e169010aSmrg      -avoid-version)
4744e169010aSmrg	avoid_version=yes
4745e169010aSmrg	continue
4746e169010aSmrg	;;
47477914d74bSmrg
4748e8ead290Smrg      -bindir)
4749e8ead290Smrg	prev=bindir
4750e8ead290Smrg	continue
4751e8ead290Smrg	;;
4752e8ead290Smrg
4753e169010aSmrg      -dlopen)
4754e169010aSmrg	prev=dlfiles
4755e169010aSmrg	continue
4756e169010aSmrg	;;
47577914d74bSmrg
4758e169010aSmrg      -dlpreopen)
4759e169010aSmrg	prev=dlprefiles
4760e169010aSmrg	continue
4761e169010aSmrg	;;
47627914d74bSmrg
4763e169010aSmrg      -export-dynamic)
4764e169010aSmrg	export_dynamic=yes
4765e169010aSmrg	continue
4766e169010aSmrg	;;
47677914d74bSmrg
4768e169010aSmrg      -export-symbols | -export-symbols-regex)
4769e169010aSmrg	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
4770e169010aSmrg	  func_fatal_error "more than one -exported-symbols argument is not allowed"
4771e169010aSmrg	fi
4772e169010aSmrg	if test "X$arg" = "X-export-symbols"; then
4773e169010aSmrg	  prev=expsyms
4774e169010aSmrg	else
4775e169010aSmrg	  prev=expsyms_regex
4776e169010aSmrg	fi
4777e169010aSmrg	continue
4778e169010aSmrg	;;
47797914d74bSmrg
4780e169010aSmrg      -framework)
4781e169010aSmrg	prev=framework
4782e169010aSmrg	continue
4783e169010aSmrg	;;
47847914d74bSmrg
4785e169010aSmrg      -inst-prefix-dir)
4786e169010aSmrg	prev=inst_prefix
4787e169010aSmrg	continue
4788e169010aSmrg	;;
47897914d74bSmrg
4790e169010aSmrg      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
4791e169010aSmrg      # so, if we see these flags be careful not to treat them like -L
4792e169010aSmrg      -L[A-Z][A-Z]*:*)
4793e169010aSmrg	case $with_gcc/$host in
4794e169010aSmrg	no/*-*-irix* | /*-*-irix*)
4795e169010aSmrg	  func_append compile_command " $arg"
4796e169010aSmrg	  func_append finalize_command " $arg"
4797e169010aSmrg	  ;;
4798e169010aSmrg	esac
4799e169010aSmrg	continue
4800e169010aSmrg	;;
48017914d74bSmrg
4802e169010aSmrg      -L*)
4803e169010aSmrg	func_stripname '-L' '' "$arg"
4804e169010aSmrg	dir=$func_stripname_result
4805e169010aSmrg	if test -z "$dir"; then
4806e169010aSmrg	  if test "$#" -gt 0; then
4807e169010aSmrg	    func_fatal_error "require no space between \`-L' and \`$1'"
4808e169010aSmrg	  else
4809e169010aSmrg	    func_fatal_error "need path for \`-L' option"
4810e169010aSmrg	  fi
4811e169010aSmrg	fi
4812e169010aSmrg	# We need an absolute path.
4813e169010aSmrg	case $dir in
4814e169010aSmrg	[\\/]* | [A-Za-z]:[\\/]*) ;;
4815e169010aSmrg	*)
4816e169010aSmrg	  absdir=`cd "$dir" && pwd`
4817e169010aSmrg	  test -z "$absdir" && \
4818e169010aSmrg	    func_fatal_error "cannot determine absolute directory name of \`$dir'"
4819e169010aSmrg	  dir="$absdir"
4820e169010aSmrg	  ;;
4821e169010aSmrg	esac
4822e169010aSmrg	case "$deplibs " in
4823e169010aSmrg	*" -L$dir "*) ;;
4824e169010aSmrg	*)
4825e169010aSmrg	  deplibs="$deplibs -L$dir"
4826e169010aSmrg	  lib_search_path="$lib_search_path $dir"
4827e169010aSmrg	  ;;
4828e169010aSmrg	esac
4829e169010aSmrg	case $host in
4830e169010aSmrg	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
4831e8ead290Smrg	  testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'`
4832e169010aSmrg	  case :$dllsearchpath: in
4833e169010aSmrg	  *":$dir:"*) ;;
4834e169010aSmrg	  ::) dllsearchpath=$dir;;
4835e169010aSmrg	  *) dllsearchpath="$dllsearchpath:$dir";;
4836e169010aSmrg	  esac
4837e169010aSmrg	  case :$dllsearchpath: in
4838e169010aSmrg	  *":$testbindir:"*) ;;
4839e169010aSmrg	  ::) dllsearchpath=$testbindir;;
4840e169010aSmrg	  *) dllsearchpath="$dllsearchpath:$testbindir";;
4841e169010aSmrg	  esac
4842e169010aSmrg	  ;;
4843e169010aSmrg	esac
4844e169010aSmrg	continue
4845e169010aSmrg	;;
48467914d74bSmrg
4847e169010aSmrg      -l*)
4848e169010aSmrg	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
4849e169010aSmrg	  case $host in
4850e8ead290Smrg	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*)
4851e169010aSmrg	    # These systems don't actually have a C or math library (as such)
4852e169010aSmrg	    continue
4853e169010aSmrg	    ;;
4854e169010aSmrg	  *-*-os2*)
4855e169010aSmrg	    # These systems don't actually have a C library (as such)
4856e169010aSmrg	    test "X$arg" = "X-lc" && continue
4857e169010aSmrg	    ;;
4858e169010aSmrg	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
4859e169010aSmrg	    # Do not include libc due to us having libc/libc_r.
4860e169010aSmrg	    test "X$arg" = "X-lc" && continue
4861e169010aSmrg	    ;;
4862e169010aSmrg	  *-*-rhapsody* | *-*-darwin1.[012])
4863e169010aSmrg	    # Rhapsody C and math libraries are in the System framework
4864e169010aSmrg	    deplibs="$deplibs System.ltframework"
4865e169010aSmrg	    continue
4866e169010aSmrg	    ;;
4867e169010aSmrg	  *-*-sco3.2v5* | *-*-sco5v6*)
4868e169010aSmrg	    # Causes problems with __ctype
4869e169010aSmrg	    test "X$arg" = "X-lc" && continue
4870e169010aSmrg	    ;;
4871e169010aSmrg	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
4872e169010aSmrg	    # Compiler inserts libc in the correct place for threads to work
4873e169010aSmrg	    test "X$arg" = "X-lc" && continue
4874e169010aSmrg	    ;;
4875e169010aSmrg	  esac
4876e169010aSmrg	elif test "X$arg" = "X-lc_r"; then
4877e169010aSmrg	 case $host in
4878e169010aSmrg	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
4879e169010aSmrg	   # Do not include libc_r directly, use -pthread flag.
4880e169010aSmrg	   continue
4881e169010aSmrg	   ;;
4882e169010aSmrg	 esac
4883e169010aSmrg	fi
4884e169010aSmrg	deplibs="$deplibs $arg"
4885e169010aSmrg	continue
4886e169010aSmrg	;;
48877914d74bSmrg
4888e169010aSmrg      -module)
4889e169010aSmrg	module=yes
4890e169010aSmrg	continue
4891e169010aSmrg	;;
48927914d74bSmrg
4893e169010aSmrg      # Tru64 UNIX uses -model [arg] to determine the layout of C++
4894e169010aSmrg      # classes, name mangling, and exception handling.
4895e169010aSmrg      # Darwin uses the -arch flag to determine output architecture.
4896e169010aSmrg      -model|-arch|-isysroot)
4897e169010aSmrg	compiler_flags="$compiler_flags $arg"
4898e169010aSmrg	func_append compile_command " $arg"
4899e169010aSmrg	func_append finalize_command " $arg"
4900e169010aSmrg	prev=xcompiler
4901e169010aSmrg	continue
4902e169010aSmrg	;;
49037914d74bSmrg
4904e169010aSmrg      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
4905e169010aSmrg	compiler_flags="$compiler_flags $arg"
4906e169010aSmrg	func_append compile_command " $arg"
4907e169010aSmrg	func_append finalize_command " $arg"
4908e169010aSmrg	case "$new_inherited_linker_flags " in
4909e169010aSmrg	    *" $arg "*) ;;
4910e169010aSmrg	    * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;;
4911e169010aSmrg	esac
4912e169010aSmrg	continue
4913e169010aSmrg	;;
49147914d74bSmrg
4915e169010aSmrg      -multi_module)
4916e169010aSmrg	single_module="${wl}-multi_module"
4917e169010aSmrg	continue
4918e169010aSmrg	;;
49197914d74bSmrg
4920e169010aSmrg      -no-fast-install)
4921e169010aSmrg	fast_install=no
4922e169010aSmrg	continue
4923e169010aSmrg	;;
49247914d74bSmrg
4925e169010aSmrg      -no-install)
4926e169010aSmrg	case $host in
4927e169010aSmrg	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
4928e169010aSmrg	  # The PATH hackery in wrapper scripts is required on Windows
4929e169010aSmrg	  # and Darwin in order for the loader to find any dlls it needs.
4930e169010aSmrg	  func_warning "\`-no-install' is ignored for $host"
4931e169010aSmrg	  func_warning "assuming \`-no-fast-install' instead"
4932e169010aSmrg	  fast_install=no
4933e169010aSmrg	  ;;
4934e169010aSmrg	*) no_install=yes ;;
4935e169010aSmrg	esac
4936e169010aSmrg	continue
4937e169010aSmrg	;;
49387914d74bSmrg
4939e169010aSmrg      -no-undefined)
4940e169010aSmrg	allow_undefined=no
4941e169010aSmrg	continue
4942e169010aSmrg	;;
49437914d74bSmrg
4944e169010aSmrg      -objectlist)
4945e169010aSmrg	prev=objectlist
4946e169010aSmrg	continue
4947e169010aSmrg	;;
49487914d74bSmrg
4949e169010aSmrg      -o) prev=output ;;
49507914d74bSmrg
4951e169010aSmrg      -precious-files-regex)
4952e169010aSmrg	prev=precious_regex
4953e169010aSmrg	continue
4954e169010aSmrg	;;
49557914d74bSmrg
4956e169010aSmrg      -release)
4957e169010aSmrg	prev=release
4958e169010aSmrg	continue
4959e169010aSmrg	;;
49607914d74bSmrg
4961e169010aSmrg      -rpath)
4962e169010aSmrg	prev=rpath
4963e169010aSmrg	continue
4964e169010aSmrg	;;
49657914d74bSmrg
4966e169010aSmrg      -R)
4967e169010aSmrg	prev=xrpath
4968e169010aSmrg	continue
4969e169010aSmrg	;;
49707914d74bSmrg
4971e169010aSmrg      -R*)
4972e169010aSmrg	func_stripname '-R' '' "$arg"
4973e169010aSmrg	dir=$func_stripname_result
4974e169010aSmrg	# We need an absolute path.
4975e169010aSmrg	case $dir in
4976e169010aSmrg	[\\/]* | [A-Za-z]:[\\/]*) ;;
4977e169010aSmrg	*)
4978e169010aSmrg	  func_fatal_error "only absolute run-paths are allowed"
4979e169010aSmrg	  ;;
4980e169010aSmrg	esac
4981e169010aSmrg	case "$xrpath " in
4982e169010aSmrg	*" $dir "*) ;;
4983e169010aSmrg	*) xrpath="$xrpath $dir" ;;
4984e169010aSmrg	esac
4985e169010aSmrg	continue
4986e169010aSmrg	;;
49877914d74bSmrg
4988e169010aSmrg      -shared)
4989e169010aSmrg	# The effects of -shared are defined in a previous loop.
4990e169010aSmrg	continue
4991e169010aSmrg	;;
49927914d74bSmrg
4993e169010aSmrg      -shrext)
4994e169010aSmrg	prev=shrext
4995e169010aSmrg	continue
4996e169010aSmrg	;;
49977914d74bSmrg
4998e169010aSmrg      -static | -static-libtool-libs)
4999e169010aSmrg	# The effects of -static are defined in a previous loop.
5000e169010aSmrg	# We used to do the same as -all-static on platforms that
5001e169010aSmrg	# didn't have a PIC flag, but the assumption that the effects
5002e169010aSmrg	# would be equivalent was wrong.  It would break on at least
5003e169010aSmrg	# Digital Unix and AIX.
5004e169010aSmrg	continue
5005e169010aSmrg	;;
50067914d74bSmrg
5007e169010aSmrg      -thread-safe)
5008e169010aSmrg	thread_safe=yes
5009e169010aSmrg	continue
5010e169010aSmrg	;;
50117914d74bSmrg
5012e169010aSmrg      -version-info)
5013e169010aSmrg	prev=vinfo
5014e169010aSmrg	continue
5015e169010aSmrg	;;
50167914d74bSmrg
5017e169010aSmrg      -version-number)
5018e169010aSmrg	prev=vinfo
5019e169010aSmrg	vinfo_number=yes
5020e169010aSmrg	continue
5021e169010aSmrg	;;
50227914d74bSmrg
5023e169010aSmrg      -weak)
5024e169010aSmrg        prev=weak
5025e169010aSmrg	continue
5026e169010aSmrg	;;
50277914d74bSmrg
5028e169010aSmrg      -Wc,*)
5029e169010aSmrg	func_stripname '-Wc,' '' "$arg"
5030e169010aSmrg	args=$func_stripname_result
5031e169010aSmrg	arg=
5032e169010aSmrg	save_ifs="$IFS"; IFS=','
5033e169010aSmrg	for flag in $args; do
5034e169010aSmrg	  IFS="$save_ifs"
5035e169010aSmrg          func_quote_for_eval "$flag"
5036e8ead290Smrg	  arg="$arg $func_quote_for_eval_result"
5037e169010aSmrg	  compiler_flags="$compiler_flags $func_quote_for_eval_result"
5038e169010aSmrg	done
5039e169010aSmrg	IFS="$save_ifs"
5040e169010aSmrg	func_stripname ' ' '' "$arg"
5041e169010aSmrg	arg=$func_stripname_result
5042e169010aSmrg	;;
50437914d74bSmrg
5044e169010aSmrg      -Wl,*)
5045e169010aSmrg	func_stripname '-Wl,' '' "$arg"
5046e169010aSmrg	args=$func_stripname_result
5047e169010aSmrg	arg=
5048e169010aSmrg	save_ifs="$IFS"; IFS=','
5049e169010aSmrg	for flag in $args; do
5050e169010aSmrg	  IFS="$save_ifs"
5051e169010aSmrg          func_quote_for_eval "$flag"
5052e169010aSmrg	  arg="$arg $wl$func_quote_for_eval_result"
5053e169010aSmrg	  compiler_flags="$compiler_flags $wl$func_quote_for_eval_result"
5054e169010aSmrg	  linker_flags="$linker_flags $func_quote_for_eval_result"
5055e169010aSmrg	done
5056e169010aSmrg	IFS="$save_ifs"
5057e169010aSmrg	func_stripname ' ' '' "$arg"
5058e169010aSmrg	arg=$func_stripname_result
5059e169010aSmrg	;;
50607914d74bSmrg
5061e169010aSmrg      -Xcompiler)
5062e169010aSmrg	prev=xcompiler
5063e169010aSmrg	continue
5064e169010aSmrg	;;
50657914d74bSmrg
5066e169010aSmrg      -Xlinker)
5067e169010aSmrg	prev=xlinker
5068e169010aSmrg	continue
5069e169010aSmrg	;;
50707914d74bSmrg
5071e169010aSmrg      -XCClinker)
5072e169010aSmrg	prev=xcclinker
5073e169010aSmrg	continue
5074e169010aSmrg	;;
50757914d74bSmrg
5076e169010aSmrg      # -msg_* for osf cc
5077e169010aSmrg      -msg_*)
5078e169010aSmrg	func_quote_for_eval "$arg"
5079e169010aSmrg	arg="$func_quote_for_eval_result"
5080e169010aSmrg	;;
50817914d74bSmrg
5082e8ead290Smrg      # Flags to be passed through unchanged, with rationale:
5083e8ead290Smrg      # -64, -mips[0-9]      enable 64-bit mode for the SGI compiler
5084e8ead290Smrg      # -r[0-9][0-9]*        specify processor for the SGI compiler
5085e8ead290Smrg      # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler
5086e8ead290Smrg      # +DA*, +DD*           enable 64-bit mode for the HP compiler
5087e8ead290Smrg      # -q*                  compiler args for the IBM compiler
5088e8ead290Smrg      # -m*, -t[45]*, -txscale* architecture-specific flags for GCC
5089e8ead290Smrg      # -F/path              path to uninstalled frameworks, gcc on darwin
5090e8ead290Smrg      # -p, -pg, --coverage, -fprofile-*  profiling flags for GCC
5091e8ead290Smrg      # @file                GCC response files
5092e8ead290Smrg      # -tp=*                Portland pgcc target processor selection
5093e169010aSmrg      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
5094e8ead290Smrg      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*)
5095e169010aSmrg        func_quote_for_eval "$arg"
5096e169010aSmrg	arg="$func_quote_for_eval_result"
5097e169010aSmrg        func_append compile_command " $arg"
5098e169010aSmrg        func_append finalize_command " $arg"
5099e169010aSmrg        compiler_flags="$compiler_flags $arg"
5100e169010aSmrg        continue
5101e169010aSmrg        ;;
51027914d74bSmrg
5103e169010aSmrg      # Some other compiler flag.
5104e169010aSmrg      -* | +*)
5105e169010aSmrg        func_quote_for_eval "$arg"
5106e169010aSmrg	arg="$func_quote_for_eval_result"
5107e169010aSmrg	;;
51087914d74bSmrg
5109e169010aSmrg      *.$objext)
5110e169010aSmrg	# A standard object.
5111e169010aSmrg	objs="$objs $arg"
5112e169010aSmrg	;;
5113e169010aSmrg
5114e169010aSmrg      *.lo)
5115e169010aSmrg	# A libtool-controlled object.
5116e169010aSmrg
5117e169010aSmrg	# Check to see that this really is a libtool object.
5118e169010aSmrg	if func_lalib_unsafe_p "$arg"; then
5119e169010aSmrg	  pic_object=
5120e169010aSmrg	  non_pic_object=
5121e169010aSmrg
5122e169010aSmrg	  # Read the .lo file
5123e169010aSmrg	  func_source "$arg"
5124e169010aSmrg
5125e169010aSmrg	  if test -z "$pic_object" ||
5126e169010aSmrg	     test -z "$non_pic_object" ||
5127e169010aSmrg	     test "$pic_object" = none &&
5128e169010aSmrg	     test "$non_pic_object" = none; then
5129e169010aSmrg	    func_fatal_error "cannot find name of object for \`$arg'"
5130e169010aSmrg	  fi
5131e169010aSmrg
5132e169010aSmrg	  # Extract subdirectory from the argument.
5133e169010aSmrg	  func_dirname "$arg" "/" ""
5134e169010aSmrg	  xdir="$func_dirname_result"
5135e169010aSmrg
5136e169010aSmrg	  if test "$pic_object" != none; then
5137e169010aSmrg	    # Prepend the subdirectory the object is found in.
5138e169010aSmrg	    pic_object="$xdir$pic_object"
5139e169010aSmrg
5140e169010aSmrg	    if test "$prev" = dlfiles; then
5141e169010aSmrg	      if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
5142e169010aSmrg		dlfiles="$dlfiles $pic_object"
5143e169010aSmrg		prev=
5144e169010aSmrg		continue
5145e169010aSmrg	      else
5146e169010aSmrg		# If libtool objects are unsupported, then we need to preload.
5147e169010aSmrg		prev=dlprefiles
5148e169010aSmrg	      fi
5149e169010aSmrg	    fi
5150e169010aSmrg
5151e169010aSmrg	    # CHECK ME:  I think I busted this.  -Ossama
5152e169010aSmrg	    if test "$prev" = dlprefiles; then
5153e169010aSmrg	      # Preload the old-style object.
5154e169010aSmrg	      dlprefiles="$dlprefiles $pic_object"
5155e169010aSmrg	      prev=
5156e169010aSmrg	    fi
5157e169010aSmrg
5158e169010aSmrg	    # A PIC object.
5159e169010aSmrg	    func_append libobjs " $pic_object"
5160e169010aSmrg	    arg="$pic_object"
5161e169010aSmrg	  fi
5162e169010aSmrg
5163e169010aSmrg	  # Non-PIC object.
5164e169010aSmrg	  if test "$non_pic_object" != none; then
5165e169010aSmrg	    # Prepend the subdirectory the object is found in.
5166e169010aSmrg	    non_pic_object="$xdir$non_pic_object"
5167e169010aSmrg
5168e169010aSmrg	    # A standard non-PIC object
5169e169010aSmrg	    func_append non_pic_objects " $non_pic_object"
5170e169010aSmrg	    if test -z "$pic_object" || test "$pic_object" = none ; then
5171e169010aSmrg	      arg="$non_pic_object"
5172e169010aSmrg	    fi
5173e169010aSmrg	  else
5174e169010aSmrg	    # If the PIC object exists, use it instead.
5175e169010aSmrg	    # $xdir was prepended to $pic_object above.
5176e169010aSmrg	    non_pic_object="$pic_object"
5177e169010aSmrg	    func_append non_pic_objects " $non_pic_object"
5178e169010aSmrg	  fi
5179e169010aSmrg	else
5180e169010aSmrg	  # Only an error if not doing a dry-run.
5181e169010aSmrg	  if $opt_dry_run; then
5182e169010aSmrg	    # Extract subdirectory from the argument.
5183e169010aSmrg	    func_dirname "$arg" "/" ""
5184e169010aSmrg	    xdir="$func_dirname_result"
5185e169010aSmrg
5186e169010aSmrg	    func_lo2o "$arg"
5187e169010aSmrg	    pic_object=$xdir$objdir/$func_lo2o_result
5188e169010aSmrg	    non_pic_object=$xdir$func_lo2o_result
5189e169010aSmrg	    func_append libobjs " $pic_object"
5190e169010aSmrg	    func_append non_pic_objects " $non_pic_object"
5191e169010aSmrg	  else
5192e169010aSmrg	    func_fatal_error "\`$arg' is not a valid libtool object"
5193e169010aSmrg	  fi
5194e169010aSmrg	fi
5195e169010aSmrg	;;
5196e169010aSmrg
5197e169010aSmrg      *.$libext)
5198e169010aSmrg	# An archive.
5199e169010aSmrg	deplibs="$deplibs $arg"
5200e169010aSmrg	old_deplibs="$old_deplibs $arg"
5201e169010aSmrg	continue
5202e169010aSmrg	;;
5203e169010aSmrg
5204e169010aSmrg      *.la)
5205e169010aSmrg	# A libtool-controlled library.
5206e169010aSmrg
5207e169010aSmrg	if test "$prev" = dlfiles; then
5208e169010aSmrg	  # This library was specified with -dlopen.
5209e169010aSmrg	  dlfiles="$dlfiles $arg"
5210e169010aSmrg	  prev=
5211e169010aSmrg	elif test "$prev" = dlprefiles; then
5212e169010aSmrg	  # The library was specified with -dlpreopen.
5213e169010aSmrg	  dlprefiles="$dlprefiles $arg"
5214e169010aSmrg	  prev=
5215e169010aSmrg	else
5216e169010aSmrg	  deplibs="$deplibs $arg"
5217e169010aSmrg	fi
5218e169010aSmrg	continue
5219e169010aSmrg	;;
5220e169010aSmrg
5221e169010aSmrg      # Some other compiler argument.
5222e169010aSmrg      *)
5223e169010aSmrg	# Unknown arguments in both finalize_command and compile_command need
5224e169010aSmrg	# to be aesthetically quoted because they are evaled later.
5225e169010aSmrg	func_quote_for_eval "$arg"
5226e169010aSmrg	arg="$func_quote_for_eval_result"
5227e169010aSmrg	;;
5228e169010aSmrg      esac # arg
5229e169010aSmrg
5230e169010aSmrg      # Now actually substitute the argument into the commands.
5231e169010aSmrg      if test -n "$arg"; then
5232e169010aSmrg	func_append compile_command " $arg"
5233e169010aSmrg	func_append finalize_command " $arg"
5234e169010aSmrg      fi
5235e169010aSmrg    done # argument parsing loop
5236e169010aSmrg
5237e169010aSmrg    test -n "$prev" && \
5238e169010aSmrg      func_fatal_help "the \`$prevarg' option requires an argument"
5239e169010aSmrg
5240e169010aSmrg    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
5241e169010aSmrg      eval arg=\"$export_dynamic_flag_spec\"
5242e169010aSmrg      func_append compile_command " $arg"
5243e169010aSmrg      func_append finalize_command " $arg"
5244e169010aSmrg    fi
5245e169010aSmrg
5246e169010aSmrg    oldlibs=
5247e169010aSmrg    # calculate the name of the file, without its directory
5248e169010aSmrg    func_basename "$output"
5249e169010aSmrg    outputname="$func_basename_result"
5250e169010aSmrg    libobjs_save="$libobjs"
5251e169010aSmrg
5252e169010aSmrg    if test -n "$shlibpath_var"; then
5253e169010aSmrg      # get the directories listed in $shlibpath_var
5254e8ead290Smrg      eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\`
52557914d74bSmrg    else
5256e169010aSmrg      shlib_search_path=
52577914d74bSmrg    fi
5258e169010aSmrg    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
5259e169010aSmrg    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
52607914d74bSmrg
5261e169010aSmrg    func_dirname "$output" "/" ""
5262e169010aSmrg    output_objdir="$func_dirname_result$objdir"
5263e169010aSmrg    # Create the object directory.
5264e169010aSmrg    func_mkdir_p "$output_objdir"
52657914d74bSmrg
5266e169010aSmrg    # Determine the type of output
5267e169010aSmrg    case $output in
5268e169010aSmrg    "")
5269e169010aSmrg      func_fatal_help "you must specify an output file"
5270e169010aSmrg      ;;
5271e169010aSmrg    *.$libext) linkmode=oldlib ;;
5272e169010aSmrg    *.lo | *.$objext) linkmode=obj ;;
5273e169010aSmrg    *.la) linkmode=lib ;;
5274e169010aSmrg    *) linkmode=prog ;; # Anything else should be a program.
5275e169010aSmrg    esac
5276e169010aSmrg
5277e169010aSmrg    specialdeplibs=
5278e169010aSmrg
5279e169010aSmrg    libs=
5280e169010aSmrg    # Find all interdependent deplibs by searching for libraries
5281e169010aSmrg    # that are linked more than once (e.g. -la -lb -la)
5282e169010aSmrg    for deplib in $deplibs; do
5283e169010aSmrg      if $opt_duplicate_deps ; then
5284e169010aSmrg	case "$libs " in
5285e169010aSmrg	*" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
5286e169010aSmrg	esac
5287e169010aSmrg      fi
5288e169010aSmrg      libs="$libs $deplib"
5289e169010aSmrg    done
5290e169010aSmrg
5291e169010aSmrg    if test "$linkmode" = lib; then
5292e169010aSmrg      libs="$predeps $libs $compiler_lib_search_path $postdeps"
5293e169010aSmrg
5294e169010aSmrg      # Compute libraries that are listed more than once in $predeps
5295e169010aSmrg      # $postdeps and mark them as special (i.e., whose duplicates are
5296e169010aSmrg      # not to be eliminated).
5297e169010aSmrg      pre_post_deps=
5298e169010aSmrg      if $opt_duplicate_compiler_generated_deps; then
5299e169010aSmrg	for pre_post_dep in $predeps $postdeps; do
5300e169010aSmrg	  case "$pre_post_deps " in
5301e169010aSmrg	  *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
5302e169010aSmrg	  esac
5303e169010aSmrg	  pre_post_deps="$pre_post_deps $pre_post_dep"
5304e169010aSmrg	done
5305e169010aSmrg      fi
5306e169010aSmrg      pre_post_deps=
5307e169010aSmrg    fi
5308e169010aSmrg
5309e169010aSmrg    deplibs=
5310e169010aSmrg    newdependency_libs=
5311e169010aSmrg    newlib_search_path=
5312e169010aSmrg    need_relink=no # whether we're linking any uninstalled libtool libraries
5313e169010aSmrg    notinst_deplibs= # not-installed libtool libraries
5314e169010aSmrg    notinst_path= # paths that contain not-installed libtool libraries
5315e169010aSmrg
5316e169010aSmrg    case $linkmode in
5317e169010aSmrg    lib)
5318e169010aSmrg	passes="conv dlpreopen link"
5319e169010aSmrg	for file in $dlfiles $dlprefiles; do
5320e169010aSmrg	  case $file in
5321e169010aSmrg	  *.la) ;;
5322e169010aSmrg	  *)
5323e169010aSmrg	    func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
5324e169010aSmrg	    ;;
5325e169010aSmrg	  esac
5326e169010aSmrg	done
5327e169010aSmrg	;;
5328e169010aSmrg    prog)
5329e169010aSmrg	compile_deplibs=
5330e169010aSmrg	finalize_deplibs=
5331e169010aSmrg	alldeplibs=no
5332e169010aSmrg	newdlfiles=
5333e169010aSmrg	newdlprefiles=
5334e169010aSmrg	passes="conv scan dlopen dlpreopen link"
5335e169010aSmrg	;;
5336e169010aSmrg    *)  passes="conv"
5337e169010aSmrg	;;
5338e169010aSmrg    esac
5339e169010aSmrg
5340e169010aSmrg    for pass in $passes; do
5341e169010aSmrg      # The preopen pass in lib mode reverses $deplibs; put it back here
5342e169010aSmrg      # so that -L comes before libs that need it for instance...
5343e169010aSmrg      if test "$linkmode,$pass" = "lib,link"; then
5344e169010aSmrg	## FIXME: Find the place where the list is rebuilt in the wrong
5345e169010aSmrg	##        order, and fix it there properly
5346e169010aSmrg        tmp_deplibs=
5347e169010aSmrg	for deplib in $deplibs; do
5348e169010aSmrg	  tmp_deplibs="$deplib $tmp_deplibs"
5349e169010aSmrg	done
5350e169010aSmrg	deplibs="$tmp_deplibs"
5351e169010aSmrg      fi
5352e169010aSmrg
5353e169010aSmrg      if test "$linkmode,$pass" = "lib,link" ||
5354e169010aSmrg	 test "$linkmode,$pass" = "prog,scan"; then
5355e169010aSmrg	libs="$deplibs"
5356e169010aSmrg	deplibs=
5357e169010aSmrg      fi
5358e169010aSmrg      if test "$linkmode" = prog; then
5359e169010aSmrg	case $pass in
5360e169010aSmrg	dlopen) libs="$dlfiles" ;;
5361e169010aSmrg	dlpreopen) libs="$dlprefiles" ;;
5362e169010aSmrg	link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
5363e169010aSmrg	esac
5364e169010aSmrg      fi
5365e169010aSmrg      if test "$linkmode,$pass" = "lib,dlpreopen"; then
5366e169010aSmrg	# Collect and forward deplibs of preopened libtool libs
5367e169010aSmrg	for lib in $dlprefiles; do
5368e169010aSmrg	  # Ignore non-libtool-libs
5369e169010aSmrg	  dependency_libs=
5370e169010aSmrg	  case $lib in
5371e169010aSmrg	  *.la)	func_source "$lib" ;;
5372e169010aSmrg	  esac
5373e169010aSmrg
5374e169010aSmrg	  # Collect preopened libtool deplibs, except any this library
5375e169010aSmrg	  # has declared as weak libs
5376e169010aSmrg	  for deplib in $dependency_libs; do
5377e8ead290Smrg	    func_basename "$deplib"
5378e8ead290Smrg            deplib_base=$func_basename_result
5379e169010aSmrg	    case " $weak_libs " in
5380e169010aSmrg	    *" $deplib_base "*) ;;
5381e169010aSmrg	    *) deplibs="$deplibs $deplib" ;;
5382e169010aSmrg	    esac
5383e169010aSmrg	  done
5384e169010aSmrg	done
5385e169010aSmrg	libs="$dlprefiles"
5386e169010aSmrg      fi
5387e169010aSmrg      if test "$pass" = dlopen; then
5388e169010aSmrg	# Collect dlpreopened libraries
5389e169010aSmrg	save_deplibs="$deplibs"
5390e169010aSmrg	deplibs=
5391e169010aSmrg      fi
5392e169010aSmrg
5393e169010aSmrg      for deplib in $libs; do
5394e169010aSmrg	lib=
5395e169010aSmrg	found=no
5396e169010aSmrg	case $deplib in
5397e169010aSmrg	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
5398e169010aSmrg	  if test "$linkmode,$pass" = "prog,link"; then
5399e169010aSmrg	    compile_deplibs="$deplib $compile_deplibs"
5400e169010aSmrg	    finalize_deplibs="$deplib $finalize_deplibs"
5401e169010aSmrg	  else
5402e169010aSmrg	    compiler_flags="$compiler_flags $deplib"
5403e169010aSmrg	    if test "$linkmode" = lib ; then
5404e169010aSmrg		case "$new_inherited_linker_flags " in
5405e169010aSmrg		    *" $deplib "*) ;;
5406e169010aSmrg		    * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
5407e169010aSmrg		esac
5408e169010aSmrg	    fi
5409e169010aSmrg	  fi
5410e169010aSmrg	  continue
5411e169010aSmrg	  ;;
5412e169010aSmrg	-l*)
5413e169010aSmrg	  if test "$linkmode" != lib && test "$linkmode" != prog; then
5414e169010aSmrg	    func_warning "\`-l' is ignored for archives/objects"
5415e169010aSmrg	    continue
5416e169010aSmrg	  fi
5417e169010aSmrg	  func_stripname '-l' '' "$deplib"
5418e169010aSmrg	  name=$func_stripname_result
5419e169010aSmrg	  if test "$linkmode" = lib; then
5420e169010aSmrg	    searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
5421e169010aSmrg	  else
5422e169010aSmrg	    searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
5423e169010aSmrg	  fi
5424e169010aSmrg	  for searchdir in $searchdirs; do
5425e169010aSmrg	    for search_ext in .la $std_shrext .so .a; do
5426e169010aSmrg	      # Search the libtool library
5427e169010aSmrg	      lib="$searchdir/lib${name}${search_ext}"
5428e169010aSmrg	      if test -f "$lib"; then
5429e169010aSmrg		if test "$search_ext" = ".la"; then
5430e169010aSmrg		  found=yes
5431e169010aSmrg		else
5432e169010aSmrg		  found=no
5433e169010aSmrg		fi
5434e169010aSmrg		break 2
5435e169010aSmrg	      fi
5436e169010aSmrg	    done
5437e169010aSmrg	  done
5438e169010aSmrg	  if test "$found" != yes; then
5439e169010aSmrg	    # deplib doesn't seem to be a libtool library
5440e169010aSmrg	    if test "$linkmode,$pass" = "prog,link"; then
5441e169010aSmrg	      compile_deplibs="$deplib $compile_deplibs"
5442e169010aSmrg	      finalize_deplibs="$deplib $finalize_deplibs"
5443e169010aSmrg	    else
5444e169010aSmrg	      deplibs="$deplib $deplibs"
5445e169010aSmrg	      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
5446e169010aSmrg	    fi
5447e169010aSmrg	    continue
5448e169010aSmrg	  else # deplib is a libtool library
5449e169010aSmrg	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
5450e169010aSmrg	    # We need to do some special things here, and not later.
5451e169010aSmrg	    if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
5452e169010aSmrg	      case " $predeps $postdeps " in
5453e169010aSmrg	      *" $deplib "*)
5454e169010aSmrg		if func_lalib_p "$lib"; then
5455e169010aSmrg		  library_names=
5456e169010aSmrg		  old_library=
5457e169010aSmrg		  func_source "$lib"
5458e169010aSmrg		  for l in $old_library $library_names; do
5459e169010aSmrg		    ll="$l"
5460e169010aSmrg		  done
5461e169010aSmrg		  if test "X$ll" = "X$old_library" ; then # only static version available
5462e169010aSmrg		    found=no
5463e169010aSmrg		    func_dirname "$lib" "" "."
5464e169010aSmrg		    ladir="$func_dirname_result"
5465e169010aSmrg		    lib=$ladir/$old_library
5466e169010aSmrg		    if test "$linkmode,$pass" = "prog,link"; then
5467e169010aSmrg		      compile_deplibs="$deplib $compile_deplibs"
5468e169010aSmrg		      finalize_deplibs="$deplib $finalize_deplibs"
5469e169010aSmrg		    else
5470e169010aSmrg		      deplibs="$deplib $deplibs"
5471e169010aSmrg		      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
5472e169010aSmrg		    fi
5473e169010aSmrg		    continue
5474e169010aSmrg		  fi
5475e169010aSmrg		fi
5476e169010aSmrg		;;
5477e169010aSmrg	      *) ;;
5478e169010aSmrg	      esac
5479e169010aSmrg	    fi
5480e169010aSmrg	  fi
5481e169010aSmrg	  ;; # -l
5482e169010aSmrg	*.ltframework)
5483e169010aSmrg	  if test "$linkmode,$pass" = "prog,link"; then
5484e169010aSmrg	    compile_deplibs="$deplib $compile_deplibs"
5485e169010aSmrg	    finalize_deplibs="$deplib $finalize_deplibs"
5486e169010aSmrg	  else
5487e169010aSmrg	    deplibs="$deplib $deplibs"
5488e169010aSmrg	    if test "$linkmode" = lib ; then
5489e169010aSmrg		case "$new_inherited_linker_flags " in
5490e169010aSmrg		    *" $deplib "*) ;;
5491e169010aSmrg		    * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
5492e169010aSmrg		esac
5493e169010aSmrg	    fi
5494e169010aSmrg	  fi
5495e169010aSmrg	  continue
5496e169010aSmrg	  ;;
5497e169010aSmrg	-L*)
5498e169010aSmrg	  case $linkmode in
5499e169010aSmrg	  lib)
5500e169010aSmrg	    deplibs="$deplib $deplibs"
5501e169010aSmrg	    test "$pass" = conv && continue
5502e169010aSmrg	    newdependency_libs="$deplib $newdependency_libs"
5503e169010aSmrg	    func_stripname '-L' '' "$deplib"
5504e169010aSmrg	    newlib_search_path="$newlib_search_path $func_stripname_result"
5505e169010aSmrg	    ;;
5506e169010aSmrg	  prog)
5507e169010aSmrg	    if test "$pass" = conv; then
5508e169010aSmrg	      deplibs="$deplib $deplibs"
5509e169010aSmrg	      continue
5510e169010aSmrg	    fi
5511e169010aSmrg	    if test "$pass" = scan; then
5512e169010aSmrg	      deplibs="$deplib $deplibs"
5513e169010aSmrg	    else
5514e169010aSmrg	      compile_deplibs="$deplib $compile_deplibs"
5515e169010aSmrg	      finalize_deplibs="$deplib $finalize_deplibs"
5516e169010aSmrg	    fi
5517e169010aSmrg	    func_stripname '-L' '' "$deplib"
5518e169010aSmrg	    newlib_search_path="$newlib_search_path $func_stripname_result"
5519e169010aSmrg	    ;;
5520e169010aSmrg	  *)
5521e169010aSmrg	    func_warning "\`-L' is ignored for archives/objects"
5522e169010aSmrg	    ;;
5523e169010aSmrg	  esac # linkmode
5524e169010aSmrg	  continue
5525e169010aSmrg	  ;; # -L
5526e169010aSmrg	-R*)
5527e169010aSmrg	  if test "$pass" = link; then
5528e169010aSmrg	    func_stripname '-R' '' "$deplib"
5529e169010aSmrg	    dir=$func_stripname_result
5530e169010aSmrg	    # Make sure the xrpath contains only unique directories.
5531e169010aSmrg	    case "$xrpath " in
5532e169010aSmrg	    *" $dir "*) ;;
5533e169010aSmrg	    *) xrpath="$xrpath $dir" ;;
5534e169010aSmrg	    esac
5535e169010aSmrg	  fi
5536e169010aSmrg	  deplibs="$deplib $deplibs"
5537e169010aSmrg	  continue
5538e169010aSmrg	  ;;
5539e169010aSmrg	*.la) lib="$deplib" ;;
5540e169010aSmrg	*.$libext)
5541e169010aSmrg	  if test "$pass" = conv; then
5542e169010aSmrg	    deplibs="$deplib $deplibs"
5543e169010aSmrg	    continue
5544e169010aSmrg	  fi
5545e169010aSmrg	  case $linkmode in
5546e169010aSmrg	  lib)
5547e169010aSmrg	    # Linking convenience modules into shared libraries is allowed,
5548e169010aSmrg	    # but linking other static libraries is non-portable.
5549e169010aSmrg	    case " $dlpreconveniencelibs " in
5550e169010aSmrg	    *" $deplib "*) ;;
5551e169010aSmrg	    *)
5552e169010aSmrg	      valid_a_lib=no
5553e169010aSmrg	      case $deplibs_check_method in
5554e169010aSmrg		match_pattern*)
5555e169010aSmrg		  set dummy $deplibs_check_method; shift
5556e169010aSmrg		  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
5557e8ead290Smrg		  if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \
5558e169010aSmrg		    | $EGREP "$match_pattern_regex" > /dev/null; then
5559e169010aSmrg		    valid_a_lib=yes
5560e169010aSmrg		  fi
5561e169010aSmrg		;;
5562e169010aSmrg		pass_all)
5563e169010aSmrg		  valid_a_lib=yes
5564e169010aSmrg		;;
5565e169010aSmrg	      esac
5566e169010aSmrg	      if test "$valid_a_lib" != yes; then
5567e8ead290Smrg		echo
5568e169010aSmrg		$ECHO "*** Warning: Trying to link with static lib archive $deplib."
5569e8ead290Smrg		echo "*** I have the capability to make that library automatically link in when"
5570e8ead290Smrg		echo "*** you link to this library.  But I can only do this if you have a"
5571e8ead290Smrg		echo "*** shared version of the library, which you do not appear to have"
5572e8ead290Smrg		echo "*** because the file extensions .$libext of this argument makes me believe"
5573e8ead290Smrg		echo "*** that it is just a static archive that I should not use here."
5574e169010aSmrg	      else
5575e8ead290Smrg		echo
5576e169010aSmrg		$ECHO "*** Warning: Linking the shared library $output against the"
5577e169010aSmrg		$ECHO "*** static library $deplib is not portable!"
5578e169010aSmrg		deplibs="$deplib $deplibs"
5579e169010aSmrg	      fi
5580e169010aSmrg	      ;;
5581e169010aSmrg	    esac
5582e169010aSmrg	    continue
5583e169010aSmrg	    ;;
5584e169010aSmrg	  prog)
5585e169010aSmrg	    if test "$pass" != link; then
5586e169010aSmrg	      deplibs="$deplib $deplibs"
5587e169010aSmrg	    else
5588e169010aSmrg	      compile_deplibs="$deplib $compile_deplibs"
5589e169010aSmrg	      finalize_deplibs="$deplib $finalize_deplibs"
5590e169010aSmrg	    fi
5591e169010aSmrg	    continue
5592e169010aSmrg	    ;;
5593e169010aSmrg	  esac # linkmode
5594e169010aSmrg	  ;; # *.$libext
5595e169010aSmrg	*.lo | *.$objext)
5596e169010aSmrg	  if test "$pass" = conv; then
5597e169010aSmrg	    deplibs="$deplib $deplibs"
5598e169010aSmrg	  elif test "$linkmode" = prog; then
5599e169010aSmrg	    if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
5600e169010aSmrg	      # If there is no dlopen support or we're linking statically,
5601e169010aSmrg	      # we need to preload.
5602e169010aSmrg	      newdlprefiles="$newdlprefiles $deplib"
5603e169010aSmrg	      compile_deplibs="$deplib $compile_deplibs"
5604e169010aSmrg	      finalize_deplibs="$deplib $finalize_deplibs"
5605e169010aSmrg	    else
5606e169010aSmrg	      newdlfiles="$newdlfiles $deplib"
5607e169010aSmrg	    fi
5608e169010aSmrg	  fi
5609e169010aSmrg	  continue
5610e169010aSmrg	  ;;
5611e169010aSmrg	%DEPLIBS%)
5612e169010aSmrg	  alldeplibs=yes
5613e169010aSmrg	  continue
5614e169010aSmrg	  ;;
5615e169010aSmrg	esac # case $deplib
5616e169010aSmrg
5617e169010aSmrg	if test "$found" = yes || test -f "$lib"; then :
5618e169010aSmrg	else
5619e169010aSmrg	  func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
5620e169010aSmrg	fi
5621e169010aSmrg
5622e169010aSmrg	# Check to see that this really is a libtool archive.
5623e169010aSmrg	func_lalib_unsafe_p "$lib" \
5624e169010aSmrg	  || func_fatal_error "\`$lib' is not a valid libtool archive"
5625e169010aSmrg
5626e169010aSmrg	func_dirname "$lib" "" "."
5627e169010aSmrg	ladir="$func_dirname_result"
5628e169010aSmrg
5629e169010aSmrg	dlname=
5630e169010aSmrg	dlopen=
5631e169010aSmrg	dlpreopen=
5632e169010aSmrg	libdir=
5633e169010aSmrg	library_names=
5634e169010aSmrg	old_library=
5635e169010aSmrg	inherited_linker_flags=
5636e169010aSmrg	# If the library was installed with an old release of libtool,
5637e169010aSmrg	# it will not redefine variables installed, or shouldnotlink
5638e169010aSmrg	installed=yes
5639e169010aSmrg	shouldnotlink=no
5640e169010aSmrg	avoidtemprpath=
5641e169010aSmrg
5642e169010aSmrg
5643e169010aSmrg	# Read the .la file
5644e169010aSmrg	func_source "$lib"
5645e169010aSmrg
5646e169010aSmrg	# Convert "-framework foo" to "foo.ltframework"
5647e169010aSmrg	if test -n "$inherited_linker_flags"; then
5648e8ead290Smrg	  tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`
5649e169010aSmrg	  for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
5650e169010aSmrg	    case " $new_inherited_linker_flags " in
5651e169010aSmrg	      *" $tmp_inherited_linker_flag "*) ;;
5652e169010aSmrg	      *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";;
5653e169010aSmrg	    esac
5654e169010aSmrg	  done
5655e169010aSmrg	fi
5656e8ead290Smrg	dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
5657e169010aSmrg	if test "$linkmode,$pass" = "lib,link" ||
5658e169010aSmrg	   test "$linkmode,$pass" = "prog,scan" ||
5659e169010aSmrg	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then
5660e169010aSmrg	  test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
5661e169010aSmrg	  test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
5662e169010aSmrg	fi
5663e169010aSmrg
5664e169010aSmrg	if test "$pass" = conv; then
5665e169010aSmrg	  # Only check for convenience libraries
5666e169010aSmrg	  deplibs="$lib $deplibs"
5667e169010aSmrg	  if test -z "$libdir"; then
5668e169010aSmrg	    if test -z "$old_library"; then
5669e169010aSmrg	      func_fatal_error "cannot find name of link library for \`$lib'"
5670e169010aSmrg	    fi
5671e169010aSmrg	    # It is a libtool convenience library, so add in its objects.
5672e169010aSmrg	    convenience="$convenience $ladir/$objdir/$old_library"
5673e169010aSmrg	    old_convenience="$old_convenience $ladir/$objdir/$old_library"
5674e169010aSmrg	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
5675e169010aSmrg	    func_fatal_error "\`$lib' is not a convenience library"
5676e169010aSmrg	  fi
5677e169010aSmrg	  tmp_libs=
5678e169010aSmrg	  for deplib in $dependency_libs; do
5679e169010aSmrg	    deplibs="$deplib $deplibs"
5680e169010aSmrg	    if $opt_duplicate_deps ; then
5681e169010aSmrg	      case "$tmp_libs " in
5682e169010aSmrg	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
5683e169010aSmrg	      esac
5684e169010aSmrg	    fi
5685e169010aSmrg	    tmp_libs="$tmp_libs $deplib"
5686e169010aSmrg	  done
5687e169010aSmrg	  continue
5688e169010aSmrg	fi # $pass = conv
5689e169010aSmrg
5690e169010aSmrg
5691e169010aSmrg	# Get the name of the library we link against.
5692e169010aSmrg	linklib=
5693e169010aSmrg	for l in $old_library $library_names; do
5694e169010aSmrg	  linklib="$l"
5695e169010aSmrg	done
5696e169010aSmrg	if test -z "$linklib"; then
5697e169010aSmrg	  func_fatal_error "cannot find name of link library for \`$lib'"
5698e169010aSmrg	fi
5699e169010aSmrg
5700e169010aSmrg	# This library was specified with -dlopen.
5701e169010aSmrg	if test "$pass" = dlopen; then
5702e169010aSmrg	  if test -z "$libdir"; then
5703e169010aSmrg	    func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
5704e169010aSmrg	  fi
5705e169010aSmrg	  if test -z "$dlname" ||
5706e169010aSmrg	     test "$dlopen_support" != yes ||
5707e169010aSmrg	     test "$build_libtool_libs" = no; then
5708e169010aSmrg	    # If there is no dlname, no dlopen support or we're linking
5709e169010aSmrg	    # statically, we need to preload.  We also need to preload any
5710e169010aSmrg	    # dependent libraries so libltdl's deplib preloader doesn't
5711e169010aSmrg	    # bomb out in the load deplibs phase.
5712e169010aSmrg	    dlprefiles="$dlprefiles $lib $dependency_libs"
5713e169010aSmrg	  else
5714e169010aSmrg	    newdlfiles="$newdlfiles $lib"
5715e169010aSmrg	  fi
5716e169010aSmrg	  continue
5717e169010aSmrg	fi # $pass = dlopen
5718e169010aSmrg
5719e169010aSmrg	# We need an absolute path.
5720e169010aSmrg	case $ladir in
5721e169010aSmrg	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
5722e169010aSmrg	*)
5723e169010aSmrg	  abs_ladir=`cd "$ladir" && pwd`
5724e169010aSmrg	  if test -z "$abs_ladir"; then
5725e169010aSmrg	    func_warning "cannot determine absolute directory name of \`$ladir'"
5726e169010aSmrg	    func_warning "passing it literally to the linker, although it might fail"
5727e169010aSmrg	    abs_ladir="$ladir"
5728e169010aSmrg	  fi
5729e169010aSmrg	  ;;
5730e169010aSmrg	esac
5731e169010aSmrg	func_basename "$lib"
5732e169010aSmrg	laname="$func_basename_result"
5733e169010aSmrg
5734e169010aSmrg	# Find the relevant object directory and library name.
5735e169010aSmrg	if test "X$installed" = Xyes; then
5736e169010aSmrg	  if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
5737e169010aSmrg	    func_warning "library \`$lib' was moved."
5738e169010aSmrg	    dir="$ladir"
5739e169010aSmrg	    absdir="$abs_ladir"
5740e169010aSmrg	    libdir="$abs_ladir"
5741e169010aSmrg	  else
5742e169010aSmrg	    dir="$libdir"
5743e169010aSmrg	    absdir="$libdir"
5744e169010aSmrg	  fi
5745e169010aSmrg	  test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
5746e169010aSmrg	else
5747e169010aSmrg	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
5748e169010aSmrg	    dir="$ladir"
5749e169010aSmrg	    absdir="$abs_ladir"
5750e169010aSmrg	    # Remove this search path later
5751e169010aSmrg	    notinst_path="$notinst_path $abs_ladir"
5752e169010aSmrg	  else
5753e169010aSmrg	    dir="$ladir/$objdir"
5754e169010aSmrg	    absdir="$abs_ladir/$objdir"
5755e169010aSmrg	    # Remove this search path later
5756e169010aSmrg	    notinst_path="$notinst_path $abs_ladir"
5757e169010aSmrg	  fi
5758e169010aSmrg	fi # $installed = yes
5759e169010aSmrg	func_stripname 'lib' '.la' "$laname"
5760e169010aSmrg	name=$func_stripname_result
5761e169010aSmrg
5762e169010aSmrg	# This library was specified with -dlpreopen.
5763e169010aSmrg	if test "$pass" = dlpreopen; then
5764e169010aSmrg	  if test -z "$libdir" && test "$linkmode" = prog; then
5765e169010aSmrg	    func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
5766e169010aSmrg	  fi
5767e169010aSmrg	  # Prefer using a static library (so that no silly _DYNAMIC symbols
5768e169010aSmrg	  # are required to link).
5769e169010aSmrg	  if test -n "$old_library"; then
5770e169010aSmrg	    newdlprefiles="$newdlprefiles $dir/$old_library"
5771e169010aSmrg	    # Keep a list of preopened convenience libraries to check
5772e169010aSmrg	    # that they are being used correctly in the link pass.
5773e169010aSmrg	    test -z "$libdir" && \
5774e169010aSmrg		dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library"
5775e169010aSmrg	  # Otherwise, use the dlname, so that lt_dlopen finds it.
5776e169010aSmrg	  elif test -n "$dlname"; then
5777e169010aSmrg	    newdlprefiles="$newdlprefiles $dir/$dlname"
5778e169010aSmrg	  else
5779e169010aSmrg	    newdlprefiles="$newdlprefiles $dir/$linklib"
5780e169010aSmrg	  fi
5781e169010aSmrg	fi # $pass = dlpreopen
5782e169010aSmrg
5783e169010aSmrg	if test -z "$libdir"; then
5784e169010aSmrg	  # Link the convenience library
5785e169010aSmrg	  if test "$linkmode" = lib; then
5786e169010aSmrg	    deplibs="$dir/$old_library $deplibs"
5787e169010aSmrg	  elif test "$linkmode,$pass" = "prog,link"; then
5788e169010aSmrg	    compile_deplibs="$dir/$old_library $compile_deplibs"
5789e169010aSmrg	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
5790e169010aSmrg	  else
5791e169010aSmrg	    deplibs="$lib $deplibs" # used for prog,scan pass
5792e169010aSmrg	  fi
5793e169010aSmrg	  continue
5794e169010aSmrg	fi
5795e169010aSmrg
5796e169010aSmrg
5797e169010aSmrg	if test "$linkmode" = prog && test "$pass" != link; then
5798e169010aSmrg	  newlib_search_path="$newlib_search_path $ladir"
5799e169010aSmrg	  deplibs="$lib $deplibs"
5800e169010aSmrg
5801e169010aSmrg	  linkalldeplibs=no
5802e169010aSmrg	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
5803e169010aSmrg	     test "$build_libtool_libs" = no; then
5804e169010aSmrg	    linkalldeplibs=yes
5805e169010aSmrg	  fi
5806e169010aSmrg
5807e169010aSmrg	  tmp_libs=
5808e169010aSmrg	  for deplib in $dependency_libs; do
5809e169010aSmrg	    case $deplib in
5810e169010aSmrg	    -L*) func_stripname '-L' '' "$deplib"
5811e169010aSmrg	         newlib_search_path="$newlib_search_path $func_stripname_result"
5812e169010aSmrg		 ;;
5813e169010aSmrg	    esac
5814e169010aSmrg	    # Need to link against all dependency_libs?
5815e169010aSmrg	    if test "$linkalldeplibs" = yes; then
5816e169010aSmrg	      deplibs="$deplib $deplibs"
5817e169010aSmrg	    else
5818e169010aSmrg	      # Need to hardcode shared library paths
5819e169010aSmrg	      # or/and link against static libraries
5820e169010aSmrg	      newdependency_libs="$deplib $newdependency_libs"
5821e169010aSmrg	    fi
5822e169010aSmrg	    if $opt_duplicate_deps ; then
5823e169010aSmrg	      case "$tmp_libs " in
5824e169010aSmrg	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
5825e169010aSmrg	      esac
5826e169010aSmrg	    fi
5827e169010aSmrg	    tmp_libs="$tmp_libs $deplib"
5828e169010aSmrg	  done # for deplib
5829e169010aSmrg	  continue
5830e169010aSmrg	fi # $linkmode = prog...
5831e169010aSmrg
5832e169010aSmrg	if test "$linkmode,$pass" = "prog,link"; then
5833e169010aSmrg	  if test -n "$library_names" &&
5834e169010aSmrg	     { { test "$prefer_static_libs" = no ||
5835e169010aSmrg	         test "$prefer_static_libs,$installed" = "built,yes"; } ||
5836e169010aSmrg	       test -z "$old_library"; }; then
5837e169010aSmrg	    # We need to hardcode the library path
5838e169010aSmrg	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
5839e169010aSmrg	      # Make sure the rpath contains only unique directories.
5840e169010aSmrg	      case "$temp_rpath:" in
5841e169010aSmrg	      *"$absdir:"*) ;;
5842e169010aSmrg	      *) temp_rpath="$temp_rpath$absdir:" ;;
5843e169010aSmrg	      esac
5844e169010aSmrg	    fi
5845e169010aSmrg
5846e169010aSmrg	    # Hardcode the library path.
5847e169010aSmrg	    # Skip directories that are in the system default run-time
5848e169010aSmrg	    # search path.
5849e169010aSmrg	    case " $sys_lib_dlsearch_path " in
5850e169010aSmrg	    *" $absdir "*) ;;
5851e169010aSmrg	    *)
5852e169010aSmrg	      case "$compile_rpath " in
5853e169010aSmrg	      *" $absdir "*) ;;
5854e169010aSmrg	      *) compile_rpath="$compile_rpath $absdir"
5855e169010aSmrg	      esac
5856e169010aSmrg	      ;;
5857e169010aSmrg	    esac
5858e169010aSmrg	    case " $sys_lib_dlsearch_path " in
5859e169010aSmrg	    *" $libdir "*) ;;
5860e169010aSmrg	    *)
5861e169010aSmrg	      case "$finalize_rpath " in
5862e169010aSmrg	      *" $libdir "*) ;;
5863e169010aSmrg	      *) finalize_rpath="$finalize_rpath $libdir"
5864e169010aSmrg	      esac
5865e169010aSmrg	      ;;
5866e169010aSmrg	    esac
5867e169010aSmrg	  fi # $linkmode,$pass = prog,link...
5868e169010aSmrg
5869e169010aSmrg	  if test "$alldeplibs" = yes &&
5870e169010aSmrg	     { test "$deplibs_check_method" = pass_all ||
5871e169010aSmrg	       { test "$build_libtool_libs" = yes &&
5872e169010aSmrg		 test -n "$library_names"; }; }; then
5873e169010aSmrg	    # We only need to search for static libraries
5874e169010aSmrg	    continue
5875e169010aSmrg	  fi
5876e169010aSmrg	fi
5877e169010aSmrg
5878e169010aSmrg	link_static=no # Whether the deplib will be linked statically
5879e169010aSmrg	use_static_libs=$prefer_static_libs
5880e169010aSmrg	if test "$use_static_libs" = built && test "$installed" = yes; then
5881e169010aSmrg	  use_static_libs=no
5882e169010aSmrg	fi
5883e169010aSmrg	if test -n "$library_names" &&
5884e169010aSmrg	   { test "$use_static_libs" = no || test -z "$old_library"; }; then
5885e169010aSmrg	  case $host in
5886e169010aSmrg	  *cygwin* | *mingw* | *cegcc*)
5887e169010aSmrg	      # No point in relinking DLLs because paths are not encoded
5888e169010aSmrg	      notinst_deplibs="$notinst_deplibs $lib"
5889e169010aSmrg	      need_relink=no
5890e169010aSmrg	    ;;
5891e169010aSmrg	  *)
5892e169010aSmrg	    if test "$installed" = no; then
5893e169010aSmrg	      notinst_deplibs="$notinst_deplibs $lib"
5894e169010aSmrg	      need_relink=yes
5895e169010aSmrg	    fi
5896e169010aSmrg	    ;;
5897e169010aSmrg	  esac
5898e169010aSmrg	  # This is a shared library
5899e169010aSmrg
5900e169010aSmrg	  # Warn about portability, can't link against -module's on some
5901e169010aSmrg	  # systems (darwin).  Don't bleat about dlopened modules though!
5902e169010aSmrg	  dlopenmodule=""
5903e169010aSmrg	  for dlpremoduletest in $dlprefiles; do
5904e169010aSmrg	    if test "X$dlpremoduletest" = "X$lib"; then
5905e169010aSmrg	      dlopenmodule="$dlpremoduletest"
5906e169010aSmrg	      break
5907e169010aSmrg	    fi
5908e169010aSmrg	  done
5909e169010aSmrg	  if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
5910e8ead290Smrg	    echo
5911e169010aSmrg	    if test "$linkmode" = prog; then
5912e169010aSmrg	      $ECHO "*** Warning: Linking the executable $output against the loadable module"
5913e169010aSmrg	    else
5914e169010aSmrg	      $ECHO "*** Warning: Linking the shared library $output against the loadable module"
5915e169010aSmrg	    fi
5916e169010aSmrg	    $ECHO "*** $linklib is not portable!"
5917e169010aSmrg	  fi
5918e169010aSmrg	  if test "$linkmode" = lib &&
5919e169010aSmrg	     test "$hardcode_into_libs" = yes; then
5920e169010aSmrg	    # Hardcode the library path.
5921e169010aSmrg	    # Skip directories that are in the system default run-time
5922e169010aSmrg	    # search path.
5923e169010aSmrg	    case " $sys_lib_dlsearch_path " in
5924e169010aSmrg	    *" $absdir "*) ;;
5925e169010aSmrg	    *)
5926e169010aSmrg	      case "$compile_rpath " in
5927e169010aSmrg	      *" $absdir "*) ;;
5928e169010aSmrg	      *) compile_rpath="$compile_rpath $absdir"
5929e169010aSmrg	      esac
5930e169010aSmrg	      ;;
5931e169010aSmrg	    esac
5932e169010aSmrg	    case " $sys_lib_dlsearch_path " in
5933e169010aSmrg	    *" $libdir "*) ;;
5934e169010aSmrg	    *)
5935e169010aSmrg	      case "$finalize_rpath " in
5936e169010aSmrg	      *" $libdir "*) ;;
5937e169010aSmrg	      *) finalize_rpath="$finalize_rpath $libdir"
5938e169010aSmrg	      esac
5939e169010aSmrg	      ;;
5940e169010aSmrg	    esac
5941e169010aSmrg	  fi
5942e169010aSmrg
5943e169010aSmrg	  if test -n "$old_archive_from_expsyms_cmds"; then
5944e169010aSmrg	    # figure out the soname
5945e169010aSmrg	    set dummy $library_names
5946e169010aSmrg	    shift
5947e169010aSmrg	    realname="$1"
5948e169010aSmrg	    shift
5949e169010aSmrg	    libname=`eval "\\$ECHO \"$libname_spec\""`
5950e169010aSmrg	    # use dlname if we got it. it's perfectly good, no?
5951e169010aSmrg	    if test -n "$dlname"; then
5952e169010aSmrg	      soname="$dlname"
5953e169010aSmrg	    elif test -n "$soname_spec"; then
5954e169010aSmrg	      # bleh windows
5955e169010aSmrg	      case $host in
5956e169010aSmrg	      *cygwin* | mingw* | *cegcc*)
5957e169010aSmrg	        func_arith $current - $age
5958e169010aSmrg		major=$func_arith_result
5959e169010aSmrg		versuffix="-$major"
5960e169010aSmrg		;;
5961e169010aSmrg	      esac
5962e169010aSmrg	      eval soname=\"$soname_spec\"
5963e169010aSmrg	    else
5964e169010aSmrg	      soname="$realname"
5965e169010aSmrg	    fi
5966e169010aSmrg
5967e169010aSmrg	    # Make a new name for the extract_expsyms_cmds to use
5968e169010aSmrg	    soroot="$soname"
5969e169010aSmrg	    func_basename "$soroot"
5970e169010aSmrg	    soname="$func_basename_result"
5971e169010aSmrg	    func_stripname 'lib' '.dll' "$soname"
5972e169010aSmrg	    newlib=libimp-$func_stripname_result.a
5973e169010aSmrg
5974e169010aSmrg	    # If the library has no export list, then create one now
5975e169010aSmrg	    if test -f "$output_objdir/$soname-def"; then :
5976e169010aSmrg	    else
5977e169010aSmrg	      func_verbose "extracting exported symbol list from \`$soname'"
5978e169010aSmrg	      func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
5979e169010aSmrg	    fi
5980e169010aSmrg
5981e169010aSmrg	    # Create $newlib
5982e169010aSmrg	    if test -f "$output_objdir/$newlib"; then :; else
5983e169010aSmrg	      func_verbose "generating import library for \`$soname'"
5984e169010aSmrg	      func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
5985e169010aSmrg	    fi
5986e169010aSmrg	    # make sure the library variables are pointing to the new library
5987e169010aSmrg	    dir=$output_objdir
5988e169010aSmrg	    linklib=$newlib
5989e169010aSmrg	  fi # test -n "$old_archive_from_expsyms_cmds"
5990e169010aSmrg
5991e169010aSmrg	  if test "$linkmode" = prog || test "$mode" != relink; then
5992e169010aSmrg	    add_shlibpath=
5993e169010aSmrg	    add_dir=
5994e169010aSmrg	    add=
5995e169010aSmrg	    lib_linked=yes
5996e169010aSmrg	    case $hardcode_action in
5997e169010aSmrg	    immediate | unsupported)
5998e169010aSmrg	      if test "$hardcode_direct" = no; then
5999e169010aSmrg		add="$dir/$linklib"
6000e169010aSmrg		case $host in
6001e169010aSmrg		  *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
6002e169010aSmrg		  *-*-sysv4*uw2*) add_dir="-L$dir" ;;
6003e169010aSmrg		  *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
6004e169010aSmrg		    *-*-unixware7*) add_dir="-L$dir" ;;
6005e169010aSmrg		  *-*-darwin* )
6006e169010aSmrg		    # if the lib is a (non-dlopened) module then we can not
6007e169010aSmrg		    # link against it, someone is ignoring the earlier warnings
6008e169010aSmrg		    if /usr/bin/file -L $add 2> /dev/null |
6009e169010aSmrg			 $GREP ": [^:]* bundle" >/dev/null ; then
6010e169010aSmrg		      if test "X$dlopenmodule" != "X$lib"; then
6011e169010aSmrg			$ECHO "*** Warning: lib $linklib is a module, not a shared library"
6012e169010aSmrg			if test -z "$old_library" ; then
6013e8ead290Smrg			  echo
6014e8ead290Smrg			  echo "*** And there doesn't seem to be a static archive available"
6015e8ead290Smrg			  echo "*** The link will probably fail, sorry"
6016e169010aSmrg			else
6017e169010aSmrg			  add="$dir/$old_library"
6018e169010aSmrg			fi
6019e169010aSmrg		      elif test -n "$old_library"; then
6020e169010aSmrg			add="$dir/$old_library"
6021e169010aSmrg		      fi
6022e169010aSmrg		    fi
6023e169010aSmrg		esac
6024e169010aSmrg	      elif test "$hardcode_minus_L" = no; then
6025e169010aSmrg		case $host in
6026e169010aSmrg		*-*-sunos*) add_shlibpath="$dir" ;;
6027e169010aSmrg		esac
6028e169010aSmrg		add_dir="-L$dir"
6029e169010aSmrg		add="-l$name"
6030e169010aSmrg	      elif test "$hardcode_shlibpath_var" = no; then
6031e169010aSmrg		add_shlibpath="$dir"
6032e169010aSmrg		add="-l$name"
6033e169010aSmrg	      else
6034e169010aSmrg		lib_linked=no
6035e169010aSmrg	      fi
6036e169010aSmrg	      ;;
6037e169010aSmrg	    relink)
6038e169010aSmrg	      if test "$hardcode_direct" = yes &&
6039e169010aSmrg	         test "$hardcode_direct_absolute" = no; then
6040e169010aSmrg		add="$dir/$linklib"
6041e169010aSmrg	      elif test "$hardcode_minus_L" = yes; then
6042e169010aSmrg		add_dir="-L$dir"
6043e169010aSmrg		# Try looking first in the location we're being installed to.
6044e169010aSmrg		if test -n "$inst_prefix_dir"; then
6045e169010aSmrg		  case $libdir in
6046e169010aSmrg		    [\\/]*)
6047e169010aSmrg		      add_dir="$add_dir -L$inst_prefix_dir$libdir"
6048e169010aSmrg		      ;;
6049e169010aSmrg		  esac
6050e169010aSmrg		fi
6051e169010aSmrg		add="-l$name"
6052e169010aSmrg	      elif test "$hardcode_shlibpath_var" = yes; then
6053e169010aSmrg		add_shlibpath="$dir"
6054e169010aSmrg		add="-l$name"
6055e169010aSmrg	      else
6056e169010aSmrg		lib_linked=no
6057e169010aSmrg	      fi
6058e169010aSmrg	      ;;
6059e169010aSmrg	    *) lib_linked=no ;;
6060e169010aSmrg	    esac
6061e169010aSmrg
6062e169010aSmrg	    if test "$lib_linked" != yes; then
6063e169010aSmrg	      func_fatal_configuration "unsupported hardcode properties"
6064e169010aSmrg	    fi
6065e169010aSmrg
6066e169010aSmrg	    if test -n "$add_shlibpath"; then
6067e169010aSmrg	      case :$compile_shlibpath: in
6068e169010aSmrg	      *":$add_shlibpath:"*) ;;
6069e169010aSmrg	      *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
6070e169010aSmrg	      esac
6071e169010aSmrg	    fi
6072e169010aSmrg	    if test "$linkmode" = prog; then
6073e169010aSmrg	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
6074e169010aSmrg	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
6075e169010aSmrg	    else
6076e169010aSmrg	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
6077e169010aSmrg	      test -n "$add" && deplibs="$add $deplibs"
6078e169010aSmrg	      if test "$hardcode_direct" != yes &&
6079e169010aSmrg		 test "$hardcode_minus_L" != yes &&
6080e169010aSmrg		 test "$hardcode_shlibpath_var" = yes; then
6081e169010aSmrg		case :$finalize_shlibpath: in
6082e169010aSmrg		*":$libdir:"*) ;;
6083e169010aSmrg		*) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
6084e169010aSmrg		esac
6085e169010aSmrg	      fi
6086e169010aSmrg	    fi
6087e169010aSmrg	  fi
6088e169010aSmrg
6089e169010aSmrg	  if test "$linkmode" = prog || test "$mode" = relink; then
6090e169010aSmrg	    add_shlibpath=
6091e169010aSmrg	    add_dir=
6092e169010aSmrg	    add=
6093e169010aSmrg	    # Finalize command for both is simple: just hardcode it.
6094e169010aSmrg	    if test "$hardcode_direct" = yes &&
6095e169010aSmrg	       test "$hardcode_direct_absolute" = no; then
6096e169010aSmrg	      add="$libdir/$linklib"
6097e169010aSmrg	    elif test "$hardcode_minus_L" = yes; then
6098e169010aSmrg	      add_dir="-L$libdir"
6099e169010aSmrg	      add="-l$name"
6100e169010aSmrg	    elif test "$hardcode_shlibpath_var" = yes; then
6101e169010aSmrg	      case :$finalize_shlibpath: in
6102e169010aSmrg	      *":$libdir:"*) ;;
6103e169010aSmrg	      *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
6104e169010aSmrg	      esac
6105e169010aSmrg	      add="-l$name"
6106e169010aSmrg	    elif test "$hardcode_automatic" = yes; then
6107e169010aSmrg	      if test -n "$inst_prefix_dir" &&
6108e169010aSmrg		 test -f "$inst_prefix_dir$libdir/$linklib" ; then
6109e169010aSmrg		add="$inst_prefix_dir$libdir/$linklib"
6110e169010aSmrg	      else
6111e169010aSmrg		add="$libdir/$linklib"
6112e169010aSmrg	      fi
6113e169010aSmrg	    else
6114e169010aSmrg	      # We cannot seem to hardcode it, guess we'll fake it.
6115e169010aSmrg	      add_dir="-L$libdir"
6116e169010aSmrg	      # Try looking first in the location we're being installed to.
6117e169010aSmrg	      if test -n "$inst_prefix_dir"; then
6118e169010aSmrg		case $libdir in
6119e169010aSmrg		  [\\/]*)
6120e169010aSmrg		    add_dir="$add_dir -L$inst_prefix_dir$libdir"
6121e169010aSmrg		    ;;
6122e169010aSmrg		esac
6123e169010aSmrg	      fi
6124e169010aSmrg	      add="-l$name"
6125e169010aSmrg	    fi
6126e169010aSmrg
6127e169010aSmrg	    if test "$linkmode" = prog; then
6128e169010aSmrg	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
6129e169010aSmrg	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
6130e169010aSmrg	    else
6131e169010aSmrg	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
6132e169010aSmrg	      test -n "$add" && deplibs="$add $deplibs"
6133e169010aSmrg	    fi
6134e169010aSmrg	  fi
6135e169010aSmrg	elif test "$linkmode" = prog; then
6136e169010aSmrg	  # Here we assume that one of hardcode_direct or hardcode_minus_L
6137e169010aSmrg	  # is not unsupported.  This is valid on all known static and
6138e169010aSmrg	  # shared platforms.
6139e169010aSmrg	  if test "$hardcode_direct" != unsupported; then
6140e169010aSmrg	    test -n "$old_library" && linklib="$old_library"
6141e169010aSmrg	    compile_deplibs="$dir/$linklib $compile_deplibs"
6142e169010aSmrg	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
6143e169010aSmrg	  else
6144e169010aSmrg	    compile_deplibs="-l$name -L$dir $compile_deplibs"
6145e169010aSmrg	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
6146e169010aSmrg	  fi
6147e169010aSmrg	elif test "$build_libtool_libs" = yes; then
6148e169010aSmrg	  # Not a shared library
6149e169010aSmrg	  if test "$deplibs_check_method" != pass_all; then
6150e169010aSmrg	    # We're trying link a shared library against a static one
6151e169010aSmrg	    # but the system doesn't support it.
6152e169010aSmrg
6153e169010aSmrg	    # Just print a warning and add the library to dependency_libs so
6154e169010aSmrg	    # that the program can be linked against the static library.
6155e8ead290Smrg	    echo
6156e169010aSmrg	    $ECHO "*** Warning: This system can not link to static lib archive $lib."
6157e8ead290Smrg	    echo "*** I have the capability to make that library automatically link in when"
6158e8ead290Smrg	    echo "*** you link to this library.  But I can only do this if you have a"
6159e8ead290Smrg	    echo "*** shared version of the library, which you do not appear to have."
6160e169010aSmrg	    if test "$module" = yes; then
6161e8ead290Smrg	      echo "*** But as you try to build a module library, libtool will still create "
6162e8ead290Smrg	      echo "*** a static module, that should work as long as the dlopening application"
6163e8ead290Smrg	      echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
6164e169010aSmrg	      if test -z "$global_symbol_pipe"; then
6165e8ead290Smrg		echo
6166e8ead290Smrg		echo "*** However, this would only work if libtool was able to extract symbol"
6167e8ead290Smrg		echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
6168e8ead290Smrg		echo "*** not find such a program.  So, this module is probably useless."
6169e8ead290Smrg		echo "*** \`nm' from GNU binutils and a full rebuild may help."
6170e169010aSmrg	      fi
6171e169010aSmrg	      if test "$build_old_libs" = no; then
6172e169010aSmrg		build_libtool_libs=module
6173e169010aSmrg		build_old_libs=yes
6174e169010aSmrg	      else
6175e169010aSmrg		build_libtool_libs=no
6176e169010aSmrg	      fi
6177e169010aSmrg	    fi
6178e169010aSmrg	  else
6179e169010aSmrg	    deplibs="$dir/$old_library $deplibs"
6180e169010aSmrg	    link_static=yes
6181e169010aSmrg	  fi
6182e169010aSmrg	fi # link shared/static library?
6183e169010aSmrg
6184e169010aSmrg	if test "$linkmode" = lib; then
6185e169010aSmrg	  if test -n "$dependency_libs" &&
6186e169010aSmrg	     { test "$hardcode_into_libs" != yes ||
6187e169010aSmrg	       test "$build_old_libs" = yes ||
6188e169010aSmrg	       test "$link_static" = yes; }; then
6189e169010aSmrg	    # Extract -R from dependency_libs
6190e169010aSmrg	    temp_deplibs=
6191e169010aSmrg	    for libdir in $dependency_libs; do
6192e169010aSmrg	      case $libdir in
6193e169010aSmrg	      -R*) func_stripname '-R' '' "$libdir"
6194e169010aSmrg	           temp_xrpath=$func_stripname_result
6195e169010aSmrg		   case " $xrpath " in
6196e169010aSmrg		   *" $temp_xrpath "*) ;;
6197e169010aSmrg		   *) xrpath="$xrpath $temp_xrpath";;
6198e169010aSmrg		   esac;;
6199e169010aSmrg	      *) temp_deplibs="$temp_deplibs $libdir";;
6200e169010aSmrg	      esac
6201e169010aSmrg	    done
6202e169010aSmrg	    dependency_libs="$temp_deplibs"
6203e169010aSmrg	  fi
6204e169010aSmrg
6205e169010aSmrg	  newlib_search_path="$newlib_search_path $absdir"
6206e169010aSmrg	  # Link against this library
6207e169010aSmrg	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
6208e169010aSmrg	  # ... and its dependency_libs
6209e169010aSmrg	  tmp_libs=
6210e169010aSmrg	  for deplib in $dependency_libs; do
6211e169010aSmrg	    newdependency_libs="$deplib $newdependency_libs"
6212e169010aSmrg	    if $opt_duplicate_deps ; then
6213e169010aSmrg	      case "$tmp_libs " in
6214e169010aSmrg	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
6215e169010aSmrg	      esac
6216e169010aSmrg	    fi
6217e169010aSmrg	    tmp_libs="$tmp_libs $deplib"
6218e169010aSmrg	  done
6219e169010aSmrg
6220e169010aSmrg	  if test "$link_all_deplibs" != no; then
6221e169010aSmrg	    # Add the search paths of all dependency libraries
6222e169010aSmrg	    for deplib in $dependency_libs; do
6223e8ead290Smrg	      path=
6224e169010aSmrg	      case $deplib in
6225e169010aSmrg	      -L*) path="$deplib" ;;
6226e169010aSmrg	      *.la)
6227e169010aSmrg	        func_dirname "$deplib" "" "."
6228e169010aSmrg		dir="$func_dirname_result"
6229e169010aSmrg		# We need an absolute path.
6230e169010aSmrg		case $dir in
6231e169010aSmrg		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
6232e169010aSmrg		*)
6233e169010aSmrg		  absdir=`cd "$dir" && pwd`
6234e169010aSmrg		  if test -z "$absdir"; then
6235e169010aSmrg		    func_warning "cannot determine absolute directory name of \`$dir'"
6236e169010aSmrg		    absdir="$dir"
6237e169010aSmrg		  fi
6238e169010aSmrg		  ;;
6239e169010aSmrg		esac
6240e169010aSmrg		if $GREP "^installed=no" $deplib > /dev/null; then
6241e169010aSmrg		case $host in
6242e169010aSmrg		*-*-darwin*)
6243e169010aSmrg		  depdepl=
6244e169010aSmrg		  eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
6245e169010aSmrg		  if test -n "$deplibrary_names" ; then
6246e169010aSmrg		    for tmp in $deplibrary_names ; do
6247e169010aSmrg		      depdepl=$tmp
6248e169010aSmrg		    done
6249e169010aSmrg		    if test -f "$absdir/$objdir/$depdepl" ; then
6250e169010aSmrg		      depdepl="$absdir/$objdir/$depdepl"
6251e169010aSmrg		      darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
6252e169010aSmrg                      if test -z "$darwin_install_name"; then
6253e169010aSmrg                          darwin_install_name=`${OTOOL64} -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
6254e169010aSmrg                      fi
6255e169010aSmrg		      compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
6256e169010aSmrg		      linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}"
6257e169010aSmrg		      path=
6258e169010aSmrg		    fi
6259e169010aSmrg		  fi
6260e169010aSmrg		  ;;
6261e169010aSmrg		*)
6262e169010aSmrg		  path="-L$absdir/$objdir"
6263e169010aSmrg		  ;;
6264e169010aSmrg		esac
6265e169010aSmrg		else
6266e169010aSmrg		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
6267e169010aSmrg		  test -z "$libdir" && \
6268e169010aSmrg		    func_fatal_error "\`$deplib' is not a valid libtool archive"
6269e169010aSmrg		  test "$absdir" != "$libdir" && \
6270e169010aSmrg		    func_warning "\`$deplib' seems to be moved"
6271e169010aSmrg
6272e169010aSmrg		  path="-L$absdir"
6273e169010aSmrg		fi
6274e169010aSmrg		;;
6275e169010aSmrg	      esac
6276e169010aSmrg	      case " $deplibs " in
6277e169010aSmrg	      *" $path "*) ;;
6278e169010aSmrg	      *) deplibs="$path $deplibs" ;;
6279e169010aSmrg	      esac
6280e169010aSmrg	    done
6281e169010aSmrg	  fi # link_all_deplibs != no
6282e169010aSmrg	fi # linkmode = lib
6283e169010aSmrg      done # for deplib in $libs
6284e169010aSmrg      if test "$pass" = link; then
6285e169010aSmrg	if test "$linkmode" = "prog"; then
6286e169010aSmrg	  compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
6287e169010aSmrg	  finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
6288e169010aSmrg	else
6289e8ead290Smrg	  compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
6290e169010aSmrg	fi
6291e169010aSmrg      fi
6292e169010aSmrg      dependency_libs="$newdependency_libs"
6293e169010aSmrg      if test "$pass" = dlpreopen; then
6294e169010aSmrg	# Link the dlpreopened libraries before other libraries
6295e169010aSmrg	for deplib in $save_deplibs; do
6296e169010aSmrg	  deplibs="$deplib $deplibs"
6297e169010aSmrg	done
6298e169010aSmrg      fi
6299e169010aSmrg      if test "$pass" != dlopen; then
6300e169010aSmrg	if test "$pass" != conv; then
6301e169010aSmrg	  # Make sure lib_search_path contains only unique directories.
6302e169010aSmrg	  lib_search_path=
6303e169010aSmrg	  for dir in $newlib_search_path; do
6304e169010aSmrg	    case "$lib_search_path " in
6305e169010aSmrg	    *" $dir "*) ;;
6306e169010aSmrg	    *) lib_search_path="$lib_search_path $dir" ;;
6307e169010aSmrg	    esac
6308e169010aSmrg	  done
6309e169010aSmrg	  newlib_search_path=
6310e169010aSmrg	fi
6311e169010aSmrg
6312e169010aSmrg	if test "$linkmode,$pass" != "prog,link"; then
6313e169010aSmrg	  vars="deplibs"
6314e169010aSmrg	else
6315e169010aSmrg	  vars="compile_deplibs finalize_deplibs"
6316e169010aSmrg	fi
6317e169010aSmrg	for var in $vars dependency_libs; do
6318e169010aSmrg	  # Add libraries to $var in reverse order
6319e169010aSmrg	  eval tmp_libs=\"\$$var\"
6320e169010aSmrg	  new_libs=
6321e169010aSmrg	  for deplib in $tmp_libs; do
6322e169010aSmrg	    # FIXME: Pedantically, this is the right thing to do, so
6323e169010aSmrg	    #        that some nasty dependency loop isn't accidentally
6324e169010aSmrg	    #        broken:
6325e169010aSmrg	    #new_libs="$deplib $new_libs"
6326e169010aSmrg	    # Pragmatically, this seems to cause very few problems in
6327e169010aSmrg	    # practice:
6328e169010aSmrg	    case $deplib in
6329e169010aSmrg	    -L*) new_libs="$deplib $new_libs" ;;
6330e169010aSmrg	    -R*) ;;
6331e169010aSmrg	    *)
6332e169010aSmrg	      # And here is the reason: when a library appears more
6333e169010aSmrg	      # than once as an explicit dependence of a library, or
6334e169010aSmrg	      # is implicitly linked in more than once by the
6335e169010aSmrg	      # compiler, it is considered special, and multiple
6336e169010aSmrg	      # occurrences thereof are not removed.  Compare this
6337e169010aSmrg	      # with having the same library being listed as a
6338e169010aSmrg	      # dependency of multiple other libraries: in this case,
6339e169010aSmrg	      # we know (pedantically, we assume) the library does not
6340e169010aSmrg	      # need to be listed more than once, so we keep only the
6341e169010aSmrg	      # last copy.  This is not always right, but it is rare
6342e169010aSmrg	      # enough that we require users that really mean to play
6343e169010aSmrg	      # such unportable linking tricks to link the library
6344e169010aSmrg	      # using -Wl,-lname, so that libtool does not consider it
6345e169010aSmrg	      # for duplicate removal.
6346e169010aSmrg	      case " $specialdeplibs " in
6347e169010aSmrg	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
6348e169010aSmrg	      *)
6349e169010aSmrg		case " $new_libs " in
6350e169010aSmrg		*" $deplib "*) ;;
6351e169010aSmrg		*) new_libs="$deplib $new_libs" ;;
6352e169010aSmrg		esac
6353e169010aSmrg		;;
6354e169010aSmrg	      esac
6355e169010aSmrg	      ;;
6356e169010aSmrg	    esac
6357e169010aSmrg	  done
6358e169010aSmrg	  tmp_libs=
6359e169010aSmrg	  for deplib in $new_libs; do
6360e169010aSmrg	    case $deplib in
6361e169010aSmrg	    -L*)
6362e169010aSmrg	      case " $tmp_libs " in
6363e169010aSmrg	      *" $deplib "*) ;;
6364e169010aSmrg	      *) tmp_libs="$tmp_libs $deplib" ;;
6365e169010aSmrg	      esac
6366e169010aSmrg	      ;;
6367e169010aSmrg	    *) tmp_libs="$tmp_libs $deplib" ;;
6368e169010aSmrg	    esac
6369e169010aSmrg	  done
6370e169010aSmrg	  eval $var=\"$tmp_libs\"
6371e169010aSmrg	done # for var
6372e169010aSmrg      fi
6373e169010aSmrg      # Last step: remove runtime libs from dependency_libs
6374e169010aSmrg      # (they stay in deplibs)
6375e169010aSmrg      tmp_libs=
6376e169010aSmrg      for i in $dependency_libs ; do
6377e169010aSmrg	case " $predeps $postdeps $compiler_lib_search_path " in
6378e169010aSmrg	*" $i "*)
6379e169010aSmrg	  i=""
6380e169010aSmrg	  ;;
6381e169010aSmrg	esac
6382e169010aSmrg	if test -n "$i" ; then
6383e169010aSmrg	  tmp_libs="$tmp_libs $i"
6384e169010aSmrg	fi
6385e169010aSmrg      done
6386e169010aSmrg      dependency_libs=$tmp_libs
6387e169010aSmrg    done # for pass
6388e169010aSmrg    if test "$linkmode" = prog; then
6389e169010aSmrg      dlfiles="$newdlfiles"
6390e169010aSmrg    fi
6391e169010aSmrg    if test "$linkmode" = prog || test "$linkmode" = lib; then
6392e169010aSmrg      dlprefiles="$newdlprefiles"
6393e169010aSmrg    fi
6394e169010aSmrg
6395e169010aSmrg    case $linkmode in
6396e169010aSmrg    oldlib)
6397e169010aSmrg      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
6398e169010aSmrg	func_warning "\`-dlopen' is ignored for archives"
6399e169010aSmrg      fi
6400e169010aSmrg
6401e169010aSmrg      case " $deplibs" in
6402e169010aSmrg      *\ -l* | *\ -L*)
6403e169010aSmrg	func_warning "\`-l' and \`-L' are ignored for archives" ;;
6404e169010aSmrg      esac
6405e169010aSmrg
6406e169010aSmrg      test -n "$rpath" && \
6407e169010aSmrg	func_warning "\`-rpath' is ignored for archives"
6408e169010aSmrg
6409e169010aSmrg      test -n "$xrpath" && \
6410e169010aSmrg	func_warning "\`-R' is ignored for archives"
6411e169010aSmrg
6412e169010aSmrg      test -n "$vinfo" && \
6413e169010aSmrg	func_warning "\`-version-info/-version-number' is ignored for archives"
6414e169010aSmrg
6415e169010aSmrg      test -n "$release" && \
6416e169010aSmrg	func_warning "\`-release' is ignored for archives"
6417e169010aSmrg
6418e169010aSmrg      test -n "$export_symbols$export_symbols_regex" && \
6419e169010aSmrg	func_warning "\`-export-symbols' is ignored for archives"
6420e169010aSmrg
6421e169010aSmrg      # Now set the variables for building old libraries.
6422e169010aSmrg      build_libtool_libs=no
6423e169010aSmrg      oldlibs="$output"
6424e169010aSmrg      objs="$objs$old_deplibs"
6425e169010aSmrg      ;;
6426e169010aSmrg
6427e169010aSmrg    lib)
6428e169010aSmrg      # Make sure we only generate libraries of the form `libNAME.la'.
6429e169010aSmrg      case $outputname in
6430e169010aSmrg      lib*)
6431e169010aSmrg	func_stripname 'lib' '.la' "$outputname"
6432e169010aSmrg	name=$func_stripname_result
6433e169010aSmrg	eval shared_ext=\"$shrext_cmds\"
6434e169010aSmrg	eval libname=\"$libname_spec\"
6435e169010aSmrg	;;
6436e169010aSmrg      *)
6437e169010aSmrg	test "$module" = no && \
6438e169010aSmrg	  func_fatal_help "libtool library \`$output' must begin with \`lib'"
6439e169010aSmrg
6440e169010aSmrg	if test "$need_lib_prefix" != no; then
6441e169010aSmrg	  # Add the "lib" prefix for modules if required
6442e169010aSmrg	  func_stripname '' '.la' "$outputname"
6443e169010aSmrg	  name=$func_stripname_result
6444e169010aSmrg	  eval shared_ext=\"$shrext_cmds\"
6445e169010aSmrg	  eval libname=\"$libname_spec\"
6446e169010aSmrg	else
6447e169010aSmrg	  func_stripname '' '.la' "$outputname"
6448e169010aSmrg	  libname=$func_stripname_result
6449e169010aSmrg	fi
6450e169010aSmrg	;;
6451e169010aSmrg      esac
6452e169010aSmrg
6453e169010aSmrg      if test -n "$objs"; then
6454e169010aSmrg	if test "$deplibs_check_method" != pass_all; then
6455e169010aSmrg	  func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
6456e169010aSmrg	else
6457e8ead290Smrg	  echo
6458e169010aSmrg	  $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
6459e169010aSmrg	  $ECHO "*** objects $objs is not portable!"
6460e169010aSmrg	  libobjs="$libobjs $objs"
6461e169010aSmrg	fi
6462e169010aSmrg      fi
6463e169010aSmrg
6464e169010aSmrg      test "$dlself" != no && \
6465e169010aSmrg	func_warning "\`-dlopen self' is ignored for libtool libraries"
6466e169010aSmrg
6467e169010aSmrg      set dummy $rpath
6468e169010aSmrg      shift
6469e169010aSmrg      test "$#" -gt 1 && \
6470e169010aSmrg	func_warning "ignoring multiple \`-rpath's for a libtool library"
6471e169010aSmrg
6472e169010aSmrg      install_libdir="$1"
6473e169010aSmrg
6474e169010aSmrg      oldlibs=
6475e169010aSmrg      if test -z "$rpath"; then
6476e169010aSmrg	if test "$build_libtool_libs" = yes; then
6477e169010aSmrg	  # Building a libtool convenience library.
6478e169010aSmrg	  # Some compilers have problems with a `.al' extension so
6479e169010aSmrg	  # convenience libraries should have the same extension an
6480e169010aSmrg	  # archive normally would.
6481e169010aSmrg	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
6482e169010aSmrg	  build_libtool_libs=convenience
6483e169010aSmrg	  build_old_libs=yes
6484e169010aSmrg	fi
6485e169010aSmrg
6486e169010aSmrg	test -n "$vinfo" && \
6487e169010aSmrg	  func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
6488e169010aSmrg
6489e169010aSmrg	test -n "$release" && \
6490e169010aSmrg	  func_warning "\`-release' is ignored for convenience libraries"
6491e169010aSmrg      else
6492e169010aSmrg
6493e169010aSmrg	# Parse the version information argument.
6494e169010aSmrg	save_ifs="$IFS"; IFS=':'
6495e169010aSmrg	set dummy $vinfo 0 0 0
6496e169010aSmrg	shift
6497e169010aSmrg	IFS="$save_ifs"
6498e169010aSmrg
6499e169010aSmrg	test -n "$7" && \
6500e169010aSmrg	  func_fatal_help "too many parameters to \`-version-info'"
6501e169010aSmrg
6502e169010aSmrg	# convert absolute version numbers to libtool ages
6503e169010aSmrg	# this retains compatibility with .la files and attempts
6504e169010aSmrg	# to make the code below a bit more comprehensible
6505e169010aSmrg
6506e169010aSmrg	case $vinfo_number in
6507e169010aSmrg	yes)
6508e169010aSmrg	  number_major="$1"
6509e169010aSmrg	  number_minor="$2"
6510e169010aSmrg	  number_revision="$3"
6511e169010aSmrg	  #
6512e169010aSmrg	  # There are really only two kinds -- those that
6513e169010aSmrg	  # use the current revision as the major version
6514e169010aSmrg	  # and those that subtract age and use age as
6515e169010aSmrg	  # a minor version.  But, then there is irix
6516e169010aSmrg	  # which has an extra 1 added just for fun
6517e169010aSmrg	  #
6518e169010aSmrg	  case $version_type in
6519e169010aSmrg	  darwin|linux|osf|windows|none)
6520e169010aSmrg	    func_arith $number_major + $number_minor
6521e169010aSmrg	    current=$func_arith_result
6522e169010aSmrg	    age="$number_minor"
6523e169010aSmrg	    revision="$number_revision"
6524e169010aSmrg	    ;;
6525e8ead290Smrg	  freebsd-aout|freebsd-elf|qnx|sunos)
6526e169010aSmrg	    current="$number_major"
6527e169010aSmrg	    revision="$number_minor"
6528e169010aSmrg	    age="0"
6529e169010aSmrg	    ;;
6530e169010aSmrg	  irix|nonstopux)
6531e169010aSmrg	    func_arith $number_major + $number_minor
6532e169010aSmrg	    current=$func_arith_result
6533e169010aSmrg	    age="$number_minor"
6534e169010aSmrg	    revision="$number_minor"
6535e169010aSmrg	    lt_irix_increment=no
6536e169010aSmrg	    ;;
6537e169010aSmrg	  esac
6538e169010aSmrg	  ;;
6539e169010aSmrg	no)
6540e169010aSmrg	  current="$1"
6541e169010aSmrg	  revision="$2"
6542e169010aSmrg	  age="$3"
6543e169010aSmrg	  ;;
6544e169010aSmrg	esac
6545e169010aSmrg
6546e169010aSmrg	# Check that each of the things are valid numbers.
6547e169010aSmrg	case $current in
6548e169010aSmrg	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]) ;;
6549e169010aSmrg	*)
6550e169010aSmrg	  func_error "CURRENT \`$current' must be a nonnegative integer"
6551e169010aSmrg	  func_fatal_error "\`$vinfo' is not valid version information"
6552e169010aSmrg	  ;;
6553e169010aSmrg	esac
6554e169010aSmrg
6555e169010aSmrg	case $revision in
6556e169010aSmrg	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]) ;;
6557e169010aSmrg	*)
6558e169010aSmrg	  func_error "REVISION \`$revision' must be a nonnegative integer"
6559e169010aSmrg	  func_fatal_error "\`$vinfo' is not valid version information"
6560e169010aSmrg	  ;;
6561e169010aSmrg	esac
6562e169010aSmrg
6563e169010aSmrg	case $age in
6564e169010aSmrg	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]) ;;
6565e169010aSmrg	*)
6566e169010aSmrg	  func_error "AGE \`$age' must be a nonnegative integer"
6567e169010aSmrg	  func_fatal_error "\`$vinfo' is not valid version information"
6568e169010aSmrg	  ;;
6569e169010aSmrg	esac
6570e169010aSmrg
6571e169010aSmrg	if test "$age" -gt "$current"; then
6572e169010aSmrg	  func_error "AGE \`$age' is greater than the current interface number \`$current'"
6573e169010aSmrg	  func_fatal_error "\`$vinfo' is not valid version information"
6574e169010aSmrg	fi
6575e169010aSmrg
6576e169010aSmrg	# Calculate the version variables.
6577e169010aSmrg	major=
6578e169010aSmrg	versuffix=
6579e169010aSmrg	verstring=
6580e169010aSmrg	case $version_type in
6581e169010aSmrg	none) ;;
6582e169010aSmrg
6583e169010aSmrg	darwin)
6584e169010aSmrg	  # Like Linux, but with the current version available in
6585e169010aSmrg	  # verstring for coding it into the library header
6586e169010aSmrg	  func_arith $current - $age
6587e169010aSmrg	  major=.$func_arith_result
6588e169010aSmrg	  versuffix="$major.$age.$revision"
6589e169010aSmrg	  # Darwin ld doesn't like 0 for these options...
6590e169010aSmrg	  func_arith $current + 1
6591e169010aSmrg	  minor_current=$func_arith_result
6592e169010aSmrg	  xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
6593e169010aSmrg	  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
6594e169010aSmrg	  ;;
6595e169010aSmrg
6596e169010aSmrg	freebsd-aout)
6597e169010aSmrg	  major=".$current"
6598e169010aSmrg	  versuffix=".$current.$revision";
6599e169010aSmrg	  ;;
6600e169010aSmrg
6601e169010aSmrg	freebsd-elf)
6602e169010aSmrg	  major=".$current"
6603e169010aSmrg	  versuffix=".$current"
6604e169010aSmrg	  ;;
6605e169010aSmrg
6606e169010aSmrg	irix | nonstopux)
6607e169010aSmrg	  if test "X$lt_irix_increment" = "Xno"; then
6608e169010aSmrg	    func_arith $current - $age
6609e169010aSmrg	  else
6610e169010aSmrg	    func_arith $current - $age + 1
6611e169010aSmrg	  fi
6612e169010aSmrg	  major=$func_arith_result
6613e169010aSmrg
6614e169010aSmrg	  case $version_type in
6615e169010aSmrg	    nonstopux) verstring_prefix=nonstopux ;;
6616e169010aSmrg	    *)         verstring_prefix=sgi ;;
6617e169010aSmrg	  esac
6618e169010aSmrg	  verstring="$verstring_prefix$major.$revision"
6619e169010aSmrg
6620e169010aSmrg	  # Add in all the interfaces that we are compatible with.
6621e169010aSmrg	  loop=$revision
6622e169010aSmrg	  while test "$loop" -ne 0; do
6623e169010aSmrg	    func_arith $revision - $loop
6624e169010aSmrg	    iface=$func_arith_result
6625e169010aSmrg	    func_arith $loop - 1
6626e169010aSmrg	    loop=$func_arith_result
6627e169010aSmrg	    verstring="$verstring_prefix$major.$iface:$verstring"
6628e169010aSmrg	  done
6629e169010aSmrg
6630e169010aSmrg	  # Before this point, $major must not contain `.'.
6631e169010aSmrg	  major=.$major
6632e169010aSmrg	  versuffix="$major.$revision"
6633e169010aSmrg	  ;;
6634e169010aSmrg
6635e169010aSmrg	linux)
6636e169010aSmrg	  func_arith $current - $age
6637e169010aSmrg	  major=.$func_arith_result
6638e169010aSmrg	  versuffix="$major.$age.$revision"
6639e169010aSmrg	  ;;
6640e169010aSmrg
6641e169010aSmrg	osf)
6642e169010aSmrg	  func_arith $current - $age
6643e169010aSmrg	  major=.$func_arith_result
6644e169010aSmrg	  versuffix=".$current.$age.$revision"
6645e169010aSmrg	  verstring="$current.$age.$revision"
6646e169010aSmrg
6647e169010aSmrg	  # Add in all the interfaces that we are compatible with.
6648e169010aSmrg	  loop=$age
6649e169010aSmrg	  while test "$loop" -ne 0; do
6650e169010aSmrg	    func_arith $current - $loop
6651e169010aSmrg	    iface=$func_arith_result
6652e169010aSmrg	    func_arith $loop - 1
6653e169010aSmrg	    loop=$func_arith_result
6654e169010aSmrg	    verstring="$verstring:${iface}.0"
6655e169010aSmrg	  done
6656e169010aSmrg
6657e169010aSmrg	  # Make executables depend on our current version.
6658e169010aSmrg	  verstring="$verstring:${current}.0"
6659e169010aSmrg	  ;;
6660e169010aSmrg
6661e169010aSmrg	qnx)
6662e169010aSmrg	  major=".$current"
6663e169010aSmrg	  versuffix=".$current"
6664e169010aSmrg	  ;;
6665e169010aSmrg
6666e169010aSmrg	sunos)
6667e169010aSmrg	  major=".$current"
6668e169010aSmrg	  versuffix=".$current.$revision"
6669e169010aSmrg	  ;;
6670e169010aSmrg
6671e169010aSmrg	windows)
6672e169010aSmrg	  # Use '-' rather than '.', since we only want one
6673e169010aSmrg	  # extension on DOS 8.3 filesystems.
6674e169010aSmrg	  func_arith $current - $age
6675e169010aSmrg	  major=$func_arith_result
6676e169010aSmrg	  versuffix="-$major"
6677e169010aSmrg	  ;;
6678e169010aSmrg
6679e169010aSmrg	*)
6680e169010aSmrg	  func_fatal_configuration "unknown library version type \`$version_type'"
6681e169010aSmrg	  ;;
6682e169010aSmrg	esac
6683e169010aSmrg
6684e169010aSmrg	# Clear the version info if we defaulted, and they specified a release.
6685e169010aSmrg	if test -z "$vinfo" && test -n "$release"; then
6686e169010aSmrg	  major=
6687e169010aSmrg	  case $version_type in
6688e169010aSmrg	  darwin)
6689e169010aSmrg	    # we can't check for "0.0" in archive_cmds due to quoting
6690e169010aSmrg	    # problems, so we reset it completely
6691e169010aSmrg	    verstring=
6692e169010aSmrg	    ;;
6693e169010aSmrg	  *)
6694e169010aSmrg	    verstring="0.0"
6695e169010aSmrg	    ;;
6696e169010aSmrg	  esac
6697e169010aSmrg	  if test "$need_version" = no; then
6698e169010aSmrg	    versuffix=
6699e169010aSmrg	  else
6700e169010aSmrg	    versuffix=".0.0"
6701e169010aSmrg	  fi
6702e169010aSmrg	fi
6703e169010aSmrg
6704e169010aSmrg	# Remove version info from name if versioning should be avoided
6705e169010aSmrg	if test "$avoid_version" = yes && test "$need_version" = no; then
6706e169010aSmrg	  major=
6707e169010aSmrg	  versuffix=
6708e169010aSmrg	  verstring=""
6709e169010aSmrg	fi
6710e169010aSmrg
6711e169010aSmrg	# Check to see if the archive will have undefined symbols.
6712e169010aSmrg	if test "$allow_undefined" = yes; then
6713e169010aSmrg	  if test "$allow_undefined_flag" = unsupported; then
6714e169010aSmrg	    func_warning "undefined symbols not allowed in $host shared libraries"
6715e169010aSmrg	    build_libtool_libs=no
6716e169010aSmrg	    build_old_libs=yes
6717e169010aSmrg	  fi
6718e169010aSmrg	else
6719e169010aSmrg	  # Don't allow undefined symbols.
6720e169010aSmrg	  allow_undefined_flag="$no_undefined_flag"
6721e169010aSmrg	fi
6722e169010aSmrg
6723e169010aSmrg      fi
6724e169010aSmrg
6725e169010aSmrg      func_generate_dlsyms "$libname" "$libname" "yes"
6726e169010aSmrg      libobjs="$libobjs $symfileobj"
6727e169010aSmrg      test "X$libobjs" = "X " && libobjs=
6728e169010aSmrg
6729e169010aSmrg      if test "$mode" != relink; then
6730e169010aSmrg	# Remove our outputs, but don't remove object files since they
6731e169010aSmrg	# may have been created when compiling PIC objects.
6732e169010aSmrg	removelist=
6733e169010aSmrg	tempremovelist=`$ECHO "$output_objdir/*"`
6734e169010aSmrg	for p in $tempremovelist; do
6735e169010aSmrg	  case $p in
6736e169010aSmrg	    *.$objext | *.gcno)
6737e169010aSmrg	       ;;
6738e169010aSmrg	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
6739e169010aSmrg	       if test "X$precious_files_regex" != "X"; then
6740e169010aSmrg		 if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
6741e169010aSmrg		 then
6742e169010aSmrg		   continue
6743e169010aSmrg		 fi
6744e169010aSmrg	       fi
6745e169010aSmrg	       removelist="$removelist $p"
6746e169010aSmrg	       ;;
6747e169010aSmrg	    *) ;;
6748e169010aSmrg	  esac
6749e169010aSmrg	done
6750e169010aSmrg	test -n "$removelist" && \
6751e169010aSmrg	  func_show_eval "${RM}r \$removelist"
6752e169010aSmrg      fi
6753e169010aSmrg
6754e169010aSmrg      # Now set the variables for building old libraries.
6755e169010aSmrg      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
6756e169010aSmrg	oldlibs="$oldlibs $output_objdir/$libname.$libext"
6757e169010aSmrg
6758e169010aSmrg	# Transform .lo files to .o files.
6759e8ead290Smrg	oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP`
6760e169010aSmrg      fi
6761e169010aSmrg
6762e169010aSmrg      # Eliminate all temporary directories.
6763e169010aSmrg      #for path in $notinst_path; do
6764e8ead290Smrg      #	lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"`
6765e8ead290Smrg      #	deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"`
6766e8ead290Smrg      #	dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"`
6767e169010aSmrg      #done
6768e169010aSmrg
6769e169010aSmrg      if test -n "$xrpath"; then
6770e169010aSmrg	# If the user specified any rpath flags, then add them.
6771e169010aSmrg	temp_xrpath=
6772e169010aSmrg	for libdir in $xrpath; do
6773e169010aSmrg	  temp_xrpath="$temp_xrpath -R$libdir"
6774e169010aSmrg	  case "$finalize_rpath " in
6775e169010aSmrg	  *" $libdir "*) ;;
6776e169010aSmrg	  *) finalize_rpath="$finalize_rpath $libdir" ;;
6777e169010aSmrg	  esac
6778e169010aSmrg	done
6779e169010aSmrg	if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
6780e169010aSmrg	  dependency_libs="$temp_xrpath $dependency_libs"
6781e169010aSmrg	fi
6782e169010aSmrg      fi
6783e169010aSmrg
6784e169010aSmrg      # Make sure dlfiles contains only unique files that won't be dlpreopened
6785e169010aSmrg      old_dlfiles="$dlfiles"
6786e169010aSmrg      dlfiles=
6787e169010aSmrg      for lib in $old_dlfiles; do
6788e169010aSmrg	case " $dlprefiles $dlfiles " in
6789e169010aSmrg	*" $lib "*) ;;
6790e169010aSmrg	*) dlfiles="$dlfiles $lib" ;;
6791e169010aSmrg	esac
6792e169010aSmrg      done
6793e169010aSmrg
6794e169010aSmrg      # Make sure dlprefiles contains only unique files
6795e169010aSmrg      old_dlprefiles="$dlprefiles"
6796e169010aSmrg      dlprefiles=
6797e169010aSmrg      for lib in $old_dlprefiles; do
6798e169010aSmrg	case "$dlprefiles " in
6799e169010aSmrg	*" $lib "*) ;;
6800e169010aSmrg	*) dlprefiles="$dlprefiles $lib" ;;
6801e169010aSmrg	esac
6802e169010aSmrg      done
6803e169010aSmrg
6804e169010aSmrg      if test "$build_libtool_libs" = yes; then
6805e169010aSmrg	if test -n "$rpath"; then
6806e169010aSmrg	  case $host in
6807e8ead290Smrg	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*)
6808e169010aSmrg	    # these systems don't actually have a c library (as such)!
6809e169010aSmrg	    ;;
6810e169010aSmrg	  *-*-rhapsody* | *-*-darwin1.[012])
6811e169010aSmrg	    # Rhapsody C library is in the System framework
6812e169010aSmrg	    deplibs="$deplibs System.ltframework"
6813e169010aSmrg	    ;;
6814e169010aSmrg	  *-*-netbsd*)
6815e169010aSmrg	    # Don't link with libc until the a.out ld.so is fixed.
6816e169010aSmrg	    ;;
6817e169010aSmrg	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
6818e169010aSmrg	    # Do not include libc due to us having libc/libc_r.
6819e169010aSmrg	    ;;
6820e169010aSmrg	  *-*-sco3.2v5* | *-*-sco5v6*)
6821e169010aSmrg	    # Causes problems with __ctype
6822e169010aSmrg	    ;;
6823e169010aSmrg	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
6824e169010aSmrg	    # Compiler inserts libc in the correct place for threads to work
6825e169010aSmrg	    ;;
6826e169010aSmrg	  *)
6827e169010aSmrg	    # Add libc to deplibs on all other systems if necessary.
6828e169010aSmrg	    if test "$build_libtool_need_lc" = "yes"; then
6829e169010aSmrg	      deplibs="$deplibs -lc"
6830e169010aSmrg	    fi
6831e169010aSmrg	    ;;
6832e169010aSmrg	  esac
6833e169010aSmrg	fi
6834e169010aSmrg
6835e169010aSmrg	# Transform deplibs into only deplibs that can be linked in shared.
6836e169010aSmrg	name_save=$name
6837e169010aSmrg	libname_save=$libname
6838e169010aSmrg	release_save=$release
6839e169010aSmrg	versuffix_save=$versuffix
6840e169010aSmrg	major_save=$major
6841e169010aSmrg	# I'm not sure if I'm treating the release correctly.  I think
6842e169010aSmrg	# release should show up in the -l (ie -lgmp5) so we don't want to
6843e169010aSmrg	# add it in twice.  Is that correct?
6844e169010aSmrg	release=""
6845e169010aSmrg	versuffix=""
6846e169010aSmrg	major=""
6847e169010aSmrg	newdeplibs=
6848e169010aSmrg	droppeddeps=no
6849e169010aSmrg	case $deplibs_check_method in
6850e169010aSmrg	pass_all)
6851e169010aSmrg	  # Don't check for shared/static.  Everything works.
6852e169010aSmrg	  # This might be a little naive.  We might want to check
6853e169010aSmrg	  # whether the library exists or not.  But this is on
6854e169010aSmrg	  # osf3 & osf4 and I'm not really sure... Just
6855e169010aSmrg	  # implementing what was already the behavior.
6856e169010aSmrg	  newdeplibs=$deplibs
6857e169010aSmrg	  ;;
6858e169010aSmrg	test_compile)
6859e169010aSmrg	  # This code stresses the "libraries are programs" paradigm to its
6860e169010aSmrg	  # limits. Maybe even breaks it.  We compile a program, linking it
6861e169010aSmrg	  # against the deplibs as a proxy for the library.  Then we can check
6862e169010aSmrg	  # whether they linked in statically or dynamically with ldd.
6863e169010aSmrg	  $opt_dry_run || $RM conftest.c
6864e169010aSmrg	  cat > conftest.c <<EOF
6865e169010aSmrg	  int main() { return 0; }
6866e169010aSmrgEOF
6867e169010aSmrg	  $opt_dry_run || $RM conftest
6868e169010aSmrg	  if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
6869e169010aSmrg	    ldd_output=`ldd conftest`
6870e169010aSmrg	    for i in $deplibs; do
6871e169010aSmrg	      case $i in
6872e169010aSmrg	      -l*)
6873e169010aSmrg		func_stripname -l '' "$i"
6874e169010aSmrg		name=$func_stripname_result
6875e169010aSmrg		if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
6876e169010aSmrg		  case " $predeps $postdeps " in
6877e169010aSmrg		  *" $i "*)
6878e169010aSmrg		    newdeplibs="$newdeplibs $i"
6879e169010aSmrg		    i=""
6880e169010aSmrg		    ;;
6881e169010aSmrg		  esac
6882e169010aSmrg		fi
6883e169010aSmrg		if test -n "$i" ; then
6884e169010aSmrg		  libname=`eval "\\$ECHO \"$libname_spec\""`
6885e169010aSmrg		  deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
6886e169010aSmrg		  set dummy $deplib_matches; shift
6887e169010aSmrg		  deplib_match=$1
6888e169010aSmrg		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
6889e169010aSmrg		    newdeplibs="$newdeplibs $i"
6890e169010aSmrg		  else
6891e169010aSmrg		    droppeddeps=yes
6892e8ead290Smrg		    echo
6893e169010aSmrg		    $ECHO "*** Warning: dynamic linker does not accept needed library $i."
6894e8ead290Smrg		    echo "*** I have the capability to make that library automatically link in when"
6895e8ead290Smrg		    echo "*** you link to this library.  But I can only do this if you have a"
6896e8ead290Smrg		    echo "*** shared version of the library, which I believe you do not have"
6897e8ead290Smrg		    echo "*** because a test_compile did reveal that the linker did not use it for"
6898e8ead290Smrg		    echo "*** its dynamic dependency list that programs get resolved with at runtime."
6899e169010aSmrg		  fi
6900e169010aSmrg		fi
6901e169010aSmrg		;;
6902e169010aSmrg	      *)
6903e169010aSmrg		newdeplibs="$newdeplibs $i"
6904e169010aSmrg		;;
6905e169010aSmrg	      esac
6906e169010aSmrg	    done
6907e169010aSmrg	  else
6908e169010aSmrg	    # Error occurred in the first compile.  Let's try to salvage
6909e169010aSmrg	    # the situation: Compile a separate program for each library.
6910e169010aSmrg	    for i in $deplibs; do
6911e169010aSmrg	      case $i in
6912e169010aSmrg	      -l*)
6913e169010aSmrg		func_stripname -l '' "$i"
6914e169010aSmrg		name=$func_stripname_result
6915e169010aSmrg		$opt_dry_run || $RM conftest
6916e169010aSmrg		if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
6917e169010aSmrg		  ldd_output=`ldd conftest`
6918e169010aSmrg		  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
6919e169010aSmrg		    case " $predeps $postdeps " in
6920e169010aSmrg		    *" $i "*)
6921e169010aSmrg		      newdeplibs="$newdeplibs $i"
6922e169010aSmrg		      i=""
6923e169010aSmrg		      ;;
6924e169010aSmrg		    esac
6925e169010aSmrg		  fi
6926e169010aSmrg		  if test -n "$i" ; then
6927e169010aSmrg		    libname=`eval "\\$ECHO \"$libname_spec\""`
6928e169010aSmrg		    deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
6929e169010aSmrg		    set dummy $deplib_matches; shift
6930e169010aSmrg		    deplib_match=$1
6931e169010aSmrg		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
6932e169010aSmrg		      newdeplibs="$newdeplibs $i"
6933e169010aSmrg		    else
6934e169010aSmrg		      droppeddeps=yes
6935e8ead290Smrg		      echo
6936e169010aSmrg		      $ECHO "*** Warning: dynamic linker does not accept needed library $i."
6937e8ead290Smrg		      echo "*** I have the capability to make that library automatically link in when"
6938e8ead290Smrg		      echo "*** you link to this library.  But I can only do this if you have a"
6939e8ead290Smrg		      echo "*** shared version of the library, which you do not appear to have"
6940e8ead290Smrg		      echo "*** because a test_compile did reveal that the linker did not use this one"
6941e8ead290Smrg		      echo "*** as a dynamic dependency that programs can get resolved with at runtime."
6942e169010aSmrg		    fi
6943e169010aSmrg		  fi
6944e169010aSmrg		else
6945e169010aSmrg		  droppeddeps=yes
6946e8ead290Smrg		  echo
6947e169010aSmrg		  $ECHO "*** Warning!  Library $i is needed by this library but I was not able to"
6948e8ead290Smrg		  echo "*** make it link in!  You will probably need to install it or some"
6949e8ead290Smrg		  echo "*** library that it depends on before this library will be fully"
6950e8ead290Smrg		  echo "*** functional.  Installing it before continuing would be even better."
6951e169010aSmrg		fi
6952e169010aSmrg		;;
6953e169010aSmrg	      *)
6954e169010aSmrg		newdeplibs="$newdeplibs $i"
6955e169010aSmrg		;;
6956e169010aSmrg	      esac
6957e169010aSmrg	    done
6958e169010aSmrg	  fi
6959e169010aSmrg	  ;;
6960e169010aSmrg	file_magic*)
6961e169010aSmrg	  set dummy $deplibs_check_method; shift
6962e169010aSmrg	  file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
6963e169010aSmrg	  for a_deplib in $deplibs; do
6964e169010aSmrg	    case $a_deplib in
6965e169010aSmrg	    -l*)
6966e169010aSmrg	      func_stripname -l '' "$a_deplib"
6967e169010aSmrg	      name=$func_stripname_result
6968e169010aSmrg	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
6969e169010aSmrg		case " $predeps $postdeps " in
6970e169010aSmrg		*" $a_deplib "*)
6971e169010aSmrg		  newdeplibs="$newdeplibs $a_deplib"
6972e169010aSmrg		  a_deplib=""
6973e169010aSmrg		  ;;
6974e169010aSmrg		esac
6975e169010aSmrg	      fi
6976e169010aSmrg	      if test -n "$a_deplib" ; then
6977e169010aSmrg		libname=`eval "\\$ECHO \"$libname_spec\""`
6978e169010aSmrg		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
6979e169010aSmrg		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
6980e169010aSmrg		  for potent_lib in $potential_libs; do
6981e169010aSmrg		      # Follow soft links.
6982e169010aSmrg		      if ls -lLd "$potent_lib" 2>/dev/null |
6983e169010aSmrg			 $GREP " -> " >/dev/null; then
6984e169010aSmrg			continue
6985e169010aSmrg		      fi
6986e169010aSmrg		      # The statement above tries to avoid entering an
6987e169010aSmrg		      # endless loop below, in case of cyclic links.
6988e169010aSmrg		      # We might still enter an endless loop, since a link
6989e169010aSmrg		      # loop can be closed while we follow links,
6990e169010aSmrg		      # but so what?
6991e169010aSmrg		      potlib="$potent_lib"
6992e169010aSmrg		      while test -h "$potlib" 2>/dev/null; do
6993e169010aSmrg			potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
6994e169010aSmrg			case $potliblink in
6995e169010aSmrg			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
6996e8ead290Smrg			*) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";;
6997e169010aSmrg			esac
6998e169010aSmrg		      done
6999e169010aSmrg		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
7000e169010aSmrg			 $SED -e 10q |
7001e169010aSmrg			 $EGREP "$file_magic_regex" > /dev/null; then
7002e169010aSmrg			newdeplibs="$newdeplibs $a_deplib"
7003e169010aSmrg			a_deplib=""
7004e169010aSmrg			break 2
7005e169010aSmrg		      fi
7006e169010aSmrg		  done
7007e169010aSmrg		done
7008e169010aSmrg	      fi
7009e169010aSmrg	      if test -n "$a_deplib" ; then
7010e169010aSmrg		droppeddeps=yes
7011e8ead290Smrg		echo
7012e169010aSmrg		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
7013e8ead290Smrg		echo "*** I have the capability to make that library automatically link in when"
7014e8ead290Smrg		echo "*** you link to this library.  But I can only do this if you have a"
7015e8ead290Smrg		echo "*** shared version of the library, which you do not appear to have"
7016e8ead290Smrg		echo "*** because I did check the linker path looking for a file starting"
7017e169010aSmrg		if test -z "$potlib" ; then
7018e169010aSmrg		  $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
7019e169010aSmrg		else
7020e169010aSmrg		  $ECHO "*** with $libname and none of the candidates passed a file format test"
7021e169010aSmrg		  $ECHO "*** using a file magic. Last file checked: $potlib"
7022e169010aSmrg		fi
7023e169010aSmrg	      fi
7024e169010aSmrg	      ;;
7025e169010aSmrg	    *)
7026e169010aSmrg	      # Add a -L argument.
7027e169010aSmrg	      newdeplibs="$newdeplibs $a_deplib"
7028e169010aSmrg	      ;;
7029e169010aSmrg	    esac
7030e169010aSmrg	  done # Gone through all deplibs.
7031e169010aSmrg	  ;;
7032e169010aSmrg	match_pattern*)
7033e169010aSmrg	  set dummy $deplibs_check_method; shift
7034e169010aSmrg	  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
7035e169010aSmrg	  for a_deplib in $deplibs; do
7036e169010aSmrg	    case $a_deplib in
7037e169010aSmrg	    -l*)
7038e169010aSmrg	      func_stripname -l '' "$a_deplib"
7039e169010aSmrg	      name=$func_stripname_result
7040e169010aSmrg	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
7041e169010aSmrg		case " $predeps $postdeps " in
7042e169010aSmrg		*" $a_deplib "*)
7043e169010aSmrg		  newdeplibs="$newdeplibs $a_deplib"
7044e169010aSmrg		  a_deplib=""
7045e169010aSmrg		  ;;
7046e169010aSmrg		esac
7047e169010aSmrg	      fi
7048e169010aSmrg	      if test -n "$a_deplib" ; then
7049e169010aSmrg		libname=`eval "\\$ECHO \"$libname_spec\""`
7050e169010aSmrg		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
7051e169010aSmrg		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
7052e169010aSmrg		  for potent_lib in $potential_libs; do
7053e169010aSmrg		    potlib="$potent_lib" # see symlink-check above in file_magic test
7054e8ead290Smrg		    if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \
7055e169010aSmrg		       $EGREP "$match_pattern_regex" > /dev/null; then
7056e169010aSmrg		      newdeplibs="$newdeplibs $a_deplib"
7057e169010aSmrg		      a_deplib=""
7058e169010aSmrg		      break 2
7059e169010aSmrg		    fi
7060e169010aSmrg		  done
7061e169010aSmrg		done
7062e169010aSmrg	      fi
7063e169010aSmrg	      if test -n "$a_deplib" ; then
7064e169010aSmrg		droppeddeps=yes
7065e8ead290Smrg		echo
7066e169010aSmrg		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
7067e8ead290Smrg		echo "*** I have the capability to make that library automatically link in when"
7068e8ead290Smrg		echo "*** you link to this library.  But I can only do this if you have a"
7069e8ead290Smrg		echo "*** shared version of the library, which you do not appear to have"
7070e8ead290Smrg		echo "*** because I did check the linker path looking for a file starting"
7071e169010aSmrg		if test -z "$potlib" ; then
7072e169010aSmrg		  $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
7073e169010aSmrg		else
7074e169010aSmrg		  $ECHO "*** with $libname and none of the candidates passed a file format test"
7075e169010aSmrg		  $ECHO "*** using a regex pattern. Last file checked: $potlib"
7076e169010aSmrg		fi
7077e169010aSmrg	      fi
7078e169010aSmrg	      ;;
7079e169010aSmrg	    *)
7080e169010aSmrg	      # Add a -L argument.
7081e169010aSmrg	      newdeplibs="$newdeplibs $a_deplib"
7082e169010aSmrg	      ;;
7083e169010aSmrg	    esac
7084e169010aSmrg	  done # Gone through all deplibs.
7085e169010aSmrg	  ;;
7086e169010aSmrg	none | unknown | *)
7087e169010aSmrg	  newdeplibs=""
7088e8ead290Smrg	  tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'`
7089e169010aSmrg	  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
7090e169010aSmrg	    for i in $predeps $postdeps ; do
7091e169010aSmrg	      # can't use Xsed below, because $i might contain '/'
7092e8ead290Smrg	      tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"`
7093e169010aSmrg	    done
7094e169010aSmrg	  fi
7095e8ead290Smrg	  case $tmp_deplibs in
7096e8ead290Smrg	  *[!\	\ ]*)
7097e8ead290Smrg	    echo
7098e169010aSmrg	    if test "X$deplibs_check_method" = "Xnone"; then
7099e8ead290Smrg	      echo "*** Warning: inter-library dependencies are not supported in this platform."
7100e169010aSmrg	    else
7101e8ead290Smrg	      echo "*** Warning: inter-library dependencies are not known to be supported."
7102e169010aSmrg	    fi
7103e8ead290Smrg	    echo "*** All declared inter-library dependencies are being dropped."
7104e169010aSmrg	    droppeddeps=yes
7105e8ead290Smrg	    ;;
7106e8ead290Smrg	  esac
7107e169010aSmrg	  ;;
7108e169010aSmrg	esac
7109e169010aSmrg	versuffix=$versuffix_save
7110e169010aSmrg	major=$major_save
7111e169010aSmrg	release=$release_save
7112e169010aSmrg	libname=$libname_save
7113e169010aSmrg	name=$name_save
7114e169010aSmrg
7115e169010aSmrg	case $host in
7116e169010aSmrg	*-*-rhapsody* | *-*-darwin1.[012])
7117e169010aSmrg	  # On Rhapsody replace the C library with the System framework
7118e8ead290Smrg	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'`
7119e169010aSmrg	  ;;
7120e169010aSmrg	esac
7121e169010aSmrg
7122e169010aSmrg	if test "$droppeddeps" = yes; then
7123e169010aSmrg	  if test "$module" = yes; then
7124e8ead290Smrg	    echo
7125e8ead290Smrg	    echo "*** Warning: libtool could not satisfy all declared inter-library"
7126e169010aSmrg	    $ECHO "*** dependencies of module $libname.  Therefore, libtool will create"
7127e8ead290Smrg	    echo "*** a static module, that should work as long as the dlopening"
7128e8ead290Smrg	    echo "*** application is linked with the -dlopen flag."
7129e169010aSmrg	    if test -z "$global_symbol_pipe"; then
7130e8ead290Smrg	      echo
7131e8ead290Smrg	      echo "*** However, this would only work if libtool was able to extract symbol"
7132e8ead290Smrg	      echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
7133e8ead290Smrg	      echo "*** not find such a program.  So, this module is probably useless."
7134e8ead290Smrg	      echo "*** \`nm' from GNU binutils and a full rebuild may help."
7135e169010aSmrg	    fi
7136e169010aSmrg	    if test "$build_old_libs" = no; then
7137e169010aSmrg	      oldlibs="$output_objdir/$libname.$libext"
7138e169010aSmrg	      build_libtool_libs=module
7139e169010aSmrg	      build_old_libs=yes
7140e169010aSmrg	    else
7141e169010aSmrg	      build_libtool_libs=no
7142e169010aSmrg	    fi
7143e169010aSmrg	  else
7144e8ead290Smrg	    echo "*** The inter-library dependencies that have been dropped here will be"
7145e8ead290Smrg	    echo "*** automatically added whenever a program is linked with this library"
7146e8ead290Smrg	    echo "*** or is declared to -dlopen it."
7147e169010aSmrg
7148e169010aSmrg	    if test "$allow_undefined" = no; then
7149e8ead290Smrg	      echo
7150e8ead290Smrg	      echo "*** Since this library must not contain undefined symbols,"
7151e8ead290Smrg	      echo "*** because either the platform does not support them or"
7152e8ead290Smrg	      echo "*** it was explicitly requested with -no-undefined,"
7153e8ead290Smrg	      echo "*** libtool will only create a static version of it."
7154e169010aSmrg	      if test "$build_old_libs" = no; then
7155e169010aSmrg		oldlibs="$output_objdir/$libname.$libext"
7156e169010aSmrg		build_libtool_libs=module
7157e169010aSmrg		build_old_libs=yes
7158e169010aSmrg	      else
7159e169010aSmrg		build_libtool_libs=no
7160e169010aSmrg	      fi
7161e169010aSmrg	    fi
7162e169010aSmrg	  fi
7163e169010aSmrg	fi
7164e169010aSmrg	# Done checking deplibs!
7165e169010aSmrg	deplibs=$newdeplibs
7166e169010aSmrg      fi
7167e169010aSmrg      # Time to change all our "foo.ltframework" stuff back to "-framework foo"
7168e169010aSmrg      case $host in
7169e169010aSmrg	*-*-darwin*)
7170e8ead290Smrg	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
7171e8ead290Smrg	  new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
7172e8ead290Smrg	  deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
7173e169010aSmrg	  ;;
7174e169010aSmrg      esac
7175e169010aSmrg
7176e169010aSmrg      # move library search paths that coincide with paths to not yet
7177e169010aSmrg      # installed libraries to the beginning of the library search list
7178e169010aSmrg      new_libs=
7179e169010aSmrg      for path in $notinst_path; do
7180e169010aSmrg	case " $new_libs " in
7181e169010aSmrg	*" -L$path/$objdir "*) ;;
7182e169010aSmrg	*)
7183e169010aSmrg	  case " $deplibs " in
7184e169010aSmrg	  *" -L$path/$objdir "*)
7185e169010aSmrg	    new_libs="$new_libs -L$path/$objdir" ;;
7186e169010aSmrg	  esac
7187e169010aSmrg	  ;;
7188e169010aSmrg	esac
7189e169010aSmrg      done
7190e169010aSmrg      for deplib in $deplibs; do
7191e169010aSmrg	case $deplib in
7192e169010aSmrg	-L*)
7193e169010aSmrg	  case " $new_libs " in
7194e169010aSmrg	  *" $deplib "*) ;;
7195e169010aSmrg	  *) new_libs="$new_libs $deplib" ;;
7196e169010aSmrg	  esac
7197e169010aSmrg	  ;;
7198e169010aSmrg	*) new_libs="$new_libs $deplib" ;;
7199e169010aSmrg	esac
7200e169010aSmrg      done
7201e169010aSmrg      deplibs="$new_libs"
7202e169010aSmrg
7203e169010aSmrg      # All the library-specific variables (install_libdir is set above).
7204e169010aSmrg      library_names=
7205e169010aSmrg      old_library=
7206e169010aSmrg      dlname=
7207e169010aSmrg
7208e169010aSmrg      # Test again, we may have decided not to build it any more
7209e169010aSmrg      if test "$build_libtool_libs" = yes; then
7210e169010aSmrg	if test "$hardcode_into_libs" = yes; then
7211e169010aSmrg	  # Hardcode the library paths
7212e169010aSmrg	  hardcode_libdirs=
7213e169010aSmrg	  dep_rpath=
7214e169010aSmrg	  rpath="$finalize_rpath"
7215e169010aSmrg	  test "$mode" != relink && rpath="$compile_rpath$rpath"
7216e169010aSmrg	  for libdir in $rpath; do
7217e169010aSmrg	    if test -n "$hardcode_libdir_flag_spec"; then
7218e169010aSmrg	      if test -n "$hardcode_libdir_separator"; then
7219e169010aSmrg		if test -z "$hardcode_libdirs"; then
7220e169010aSmrg		  hardcode_libdirs="$libdir"
7221e169010aSmrg		else
7222e169010aSmrg		  # Just accumulate the unique libdirs.
7223e169010aSmrg		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
7224e169010aSmrg		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
7225e169010aSmrg		    ;;
7226e169010aSmrg		  *)
7227e169010aSmrg		    hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
7228e169010aSmrg		    ;;
7229e169010aSmrg		  esac
7230e169010aSmrg		fi
7231e169010aSmrg	      else
7232e169010aSmrg		eval flag=\"$hardcode_libdir_flag_spec\"
7233e169010aSmrg		dep_rpath="$dep_rpath $flag"
7234e169010aSmrg	      fi
7235e169010aSmrg	    elif test -n "$runpath_var"; then
7236e169010aSmrg	      case "$perm_rpath " in
7237e169010aSmrg	      *" $libdir "*) ;;
7238e169010aSmrg	      *) perm_rpath="$perm_rpath $libdir" ;;
7239e169010aSmrg	      esac
7240e169010aSmrg	    fi
7241e169010aSmrg	  done
7242e169010aSmrg	  # Substitute the hardcoded libdirs into the rpath.
7243e169010aSmrg	  if test -n "$hardcode_libdir_separator" &&
7244e169010aSmrg	     test -n "$hardcode_libdirs"; then
7245e169010aSmrg	    libdir="$hardcode_libdirs"
7246e169010aSmrg	    if test -n "$hardcode_libdir_flag_spec_ld"; then
7247e169010aSmrg	      eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
7248e169010aSmrg	    else
7249e169010aSmrg	      eval dep_rpath=\"$hardcode_libdir_flag_spec\"
7250e169010aSmrg	    fi
7251e169010aSmrg	  fi
7252e169010aSmrg	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
7253e169010aSmrg	    # We should set the runpath_var.
7254e169010aSmrg	    rpath=
7255e169010aSmrg	    for dir in $perm_rpath; do
7256e169010aSmrg	      rpath="$rpath$dir:"
7257e169010aSmrg	    done
7258e169010aSmrg	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
7259e169010aSmrg	  fi
7260e169010aSmrg	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
7261e169010aSmrg	fi
72627914d74bSmrg
7263e169010aSmrg	shlibpath="$finalize_shlibpath"
7264e169010aSmrg	test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
7265e169010aSmrg	if test -n "$shlibpath"; then
7266e169010aSmrg	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
7267e169010aSmrg	fi
72687914d74bSmrg
7269e169010aSmrg	# Get the real and link names of the library.
7270e169010aSmrg	eval shared_ext=\"$shrext_cmds\"
7271e169010aSmrg	eval library_names=\"$library_names_spec\"
7272e169010aSmrg	set dummy $library_names
7273e169010aSmrg	shift
7274e169010aSmrg	realname="$1"
7275e169010aSmrg	shift
72767914d74bSmrg
7277e169010aSmrg	if test -n "$soname_spec"; then
7278e169010aSmrg	  eval soname=\"$soname_spec\"
7279e169010aSmrg	else
7280e169010aSmrg	  soname="$realname"
7281e169010aSmrg	fi
7282e169010aSmrg	if test -z "$dlname"; then
7283e169010aSmrg	  dlname=$soname
7284e169010aSmrg	fi
72857914d74bSmrg
7286e169010aSmrg	lib="$output_objdir/$realname"
7287e169010aSmrg	linknames=
7288e169010aSmrg	for link
7289e169010aSmrg	do
7290e169010aSmrg	  linknames="$linknames $link"
7291e169010aSmrg	done
72927914d74bSmrg
7293e169010aSmrg	# Use standard objects if they are pic
7294e8ead290Smrg	test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP`
7295e169010aSmrg	test "X$libobjs" = "X " && libobjs=
72967914d74bSmrg
7297e169010aSmrg	delfiles=
7298e169010aSmrg	if test -n "$export_symbols" && test -n "$include_expsyms"; then
7299e169010aSmrg	  $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
7300e169010aSmrg	  export_symbols="$output_objdir/$libname.uexp"
7301e169010aSmrg	  delfiles="$delfiles $export_symbols"
7302e169010aSmrg	fi
73037914d74bSmrg
7304e169010aSmrg	orig_export_symbols=
7305e169010aSmrg	case $host_os in
7306e169010aSmrg	cygwin* | mingw* | cegcc*)
7307e169010aSmrg	  if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
7308e169010aSmrg	    # exporting using user supplied symfile
7309e169010aSmrg	    if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
7310e169010aSmrg	      # and it's NOT already a .def file. Must figure out
7311e169010aSmrg	      # which of the given symbols are data symbols and tag
7312e169010aSmrg	      # them as such. So, trigger use of export_symbols_cmds.
7313e169010aSmrg	      # export_symbols gets reassigned inside the "prepare
7314e169010aSmrg	      # the list of exported symbols" if statement, so the
7315e169010aSmrg	      # include_expsyms logic still works.
7316e169010aSmrg	      orig_export_symbols="$export_symbols"
7317e169010aSmrg	      export_symbols=
7318e169010aSmrg	      always_export_symbols=yes
7319e169010aSmrg	    fi
7320e169010aSmrg	  fi
7321e169010aSmrg	  ;;
7322e169010aSmrg	esac
73237914d74bSmrg
7324e169010aSmrg	# Prepare the list of exported symbols
7325e169010aSmrg	if test -z "$export_symbols"; then
7326e169010aSmrg	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
7327e169010aSmrg	    func_verbose "generating symbol list for \`$libname.la'"
7328e169010aSmrg	    export_symbols="$output_objdir/$libname.exp"
7329e169010aSmrg	    $opt_dry_run || $RM $export_symbols
7330e169010aSmrg	    cmds=$export_symbols_cmds
7331e169010aSmrg	    save_ifs="$IFS"; IFS='~'
7332e169010aSmrg	    for cmd in $cmds; do
7333e169010aSmrg	      IFS="$save_ifs"
7334e169010aSmrg	      eval cmd=\"$cmd\"
7335e169010aSmrg	      func_len " $cmd"
7336e169010aSmrg	      len=$func_len_result
7337e169010aSmrg	      if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
7338e169010aSmrg		func_show_eval "$cmd" 'exit $?'
7339e169010aSmrg		skipped_export=false
7340e169010aSmrg	      else
7341e169010aSmrg		# The command line is too long to execute in one step.
7342e169010aSmrg		func_verbose "using reloadable object file for export list..."
7343e169010aSmrg		skipped_export=:
7344e169010aSmrg		# Break out early, otherwise skipped_export may be
7345e169010aSmrg		# set to false by a later but shorter cmd.
7346e169010aSmrg		break
7347e169010aSmrg	      fi
7348e169010aSmrg	    done
7349e169010aSmrg	    IFS="$save_ifs"
7350e169010aSmrg	    if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
7351e169010aSmrg	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
7352e169010aSmrg	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
7353e169010aSmrg	    fi
7354e169010aSmrg	  fi
7355e169010aSmrg	fi
73567914d74bSmrg
7357e169010aSmrg	if test -n "$export_symbols" && test -n "$include_expsyms"; then
7358e169010aSmrg	  tmp_export_symbols="$export_symbols"
7359e169010aSmrg	  test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
7360e8ead290Smrg	  $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
7361e169010aSmrg	fi
73627914d74bSmrg
7363e169010aSmrg	if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
7364e169010aSmrg	  # The given exports_symbols file has to be filtered, so filter it.
7365e169010aSmrg	  func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
7366e169010aSmrg	  # FIXME: $output_objdir/$libname.filter potentially contains lots of
7367e169010aSmrg	  # 's' commands which not all seds can handle. GNU sed should be fine
7368e169010aSmrg	  # though. Also, the filter scales superlinearly with the number of
7369e169010aSmrg	  # global variables. join(1) would be nice here, but unfortunately
7370e169010aSmrg	  # isn't a blessed tool.
7371e169010aSmrg	  $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
7372e169010aSmrg	  delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
7373e169010aSmrg	  export_symbols=$output_objdir/$libname.def
7374e169010aSmrg	  $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
73757914d74bSmrg	fi
73767914d74bSmrg
7377e169010aSmrg	tmp_deplibs=
7378e169010aSmrg	for test_deplib in $deplibs; do
7379e169010aSmrg	  case " $convenience " in
7380e169010aSmrg	  *" $test_deplib "*) ;;
7381e169010aSmrg	  *)
7382e169010aSmrg	    tmp_deplibs="$tmp_deplibs $test_deplib"
7383e169010aSmrg	    ;;
7384e169010aSmrg	  esac
7385e169010aSmrg	done
7386e169010aSmrg	deplibs="$tmp_deplibs"
73877914d74bSmrg
7388e169010aSmrg	if test -n "$convenience"; then
7389e169010aSmrg	  if test -n "$whole_archive_flag_spec" &&
7390e169010aSmrg	    test "$compiler_needs_object" = yes &&
7391e169010aSmrg	    test -z "$libobjs"; then
7392e169010aSmrg	    # extract the archives, so we have objects to list.
7393e169010aSmrg	    # TODO: could optimize this to just extract one archive.
7394e169010aSmrg	    whole_archive_flag_spec=
7395e169010aSmrg	  fi
7396e169010aSmrg	  if test -n "$whole_archive_flag_spec"; then
7397e169010aSmrg	    save_libobjs=$libobjs
7398e169010aSmrg	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
7399e169010aSmrg	    test "X$libobjs" = "X " && libobjs=
7400e169010aSmrg	  else
7401e169010aSmrg	    gentop="$output_objdir/${outputname}x"
7402e169010aSmrg	    generated="$generated $gentop"
74037914d74bSmrg
7404e169010aSmrg	    func_extract_archives $gentop $convenience
7405e169010aSmrg	    libobjs="$libobjs $func_extract_archives_result"
7406e169010aSmrg	    test "X$libobjs" = "X " && libobjs=
7407e169010aSmrg	  fi
7408e169010aSmrg	fi
74097914d74bSmrg
7410e169010aSmrg	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
7411e169010aSmrg	  eval flag=\"$thread_safe_flag_spec\"
7412e169010aSmrg	  linker_flags="$linker_flags $flag"
7413e169010aSmrg	fi
74147914d74bSmrg
7415e169010aSmrg	# Make a backup of the uninstalled library when relinking
7416e169010aSmrg	if test "$mode" = relink; then
7417e169010aSmrg	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
74187914d74bSmrg	fi
74197914d74bSmrg
7420e169010aSmrg	# Do each of the archive commands.
7421e169010aSmrg	if test "$module" = yes && test -n "$module_cmds" ; then
7422e169010aSmrg	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
7423e169010aSmrg	    eval test_cmds=\"$module_expsym_cmds\"
7424e169010aSmrg	    cmds=$module_expsym_cmds
7425e169010aSmrg	  else
7426e169010aSmrg	    eval test_cmds=\"$module_cmds\"
7427e169010aSmrg	    cmds=$module_cmds
7428e169010aSmrg	  fi
7429e169010aSmrg	else
7430e169010aSmrg	  if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
7431e169010aSmrg	    eval test_cmds=\"$archive_expsym_cmds\"
7432e169010aSmrg	    cmds=$archive_expsym_cmds
7433e169010aSmrg	  else
7434e169010aSmrg	    eval test_cmds=\"$archive_cmds\"
7435e169010aSmrg	    cmds=$archive_cmds
7436e169010aSmrg	  fi
74377914d74bSmrg	fi
74387914d74bSmrg
7439e169010aSmrg	if test "X$skipped_export" != "X:" &&
7440e169010aSmrg	   func_len " $test_cmds" &&
7441e169010aSmrg	   len=$func_len_result &&
7442e169010aSmrg	   test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
7443e169010aSmrg	  :
7444e169010aSmrg	else
7445e169010aSmrg	  # The command line is too long to link in one step, link piecewise
7446e169010aSmrg	  # or, if using GNU ld and skipped_export is not :, use a linker
7447e169010aSmrg	  # script.
74487914d74bSmrg
7449e169010aSmrg	  # Save the value of $output and $libobjs because we want to
7450e169010aSmrg	  # use them later.  If we have whole_archive_flag_spec, we
7451e169010aSmrg	  # want to use save_libobjs as it was before
7452e169010aSmrg	  # whole_archive_flag_spec was expanded, because we can't
7453e169010aSmrg	  # assume the linker understands whole_archive_flag_spec.
7454e169010aSmrg	  # This may have to be revisited, in case too many
7455e169010aSmrg	  # convenience libraries get linked in and end up exceeding
7456e169010aSmrg	  # the spec.
7457e169010aSmrg	  if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
7458e169010aSmrg	    save_libobjs=$libobjs
7459e169010aSmrg	  fi
7460e169010aSmrg	  save_output=$output
7461e8ead290Smrg	  func_basename "$output"
7462e8ead290Smrg	  output_la=$func_basename_result
74637914d74bSmrg
7464e169010aSmrg	  # Clear the reloadable object creation command queue and
7465e169010aSmrg	  # initialize k to one.
7466e169010aSmrg	  test_cmds=
7467e169010aSmrg	  concat_cmds=
7468e169010aSmrg	  objlist=
7469e169010aSmrg	  last_robj=
7470e169010aSmrg	  k=1
74717914d74bSmrg
7472e169010aSmrg	  if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
7473e169010aSmrg	    output=${output_objdir}/${output_la}.lnkscript
7474e169010aSmrg	    func_verbose "creating GNU ld script: $output"
7475e8ead290Smrg	    echo 'INPUT (' > $output
7476e169010aSmrg	    for obj in $save_libobjs
7477e169010aSmrg	    do
7478e169010aSmrg	      $ECHO "$obj" >> $output
7479e169010aSmrg	    done
7480e8ead290Smrg	    echo ')' >> $output
7481e169010aSmrg	    delfiles="$delfiles $output"
7482e169010aSmrg	  elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
7483e169010aSmrg	    output=${output_objdir}/${output_la}.lnk
7484e169010aSmrg	    func_verbose "creating linker input file list: $output"
7485e169010aSmrg	    : > $output
7486e169010aSmrg	    set x $save_libobjs
7487e169010aSmrg	    shift
7488e169010aSmrg	    firstobj=
7489e169010aSmrg	    if test "$compiler_needs_object" = yes; then
7490e169010aSmrg	      firstobj="$1 "
7491e169010aSmrg	      shift
7492e169010aSmrg	    fi
7493e169010aSmrg	    for obj
7494e169010aSmrg	    do
7495e169010aSmrg	      $ECHO "$obj" >> $output
7496e169010aSmrg	    done
7497e169010aSmrg	    delfiles="$delfiles $output"
7498e169010aSmrg	    output=$firstobj\"$file_list_spec$output\"
7499e169010aSmrg	  else
7500e169010aSmrg	    if test -n "$save_libobjs"; then
7501e169010aSmrg	      func_verbose "creating reloadable object files..."
7502e169010aSmrg	      output=$output_objdir/$output_la-${k}.$objext
7503e169010aSmrg	      eval test_cmds=\"$reload_cmds\"
7504e169010aSmrg	      func_len " $test_cmds"
7505e169010aSmrg	      len0=$func_len_result
7506e169010aSmrg	      len=$len0
7507e169010aSmrg
7508e169010aSmrg	      # Loop over the list of objects to be linked.
7509e169010aSmrg	      for obj in $save_libobjs
7510e169010aSmrg	      do
7511e169010aSmrg		func_len " $obj"
7512e169010aSmrg		func_arith $len + $func_len_result
7513e169010aSmrg		len=$func_arith_result
7514e169010aSmrg		if test "X$objlist" = X ||
7515e169010aSmrg		   test "$len" -lt "$max_cmd_len"; then
7516e169010aSmrg		  func_append objlist " $obj"
7517e169010aSmrg		else
7518e169010aSmrg		  # The command $test_cmds is almost too long, add a
7519e169010aSmrg		  # command to the queue.
7520e169010aSmrg		  if test "$k" -eq 1 ; then
7521e169010aSmrg		    # The first file doesn't have a previous command to add.
7522e8ead290Smrg		    reload_objs=$objlist
7523e8ead290Smrg		    eval concat_cmds=\"$reload_cmds\"
7524e169010aSmrg		  else
7525e169010aSmrg		    # All subsequent reloadable object files will link in
7526e169010aSmrg		    # the last one created.
7527e8ead290Smrg		    reload_objs="$objlist $last_robj"
7528e8ead290Smrg		    eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\"
7529e169010aSmrg		  fi
7530e169010aSmrg		  last_robj=$output_objdir/$output_la-${k}.$objext
7531e169010aSmrg		  func_arith $k + 1
7532e169010aSmrg		  k=$func_arith_result
7533e169010aSmrg		  output=$output_objdir/$output_la-${k}.$objext
7534e8ead290Smrg		  objlist=" $obj"
7535e169010aSmrg		  func_len " $last_robj"
7536e169010aSmrg		  func_arith $len0 + $func_len_result
7537e169010aSmrg		  len=$func_arith_result
7538e169010aSmrg		fi
7539e169010aSmrg	      done
7540e169010aSmrg	      # Handle the remaining objects by creating one last
7541e169010aSmrg	      # reloadable object file.  All subsequent reloadable object
7542e169010aSmrg	      # files will link in the last one created.
7543e169010aSmrg	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
7544e8ead290Smrg	      reload_objs="$objlist $last_robj"
7545e8ead290Smrg	      eval concat_cmds=\"\${concat_cmds}$reload_cmds\"
7546e169010aSmrg	      if test -n "$last_robj"; then
7547e169010aSmrg	        eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
7548e169010aSmrg	      fi
7549e169010aSmrg	      delfiles="$delfiles $output"
75507914d74bSmrg
7551e169010aSmrg	    else
7552e169010aSmrg	      output=
7553e169010aSmrg	    fi
75547914d74bSmrg
7555e169010aSmrg	    if ${skipped_export-false}; then
7556e169010aSmrg	      func_verbose "generating symbol list for \`$libname.la'"
7557e169010aSmrg	      export_symbols="$output_objdir/$libname.exp"
7558e169010aSmrg	      $opt_dry_run || $RM $export_symbols
7559e169010aSmrg	      libobjs=$output
7560e169010aSmrg	      # Append the command to create the export file.
7561e169010aSmrg	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
7562e169010aSmrg	      eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
7563e169010aSmrg	      if test -n "$last_robj"; then
7564e169010aSmrg		eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
7565e169010aSmrg	      fi
7566e169010aSmrg	    fi
75677914d74bSmrg
7568e169010aSmrg	    test -n "$save_libobjs" &&
7569e169010aSmrg	      func_verbose "creating a temporary reloadable object file: $output"
75707914d74bSmrg
7571e169010aSmrg	    # Loop through the commands generated above and execute them.
7572e169010aSmrg	    save_ifs="$IFS"; IFS='~'
7573e169010aSmrg	    for cmd in $concat_cmds; do
7574e169010aSmrg	      IFS="$save_ifs"
7575e169010aSmrg	      $opt_silent || {
7576e169010aSmrg		  func_quote_for_expand "$cmd"
7577e169010aSmrg		  eval "func_echo $func_quote_for_expand_result"
7578e169010aSmrg	      }
7579e169010aSmrg	      $opt_dry_run || eval "$cmd" || {
7580e169010aSmrg		lt_exit=$?
7581e169010aSmrg
7582e169010aSmrg		# Restore the uninstalled library and exit
7583e169010aSmrg		if test "$mode" = relink; then
7584e169010aSmrg		  ( cd "$output_objdir" && \
7585e169010aSmrg		    $RM "${realname}T" && \
7586e169010aSmrg		    $MV "${realname}U" "$realname" )
7587e169010aSmrg		fi
75887914d74bSmrg
7589e169010aSmrg		exit $lt_exit
7590e169010aSmrg	      }
7591e169010aSmrg	    done
7592e169010aSmrg	    IFS="$save_ifs"
7593e169010aSmrg
7594e169010aSmrg	    if test -n "$export_symbols_regex" && ${skipped_export-false}; then
7595e169010aSmrg	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
7596e169010aSmrg	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
75977914d74bSmrg	    fi
75987914d74bSmrg	  fi
75997914d74bSmrg
7600e169010aSmrg          if ${skipped_export-false}; then
7601e169010aSmrg	    if test -n "$export_symbols" && test -n "$include_expsyms"; then
7602e169010aSmrg	      tmp_export_symbols="$export_symbols"
7603e169010aSmrg	      test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
7604e8ead290Smrg	      $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
7605e169010aSmrg	    fi
76067914d74bSmrg
7607e169010aSmrg	    if test -n "$orig_export_symbols"; then
7608e169010aSmrg	      # The given exports_symbols file has to be filtered, so filter it.
7609e169010aSmrg	      func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
7610e169010aSmrg	      # FIXME: $output_objdir/$libname.filter potentially contains lots of
7611e169010aSmrg	      # 's' commands which not all seds can handle. GNU sed should be fine
7612e169010aSmrg	      # though. Also, the filter scales superlinearly with the number of
7613e169010aSmrg	      # global variables. join(1) would be nice here, but unfortunately
7614e169010aSmrg	      # isn't a blessed tool.
7615e169010aSmrg	      $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
7616e169010aSmrg	      delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
7617e169010aSmrg	      export_symbols=$output_objdir/$libname.def
7618e169010aSmrg	      $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
7619e169010aSmrg	    fi
7620e169010aSmrg	  fi
76217914d74bSmrg
7622e169010aSmrg	  libobjs=$output
7623e169010aSmrg	  # Restore the value of output.
7624e169010aSmrg	  output=$save_output
76257914d74bSmrg
7626e169010aSmrg	  if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
7627e169010aSmrg	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
7628e169010aSmrg	    test "X$libobjs" = "X " && libobjs=
7629e169010aSmrg	  fi
7630e169010aSmrg	  # Expand the library linking commands again to reset the
7631e169010aSmrg	  # value of $libobjs for piecewise linking.
7632e169010aSmrg
7633e169010aSmrg	  # Do each of the archive commands.
7634e169010aSmrg	  if test "$module" = yes && test -n "$module_cmds" ; then
7635e169010aSmrg	    if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
7636e169010aSmrg	      cmds=$module_expsym_cmds
76377914d74bSmrg	    else
7638e169010aSmrg	      cmds=$module_cmds
76397914d74bSmrg	    fi
76407914d74bSmrg	  else
7641e169010aSmrg	    if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
7642e169010aSmrg	      cmds=$archive_expsym_cmds
7643e169010aSmrg	    else
7644e169010aSmrg	      cmds=$archive_cmds
7645e169010aSmrg	    fi
76467914d74bSmrg	  fi
76477914d74bSmrg	fi
76487914d74bSmrg
7649e169010aSmrg	if test -n "$delfiles"; then
7650e169010aSmrg	  # Append the command to remove temporary files to $cmds.
7651e169010aSmrg	  eval cmds=\"\$cmds~\$RM $delfiles\"
7652e169010aSmrg	fi
76537914d74bSmrg
7654e169010aSmrg	# Add any objects from preloaded convenience libraries
7655e169010aSmrg	if test -n "$dlprefiles"; then
7656e169010aSmrg	  gentop="$output_objdir/${outputname}x"
7657e169010aSmrg	  generated="$generated $gentop"
76587914d74bSmrg
7659e169010aSmrg	  func_extract_archives $gentop $dlprefiles
7660e169010aSmrg	  libobjs="$libobjs $func_extract_archives_result"
7661e169010aSmrg	  test "X$libobjs" = "X " && libobjs=
76627914d74bSmrg	fi
76637914d74bSmrg
7664e169010aSmrg	save_ifs="$IFS"; IFS='~'
7665e169010aSmrg	for cmd in $cmds; do
7666e169010aSmrg	  IFS="$save_ifs"
7667e169010aSmrg	  eval cmd=\"$cmd\"
7668e169010aSmrg	  $opt_silent || {
7669e169010aSmrg	    func_quote_for_expand "$cmd"
7670e169010aSmrg	    eval "func_echo $func_quote_for_expand_result"
7671e169010aSmrg	  }
7672e169010aSmrg	  $opt_dry_run || eval "$cmd" || {
7673e169010aSmrg	    lt_exit=$?
76747914d74bSmrg
7675e169010aSmrg	    # Restore the uninstalled library and exit
7676e169010aSmrg	    if test "$mode" = relink; then
7677e169010aSmrg	      ( cd "$output_objdir" && \
7678e169010aSmrg	        $RM "${realname}T" && \
7679e169010aSmrg		$MV "${realname}U" "$realname" )
7680e169010aSmrg	    fi
7681e169010aSmrg
7682e169010aSmrg	    exit $lt_exit
7683e169010aSmrg	  }
7684e169010aSmrg	done
7685e169010aSmrg	IFS="$save_ifs"
7686e169010aSmrg
7687e169010aSmrg	# Restore the uninstalled library and exit
7688e169010aSmrg	if test "$mode" = relink; then
7689e169010aSmrg	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
7690e169010aSmrg
7691e169010aSmrg	  if test -n "$convenience"; then
7692e169010aSmrg	    if test -z "$whole_archive_flag_spec"; then
7693e169010aSmrg	      func_show_eval '${RM}r "$gentop"'
76947914d74bSmrg	    fi
76957914d74bSmrg	  fi
76967914d74bSmrg
7697e169010aSmrg	  exit $EXIT_SUCCESS
7698e169010aSmrg	fi
76997914d74bSmrg
7700e169010aSmrg	# Create links to the real library.
7701e169010aSmrg	for linkname in $linknames; do
7702e169010aSmrg	  if test "$realname" != "$linkname"; then
7703e169010aSmrg	    func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
7704e169010aSmrg	  fi
7705e169010aSmrg	done
7706e169010aSmrg
7707e169010aSmrg	# If -module or -export-dynamic was specified, set the dlname.
7708e169010aSmrg	if test "$module" = yes || test "$export_dynamic" = yes; then
7709e169010aSmrg	  # On all known operating systems, these are identical.
7710e169010aSmrg	  dlname="$soname"
7711e169010aSmrg	fi
7712e169010aSmrg      fi
7713e169010aSmrg      ;;
7714e169010aSmrg
7715e169010aSmrg    obj)
7716e169010aSmrg      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
7717e169010aSmrg	func_warning "\`-dlopen' is ignored for objects"
7718e169010aSmrg      fi
7719e169010aSmrg
7720e169010aSmrg      case " $deplibs" in
7721e169010aSmrg      *\ -l* | *\ -L*)
7722e169010aSmrg	func_warning "\`-l' and \`-L' are ignored for objects" ;;
7723e169010aSmrg      esac
7724e169010aSmrg
7725e169010aSmrg      test -n "$rpath" && \
7726e169010aSmrg	func_warning "\`-rpath' is ignored for objects"
7727e169010aSmrg
7728e169010aSmrg      test -n "$xrpath" && \
7729e169010aSmrg	func_warning "\`-R' is ignored for objects"
7730e169010aSmrg
7731e169010aSmrg      test -n "$vinfo" && \
7732e169010aSmrg	func_warning "\`-version-info' is ignored for objects"
7733e169010aSmrg
7734e169010aSmrg      test -n "$release" && \
7735e169010aSmrg	func_warning "\`-release' is ignored for objects"
7736e169010aSmrg
7737e169010aSmrg      case $output in
7738e169010aSmrg      *.lo)
7739e169010aSmrg	test -n "$objs$old_deplibs" && \
7740e169010aSmrg	  func_fatal_error "cannot build library object \`$output' from non-libtool objects"
7741e169010aSmrg
7742e169010aSmrg	libobj=$output
7743e169010aSmrg	func_lo2o "$libobj"
7744e169010aSmrg	obj=$func_lo2o_result
7745e169010aSmrg	;;
7746e169010aSmrg      *)
7747e169010aSmrg	libobj=
7748e169010aSmrg	obj="$output"
7749e169010aSmrg	;;
7750e169010aSmrg      esac
7751e169010aSmrg
7752e169010aSmrg      # Delete the old objects.
7753e169010aSmrg      $opt_dry_run || $RM $obj $libobj
7754e169010aSmrg
7755e169010aSmrg      # Objects from convenience libraries.  This assumes
7756e169010aSmrg      # single-version convenience libraries.  Whenever we create
7757e169010aSmrg      # different ones for PIC/non-PIC, this we'll have to duplicate
7758e169010aSmrg      # the extraction.
7759e169010aSmrg      reload_conv_objs=
7760e169010aSmrg      gentop=
7761e169010aSmrg      # reload_cmds runs $LD directly, so let us get rid of
7762e169010aSmrg      # -Wl from whole_archive_flag_spec and hope we can get by with
7763e169010aSmrg      # turning comma into space..
7764e169010aSmrg      wl=
7765e169010aSmrg
7766e169010aSmrg      if test -n "$convenience"; then
7767e169010aSmrg	if test -n "$whole_archive_flag_spec"; then
7768e169010aSmrg	  eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
7769e8ead290Smrg	  reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'`
7770e169010aSmrg	else
7771e169010aSmrg	  gentop="$output_objdir/${obj}x"
7772e169010aSmrg	  generated="$generated $gentop"
7773e169010aSmrg
7774e169010aSmrg	  func_extract_archives $gentop $convenience
7775e169010aSmrg	  reload_conv_objs="$reload_objs $func_extract_archives_result"
7776e169010aSmrg	fi
7777e169010aSmrg      fi
77787914d74bSmrg
7779e169010aSmrg      # Create the old-style object.
7780e8ead290Smrg      reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
77817914d74bSmrg
7782e169010aSmrg      output="$obj"
7783e169010aSmrg      func_execute_cmds "$reload_cmds" 'exit $?'
77847914d74bSmrg
7785e169010aSmrg      # Exit if we aren't doing a library object file.
7786e169010aSmrg      if test -z "$libobj"; then
7787e169010aSmrg	if test -n "$gentop"; then
7788e169010aSmrg	  func_show_eval '${RM}r "$gentop"'
7789e169010aSmrg	fi
77907914d74bSmrg
7791e169010aSmrg	exit $EXIT_SUCCESS
7792e169010aSmrg      fi
77937914d74bSmrg
7794e169010aSmrg      if test "$build_libtool_libs" != yes; then
7795e169010aSmrg	if test -n "$gentop"; then
7796e169010aSmrg	  func_show_eval '${RM}r "$gentop"'
7797e169010aSmrg	fi
77987914d74bSmrg
7799e169010aSmrg	# Create an invalid libtool object if no PIC, so that we don't
7800e169010aSmrg	# accidentally link it into a program.
7801e169010aSmrg	# $show "echo timestamp > $libobj"
7802e169010aSmrg	# $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
7803e169010aSmrg	exit $EXIT_SUCCESS
7804e169010aSmrg      fi
78057914d74bSmrg
7806e169010aSmrg      if test -n "$pic_flag" || test "$pic_mode" != default; then
7807e169010aSmrg	# Only do commands if we really have different PIC objects.
7808e169010aSmrg	reload_objs="$libobjs $reload_conv_objs"
7809e169010aSmrg	output="$libobj"
7810e169010aSmrg	func_execute_cmds "$reload_cmds" 'exit $?'
78117914d74bSmrg      fi
78127914d74bSmrg
7813e169010aSmrg      if test -n "$gentop"; then
7814e169010aSmrg	func_show_eval '${RM}r "$gentop"'
7815e169010aSmrg      fi
78167914d74bSmrg
7817e169010aSmrg      exit $EXIT_SUCCESS
7818e169010aSmrg      ;;
78197914d74bSmrg
7820e169010aSmrg    prog)
7821e169010aSmrg      case $host in
7822e169010aSmrg	*cygwin*) func_stripname '' '.exe' "$output"
7823e169010aSmrg	          output=$func_stripname_result.exe;;
78247914d74bSmrg      esac
7825e169010aSmrg      test -n "$vinfo" && \
7826e169010aSmrg	func_warning "\`-version-info' is ignored for programs"
78277914d74bSmrg
7828e169010aSmrg      test -n "$release" && \
7829e169010aSmrg	func_warning "\`-release' is ignored for programs"
78307914d74bSmrg
7831e169010aSmrg      test "$preload" = yes \
7832e169010aSmrg        && test "$dlopen_support" = unknown \
7833e169010aSmrg	&& test "$dlopen_self" = unknown \
7834e169010aSmrg	&& test "$dlopen_self_static" = unknown && \
7835e169010aSmrg	  func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
78367914d74bSmrg
7837e169010aSmrg      case $host in
7838e169010aSmrg      *-*-rhapsody* | *-*-darwin1.[012])
7839e169010aSmrg	# On Rhapsody replace the C library is the System framework
7840e8ead290Smrg	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'`
7841e8ead290Smrg	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'`
78427914d74bSmrg	;;
78437914d74bSmrg      esac
78447914d74bSmrg
7845e169010aSmrg      case $host in
7846e169010aSmrg      *-*-darwin*)
7847e169010aSmrg	# Don't allow lazy linking, it breaks C++ global constructors
7848e169010aSmrg	# But is supposedly fixed on 10.4 or later (yay!).
7849e169010aSmrg	if test "$tagname" = CXX ; then
7850e169010aSmrg	  case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
7851e169010aSmrg	    10.[0123])
7852e169010aSmrg	      compile_command="$compile_command ${wl}-bind_at_load"
7853e169010aSmrg	      finalize_command="$finalize_command ${wl}-bind_at_load"
7854e169010aSmrg	    ;;
7855e169010aSmrg	  esac
7856e169010aSmrg	fi
7857e169010aSmrg	# Time to change all our "foo.ltframework" stuff back to "-framework foo"
7858e8ead290Smrg	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
7859e8ead290Smrg	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
78607914d74bSmrg	;;
78617914d74bSmrg      esac
78627914d74bSmrg
78637914d74bSmrg
7864e169010aSmrg      # move library search paths that coincide with paths to not yet
7865e169010aSmrg      # installed libraries to the beginning of the library search list
7866e169010aSmrg      new_libs=
7867e169010aSmrg      for path in $notinst_path; do
7868e169010aSmrg	case " $new_libs " in
7869e169010aSmrg	*" -L$path/$objdir "*) ;;
78707914d74bSmrg	*)
7871e169010aSmrg	  case " $compile_deplibs " in
7872e169010aSmrg	  *" -L$path/$objdir "*)
7873e169010aSmrg	    new_libs="$new_libs -L$path/$objdir" ;;
7874e169010aSmrg	  esac
78757914d74bSmrg	  ;;
78767914d74bSmrg	esac
78777914d74bSmrg      done
7878e169010aSmrg      for deplib in $compile_deplibs; do
7879e169010aSmrg	case $deplib in
7880e169010aSmrg	-L*)
7881e169010aSmrg	  case " $new_libs " in
7882e169010aSmrg	  *" $deplib "*) ;;
7883e169010aSmrg	  *) new_libs="$new_libs $deplib" ;;
7884e169010aSmrg	  esac
7885e169010aSmrg	  ;;
7886e169010aSmrg	*) new_libs="$new_libs $deplib" ;;
7887e169010aSmrg	esac
7888e169010aSmrg      done
7889e169010aSmrg      compile_deplibs="$new_libs"
78907914d74bSmrg
78917914d74bSmrg
7892e169010aSmrg      compile_command="$compile_command $compile_deplibs"
7893e169010aSmrg      finalize_command="$finalize_command $finalize_deplibs"
78947914d74bSmrg
7895e169010aSmrg      if test -n "$rpath$xrpath"; then
7896e169010aSmrg	# If the user specified any rpath flags, then add them.
7897e169010aSmrg	for libdir in $rpath $xrpath; do
7898e169010aSmrg	  # This is the magic to use -rpath.
7899e169010aSmrg	  case "$finalize_rpath " in
7900e169010aSmrg	  *" $libdir "*) ;;
7901e169010aSmrg	  *) finalize_rpath="$finalize_rpath $libdir" ;;
7902e169010aSmrg	  esac
7903e169010aSmrg	done
7904e169010aSmrg      fi
79057914d74bSmrg
7906e169010aSmrg      # Now hardcode the library paths
7907e169010aSmrg      rpath=
7908e169010aSmrg      hardcode_libdirs=
7909e169010aSmrg      for libdir in $compile_rpath $finalize_rpath; do
7910e169010aSmrg	if test -n "$hardcode_libdir_flag_spec"; then
7911e169010aSmrg	  if test -n "$hardcode_libdir_separator"; then
7912e169010aSmrg	    if test -z "$hardcode_libdirs"; then
7913e169010aSmrg	      hardcode_libdirs="$libdir"
7914e169010aSmrg	    else
7915e169010aSmrg	      # Just accumulate the unique libdirs.
7916e169010aSmrg	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
7917e169010aSmrg	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
7918e169010aSmrg		;;
7919e169010aSmrg	      *)
7920e169010aSmrg		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
7921e169010aSmrg		;;
7922e169010aSmrg	      esac
7923e169010aSmrg	    fi
7924e169010aSmrg	  else
7925e169010aSmrg	    eval flag=\"$hardcode_libdir_flag_spec\"
7926e169010aSmrg	    rpath="$rpath $flag"
7927e169010aSmrg	  fi
7928e169010aSmrg	elif test -n "$runpath_var"; then
7929e169010aSmrg	  case "$perm_rpath " in
79307914d74bSmrg	  *" $libdir "*) ;;
7931e169010aSmrg	  *) perm_rpath="$perm_rpath $libdir" ;;
79327914d74bSmrg	  esac
7933e169010aSmrg	fi
7934e169010aSmrg	case $host in
7935e169010aSmrg	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
7936e169010aSmrg	  testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
7937e169010aSmrg	  case :$dllsearchpath: in
7938e169010aSmrg	  *":$libdir:"*) ;;
7939e169010aSmrg	  ::) dllsearchpath=$libdir;;
7940e169010aSmrg	  *) dllsearchpath="$dllsearchpath:$libdir";;
7941e169010aSmrg	  esac
7942e169010aSmrg	  case :$dllsearchpath: in
7943e169010aSmrg	  *":$testbindir:"*) ;;
7944e169010aSmrg	  ::) dllsearchpath=$testbindir;;
7945e169010aSmrg	  *) dllsearchpath="$dllsearchpath:$testbindir";;
7946e169010aSmrg	  esac
7947e169010aSmrg	  ;;
7948e169010aSmrg	esac
7949e169010aSmrg      done
7950e169010aSmrg      # Substitute the hardcoded libdirs into the rpath.
7951e169010aSmrg      if test -n "$hardcode_libdir_separator" &&
7952e169010aSmrg	 test -n "$hardcode_libdirs"; then
7953e169010aSmrg	libdir="$hardcode_libdirs"
7954e169010aSmrg	eval rpath=\" $hardcode_libdir_flag_spec\"
7955e169010aSmrg      fi
7956e169010aSmrg      compile_rpath="$rpath"
7957e169010aSmrg
7958e169010aSmrg      rpath=
7959e169010aSmrg      hardcode_libdirs=
7960e169010aSmrg      for libdir in $finalize_rpath; do
7961e169010aSmrg	if test -n "$hardcode_libdir_flag_spec"; then
7962e169010aSmrg	  if test -n "$hardcode_libdir_separator"; then
7963e169010aSmrg	    if test -z "$hardcode_libdirs"; then
7964e169010aSmrg	      hardcode_libdirs="$libdir"
7965e169010aSmrg	    else
7966e169010aSmrg	      # Just accumulate the unique libdirs.
7967e169010aSmrg	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
7968e169010aSmrg	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
7969e169010aSmrg		;;
7970e169010aSmrg	      *)
7971e169010aSmrg		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
7972e169010aSmrg		;;
7973e169010aSmrg	      esac
7974e169010aSmrg	    fi
7975e169010aSmrg	  else
7976e169010aSmrg	    eval flag=\"$hardcode_libdir_flag_spec\"
7977e169010aSmrg	    rpath="$rpath $flag"
7978e169010aSmrg	  fi
7979e169010aSmrg	elif test -n "$runpath_var"; then
7980e169010aSmrg	  case "$finalize_perm_rpath " in
79817914d74bSmrg	  *" $libdir "*) ;;
7982e169010aSmrg	  *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
79837914d74bSmrg	  esac
79847914d74bSmrg	fi
7985e169010aSmrg      done
7986e169010aSmrg      # Substitute the hardcoded libdirs into the rpath.
7987e169010aSmrg      if test -n "$hardcode_libdir_separator" &&
7988e169010aSmrg	 test -n "$hardcode_libdirs"; then
7989e169010aSmrg	libdir="$hardcode_libdirs"
7990e169010aSmrg	eval rpath=\" $hardcode_libdir_flag_spec\"
7991e169010aSmrg      fi
7992e169010aSmrg      finalize_rpath="$rpath"
79937914d74bSmrg
7994e169010aSmrg      if test -n "$libobjs" && test "$build_old_libs" = yes; then
7995e169010aSmrg	# Transform all the library objects into standard objects.
7996e8ead290Smrg	compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
7997e8ead290Smrg	finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
7998e169010aSmrg      fi
79997914d74bSmrg
8000e169010aSmrg      func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
80017914d74bSmrg
8002e169010aSmrg      # template prelinking step
8003e169010aSmrg      if test -n "$prelink_cmds"; then
8004e169010aSmrg	func_execute_cmds "$prelink_cmds" 'exit $?'
8005e169010aSmrg      fi
80067914d74bSmrg
8007e169010aSmrg      wrappers_required=yes
8008e169010aSmrg      case $host in
8009e8ead290Smrg      *cegcc* | *mingw32ce*)
8010e8ead290Smrg        # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway.
8011e8ead290Smrg        wrappers_required=no
8012e8ead290Smrg        ;;
8013e169010aSmrg      *cygwin* | *mingw* )
8014e169010aSmrg        if test "$build_libtool_libs" != yes; then
8015e169010aSmrg          wrappers_required=no
8016e169010aSmrg        fi
8017e169010aSmrg        ;;
8018e169010aSmrg      *)
8019e169010aSmrg        if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
8020e169010aSmrg          wrappers_required=no
8021e169010aSmrg        fi
8022e169010aSmrg        ;;
8023e169010aSmrg      esac
8024e169010aSmrg      if test "$wrappers_required" = no; then
8025e169010aSmrg	# Replace the output file specification.
8026e8ead290Smrg	compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
8027e169010aSmrg	link_command="$compile_command$compile_rpath"
80287914d74bSmrg
8029e169010aSmrg	# We have no uninstalled library dependencies, so finalize right now.
8030e169010aSmrg	exit_status=0
8031e169010aSmrg	func_show_eval "$link_command" 'exit_status=$?'
80327914d74bSmrg
8033e169010aSmrg	# Delete the generated files.
8034e169010aSmrg	if test -f "$output_objdir/${outputname}S.${objext}"; then
8035e169010aSmrg	  func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
8036e169010aSmrg	fi
80377914d74bSmrg
8038e169010aSmrg	exit $exit_status
8039e169010aSmrg      fi
80407914d74bSmrg
8041e169010aSmrg      if test -n "$compile_shlibpath$finalize_shlibpath"; then
8042e169010aSmrg	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
8043e169010aSmrg      fi
8044e169010aSmrg      if test -n "$finalize_shlibpath"; then
8045e169010aSmrg	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
8046e169010aSmrg      fi
80477914d74bSmrg
8048e169010aSmrg      compile_var=
8049e169010aSmrg      finalize_var=
8050e169010aSmrg      if test -n "$runpath_var"; then
8051e169010aSmrg	if test -n "$perm_rpath"; then
8052e169010aSmrg	  # We should set the runpath_var.
8053e169010aSmrg	  rpath=
8054e169010aSmrg	  for dir in $perm_rpath; do
8055e169010aSmrg	    rpath="$rpath$dir:"
80567914d74bSmrg	  done
8057e169010aSmrg	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
80587914d74bSmrg	fi
8059e169010aSmrg	if test -n "$finalize_perm_rpath"; then
8060e169010aSmrg	  # We should set the runpath_var.
8061e169010aSmrg	  rpath=
8062e169010aSmrg	  for dir in $finalize_perm_rpath; do
8063e169010aSmrg	    rpath="$rpath$dir:"
8064e169010aSmrg	  done
8065e169010aSmrg	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
8066e169010aSmrg	fi
8067e169010aSmrg      fi
80687914d74bSmrg
8069e169010aSmrg      if test "$no_install" = yes; then
8070e169010aSmrg	# We don't need to create a wrapper script.
8071e169010aSmrg	link_command="$compile_var$compile_command$compile_rpath"
8072e169010aSmrg	# Replace the output file specification.
8073e8ead290Smrg	link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
8074e169010aSmrg	# Delete the old output file.
8075e169010aSmrg	$opt_dry_run || $RM $output
8076e169010aSmrg	# Link the executable and exit
8077e169010aSmrg	func_show_eval "$link_command" 'exit $?'
8078e169010aSmrg	exit $EXIT_SUCCESS
8079e169010aSmrg      fi
80807914d74bSmrg
8081e169010aSmrg      if test "$hardcode_action" = relink; then
8082e169010aSmrg	# Fast installation is not supported
8083e169010aSmrg	link_command="$compile_var$compile_command$compile_rpath"
8084e169010aSmrg	relink_command="$finalize_var$finalize_command$finalize_rpath"
80857914d74bSmrg
8086e169010aSmrg	func_warning "this platform does not like uninstalled shared libraries"
8087e169010aSmrg	func_warning "\`$output' will be relinked during installation"
8088e169010aSmrg      else
8089e169010aSmrg	if test "$fast_install" != no; then
8090e169010aSmrg	  link_command="$finalize_var$compile_command$finalize_rpath"
8091e169010aSmrg	  if test "$fast_install" = yes; then
8092e8ead290Smrg	    relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'`
8093e169010aSmrg	  else
8094e169010aSmrg	    # fast_install is set to needless
8095e169010aSmrg	    relink_command=
8096e169010aSmrg	  fi
80977914d74bSmrg	else
8098e169010aSmrg	  link_command="$compile_var$compile_command$compile_rpath"
8099e169010aSmrg	  relink_command="$finalize_var$finalize_command$finalize_rpath"
81007914d74bSmrg	fi
8101e169010aSmrg      fi
81027914d74bSmrg
8103e169010aSmrg      # Replace the output file specification.
8104e8ead290Smrg      link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
81057914d74bSmrg
8106e169010aSmrg      # Delete the old output files.
8107e169010aSmrg      $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
81087914d74bSmrg
8109e169010aSmrg      func_show_eval "$link_command" 'exit $?'
81107914d74bSmrg
8111e169010aSmrg      # Now create the wrapper script.
8112e169010aSmrg      func_verbose "creating $output"
81137914d74bSmrg
8114e169010aSmrg      # Quote the relink command for shipping.
8115e169010aSmrg      if test -n "$relink_command"; then
8116e169010aSmrg	# Preserve any variables that may affect compiler behavior
8117e169010aSmrg	for var in $variables_saved_for_relink; do
8118e169010aSmrg	  if eval test -z \"\${$var+set}\"; then
8119e169010aSmrg	    relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
8120e169010aSmrg	  elif eval var_value=\$$var; test -z "$var_value"; then
8121e169010aSmrg	    relink_command="$var=; export $var; $relink_command"
8122e169010aSmrg	  else
8123e169010aSmrg	    func_quote_for_eval "$var_value"
8124e169010aSmrg	    relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
8125e169010aSmrg	  fi
8126e169010aSmrg	done
8127e169010aSmrg	relink_command="(cd `pwd`; $relink_command)"
8128e8ead290Smrg	relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
8129e169010aSmrg      fi
81307914d74bSmrg
8131e169010aSmrg      # Only actually do things if not in dry run mode.
8132e169010aSmrg      $opt_dry_run || {
8133e169010aSmrg	# win32 will think the script is a binary if it has
8134e169010aSmrg	# a .exe suffix, so we strip it off here.
8135e169010aSmrg	case $output in
8136e169010aSmrg	  *.exe) func_stripname '' '.exe' "$output"
8137e169010aSmrg	         output=$func_stripname_result ;;
8138e169010aSmrg	esac
8139e169010aSmrg	# test for cygwin because mv fails w/o .exe extensions
81407914d74bSmrg	case $host in
8141e169010aSmrg	  *cygwin*)
8142e169010aSmrg	    exeext=.exe
8143e169010aSmrg	    func_stripname '' '.exe' "$outputname"
8144e169010aSmrg	    outputname=$func_stripname_result ;;
8145e169010aSmrg	  *) exeext= ;;
81467914d74bSmrg	esac
8147e169010aSmrg	case $host in
8148e169010aSmrg	  *cygwin* | *mingw* )
8149e169010aSmrg	    func_dirname_and_basename "$output" "" "."
8150e169010aSmrg	    output_name=$func_basename_result
8151e169010aSmrg	    output_path=$func_dirname_result
8152e169010aSmrg	    cwrappersource="$output_path/$objdir/lt-$output_name.c"
8153e169010aSmrg	    cwrapper="$output_path/$output_name.exe"
8154e169010aSmrg	    $RM $cwrappersource $cwrapper
8155e169010aSmrg	    trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
8156e169010aSmrg
8157e169010aSmrg	    func_emit_cwrapperexe_src > $cwrappersource
8158e169010aSmrg
8159e169010aSmrg	    # The wrapper executable is built using the $host compiler,
8160e169010aSmrg	    # because it contains $host paths and files. If cross-
8161e169010aSmrg	    # compiling, it, like the target executable, must be
8162e169010aSmrg	    # executed on the $host or under an emulation environment.
8163e169010aSmrg	    $opt_dry_run || {
8164e169010aSmrg	      $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
8165e169010aSmrg	      $STRIP $cwrapper
8166e169010aSmrg	    }
81677914d74bSmrg
8168e169010aSmrg	    # Now, create the wrapper script for func_source use:
8169e169010aSmrg	    func_ltwrapper_scriptname $cwrapper
8170e169010aSmrg	    $RM $func_ltwrapper_scriptname_result
8171e169010aSmrg	    trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
8172e169010aSmrg	    $opt_dry_run || {
8173e169010aSmrg	      # note: this script will not be executed, so do not chmod.
8174e169010aSmrg	      if test "x$build" = "x$host" ; then
8175e169010aSmrg		$cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
81767914d74bSmrg	      else
8177e169010aSmrg		func_emit_wrapper no > $func_ltwrapper_scriptname_result
81787914d74bSmrg	      fi
8179e169010aSmrg	    }
8180e169010aSmrg	  ;;
8181e169010aSmrg	  * )
8182e169010aSmrg	    $RM $output
8183e169010aSmrg	    trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
81847914d74bSmrg
8185e169010aSmrg	    func_emit_wrapper no > $output
8186e169010aSmrg	    chmod +x $output
81877914d74bSmrg	  ;;
81887914d74bSmrg	esac
8189e169010aSmrg      }
8190e169010aSmrg      exit $EXIT_SUCCESS
8191e169010aSmrg      ;;
8192e169010aSmrg    esac
81937914d74bSmrg
8194e169010aSmrg    # See if we need to build an old-fashioned archive.
8195e169010aSmrg    for oldlib in $oldlibs; do
81967914d74bSmrg
8197e169010aSmrg      if test "$build_libtool_libs" = convenience; then
8198e169010aSmrg	oldobjs="$libobjs_save $symfileobj"
8199e169010aSmrg	addlibs="$convenience"
8200e169010aSmrg	build_libtool_libs=no
8201e169010aSmrg      else
8202e169010aSmrg	if test "$build_libtool_libs" = module; then
8203e169010aSmrg	  oldobjs="$libobjs_save"
8204e169010aSmrg	  build_libtool_libs=no
8205e169010aSmrg	else
8206e169010aSmrg	  oldobjs="$old_deplibs $non_pic_objects"
8207e169010aSmrg	  if test "$preload" = yes && test -f "$symfileobj"; then
8208e169010aSmrg	    oldobjs="$oldobjs $symfileobj"
8209e169010aSmrg	  fi
8210e169010aSmrg	fi
8211e169010aSmrg	addlibs="$old_convenience"
82127914d74bSmrg      fi
82137914d74bSmrg
8214e169010aSmrg      if test -n "$addlibs"; then
8215e169010aSmrg	gentop="$output_objdir/${outputname}x"
8216e169010aSmrg	generated="$generated $gentop"
82177914d74bSmrg
8218e169010aSmrg	func_extract_archives $gentop $addlibs
8219e169010aSmrg	oldobjs="$oldobjs $func_extract_archives_result"
8220e169010aSmrg      fi
82217914d74bSmrg
8222e169010aSmrg      # Do each command in the archive commands.
8223e169010aSmrg      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
8224e169010aSmrg	cmds=$old_archive_from_new_cmds
8225e169010aSmrg      else
82267914d74bSmrg
8227e169010aSmrg	# Add any objects from preloaded convenience libraries
8228e169010aSmrg	if test -n "$dlprefiles"; then
8229e169010aSmrg	  gentop="$output_objdir/${outputname}x"
8230e169010aSmrg	  generated="$generated $gentop"
82317914d74bSmrg
8232e169010aSmrg	  func_extract_archives $gentop $dlprefiles
8233e169010aSmrg	  oldobjs="$oldobjs $func_extract_archives_result"
8234e169010aSmrg	fi
82357914d74bSmrg
8236e169010aSmrg	# POSIX demands no paths to be encoded in archives.  We have
8237e169010aSmrg	# to avoid creating archives with duplicate basenames if we
8238e169010aSmrg	# might have to extract them afterwards, e.g., when creating a
8239e169010aSmrg	# static archive out of a convenience library, or when linking
8240e169010aSmrg	# the entirety of a libtool archive into another (currently
8241e169010aSmrg	# not supported by libtool).
8242e169010aSmrg	if (for obj in $oldobjs
8243e169010aSmrg	    do
8244e169010aSmrg	      func_basename "$obj"
8245e169010aSmrg	      $ECHO "$func_basename_result"
8246e169010aSmrg	    done | sort | sort -uc >/dev/null 2>&1); then
8247e169010aSmrg	  :
8248e169010aSmrg	else
8249e8ead290Smrg	  echo "copying selected object files to avoid basename conflicts..."
8250e169010aSmrg	  gentop="$output_objdir/${outputname}x"
8251e169010aSmrg	  generated="$generated $gentop"
8252e169010aSmrg	  func_mkdir_p "$gentop"
8253e169010aSmrg	  save_oldobjs=$oldobjs
8254e169010aSmrg	  oldobjs=
8255e169010aSmrg	  counter=1
8256e169010aSmrg	  for obj in $save_oldobjs
8257e169010aSmrg	  do
8258e169010aSmrg	    func_basename "$obj"
8259e169010aSmrg	    objbase="$func_basename_result"
8260e169010aSmrg	    case " $oldobjs " in
8261e169010aSmrg	    " ") oldobjs=$obj ;;
8262e169010aSmrg	    *[\ /]"$objbase "*)
8263e169010aSmrg	      while :; do
8264e169010aSmrg		# Make sure we don't pick an alternate name that also
8265e169010aSmrg		# overlaps.
8266e169010aSmrg		newobj=lt$counter-$objbase
8267e169010aSmrg		func_arith $counter + 1
8268e169010aSmrg		counter=$func_arith_result
8269e169010aSmrg		case " $oldobjs " in
8270e169010aSmrg		*[\ /]"$newobj "*) ;;
8271e169010aSmrg		*) if test ! -f "$gentop/$newobj"; then break; fi ;;
8272e169010aSmrg		esac
8273e169010aSmrg	      done
8274e169010aSmrg	      func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
8275e169010aSmrg	      oldobjs="$oldobjs $gentop/$newobj"
8276e169010aSmrg	      ;;
8277e169010aSmrg	    *) oldobjs="$oldobjs $obj" ;;
8278e169010aSmrg	    esac
82797914d74bSmrg	  done
82807914d74bSmrg	fi
8281e169010aSmrg	eval cmds=\"$old_archive_cmds\"
82827914d74bSmrg
8283e169010aSmrg	func_len " $cmds"
8284e169010aSmrg	len=$func_len_result
8285e169010aSmrg	if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
8286e169010aSmrg	  cmds=$old_archive_cmds
8287e169010aSmrg	else
8288e169010aSmrg	  # the command line is too long to link in one step, link in parts
8289e169010aSmrg	  func_verbose "using piecewise archive linking..."
8290e169010aSmrg	  save_RANLIB=$RANLIB
8291e169010aSmrg	  RANLIB=:
8292e169010aSmrg	  objlist=
8293e169010aSmrg	  concat_cmds=
8294e169010aSmrg	  save_oldobjs=$oldobjs
8295e169010aSmrg	  oldobjs=
8296e169010aSmrg	  # Is there a better way of finding the last object in the list?
8297e169010aSmrg	  for obj in $save_oldobjs
8298e169010aSmrg	  do
8299e169010aSmrg	    last_oldobj=$obj
8300e169010aSmrg	  done
8301e169010aSmrg	  eval test_cmds=\"$old_archive_cmds\"
8302e169010aSmrg	  func_len " $test_cmds"
8303e169010aSmrg	  len0=$func_len_result
8304e169010aSmrg	  len=$len0
8305e169010aSmrg	  for obj in $save_oldobjs
8306e169010aSmrg	  do
8307e169010aSmrg	    func_len " $obj"
8308e169010aSmrg	    func_arith $len + $func_len_result
8309e169010aSmrg	    len=$func_arith_result
8310e169010aSmrg	    func_append objlist " $obj"
8311e169010aSmrg	    if test "$len" -lt "$max_cmd_len"; then
8312e169010aSmrg	      :
8313e169010aSmrg	    else
8314e169010aSmrg	      # the above command should be used before it gets too long
8315e169010aSmrg	      oldobjs=$objlist
8316e169010aSmrg	      if test "$obj" = "$last_oldobj" ; then
8317e169010aSmrg		RANLIB=$save_RANLIB
8318e169010aSmrg	      fi
8319e169010aSmrg	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
8320e169010aSmrg	      eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
8321e169010aSmrg	      objlist=
8322e169010aSmrg	      len=$len0
8323e169010aSmrg	    fi
8324e169010aSmrg	  done
8325e169010aSmrg	  RANLIB=$save_RANLIB
8326e169010aSmrg	  oldobjs=$objlist
8327e169010aSmrg	  if test "X$oldobjs" = "X" ; then
8328e169010aSmrg	    eval cmds=\"\$concat_cmds\"
8329e169010aSmrg	  else
8330e169010aSmrg	    eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
8331e169010aSmrg	  fi
8332e169010aSmrg	fi
8333e169010aSmrg      fi
8334e169010aSmrg      func_execute_cmds "$cmds" 'exit $?'
83357914d74bSmrg    done
83367914d74bSmrg
8337e169010aSmrg    test -n "$generated" && \
8338e169010aSmrg      func_show_eval "${RM}r$generated"
83397914d74bSmrg
8340e169010aSmrg    # Now create the libtool archive.
8341e169010aSmrg    case $output in
8342e169010aSmrg    *.la)
8343e169010aSmrg      old_library=
8344e169010aSmrg      test "$build_old_libs" = yes && old_library="$libname.$libext"
8345e169010aSmrg      func_verbose "creating $output"
83467914d74bSmrg
8347e169010aSmrg      # Preserve any variables that may affect compiler behavior
8348e169010aSmrg      for var in $variables_saved_for_relink; do
8349e169010aSmrg	if eval test -z \"\${$var+set}\"; then
8350e169010aSmrg	  relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
8351e169010aSmrg	elif eval var_value=\$$var; test -z "$var_value"; then
8352e169010aSmrg	  relink_command="$var=; export $var; $relink_command"
83537914d74bSmrg	else
8354e169010aSmrg	  func_quote_for_eval "$var_value"
8355e169010aSmrg	  relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
83567914d74bSmrg	fi
8357e169010aSmrg      done
8358e169010aSmrg      # Quote the link command for shipping.
8359e169010aSmrg      relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
8360e8ead290Smrg      relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
8361e169010aSmrg      if test "$hardcode_automatic" = yes ; then
8362e169010aSmrg	relink_command=
8363e169010aSmrg      fi
83647914d74bSmrg
8365e169010aSmrg      # Only create the output if not a dry run.
8366e169010aSmrg      $opt_dry_run || {
8367e169010aSmrg	for installed in no yes; do
8368e169010aSmrg	  if test "$installed" = yes; then
8369e169010aSmrg	    if test -z "$install_libdir"; then
8370e169010aSmrg	      break
8371e169010aSmrg	    fi
8372e169010aSmrg	    output="$output_objdir/$outputname"i
8373e169010aSmrg	    # Replace all uninstalled libtool libraries with the installed ones
8374e169010aSmrg	    newdependency_libs=
8375e169010aSmrg	    for deplib in $dependency_libs; do
8376e169010aSmrg	      case $deplib in
8377e169010aSmrg	      *.la)
8378e169010aSmrg		func_basename "$deplib"
8379e169010aSmrg		name="$func_basename_result"
8380e169010aSmrg		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
8381e169010aSmrg		test -z "$libdir" && \
8382e169010aSmrg		  func_fatal_error "\`$deplib' is not a valid libtool archive"
8383e169010aSmrg		newdependency_libs="$newdependency_libs $libdir/$name"
8384e169010aSmrg		;;
8385e169010aSmrg	      *) newdependency_libs="$newdependency_libs $deplib" ;;
8386e169010aSmrg	      esac
8387e169010aSmrg	    done
8388e169010aSmrg	    dependency_libs="$newdependency_libs"
8389e169010aSmrg	    newdlfiles=
8390e169010aSmrg
8391e169010aSmrg	    for lib in $dlfiles; do
8392e169010aSmrg	      case $lib in
8393e169010aSmrg	      *.la)
8394e169010aSmrg	        func_basename "$lib"
8395e169010aSmrg		name="$func_basename_result"
8396e169010aSmrg		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
8397e169010aSmrg		test -z "$libdir" && \
8398e169010aSmrg		  func_fatal_error "\`$lib' is not a valid libtool archive"
8399e169010aSmrg		newdlfiles="$newdlfiles $libdir/$name"
8400e169010aSmrg		;;
8401e169010aSmrg	      *) newdlfiles="$newdlfiles $lib" ;;
8402e169010aSmrg	      esac
8403e169010aSmrg	    done
8404e169010aSmrg	    dlfiles="$newdlfiles"
8405e169010aSmrg	    newdlprefiles=
8406e169010aSmrg	    for lib in $dlprefiles; do
8407e169010aSmrg	      case $lib in
8408e169010aSmrg	      *.la)
8409e169010aSmrg		# Only pass preopened files to the pseudo-archive (for
8410e169010aSmrg		# eventual linking with the app. that links it) if we
8411e169010aSmrg		# didn't already link the preopened objects directly into
8412e169010aSmrg		# the library:
8413e169010aSmrg		func_basename "$lib"
8414e169010aSmrg		name="$func_basename_result"
8415e169010aSmrg		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
8416e169010aSmrg		test -z "$libdir" && \
8417e169010aSmrg		  func_fatal_error "\`$lib' is not a valid libtool archive"
8418e169010aSmrg		newdlprefiles="$newdlprefiles $libdir/$name"
8419e169010aSmrg		;;
8420e169010aSmrg	      esac
8421e169010aSmrg	    done
8422e169010aSmrg	    dlprefiles="$newdlprefiles"
8423e169010aSmrg	  else
8424e169010aSmrg	    newdlfiles=
8425e169010aSmrg	    for lib in $dlfiles; do
8426e169010aSmrg	      case $lib in
8427e169010aSmrg		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
8428e169010aSmrg		*) abs=`pwd`"/$lib" ;;
8429e169010aSmrg	      esac
8430e169010aSmrg	      newdlfiles="$newdlfiles $abs"
8431e169010aSmrg	    done
8432e169010aSmrg	    dlfiles="$newdlfiles"
8433e169010aSmrg	    newdlprefiles=
8434e169010aSmrg	    for lib in $dlprefiles; do
8435e169010aSmrg	      case $lib in
8436e169010aSmrg		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
8437e169010aSmrg		*) abs=`pwd`"/$lib" ;;
8438e169010aSmrg	      esac
8439e169010aSmrg	      newdlprefiles="$newdlprefiles $abs"
8440e169010aSmrg	    done
8441e169010aSmrg	    dlprefiles="$newdlprefiles"
8442e169010aSmrg	  fi
8443e169010aSmrg	  $RM $output
8444e169010aSmrg	  # place dlname in correct position for cygwin
8445e8ead290Smrg	  # In fact, it would be nice if we could use this code for all target
8446e8ead290Smrg	  # systems that can't hard-code library paths into their executables
8447e8ead290Smrg	  # and that have no shared library path variable independent of PATH,
8448e8ead290Smrg	  # but it turns out we can't easily determine that from inspecting
8449e8ead290Smrg	  # libtool variables, so we have to hard-code the OSs to which it
8450e8ead290Smrg	  # applies here; at the moment, that means platforms that use the PE
8451e8ead290Smrg	  # object format with DLL files.  See the long comment at the top of
8452e8ead290Smrg	  # tests/bindir.at for full details.
8453e169010aSmrg	  tdlname=$dlname
8454e169010aSmrg	  case $host,$output,$installed,$module,$dlname in
8455e8ead290Smrg	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll)
8456e8ead290Smrg	      # If a -bindir argument was supplied, place the dll there.
8457e8ead290Smrg	      if test "x$bindir" != x ;
8458e8ead290Smrg	      then
8459e8ead290Smrg		func_relative_path "$install_libdir" "$bindir"
8460e8ead290Smrg		tdlname=$func_relative_path_result$dlname
8461e8ead290Smrg	      else
8462e8ead290Smrg		# Otherwise fall back on heuristic.
8463e8ead290Smrg		tdlname=../bin/$dlname
8464e8ead290Smrg	      fi
8465e8ead290Smrg	      ;;
8466e169010aSmrg	  esac
8467e169010aSmrg	  $ECHO > $output "\
8468e169010aSmrg# $outputname - a libtool library file
8469e169010aSmrg# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
8470e169010aSmrg#
8471e169010aSmrg# Please DO NOT delete this file!
8472e169010aSmrg# It is necessary for linking the library.
84737914d74bSmrg
8474e169010aSmrg# The name that we can dlopen(3).
8475e169010aSmrgdlname='$tdlname'
84767914d74bSmrg
8477e169010aSmrg# Names of this library.
8478e169010aSmrglibrary_names='$library_names'
84797914d74bSmrg
8480e169010aSmrg# The name of the static archive.
8481e169010aSmrgold_library='$old_library'
84827914d74bSmrg
8483e169010aSmrg# Linker flags that can not go in dependency_libs.
8484e169010aSmrginherited_linker_flags='$new_inherited_linker_flags'
84857914d74bSmrg
8486e169010aSmrg# Libraries that this one depends upon.
8487e169010aSmrgdependency_libs='$dependency_libs'
84887914d74bSmrg
8489e169010aSmrg# Names of additional weak libraries provided by this library
8490e169010aSmrgweak_library_names='$weak_libs'
84917914d74bSmrg
8492e169010aSmrg# Version information for $libname.
8493e169010aSmrgcurrent=$current
8494e169010aSmrgage=$age
8495e169010aSmrgrevision=$revision
84967914d74bSmrg
8497e169010aSmrg# Is this an already installed library?
8498e169010aSmrginstalled=$installed
84997914d74bSmrg
8500e169010aSmrg# Should we warn about portability when linking against -modules?
8501e169010aSmrgshouldnotlink=$module
85027914d74bSmrg
8503e169010aSmrg# Files to dlopen/dlpreopen
8504e169010aSmrgdlopen='$dlfiles'
8505e169010aSmrgdlpreopen='$dlprefiles'
85067914d74bSmrg
8507e169010aSmrg# Directory that this library needs to be installed in:
8508e169010aSmrglibdir='$install_libdir'"
8509e169010aSmrg	  if test "$installed" = no && test "$need_relink" = yes; then
8510e169010aSmrg	    $ECHO >> $output "\
8511e169010aSmrgrelink_command=\"$relink_command\""
8512e169010aSmrg	  fi
8513e169010aSmrg	done
8514e169010aSmrg      }
85157914d74bSmrg
8516e169010aSmrg      # Do a symbolic link so that the libtool archive can be found in
8517e169010aSmrg      # LD_LIBRARY_PATH before the program is installed.
8518e169010aSmrg      func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
8519e169010aSmrg      ;;
8520e169010aSmrg    esac
8521e169010aSmrg    exit $EXIT_SUCCESS
8522e169010aSmrg}
85237914d74bSmrg
8524e169010aSmrg{ test "$mode" = link || test "$mode" = relink; } &&
8525e169010aSmrg    func_mode_link ${1+"$@"}
85267914d74bSmrg
85277914d74bSmrg
8528e169010aSmrg# func_mode_uninstall arg...
8529e169010aSmrgfunc_mode_uninstall ()
8530e169010aSmrg{
8531e169010aSmrg    $opt_debug
8532e169010aSmrg    RM="$nonopt"
85337914d74bSmrg    files=
85347914d74bSmrg    rmforce=
85357914d74bSmrg    exit_status=0
85367914d74bSmrg
85377914d74bSmrg    # This variable tells wrapper scripts just to set variables rather
85387914d74bSmrg    # than running their programs.
85397914d74bSmrg    libtool_install_magic="$magic"
85407914d74bSmrg
85417914d74bSmrg    for arg
85427914d74bSmrg    do
85437914d74bSmrg      case $arg in
8544e169010aSmrg      -f) RM="$RM $arg"; rmforce=yes ;;
8545e169010aSmrg      -*) RM="$RM $arg" ;;
85467914d74bSmrg      *) files="$files $arg" ;;
85477914d74bSmrg      esac
85487914d74bSmrg    done
85497914d74bSmrg
8550e169010aSmrg    test -z "$RM" && \
8551e169010aSmrg      func_fatal_help "you must specify an RM program"
85527914d74bSmrg
85537914d74bSmrg    rmdirs=
85547914d74bSmrg
85557914d74bSmrg    origobjdir="$objdir"
85567914d74bSmrg    for file in $files; do
8557e169010aSmrg      func_dirname "$file" "" "."
8558e169010aSmrg      dir="$func_dirname_result"
8559e169010aSmrg      if test "X$dir" = X.; then
85607914d74bSmrg	objdir="$origobjdir"
85617914d74bSmrg      else
85627914d74bSmrg	objdir="$dir/$origobjdir"
85637914d74bSmrg      fi
8564e169010aSmrg      func_basename "$file"
8565e169010aSmrg      name="$func_basename_result"
85667914d74bSmrg      test "$mode" = uninstall && objdir="$dir"
85677914d74bSmrg
85687914d74bSmrg      # Remember objdir for removal later, being careful to avoid duplicates
85697914d74bSmrg      if test "$mode" = clean; then
85707914d74bSmrg	case " $rmdirs " in
85717914d74bSmrg	  *" $objdir "*) ;;
85727914d74bSmrg	  *) rmdirs="$rmdirs $objdir" ;;
85737914d74bSmrg	esac
85747914d74bSmrg      fi
85757914d74bSmrg
85767914d74bSmrg      # Don't error if the file doesn't exist and rm -f was used.
8577e169010aSmrg      if { test -L "$file"; } >/dev/null 2>&1 ||
8578e169010aSmrg	 { test -h "$file"; } >/dev/null 2>&1 ||
8579e169010aSmrg	 test -f "$file"; then
85807914d74bSmrg	:
85817914d74bSmrg      elif test -d "$file"; then
85827914d74bSmrg	exit_status=1
85837914d74bSmrg	continue
85847914d74bSmrg      elif test "$rmforce" = yes; then
85857914d74bSmrg	continue
85867914d74bSmrg      fi
85877914d74bSmrg
85887914d74bSmrg      rmfiles="$file"
85897914d74bSmrg
85907914d74bSmrg      case $name in
85917914d74bSmrg      *.la)
85927914d74bSmrg	# Possibly a libtool archive, so verify it.
8593e169010aSmrg	if func_lalib_p "$file"; then
8594e169010aSmrg	  func_source $dir/$name
85957914d74bSmrg
85967914d74bSmrg	  # Delete the libtool libraries and symlinks.
85977914d74bSmrg	  for n in $library_names; do
85987914d74bSmrg	    rmfiles="$rmfiles $objdir/$n"
85997914d74bSmrg	  done
86007914d74bSmrg	  test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
86017914d74bSmrg
86027914d74bSmrg	  case "$mode" in
86037914d74bSmrg	  clean)
86047914d74bSmrg	    case "  $library_names " in
86057914d74bSmrg	    # "  " in the beginning catches empty $dlname
86067914d74bSmrg	    *" $dlname "*) ;;
86077914d74bSmrg	    *) rmfiles="$rmfiles $objdir/$dlname" ;;
86087914d74bSmrg	    esac
8609e169010aSmrg	    test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
86107914d74bSmrg	    ;;
86117914d74bSmrg	  uninstall)
86127914d74bSmrg	    if test -n "$library_names"; then
86137914d74bSmrg	      # Do each command in the postuninstall commands.
8614e169010aSmrg	      func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
86157914d74bSmrg	    fi
86167914d74bSmrg
86177914d74bSmrg	    if test -n "$old_library"; then
86187914d74bSmrg	      # Do each command in the old_postuninstall commands.
8619e169010aSmrg	      func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
86207914d74bSmrg	    fi
86217914d74bSmrg	    # FIXME: should reinstall the best remaining shared library.
86227914d74bSmrg	    ;;
86237914d74bSmrg	  esac
86247914d74bSmrg	fi
86257914d74bSmrg	;;
86267914d74bSmrg
86277914d74bSmrg      *.lo)
86287914d74bSmrg	# Possibly a libtool object, so verify it.
8629e169010aSmrg	if func_lalib_p "$file"; then
86307914d74bSmrg
86317914d74bSmrg	  # Read the .lo file
8632e169010aSmrg	  func_source $dir/$name
86337914d74bSmrg
86347914d74bSmrg	  # Add PIC object to the list of files to remove.
8635e169010aSmrg	  if test -n "$pic_object" &&
8636e169010aSmrg	     test "$pic_object" != none; then
86377914d74bSmrg	    rmfiles="$rmfiles $dir/$pic_object"
86387914d74bSmrg	  fi
86397914d74bSmrg
86407914d74bSmrg	  # Add non-PIC object to the list of files to remove.
8641e169010aSmrg	  if test -n "$non_pic_object" &&
8642e169010aSmrg	     test "$non_pic_object" != none; then
86437914d74bSmrg	    rmfiles="$rmfiles $dir/$non_pic_object"
86447914d74bSmrg	  fi
86457914d74bSmrg	fi
86467914d74bSmrg	;;
86477914d74bSmrg
86487914d74bSmrg      *)
86497914d74bSmrg	if test "$mode" = clean ; then
86507914d74bSmrg	  noexename=$name
86517914d74bSmrg	  case $file in
86527914d74bSmrg	  *.exe)
8653e169010aSmrg	    func_stripname '' '.exe' "$file"
8654e169010aSmrg	    file=$func_stripname_result
8655e169010aSmrg	    func_stripname '' '.exe' "$name"
8656e169010aSmrg	    noexename=$func_stripname_result
86577914d74bSmrg	    # $file with .exe has already been added to rmfiles,
86587914d74bSmrg	    # add $file without .exe
86597914d74bSmrg	    rmfiles="$rmfiles $file"
86607914d74bSmrg	    ;;
86617914d74bSmrg	  esac
86627914d74bSmrg	  # Do a test to see if this is a libtool program.
8663e169010aSmrg	  if func_ltwrapper_p "$file"; then
8664e169010aSmrg	    if func_ltwrapper_executable_p "$file"; then
8665e169010aSmrg	      func_ltwrapper_scriptname "$file"
8666e169010aSmrg	      relink_command=
8667e169010aSmrg	      func_source $func_ltwrapper_scriptname_result
8668e169010aSmrg	      rmfiles="$rmfiles $func_ltwrapper_scriptname_result"
8669e169010aSmrg	    else
8670e169010aSmrg	      relink_command=
8671e169010aSmrg	      func_source $dir/$noexename
8672e169010aSmrg	    fi
86737914d74bSmrg
86747914d74bSmrg	    # note $name still contains .exe if it was in $file originally
86757914d74bSmrg	    # as does the version of $file that was added into $rmfiles
86767914d74bSmrg	    rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
86777914d74bSmrg	    if test "$fast_install" = yes && test -n "$relink_command"; then
86787914d74bSmrg	      rmfiles="$rmfiles $objdir/lt-$name"
86797914d74bSmrg	    fi
86807914d74bSmrg	    if test "X$noexename" != "X$name" ; then
86817914d74bSmrg	      rmfiles="$rmfiles $objdir/lt-${noexename}.c"
86827914d74bSmrg	    fi
86837914d74bSmrg	  fi
86847914d74bSmrg	fi
86857914d74bSmrg	;;
86867914d74bSmrg      esac
8687e169010aSmrg      func_show_eval "$RM $rmfiles" 'exit_status=1'
86887914d74bSmrg    done
86897914d74bSmrg    objdir="$origobjdir"
86907914d74bSmrg
86917914d74bSmrg    # Try to remove the ${objdir}s in the directories where we deleted files
86927914d74bSmrg    for dir in $rmdirs; do
86937914d74bSmrg      if test -d "$dir"; then
8694e169010aSmrg	func_show_eval "rmdir $dir >/dev/null 2>&1"
86957914d74bSmrg      fi
86967914d74bSmrg    done
86977914d74bSmrg
86987914d74bSmrg    exit $exit_status
8699e169010aSmrg}
87007914d74bSmrg
8701e169010aSmrg{ test "$mode" = uninstall || test "$mode" = clean; } &&
8702e169010aSmrg    func_mode_uninstall ${1+"$@"}
87037914d74bSmrg
8704e169010aSmrgtest -z "$mode" && {
8705e169010aSmrg  help="$generic_help"
8706e169010aSmrg  func_fatal_help "you must specify a MODE"
8707e169010aSmrg}
8708e169010aSmrg
8709e169010aSmrgtest -z "$exec_cmd" && \
8710e169010aSmrg  func_fatal_help "invalid operation mode \`$mode'"
87117914d74bSmrg
87127914d74bSmrgif test -n "$exec_cmd"; then
8713e169010aSmrg  eval exec "$exec_cmd"
87147914d74bSmrg  exit $EXIT_FAILURE
87157914d74bSmrgfi
87167914d74bSmrg
8717e169010aSmrgexit $exit_status
87187914d74bSmrg
87197914d74bSmrg
87207914d74bSmrg# The TAGs below are defined such that we never get into a situation
87217914d74bSmrg# in which we disable both kinds of libraries.  Given conflicting
87227914d74bSmrg# choices, we go for a static library, that is the most portable,
87237914d74bSmrg# since we can't tell whether shared libraries were disabled because
87247914d74bSmrg# the user asked for that or because the platform doesn't support
87257914d74bSmrg# them.  This is particularly important on AIX, because we don't
87267914d74bSmrg# support having both static and shared libraries enabled at the same
87277914d74bSmrg# time on that platform, so we default to a shared-only configuration.
87287914d74bSmrg# If a disable-shared tag is given, we'll fallback to a static-only
87297914d74bSmrg# configuration.  But we'll never go from static-only to shared-only.
87307914d74bSmrg
87317914d74bSmrg# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
8732e169010aSmrgbuild_libtool_libs=no
8733e169010aSmrgbuild_old_libs=yes
87347914d74bSmrg# ### END LIBTOOL TAG CONFIG: disable-shared
87357914d74bSmrg
87367914d74bSmrg# ### BEGIN LIBTOOL TAG CONFIG: disable-static
8737e169010aSmrgbuild_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
87387914d74bSmrg# ### END LIBTOOL TAG CONFIG: disable-static
87397914d74bSmrg
87407914d74bSmrg# Local Variables:
87417914d74bSmrg# mode:shell-script
87427914d74bSmrg# sh-indentation:2
87437914d74bSmrg# End:
8744e169010aSmrg# vi:sw=2
8745e169010aSmrg
8746