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