1548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# libtool (GNU libtool) 2.4
3548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
4548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
6548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
7548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# This is free software; see the source for copying conditions.  There is NO
8548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
9548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
10548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# GNU Libtool is free software; you can redistribute it and/or modify
11548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# it under the terms of the GNU General Public License as published by
12548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# the Free Software Foundation; either version 2 of the License, or
13548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# (at your option) any later version.
14548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#
15548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# As a special exception to the GNU General Public License,
16548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# if you distribute this file as part of a program or library that
17548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# is built using GNU Libtool, you may include this file under the
18548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# same distribution terms that you use for the rest of that program.
19548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#
20548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# GNU Libtool is distributed in the hope that it will be useful, but
21548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# WITHOUT ANY WARRANTY; without even the implied warranty of
22548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
23548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# General Public License for more details.
24548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#
25548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# You should have received a copy of the GNU General Public License
26548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# along with GNU Libtool; see the file COPYING.  If not, a copy
27548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# can be downloaded from http://www.gnu.org/licenses/gpl.html,
28548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# or obtained by writing to the Free Software Foundation, Inc.,
29548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
30548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
31548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Usage: $progname [OPTION]... [MODE-ARG]...
32548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#
33548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Provide generalized library-building support services.
34548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#
35548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#       --config             show all configuration variables
36548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#       --debug              enable verbose shell tracing
37548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#   -n, --dry-run            display commands without modifying any files
38548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#       --features           display basic configuration information and exit
39548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#       --mode=MODE          use operation mode MODE
40548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#       --preserve-dup-deps  don't remove duplicate dependency libraries
41548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#       --quiet, --silent    don't print informational messages
42548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#       --no-quiet, --no-silent
43548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#                            print informational messages (default)
44548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#       --tag=TAG            use configuration variables from tag TAG
45548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#   -v, --verbose            print more informational messages than default
46548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#       --no-verbose         don't print the extra informational messages
47548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#       --version            print version information
48548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#   -h, --help, --help-all   print short, long, or detailed help message
49548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#
50548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# MODE must be one of the following:
51548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#
52548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#         clean              remove files from the build directory
53548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#         compile            compile a source file into a libtool object
54548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#         execute            automatically set library path, then run a program
55548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#         finish             complete the installation of libtool libraries
56548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#         install            install libraries or executables
57548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#         link               create a library or an executable
58548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#         uninstall          remove libraries from an installed directory
59548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#
60548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# MODE-ARGS vary depending on the MODE.  When passed as first option,
61548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that.
62548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
63548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#
64548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# When reporting a bug, please describe a test case to reproduce it and
65548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# include the following information:
66548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#
67548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#         host-triplet:	$host
68548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#         shell:		$SHELL
69548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#         compiler:		$LTCC
70548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#         compiler flags:		$LTCFLAGS
71548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#         linker:		$LD (gnu? $with_gnu_ld)
72548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#         $progname:	(GNU libtool) 2.4
73548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#         automake:	$automake_version
74548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#         autoconf:	$autoconf_version
75548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#
76548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Report bugs to <bug-libtool@gnu.org>.
77548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# GNU libtool home page: <http://www.gnu.org/software/libtool/>.
78548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# General help using GNU software: <http://www.gnu.org/gethelp/>.
79548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
80548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenPROGRAM=libtool
81548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenPACKAGE=libtool
82548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenVERSION=2.4
83548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenTIMESTAMP=""
84548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenpackage_revision=1.3293
85548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
86548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define SED for historic ltconfig's generated by Libtool 1.3
87548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissentest -z "$SED" && SED=sed
88548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
89548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Be Bourne compatible
90548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
91548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  emulate sh
92548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  NULLCMD=:
93548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
94548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  # is contrary to our usage.  Disable this feature.
95548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  alias -g '${1+"$@"}'='"$@"'
96548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  setopt NO_GLOB_SUBST
97548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenelse
98548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
99548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfi
100548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenBIN_SH=xpg4; export BIN_SH # for Tru64
101548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenDUALCASE=1; export DUALCASE # for MKS sh
102548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
103548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# A function that is used when there is no print builtin or printf.
104548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_fallback_echo ()
105548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
106548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  eval 'cat <<_LTECHO_EOF
107548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen$1
108548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen_LTECHO_EOF'
109548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
110548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
111548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# NLS nuisances: We save the old values to restore during execute mode.
112548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenlt_user_locale=
113548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenlt_safe_locale=
114548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfor lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
115548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissendo
116548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  eval "if test \"\${$lt_var+set}\" = set; then
117548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen          save_$lt_var=\$$lt_var
118548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen          $lt_var=C
119548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  export $lt_var
120548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
121548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
122548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi"
123548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissendone
124548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenLC_ALL=C
125548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenLANGUAGE=C
126548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenexport LANGUAGE LC_ALL
127548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
128548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen$lt_unset CDPATH
129548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
130548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
131548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
132548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# is ksh but when the shell is invoked as "sh" and the current value of
133548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# the _XPG environment variable is not equal to 1 (one), the special
134548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# positional parameter $0, within a function call, is the name of the
135548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# function.
136548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenprogpath="$0"
137548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
138548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
139548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
140548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen: ${CP="cp -f"}
141548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissentest "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
142548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen: ${EGREP="/bin/grep -E"}
143548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen: ${FGREP="/bin/grep -F"}
144548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen: ${GREP="/bin/grep"}
145548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen: ${LN_S="ln -s"}
146548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen: ${MAKE="make"}
147548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen: ${MKDIR="mkdir"}
148548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen: ${MV="mv -f"}
149548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen: ${RM="rm -f"}
150548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen: ${SED="/bin/sed"}
151548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
152548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen: ${Xsed="$SED -e 1s/^X//"}
153548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
154548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Global variables:
155548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenEXIT_SUCCESS=0
156548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenEXIT_FAILURE=1
157548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenEXIT_MISMATCH=63  # $? = 63 is used to indicate version mismatch to missing.
158548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenEXIT_SKIP=77	  # $? = 77 is used to indicate a skipped test to automake.
159548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
160548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenexit_status=$EXIT_SUCCESS
161548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
162548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Make sure IFS has a sensible default
163548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenlt_nl='
164548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen'
165548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenIFS=" 	$lt_nl"
166548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
167548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissendirname="s,/[^/]*$,,"
168548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenbasename="s,^.*/,,"
169548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
170548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_dirname file append nondir_replacement
171548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
172548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# otherwise set result to NONDIR_REPLACEMENT.
173548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_dirname ()
174548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
175548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
176548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    if test "X$func_dirname_result" = "X${1}"; then
177548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_dirname_result="${3}"
178548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    else
179548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_dirname_result="$func_dirname_result${2}"
180548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    fi
181548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} # func_dirname may be replaced by extended shell implementation
182548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
183548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
184548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_basename file
185548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_basename ()
186548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
187548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_basename_result=`$ECHO "${1}" | $SED "$basename"`
188548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} # func_basename may be replaced by extended shell implementation
189548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
190548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
191548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_dirname_and_basename file append nondir_replacement
192548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# perform func_basename and func_dirname in a single function
193548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# call:
194548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#   dirname:  Compute the dirname of FILE.  If nonempty,
195548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#             add APPEND to the result, otherwise set result
196548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#             to NONDIR_REPLACEMENT.
197548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#             value returned in "$func_dirname_result"
198548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#   basename: Compute filename of FILE.
199548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#             value retuned in "$func_basename_result"
200548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Implementation must be kept synchronized with func_dirname
201548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# and func_basename. For efficiency, we do not delegate to
202548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# those functions but instead duplicate the functionality here.
203548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_dirname_and_basename ()
204548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
205548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # Extract subdirectory from the argument.
206548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"`
207548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    if test "X$func_dirname_result" = "X${1}"; then
208548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_dirname_result="${3}"
209548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    else
210548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_dirname_result="$func_dirname_result${2}"
211548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    fi
212548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_basename_result=`$ECHO "${1}" | $SED -e "$basename"`
213548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} # func_dirname_and_basename may be replaced by extended shell implementation
214548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
215548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
216548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_stripname prefix suffix name
217548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# strip PREFIX and SUFFIX off of NAME.
218548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# PREFIX and SUFFIX must not contain globbing or regex special
219548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# characters, hashes, percent signs, but SUFFIX may contain a leading
220548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# dot (in which case that matches only a dot).
221548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_strip_suffix prefix name
222548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_stripname ()
223548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
224548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    case ${2} in
225548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
226548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      *)  func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
227548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    esac
228548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} # func_stripname may be replaced by extended shell implementation
229548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
230548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
231548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# These SED scripts presuppose an absolute path with a trailing slash.
232548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenpathcar='s,^/\([^/]*\).*$,\1,'
233548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenpathcdr='s,^/[^/]*,,'
234548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenremovedotparts=':dotsl
235548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		s@/\./@/@g
236548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		t dotsl
237548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		s,/\.$,/,'
238548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissencollapseslashes='s@/\{1,\}@/@g'
239548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfinalslash='s,/*$,/,'
240548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
241548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_normal_abspath PATH
242548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Remove doubled-up and trailing slashes, "." path components,
243548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# and cancel out any ".." path components in PATH after making
244548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# it an absolute path.
245548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#             value returned in "$func_normal_abspath_result"
246548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_normal_abspath ()
247548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
248548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  # Start from root dir and reassemble the path.
249548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  func_normal_abspath_result=
250548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  func_normal_abspath_tpath=$1
251548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  func_normal_abspath_altnamespace=
252548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  case $func_normal_abspath_tpath in
253548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    "")
254548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Empty path, that just means $cwd.
255548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_stripname '' '/' "`pwd`"
256548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_normal_abspath_result=$func_stripname_result
257548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      return
258548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    ;;
259548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # The next three entries are used to spot a run of precisely
260548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # two leading slashes without using negated character classes;
261548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # we take advantage of case's first-match behaviour.
262548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    ///*)
263548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Unusual form of absolute path, do nothing.
264548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    ;;
265548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    //*)
266548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Not necessarily an ordinary path; POSIX reserves leading '//'
267548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # and for example Cygwin uses it to access remote file shares
268548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # over CIFS/SMB, so we conserve a leading double slash if found.
269548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_normal_abspath_altnamespace=/
270548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    ;;
271548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    /*)
272548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Absolute path, do nothing.
273548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    ;;
274548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    *)
275548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Relative path, prepend $cwd.
276548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath
277548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    ;;
278548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  esac
279548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  # Cancel out all the simple stuff to save iterations.  We also want
280548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  # the path to end with a slash for ease of parsing, so make sure
281548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  # there is one (and only one) here.
282548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
283548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"`
284548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  while :; do
285548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # Processed it all yet?
286548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    if test "$func_normal_abspath_tpath" = / ; then
287548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # If we ascended to the root using ".." the result may be empty now.
288548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test -z "$func_normal_abspath_result" ; then
289548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        func_normal_abspath_result=/
290548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
291548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      break
292548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    fi
293548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \
294548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        -e "$pathcar"`
295548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
296548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        -e "$pathcdr"`
297548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # Figure out what to do with it
298548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    case $func_normal_abspath_tcomponent in
299548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      "")
300548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        # Trailing empty path component, ignore it.
301548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      ;;
302548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      ..)
303548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        # Parent dir; strip last assembled component from result.
304548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        func_dirname "$func_normal_abspath_result"
305548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        func_normal_abspath_result=$func_dirname_result
306548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      ;;
307548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      *)
308548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        # Actual path component, append it.
309548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent
310548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      ;;
311548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    esac
312548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  done
313548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  # Restore leading double-slash if one was found on entry.
314548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result
315548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
316548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
317548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_relative_path SRCDIR DSTDIR
318548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# generates a relative path from SRCDIR to DSTDIR, with a trailing
319548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# slash if non-empty, suitable for immediately appending a filename
320548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# without needing to append a separator.
321548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#             value returned in "$func_relative_path_result"
322548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_relative_path ()
323548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
324548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  func_relative_path_result=
325548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  func_normal_abspath "$1"
326548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  func_relative_path_tlibdir=$func_normal_abspath_result
327548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  func_normal_abspath "$2"
328548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  func_relative_path_tbindir=$func_normal_abspath_result
329548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
330548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  # Ascend the tree starting from libdir
331548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  while :; do
332548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # check if we have found a prefix of bindir
333548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    case $func_relative_path_tbindir in
334548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      $func_relative_path_tlibdir)
335548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        # found an exact match
336548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        func_relative_path_tcancelled=
337548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        break
338548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        ;;
339548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      $func_relative_path_tlibdir*)
340548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        # found a matching prefix
341548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir"
342548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        func_relative_path_tcancelled=$func_stripname_result
343548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        if test -z "$func_relative_path_result"; then
344548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen          func_relative_path_result=.
345548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        fi
346548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        break
347548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        ;;
348548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      *)
349548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        func_dirname $func_relative_path_tlibdir
350548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        func_relative_path_tlibdir=${func_dirname_result}
351548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        if test "x$func_relative_path_tlibdir" = x ; then
352548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen          # Have to descend all the way to the root!
353548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen          func_relative_path_result=../$func_relative_path_result
354548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen          func_relative_path_tcancelled=$func_relative_path_tbindir
355548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen          break
356548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        fi
357548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        func_relative_path_result=../$func_relative_path_result
358548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        ;;
359548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    esac
360548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  done
361548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
362548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  # Now calculate path; take care to avoid doubling-up slashes.
363548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  func_stripname '' '/' "$func_relative_path_result"
364548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  func_relative_path_result=$func_stripname_result
365548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  func_stripname '/' '/' "$func_relative_path_tcancelled"
366548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  if test "x$func_stripname_result" != x ; then
367548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_relative_path_result=${func_relative_path_result}/${func_stripname_result}
368548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  fi
369548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
370548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  # Normalisation. If bindir is libdir, return empty string,
371548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  # else relative path ending with a slash; either way, target
372548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  # file name can be directly appended.
373548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  if test ! -z "$func_relative_path_result"; then
374548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_stripname './' '' "$func_relative_path_result/"
375548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_relative_path_result=$func_stripname_result
376548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  fi
377548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
378548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
379548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# The name of this program:
380548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_dirname_and_basename "$progpath"
381548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenprogname=$func_basename_result
382548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
383548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Make sure we have an absolute path for reexecution:
384548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissencase $progpath in
385548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  [\\/]*|[A-Za-z]:\\*) ;;
386548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  *[\\/]*)
387548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen     progdir=$func_dirname_result
388548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen     progdir=`cd "$progdir" && pwd`
389548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen     progpath="$progdir/$progname"
390548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen     ;;
391548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  *)
392548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen     save_IFS="$IFS"
393548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen     IFS=:
394548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen     for progdir in $PATH; do
395548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen       IFS="$save_IFS"
396548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen       test -x "$progdir/$progname" && break
397548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen     done
398548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen     IFS="$save_IFS"
399548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen     test -n "$progdir" || progdir=`pwd`
400548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen     progpath="$progdir/$progname"
401548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen     ;;
402548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenesac
403548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
404548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Sed substitution that helps us do robust quoting.  It backslashifies
405548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# metacharacters that are still active within double-quoted strings.
406548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenXsed="${SED}"' -e 1s/^X//'
407548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissensed_quote_subst='s/\([`"$\\]\)/\\\1/g'
408548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
409548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Same as above, but do not quote variable references.
410548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissendouble_quote_subst='s/\(["`\\]\)/\\\1/g'
411548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
412548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Sed substitution that turns a string into a regex matching for the
413548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# string literally.
414548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissensed_make_literal_regex='s,[].[^$\\*\/],\\&,g'
415548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
416548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Sed substitution that converts a w32 file name or path
417548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# which contains forward slashes, into one that contains
418548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# (escaped) backslashes.  A very naive implementation.
419548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenlt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
420548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
421548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Re-`\' parameter expansions in output of double_quote_subst that were
422548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# `\'-ed in input to the same.  If an odd number of `\' preceded a '$'
423548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# in input to double_quote_subst, that '$' was protected from expansion.
424548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Since each input `\' is now two `\'s, look for any number of runs of
425548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# four `\'s followed by two `\'s and then a '$'.  `\' that '$'.
426548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenbs='\\'
427548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenbs2='\\\\'
428548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenbs4='\\\\\\\\'
429548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissendollar='\$'
430548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissensed_double_backslash="\
431548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  s/$bs4/&\\
432548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen/g
433548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  s/^$bs2$dollar/$bs&/
434548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
435548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  s/\n//g"
436548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
437548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Standard options:
438548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenopt_dry_run=false
439548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenopt_help=false
440548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenopt_quiet=false
441548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenopt_verbose=false
442548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenopt_warning=:
443548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
444548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_echo arg...
445548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Echo program name prefixed message, along with the current mode
446548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# name if it has been set yet.
447548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_echo ()
448548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
449548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    $ECHO "$progname: ${opt_mode+$opt_mode: }$*"
450548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
451548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
452548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_verbose arg...
453548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Echo program name prefixed message in verbose mode only.
454548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_verbose ()
455548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
456548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    $opt_verbose && func_echo ${1+"$@"}
457548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
458548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # A bug in bash halts the script if the last line of a function
459548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # fails when set -e is in force, so we need another command to
460548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # work around that:
461548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    :
462548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
463548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
464548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_echo_all arg...
465548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Invoke $ECHO with all args, space-separated.
466548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_echo_all ()
467548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
468548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    $ECHO "$*"
469548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
470548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
471548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_error arg...
472548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Echo program name prefixed message to standard error.
473548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_error ()
474548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
475548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2
476548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
477548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
478548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_warning arg...
479548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Echo program name prefixed warning message to standard error.
480548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_warning ()
481548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
482548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2
483548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
484548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # bash bug again:
485548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    :
486548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
487548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
488548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_fatal_error arg...
489548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Echo program name prefixed message to standard error, and exit.
490548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_fatal_error ()
491548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
492548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_error ${1+"$@"}
493548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    exit $EXIT_FAILURE
494548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
495548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
496548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_fatal_help arg...
497548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Echo program name prefixed message to standard error, followed by
498548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# a help hint, and exit.
499548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_fatal_help ()
500548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
501548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_error ${1+"$@"}
502548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_fatal_error "$help"
503548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
504548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenhelp="Try \`$progname --help' for more information."  ## default
505548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
506548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
507548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_grep expression filename
508548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Check whether EXPRESSION matches any line of FILENAME, without output.
509548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_grep ()
510548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
511548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    $GREP "$1" "$2" >/dev/null 2>&1
512548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
513548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
514548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
515548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_mkdir_p directory-path
516548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Make sure the entire path to DIRECTORY-PATH is available.
517548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_mkdir_p ()
518548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
519548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    my_directory_path="$1"
520548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    my_dir_list=
521548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
522548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
523548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
524548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Protect directory names starting with `-'
525548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      case $my_directory_path in
526548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        -*) my_directory_path="./$my_directory_path" ;;
527548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      esac
528548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
529548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # While some portion of DIR does not yet exist...
530548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      while test ! -d "$my_directory_path"; do
531548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        # ...make a list in topmost first order.  Use a colon delimited
532548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# list incase some portion of path contains whitespace.
533548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        my_dir_list="$my_directory_path:$my_dir_list"
534548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
535548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        # If the last portion added has no slash in it, the list is done
536548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        case $my_directory_path in */*) ;; *) break ;; esac
537548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
538548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        # ...otherwise throw away the child directory and loop
539548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"`
540548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      done
541548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'`
542548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
543548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      save_mkdir_p_IFS="$IFS"; IFS=':'
544548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      for my_dir in $my_dir_list; do
545548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	IFS="$save_mkdir_p_IFS"
546548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        # mkdir can fail with a `File exist' error if two processes
547548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        # try to create one of the directories concurrently.  Don't
548548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        # stop in that case!
549548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        $MKDIR "$my_dir" 2>/dev/null || :
550548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      done
551548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      IFS="$save_mkdir_p_IFS"
552548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
553548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Bail out if we (or some other process) failed to create a directory.
554548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      test -d "$my_directory_path" || \
555548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        func_fatal_error "Failed to create \`$1'"
556548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    fi
557548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
558548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
559548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
560548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_mktempdir [string]
561548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Make a temporary directory that won't clash with other running
562548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# libtool processes, and avoids race conditions if possible.  If
563548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# given, STRING is the basename for that directory.
564548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_mktempdir ()
565548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
566548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    my_template="${TMPDIR-/tmp}/${1-$progname}"
567548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
568548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    if test "$opt_dry_run" = ":"; then
569548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Return a directory name, but don't create it in dry-run mode
570548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      my_tmpdir="${my_template}-$$"
571548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    else
572548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
573548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # If mktemp works, use that first and foremost
574548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
575548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
576548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test ! -d "$my_tmpdir"; then
577548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        # Failing that, at least try and use $RANDOM to avoid a race
578548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        my_tmpdir="${my_template}-${RANDOM-0}$$"
579548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
580548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        save_mktempdir_umask=`umask`
581548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        umask 0077
582548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        $MKDIR "$my_tmpdir"
583548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        umask $save_mktempdir_umask
584548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
585548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
586548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # If we're not in dry-run mode, bomb out on failure
587548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      test -d "$my_tmpdir" || \
588548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
589548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    fi
590548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
591548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    $ECHO "$my_tmpdir"
592548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
593548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
594548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
595548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_quote_for_eval arg
596548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Aesthetically quote ARG to be evaled later.
597548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
598548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# is double-quoted, suitable for a subsequent eval, whereas
599548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
600548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# which are still active within double quotes backslashified.
601548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_quote_for_eval ()
602548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
603548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    case $1 in
604548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      *[\\\`\"\$]*)
605548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;;
606548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      *)
607548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        func_quote_for_eval_unquoted_result="$1" ;;
608548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    esac
609548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
610548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    case $func_quote_for_eval_unquoted_result in
611548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Double-quote args containing shell metacharacters to delay
612548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # word splitting, command substitution and and variable
613548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # expansion for a subsequent eval.
614548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Many Bourne shells cannot handle close brackets correctly
615548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # in scan sets, so we specify it separately.
616548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
617548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
618548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        ;;
619548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      *)
620548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
621548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    esac
622548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
623548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
624548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
625548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_quote_for_expand arg
626548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Aesthetically quote ARG to be evaled later; same as above,
627548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# but do not quote variable references.
628548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_quote_for_expand ()
629548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
630548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    case $1 in
631548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      *[\\\`\"]*)
632548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	my_arg=`$ECHO "$1" | $SED \
633548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
634548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      *)
635548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        my_arg="$1" ;;
636548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    esac
637548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
638548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    case $my_arg in
639548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Double-quote args containing shell metacharacters to delay
640548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # word splitting and command substitution for a subsequent eval.
641548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Many Bourne shells cannot handle close brackets correctly
642548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # in scan sets, so we specify it separately.
643548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
644548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        my_arg="\"$my_arg\""
645548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        ;;
646548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    esac
647548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
648548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_quote_for_expand_result="$my_arg"
649548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
650548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
651548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
652548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_show_eval cmd [fail_exp]
653548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
654548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
655548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# is given, then evaluate it.
656548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_show_eval ()
657548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
658548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    my_cmd="$1"
659548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    my_fail_exp="${2-:}"
660548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
661548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    ${opt_silent-false} || {
662548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_quote_for_expand "$my_cmd"
663548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      eval "func_echo $func_quote_for_expand_result"
664548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    }
665548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
666548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    if ${opt_dry_run-false}; then :; else
667548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      eval "$my_cmd"
668548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      my_status=$?
669548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test "$my_status" -eq 0; then :; else
670548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	eval "(exit $my_status); $my_fail_exp"
671548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
672548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    fi
673548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
674548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
675548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
676548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_show_eval_locale cmd [fail_exp]
677548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
678548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
679548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# is given, then evaluate it.  Use the saved locale for evaluation.
680548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_show_eval_locale ()
681548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
682548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    my_cmd="$1"
683548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    my_fail_exp="${2-:}"
684548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
685548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    ${opt_silent-false} || {
686548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_quote_for_expand "$my_cmd"
687548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      eval "func_echo $func_quote_for_expand_result"
688548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    }
689548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
690548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    if ${opt_dry_run-false}; then :; else
691548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      eval "$lt_user_locale
692548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    $my_cmd"
693548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      my_status=$?
694548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      eval "$lt_safe_locale"
695548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test "$my_status" -eq 0; then :; else
696548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	eval "(exit $my_status); $my_fail_exp"
697548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
698548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    fi
699548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
700548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
701548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_tr_sh
702548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Turn $1 into a string suitable for a shell variable name.
703548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Result is stored in $func_tr_sh_result.  All characters
704548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# not in the set a-zA-Z0-9_ are replaced with '_'. Further,
705548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# if $1 begins with a digit, a '_' is prepended as well.
706548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_tr_sh ()
707548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
708548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  case $1 in
709548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  [0-9]* | *[!a-zA-Z0-9_]*)
710548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'`
711548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    ;;
712548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  * )
713548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_tr_sh_result=$1
714548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    ;;
715548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  esac
716548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
717548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
718548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
719548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_version
720548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Echo version message to standard output and exit.
721548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_version ()
722548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
723548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    $opt_debug
724548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
725548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    $SED -n '/(C)/!b go
726548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	:more
727548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	/\./!{
728548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  N
729548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  s/\n# / /
730548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  b more
731548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	}
732548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	:go
733548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	/^# '$PROGRAM' (GNU /,/# warranty; / {
734548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        s/^# //
735548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	s/^# *$//
736548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
737548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        p
738548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen     }' < "$progpath"
739548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen     exit $?
740548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
741548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
742548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_usage
743548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Echo short help message to standard output and exit.
744548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_usage ()
745548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
746548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    $opt_debug
747548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
748548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    $SED -n '/^# Usage:/,/^#  *.*--help/ {
749548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        s/^# //
750548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	s/^# *$//
751548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	s/\$progname/'$progname'/
752548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	p
753548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    }' < "$progpath"
754548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    echo
755548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    $ECHO "run \`$progname --help | more' for full usage"
756548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    exit $?
757548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
758548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
759548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_help [NOEXIT]
760548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Echo long help message to standard output and exit,
761548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# unless 'noexit' is passed as argument.
762548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_help ()
763548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
764548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    $opt_debug
765548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
766548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    $SED -n '/^# Usage:/,/# Report bugs to/ {
767548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	:print
768548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        s/^# //
769548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	s/^# *$//
770548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	s*\$progname*'$progname'*
771548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	s*\$host*'"$host"'*
772548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	s*\$SHELL*'"$SHELL"'*
773548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	s*\$LTCC*'"$LTCC"'*
774548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	s*\$LTCFLAGS*'"$LTCFLAGS"'*
775548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	s*\$LD*'"$LD"'*
776548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	s/\$with_gnu_ld/'"$with_gnu_ld"'/
777548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/
778548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/
779548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	p
780548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	d
781548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen     }
782548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen     /^# .* home page:/b print
783548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen     /^# General help using/b print
784548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen     ' < "$progpath"
785548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    ret=$?
786548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    if test -z "$1"; then
787548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      exit $ret
788548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    fi
789548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
790548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
791548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_missing_arg argname
792548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Echo program name prefixed message to standard error and set global
793548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# exit_cmd.
794548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_missing_arg ()
795548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
796548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    $opt_debug
797548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
798548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_error "missing argument for $1."
799548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    exit_cmd=exit
800548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
801548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
802548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
803548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_split_short_opt shortopt
804548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Set func_split_short_opt_name and func_split_short_opt_arg shell
805548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# variables after splitting SHORTOPT after the 2nd character.
806548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_split_short_opt ()
807548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
808548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    my_sed_short_opt='1s/^\(..\).*$/\1/;q'
809548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    my_sed_short_rest='1s/^..\(.*\)$/\1/;q'
810548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
811548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"`
812548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"`
813548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} # func_split_short_opt may be replaced by extended shell implementation
814548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
815548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
816548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_split_long_opt longopt
817548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Set func_split_long_opt_name and func_split_long_opt_arg shell
818548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# variables after splitting LONGOPT at the `=' sign.
819548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_split_long_opt ()
820548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
821548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q'
822548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    my_sed_long_arg='1s/^--[^=]*=//'
823548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
824548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"`
825548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"`
826548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} # func_split_long_opt may be replaced by extended shell implementation
827548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
828548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenexit_cmd=:
829548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
830548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
831548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
832548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
833548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
834548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenmagic="%%%MAGIC variable%%%"
835548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenmagic_exe="%%%MAGIC EXE variable%%%"
836548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
837548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Global variables.
838548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissennonopt=
839548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenpreserve_args=
840548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenlo2o="s/\\.lo\$/.${objext}/"
841548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelisseno2lo="s/\\.${objext}\$/.lo/"
842548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenextracted_archives=
843548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenextracted_serial=0
844548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
845548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# If this variable is set in any of the actions, the command in it
846548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# will be execed at the end.  This prevents here-documents from being
847548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# left over by shells.
848548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenexec_cmd=
849548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
850548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_append var value
851548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Append VALUE to the end of shell variable VAR.
852548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_append ()
853548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
854548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    eval "${1}=\$${1}\${2}"
855548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} # func_append may be replaced by extended shell implementation
856548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
857548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_append_quoted var value
858548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Quote VALUE and append to the end of shell variable VAR, separated
859548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# by a space.
860548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_append_quoted ()
861548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
862548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_quote_for_eval "${2}"
863548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    eval "${1}=\$${1}\\ \$func_quote_for_eval_result"
864548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} # func_append_quoted may be replaced by extended shell implementation
865548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
866548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
867548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_arith arithmetic-term...
868548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_arith ()
869548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
870548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_arith_result=`expr "${@}"`
871548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} # func_arith may be replaced by extended shell implementation
872548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
873548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
874548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_len string
875548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# STRING may not start with a hyphen.
876548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_len ()
877548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
878548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len`
879548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} # func_len may be replaced by extended shell implementation
880548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
881548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
882548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_lo2o object
883548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_lo2o ()
884548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
885548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
886548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} # func_lo2o may be replaced by extended shell implementation
887548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
888548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
889548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_xform libobj-or-source
890548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_xform ()
891548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
892548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
893548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} # func_xform may be replaced by extended shell implementation
894548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
895548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
896548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_fatal_configuration arg...
897548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Echo program name prefixed message to standard error, followed by
898548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# a configuration failure hint, and exit.
899548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_fatal_configuration ()
900548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
901548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_error ${1+"$@"}
902548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_error "See the $PACKAGE documentation for more information."
903548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_fatal_error "Fatal configuration error."
904548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
905548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
906548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
907548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_config
908548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Display the configuration for all the tags in this script.
909548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_config ()
910548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
911548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    re_begincf='^# ### BEGIN LIBTOOL'
912548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    re_endcf='^# ### END LIBTOOL'
913548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
914548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # Default configuration.
915548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
916548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
917548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # Now print the configurations for the tags.
918548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    for tagname in $taglist; do
919548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
920548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    done
921548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
922548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    exit $?
923548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
924548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
925548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_features
926548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Display the features supported by this script.
927548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_features ()
928548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
929548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    echo "host: $host"
930548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    if test "$build_libtool_libs" = yes; then
931548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      echo "enable shared libraries"
932548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    else
933548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      echo "disable shared libraries"
934548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    fi
935548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    if test "$build_old_libs" = yes; then
936548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      echo "enable static libraries"
937548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    else
938548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      echo "disable static libraries"
939548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    fi
940548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
941548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    exit $?
942548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
943548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
944548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_enable_tag tagname
945548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Verify that TAGNAME is valid, and either flag an error and exit, or
946548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# enable the TAGNAME tag.  We also add TAGNAME to the global $taglist
947548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# variable here.
948548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_enable_tag ()
949548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
950548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  # Global variable:
951548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  tagname="$1"
952548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
953548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
954548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
955548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  sed_extractcf="/$re_begincf/,/$re_endcf/p"
956548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
957548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  # Validate tagname.
958548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  case $tagname in
959548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    *[!-_A-Za-z0-9,/]*)
960548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_fatal_error "invalid tag name: $tagname"
961548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      ;;
962548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  esac
963548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
964548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  # Don't test for the "default" C tag, as we know it's
965548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  # there but not specially marked.
966548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  case $tagname in
967548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    CC) ;;
968548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    *)
969548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
970548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	taglist="$taglist $tagname"
971548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
972548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Evaluate the configuration.  Be careful to quote the path
973548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# and the sed script, to avoid splitting on whitespace, but
974548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# also don't use non-portable quotes within backquotes within
975548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# quotes we have to do it in 2 steps:
976548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
977548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	eval "$extractedcf"
978548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      else
979548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_error "ignoring unknown tag $tagname"
980548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
981548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      ;;
982548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  esac
983548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
984548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
985548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_check_version_match
986548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Ensure that we are using m4 macros, and libtool script from the same
987548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# release of libtool.
988548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_check_version_match ()
989548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
990548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  if test "$package_revision" != "$macro_revision"; then
991548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    if test "$VERSION" != "$macro_version"; then
992548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test -z "$macro_version"; then
993548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        cat >&2 <<_LT_EOF
994548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
995548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen$progname: definition of this LT_INIT comes from an older release.
996548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
997548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen$progname: and run autoconf again.
998548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen_LT_EOF
999548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      else
1000548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        cat >&2 <<_LT_EOF
1001548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
1002548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
1003548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
1004548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen$progname: and run autoconf again.
1005548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen_LT_EOF
1006548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
1007548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    else
1008548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      cat >&2 <<_LT_EOF
1009548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen$progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision,
1010548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen$progname: but the definition of this LT_INIT comes from revision $macro_revision.
1011548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen$progname: You should recreate aclocal.m4 with macros from revision $package_revision
1012548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen$progname: of $PACKAGE $VERSION and run autoconf again.
1013548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen_LT_EOF
1014548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    fi
1015548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1016548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    exit $EXIT_MISMATCH
1017548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  fi
1018548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
1019548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1020548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1021548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Shorthand for --mode=foo, only valid as the first argument
1022548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissencase $1 in
1023548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenclean|clea|cle|cl)
1024548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  shift; set dummy --mode clean ${1+"$@"}; shift
1025548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  ;;
1026548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissencompile|compil|compi|comp|com|co|c)
1027548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  shift; set dummy --mode compile ${1+"$@"}; shift
1028548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  ;;
1029548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenexecute|execut|execu|exec|exe|ex|e)
1030548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  shift; set dummy --mode execute ${1+"$@"}; shift
1031548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  ;;
1032548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfinish|finis|fini|fin|fi|f)
1033548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  shift; set dummy --mode finish ${1+"$@"}; shift
1034548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  ;;
1035548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelisseninstall|instal|insta|inst|ins|in|i)
1036548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  shift; set dummy --mode install ${1+"$@"}; shift
1037548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  ;;
1038548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenlink|lin|li|l)
1039548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  shift; set dummy --mode link ${1+"$@"}; shift
1040548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  ;;
1041548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenuninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
1042548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  shift; set dummy --mode uninstall ${1+"$@"}; shift
1043548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  ;;
1044548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenesac
1045548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1046548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1047548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1048548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Option defaults:
1049548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenopt_debug=:
1050548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenopt_dry_run=false
1051548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenopt_config=false
1052548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenopt_preserve_dup_deps=false
1053548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenopt_features=false
1054548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenopt_finish=false
1055548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenopt_help=false
1056548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenopt_help_all=false
1057548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenopt_silent=:
1058548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenopt_verbose=:
1059548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenopt_silent=false
1060548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenopt_verbose=false
1061548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1062548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1063548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Parse options once, thoroughly.  This comes as soon as possible in the
1064548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# script to make things like `--version' happen as quickly as we can.
1065548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
1066548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  # this just eases exit handling
1067548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  while test $# -gt 0; do
1068548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    opt="$1"
1069548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    shift
1070548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    case $opt in
1071548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      --debug|-x)	opt_debug='set -x'
1072548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			func_echo "enabling shell trace mode"
1073548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			$opt_debug
1074548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			;;
1075548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      --dry-run|--dryrun|-n)
1076548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			opt_dry_run=:
1077548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			;;
1078548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      --config)
1079548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			opt_config=:
1080548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_config
1081548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			;;
1082548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      --dlopen|-dlopen)
1083548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			optarg="$1"
1084548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			opt_dlopen="${opt_dlopen+$opt_dlopen
1085548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}$optarg"
1086548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			shift
1087548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			;;
1088548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      --preserve-dup-deps)
1089548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			opt_preserve_dup_deps=:
1090548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			;;
1091548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      --features)
1092548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			opt_features=:
1093548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_features
1094548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			;;
1095548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      --finish)
1096548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			opt_finish=:
1097548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenset dummy --mode finish ${1+"$@"}; shift
1098548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			;;
1099548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      --help)
1100548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			opt_help=:
1101548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			;;
1102548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      --help-all)
1103548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			opt_help_all=:
1104548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenopt_help=': help-all'
1105548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			;;
1106548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      --mode)
1107548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			test $# = 0 && func_missing_arg $opt && break
1108548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			optarg="$1"
1109548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			opt_mode="$optarg"
1110548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissencase $optarg in
1111548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  # Valid mode arguments:
1112548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  clean|compile|execute|finish|install|link|relink|uninstall) ;;
1113548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1114548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  # Catch anything else as an error
1115548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  *) func_error "invalid argument for $opt"
1116548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen     exit_cmd=exit
1117548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen     break
1118548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen     ;;
1119548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenesac
1120548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			shift
1121548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			;;
1122548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      --no-silent|--no-quiet)
1123548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			opt_silent=false
1124548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_append preserve_args " $opt"
1125548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			;;
1126548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      --no-verbose)
1127548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			opt_verbose=false
1128548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_append preserve_args " $opt"
1129548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			;;
1130548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      --silent|--quiet)
1131548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			opt_silent=:
1132548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_append preserve_args " $opt"
1133548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        opt_verbose=false
1134548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			;;
1135548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      --verbose|-v)
1136548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			opt_verbose=:
1137548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_append preserve_args " $opt"
1138548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenopt_silent=false
1139548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			;;
1140548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      --tag)
1141548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			test $# = 0 && func_missing_arg $opt && break
1142548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			optarg="$1"
1143548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			opt_tag="$optarg"
1144548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_append preserve_args " $opt $optarg"
1145548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_enable_tag "$optarg"
1146548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			shift
1147548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			;;
1148548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1149548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      -\?|-h)		func_usage				;;
1150548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      --help)		func_help				;;
1151548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      --version)	func_version				;;
1152548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1153548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Separate optargs to long options:
1154548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      --*=*)
1155548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			func_split_long_opt "$opt"
1156548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"}
1157548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			shift
1158548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			;;
1159548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1160548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Separate non-argument short options:
1161548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      -\?*|-h*|-n*|-v*)
1162548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			func_split_short_opt "$opt"
1163548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"}
1164548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			shift
1165548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			;;
1166548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1167548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      --)		break					;;
1168548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      -*)		func_fatal_help "unrecognized option \`$opt'" ;;
1169548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      *)		set dummy "$opt" ${1+"$@"};	shift; break  ;;
1170548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    esac
1171548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  done
1172548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1173548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  # Validate options:
1174548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1175548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  # save first non-option argument
1176548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  if test "$#" -gt 0; then
1177548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    nonopt="$opt"
1178548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    shift
1179548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  fi
1180548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1181548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  # preserve --debug
1182548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  test "$opt_debug" = : || func_append preserve_args " --debug"
1183548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1184548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  case $host in
1185548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    *cygwin* | *mingw* | *pw32* | *cegcc*)
1186548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # don't eliminate duplications in $postdeps and $predeps
1187548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      opt_duplicate_compiler_generated_deps=:
1188548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      ;;
1189548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    *)
1190548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps
1191548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      ;;
1192548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  esac
1193548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1194548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  $opt_help || {
1195548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # Sanity checks first:
1196548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_check_version_match
1197548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1198548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
1199548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_fatal_configuration "not configured to build any kind of library"
1200548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    fi
1201548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1202548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # Darwin sucks
1203548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    eval std_shrext=\"$shrext_cmds\"
1204548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1205548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # Only execute mode is allowed to have -dlopen flags.
1206548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    if test -n "$opt_dlopen" && test "$opt_mode" != execute; then
1207548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_error "unrecognized option \`-dlopen'"
1208548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      $ECHO "$help" 1>&2
1209548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      exit $EXIT_FAILURE
1210548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    fi
1211548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1212548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # Change the help message to a mode-specific one.
1213548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    generic_help="$help"
1214548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    help="Try \`$progname --help --mode=$opt_mode' for more information."
1215548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  }
1216548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1217548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1218548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  # Bail if the options were screwed
1219548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  $exit_cmd $EXIT_FAILURE
1220548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
1221548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1222548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1223548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1224548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1225548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen## ----------- ##
1226548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen##    Main.    ##
1227548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen## ----------- ##
1228548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1229548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_lalib_p file
1230548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# True iff FILE is a libtool `.la' library or `.lo' object file.
1231548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# This function is only a basic sanity check; it will hardly flush out
1232548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# determined imposters.
1233548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_lalib_p ()
1234548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
1235548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    test -f "$1" &&
1236548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      $SED -e 4q "$1" 2>/dev/null \
1237548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
1238548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
1239548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1240548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_lalib_unsafe_p file
1241548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# True iff FILE is a libtool `.la' library or `.lo' object file.
1242548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# This function implements the same check as func_lalib_p without
1243548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# resorting to external programs.  To this end, it redirects stdin and
1244548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# closes it afterwards, without saving the original file descriptor.
1245548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# As a safety measure, use it only where a negative result would be
1246548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# fatal anyway.  Works if `file' does not exist.
1247548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_lalib_unsafe_p ()
1248548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
1249548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    lalib_p=no
1250548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
1251548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	for lalib_p_l in 1 2 3 4
1252548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	do
1253548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    read lalib_p_line
1254548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    case "$lalib_p_line" in
1255548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		\#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
1256548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    esac
1257548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	done
1258548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	exec 0<&5 5<&-
1259548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    fi
1260548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    test "$lalib_p" = yes
1261548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
1262548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1263548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_ltwrapper_script_p file
1264548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# True iff FILE is a libtool wrapper script
1265548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# This function is only a basic sanity check; it will hardly flush out
1266548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# determined imposters.
1267548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_ltwrapper_script_p ()
1268548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
1269548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_lalib_p "$1"
1270548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
1271548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1272548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_ltwrapper_executable_p file
1273548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# True iff FILE is a libtool wrapper executable
1274548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# This function is only a basic sanity check; it will hardly flush out
1275548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# determined imposters.
1276548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_ltwrapper_executable_p ()
1277548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
1278548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_ltwrapper_exec_suffix=
1279548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    case $1 in
1280548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    *.exe) ;;
1281548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    *) func_ltwrapper_exec_suffix=.exe ;;
1282548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    esac
1283548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
1284548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
1285548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1286548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_ltwrapper_scriptname file
1287548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Assumes file is an ltwrapper_executable
1288548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# uses $file to determine the appropriate filename for a
1289548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# temporary ltwrapper_script.
1290548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_ltwrapper_scriptname ()
1291548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
1292548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_dirname_and_basename "$1" "" "."
1293548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_stripname '' '.exe' "$func_basename_result"
1294548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
1295548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
1296548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1297548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_ltwrapper_p file
1298548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# True iff FILE is a libtool wrapper script or wrapper executable
1299548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# This function is only a basic sanity check; it will hardly flush out
1300548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# determined imposters.
1301548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_ltwrapper_p ()
1302548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
1303548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
1304548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
1305548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1306548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1307548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_execute_cmds commands fail_cmd
1308548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Execute tilde-delimited COMMANDS.
1309548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# If FAIL_CMD is given, eval that upon failure.
1310548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# FAIL_CMD may read-access the current command in variable CMD!
1311548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_execute_cmds ()
1312548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
1313548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    $opt_debug
1314548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    save_ifs=$IFS; IFS='~'
1315548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    for cmd in $1; do
1316548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      IFS=$save_ifs
1317548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      eval cmd=\"$cmd\"
1318548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_show_eval "$cmd" "${2-:}"
1319548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    done
1320548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    IFS=$save_ifs
1321548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
1322548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1323548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1324548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_source file
1325548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Source FILE, adding directory component if necessary.
1326548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Note that it is not necessary on cygwin/mingw to append a dot to
1327548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
1328548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# behavior happens only for exec(3), not for open(2)!  Also, sourcing
1329548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# `FILE.' does not work on cygwin managed mounts.
1330548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_source ()
1331548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
1332548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    $opt_debug
1333548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    case $1 in
1334548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    */* | *\\*)	. "$1" ;;
1335548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    *)		. "./$1" ;;
1336548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    esac
1337548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
1338548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1339548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1340548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_resolve_sysroot PATH
1341548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Replace a leading = in PATH with a sysroot.  Store the result into
1342548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_resolve_sysroot_result
1343548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_resolve_sysroot ()
1344548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
1345548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  func_resolve_sysroot_result=$1
1346548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  case $func_resolve_sysroot_result in
1347548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  =*)
1348548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_stripname '=' '' "$func_resolve_sysroot_result"
1349548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_resolve_sysroot_result=$lt_sysroot$func_stripname_result
1350548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    ;;
1351548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  esac
1352548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
1353548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1354548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_replace_sysroot PATH
1355548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# If PATH begins with the sysroot, replace it with = and
1356548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# store the result into func_replace_sysroot_result.
1357548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_replace_sysroot ()
1358548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
1359548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  case "$lt_sysroot:$1" in
1360548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  ?*:"$lt_sysroot"*)
1361548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_stripname "$lt_sysroot" '' "$1"
1362548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_replace_sysroot_result="=$func_stripname_result"
1363548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    ;;
1364548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  *)
1365548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # Including no sysroot.
1366548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_replace_sysroot_result=$1
1367548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    ;;
1368548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  esac
1369548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
1370548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1371548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_infer_tag arg
1372548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Infer tagged configuration to use if any are available and
1373548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# if one wasn't chosen via the "--tag" command line option.
1374548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Only attempt this if the compiler in the base compile
1375548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# command doesn't match the default compiler.
1376548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# arg is usually of the form 'gcc ...'
1377548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_infer_tag ()
1378548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
1379548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    $opt_debug
1380548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    if test -n "$available_tags" && test -z "$tagname"; then
1381548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      CC_quoted=
1382548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      for arg in $CC; do
1383548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_append_quoted CC_quoted "$arg"
1384548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      done
1385548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      CC_expanded=`func_echo_all $CC`
1386548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      CC_quoted_expanded=`func_echo_all $CC_quoted`
1387548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      case $@ in
1388548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Blanks in the command may have been stripped by the calling shell,
1389548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # but not from the CC environment variable when configure was run.
1390548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
1391548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;;
1392548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Blanks at the start of $base_compile will cause this to fail
1393548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # if we don't check for them as well.
1394548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      *)
1395548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	for z in $available_tags; do
1396548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
1397548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # Evaluate the configuration.
1398548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
1399548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    CC_quoted=
1400548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    for arg in $CC; do
1401548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # Double-quote args containing other shell metacharacters.
1402548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      func_append_quoted CC_quoted "$arg"
1403548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    done
1404548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    CC_expanded=`func_echo_all $CC`
1405548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    CC_quoted_expanded=`func_echo_all $CC_quoted`
1406548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    case "$@ " in
1407548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
1408548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*)
1409548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # The compiler in the base compile command matches
1410548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # the one in the tagged configuration.
1411548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # Assume this is the tagged configuration we want.
1412548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      tagname=$z
1413548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      break
1414548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      ;;
1415548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    esac
1416548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
1417548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	done
1418548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# If $tagname still isn't set, then no tagged configuration
1419548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# was found and let the user know that the "--tag" command
1420548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# line option must be used.
1421548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test -z "$tagname"; then
1422548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_echo "unable to infer tagged configuration"
1423548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_fatal_error "specify a tag with \`--tag'"
1424548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#	else
1425548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#	  func_verbose "using $tagname tagged configuration"
1426548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
1427548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
1428548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      esac
1429548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    fi
1430548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
1431548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1432548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1433548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1434548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_write_libtool_object output_name pic_name nonpic_name
1435548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Create a libtool object file (analogous to a ".la" file),
1436548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# but don't create it if we're doing a dry run.
1437548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_write_libtool_object ()
1438548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
1439548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    write_libobj=${1}
1440548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    if test "$build_libtool_libs" = yes; then
1441548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      write_lobj=\'${2}\'
1442548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    else
1443548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      write_lobj=none
1444548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    fi
1445548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1446548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    if test "$build_old_libs" = yes; then
1447548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      write_oldobj=\'${3}\'
1448548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    else
1449548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      write_oldobj=none
1450548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    fi
1451548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1452548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    $opt_dry_run || {
1453548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      cat >${write_libobj}T <<EOF
1454548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# $write_libobj - a libtool object file
1455548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
1456548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#
1457548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Please DO NOT delete this file!
1458548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# It is necessary for linking the library.
1459548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1460548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Name of the PIC object.
1461548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenpic_object=$write_lobj
1462548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1463548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Name of the non-PIC object
1464548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissennon_pic_object=$write_oldobj
1465548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1466548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenEOF
1467548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      $MV "${write_libobj}T" "${write_libobj}"
1468548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    }
1469548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
1470548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1471548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1472548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen##################################################
1473548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS #
1474548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen##################################################
1475548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1476548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_convert_core_file_wine_to_w32 ARG
1477548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Helper function used by file name conversion functions when $build is *nix,
1478548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# and $host is mingw, cygwin, or some other w32 environment. Relies on a
1479548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# correctly configured wine environment available, with the winepath program
1480548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# in $build's $PATH.
1481548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#
1482548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# ARG is the $build file name to be converted to w32 format.
1483548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Result is available in $func_convert_core_file_wine_to_w32_result, and will
1484548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# be empty on error (or when ARG is empty)
1485548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_convert_core_file_wine_to_w32 ()
1486548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
1487548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  $opt_debug
1488548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  func_convert_core_file_wine_to_w32_result="$1"
1489548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  if test -n "$1"; then
1490548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # Unfortunately, winepath does not exit with a non-zero error code, so we
1491548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # are forced to check the contents of stdout. On the other hand, if the
1492548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # command is not found, the shell will set an exit code of 127 and print
1493548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # *an error message* to stdout. So we must check for both error code of
1494548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # zero AND non-empty stdout, which explains the odd construction:
1495548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null`
1496548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then
1497548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" |
1498548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        $SED -e "$lt_sed_naive_backslashify"`
1499548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    else
1500548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_convert_core_file_wine_to_w32_result=
1501548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    fi
1502548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  fi
1503548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
1504548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# end: func_convert_core_file_wine_to_w32
1505548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1506548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1507548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_convert_core_path_wine_to_w32 ARG
1508548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Helper function used by path conversion functions when $build is *nix, and
1509548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly
1510548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# configured wine environment available, with the winepath program in $build's
1511548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# $PATH. Assumes ARG has no leading or trailing path separator characters.
1512548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#
1513548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# ARG is path to be converted from $build format to win32.
1514548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Result is available in $func_convert_core_path_wine_to_w32_result.
1515548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Unconvertible file (directory) names in ARG are skipped; if no directory names
1516548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# are convertible, then the result may be empty.
1517548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_convert_core_path_wine_to_w32 ()
1518548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
1519548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  $opt_debug
1520548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  # unfortunately, winepath doesn't convert paths, only file names
1521548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  func_convert_core_path_wine_to_w32_result=""
1522548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  if test -n "$1"; then
1523548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    oldIFS=$IFS
1524548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    IFS=:
1525548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    for func_convert_core_path_wine_to_w32_f in $1; do
1526548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      IFS=$oldIFS
1527548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f"
1528548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test -n "$func_convert_core_file_wine_to_w32_result" ; then
1529548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        if test -z "$func_convert_core_path_wine_to_w32_result"; then
1530548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen          func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result"
1531548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        else
1532548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen          func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result"
1533548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        fi
1534548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
1535548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    done
1536548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    IFS=$oldIFS
1537548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  fi
1538548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
1539548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# end: func_convert_core_path_wine_to_w32
1540548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1541548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1542548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_cygpath ARGS...
1543548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when
1544548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2)
1545548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or
1546548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# (2), returns the Cygwin file name or path in func_cygpath_result (input
1547548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# file name or path is assumed to be in w32 format, as previously converted
1548548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# from $build's *nix or MSYS format). In case (3), returns the w32 file name
1549548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# or path in func_cygpath_result (input file name or path is assumed to be in
1550548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Cygwin format). Returns an empty string on error.
1551548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#
1552548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# ARGS are passed to cygpath, with the last one being the file name or path to
1553548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# be converted.
1554548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#
1555548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH
1556548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# environment variable; do not put it in $PATH.
1557548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_cygpath ()
1558548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
1559548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  $opt_debug
1560548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then
1561548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null`
1562548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    if test "$?" -ne 0; then
1563548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # on failure, ensure result is empty
1564548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_cygpath_result=
1565548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    fi
1566548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  else
1567548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_cygpath_result=
1568548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'"
1569548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  fi
1570548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
1571548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#end: func_cygpath
1572548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1573548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1574548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_convert_core_msys_to_w32 ARG
1575548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Convert file name or path ARG from MSYS format to w32 format.  Return
1576548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# result in func_convert_core_msys_to_w32_result.
1577548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_convert_core_msys_to_w32 ()
1578548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
1579548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  $opt_debug
1580548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  # awkward: cmd appends spaces to result
1581548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null |
1582548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"`
1583548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
1584548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#end: func_convert_core_msys_to_w32
1585548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1586548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1587548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_convert_file_check ARG1 ARG2
1588548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Verify that ARG1 (a file name in $build format) was converted to $host
1589548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# format in ARG2. Otherwise, emit an error message, but continue (resetting
1590548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_to_host_file_result to ARG1).
1591548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_convert_file_check ()
1592548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
1593548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  $opt_debug
1594548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  if test -z "$2" && test -n "$1" ; then
1595548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_error "Could not determine host file name corresponding to"
1596548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_error "  \`$1'"
1597548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_error "Continuing, but uninstalled executables may not work."
1598548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # Fallback:
1599548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_to_host_file_result="$1"
1600548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  fi
1601548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
1602548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# end func_convert_file_check
1603548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1604548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1605548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH
1606548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Verify that FROM_PATH (a path in $build format) was converted to $host
1607548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# format in TO_PATH. Otherwise, emit an error message, but continue, resetting
1608548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_to_host_file_result to a simplistic fallback value (see below).
1609548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_convert_path_check ()
1610548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
1611548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  $opt_debug
1612548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  if test -z "$4" && test -n "$3"; then
1613548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_error "Could not determine the host path corresponding to"
1614548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_error "  \`$3'"
1615548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_error "Continuing, but uninstalled executables may not work."
1616548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # Fallback.  This is a deliberately simplistic "conversion" and
1617548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # should not be "improved".  See libtool.info.
1618548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    if test "x$1" != "x$2"; then
1619548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      lt_replace_pathsep_chars="s|$1|$2|g"
1620548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_to_host_path_result=`echo "$3" |
1621548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        $SED -e "$lt_replace_pathsep_chars"`
1622548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    else
1623548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_to_host_path_result="$3"
1624548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    fi
1625548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  fi
1626548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
1627548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# end func_convert_path_check
1628548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1629548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1630548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG
1631548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT
1632548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# and appending REPL if ORIG matches BACKPAT.
1633548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_convert_path_front_back_pathsep ()
1634548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
1635548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  $opt_debug
1636548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  case $4 in
1637548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  $1 ) func_to_host_path_result="$3$func_to_host_path_result"
1638548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    ;;
1639548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  esac
1640548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  case $4 in
1641548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  $2 ) func_append func_to_host_path_result "$3"
1642548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    ;;
1643548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  esac
1644548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
1645548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# end func_convert_path_front_back_pathsep
1646548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1647548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1648548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen##################################################
1649548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# $build to $host FILE NAME CONVERSION FUNCTIONS #
1650548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen##################################################
1651548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# invoked via `$to_host_file_cmd ARG'
1652548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#
1653548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# In each case, ARG is the path to be converted from $build to $host format.
1654548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Result will be available in $func_to_host_file_result.
1655548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1656548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1657548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_to_host_file ARG
1658548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Converts the file name ARG from $build format to $host format. Return result
1659548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# in func_to_host_file_result.
1660548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_to_host_file ()
1661548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
1662548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  $opt_debug
1663548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  $to_host_file_cmd "$1"
1664548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
1665548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# end func_to_host_file
1666548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1667548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1668548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_to_tool_file ARG LAZY
1669548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# converts the file name ARG from $build format to toolchain format. Return
1670548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# result in func_to_tool_file_result.  If the conversion in use is listed
1671548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# in (the comma separated) LAZY, no conversion takes place.
1672548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_to_tool_file ()
1673548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
1674548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  $opt_debug
1675548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  case ,$2, in
1676548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    *,"$to_tool_file_cmd",*)
1677548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_to_tool_file_result=$1
1678548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      ;;
1679548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    *)
1680548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      $to_tool_file_cmd "$1"
1681548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_to_tool_file_result=$func_to_host_file_result
1682548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      ;;
1683548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  esac
1684548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
1685548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# end func_to_tool_file
1686548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1687548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1688548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_convert_file_noop ARG
1689548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Copy ARG to func_to_host_file_result.
1690548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_convert_file_noop ()
1691548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
1692548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  func_to_host_file_result="$1"
1693548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
1694548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# end func_convert_file_noop
1695548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1696548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1697548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_convert_file_msys_to_w32 ARG
1698548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic
1699548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# conversion to w32 is not available inside the cwrapper.  Returns result in
1700548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_to_host_file_result.
1701548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_convert_file_msys_to_w32 ()
1702548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
1703548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  $opt_debug
1704548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  func_to_host_file_result="$1"
1705548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  if test -n "$1"; then
1706548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_convert_core_msys_to_w32 "$1"
1707548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_to_host_file_result="$func_convert_core_msys_to_w32_result"
1708548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  fi
1709548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  func_convert_file_check "$1" "$func_to_host_file_result"
1710548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
1711548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# end func_convert_file_msys_to_w32
1712548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1713548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1714548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_convert_file_cygwin_to_w32 ARG
1715548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Convert file name ARG from Cygwin to w32 format.  Returns result in
1716548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_to_host_file_result.
1717548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_convert_file_cygwin_to_w32 ()
1718548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
1719548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  $opt_debug
1720548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  func_to_host_file_result="$1"
1721548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  if test -n "$1"; then
1722548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # because $build is cygwin, we call "the" cygpath in $PATH; no need to use
1723548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # LT_CYGPATH in this case.
1724548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_to_host_file_result=`cygpath -m "$1"`
1725548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  fi
1726548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  func_convert_file_check "$1" "$func_to_host_file_result"
1727548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
1728548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# end func_convert_file_cygwin_to_w32
1729548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1730548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1731548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_convert_file_nix_to_w32 ARG
1732548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Convert file name ARG from *nix to w32 format.  Requires a wine environment
1733548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# and a working winepath. Returns result in func_to_host_file_result.
1734548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_convert_file_nix_to_w32 ()
1735548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
1736548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  $opt_debug
1737548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  func_to_host_file_result="$1"
1738548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  if test -n "$1"; then
1739548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_convert_core_file_wine_to_w32 "$1"
1740548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_to_host_file_result="$func_convert_core_file_wine_to_w32_result"
1741548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  fi
1742548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  func_convert_file_check "$1" "$func_to_host_file_result"
1743548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
1744548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# end func_convert_file_nix_to_w32
1745548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1746548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1747548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_convert_file_msys_to_cygwin ARG
1748548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Convert file name ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
1749548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Returns result in func_to_host_file_result.
1750548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_convert_file_msys_to_cygwin ()
1751548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
1752548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  $opt_debug
1753548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  func_to_host_file_result="$1"
1754548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  if test -n "$1"; then
1755548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_convert_core_msys_to_w32 "$1"
1756548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_cygpath -u "$func_convert_core_msys_to_w32_result"
1757548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_to_host_file_result="$func_cygpath_result"
1758548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  fi
1759548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  func_convert_file_check "$1" "$func_to_host_file_result"
1760548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
1761548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# end func_convert_file_msys_to_cygwin
1762548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1763548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1764548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_convert_file_nix_to_cygwin ARG
1765548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Convert file name ARG from *nix to Cygwin format.  Requires Cygwin installed
1766548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# in a wine environment, working winepath, and LT_CYGPATH set.  Returns result
1767548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# in func_to_host_file_result.
1768548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_convert_file_nix_to_cygwin ()
1769548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
1770548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  $opt_debug
1771548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  func_to_host_file_result="$1"
1772548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  if test -n "$1"; then
1773548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # convert from *nix to w32, then use cygpath to convert from w32 to cygwin.
1774548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_convert_core_file_wine_to_w32 "$1"
1775548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_cygpath -u "$func_convert_core_file_wine_to_w32_result"
1776548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_to_host_file_result="$func_cygpath_result"
1777548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  fi
1778548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  func_convert_file_check "$1" "$func_to_host_file_result"
1779548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
1780548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# end func_convert_file_nix_to_cygwin
1781548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1782548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1783548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#############################################
1784548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# $build to $host PATH CONVERSION FUNCTIONS #
1785548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#############################################
1786548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# invoked via `$to_host_path_cmd ARG'
1787548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#
1788548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# In each case, ARG is the path to be converted from $build to $host format.
1789548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# The result will be available in $func_to_host_path_result.
1790548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#
1791548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Path separators are also converted from $build format to $host format.  If
1792548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# ARG begins or ends with a path separator character, it is preserved (but
1793548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# converted to $host format) on output.
1794548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#
1795548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# All path conversion functions are named using the following convention:
1796548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#   file name conversion function    : func_convert_file_X_to_Y ()
1797548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#   path conversion function         : func_convert_path_X_to_Y ()
1798548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# where, for any given $build/$host combination the 'X_to_Y' value is the
1799548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# same.  If conversion functions are added for new $build/$host combinations,
1800548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# the two new functions must follow this pattern, or func_init_to_host_path_cmd
1801548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# will break.
1802548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1803548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1804548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_init_to_host_path_cmd
1805548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Ensures that function "pointer" variable $to_host_path_cmd is set to the
1806548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# appropriate value, based on the value of $to_host_file_cmd.
1807548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissento_host_path_cmd=
1808548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_init_to_host_path_cmd ()
1809548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
1810548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  $opt_debug
1811548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  if test -z "$to_host_path_cmd"; then
1812548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_stripname 'func_convert_file_' '' "$to_host_file_cmd"
1813548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    to_host_path_cmd="func_convert_path_${func_stripname_result}"
1814548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  fi
1815548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
1816548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1817548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1818548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_to_host_path ARG
1819548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Converts the path ARG from $build format to $host format. Return result
1820548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# in func_to_host_path_result.
1821548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_to_host_path ()
1822548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
1823548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  $opt_debug
1824548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  func_init_to_host_path_cmd
1825548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  $to_host_path_cmd "$1"
1826548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
1827548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# end func_to_host_path
1828548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1829548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1830548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_convert_path_noop ARG
1831548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Copy ARG to func_to_host_path_result.
1832548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_convert_path_noop ()
1833548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
1834548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  func_to_host_path_result="$1"
1835548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
1836548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# end func_convert_path_noop
1837548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1838548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1839548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_convert_path_msys_to_w32 ARG
1840548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic
1841548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# conversion to w32 is not available inside the cwrapper.  Returns result in
1842548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_to_host_path_result.
1843548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_convert_path_msys_to_w32 ()
1844548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
1845548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  $opt_debug
1846548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  func_to_host_path_result="$1"
1847548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  if test -n "$1"; then
1848548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # Remove leading and trailing path separator characters from ARG.  MSYS
1849548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # behavior is inconsistent here; cygpath turns them into '.;' and ';.';
1850548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # and winepath ignores them completely.
1851548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_stripname : : "$1"
1852548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_to_host_path_tmp1=$func_stripname_result
1853548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
1854548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_to_host_path_result="$func_convert_core_msys_to_w32_result"
1855548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_convert_path_check : ";" \
1856548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      "$func_to_host_path_tmp1" "$func_to_host_path_result"
1857548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
1858548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  fi
1859548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
1860548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# end func_convert_path_msys_to_w32
1861548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1862548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1863548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_convert_path_cygwin_to_w32 ARG
1864548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Convert path ARG from Cygwin to w32 format.  Returns result in
1865548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_to_host_file_result.
1866548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_convert_path_cygwin_to_w32 ()
1867548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
1868548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  $opt_debug
1869548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  func_to_host_path_result="$1"
1870548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  if test -n "$1"; then
1871548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # See func_convert_path_msys_to_w32:
1872548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_stripname : : "$1"
1873548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_to_host_path_tmp1=$func_stripname_result
1874548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"`
1875548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_convert_path_check : ";" \
1876548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      "$func_to_host_path_tmp1" "$func_to_host_path_result"
1877548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
1878548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  fi
1879548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
1880548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# end func_convert_path_cygwin_to_w32
1881548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1882548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1883548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_convert_path_nix_to_w32 ARG
1884548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Convert path ARG from *nix to w32 format.  Requires a wine environment and
1885548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# a working winepath.  Returns result in func_to_host_file_result.
1886548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_convert_path_nix_to_w32 ()
1887548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
1888548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  $opt_debug
1889548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  func_to_host_path_result="$1"
1890548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  if test -n "$1"; then
1891548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # See func_convert_path_msys_to_w32:
1892548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_stripname : : "$1"
1893548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_to_host_path_tmp1=$func_stripname_result
1894548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
1895548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_to_host_path_result="$func_convert_core_path_wine_to_w32_result"
1896548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_convert_path_check : ";" \
1897548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      "$func_to_host_path_tmp1" "$func_to_host_path_result"
1898548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
1899548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  fi
1900548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
1901548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# end func_convert_path_nix_to_w32
1902548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1903548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1904548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_convert_path_msys_to_cygwin ARG
1905548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Convert path ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
1906548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Returns result in func_to_host_file_result.
1907548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_convert_path_msys_to_cygwin ()
1908548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
1909548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  $opt_debug
1910548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  func_to_host_path_result="$1"
1911548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  if test -n "$1"; then
1912548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # See func_convert_path_msys_to_w32:
1913548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_stripname : : "$1"
1914548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_to_host_path_tmp1=$func_stripname_result
1915548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
1916548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_cygpath -u -p "$func_convert_core_msys_to_w32_result"
1917548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_to_host_path_result="$func_cygpath_result"
1918548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_convert_path_check : : \
1919548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      "$func_to_host_path_tmp1" "$func_to_host_path_result"
1920548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
1921548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  fi
1922548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
1923548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# end func_convert_path_msys_to_cygwin
1924548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1925548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1926548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_convert_path_nix_to_cygwin ARG
1927548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Convert path ARG from *nix to Cygwin format.  Requires Cygwin installed in a
1928548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# a wine environment, working winepath, and LT_CYGPATH set.  Returns result in
1929548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_to_host_file_result.
1930548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_convert_path_nix_to_cygwin ()
1931548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
1932548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  $opt_debug
1933548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  func_to_host_path_result="$1"
1934548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  if test -n "$1"; then
1935548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # Remove leading and trailing path separator characters from
1936548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # ARG. msys behavior is inconsistent here, cygpath turns them
1937548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # into '.;' and ';.', and winepath ignores them completely.
1938548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_stripname : : "$1"
1939548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_to_host_path_tmp1=$func_stripname_result
1940548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
1941548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result"
1942548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_to_host_path_result="$func_cygpath_result"
1943548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_convert_path_check : : \
1944548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      "$func_to_host_path_tmp1" "$func_to_host_path_result"
1945548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
1946548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  fi
1947548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
1948548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# end func_convert_path_nix_to_cygwin
1949548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1950548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1951548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_mode_compile arg...
1952548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_mode_compile ()
1953548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
1954548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    $opt_debug
1955548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # Get the compilation command and the source file.
1956548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    base_compile=
1957548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
1958548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    suppress_opt=yes
1959548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    suppress_output=
1960548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    arg_mode=normal
1961548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    libobj=
1962548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    later=
1963548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    pie_flag=
1964548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1965548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    for arg
1966548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    do
1967548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      case $arg_mode in
1968548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      arg  )
1969548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# do not "continue".  Instead, add this to base_compile
1970548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	lastarg="$arg"
1971548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	arg_mode=normal
1972548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
1973548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1974548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      target )
1975548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	libobj="$arg"
1976548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	arg_mode=normal
1977548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	continue
1978548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
1979548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1980548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      normal )
1981548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Accept any command-line options.
1982548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	case $arg in
1983548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	-o)
1984548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  test -n "$libobj" && \
1985548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_fatal_error "you cannot specify \`-o' more than once"
1986548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  arg_mode=target
1987548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  continue
1988548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
1989548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1990548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	-pie | -fpie | -fPIE)
1991548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen          func_append pie_flag " $arg"
1992548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  continue
1993548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
1994548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
1995548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	-shared | -static | -prefer-pic | -prefer-non-pic)
1996548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_append later " $arg"
1997548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  continue
1998548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
1999548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2000548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	-no-suppress)
2001548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  suppress_opt=no
2002548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  continue
2003548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
2004548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2005548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	-Xcompiler)
2006548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  arg_mode=arg  #  the next one goes into the "base_compile" arg list
2007548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  continue      #  The current "srcfile" will either be retained or
2008548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;            #  replaced later.  I would guess that would be a bug.
2009548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2010548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	-Wc,*)
2011548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_stripname '-Wc,' '' "$arg"
2012548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  args=$func_stripname_result
2013548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  lastarg=
2014548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  save_ifs="$IFS"; IFS=','
2015548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  for arg in $args; do
2016548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    IFS="$save_ifs"
2017548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_append_quoted lastarg "$arg"
2018548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  done
2019548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  IFS="$save_ifs"
2020548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_stripname ' ' '' "$lastarg"
2021548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  lastarg=$func_stripname_result
2022548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2023548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # Add the arguments to base_compile.
2024548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_append base_compile " $lastarg"
2025548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  continue
2026548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
2027548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2028548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	*)
2029548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # Accept the current argument as the source file.
2030548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # The previous "srcfile" becomes the current argument.
2031548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  #
2032548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  lastarg="$srcfile"
2033548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  srcfile="$arg"
2034548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
2035548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	esac  #  case $arg
2036548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
2037548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      esac    #  case $arg_mode
2038548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2039548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Aesthetically quote the previous argument.
2040548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_append_quoted base_compile "$lastarg"
2041548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    done # for arg
2042548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2043548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    case $arg_mode in
2044548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    arg)
2045548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_fatal_error "you must specify an argument for -Xcompile"
2046548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      ;;
2047548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    target)
2048548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_fatal_error "you must specify a target with \`-o'"
2049548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      ;;
2050548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    *)
2051548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Get the name of the library object.
2052548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      test -z "$libobj" && {
2053548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_basename "$srcfile"
2054548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	libobj="$func_basename_result"
2055548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      }
2056548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      ;;
2057548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    esac
2058548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2059548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # Recognize several different file suffixes.
2060548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # If the user specifies -o file.o, it is replaced with file.lo
2061548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    case $libobj in
2062548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    *.[cCFSifmso] | \
2063548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    *.ada | *.adb | *.ads | *.asm | \
2064548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
2065548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    *.[fF][09]? | *.for | *.java | *.obj | *.sx | *.cu | *.cup)
2066548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_xform "$libobj"
2067548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      libobj=$func_xform_result
2068548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      ;;
2069548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    esac
2070548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2071548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    case $libobj in
2072548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
2073548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    *)
2074548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_fatal_error "cannot determine name of library object from \`$libobj'"
2075548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      ;;
2076548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    esac
2077548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2078548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_infer_tag $base_compile
2079548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2080548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    for arg in $later; do
2081548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      case $arg in
2082548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      -shared)
2083548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	test "$build_libtool_libs" != yes && \
2084548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_fatal_configuration "can not build a shared library"
2085548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	build_old_libs=no
2086548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	continue
2087548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
2088548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2089548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      -static)
2090548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	build_libtool_libs=no
2091548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	build_old_libs=yes
2092548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	continue
2093548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
2094548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2095548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      -prefer-pic)
2096548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	pic_mode=yes
2097548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	continue
2098548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
2099548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2100548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      -prefer-non-pic)
2101548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	pic_mode=no
2102548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	continue
2103548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
2104548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      esac
2105548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    done
2106548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2107548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_quote_for_eval "$libobj"
2108548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    test "X$libobj" != "X$func_quote_for_eval_result" \
2109548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"'	 &()|`$[]' \
2110548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      && func_warning "libobj name \`$libobj' may not contain shell special characters."
2111548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_dirname_and_basename "$obj" "/" ""
2112548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    objname="$func_basename_result"
2113548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    xdir="$func_dirname_result"
2114548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    lobj=${xdir}$objdir/$objname
2115548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2116548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    test -z "$base_compile" && \
2117548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_fatal_help "you must specify a compilation command"
2118548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2119548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # Delete any leftover library objects.
2120548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    if test "$build_old_libs" = yes; then
2121548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      removelist="$obj $lobj $libobj ${libobj}T"
2122548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    else
2123548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      removelist="$lobj $libobj ${libobj}T"
2124548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    fi
2125548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2126548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # On Cygwin there's no "real" PIC flag so we must build both object types
2127548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    case $host_os in
2128548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    cygwin* | mingw* | pw32* | os2* | cegcc*)
2129548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      pic_mode=default
2130548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      ;;
2131548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    esac
2132548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
2133548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # non-PIC code in shared libraries is not supported
2134548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      pic_mode=default
2135548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    fi
2136548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2137548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # Calculate the filename of the output object if compiler does
2138548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # not support -o with -c
2139548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    if test "$compiler_c_o" = no; then
2140548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext}
2141548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      lockfile="$output_obj.lock"
2142548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    else
2143548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      output_obj=
2144548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      need_locks=no
2145548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      lockfile=
2146548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    fi
2147548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2148548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # Lock this critical section if it is needed
2149548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # We use this script file to make the link, it avoids creating a new file
2150548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    if test "$need_locks" = yes; then
2151548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
2152548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_echo "Waiting for $lockfile to be removed"
2153548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	sleep 2
2154548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      done
2155548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    elif test "$need_locks" = warn; then
2156548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test -f "$lockfile"; then
2157548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	$ECHO "\
2158548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen*** ERROR, $lockfile exists and contains:
2159548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen`cat $lockfile 2>/dev/null`
2160548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2161548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenThis indicates that another process is trying to use the same
2162548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissentemporary object file, and libtool could not work around it because
2163548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenyour compiler does not support \`-c' and \`-o' together.  If you
2164548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenrepeat this compilation, it may succeed, by chance, but you had better
2165548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenavoid parallel builds (make -j) in this platform, or get a better
2166548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissencompiler."
2167548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2168548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	$opt_dry_run || $RM $removelist
2169548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	exit $EXIT_FAILURE
2170548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
2171548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_append removelist " $output_obj"
2172548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      $ECHO "$srcfile" > "$lockfile"
2173548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    fi
2174548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2175548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    $opt_dry_run || $RM $removelist
2176548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_append removelist " $lockfile"
2177548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
2178548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2179548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_to_tool_file "$srcfile" func_convert_file_msys_to_w32
2180548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    srcfile=$func_to_tool_file_result
2181548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_quote_for_eval "$srcfile"
2182548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    qsrcfile=$func_quote_for_eval_result
2183548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2184548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # Only build a PIC object if we are building libtool libraries.
2185548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    if test "$build_libtool_libs" = yes; then
2186548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Without this assignment, base_compile gets emptied.
2187548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fbsd_hideous_sh_bug=$base_compile
2188548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2189548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test "$pic_mode" != no; then
2190548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	command="$base_compile $qsrcfile $pic_flag"
2191548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      else
2192548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Don't build PIC code
2193548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	command="$base_compile $qsrcfile"
2194548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
2195548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2196548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_mkdir_p "$xdir$objdir"
2197548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2198548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test -z "$output_obj"; then
2199548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Place PIC objects in $objdir
2200548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_append command " -o $lobj"
2201548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
2202548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2203548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_show_eval_locale "$command"	\
2204548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen          'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
2205548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2206548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test "$need_locks" = warn &&
2207548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
2208548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	$ECHO "\
2209548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen*** ERROR, $lockfile contains:
2210548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen`cat $lockfile 2>/dev/null`
2211548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2212548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenbut it should contain:
2213548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen$srcfile
2214548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2215548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenThis indicates that another process is trying to use the same
2216548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissentemporary object file, and libtool could not work around it because
2217548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenyour compiler does not support \`-c' and \`-o' together.  If you
2218548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenrepeat this compilation, it may succeed, by chance, but you had better
2219548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenavoid parallel builds (make -j) in this platform, or get a better
2220548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissencompiler."
2221548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2222548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	$opt_dry_run || $RM $removelist
2223548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	exit $EXIT_FAILURE
2224548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
2225548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2226548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Just move the object if needed, then go on to compile the next one
2227548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
2228548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_show_eval '$MV "$output_obj" "$lobj"' \
2229548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
2230548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
2231548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2232548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Allow error messages only from the first compilation.
2233548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test "$suppress_opt" = yes; then
2234548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	suppress_output=' >/dev/null 2>&1'
2235548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
2236548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    fi
2237548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2238548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # Only build a position-dependent object if we build old libraries.
2239548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    if test "$build_old_libs" = yes; then
2240548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test "$pic_mode" != yes; then
2241548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Don't build PIC code
2242548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	command="$base_compile $qsrcfile$pie_flag"
2243548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      else
2244548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	command="$base_compile $qsrcfile $pic_flag"
2245548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
2246548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test "$compiler_c_o" = yes; then
2247548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_append command " -o $obj"
2248548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
2249548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2250548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Suppress compiler output if we already did a PIC compilation.
2251548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_append command "$suppress_output"
2252548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_show_eval_locale "$command" \
2253548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
2254548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2255548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test "$need_locks" = warn &&
2256548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
2257548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	$ECHO "\
2258548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen*** ERROR, $lockfile contains:
2259548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen`cat $lockfile 2>/dev/null`
2260548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2261548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenbut it should contain:
2262548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen$srcfile
2263548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2264548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenThis indicates that another process is trying to use the same
2265548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissentemporary object file, and libtool could not work around it because
2266548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenyour compiler does not support \`-c' and \`-o' together.  If you
2267548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenrepeat this compilation, it may succeed, by chance, but you had better
2268548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenavoid parallel builds (make -j) in this platform, or get a better
2269548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissencompiler."
2270548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2271548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	$opt_dry_run || $RM $removelist
2272548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	exit $EXIT_FAILURE
2273548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
2274548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2275548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Just move the object if needed
2276548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
2277548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_show_eval '$MV "$output_obj" "$obj"' \
2278548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
2279548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
2280548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    fi
2281548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2282548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    $opt_dry_run || {
2283548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
2284548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2285548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Unlock the critical section if it was locked
2286548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test "$need_locks" != no; then
2287548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	removelist=$lockfile
2288548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        $RM "$lockfile"
2289548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
2290548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    }
2291548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2292548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    exit $EXIT_SUCCESS
2293548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
2294548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2295548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen$opt_help || {
2296548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  test "$opt_mode" = compile && func_mode_compile ${1+"$@"}
2297548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
2298548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2299548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_mode_help ()
2300548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
2301548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # We need to display help for each of the modes.
2302548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    case $opt_mode in
2303548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      "")
2304548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        # Generic help is extracted from the usage comments
2305548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        # at the start of this file.
2306548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        func_help
2307548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        ;;
2308548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2309548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      clean)
2310548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        $ECHO \
2311548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
2312548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2313548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenRemove files from the build directory.
2314548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2315548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenRM is the name of the program to use to delete files associated with each FILE
2316548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
2317548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissento RM.
2318548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2319548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenIf FILE is a libtool library, object or program, all the files associated
2320548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenwith it are deleted. Otherwise, only FILE itself is deleted using RM."
2321548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        ;;
2322548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2323548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      compile)
2324548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      $ECHO \
2325548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
2326548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2327548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenCompile a source file into a libtool library object.
2328548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2329548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenThis mode accepts the following additional options:
2330548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2331548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
2332548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  -no-suppress      do not suppress compiler output for multiple passes
2333548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  -prefer-pic       try to build PIC objects only
2334548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  -prefer-non-pic   try to build non-PIC objects only
2335548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  -shared           do not build a \`.o' file suitable for static linking
2336548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  -static           only build a \`.o' file suitable for static linking
2337548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  -Wc,FLAG          pass FLAG directly to the compiler
2338548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2339548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenCOMPILE-COMMAND is a command to be used in creating a \`standard' object file
2340548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfrom the given SOURCEFILE.
2341548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2342548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenThe output file name is determined by removing the directory component from
2343548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenSOURCEFILE, then substituting the C source code suffix \`.c' with the
2344548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenlibrary object suffix, \`.lo'."
2345548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        ;;
2346548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2347548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      execute)
2348548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        $ECHO \
2349548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
2350548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2351548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenAutomatically set library path, then run a program.
2352548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2353548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenThis mode accepts the following additional options:
2354548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2355548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  -dlopen FILE      add the directory containing FILE to the library path
2356548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2357548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenThis mode sets the library path environment variable according to \`-dlopen'
2358548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenflags.
2359548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2360548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenIf any of the ARGS are libtool executable wrappers, then they are translated
2361548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelisseninto their corresponding uninstalled binary, and any of their required library
2362548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissendirectories are added to the library path.
2363548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2364548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenThen, COMMAND is executed, with ARGS as arguments."
2365548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        ;;
2366548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2367548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      finish)
2368548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        $ECHO \
2369548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
2370548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2371548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenComplete the installation of libtool libraries.
2372548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2373548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenEach LIBDIR is a directory that contains libtool libraries.
2374548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2375548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenThe commands that this mode executes may require superuser privileges.  Use
2376548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenthe \`--dry-run' option if you just want to see what would be executed."
2377548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        ;;
2378548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2379548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      install)
2380548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        $ECHO \
2381548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
2382548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2383548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenInstall executables or libraries.
2384548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2385548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenINSTALL-COMMAND is the installation command.  The first component should be
2386548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelisseneither the \`install' or \`cp' program.
2387548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2388548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenThe following components of INSTALL-COMMAND are treated specially:
2389548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2390548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  -inst-prefix-dir PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
2391548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2392548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenThe rest of the components are interpreted as arguments to that command (only
2393548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenBSD-compatible install options are recognized)."
2394548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        ;;
2395548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2396548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      link)
2397548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        $ECHO \
2398548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
2399548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2400548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenLink object files or libraries together to form another library, or to
2401548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissencreate an executable program.
2402548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2403548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenLINK-COMMAND is a command using the C compiler that you would use to create
2404548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissena program from several object files.
2405548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2406548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenThe following components of LINK-COMMAND are treated specially:
2407548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2408548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  -all-static       do not do any dynamic linking at all
2409548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  -avoid-version    do not add a version suffix if possible
2410548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  -bindir BINDIR    specify path to binaries directory (for systems where
2411548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen                    libraries must be found in the PATH setting at runtime)
2412548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
2413548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
2414548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
2415548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  -export-symbols SYMFILE
2416548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen                    try to export only the symbols listed in SYMFILE
2417548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  -export-symbols-regex REGEX
2418548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen                    try to export only the symbols matching REGEX
2419548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  -LLIBDIR          search LIBDIR for required installed libraries
2420548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  -lNAME            OUTPUT-FILE requires the installed library libNAME
2421548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  -module           build a library that can dlopened
2422548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  -no-fast-install  disable the fast-install mode
2423548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  -no-install       link a not-installable executable
2424548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  -no-undefined     declare that a library does not refer to external symbols
2425548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
2426548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  -objectlist FILE  Use a list of object files found in FILE to specify objects
2427548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  -precious-files-regex REGEX
2428548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen                    don't remove output files matching REGEX
2429548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  -release RELEASE  specify package release information
2430548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
2431548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
2432548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  -shared           only do dynamic linking of libtool libraries
2433548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  -shrext SUFFIX    override the standard shared library file extension
2434548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  -static           do not do any dynamic linking of uninstalled libtool libraries
2435548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  -static-libtool-libs
2436548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen                    do not do any dynamic linking of libtool libraries
2437548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  -version-info CURRENT[:REVISION[:AGE]]
2438548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen                    specify library version info [each variable defaults to 0]
2439548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  -weak LIBNAME     declare that the target provides the LIBNAME interface
2440548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  -Wc,FLAG
2441548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  -Xcompiler FLAG   pass linker-specific FLAG directly to the compiler
2442548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  -Wl,FLAG
2443548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  -Xlinker FLAG     pass linker-specific FLAG directly to the linker
2444548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  -XCClinker FLAG   pass link-specific FLAG to the compiler driver (CC)
2445548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2446548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenAll other options (arguments beginning with \`-') are ignored.
2447548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2448548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenEvery other argument is treated as a filename.  Files ending in \`.la' are
2449548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissentreated as uninstalled libtool libraries, other files are standard or library
2450548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenobject files.
2451548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2452548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenIf the OUTPUT-FILE ends in \`.la', then a libtool library is created,
2453548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenonly library objects (\`.lo' files) may be specified, and \`-rpath' is
2454548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenrequired, except when creating a convenience library.
2455548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2456548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
2457548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenusing \`ar' and \`ranlib', or on Windows using \`lib'.
2458548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2459548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
2460548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenis created, otherwise an executable program is created."
2461548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        ;;
2462548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2463548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      uninstall)
2464548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        $ECHO \
2465548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
2466548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2467548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenRemove libraries from an installation directory.
2468548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2469548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenRM is the name of the program to use to delete files associated with each FILE
2470548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
2471548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissento RM.
2472548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2473548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenIf FILE is a libtool library, all the files associated with it are deleted.
2474548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenOtherwise, only FILE itself is deleted using RM."
2475548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        ;;
2476548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2477548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      *)
2478548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        func_fatal_help "invalid operation mode \`$opt_mode'"
2479548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        ;;
2480548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    esac
2481548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2482548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    echo
2483548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    $ECHO "Try \`$progname --help' for more information about other modes."
2484548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
2485548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2486548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Now that we've collected a possible --mode arg, show help if necessary
2487548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenif $opt_help; then
2488548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  if test "$opt_help" = :; then
2489548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_mode_help
2490548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  else
2491548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    {
2492548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_help noexit
2493548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      for opt_mode in compile link execute install finish uninstall clean; do
2494548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_mode_help
2495548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      done
2496548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    } | sed -n '1p; 2,$s/^Usage:/  or: /p'
2497548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    {
2498548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_help noexit
2499548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      for opt_mode in compile link execute install finish uninstall clean; do
2500548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	echo
2501548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_mode_help
2502548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      done
2503548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    } |
2504548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    sed '1d
2505548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      /^When reporting/,/^Report/{
2506548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	H
2507548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	d
2508548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      }
2509548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      $x
2510548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      /information about other modes/d
2511548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      /more detailed .*MODE/d
2512548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/'
2513548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  fi
2514548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  exit $?
2515548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfi
2516548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2517548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2518548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_mode_execute arg...
2519548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_mode_execute ()
2520548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
2521548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    $opt_debug
2522548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # The first argument is the command name.
2523548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    cmd="$nonopt"
2524548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    test -z "$cmd" && \
2525548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_fatal_help "you must specify a COMMAND"
2526548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2527548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # Handle -dlopen flags immediately.
2528548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    for file in $opt_dlopen; do
2529548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      test -f "$file" \
2530548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	|| func_fatal_help "\`$file' is not a file"
2531548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2532548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      dir=
2533548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      case $file in
2534548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      *.la)
2535548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_resolve_sysroot "$file"
2536548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	file=$func_resolve_sysroot_result
2537548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2538548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Check to see that this really is a libtool archive.
2539548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_lalib_unsafe_p "$file" \
2540548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  || func_fatal_help "\`$lib' is not a valid libtool archive"
2541548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2542548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Read the libtool library.
2543548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	dlname=
2544548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	library_names=
2545548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_source "$file"
2546548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2547548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Skip this library if it cannot be dlopened.
2548548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test -z "$dlname"; then
2549548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # Warn if it was a shared library.
2550548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  test -n "$library_names" && \
2551548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_warning "\`$file' was not linked with \`-export-dynamic'"
2552548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  continue
2553548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
2554548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2555548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_dirname "$file" "" "."
2556548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	dir="$func_dirname_result"
2557548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2558548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test -f "$dir/$objdir/$dlname"; then
2559548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_append dir "/$objdir"
2560548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	else
2561548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test ! -f "$dir/$dlname"; then
2562548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
2563548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
2564548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
2565548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
2566548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2567548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      *.lo)
2568548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Just add the directory containing the .lo file.
2569548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_dirname "$file" "" "."
2570548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	dir="$func_dirname_result"
2571548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
2572548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2573548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      *)
2574548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
2575548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	continue
2576548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
2577548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      esac
2578548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2579548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Get the absolute pathname.
2580548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      absdir=`cd "$dir" && pwd`
2581548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      test -n "$absdir" && dir="$absdir"
2582548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2583548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Now add the directory to shlibpath_var.
2584548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if eval "test -z \"\$$shlibpath_var\""; then
2585548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	eval "$shlibpath_var=\"\$dir\""
2586548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      else
2587548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
2588548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
2589548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    done
2590548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2591548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # This variable tells wrapper scripts just to set shlibpath_var
2592548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # rather than running their programs.
2593548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    libtool_execute_magic="$magic"
2594548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2595548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # Check if any of the arguments is a wrapper script.
2596548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    args=
2597548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    for file
2598548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    do
2599548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      case $file in
2600548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      -* | *.la | *.lo ) ;;
2601548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      *)
2602548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Do a test to see if this is really a libtool program.
2603548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if func_ltwrapper_script_p "$file"; then
2604548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_source "$file"
2605548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # Transform arg to wrapped name.
2606548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  file="$progdir/$program"
2607548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	elif func_ltwrapper_executable_p "$file"; then
2608548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_ltwrapper_scriptname "$file"
2609548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_source "$func_ltwrapper_scriptname_result"
2610548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # Transform arg to wrapped name.
2611548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  file="$progdir/$program"
2612548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
2613548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
2614548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      esac
2615548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Quote arguments (to preserve shell metacharacters).
2616548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_append_quoted args "$file"
2617548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    done
2618548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2619548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    if test "X$opt_dry_run" = Xfalse; then
2620548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test -n "$shlibpath_var"; then
2621548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Export the shlibpath_var.
2622548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	eval "export $shlibpath_var"
2623548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
2624548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2625548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Restore saved environment variables
2626548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
2627548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      do
2628548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	eval "if test \"\${save_$lt_var+set}\" = set; then
2629548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen                $lt_var=\$save_$lt_var; export $lt_var
2630548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      else
2631548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		$lt_unset $lt_var
2632548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      fi"
2633548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      done
2634548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2635548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Now prepare to actually exec the command.
2636548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      exec_cmd="\$cmd$args"
2637548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    else
2638548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Display what would be done.
2639548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test -n "$shlibpath_var"; then
2640548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
2641548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	echo "export $shlibpath_var"
2642548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
2643548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      $ECHO "$cmd$args"
2644548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      exit $EXIT_SUCCESS
2645548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    fi
2646548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
2647548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2648548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissentest "$opt_mode" = execute && func_mode_execute ${1+"$@"}
2649548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2650548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2651548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_mode_finish arg...
2652548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_mode_finish ()
2653548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
2654548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    $opt_debug
2655548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    libs=
2656548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    libdirs=
2657548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    admincmds=
2658548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2659548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    for opt in "$nonopt" ${1+"$@"}
2660548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    do
2661548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test -d "$opt"; then
2662548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_append libdirs " $opt"
2663548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2664548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      elif test -f "$opt"; then
2665548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if func_lalib_unsafe_p "$opt"; then
2666548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_append libs " $opt"
2667548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	else
2668548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_warning "\`$opt' is not a valid libtool archive"
2669548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
2670548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2671548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      else
2672548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_fatal_error "invalid argument \`$opt'"
2673548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
2674548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    done
2675548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2676548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    if test -n "$libs"; then
2677548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test -n "$lt_sysroot"; then
2678548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"`
2679548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;"
2680548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      else
2681548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        sysroot_cmd=
2682548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
2683548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2684548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Remove sysroot references
2685548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if $opt_dry_run; then
2686548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        for lib in $libs; do
2687548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen          echo "removing references to $lt_sysroot and \`=' prefixes from $lib"
2688548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        done
2689548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      else
2690548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        tmpdir=`func_mktempdir`
2691548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        for lib in $libs; do
2692548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \
2693548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    > $tmpdir/tmp-la
2694548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  mv -f $tmpdir/tmp-la $lib
2695548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	done
2696548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        ${RM}r "$tmpdir"
2697548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
2698548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    fi
2699548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2700548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
2701548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      for libdir in $libdirs; do
2702548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test -n "$finish_cmds"; then
2703548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # Do each command in the finish commands.
2704548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
2705548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen'"$cmd"'"'
2706548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
2707548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test -n "$finish_eval"; then
2708548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # Do the single finish_eval.
2709548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  eval cmds=\"$finish_eval\"
2710548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  $opt_dry_run || eval "$cmds" || func_append admincmds "
2711548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen       $cmds"
2712548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
2713548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      done
2714548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    fi
2715548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2716548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # Exit here if they wanted silent mode.
2717548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    $opt_silent && exit $EXIT_SUCCESS
2718548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2719548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
2720548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      echo "----------------------------------------------------------------------"
2721548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      echo "Libraries have been installed in:"
2722548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      for libdir in $libdirs; do
2723548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	$ECHO "   $libdir"
2724548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      done
2725548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      echo
2726548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      echo "If you ever happen to want to link against installed libraries"
2727548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      echo "in a given directory, LIBDIR, you must either use libtool, and"
2728548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
2729548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      echo "flag during linking and do at least one of the following:"
2730548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test -n "$shlibpath_var"; then
2731548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	echo "   - add LIBDIR to the \`$shlibpath_var' environment variable"
2732548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	echo "     during execution"
2733548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
2734548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test -n "$runpath_var"; then
2735548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	echo "   - add LIBDIR to the \`$runpath_var' environment variable"
2736548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	echo "     during linking"
2737548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
2738548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test -n "$hardcode_libdir_flag_spec"; then
2739548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	libdir=LIBDIR
2740548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	eval flag=\"$hardcode_libdir_flag_spec\"
2741548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2742548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	$ECHO "   - use the \`$flag' linker flag"
2743548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
2744548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test -n "$admincmds"; then
2745548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	$ECHO "   - have your system administrator run these commands:$admincmds"
2746548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
2747548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test -f /etc/ld.so.conf; then
2748548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	echo "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
2749548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
2750548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      echo
2751548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2752548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      echo "See any operating system documentation about shared libraries for"
2753548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      case $host in
2754548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	solaris2.[6789]|solaris2.1[0-9])
2755548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  echo "more information, such as the ld(1), crle(1) and ld.so(8) manual"
2756548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  echo "pages."
2757548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
2758548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	*)
2759548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  echo "more information, such as the ld(1) and ld.so(8) manual pages."
2760548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
2761548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      esac
2762548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      echo "----------------------------------------------------------------------"
2763548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    fi
2764548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    exit $EXIT_SUCCESS
2765548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
2766548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2767548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissentest "$opt_mode" = finish && func_mode_finish ${1+"$@"}
2768548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2769548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2770548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_mode_install arg...
2771548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_mode_install ()
2772548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
2773548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    $opt_debug
2774548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # There may be an optional sh(1) argument at the beginning of
2775548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # install_prog (especially on Windows NT).
2776548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
2777548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen       # Allow the use of GNU shtool's install command.
2778548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen       case $nonopt in *shtool*) :;; *) false;; esac; then
2779548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Aesthetically quote it.
2780548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_quote_for_eval "$nonopt"
2781548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      install_prog="$func_quote_for_eval_result "
2782548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      arg=$1
2783548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      shift
2784548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    else
2785548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      install_prog=
2786548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      arg=$nonopt
2787548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    fi
2788548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2789548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # The real first argument should be the name of the installation program.
2790548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # Aesthetically quote it.
2791548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_quote_for_eval "$arg"
2792548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_append install_prog "$func_quote_for_eval_result"
2793548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    install_shared_prog=$install_prog
2794548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    case " $install_prog " in
2795548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      *[\\\ /]cp\ *) install_cp=: ;;
2796548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      *) install_cp=false ;;
2797548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    esac
2798548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2799548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # We need to accept at least all the BSD install flags.
2800548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    dest=
2801548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    files=
2802548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    opts=
2803548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    prev=
2804548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    install_type=
2805548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    isdir=no
2806548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    stripme=
2807548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    no_mode=:
2808548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    for arg
2809548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    do
2810548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      arg2=
2811548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test -n "$dest"; then
2812548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_append files " $dest"
2813548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	dest=$arg
2814548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	continue
2815548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
2816548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2817548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      case $arg in
2818548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      -d) isdir=yes ;;
2819548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      -f)
2820548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if $install_cp; then :; else
2821548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  prev=$arg
2822548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
2823548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
2824548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      -g | -m | -o)
2825548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	prev=$arg
2826548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
2827548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      -s)
2828548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	stripme=" -s"
2829548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	continue
2830548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
2831548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      -*)
2832548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
2833548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      *)
2834548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# If the previous option needed an argument, then skip it.
2835548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test -n "$prev"; then
2836548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test "x$prev" = x-m && test -n "$install_override_mode"; then
2837548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    arg2=$install_override_mode
2838548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    no_mode=false
2839548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
2840548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  prev=
2841548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	else
2842548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  dest=$arg
2843548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  continue
2844548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
2845548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
2846548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      esac
2847548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2848548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Aesthetically quote the argument.
2849548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_quote_for_eval "$arg"
2850548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_append install_prog " $func_quote_for_eval_result"
2851548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test -n "$arg2"; then
2852548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_quote_for_eval "$arg2"
2853548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
2854548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_append install_shared_prog " $func_quote_for_eval_result"
2855548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    done
2856548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2857548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    test -z "$install_prog" && \
2858548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_fatal_help "you must specify an install program"
2859548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2860548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    test -n "$prev" && \
2861548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_fatal_help "the \`$prev' option requires an argument"
2862548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2863548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    if test -n "$install_override_mode" && $no_mode; then
2864548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if $install_cp; then :; else
2865548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_quote_for_eval "$install_override_mode"
2866548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_append install_shared_prog " -m $func_quote_for_eval_result"
2867548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
2868548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    fi
2869548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2870548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    if test -z "$files"; then
2871548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test -z "$dest"; then
2872548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_fatal_help "no file or destination specified"
2873548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      else
2874548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_fatal_help "you must specify a destination"
2875548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
2876548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    fi
2877548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2878548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # Strip any trailing slash from the destination.
2879548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_stripname '' '/' "$dest"
2880548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    dest=$func_stripname_result
2881548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2882548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # Check to see that the destination is a directory.
2883548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    test -d "$dest" && isdir=yes
2884548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    if test "$isdir" = yes; then
2885548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      destdir="$dest"
2886548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      destname=
2887548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    else
2888548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_dirname_and_basename "$dest" "" "."
2889548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      destdir="$func_dirname_result"
2890548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      destname="$func_basename_result"
2891548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2892548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Not a directory, so check to see that there is only one file specified.
2893548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      set dummy $files; shift
2894548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      test "$#" -gt 1 && \
2895548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_fatal_help "\`$dest' is not a directory"
2896548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    fi
2897548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    case $destdir in
2898548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    [\\/]* | [A-Za-z]:[\\/]*) ;;
2899548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    *)
2900548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      for file in $files; do
2901548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	case $file in
2902548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	*.lo) ;;
2903548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	*)
2904548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_fatal_help "\`$destdir' must be an absolute directory name"
2905548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
2906548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	esac
2907548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      done
2908548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      ;;
2909548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    esac
2910548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2911548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # This variable tells wrapper scripts just to set variables rather
2912548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # than running their programs.
2913548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    libtool_install_magic="$magic"
2914548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2915548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    staticlibs=
2916548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    future_libdirs=
2917548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    current_libdirs=
2918548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    for file in $files; do
2919548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2920548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Do each installation.
2921548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      case $file in
2922548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      *.$libext)
2923548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Do the static libraries later.
2924548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_append staticlibs " $file"
2925548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
2926548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2927548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      *.la)
2928548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_resolve_sysroot "$file"
2929548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	file=$func_resolve_sysroot_result
2930548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2931548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Check to see that this really is a libtool archive.
2932548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_lalib_unsafe_p "$file" \
2933548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  || func_fatal_help "\`$file' is not a valid libtool archive"
2934548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2935548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	library_names=
2936548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	old_library=
2937548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	relink_command=
2938548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_source "$file"
2939548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2940548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Add the libdir to current_libdirs if it is the destination.
2941548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test "X$destdir" = "X$libdir"; then
2942548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  case "$current_libdirs " in
2943548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *" $libdir "*) ;;
2944548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *) func_append current_libdirs " $libdir" ;;
2945548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  esac
2946548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	else
2947548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # Note the libdir as a future libdir.
2948548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  case "$future_libdirs " in
2949548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *" $libdir "*) ;;
2950548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *) func_append future_libdirs " $libdir" ;;
2951548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  esac
2952548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
2953548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2954548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_dirname "$file" "/" ""
2955548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	dir="$func_dirname_result"
2956548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_append dir "$objdir"
2957548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2958548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test -n "$relink_command"; then
2959548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # Determine the prefix the user has applied to our future dir.
2960548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"`
2961548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2962548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # Don't allow the user to place us outside of our expected
2963548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # location b/c this prevents finding dependent libraries that
2964548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # are installed to the same prefix.
2965548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # At present, this check doesn't affect windows .dll's that
2966548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # are installed into $libdir/../bin (currently, that works fine)
2967548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # but it's something to keep an eye on.
2968548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  test "$inst_prefix_dir" = "$destdir" && \
2969548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
2970548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2971548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test -n "$inst_prefix_dir"; then
2972548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # Stick the inst_prefix_dir data into the link command.
2973548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
2974548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  else
2975548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
2976548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
2977548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2978548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_warning "relinking \`$file'"
2979548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_show_eval "$relink_command" \
2980548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
2981548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
2982548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2983548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# See the names of the shared library.
2984548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	set dummy $library_names; shift
2985548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test -n "$1"; then
2986548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  realname="$1"
2987548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  shift
2988548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2989548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  srcname="$realname"
2990548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  test -n "$relink_command" && srcname="$realname"T
2991548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
2992548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # Install the shared library and build the symlinks.
2993548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \
2994548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      'exit $?'
2995548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  tstripme="$stripme"
2996548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  case $host_os in
2997548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  cygwin* | mingw* | pw32* | cegcc*)
2998548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    case $realname in
2999548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    *.dll.a)
3000548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      tstripme=""
3001548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      ;;
3002548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    esac
3003548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    ;;
3004548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  esac
3005548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test -n "$tstripme" && test -n "$striplib"; then
3006548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_show_eval "$striplib $destdir/$realname" 'exit $?'
3007548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
3008548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3009548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test "$#" -gt 0; then
3010548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # Delete the old symlinks, and create new ones.
3011548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # Try `ln -sf' first, because the `ln' binary might depend on
3012548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # the symlink we replace!  Solaris /bin/ln does not understand -f,
3013548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # so we also need to try rm && ln -s.
3014548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    for linkname
3015548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    do
3016548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      test "$linkname" != "$realname" \
3017548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		&& func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
3018548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    done
3019548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
3020548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3021548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # Do each command in the postinstall commands.
3022548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  lib="$destdir/$realname"
3023548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_execute_cmds "$postinstall_cmds" 'exit $?'
3024548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
3025548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3026548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Install the pseudo-library for information purposes.
3027548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_basename "$file"
3028548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	name="$func_basename_result"
3029548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	instname="$dir/$name"i
3030548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
3031548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3032548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Maybe install the static library, too.
3033548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	test -n "$old_library" && func_append staticlibs " $dir/$old_library"
3034548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
3035548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3036548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      *.lo)
3037548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Install (i.e. copy) a libtool object.
3038548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3039548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Figure out destination file name, if it wasn't already specified.
3040548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test -n "$destname"; then
3041548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  destfile="$destdir/$destname"
3042548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	else
3043548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_basename "$file"
3044548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  destfile="$func_basename_result"
3045548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  destfile="$destdir/$destfile"
3046548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
3047548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3048548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Deduce the name of the destination old-style object file.
3049548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	case $destfile in
3050548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	*.lo)
3051548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_lo2o "$destfile"
3052548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  staticdest=$func_lo2o_result
3053548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
3054548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	*.$objext)
3055548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  staticdest="$destfile"
3056548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  destfile=
3057548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
3058548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	*)
3059548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_fatal_help "cannot copy a libtool object to \`$destfile'"
3060548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
3061548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	esac
3062548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3063548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Install the libtool object if requested.
3064548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	test -n "$destfile" && \
3065548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_show_eval "$install_prog $file $destfile" 'exit $?'
3066548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3067548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Install the old object if enabled.
3068548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test "$build_old_libs" = yes; then
3069548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # Deduce the name of the old-style object file.
3070548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_lo2o "$file"
3071548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  staticobj=$func_lo2o_result
3072548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
3073548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
3074548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	exit $EXIT_SUCCESS
3075548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
3076548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3077548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      *)
3078548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Figure out destination file name, if it wasn't already specified.
3079548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test -n "$destname"; then
3080548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  destfile="$destdir/$destname"
3081548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	else
3082548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_basename "$file"
3083548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  destfile="$func_basename_result"
3084548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  destfile="$destdir/$destfile"
3085548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
3086548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3087548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# If the file is missing, and there is a .exe on the end, strip it
3088548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# because it is most likely a libtool script we actually want to
3089548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# install
3090548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	stripped_ext=""
3091548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	case $file in
3092548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *.exe)
3093548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if test ! -f "$file"; then
3094548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      func_stripname '' '.exe' "$file"
3095548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      file=$func_stripname_result
3096548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      stripped_ext=".exe"
3097548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
3098548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    ;;
3099548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	esac
3100548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3101548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Do a test to see if this is really a libtool program.
3102548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	case $host in
3103548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	*cygwin* | *mingw*)
3104548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if func_ltwrapper_executable_p "$file"; then
3105548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      func_ltwrapper_scriptname "$file"
3106548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      wrapper=$func_ltwrapper_scriptname_result
3107548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    else
3108548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      func_stripname '' '.exe' "$file"
3109548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      wrapper=$func_stripname_result
3110548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
3111548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    ;;
3112548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	*)
3113548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    wrapper=$file
3114548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    ;;
3115548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	esac
3116548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if func_ltwrapper_script_p "$wrapper"; then
3117548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  notinst_deplibs=
3118548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  relink_command=
3119548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3120548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_source "$wrapper"
3121548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3122548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # Check the variables that should have been set.
3123548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  test -z "$generated_by_libtool_version" && \
3124548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_fatal_error "invalid libtool wrapper script \`$wrapper'"
3125548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3126548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  finalize=yes
3127548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  for lib in $notinst_deplibs; do
3128548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # Check to see that each library is installed.
3129548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    libdir=
3130548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if test -f "$lib"; then
3131548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      func_source "$lib"
3132548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
3133548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test
3134548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if test -n "$libdir" && test ! -f "$libfile"; then
3135548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      func_warning "\`$lib' has not been installed in \`$libdir'"
3136548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      finalize=no
3137548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
3138548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  done
3139548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3140548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  relink_command=
3141548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_source "$wrapper"
3142548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3143548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  outputname=
3144548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test "$fast_install" = no && test -n "$relink_command"; then
3145548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    $opt_dry_run || {
3146548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      if test "$finalize" = yes; then
3147548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	        tmpdir=`func_mktempdir`
3148548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		func_basename "$file$stripped_ext"
3149548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		file="$func_basename_result"
3150548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	        outputname="$tmpdir/$file"
3151548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	        # Replace the output file specification.
3152548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	        relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'`
3153548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3154548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	        $opt_silent || {
3155548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	          func_quote_for_expand "$relink_command"
3156548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  eval "func_echo $func_quote_for_expand_result"
3157548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	        }
3158548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	        if eval "$relink_command"; then :
3159548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	          else
3160548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  func_error "error: relink \`$file' with the above command before installing it"
3161548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  $opt_dry_run || ${RM}r "$tmpdir"
3162548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  continue
3163548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	        fi
3164548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	        file="$outputname"
3165548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      else
3166548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	        func_warning "cannot relink \`$file'"
3167548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      fi
3168548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    }
3169548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  else
3170548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # Install the binary that we compiled earlier.
3171548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"`
3172548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
3173548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
3174548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3175548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# remove .exe since cygwin /usr/bin/install will append another
3176548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# one anyway
3177548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	case $install_prog,$host in
3178548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	*/usr/bin/install*,*cygwin*)
3179548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  case $file:$destfile in
3180548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *.exe:*.exe)
3181548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # this is ok
3182548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    ;;
3183548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *.exe:*)
3184548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    destfile=$destfile.exe
3185548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    ;;
3186548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *:*.exe)
3187548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_stripname '' '.exe' "$destfile"
3188548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    destfile=$func_stripname_result
3189548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    ;;
3190548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  esac
3191548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
3192548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	esac
3193548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
3194548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	$opt_dry_run || if test -n "$outputname"; then
3195548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ${RM}r "$tmpdir"
3196548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
3197548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
3198548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      esac
3199548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    done
3200548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3201548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    for file in $staticlibs; do
3202548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_basename "$file"
3203548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      name="$func_basename_result"
3204548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3205548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Set up the ranlib parameters.
3206548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      oldlib="$destdir/$name"
3207548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3208548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
3209548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3210548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test -n "$stripme" && test -n "$old_striplib"; then
3211548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_show_eval "$old_striplib $oldlib" 'exit $?'
3212548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
3213548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3214548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Do each command in the postinstall commands.
3215548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_execute_cmds "$old_postinstall_cmds" 'exit $?'
3216548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    done
3217548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3218548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    test -n "$future_libdirs" && \
3219548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_warning "remember to run \`$progname --finish$future_libdirs'"
3220548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3221548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    if test -n "$current_libdirs"; then
3222548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Maybe just do a dry run.
3223548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      $opt_dry_run && current_libdirs=" -n$current_libdirs"
3224548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
3225548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    else
3226548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      exit $EXIT_SUCCESS
3227548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    fi
3228548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
3229548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3230548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissentest "$opt_mode" = install && func_mode_install ${1+"$@"}
3231548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3232548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3233548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_generate_dlsyms outputname originator pic_p
3234548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Extract symbols from dlprefiles and create ${outputname}S.o with
3235548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# a dlpreopen symbol table.
3236548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_generate_dlsyms ()
3237548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
3238548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    $opt_debug
3239548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    my_outputname="$1"
3240548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    my_originator="$2"
3241548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    my_pic_p="${3-no}"
3242548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
3243548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    my_dlsyms=
3244548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3245548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
3246548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test -n "$NM" && test -n "$global_symbol_pipe"; then
3247548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	my_dlsyms="${my_outputname}S.c"
3248548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      else
3249548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_error "not configured to extract global symbols from dlpreopened files"
3250548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
3251548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    fi
3252548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3253548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    if test -n "$my_dlsyms"; then
3254548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      case $my_dlsyms in
3255548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      "") ;;
3256548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      *.c)
3257548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Discover the nlist of each of the dlfiles.
3258548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	nlist="$output_objdir/${my_outputname}.nm"
3259548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3260548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
3261548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3262548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Parse the name list into a source file.
3263548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_verbose "creating $output_objdir/$my_dlsyms"
3264548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3265548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	$opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
3266548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
3267548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
3268548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3269548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#ifdef __cplusplus
3270548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenextern \"C\" {
3271548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#endif
3272548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3273548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4))
3274548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
3275548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#endif
3276548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3277548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
3278548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
3279548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen/* DATA imports from DLLs on WIN32 con't be const, because runtime
3280548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen   relocations are performed -- see ld's documentation on pseudo-relocs.  */
3281548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define LT_DLSYM_CONST
3282548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#elif defined(__osf__)
3283548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen/* This system does not cope well with relocations in const data.  */
3284548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define LT_DLSYM_CONST
3285548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#else
3286548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define LT_DLSYM_CONST const
3287548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#endif
3288548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3289548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen/* External symbol declarations for the compiler. */\
3290548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen"
3291548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3292548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test "$dlself" = yes; then
3293548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_verbose "generating symbol list for \`$output'"
3294548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3295548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
3296548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3297548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # Add our own program objects to the symbol list.
3298548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP`
3299548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  for progfile in $progfiles; do
3300548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_to_tool_file "$progfile" func_convert_file_msys_to_w32
3301548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_verbose "extracting global C symbols from \`$func_to_tool_file_result'"
3302548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'"
3303548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  done
3304548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3305548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test -n "$exclude_expsyms"; then
3306548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    $opt_dry_run || {
3307548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
3308548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      eval '$MV "$nlist"T "$nlist"'
3309548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    }
3310548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
3311548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3312548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test -n "$export_symbols_regex"; then
3313548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    $opt_dry_run || {
3314548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
3315548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      eval '$MV "$nlist"T "$nlist"'
3316548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    }
3317548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
3318548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3319548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # Prepare the list of exported symbols
3320548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test -z "$export_symbols"; then
3321548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    export_symbols="$output_objdir/$outputname.exp"
3322548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    $opt_dry_run || {
3323548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      $RM $export_symbols
3324548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
3325548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      case $host in
3326548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      *cygwin* | *mingw* | *cegcc* )
3327548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen                eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
3328548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen                eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
3329548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	        ;;
3330548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      esac
3331548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    }
3332548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  else
3333548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    $opt_dry_run || {
3334548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
3335548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
3336548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      eval '$MV "$nlist"T "$nlist"'
3337548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      case $host in
3338548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	        *cygwin* | *mingw* | *cegcc* )
3339548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	          eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
3340548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	          eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
3341548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	          ;;
3342548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      esac
3343548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    }
3344548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
3345548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
3346548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3347548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	for dlprefile in $dlprefiles; do
3348548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_verbose "extracting global C symbols from \`$dlprefile'"
3349548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_basename "$dlprefile"
3350548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  name="$func_basename_result"
3351548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen          case $host in
3352548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    *cygwin* | *mingw* | *cegcc* )
3353548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # if an import library, we need to obtain dlname
3354548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      if func_win32_import_lib_p "$dlprefile"; then
3355548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	        func_tr_sh "$dlprefile"
3356548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	        eval "curr_lafile=\$libfile_$func_tr_sh_result"
3357548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	        dlprefile_dlbasename=""
3358548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	        if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then
3359548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	          # Use subshell, to avoid clobbering current variable values
3360548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	          dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"`
3361548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	          if test -n "$dlprefile_dlname" ; then
3362548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	            func_basename "$dlprefile_dlname"
3363548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	            dlprefile_dlbasename="$func_basename_result"
3364548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	          else
3365548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	            # no lafile. user explicitly requested -dlpreopen <import library>.
3366548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	            $sharedlib_from_linklib_cmd "$dlprefile"
3367548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	            dlprefile_dlbasename=$sharedlib_from_linklib_result
3368548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	          fi
3369548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	        fi
3370548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	        $opt_dry_run || {
3371548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	          if test -n "$dlprefile_dlbasename" ; then
3372548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	            eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"'
3373548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	          else
3374548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	            func_warning "Could not compute DLL name from $name"
3375548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	            eval '$ECHO ": $name " >> "$nlist"'
3376548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	          fi
3377548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	          func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
3378548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	          eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe |
3379548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	            $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'"
3380548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	        }
3381548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      else # not an import lib
3382548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	        $opt_dry_run || {
3383548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	          eval '$ECHO ": $name " >> "$nlist"'
3384548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	          func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
3385548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	          eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
3386548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	        }
3387548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      fi
3388548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    ;;
3389548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    *)
3390548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      $opt_dry_run || {
3391548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	        eval '$ECHO ": $name " >> "$nlist"'
3392548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	        func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
3393548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	        eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
3394548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      }
3395548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    ;;
3396548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen          esac
3397548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	done
3398548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3399548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	$opt_dry_run || {
3400548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # Make sure we have at least an empty file.
3401548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  test -f "$nlist" || : > "$nlist"
3402548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3403548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test -n "$exclude_expsyms"; then
3404548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
3405548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    $MV "$nlist"T "$nlist"
3406548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
3407548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3408548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # Try sorting and uniquifying the output.
3409548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if $GREP -v "^: " < "$nlist" |
3410548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      if sort -k 3 </dev/null >/dev/null 2>&1; then
3411548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		sort -k 3
3412548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      else
3413548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		sort +2
3414548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      fi |
3415548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      uniq > "$nlist"S; then
3416548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    :
3417548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  else
3418548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    $GREP -v "^: " < "$nlist" > "$nlist"S
3419548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
3420548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3421548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test -f "$nlist"S; then
3422548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
3423548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  else
3424548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    echo '/* NONE */' >> "$output_objdir/$my_dlsyms"
3425548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
3426548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3427548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  echo >> "$output_objdir/$my_dlsyms" "\
3428548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3429548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen/* The mapping between symbol names and symbols.  */
3430548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissentypedef struct {
3431548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  const char *name;
3432548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  void *address;
3433548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} lt_dlsymlist;
3434548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenextern LT_DLSYM_CONST lt_dlsymlist
3435548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenlt_${my_prefix}_LTX_preloaded_symbols[];
3436548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenLT_DLSYM_CONST lt_dlsymlist
3437548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenlt_${my_prefix}_LTX_preloaded_symbols[] =
3438548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{\
3439548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  { \"$my_originator\", (void *) 0 },"
3440548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3441548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  case $need_lib_prefix in
3442548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  no)
3443548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
3444548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    ;;
3445548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *)
3446548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
3447548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    ;;
3448548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  esac
3449548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  echo >> "$output_objdir/$my_dlsyms" "\
3450548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  {0, (void *) 0}
3451548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen};
3452548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3453548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen/* This works around a problem in FreeBSD linker */
3454548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#ifdef FREEBSD_WORKAROUND
3455548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenstatic const void *lt_preloaded_setup() {
3456548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  return lt_${my_prefix}_LTX_preloaded_symbols;
3457548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
3458548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#endif
3459548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3460548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#ifdef __cplusplus
3461548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
3462548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#endif\
3463548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen"
3464548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	} # !$opt_dry_run
3465548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3466548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	pic_flag_for_symtable=
3467548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	case "$compile_command " in
3468548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	*" -static "*) ;;
3469548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	*)
3470548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  case $host in
3471548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # compiling the symbol table file with pic_flag works around
3472548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # a FreeBSD bug that causes programs to crash when -lm is
3473548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # linked before any other PIC object.  But we must not use
3474548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # pic_flag when linking with -static.  The problem exists in
3475548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
3476548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
3477548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
3478548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *-*-hpux*)
3479548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    pic_flag_for_symtable=" $pic_flag"  ;;
3480548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *)
3481548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if test "X$my_pic_p" != Xno; then
3482548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      pic_flag_for_symtable=" $pic_flag"
3483548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
3484548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    ;;
3485548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  esac
3486548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
3487548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	esac
3488548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	symtab_cflags=
3489548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	for arg in $LTCFLAGS; do
3490548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  case $arg in
3491548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  -pie | -fpie | -fPIE) ;;
3492548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *) func_append symtab_cflags " $arg" ;;
3493548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  esac
3494548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	done
3495548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3496548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Now compile the dynamic symbol file.
3497548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
3498548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3499548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Clean up the generated files.
3500548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
3501548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3502548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Transform the symbol file into the correct name.
3503548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	symfileobj="$output_objdir/${my_outputname}S.$objext"
3504548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	case $host in
3505548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	*cygwin* | *mingw* | *cegcc* )
3506548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test -f "$output_objdir/$my_outputname.def"; then
3507548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
3508548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
3509548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  else
3510548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
3511548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
3512548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
3513548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
3514548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	*)
3515548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
3516548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
3517548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
3518548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	esac
3519548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
3520548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      *)
3521548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_fatal_error "unknown suffix for \`$my_dlsyms'"
3522548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
3523548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      esac
3524548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    else
3525548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # We keep going just in case the user didn't refer to
3526548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
3527548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # really was required.
3528548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3529548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Nullify the symbol file.
3530548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"`
3531548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"`
3532548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    fi
3533548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
3534548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3535548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_win32_libid arg
3536548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# return the library type of file 'arg'
3537548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#
3538548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Need a lot of goo to handle *both* DLLs and import libs
3539548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Has to be a shell function in order to 'eat' the argument
3540548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# that is supplied when $file_magic_command is called.
3541548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Despite the name, also deal with 64 bit binaries.
3542548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_win32_libid ()
3543548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
3544548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  $opt_debug
3545548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  win32_libid_type="unknown"
3546548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  win32_fileres=`file -L $1 2>/dev/null`
3547548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  case $win32_fileres in
3548548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  *ar\ archive\ import\ library*) # definitely import
3549548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    win32_libid_type="x86 archive import"
3550548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    ;;
3551548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  *ar\ archive*) # could be an import, or static
3552548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD.
3553548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
3554548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen       $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then
3555548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_to_tool_file "$1" func_convert_file_msys_to_w32
3556548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" |
3557548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	$SED -n -e '
3558548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    1,100{
3559548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		/ I /{
3560548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    s,.*,import,
3561548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    p
3562548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    q
3563548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		}
3564548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    }'`
3565548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      case $win32_nmres in
3566548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      import*)  win32_libid_type="x86 archive import";;
3567548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      *)        win32_libid_type="x86 archive static";;
3568548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      esac
3569548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    fi
3570548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    ;;
3571548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  *DLL*)
3572548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    win32_libid_type="x86 DLL"
3573548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    ;;
3574548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  *executable*) # but shell scripts are "executable" too...
3575548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    case $win32_fileres in
3576548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    *MS\ Windows\ PE\ Intel*)
3577548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      win32_libid_type="x86 DLL"
3578548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      ;;
3579548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    esac
3580548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    ;;
3581548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  esac
3582548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  $ECHO "$win32_libid_type"
3583548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
3584548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3585548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_cygming_dll_for_implib ARG
3586548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#
3587548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Platform-specific function to extract the
3588548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# name of the DLL associated with the specified
3589548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# import library ARG.
3590548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Invoked by eval'ing the libtool variable
3591548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#    $sharedlib_from_linklib_cmd
3592548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Result is available in the variable
3593548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#    $sharedlib_from_linklib_result
3594548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_cygming_dll_for_implib ()
3595548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
3596548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  $opt_debug
3597548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"`
3598548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
3599548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3600548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs
3601548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#
3602548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# The is the core of a fallback implementation of a
3603548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# platform-specific function to extract the name of the
3604548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# DLL associated with the specified import library LIBNAME.
3605548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#
3606548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# SECTION_NAME is either .idata$6 or .idata$7, depending
3607548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# on the platform and compiler that created the implib.
3608548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#
3609548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Echos the name of the DLL associated with the
3610548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# specified import library.
3611548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_cygming_dll_for_implib_fallback_core ()
3612548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
3613548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  $opt_debug
3614548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"`
3615548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  $OBJDUMP -s --section "$1" "$2" 2>/dev/null |
3616548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    $SED '/^Contents of section '"$match_literal"':/{
3617548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Place marker at beginning of archive member dllname section
3618548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      s/.*/====MARK====/
3619548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      p
3620548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      d
3621548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    }
3622548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # These lines can sometimes be longer than 43 characters, but
3623548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # are always uninteresting
3624548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    /:[	 ]*file format pe[i]\{,1\}-/d
3625548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    /^In archive [^:]*:/d
3626548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # Ensure marker is printed
3627548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    /^====MARK====/p
3628548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # Remove all lines with less than 43 characters
3629548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    /^.\{43\}/!d
3630548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # From remaining lines, remove first 43 characters
3631548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    s/^.\{43\}//' |
3632548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    $SED -n '
3633548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Join marker and all lines until next marker into a single line
3634548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      /^====MARK====/ b para
3635548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      H
3636548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      $ b para
3637548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      b
3638548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      :para
3639548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      x
3640548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      s/\n//g
3641548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Remove the marker
3642548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      s/^====MARK====//
3643548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Remove trailing dots and whitespace
3644548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      s/[\. \t]*$//
3645548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Print
3646548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      /./p' |
3647548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # we now have a list, one entry per line, of the stringified
3648548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # contents of the appropriate section of all members of the
3649548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # archive which possess that section. Heuristic: eliminate
3650548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # all those which have a first or second character that is
3651548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # a '.' (that is, objdump's representation of an unprintable
3652548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # character.) This should work for all archives with less than
3653548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # 0x302f exports -- but will fail for DLLs whose name actually
3654548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # begins with a literal '.' or a single character followed by
3655548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # a '.'.
3656548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    #
3657548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # Of those that remain, print the first one.
3658548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    $SED -e '/^\./d;/^.\./d;q'
3659548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
3660548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3661548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_cygming_gnu_implib_p ARG
3662548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# This predicate returns with zero status (TRUE) if
3663548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# ARG is a GNU/binutils-style import library. Returns
3664548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# with nonzero status (FALSE) otherwise.
3665548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_cygming_gnu_implib_p ()
3666548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
3667548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  $opt_debug
3668548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  func_to_tool_file "$1" func_convert_file_msys_to_w32
3669548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'`
3670548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  test -n "$func_cygming_gnu_implib_tmp"
3671548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
3672548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3673548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_cygming_ms_implib_p ARG
3674548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# This predicate returns with zero status (TRUE) if
3675548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# ARG is an MS-style import library. Returns
3676548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# with nonzero status (FALSE) otherwise.
3677548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_cygming_ms_implib_p ()
3678548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
3679548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  $opt_debug
3680548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  func_to_tool_file "$1" func_convert_file_msys_to_w32
3681548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'`
3682548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  test -n "$func_cygming_ms_implib_tmp"
3683548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
3684548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3685548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_cygming_dll_for_implib_fallback ARG
3686548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Platform-specific function to extract the
3687548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# name of the DLL associated with the specified
3688548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# import library ARG.
3689548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#
3690548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# This fallback implementation is for use when $DLLTOOL
3691548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# does not support the --identify-strict option.
3692548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Invoked by eval'ing the libtool variable
3693548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#    $sharedlib_from_linklib_cmd
3694548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Result is available in the variable
3695548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#    $sharedlib_from_linklib_result
3696548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_cygming_dll_for_implib_fallback ()
3697548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
3698548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  $opt_debug
3699548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  if func_cygming_gnu_implib_p "$1" ; then
3700548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # binutils import library
3701548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"`
3702548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  elif func_cygming_ms_implib_p "$1" ; then
3703548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # ms-generated import library
3704548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"`
3705548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  else
3706548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # unknown
3707548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    sharedlib_from_linklib_result=""
3708548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  fi
3709548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
3710548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3711548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3712548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_extract_an_archive dir oldlib
3713548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_extract_an_archive ()
3714548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
3715548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    $opt_debug
3716548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    f_ex_an_ar_dir="$1"; shift
3717548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    f_ex_an_ar_oldlib="$1"
3718548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    if test "$lock_old_archive_extraction" = yes; then
3719548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      lockfile=$f_ex_an_ar_oldlib.lock
3720548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
3721548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_echo "Waiting for $lockfile to be removed"
3722548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	sleep 2
3723548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      done
3724548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    fi
3725548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \
3726548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		   'stat=$?; rm -f "$lockfile"; exit $stat'
3727548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    if test "$lock_old_archive_extraction" = yes; then
3728548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      $opt_dry_run || rm -f "$lockfile"
3729548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    fi
3730548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
3731548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen     :
3732548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    else
3733548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
3734548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    fi
3735548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
3736548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3737548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3738548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_extract_archives gentop oldlib ...
3739548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_extract_archives ()
3740548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
3741548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    $opt_debug
3742548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    my_gentop="$1"; shift
3743548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    my_oldlibs=${1+"$@"}
3744548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    my_oldobjs=""
3745548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    my_xlib=""
3746548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    my_xabs=""
3747548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    my_xdir=""
3748548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3749548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    for my_xlib in $my_oldlibs; do
3750548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Extract the objects.
3751548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      case $my_xlib in
3752548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	[\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
3753548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	*) my_xabs=`pwd`"/$my_xlib" ;;
3754548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      esac
3755548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_basename "$my_xlib"
3756548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      my_xlib="$func_basename_result"
3757548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      my_xlib_u=$my_xlib
3758548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      while :; do
3759548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        case " $extracted_archives " in
3760548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	*" $my_xlib_u "*)
3761548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_arith $extracted_serial + 1
3762548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  extracted_serial=$func_arith_result
3763548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  my_xlib_u=lt$extracted_serial-$my_xlib ;;
3764548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	*) break ;;
3765548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	esac
3766548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      done
3767548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      extracted_archives="$extracted_archives $my_xlib_u"
3768548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      my_xdir="$my_gentop/$my_xlib_u"
3769548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3770548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_mkdir_p "$my_xdir"
3771548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3772548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      case $host in
3773548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      *-darwin*)
3774548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_verbose "Extracting $my_xabs"
3775548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Do not bother doing anything if just a dry run
3776548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	$opt_dry_run || {
3777548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  darwin_orig_dir=`pwd`
3778548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  cd $my_xdir || exit $?
3779548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  darwin_archive=$my_xabs
3780548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  darwin_curdir=`pwd`
3781548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  darwin_base_archive=`basename "$darwin_archive"`
3782548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
3783548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test -n "$darwin_arches"; then
3784548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
3785548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    darwin_arch=
3786548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
3787548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    for darwin_arch in  $darwin_arches ; do
3788548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
3789548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
3790548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
3791548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      func_extract_an_archive "`pwd`" "${darwin_base_archive}"
3792548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      cd "$darwin_curdir"
3793548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
3794548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    done # $darwin_arches
3795548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen            ## Okay now we've a bunch of thin objects, gotta fatten them up :)
3796548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
3797548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    darwin_file=
3798548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    darwin_files=
3799548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    for darwin_file in $darwin_filelist; do
3800548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP`
3801548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      $LIPO -create -output "$darwin_file" $darwin_files
3802548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    done # $darwin_filelist
3803548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    $RM -rf unfat-$$
3804548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    cd "$darwin_orig_dir"
3805548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  else
3806548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    cd $darwin_orig_dir
3807548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_extract_an_archive "$my_xdir" "$my_xabs"
3808548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi # $darwin_arches
3809548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	} # !$opt_dry_run
3810548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
3811548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      *)
3812548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        func_extract_an_archive "$my_xdir" "$my_xabs"
3813548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
3814548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      esac
3815548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP`
3816548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    done
3817548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3818548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_extract_archives_result="$my_oldobjs"
3819548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
3820548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3821548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3822548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_emit_wrapper [arg=no]
3823548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#
3824548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Emit a libtool wrapper script on stdout.
3825548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Don't directly open a file because we may want to
3826548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# incorporate the script contents within a cygwin/mingw
3827548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# wrapper executable.  Must ONLY be called from within
3828548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_mode_link because it depends on a number of variables
3829548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# set therein.
3830548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#
3831548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
3832548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# variable will take.  If 'yes', then the emitted script
3833548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# will assume that the directory in which it is stored is
3834548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# the $objdir directory.  This is a cygwin/mingw-specific
3835548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# behavior.
3836548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_emit_wrapper ()
3837548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
3838548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_emit_wrapper_arg1=${1-no}
3839548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3840548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	$ECHO "\
3841548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#! $SHELL
3842548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3843548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# $output - temporary wrapper script for $objdir/$outputname
3844548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
3845548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#
3846548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# The $output program cannot be directly executed until all the libtool
3847548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# libraries that it depends on are installed.
3848548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#
3849548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# This wrapper script should never be moved out of the build directory.
3850548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# If it is, it will not operate correctly.
3851548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3852548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Sed substitution that helps us do robust quoting.  It backslashifies
3853548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# metacharacters that are still active within double-quoted strings.
3854548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissensed_quote_subst='$sed_quote_subst'
3855548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3856548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Be Bourne compatible
3857548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenif test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
3858548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  emulate sh
3859548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  NULLCMD=:
3860548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
3861548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  # is contrary to our usage.  Disable this feature.
3862548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  alias -g '\${1+\"\$@\"}'='\"\$@\"'
3863548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  setopt NO_GLOB_SUBST
3864548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenelse
3865548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
3866548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfi
3867548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenBIN_SH=xpg4; export BIN_SH # for Tru64
3868548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenDUALCASE=1; export DUALCASE # for MKS sh
3869548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3870548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# The HP-UX ksh and POSIX shell print the target directory to stdout
3871548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# if CDPATH is set.
3872548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
3873548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3874548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenrelink_command=\"$relink_command\"
3875548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3876548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# This environment variable determines our operation mode.
3877548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenif test \"\$libtool_install_magic\" = \"$magic\"; then
3878548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  # install mode needs the following variables:
3879548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  generated_by_libtool_version='$macro_version'
3880548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  notinst_deplibs='$notinst_deplibs'
3881548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenelse
3882548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  # When we are sourced in execute mode, \$file and \$ECHO are already set.
3883548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  if test \"\$libtool_execute_magic\" != \"$magic\"; then
3884548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    file=\"\$0\""
3885548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3886548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"`
3887548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    $ECHO "\
3888548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3889548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# A function that is used when there is no print builtin or printf.
3890548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_fallback_echo ()
3891548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
3892548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  eval 'cat <<_LTECHO_EOF
3893548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen\$1
3894548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen_LTECHO_EOF'
3895548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
3896548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    ECHO=\"$qECHO\"
3897548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  fi
3898548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3899548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Very basic option parsing. These options are (a) specific to
3900548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# the libtool wrapper, (b) are identical between the wrapper
3901548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# /script/ and the wrapper /executable/ which is used only on
3902548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# windows platforms, and (c) all begin with the string "--lt-"
3903548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# (application programs are unlikely to have options which match
3904548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# this pattern).
3905548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#
3906548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# There are only two supported options: --lt-debug and
3907548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# --lt-dump-script. There is, deliberately, no --lt-help.
3908548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#
3909548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# The first argument to this parsing function should be the
3910548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# script's $0 value, followed by "$@".
3911548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenlt_option_debug=
3912548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_parse_lt_options ()
3913548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
3914548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  lt_script_arg0=\$0
3915548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  shift
3916548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  for lt_opt
3917548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  do
3918548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    case \"\$lt_opt\" in
3919548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    --lt-debug) lt_option_debug=1 ;;
3920548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    --lt-dump-script)
3921548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\`
3922548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=.
3923548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\`
3924548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        cat \"\$lt_dump_D/\$lt_dump_F\"
3925548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        exit 0
3926548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      ;;
3927548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    --lt-*)
3928548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2
3929548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        exit 1
3930548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      ;;
3931548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    esac
3932548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  done
3933548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3934548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  # Print the debug banner immediately:
3935548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  if test -n \"\$lt_option_debug\"; then
3936548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2
3937548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  fi
3938548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
3939548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3940548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Used when --lt-debug. Prints its arguments to stdout
3941548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# (redirection is the responsibility of the caller)
3942548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_lt_dump_args ()
3943548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
3944548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  lt_dump_args_N=1;
3945548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  for lt_arg
3946548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  do
3947548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\"
3948548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    lt_dump_args_N=\`expr \$lt_dump_args_N + 1\`
3949548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  done
3950548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
3951548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3952548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Core function for launching the target application
3953548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_exec_program_core ()
3954548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
3955548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen"
3956548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  case $host in
3957548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  # Backslashes separate directories on plain windows
3958548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  *-*-mingw | *-*-os2* | *-cegcc*)
3959548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    $ECHO "\
3960548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test -n \"\$lt_option_debug\"; then
3961548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2
3962548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        func_lt_dump_args \${1+\"\$@\"} 1>&2
3963548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
3964548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
3965548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen"
3966548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    ;;
3967548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3968548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  *)
3969548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    $ECHO "\
3970548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test -n \"\$lt_option_debug\"; then
3971548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2
3972548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        func_lt_dump_args \${1+\"\$@\"} 1>&2
3973548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
3974548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      exec \"\$progdir/\$program\" \${1+\"\$@\"}
3975548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen"
3976548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    ;;
3977548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  esac
3978548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  $ECHO "\
3979548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
3980548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      exit 1
3981548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
3982548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3983548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# A function to encapsulate launching the target application
3984548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Strips options in the --lt-* namespace from \$@ and
3985548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# launches target application with the remaining arguments.
3986548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_exec_program ()
3987548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
3988548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  for lt_wr_arg
3989548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  do
3990548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    case \$lt_wr_arg in
3991548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    --lt-*) ;;
3992548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
3993548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    esac
3994548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    shift
3995548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  done
3996548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  func_exec_program_core \${1+\"\$@\"}
3997548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
3998548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
3999548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  # Parse options
4000548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  func_parse_lt_options \"\$0\" \${1+\"\$@\"}
4001548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4002548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  # Find the directory that this script lives in.
4003548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\`
4004548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
4005548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4006548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  # Follow symbolic links until we get to the real thisdir.
4007548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\`
4008548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  while test -n \"\$file\"; do
4009548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\`
4010548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4011548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # If there was a directory component, then change thisdir.
4012548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    if test \"x\$destdir\" != \"x\$file\"; then
4013548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      case \"\$destdir\" in
4014548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
4015548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      *) thisdir=\"\$thisdir/\$destdir\" ;;
4016548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      esac
4017548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    fi
4018548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4019548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\`
4020548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\`
4021548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  done
4022548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4023548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  # Usually 'no', except on cygwin/mingw when embedded into
4024548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  # the cwrapper.
4025548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1
4026548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
4027548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # special case for '.'
4028548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    if test \"\$thisdir\" = \".\"; then
4029548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      thisdir=\`pwd\`
4030548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    fi
4031548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # remove .libs from thisdir
4032548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    case \"\$thisdir\" in
4033548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;;
4034548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    $objdir )   thisdir=. ;;
4035548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    esac
4036548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  fi
4037548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4038548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  # Try to get the absolute directory name.
4039548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  absdir=\`cd \"\$thisdir\" && pwd\`
4040548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  test -n \"\$absdir\" && thisdir=\"\$absdir\"
4041548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen"
4042548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4043548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test "$fast_install" = yes; then
4044548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  $ECHO "\
4045548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  program=lt-'$outputname'$exeext
4046548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  progdir=\"\$thisdir/$objdir\"
4047548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4048548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  if test ! -f \"\$progdir/\$program\" ||
4049548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
4050548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
4051548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4052548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    file=\"\$\$-\$program\"
4053548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4054548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    if test ! -d \"\$progdir\"; then
4055548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      $MKDIR \"\$progdir\"
4056548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    else
4057548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      $RM \"\$progdir/\$file\"
4058548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    fi"
4059548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4060548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  $ECHO "\
4061548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4062548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # relink executable if necessary
4063548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    if test -n \"\$relink_command\"; then
4064548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
4065548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      else
4066548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	$ECHO \"\$relink_command_output\" >&2
4067548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	$RM \"\$progdir/\$file\"
4068548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	exit 1
4069548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
4070548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    fi
4071548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4072548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
4073548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    { $RM \"\$progdir/\$program\";
4074548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
4075548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    $RM \"\$progdir/\$file\"
4076548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  fi"
4077548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	else
4078548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  $ECHO "\
4079548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  program='$outputname'
4080548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  progdir=\"\$thisdir/$objdir\"
4081548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen"
4082548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
4083548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4084548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	$ECHO "\
4085548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4086548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  if test -f \"\$progdir/\$program\"; then"
4087548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4088548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# fixup the dll searchpath if we need to.
4089548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	#
4090548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Fix the DLL searchpath if we need to.  Do this before prepending
4091548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# to shlibpath, because on Windows, both are PATH and uninstalled
4092548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# libraries must come first.
4093548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test -n "$dllsearchpath"; then
4094548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  $ECHO "\
4095548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # Add the dll search path components to the executable PATH
4096548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    PATH=$dllsearchpath:\$PATH
4097548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen"
4098548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
4099548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4100548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Export our shlibpath_var if we have one.
4101548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
4102548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  $ECHO "\
4103548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # Add our own library path to $shlibpath_var
4104548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
4105548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4106548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # Some systems cannot cope with colon-terminated $shlibpath_var
4107548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # The second colon is a workaround for a bug in BeOS R4 sed
4108548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\`
4109548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4110548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    export $shlibpath_var
4111548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen"
4112548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
4113548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4114548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	$ECHO "\
4115548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    if test \"\$libtool_execute_magic\" != \"$magic\"; then
4116548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Run the actual program with our arguments.
4117548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_exec_program \${1+\"\$@\"}
4118548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    fi
4119548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  else
4120548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # The program doesn't exist.
4121548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
4122548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
4123548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
4124548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    exit 1
4125548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  fi
4126548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfi\
4127548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen"
4128548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
4129548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4130548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4131548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_emit_cwrapperexe_src
4132548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# emit the source code for a wrapper executable on stdout
4133548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Must ONLY be called from within func_mode_link because
4134548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# it depends on a number of variable set therein.
4135548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_emit_cwrapperexe_src ()
4136548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
4137548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	cat <<EOF
4138548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4139548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
4140548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen   Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
4141548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4142548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen   The $output program cannot be directly executed until all the libtool
4143548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen   libraries that it depends on are installed.
4144548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4145548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen   This wrapper executable should never be moved out of the build directory.
4146548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen   If it is, it will not operate correctly.
4147548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen*/
4148548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenEOF
4149548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    cat <<"EOF"
4150548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#ifdef _MSC_VER
4151548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define _CRT_SECURE_NO_DEPRECATE 1
4152548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#endif
4153548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#include <stdio.h>
4154548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#include <stdlib.h>
4155548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#ifdef _MSC_VER
4156548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# include <direct.h>
4157548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# include <process.h>
4158548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# include <io.h>
4159548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#else
4160548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# include <unistd.h>
4161548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# include <stdint.h>
4162548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# ifdef __CYGWIN__
4163548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#  include <io.h>
4164548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# endif
4165548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#endif
4166548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#include <malloc.h>
4167548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#include <stdarg.h>
4168548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#include <assert.h>
4169548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#include <string.h>
4170548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#include <ctype.h>
4171548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#include <errno.h>
4172548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#include <fcntl.h>
4173548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#include <sys/stat.h>
4174548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4175548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen/* declarations of non-ANSI functions */
4176548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#if defined(__MINGW32__)
4177548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# ifdef __STRICT_ANSI__
4178548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenint _putenv (const char *);
4179548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# endif
4180548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#elif defined(__CYGWIN__)
4181548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# ifdef __STRICT_ANSI__
4182548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenchar *realpath (const char *, char *);
4183548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenint putenv (char *);
4184548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenint setenv (const char *, const char *, int);
4185548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# endif
4186548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen/* #elif defined (other platforms) ... */
4187548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#endif
4188548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4189548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen/* portability defines, excluding path handling macros */
4190548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#if defined(_MSC_VER)
4191548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define setmode _setmode
4192548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define stat    _stat
4193548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define chmod   _chmod
4194548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define getcwd  _getcwd
4195548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define putenv  _putenv
4196548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define S_IXUSR _S_IEXEC
4197548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# ifndef _INTPTR_T_DEFINED
4198548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#  define _INTPTR_T_DEFINED
4199548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#  define intptr_t int
4200548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# endif
4201548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#elif defined(__MINGW32__)
4202548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define setmode _setmode
4203548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define stat    _stat
4204548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define chmod   _chmod
4205548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define getcwd  _getcwd
4206548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define putenv  _putenv
4207548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#elif defined(__CYGWIN__)
4208548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define HAVE_SETENV
4209548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define FOPEN_WB "wb"
4210548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen/* #elif defined (other platforms) ... */
4211548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#endif
4212548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4213548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#if defined(PATH_MAX)
4214548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define LT_PATHMAX PATH_MAX
4215548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#elif defined(MAXPATHLEN)
4216548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define LT_PATHMAX MAXPATHLEN
4217548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#else
4218548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define LT_PATHMAX 1024
4219548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#endif
4220548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4221548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#ifndef S_IXOTH
4222548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define S_IXOTH 0
4223548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#endif
4224548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#ifndef S_IXGRP
4225548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define S_IXGRP 0
4226548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#endif
4227548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4228548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen/* path handling portability macros */
4229548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#ifndef DIR_SEPARATOR
4230548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define DIR_SEPARATOR '/'
4231548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define PATH_SEPARATOR ':'
4232548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#endif
4233548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4234548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
4235548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  defined (__OS2__)
4236548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define HAVE_DOS_BASED_FILE_SYSTEM
4237548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define FOPEN_WB "wb"
4238548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# ifndef DIR_SEPARATOR_2
4239548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#  define DIR_SEPARATOR_2 '\\'
4240548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# endif
4241548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# ifndef PATH_SEPARATOR_2
4242548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#  define PATH_SEPARATOR_2 ';'
4243548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# endif
4244548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#endif
4245548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4246548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#ifndef DIR_SEPARATOR_2
4247548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
4248548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#else /* DIR_SEPARATOR_2 */
4249548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define IS_DIR_SEPARATOR(ch) \
4250548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	(((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
4251548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#endif /* DIR_SEPARATOR_2 */
4252548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4253548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#ifndef PATH_SEPARATOR_2
4254548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
4255548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#else /* PATH_SEPARATOR_2 */
4256548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
4257548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#endif /* PATH_SEPARATOR_2 */
4258548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4259548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#ifndef FOPEN_WB
4260548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define FOPEN_WB "w"
4261548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#endif
4262548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#ifndef _O_BINARY
4263548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define _O_BINARY 0
4264548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#endif
4265548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4266548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
4267548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#define XFREE(stale) do { \
4268548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  if (stale) { free ((void *) stale); stale = 0; } \
4269548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} while (0)
4270548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4271548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#if defined(LT_DEBUGWRAPPER)
4272548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenstatic int lt_debug = 1;
4273548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#else
4274548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenstatic int lt_debug = 0;
4275548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#endif
4276548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4277548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenconst char *program_name = "libtool-wrapper"; /* in case xstrdup fails */
4278548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4279548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenvoid *xmalloc (size_t num);
4280548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenchar *xstrdup (const char *string);
4281548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenconst char *base_name (const char *name);
4282548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenchar *find_executable (const char *wrapper);
4283548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenchar *chase_symlinks (const char *pathspec);
4284548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenint make_executable (const char *path);
4285548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenint check_executable (const char *path);
4286548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenchar *strendzap (char *str, const char *pat);
4287548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenvoid lt_debugprintf (const char *file, int line, const char *fmt, ...);
4288548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenvoid lt_fatal (const char *file, int line, const char *message, ...);
4289548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenstatic const char *nonnull (const char *s);
4290548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenstatic const char *nonempty (const char *s);
4291548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenvoid lt_setenv (const char *name, const char *value);
4292548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenchar *lt_extend_str (const char *orig_value, const char *add, int to_end);
4293548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenvoid lt_update_exe_path (const char *name, const char *value);
4294548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenvoid lt_update_lib_path (const char *name, const char *value);
4295548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenchar **prepare_spawn (char **argv);
4296548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenvoid lt_dump_script (FILE *f);
4297548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenEOF
4298548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4299548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    cat <<EOF
4300548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenvolatile const char * MAGIC_EXE = "$magic_exe";
4301548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenconst char * LIB_PATH_VARNAME = "$shlibpath_var";
4302548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenEOF
4303548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4304548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
4305548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen              func_to_host_path "$temp_rpath"
4306548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      cat <<EOF
4307548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenconst char * LIB_PATH_VALUE   = "$func_to_host_path_result";
4308548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenEOF
4309548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    else
4310548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      cat <<"EOF"
4311548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenconst char * LIB_PATH_VALUE   = "";
4312548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenEOF
4313548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
4314548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4315548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if test -n "$dllsearchpath"; then
4316548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen              func_to_host_path "$dllsearchpath:"
4317548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      cat <<EOF
4318548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenconst char * EXE_PATH_VARNAME = "PATH";
4319548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenconst char * EXE_PATH_VALUE   = "$func_to_host_path_result";
4320548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenEOF
4321548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    else
4322548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      cat <<"EOF"
4323548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenconst char * EXE_PATH_VARNAME = "";
4324548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenconst char * EXE_PATH_VALUE   = "";
4325548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenEOF
4326548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
4327548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4328548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if test "$fast_install" = yes; then
4329548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      cat <<EOF
4330548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenconst char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
4331548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenEOF
4332548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    else
4333548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      cat <<EOF
4334548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenconst char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
4335548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenEOF
4336548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
4337548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4338548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4339548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    cat <<"EOF"
4340548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4341548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#define LTWRAPPER_OPTION_PREFIX         "--lt-"
4342548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4343548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenstatic const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
4344548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenstatic const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX "dump-script";
4345548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenstatic const char *debug_opt            = LTWRAPPER_OPTION_PREFIX "debug";
4346548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4347548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenint
4348548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenmain (int argc, char *argv[])
4349548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
4350548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  char **newargz;
4351548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  int  newargc;
4352548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  char *tmp_pathspec;
4353548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  char *actual_cwrapper_path;
4354548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  char *actual_cwrapper_name;
4355548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  char *target_name;
4356548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  char *lt_argv_zero;
4357548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  intptr_t rval = 127;
4358548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4359548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  int i;
4360548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4361548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  program_name = (char *) xstrdup (base_name (argv[0]));
4362548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  newargz = XMALLOC (char *, argc + 1);
4363548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4364548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  /* very simple arg parsing; don't want to rely on getopt
4365548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen   * also, copy all non cwrapper options to newargz, except
4366548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen   * argz[0], which is handled differently
4367548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen   */
4368548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  newargc=0;
4369548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  for (i = 1; i < argc; i++)
4370548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    {
4371548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if (strcmp (argv[i], dumpscript_opt) == 0)
4372548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	{
4373548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenEOF
4374548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    case "$host" in
4375548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      *mingw* | *cygwin* )
4376548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		# make stdout use "unix" line endings
4377548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		echo "          setmode(1,_O_BINARY);"
4378548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		;;
4379548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      esac
4380548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4381548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    cat <<"EOF"
4382548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  lt_dump_script (stdout);
4383548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  return 0;
4384548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	}
4385548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if (strcmp (argv[i], debug_opt) == 0)
4386548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	{
4387548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen          lt_debug = 1;
4388548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen          continue;
4389548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	}
4390548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if (strcmp (argv[i], ltwrapper_option_prefix) == 0)
4391548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        {
4392548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen          /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
4393548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen             namespace, but it is not one of the ones we know about and
4394548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen             have already dealt with, above (inluding dump-script), then
4395548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen             report an error. Otherwise, targets might begin to believe
4396548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen             they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
4397548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen             namespace. The first time any user complains about this, we'll
4398548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen             need to make LTWRAPPER_OPTION_PREFIX a configure-time option
4399548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen             or a configure.ac-settable value.
4400548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen           */
4401548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen          lt_fatal (__FILE__, __LINE__,
4402548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    "unrecognized %s option: '%s'",
4403548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen                    ltwrapper_option_prefix, argv[i]);
4404548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        }
4405548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      /* otherwise ... */
4406548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      newargz[++newargc] = xstrdup (argv[i]);
4407548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    }
4408548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  newargz[++newargc] = NULL;
4409548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4410548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenEOF
4411548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    cat <<EOF
4412548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  /* The GNU banner must be the first non-error debug message */
4413548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n");
4414548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenEOF
4415548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    cat <<"EOF"
4416548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]);
4417548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name);
4418548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4419548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  tmp_pathspec = find_executable (argv[0]);
4420548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  if (tmp_pathspec == NULL)
4421548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]);
4422548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  lt_debugprintf (__FILE__, __LINE__,
4423548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen                  "(main) found exe (before symlink chase) at: %s\n",
4424548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  tmp_pathspec);
4425548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4426548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  actual_cwrapper_path = chase_symlinks (tmp_pathspec);
4427548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  lt_debugprintf (__FILE__, __LINE__,
4428548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen                  "(main) found exe (after symlink chase) at: %s\n",
4429548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  actual_cwrapper_path);
4430548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  XFREE (tmp_pathspec);
4431548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4432548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path));
4433548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  strendzap (actual_cwrapper_path, actual_cwrapper_name);
4434548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4435548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  /* wrapper name transforms */
4436548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  strendzap (actual_cwrapper_name, ".exe");
4437548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
4438548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  XFREE (actual_cwrapper_name);
4439548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  actual_cwrapper_name = tmp_pathspec;
4440548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  tmp_pathspec = 0;
4441548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4442548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  /* target_name transforms -- use actual target program name; might have lt- prefix */
4443548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
4444548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  strendzap (target_name, ".exe");
4445548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
4446548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  XFREE (target_name);
4447548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  target_name = tmp_pathspec;
4448548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  tmp_pathspec = 0;
4449548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4450548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  lt_debugprintf (__FILE__, __LINE__,
4451548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  "(main) libtool target name: %s\n",
4452548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  target_name);
4453548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenEOF
4454548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4455548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    cat <<EOF
4456548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  newargz[0] =
4457548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    XMALLOC (char, (strlen (actual_cwrapper_path) +
4458548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
4459548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  strcpy (newargz[0], actual_cwrapper_path);
4460548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  strcat (newargz[0], "$objdir");
4461548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  strcat (newargz[0], "/");
4462548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenEOF
4463548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4464548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    cat <<"EOF"
4465548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  /* stop here, and copy so we don't have to do this twice */
4466548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  tmp_pathspec = xstrdup (newargz[0]);
4467548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4468548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
4469548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  strcat (newargz[0], actual_cwrapper_name);
4470548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4471548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  /* DO want the lt- prefix here if it exists, so use target_name */
4472548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
4473548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  XFREE (tmp_pathspec);
4474548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  tmp_pathspec = NULL;
4475548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenEOF
4476548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4477548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    case $host_os in
4478548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      mingw*)
4479548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    cat <<"EOF"
4480548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  {
4481548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    char* p;
4482548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    while ((p = strchr (newargz[0], '\\')) != NULL)
4483548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      {
4484548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	*p = '/';
4485548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      }
4486548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    while ((p = strchr (lt_argv_zero, '\\')) != NULL)
4487548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      {
4488548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	*p = '/';
4489548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      }
4490548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  }
4491548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenEOF
4492548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    ;;
4493548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    esac
4494548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4495548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    cat <<"EOF"
4496548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  XFREE (target_name);
4497548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  XFREE (actual_cwrapper_path);
4498548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  XFREE (actual_cwrapper_name);
4499548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4500548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
4501548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  lt_setenv ("DUALCASE", "1");  /* for MSK sh */
4502548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  /* Update the DLL searchpath.  EXE_PATH_VALUE ($dllsearchpath) must
4503548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen     be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath)
4504548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen     because on Windows, both *_VARNAMEs are PATH but uninstalled
4505548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen     libraries must come first. */
4506548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
4507548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
4508548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4509548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n",
4510548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  nonnull (lt_argv_zero));
4511548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  for (i = 0; i < newargc; i++)
4512548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    {
4513548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n",
4514548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		      i, nonnull (newargz[i]));
4515548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    }
4516548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4517548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenEOF
4518548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4519548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    case $host_os in
4520548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      mingw*)
4521548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		cat <<"EOF"
4522548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  /* execv doesn't actually work on mingw as expected on unix */
4523548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  newargz = prepare_spawn (newargz);
4524548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
4525548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  if (rval == -1)
4526548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    {
4527548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      /* failed to start process */
4528548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      lt_debugprintf (__FILE__, __LINE__,
4529548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		      "(main) failed to launch target \"%s\": %s\n",
4530548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		      lt_argv_zero, nonnull (strerror (errno)));
4531548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      return 127;
4532548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    }
4533548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  return rval;
4534548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenEOF
4535548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		;;
4536548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      *)
4537548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		cat <<"EOF"
4538548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  execv (lt_argv_zero, newargz);
4539548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  return rval; /* =127, but avoids unused variable warning */
4540548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenEOF
4541548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		;;
4542548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    esac
4543548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4544548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    cat <<"EOF"
4545548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
4546548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4547548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenvoid *
4548548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenxmalloc (size_t num)
4549548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
4550548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  void *p = (void *) malloc (num);
4551548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  if (!p)
4552548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    lt_fatal (__FILE__, __LINE__, "memory exhausted");
4553548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4554548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  return p;
4555548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
4556548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4557548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenchar *
4558548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenxstrdup (const char *string)
4559548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
4560548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
4561548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			  string) : NULL;
4562548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
4563548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4564548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenconst char *
4565548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenbase_name (const char *name)
4566548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
4567548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  const char *base;
4568548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4569548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
4570548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  /* Skip over the disk name in MSDOS pathnames. */
4571548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  if (isalpha ((unsigned char) name[0]) && name[1] == ':')
4572548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    name += 2;
4573548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#endif
4574548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4575548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  for (base = name; *name; name++)
4576548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    if (IS_DIR_SEPARATOR (*name))
4577548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      base = name + 1;
4578548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  return base;
4579548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
4580548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4581548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenint
4582548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissencheck_executable (const char *path)
4583548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
4584548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  struct stat st;
4585548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4586548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n",
4587548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen                  nonempty (path));
4588548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  if ((!path) || (!*path))
4589548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    return 0;
4590548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4591548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  if ((stat (path, &st) >= 0)
4592548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
4593548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    return 1;
4594548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  else
4595548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    return 0;
4596548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
4597548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4598548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenint
4599548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenmake_executable (const char *path)
4600548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
4601548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  int rval = 0;
4602548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  struct stat st;
4603548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4604548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n",
4605548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen                  nonempty (path));
4606548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  if ((!path) || (!*path))
4607548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    return 0;
4608548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4609548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  if (stat (path, &st) >= 0)
4610548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    {
4611548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
4612548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    }
4613548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  return rval;
4614548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
4615548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4616548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen/* Searches for the full path of the wrapper.  Returns
4617548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen   newly allocated full path name if found, NULL otherwise
4618548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen   Does not chase symlinks, even on platforms that support them.
4619548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen*/
4620548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenchar *
4621548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfind_executable (const char *wrapper)
4622548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
4623548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  int has_slash = 0;
4624548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  const char *p;
4625548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  const char *p_next;
4626548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  /* static buffer for getcwd */
4627548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  char tmp[LT_PATHMAX + 1];
4628548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  int tmp_len;
4629548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  char *concat_name;
4630548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4631548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n",
4632548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen                  nonempty (wrapper));
4633548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4634548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  if ((wrapper == NULL) || (*wrapper == '\0'))
4635548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    return NULL;
4636548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4637548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  /* Absolute path? */
4638548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
4639548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
4640548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    {
4641548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      concat_name = xstrdup (wrapper);
4642548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if (check_executable (concat_name))
4643548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	return concat_name;
4644548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      XFREE (concat_name);
4645548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    }
4646548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  else
4647548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    {
4648548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#endif
4649548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if (IS_DIR_SEPARATOR (wrapper[0]))
4650548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	{
4651548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  concat_name = xstrdup (wrapper);
4652548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if (check_executable (concat_name))
4653548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    return concat_name;
4654548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  XFREE (concat_name);
4655548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	}
4656548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
4657548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    }
4658548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#endif
4659548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4660548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  for (p = wrapper; *p; p++)
4661548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    if (*p == '/')
4662548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      {
4663548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	has_slash = 1;
4664548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	break;
4665548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      }
4666548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  if (!has_slash)
4667548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    {
4668548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      /* no slashes; search PATH */
4669548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      const char *path = getenv ("PATH");
4670548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if (path != NULL)
4671548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	{
4672548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  for (p = path; *p; p = p_next)
4673548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    {
4674548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      const char *q;
4675548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      size_t p_len;
4676548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      for (q = p; *q; q++)
4677548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		if (IS_PATH_SEPARATOR (*q))
4678548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  break;
4679548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      p_len = q - p;
4680548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      p_next = (*q == '\0' ? q : q + 1);
4681548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      if (p_len == 0)
4682548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		{
4683548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  /* empty path: current directory */
4684548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  if (getcwd (tmp, LT_PATHMAX) == NULL)
4685548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
4686548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen                              nonnull (strerror (errno)));
4687548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  tmp_len = strlen (tmp);
4688548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  concat_name =
4689548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
4690548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  memcpy (concat_name, tmp, tmp_len);
4691548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  concat_name[tmp_len] = '/';
4692548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  strcpy (concat_name + tmp_len + 1, wrapper);
4693548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		}
4694548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      else
4695548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		{
4696548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  concat_name =
4697548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
4698548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  memcpy (concat_name, p, p_len);
4699548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  concat_name[p_len] = '/';
4700548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  strcpy (concat_name + p_len + 1, wrapper);
4701548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		}
4702548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      if (check_executable (concat_name))
4703548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		return concat_name;
4704548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      XFREE (concat_name);
4705548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    }
4706548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	}
4707548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      /* not found in PATH; assume curdir */
4708548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    }
4709548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  /* Relative path | not found in path: prepend cwd */
4710548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  if (getcwd (tmp, LT_PATHMAX) == NULL)
4711548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
4712548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen              nonnull (strerror (errno)));
4713548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  tmp_len = strlen (tmp);
4714548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
4715548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  memcpy (concat_name, tmp, tmp_len);
4716548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  concat_name[tmp_len] = '/';
4717548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  strcpy (concat_name + tmp_len + 1, wrapper);
4718548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4719548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  if (check_executable (concat_name))
4720548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    return concat_name;
4721548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  XFREE (concat_name);
4722548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  return NULL;
4723548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
4724548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4725548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenchar *
4726548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenchase_symlinks (const char *pathspec)
4727548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
4728548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#ifndef S_ISLNK
4729548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  return xstrdup (pathspec);
4730548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#else
4731548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  char buf[LT_PATHMAX];
4732548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  struct stat s;
4733548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  char *tmp_pathspec = xstrdup (pathspec);
4734548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  char *p;
4735548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  int has_symlinks = 0;
4736548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  while (strlen (tmp_pathspec) && !has_symlinks)
4737548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    {
4738548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      lt_debugprintf (__FILE__, __LINE__,
4739548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		      "checking path component for symlinks: %s\n",
4740548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		      tmp_pathspec);
4741548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if (lstat (tmp_pathspec, &s) == 0)
4742548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	{
4743548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if (S_ISLNK (s.st_mode) != 0)
4744548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    {
4745548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      has_symlinks = 1;
4746548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      break;
4747548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    }
4748548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4749548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  /* search backwards for last DIR_SEPARATOR */
4750548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  p = tmp_pathspec + strlen (tmp_pathspec) - 1;
4751548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
4752548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    p--;
4753548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
4754548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    {
4755548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      /* no more DIR_SEPARATORS left */
4756548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      break;
4757548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    }
4758548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *p = '\0';
4759548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	}
4760548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      else
4761548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	{
4762548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  lt_fatal (__FILE__, __LINE__,
4763548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    "error accessing file \"%s\": %s",
4764548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    tmp_pathspec, nonnull (strerror (errno)));
4765548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	}
4766548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    }
4767548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  XFREE (tmp_pathspec);
4768548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4769548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  if (!has_symlinks)
4770548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    {
4771548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      return xstrdup (pathspec);
4772548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    }
4773548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4774548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  tmp_pathspec = realpath (pathspec, buf);
4775548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  if (tmp_pathspec == 0)
4776548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    {
4777548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      lt_fatal (__FILE__, __LINE__,
4778548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		"could not follow symlinks for %s", pathspec);
4779548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    }
4780548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  return xstrdup (tmp_pathspec);
4781548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#endif
4782548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
4783548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4784548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenchar *
4785548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenstrendzap (char *str, const char *pat)
4786548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
4787548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  size_t len, patlen;
4788548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4789548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  assert (str != NULL);
4790548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  assert (pat != NULL);
4791548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4792548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  len = strlen (str);
4793548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  patlen = strlen (pat);
4794548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4795548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  if (patlen <= len)
4796548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    {
4797548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      str += len - patlen;
4798548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if (strcmp (str, pat) == 0)
4799548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	*str = '\0';
4800548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    }
4801548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  return str;
4802548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
4803548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4804548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenvoid
4805548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenlt_debugprintf (const char *file, int line, const char *fmt, ...)
4806548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
4807548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  va_list args;
4808548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  if (lt_debug)
4809548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    {
4810548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line);
4811548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      va_start (args, fmt);
4812548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      (void) vfprintf (stderr, fmt, args);
4813548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      va_end (args);
4814548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    }
4815548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
4816548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4817548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenstatic void
4818548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenlt_error_core (int exit_status, const char *file,
4819548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	       int line, const char *mode,
4820548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	       const char *message, va_list ap)
4821548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
4822548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode);
4823548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  vfprintf (stderr, message, ap);
4824548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  fprintf (stderr, ".\n");
4825548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4826548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  if (exit_status >= 0)
4827548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    exit (exit_status);
4828548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
4829548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4830548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenvoid
4831548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenlt_fatal (const char *file, int line, const char *message, ...)
4832548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
4833548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  va_list ap;
4834548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  va_start (ap, message);
4835548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap);
4836548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  va_end (ap);
4837548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
4838548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4839548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenstatic const char *
4840548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissennonnull (const char *s)
4841548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
4842548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  return s ? s : "(null)";
4843548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
4844548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4845548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenstatic const char *
4846548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissennonempty (const char *s)
4847548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
4848548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  return (s && !*s) ? "(empty)" : nonnull (s);
4849548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
4850548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4851548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenvoid
4852548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenlt_setenv (const char *name, const char *value)
4853548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
4854548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  lt_debugprintf (__FILE__, __LINE__,
4855548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  "(lt_setenv) setting '%s' to '%s'\n",
4856548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen                  nonnull (name), nonnull (value));
4857548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  {
4858548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#ifdef HAVE_SETENV
4859548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    /* always make a copy, for consistency with !HAVE_SETENV */
4860548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    char *str = xstrdup (value);
4861548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    setenv (name, str, 1);
4862548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#else
4863548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    int len = strlen (name) + 1 + strlen (value) + 1;
4864548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    char *str = XMALLOC (char, len);
4865548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    sprintf (str, "%s=%s", name, value);
4866548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    if (putenv (str) != EXIT_SUCCESS)
4867548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      {
4868548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        XFREE (str);
4869548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      }
4870548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#endif
4871548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  }
4872548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
4873548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4874548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenchar *
4875548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenlt_extend_str (const char *orig_value, const char *add, int to_end)
4876548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
4877548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  char *new_value;
4878548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  if (orig_value && *orig_value)
4879548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    {
4880548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      int orig_value_len = strlen (orig_value);
4881548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      int add_len = strlen (add);
4882548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      new_value = XMALLOC (char, add_len + orig_value_len + 1);
4883548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if (to_end)
4884548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        {
4885548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen          strcpy (new_value, orig_value);
4886548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen          strcpy (new_value + orig_value_len, add);
4887548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        }
4888548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      else
4889548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        {
4890548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen          strcpy (new_value, add);
4891548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen          strcpy (new_value + add_len, orig_value);
4892548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        }
4893548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    }
4894548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  else
4895548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    {
4896548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      new_value = xstrdup (add);
4897548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    }
4898548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  return new_value;
4899548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
4900548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4901548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenvoid
4902548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenlt_update_exe_path (const char *name, const char *value)
4903548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
4904548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  lt_debugprintf (__FILE__, __LINE__,
4905548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  "(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
4906548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen                  nonnull (name), nonnull (value));
4907548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4908548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  if (name && *name && value && *value)
4909548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    {
4910548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      char *new_value = lt_extend_str (getenv (name), value, 0);
4911548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      /* some systems can't cope with a ':'-terminated path #' */
4912548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      int len = strlen (new_value);
4913548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
4914548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        {
4915548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen          new_value[len-1] = '\0';
4916548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        }
4917548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      lt_setenv (name, new_value);
4918548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      XFREE (new_value);
4919548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    }
4920548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
4921548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4922548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenvoid
4923548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenlt_update_lib_path (const char *name, const char *value)
4924548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
4925548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  lt_debugprintf (__FILE__, __LINE__,
4926548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  "(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
4927548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen                  nonnull (name), nonnull (value));
4928548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4929548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  if (name && *name && value && *value)
4930548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    {
4931548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      char *new_value = lt_extend_str (getenv (name), value, 0);
4932548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      lt_setenv (name, new_value);
4933548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      XFREE (new_value);
4934548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    }
4935548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
4936548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4937548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenEOF
4938548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    case $host_os in
4939548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      mingw*)
4940548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		cat <<"EOF"
4941548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4942548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen/* Prepares an argument vector before calling spawn().
4943548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen   Note that spawn() does not by itself call the command interpreter
4944548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen     (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") :
4945548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
4946548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen         GetVersionEx(&v);
4947548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen         v.dwPlatformId == VER_PLATFORM_WIN32_NT;
4948548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      }) ? "cmd.exe" : "command.com").
4949548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen   Instead it simply concatenates the arguments, separated by ' ', and calls
4950548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen   CreateProcess().  We must quote the arguments since Win32 CreateProcess()
4951548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen   interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a
4952548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen   special way:
4953548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen   - Space and tab are interpreted as delimiters. They are not treated as
4954548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen     delimiters if they are surrounded by double quotes: "...".
4955548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen   - Unescaped double quotes are removed from the input. Their only effect is
4956548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen     that within double quotes, space and tab are treated like normal
4957548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen     characters.
4958548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen   - Backslashes not followed by double quotes are not special.
4959548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen   - But 2*n+1 backslashes followed by a double quote become
4960548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen     n backslashes followed by a double quote (n >= 0):
4961548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen       \" -> "
4962548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen       \\\" -> \"
4963548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen       \\\\\" -> \\"
4964548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen */
4965548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
4966548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
4967548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenchar **
4968548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenprepare_spawn (char **argv)
4969548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
4970548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  size_t argc;
4971548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  char **new_argv;
4972548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  size_t i;
4973548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4974548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  /* Count number of arguments.  */
4975548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  for (argc = 0; argv[argc] != NULL; argc++)
4976548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    ;
4977548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4978548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  /* Allocate new argument vector.  */
4979548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  new_argv = XMALLOC (char *, argc + 1);
4980548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4981548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  /* Put quoted arguments into the new argument vector.  */
4982548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  for (i = 0; i < argc; i++)
4983548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    {
4984548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      const char *string = argv[i];
4985548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4986548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if (string[0] == '\0')
4987548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	new_argv[i] = xstrdup ("\"\"");
4988548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL)
4989548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	{
4990548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL);
4991548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  size_t length;
4992548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  unsigned int backslashes;
4993548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  const char *s;
4994548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  char *quoted_string;
4995548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  char *p;
4996548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
4997548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  length = 0;
4998548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  backslashes = 0;
4999548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if (quote_around)
5000548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    length++;
5001548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  for (s = string; *s != '\0'; s++)
5002548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    {
5003548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      char c = *s;
5004548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      if (c == '"')
5005548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		length += backslashes + 1;
5006548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      length++;
5007548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      if (c == '\\')
5008548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		backslashes++;
5009548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      else
5010548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		backslashes = 0;
5011548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    }
5012548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if (quote_around)
5013548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    length += backslashes + 1;
5014548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5015548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  quoted_string = XMALLOC (char, length + 1);
5016548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5017548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  p = quoted_string;
5018548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  backslashes = 0;
5019548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if (quote_around)
5020548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    *p++ = '"';
5021548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  for (s = string; *s != '\0'; s++)
5022548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    {
5023548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      char c = *s;
5024548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      if (c == '"')
5025548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		{
5026548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  unsigned int j;
5027548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  for (j = backslashes + 1; j > 0; j--)
5028548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    *p++ = '\\';
5029548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		}
5030548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      *p++ = c;
5031548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      if (c == '\\')
5032548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		backslashes++;
5033548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      else
5034548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		backslashes = 0;
5035548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    }
5036548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if (quote_around)
5037548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    {
5038548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      unsigned int j;
5039548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      for (j = backslashes; j > 0; j--)
5040548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		*p++ = '\\';
5041548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      *p++ = '"';
5042548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    }
5043548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *p = '\0';
5044548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5045548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  new_argv[i] = quoted_string;
5046548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	}
5047548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      else
5048548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	new_argv[i] = (char *) string;
5049548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    }
5050548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  new_argv[argc] = NULL;
5051548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5052548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  return new_argv;
5053548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
5054548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenEOF
5055548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		;;
5056548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    esac
5057548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5058548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen            cat <<"EOF"
5059548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenvoid lt_dump_script (FILE* f)
5060548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
5061548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenEOF
5062548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_emit_wrapper yes |
5063548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen              $SED -e 's/\([\\"]\)/\\\1/g' \
5064548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	           -e 's/^/  fputs ("/' -e 's/$/\\n", f);/'
5065548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5066548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen            cat <<"EOF"
5067548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
5068548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenEOF
5069548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
5070548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# end: func_emit_cwrapperexe_src
5071548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5072548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_win32_import_lib_p ARG
5073548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# True if ARG is an import lib, as indicated by $file_magic_cmd
5074548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_win32_import_lib_p ()
5075548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
5076548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    $opt_debug
5077548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in
5078548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    *import*) : ;;
5079548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    *) false ;;
5080548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    esac
5081548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
5082548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5083548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_mode_link arg...
5084548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_mode_link ()
5085548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
5086548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    $opt_debug
5087548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    case $host in
5088548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
5089548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # It is impossible to link a dll without this setting, and
5090548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # we shouldn't force the makefile maintainer to figure out
5091548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # which system we are compiling for in order to pass an extra
5092548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # flag for every libtool invocation.
5093548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # allow_undefined=no
5094548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5095548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # FIXME: Unfortunately, there are problems with the above when trying
5096548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # to make a dll which has undefined symbols, in which case not
5097548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # even a static library is built.  For now, we need to specify
5098548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # -no-undefined on the libtool link line when we can be certain
5099548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # that all symbols are satisfied, otherwise we get a static library.
5100548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      allow_undefined=yes
5101548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      ;;
5102548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    *)
5103548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      allow_undefined=yes
5104548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      ;;
5105548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    esac
5106548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    libtool_args=$nonopt
5107548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    base_compile="$nonopt $@"
5108548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    compile_command=$nonopt
5109548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    finalize_command=$nonopt
5110548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5111548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    compile_rpath=
5112548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    finalize_rpath=
5113548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    compile_shlibpath=
5114548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    finalize_shlibpath=
5115548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    convenience=
5116548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    old_convenience=
5117548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    deplibs=
5118548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    old_deplibs=
5119548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    compiler_flags=
5120548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    linker_flags=
5121548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    dllsearchpath=
5122548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    lib_search_path=`pwd`
5123548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    inst_prefix_dir=
5124548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    new_inherited_linker_flags=
5125548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5126548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    avoid_version=no
5127548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    bindir=
5128548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    dlfiles=
5129548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    dlprefiles=
5130548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    dlself=no
5131548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    export_dynamic=no
5132548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    export_symbols=
5133548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    export_symbols_regex=
5134548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    generated=
5135548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    libobjs=
5136548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    ltlibs=
5137548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    module=no
5138548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    no_install=no
5139548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    objs=
5140548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    non_pic_objects=
5141548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    precious_files_regex=
5142548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    prefer_static_libs=no
5143548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    preload=no
5144548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    prev=
5145548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    prevarg=
5146548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    release=
5147548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    rpath=
5148548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    xrpath=
5149548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    perm_rpath=
5150548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    temp_rpath=
5151548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    thread_safe=no
5152548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    vinfo=
5153548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    vinfo_number=no
5154548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    weak_libs=
5155548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    single_module="${wl}-single_module"
5156548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_infer_tag $base_compile
5157548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5158548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # We need to know -static, to get the right output filenames.
5159548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    for arg
5160548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    do
5161548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      case $arg in
5162548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      -shared)
5163548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	test "$build_libtool_libs" != yes && \
5164548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_fatal_configuration "can not build a shared library"
5165548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	build_old_libs=no
5166548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	break
5167548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
5168548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      -all-static | -static | -static-libtool-libs)
5169548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	case $arg in
5170548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	-all-static)
5171548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
5172548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_warning "complete static linking is impossible in this configuration"
5173548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
5174548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test -n "$link_static_flag"; then
5175548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    dlopen_self=$dlopen_self_static
5176548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
5177548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  prefer_static_libs=yes
5178548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
5179548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	-static)
5180548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
5181548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    dlopen_self=$dlopen_self_static
5182548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
5183548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  prefer_static_libs=built
5184548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
5185548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	-static-libtool-libs)
5186548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
5187548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    dlopen_self=$dlopen_self_static
5188548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
5189548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  prefer_static_libs=yes
5190548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
5191548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	esac
5192548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	build_libtool_libs=no
5193548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	build_old_libs=yes
5194548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	break
5195548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
5196548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      esac
5197548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    done
5198548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5199548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # See if our shared archives depend on static archives.
5200548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
5201548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5202548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # Go through the arguments, transforming them on the way.
5203548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    while test "$#" -gt 0; do
5204548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      arg="$1"
5205548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      shift
5206548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_quote_for_eval "$arg"
5207548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      qarg=$func_quote_for_eval_unquoted_result
5208548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_append libtool_args " $func_quote_for_eval_result"
5209548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5210548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # If the previous option needs an argument, assign it.
5211548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test -n "$prev"; then
5212548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	case $prev in
5213548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	output)
5214548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_append compile_command " @OUTPUT@"
5215548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_append finalize_command " @OUTPUT@"
5216548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
5217548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	esac
5218548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5219548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	case $prev in
5220548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	bindir)
5221548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  bindir="$arg"
5222548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  prev=
5223548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  continue
5224548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
5225548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	dlfiles|dlprefiles)
5226548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test "$preload" = no; then
5227548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # Add the symbol object into the linking commands.
5228548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_append compile_command " @SYMFILE@"
5229548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_append finalize_command " @SYMFILE@"
5230548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    preload=yes
5231548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
5232548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  case $arg in
5233548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *.la | *.lo) ;;  # We handle these cases below.
5234548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  force)
5235548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if test "$dlself" = no; then
5236548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      dlself=needless
5237548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      export_dynamic=yes
5238548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
5239548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    prev=
5240548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    continue
5241548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    ;;
5242548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  self)
5243548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if test "$prev" = dlprefiles; then
5244548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      dlself=yes
5245548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
5246548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      dlself=yes
5247548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    else
5248548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      dlself=needless
5249548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      export_dynamic=yes
5250548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
5251548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    prev=
5252548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    continue
5253548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    ;;
5254548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *)
5255548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if test "$prev" = dlfiles; then
5256548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      func_append dlfiles " $arg"
5257548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    else
5258548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      func_append dlprefiles " $arg"
5259548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
5260548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    prev=
5261548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    continue
5262548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    ;;
5263548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  esac
5264548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
5265548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	expsyms)
5266548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  export_symbols="$arg"
5267548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  test -f "$arg" \
5268548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    || func_fatal_error "symbol file \`$arg' does not exist"
5269548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  prev=
5270548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  continue
5271548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
5272548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	expsyms_regex)
5273548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  export_symbols_regex="$arg"
5274548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  prev=
5275548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  continue
5276548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
5277548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	framework)
5278548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  case $host in
5279548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    *-*-darwin*)
5280548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      case "$deplibs " in
5281548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		*" $qarg.ltframework "*) ;;
5282548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		*) func_append deplibs " $qarg.ltframework" # this is fixed later
5283548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		   ;;
5284548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      esac
5285548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      ;;
5286548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  esac
5287548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  prev=
5288548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  continue
5289548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
5290548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	inst_prefix)
5291548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  inst_prefix_dir="$arg"
5292548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  prev=
5293548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  continue
5294548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
5295548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	objectlist)
5296548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test -f "$arg"; then
5297548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    save_arg=$arg
5298548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    moreargs=
5299548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    for fil in `cat "$save_arg"`
5300548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    do
5301548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#	      func_append moreargs " $fil"
5302548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      arg=$fil
5303548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # A libtool-controlled object.
5304548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5305548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # Check to see that this really is a libtool object.
5306548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      if func_lalib_unsafe_p "$arg"; then
5307548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		pic_object=
5308548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		non_pic_object=
5309548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5310548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		# Read the .lo file
5311548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		func_source "$arg"
5312548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5313548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		if test -z "$pic_object" ||
5314548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		   test -z "$non_pic_object" ||
5315548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		   test "$pic_object" = none &&
5316548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		   test "$non_pic_object" = none; then
5317548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  func_fatal_error "cannot find name of object for \`$arg'"
5318548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		fi
5319548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5320548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		# Extract subdirectory from the argument.
5321548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		func_dirname "$arg" "/" ""
5322548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		xdir="$func_dirname_result"
5323548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5324548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		if test "$pic_object" != none; then
5325548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  # Prepend the subdirectory the object is found in.
5326548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  pic_object="$xdir$pic_object"
5327548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5328548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  if test "$prev" = dlfiles; then
5329548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
5330548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		      func_append dlfiles " $pic_object"
5331548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		      prev=
5332548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		      continue
5333548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    else
5334548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		      # If libtool objects are unsupported, then we need to preload.
5335548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		      prev=dlprefiles
5336548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    fi
5337548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  fi
5338548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5339548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  # CHECK ME:  I think I busted this.  -Ossama
5340548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  if test "$prev" = dlprefiles; then
5341548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    # Preload the old-style object.
5342548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    func_append dlprefiles " $pic_object"
5343548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    prev=
5344548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  fi
5345548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5346548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  # A PIC object.
5347548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  func_append libobjs " $pic_object"
5348548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  arg="$pic_object"
5349548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		fi
5350548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5351548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		# Non-PIC object.
5352548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		if test "$non_pic_object" != none; then
5353548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  # Prepend the subdirectory the object is found in.
5354548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  non_pic_object="$xdir$non_pic_object"
5355548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5356548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  # A standard non-PIC object
5357548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  func_append non_pic_objects " $non_pic_object"
5358548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  if test -z "$pic_object" || test "$pic_object" = none ; then
5359548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    arg="$non_pic_object"
5360548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  fi
5361548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		else
5362548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  # If the PIC object exists, use it instead.
5363548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  # $xdir was prepended to $pic_object above.
5364548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  non_pic_object="$pic_object"
5365548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  func_append non_pic_objects " $non_pic_object"
5366548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		fi
5367548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      else
5368548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		# Only an error if not doing a dry-run.
5369548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		if $opt_dry_run; then
5370548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  # Extract subdirectory from the argument.
5371548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  func_dirname "$arg" "/" ""
5372548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  xdir="$func_dirname_result"
5373548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5374548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  func_lo2o "$arg"
5375548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  pic_object=$xdir$objdir/$func_lo2o_result
5376548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  non_pic_object=$xdir$func_lo2o_result
5377548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  func_append libobjs " $pic_object"
5378548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  func_append non_pic_objects " $non_pic_object"
5379548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	        else
5380548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  func_fatal_error "\`$arg' is not a valid libtool object"
5381548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		fi
5382548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      fi
5383548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    done
5384548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  else
5385548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_fatal_error "link input file \`$arg' does not exist"
5386548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
5387548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  arg=$save_arg
5388548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  prev=
5389548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  continue
5390548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
5391548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	precious_regex)
5392548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  precious_files_regex="$arg"
5393548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  prev=
5394548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  continue
5395548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
5396548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	release)
5397548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  release="-$arg"
5398548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  prev=
5399548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  continue
5400548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
5401548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	rpath | xrpath)
5402548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # We need an absolute path.
5403548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  case $arg in
5404548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  [\\/]* | [A-Za-z]:[\\/]*) ;;
5405548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *)
5406548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_fatal_error "only absolute run-paths are allowed"
5407548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    ;;
5408548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  esac
5409548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test "$prev" = rpath; then
5410548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    case "$rpath " in
5411548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    *" $arg "*) ;;
5412548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    *) func_append rpath " $arg" ;;
5413548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    esac
5414548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  else
5415548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    case "$xrpath " in
5416548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    *" $arg "*) ;;
5417548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    *) func_append xrpath " $arg" ;;
5418548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    esac
5419548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
5420548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  prev=
5421548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  continue
5422548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
5423548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	shrext)
5424548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  shrext_cmds="$arg"
5425548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  prev=
5426548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  continue
5427548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
5428548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	weak)
5429548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_append weak_libs " $arg"
5430548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  prev=
5431548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  continue
5432548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
5433548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	xcclinker)
5434548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_append linker_flags " $qarg"
5435548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_append compiler_flags " $qarg"
5436548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  prev=
5437548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_append compile_command " $qarg"
5438548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_append finalize_command " $qarg"
5439548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  continue
5440548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
5441548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	xcompiler)
5442548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_append compiler_flags " $qarg"
5443548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  prev=
5444548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_append compile_command " $qarg"
5445548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_append finalize_command " $qarg"
5446548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  continue
5447548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
5448548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	xlinker)
5449548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_append linker_flags " $qarg"
5450548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_append compiler_flags " $wl$qarg"
5451548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  prev=
5452548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_append compile_command " $wl$qarg"
5453548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_append finalize_command " $wl$qarg"
5454548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  continue
5455548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
5456548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	*)
5457548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  eval "$prev=\"\$arg\""
5458548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  prev=
5459548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  continue
5460548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
5461548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	esac
5462548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi # test -n "$prev"
5463548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5464548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      prevarg="$arg"
5465548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5466548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      case $arg in
5467548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      -all-static)
5468548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test -n "$link_static_flag"; then
5469548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # See comment for -static flag below, for more details.
5470548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_append compile_command " $link_static_flag"
5471548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_append finalize_command " $link_static_flag"
5472548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
5473548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	continue
5474548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
5475548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5476548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      -allow-undefined)
5477548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# FIXME: remove this flag sometime in the future.
5478548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_fatal_error "\`-allow-undefined' must not be used because it is the default"
5479548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
5480548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5481548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      -avoid-version)
5482548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	avoid_version=yes
5483548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	continue
5484548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
5485548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5486548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      -bindir)
5487548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	prev=bindir
5488548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	continue
5489548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
5490548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5491548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      -dlopen)
5492548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	prev=dlfiles
5493548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	continue
5494548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
5495548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5496548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      -dlpreopen)
5497548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	prev=dlprefiles
5498548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	continue
5499548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
5500548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5501548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      -export-dynamic)
5502548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	export_dynamic=yes
5503548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	continue
5504548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
5505548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5506548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      -export-symbols | -export-symbols-regex)
5507548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
5508548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_fatal_error "more than one -exported-symbols argument is not allowed"
5509548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
5510548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test "X$arg" = "X-export-symbols"; then
5511548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  prev=expsyms
5512548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	else
5513548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  prev=expsyms_regex
5514548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
5515548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	continue
5516548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
5517548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5518548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      -framework)
5519548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	prev=framework
5520548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	continue
5521548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
5522548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5523548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      -inst-prefix-dir)
5524548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	prev=inst_prefix
5525548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	continue
5526548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
5527548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5528548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
5529548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # so, if we see these flags be careful not to treat them like -L
5530548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      -L[A-Z][A-Z]*:*)
5531548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	case $with_gcc/$host in
5532548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	no/*-*-irix* | /*-*-irix*)
5533548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_append compile_command " $arg"
5534548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_append finalize_command " $arg"
5535548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
5536548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	esac
5537548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	continue
5538548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
5539548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5540548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      -L*)
5541548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_stripname "-L" '' "$arg"
5542548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test -z "$func_stripname_result"; then
5543548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test "$#" -gt 0; then
5544548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_fatal_error "require no space between \`-L' and \`$1'"
5545548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  else
5546548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_fatal_error "need path for \`-L' option"
5547548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
5548548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
5549548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_resolve_sysroot "$func_stripname_result"
5550548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	dir=$func_resolve_sysroot_result
5551548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# We need an absolute path.
5552548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	case $dir in
5553548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	[\\/]* | [A-Za-z]:[\\/]*) ;;
5554548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	*)
5555548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  absdir=`cd "$dir" && pwd`
5556548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  test -z "$absdir" && \
5557548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_fatal_error "cannot determine absolute directory name of \`$dir'"
5558548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  dir="$absdir"
5559548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
5560548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	esac
5561548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	case "$deplibs " in
5562548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	*" -L$dir "* | *" $arg "*)
5563548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # Will only happen for absolute or sysroot arguments
5564548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
5565548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	*)
5566548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # Preserve sysroot, but never include relative directories
5567548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  case $dir in
5568548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;;
5569548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    *) func_append deplibs " -L$dir" ;;
5570548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  esac
5571548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_append lib_search_path " $dir"
5572548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
5573548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	esac
5574548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	case $host in
5575548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
5576548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'`
5577548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  case :$dllsearchpath: in
5578548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *":$dir:"*) ;;
5579548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ::) dllsearchpath=$dir;;
5580548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *) func_append dllsearchpath ":$dir";;
5581548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  esac
5582548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  case :$dllsearchpath: in
5583548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *":$testbindir:"*) ;;
5584548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ::) dllsearchpath=$testbindir;;
5585548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *) func_append dllsearchpath ":$testbindir";;
5586548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  esac
5587548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
5588548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	esac
5589548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	continue
5590548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
5591548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5592548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      -l*)
5593548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
5594548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  case $host in
5595548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*)
5596548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # These systems don't actually have a C or math library (as such)
5597548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    continue
5598548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    ;;
5599548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *-*-os2*)
5600548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # These systems don't actually have a C library (as such)
5601548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    test "X$arg" = "X-lc" && continue
5602548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    ;;
5603548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
5604548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # Do not include libc due to us having libc/libc_r.
5605548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    test "X$arg" = "X-lc" && continue
5606548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    ;;
5607548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *-*-rhapsody* | *-*-darwin1.[012])
5608548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # Rhapsody C and math libraries are in the System framework
5609548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_append deplibs " System.ltframework"
5610548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    continue
5611548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    ;;
5612548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *-*-sco3.2v5* | *-*-sco5v6*)
5613548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # Causes problems with __ctype
5614548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    test "X$arg" = "X-lc" && continue
5615548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    ;;
5616548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
5617548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # Compiler inserts libc in the correct place for threads to work
5618548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    test "X$arg" = "X-lc" && continue
5619548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    ;;
5620548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  esac
5621548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	elif test "X$arg" = "X-lc_r"; then
5622548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	 case $host in
5623548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
5624548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	   # Do not include libc_r directly, use -pthread flag.
5625548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	   continue
5626548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	   ;;
5627548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	 esac
5628548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
5629548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_append deplibs " $arg"
5630548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	continue
5631548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
5632548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5633548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      -module)
5634548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	module=yes
5635548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	continue
5636548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
5637548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5638548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Tru64 UNIX uses -model [arg] to determine the layout of C++
5639548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # classes, name mangling, and exception handling.
5640548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Darwin uses the -arch flag to determine output architecture.
5641548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      -model|-arch|-isysroot|--sysroot)
5642548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_append compiler_flags " $arg"
5643548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_append compile_command " $arg"
5644548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_append finalize_command " $arg"
5645548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	prev=xcompiler
5646548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	continue
5647548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
5648548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5649548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
5650548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_append compiler_flags " $arg"
5651548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_append compile_command " $arg"
5652548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_append finalize_command " $arg"
5653548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	case "$new_inherited_linker_flags " in
5654548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    *" $arg "*) ;;
5655548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    * ) func_append new_inherited_linker_flags " $arg" ;;
5656548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	esac
5657548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	continue
5658548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
5659548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5660548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      -multi_module)
5661548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	single_module="${wl}-multi_module"
5662548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	continue
5663548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
5664548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5665548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      -no-fast-install)
5666548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fast_install=no
5667548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	continue
5668548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
5669548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5670548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      -no-install)
5671548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	case $host in
5672548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
5673548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # The PATH hackery in wrapper scripts is required on Windows
5674548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # and Darwin in order for the loader to find any dlls it needs.
5675548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_warning "\`-no-install' is ignored for $host"
5676548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_warning "assuming \`-no-fast-install' instead"
5677548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fast_install=no
5678548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
5679548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	*) no_install=yes ;;
5680548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	esac
5681548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	continue
5682548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
5683548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5684548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      -no-undefined)
5685548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	allow_undefined=no
5686548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	continue
5687548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
5688548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5689548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      -objectlist)
5690548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	prev=objectlist
5691548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	continue
5692548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
5693548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5694548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      -o) prev=output ;;
5695548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5696548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      -precious-files-regex)
5697548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	prev=precious_regex
5698548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	continue
5699548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
5700548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5701548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      -release)
5702548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	prev=release
5703548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	continue
5704548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
5705548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5706548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      -rpath)
5707548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	prev=rpath
5708548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	continue
5709548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
5710548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5711548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      -R)
5712548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	prev=xrpath
5713548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	continue
5714548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
5715548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5716548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      -R*)
5717548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_stripname '-R' '' "$arg"
5718548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	dir=$func_stripname_result
5719548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# We need an absolute path.
5720548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	case $dir in
5721548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	[\\/]* | [A-Za-z]:[\\/]*) ;;
5722548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	=*)
5723548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_stripname '=' '' "$dir"
5724548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  dir=$lt_sysroot$func_stripname_result
5725548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
5726548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	*)
5727548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_fatal_error "only absolute run-paths are allowed"
5728548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
5729548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	esac
5730548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	case "$xrpath " in
5731548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	*" $dir "*) ;;
5732548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	*) func_append xrpath " $dir" ;;
5733548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	esac
5734548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	continue
5735548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
5736548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5737548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      -shared)
5738548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# The effects of -shared are defined in a previous loop.
5739548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	continue
5740548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
5741548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5742548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      -shrext)
5743548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	prev=shrext
5744548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	continue
5745548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
5746548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5747548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      -static | -static-libtool-libs)
5748548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# The effects of -static are defined in a previous loop.
5749548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# We used to do the same as -all-static on platforms that
5750548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# didn't have a PIC flag, but the assumption that the effects
5751548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# would be equivalent was wrong.  It would break on at least
5752548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Digital Unix and AIX.
5753548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	continue
5754548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
5755548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5756548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      -thread-safe)
5757548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	thread_safe=yes
5758548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	continue
5759548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
5760548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5761548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      -version-info)
5762548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	prev=vinfo
5763548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	continue
5764548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
5765548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5766548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      -version-number)
5767548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	prev=vinfo
5768548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	vinfo_number=yes
5769548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	continue
5770548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
5771548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5772548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      -weak)
5773548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        prev=weak
5774548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	continue
5775548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
5776548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5777548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      -Wc,*)
5778548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_stripname '-Wc,' '' "$arg"
5779548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	args=$func_stripname_result
5780548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	arg=
5781548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	save_ifs="$IFS"; IFS=','
5782548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	for flag in $args; do
5783548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  IFS="$save_ifs"
5784548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen          func_quote_for_eval "$flag"
5785548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_append arg " $func_quote_for_eval_result"
5786548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_append compiler_flags " $func_quote_for_eval_result"
5787548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	done
5788548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	IFS="$save_ifs"
5789548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_stripname ' ' '' "$arg"
5790548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	arg=$func_stripname_result
5791548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
5792548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5793548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      -Wl,*)
5794548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_stripname '-Wl,' '' "$arg"
5795548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	args=$func_stripname_result
5796548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	arg=
5797548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	save_ifs="$IFS"; IFS=','
5798548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	for flag in $args; do
5799548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  IFS="$save_ifs"
5800548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen          func_quote_for_eval "$flag"
5801548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_append arg " $wl$func_quote_for_eval_result"
5802548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_append compiler_flags " $wl$func_quote_for_eval_result"
5803548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_append linker_flags " $func_quote_for_eval_result"
5804548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	done
5805548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	IFS="$save_ifs"
5806548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_stripname ' ' '' "$arg"
5807548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	arg=$func_stripname_result
5808548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
5809548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5810548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      -Xcompiler)
5811548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	prev=xcompiler
5812548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	continue
5813548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
5814548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5815548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      -Xlinker)
5816548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	prev=xlinker
5817548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	continue
5818548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
5819548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5820548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      -XCClinker)
5821548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	prev=xcclinker
5822548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	continue
5823548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
5824548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5825548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # -msg_* for osf cc
5826548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      -msg_*)
5827548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_quote_for_eval "$arg"
5828548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	arg="$func_quote_for_eval_result"
5829548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
5830548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5831548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Flags to be passed through unchanged, with rationale:
5832548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # -64, -mips[0-9]      enable 64-bit mode for the SGI compiler
5833548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # -r[0-9][0-9]*        specify processor for the SGI compiler
5834548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler
5835548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # +DA*, +DD*           enable 64-bit mode for the HP compiler
5836548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # -q*                  compiler args for the IBM compiler
5837548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # -m*, -t[45]*, -txscale* architecture-specific flags for GCC
5838548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # -F/path              path to uninstalled frameworks, gcc on darwin
5839548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # -p, -pg, --coverage, -fprofile-*  profiling flags for GCC
5840548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # @file                GCC response files
5841548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # -tp=*                Portland pgcc target processor selection
5842548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # --sysroot=*          for sysroot support
5843548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
5844548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
5845548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
5846548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      -O*|-flto*|-fwhopr*|-fuse-linker-plugin)
5847548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        func_quote_for_eval "$arg"
5848548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	arg="$func_quote_for_eval_result"
5849548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        func_append compile_command " $arg"
5850548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        func_append finalize_command " $arg"
5851548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        func_append compiler_flags " $arg"
5852548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        continue
5853548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        ;;
5854548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5855548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Some other compiler flag.
5856548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      -* | +*)
5857548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        func_quote_for_eval "$arg"
5858548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	arg="$func_quote_for_eval_result"
5859548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
5860548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5861548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      *.$objext)
5862548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# A standard object.
5863548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_append objs " $arg"
5864548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
5865548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5866548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      *.lo)
5867548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# A libtool-controlled object.
5868548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5869548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Check to see that this really is a libtool object.
5870548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if func_lalib_unsafe_p "$arg"; then
5871548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  pic_object=
5872548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  non_pic_object=
5873548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5874548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # Read the .lo file
5875548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_source "$arg"
5876548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5877548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test -z "$pic_object" ||
5878548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	     test -z "$non_pic_object" ||
5879548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	     test "$pic_object" = none &&
5880548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	     test "$non_pic_object" = none; then
5881548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_fatal_error "cannot find name of object for \`$arg'"
5882548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
5883548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5884548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # Extract subdirectory from the argument.
5885548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_dirname "$arg" "/" ""
5886548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  xdir="$func_dirname_result"
5887548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5888548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test "$pic_object" != none; then
5889548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # Prepend the subdirectory the object is found in.
5890548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    pic_object="$xdir$pic_object"
5891548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5892548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if test "$prev" = dlfiles; then
5893548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
5894548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		func_append dlfiles " $pic_object"
5895548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		prev=
5896548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		continue
5897548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      else
5898548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		# If libtool objects are unsupported, then we need to preload.
5899548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		prev=dlprefiles
5900548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      fi
5901548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
5902548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5903548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # CHECK ME:  I think I busted this.  -Ossama
5904548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if test "$prev" = dlprefiles; then
5905548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # Preload the old-style object.
5906548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      func_append dlprefiles " $pic_object"
5907548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      prev=
5908548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
5909548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5910548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # A PIC object.
5911548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_append libobjs " $pic_object"
5912548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    arg="$pic_object"
5913548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
5914548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5915548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # Non-PIC object.
5916548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test "$non_pic_object" != none; then
5917548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # Prepend the subdirectory the object is found in.
5918548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    non_pic_object="$xdir$non_pic_object"
5919548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5920548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # A standard non-PIC object
5921548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_append non_pic_objects " $non_pic_object"
5922548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if test -z "$pic_object" || test "$pic_object" = none ; then
5923548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      arg="$non_pic_object"
5924548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
5925548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  else
5926548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # If the PIC object exists, use it instead.
5927548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # $xdir was prepended to $pic_object above.
5928548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    non_pic_object="$pic_object"
5929548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_append non_pic_objects " $non_pic_object"
5930548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
5931548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	else
5932548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # Only an error if not doing a dry-run.
5933548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if $opt_dry_run; then
5934548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # Extract subdirectory from the argument.
5935548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_dirname "$arg" "/" ""
5936548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    xdir="$func_dirname_result"
5937548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5938548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_lo2o "$arg"
5939548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    pic_object=$xdir$objdir/$func_lo2o_result
5940548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    non_pic_object=$xdir$func_lo2o_result
5941548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_append libobjs " $pic_object"
5942548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_append non_pic_objects " $non_pic_object"
5943548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  else
5944548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_fatal_error "\`$arg' is not a valid libtool object"
5945548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
5946548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
5947548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
5948548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5949548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      *.$libext)
5950548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# An archive.
5951548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_append deplibs " $arg"
5952548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_append old_deplibs " $arg"
5953548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	continue
5954548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
5955548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5956548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      *.la)
5957548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# A libtool-controlled library.
5958548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5959548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_resolve_sysroot "$arg"
5960548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test "$prev" = dlfiles; then
5961548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # This library was specified with -dlopen.
5962548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_append dlfiles " $func_resolve_sysroot_result"
5963548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  prev=
5964548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	elif test "$prev" = dlprefiles; then
5965548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # The library was specified with -dlpreopen.
5966548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_append dlprefiles " $func_resolve_sysroot_result"
5967548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  prev=
5968548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	else
5969548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_append deplibs " $func_resolve_sysroot_result"
5970548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
5971548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	continue
5972548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
5973548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5974548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Some other compiler argument.
5975548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      *)
5976548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Unknown arguments in both finalize_command and compile_command need
5977548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# to be aesthetically quoted because they are evaled later.
5978548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_quote_for_eval "$arg"
5979548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	arg="$func_quote_for_eval_result"
5980548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
5981548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      esac # arg
5982548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5983548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Now actually substitute the argument into the commands.
5984548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test -n "$arg"; then
5985548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_append compile_command " $arg"
5986548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_append finalize_command " $arg"
5987548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
5988548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    done # argument parsing loop
5989548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5990548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    if test "$module" = yes ; then
5991548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # [Mandriva] dropping ld option "--no-undefined" which is wrong for plugins
5992548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      linker_flags=`$ECHO "X $linker_flags" | $Xsed -e 's/ --no-undefined//'`
5993548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      compiler_flags=`$ECHO "X $compiler_flags" | $Xsed -e 's/ -Wl,--no-undefined//'`
5994548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    fi
5995548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5996548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    test -n "$prev" && \
5997548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_fatal_help "the \`$prevarg' option requires an argument"
5998548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
5999548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
6000548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      eval arg=\"$export_dynamic_flag_spec\"
6001548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_append compile_command " $arg"
6002548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_append finalize_command " $arg"
6003548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    fi
6004548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
6005548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    oldlibs=
6006548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # calculate the name of the file, without its directory
6007548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_basename "$output"
6008548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    outputname="$func_basename_result"
6009548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    libobjs_save="$libobjs"
6010548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
6011548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    if test -n "$shlibpath_var"; then
6012548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # get the directories listed in $shlibpath_var
6013548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\`
6014548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    else
6015548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      shlib_search_path=
6016548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    fi
6017548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
6018548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
6019548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
6020548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_dirname "$output" "/" ""
6021548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    output_objdir="$func_dirname_result$objdir"
6022548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_to_tool_file "$output_objdir/"
6023548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    tool_output_objdir=$func_to_tool_file_result
6024548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # Create the object directory.
6025548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_mkdir_p "$output_objdir"
6026548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
6027548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # Determine the type of output
6028548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    case $output in
6029548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    "")
6030548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_fatal_help "you must specify an output file"
6031548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      ;;
6032548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    *.$libext) linkmode=oldlib ;;
6033548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    *.lo | *.$objext) linkmode=obj ;;
6034548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    *.la) linkmode=lib ;;
6035548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    *) linkmode=prog ;; # Anything else should be a program.
6036548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    esac
6037548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
6038548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    specialdeplibs=
6039548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
6040548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    libs=
6041548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # Find all interdependent deplibs by searching for libraries
6042548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # that are linked more than once (e.g. -la -lb -la)
6043548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    for deplib in $deplibs; do
6044548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if $opt_preserve_dup_deps ; then
6045548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	case "$libs " in
6046548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	*" $deplib "*) func_append specialdeplibs " $deplib" ;;
6047548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	esac
6048548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
6049548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_append libs " $deplib"
6050548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    done
6051548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
6052548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    if test "$linkmode" = lib; then
6053548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      libs="$predeps $libs $compiler_lib_search_path $postdeps"
6054548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
6055548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Compute libraries that are listed more than once in $predeps
6056548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # $postdeps and mark them as special (i.e., whose duplicates are
6057548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # not to be eliminated).
6058548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      pre_post_deps=
6059548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if $opt_duplicate_compiler_generated_deps; then
6060548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	for pre_post_dep in $predeps $postdeps; do
6061548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  case "$pre_post_deps " in
6062548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;;
6063548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  esac
6064548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_append pre_post_deps " $pre_post_dep"
6065548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	done
6066548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
6067548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      pre_post_deps=
6068548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    fi
6069548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
6070548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    deplibs=
6071548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    newdependency_libs=
6072548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    newlib_search_path=
6073548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    need_relink=no # whether we're linking any uninstalled libtool libraries
6074548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    notinst_deplibs= # not-installed libtool libraries
6075548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    notinst_path= # paths that contain not-installed libtool libraries
6076548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
6077548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    case $linkmode in
6078548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    lib)
6079548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	passes="conv dlpreopen link"
6080548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	for file in $dlfiles $dlprefiles; do
6081548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  case $file in
6082548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *.la) ;;
6083548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *)
6084548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
6085548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    ;;
6086548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  esac
6087548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	done
6088548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
6089548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    prog)
6090548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	compile_deplibs=
6091548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	finalize_deplibs=
6092548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	alldeplibs=no
6093548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	newdlfiles=
6094548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	newdlprefiles=
6095548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	passes="conv scan dlopen dlpreopen link"
6096548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
6097548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    *)  passes="conv"
6098548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
6099548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    esac
6100548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
6101548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    for pass in $passes; do
6102548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # The preopen pass in lib mode reverses $deplibs; put it back here
6103548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # so that -L comes before libs that need it for instance...
6104548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test "$linkmode,$pass" = "lib,link"; then
6105548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	## FIXME: Find the place where the list is rebuilt in the wrong
6106548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	##        order, and fix it there properly
6107548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        tmp_deplibs=
6108548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	for deplib in $deplibs; do
6109548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  tmp_deplibs="$deplib $tmp_deplibs"
6110548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	done
6111548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	deplibs="$tmp_deplibs"
6112548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
6113548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
6114548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test "$linkmode,$pass" = "lib,link" ||
6115548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	 test "$linkmode,$pass" = "prog,scan"; then
6116548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	libs="$deplibs"
6117548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	deplibs=
6118548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
6119548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test "$linkmode" = prog; then
6120548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	case $pass in
6121548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	dlopen) libs="$dlfiles" ;;
6122548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	dlpreopen) libs="$dlprefiles" ;;
6123548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	link)
6124548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  libs="$deplibs %DEPLIBS%"
6125548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs"
6126548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
6127548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	esac
6128548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
6129548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test "$linkmode,$pass" = "lib,dlpreopen"; then
6130548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Collect and forward deplibs of preopened libtool libs
6131548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	for lib in $dlprefiles; do
6132548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # Ignore non-libtool-libs
6133548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  dependency_libs=
6134548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_resolve_sysroot "$lib"
6135548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  case $lib in
6136548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *.la)	func_source "$func_resolve_sysroot_result" ;;
6137548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  esac
6138548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
6139548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # Collect preopened libtool deplibs, except any this library
6140548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # has declared as weak libs
6141548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  for deplib in $dependency_libs; do
6142548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_basename "$deplib"
6143548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen            deplib_base=$func_basename_result
6144548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    case " $weak_libs " in
6145548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    *" $deplib_base "*) ;;
6146548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    *) func_append deplibs " $deplib" ;;
6147548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    esac
6148548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  done
6149548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	done
6150548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	libs="$dlprefiles"
6151548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
6152548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test "$pass" = dlopen; then
6153548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Collect dlpreopened libraries
6154548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	save_deplibs="$deplibs"
6155548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	deplibs=
6156548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
6157548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
6158548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      for deplib in $libs; do
6159548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	lib=
6160548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	found=no
6161548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	case $deplib in
6162548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
6163548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test "$linkmode,$pass" = "prog,link"; then
6164548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    compile_deplibs="$deplib $compile_deplibs"
6165548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    finalize_deplibs="$deplib $finalize_deplibs"
6166548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  else
6167548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_append compiler_flags " $deplib"
6168548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if test "$linkmode" = lib ; then
6169548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		case "$new_inherited_linker_flags " in
6170548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    *" $deplib "*) ;;
6171548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    * ) func_append new_inherited_linker_flags " $deplib" ;;
6172548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		esac
6173548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
6174548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
6175548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  continue
6176548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
6177548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	-l*)
6178548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test "$linkmode" != lib && test "$linkmode" != prog; then
6179548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_warning "\`-l' is ignored for archives/objects"
6180548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    continue
6181548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
6182548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_stripname '-l' '' "$deplib"
6183548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  name=$func_stripname_result
6184548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test "$linkmode" = lib; then
6185548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
6186548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  else
6187548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
6188548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
6189548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  for searchdir in $searchdirs; do
6190548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    for search_ext in .la $std_shrext .so .a; do
6191548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # Search the libtool library
6192548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      lib="$searchdir/lib${name}${search_ext}"
6193548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      if test -f "$lib"; then
6194548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		if test "$search_ext" = ".la"; then
6195548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  found=yes
6196548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		else
6197548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  found=no
6198548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		fi
6199548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		break 2
6200548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      fi
6201548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    done
6202548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  done
6203548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test "$found" != yes; then
6204548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # deplib doesn't seem to be a libtool library
6205548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if test "$linkmode,$pass" = "prog,link"; then
6206548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      compile_deplibs="$deplib $compile_deplibs"
6207548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      finalize_deplibs="$deplib $finalize_deplibs"
6208548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    else
6209548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      deplibs="$deplib $deplibs"
6210548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
6211548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
6212548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    continue
6213548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  else # deplib is a libtool library
6214548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
6215548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # We need to do some special things here, and not later.
6216548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
6217548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      case " $predeps $postdeps " in
6218548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      *" $deplib "*)
6219548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		if func_lalib_p "$lib"; then
6220548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  library_names=
6221548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  old_library=
6222548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  func_source "$lib"
6223548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  for l in $old_library $library_names; do
6224548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    ll="$l"
6225548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  done
6226548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  if test "X$ll" = "X$old_library" ; then # only static version available
6227548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    found=no
6228548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    func_dirname "$lib" "" "."
6229548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    ladir="$func_dirname_result"
6230548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    lib=$ladir/$old_library
6231548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    if test "$linkmode,$pass" = "prog,link"; then
6232548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		      compile_deplibs="$deplib $compile_deplibs"
6233548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		      finalize_deplibs="$deplib $finalize_deplibs"
6234548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    else
6235548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		      deplibs="$deplib $deplibs"
6236548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
6237548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    fi
6238548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    continue
6239548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  fi
6240548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		fi
6241548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		;;
6242548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      *) ;;
6243548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      esac
6244548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
6245548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
6246548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;; # -l
6247548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	*.ltframework)
6248548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test "$linkmode,$pass" = "prog,link"; then
6249548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    compile_deplibs="$deplib $compile_deplibs"
6250548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    finalize_deplibs="$deplib $finalize_deplibs"
6251548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  else
6252548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    deplibs="$deplib $deplibs"
6253548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if test "$linkmode" = lib ; then
6254548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		case "$new_inherited_linker_flags " in
6255548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    *" $deplib "*) ;;
6256548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    * ) func_append new_inherited_linker_flags " $deplib" ;;
6257548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		esac
6258548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
6259548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
6260548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  continue
6261548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
6262548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	-L*)
6263548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  case $linkmode in
6264548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  lib)
6265548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    deplibs="$deplib $deplibs"
6266548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    test "$pass" = conv && continue
6267548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    newdependency_libs="$deplib $newdependency_libs"
6268548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_stripname '-L' '' "$deplib"
6269548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_resolve_sysroot "$func_stripname_result"
6270548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_append newlib_search_path " $func_resolve_sysroot_result"
6271548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    ;;
6272548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  prog)
6273548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if test "$pass" = conv; then
6274548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      deplibs="$deplib $deplibs"
6275548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      continue
6276548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
6277548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if test "$pass" = scan; then
6278548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      deplibs="$deplib $deplibs"
6279548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    else
6280548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      compile_deplibs="$deplib $compile_deplibs"
6281548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      finalize_deplibs="$deplib $finalize_deplibs"
6282548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
6283548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_stripname '-L' '' "$deplib"
6284548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_resolve_sysroot "$func_stripname_result"
6285548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_append newlib_search_path " $func_resolve_sysroot_result"
6286548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    ;;
6287548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *)
6288548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_warning "\`-L' is ignored for archives/objects"
6289548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    ;;
6290548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  esac # linkmode
6291548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  continue
6292548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;; # -L
6293548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	-R*)
6294548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test "$pass" = link; then
6295548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_stripname '-R' '' "$deplib"
6296548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_resolve_sysroot "$func_stripname_result"
6297548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    dir=$func_resolve_sysroot_result
6298548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # Make sure the xrpath contains only unique directories.
6299548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    case "$xrpath " in
6300548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    *" $dir "*) ;;
6301548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    *) func_append xrpath " $dir" ;;
6302548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    esac
6303548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
6304548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  deplibs="$deplib $deplibs"
6305548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  continue
6306548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
6307548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	*.la)
6308548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_resolve_sysroot "$deplib"
6309548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  lib=$func_resolve_sysroot_result
6310548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
6311548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	*.$libext)
6312548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test "$pass" = conv; then
6313548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    deplibs="$deplib $deplibs"
6314548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    continue
6315548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
6316548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  case $linkmode in
6317548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  lib)
6318548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # Linking convenience modules into shared libraries is allowed,
6319548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # but linking other static libraries is non-portable.
6320548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    case " $dlpreconveniencelibs " in
6321548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    *" $deplib "*) ;;
6322548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    *)
6323548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      valid_a_lib=no
6324548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      case $deplibs_check_method in
6325548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		match_pattern*)
6326548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  set dummy $deplibs_check_method; shift
6327548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
6328548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \
6329548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    | $EGREP "$match_pattern_regex" > /dev/null; then
6330548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    valid_a_lib=yes
6331548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  fi
6332548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		;;
6333548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		pass_all)
6334548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  valid_a_lib=yes
6335548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		;;
6336548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      esac
6337548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      if test "$valid_a_lib" != yes; then
6338548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		echo
6339548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		$ECHO "*** Warning: Trying to link with static lib archive $deplib."
6340548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		echo "*** I have the capability to make that library automatically link in when"
6341548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		echo "*** you link to this library.  But I can only do this if you have a"
6342548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		echo "*** shared version of the library, which you do not appear to have"
6343548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		echo "*** because the file extensions .$libext of this argument makes me believe"
6344548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		echo "*** that it is just a static archive that I should not use here."
6345548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      else
6346548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		echo
6347548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		$ECHO "*** Warning: Linking the shared library $output against the"
6348548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		$ECHO "*** static library $deplib is not portable!"
6349548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		deplibs="$deplib $deplibs"
6350548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      fi
6351548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      ;;
6352548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    esac
6353548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    continue
6354548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    ;;
6355548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  prog)
6356548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if test "$pass" != link; then
6357548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      deplibs="$deplib $deplibs"
6358548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    else
6359548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      compile_deplibs="$deplib $compile_deplibs"
6360548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      finalize_deplibs="$deplib $finalize_deplibs"
6361548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
6362548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    continue
6363548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    ;;
6364548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  esac # linkmode
6365548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;; # *.$libext
6366548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	*.lo | *.$objext)
6367548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test "$pass" = conv; then
6368548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    deplibs="$deplib $deplibs"
6369548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  elif test "$linkmode" = prog; then
6370548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
6371548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # If there is no dlopen support or we're linking statically,
6372548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # we need to preload.
6373548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      func_append newdlprefiles " $deplib"
6374548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      compile_deplibs="$deplib $compile_deplibs"
6375548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      finalize_deplibs="$deplib $finalize_deplibs"
6376548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    else
6377548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      func_append newdlfiles " $deplib"
6378548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
6379548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
6380548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  continue
6381548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
6382548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	%DEPLIBS%)
6383548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  alldeplibs=yes
6384548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  continue
6385548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
6386548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	esac # case $deplib
6387548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
6388548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test "$found" = yes || test -f "$lib"; then :
6389548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	else
6390548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
6391548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
6392548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
6393548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Check to see that this really is a libtool archive.
6394548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_lalib_unsafe_p "$lib" \
6395548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  || func_fatal_error "\`$lib' is not a valid libtool archive"
6396548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
6397548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_dirname "$lib" "" "."
6398548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	ladir="$func_dirname_result"
6399548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
6400548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	dlname=
6401548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	dlopen=
6402548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	dlpreopen=
6403548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	libdir=
6404548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	library_names=
6405548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	old_library=
6406548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	inherited_linker_flags=
6407548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# If the library was installed with an old release of libtool,
6408548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# it will not redefine variables installed, or shouldnotlink
6409548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	installed=yes
6410548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	shouldnotlink=no
6411548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	avoidtemprpath=
6412548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
6413548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
6414548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Read the .la file
6415548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_source "$lib"
6416548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
6417548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Convert "-framework foo" to "foo.ltframework"
6418548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test -n "$inherited_linker_flags"; then
6419548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`
6420548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
6421548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    case " $new_inherited_linker_flags " in
6422548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      *" $tmp_inherited_linker_flag "*) ;;
6423548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";;
6424548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    esac
6425548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  done
6426548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
6427548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
6428548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test "$linkmode,$pass" = "lib,link" ||
6429548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	   test "$linkmode,$pass" = "prog,scan" ||
6430548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then
6431548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  test -n "$dlopen" && func_append dlfiles " $dlopen"
6432548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen"
6433548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
6434548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
6435548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test "$pass" = conv; then
6436548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # Only check for convenience libraries
6437548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  deplibs="$lib $deplibs"
6438548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test -z "$libdir"; then
6439548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if test -z "$old_library"; then
6440548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      func_fatal_error "cannot find name of link library for \`$lib'"
6441548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
6442548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # It is a libtool convenience library, so add in its objects.
6443548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_append convenience " $ladir/$objdir/$old_library"
6444548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_append old_convenience " $ladir/$objdir/$old_library"
6445548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
6446548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_fatal_error "\`$lib' is not a convenience library"
6447548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
6448548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  tmp_libs=
6449548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  for deplib in $dependency_libs; do
6450548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    deplibs="$deplib $deplibs"
6451548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if $opt_preserve_dup_deps ; then
6452548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      case "$tmp_libs " in
6453548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      *" $deplib "*) func_append specialdeplibs " $deplib" ;;
6454548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      esac
6455548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
6456548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_append tmp_libs " $deplib"
6457548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  done
6458548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  continue
6459548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi # $pass = conv
6460548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
6461548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
6462548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Get the name of the library we link against.
6463548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	linklib=
6464548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test -n "$old_library" &&
6465548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	   { test "$prefer_static_libs" = yes ||
6466548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	     test "$prefer_static_libs,$installed" = "built,no"; }; then
6467548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  linklib=$old_library
6468548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	else
6469548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  for l in $old_library $library_names; do
6470548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    linklib="$l"
6471548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  done
6472548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
6473548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test -z "$linklib"; then
6474548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_fatal_error "cannot find name of link library for \`$lib'"
6475548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
6476548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
6477548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# This library was specified with -dlopen.
6478548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test "$pass" = dlopen; then
6479548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test -z "$libdir"; then
6480548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
6481548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
6482548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test -z "$dlname" ||
6483548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	     test "$dlopen_support" != yes ||
6484548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	     test "$build_libtool_libs" = no; then
6485548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # If there is no dlname, no dlopen support or we're linking
6486548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # statically, we need to preload.  We also need to preload any
6487548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # dependent libraries so libltdl's deplib preloader doesn't
6488548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # bomb out in the load deplibs phase.
6489548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_append dlprefiles " $lib $dependency_libs"
6490548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  else
6491548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_append newdlfiles " $lib"
6492548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
6493548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  continue
6494548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi # $pass = dlopen
6495548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
6496548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# We need an absolute path.
6497548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	case $ladir in
6498548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
6499548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	*)
6500548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  abs_ladir=`cd "$ladir" && pwd`
6501548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test -z "$abs_ladir"; then
6502548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_warning "cannot determine absolute directory name of \`$ladir'"
6503548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_warning "passing it literally to the linker, although it might fail"
6504548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    abs_ladir="$ladir"
6505548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
6506548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
6507548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	esac
6508548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_basename "$lib"
6509548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	laname="$func_basename_result"
6510548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
6511548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Find the relevant object directory and library name.
6512548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test "X$installed" = Xyes; then
6513548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
6514548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_warning "library \`$lib' was moved."
6515548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    dir="$ladir"
6516548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    absdir="$abs_ladir"
6517548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    libdir="$abs_ladir"
6518548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  else
6519548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    dir="$lt_sysroot$libdir"
6520548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    absdir="$lt_sysroot$libdir"
6521548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
6522548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
6523548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	else
6524548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
6525548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    dir="$ladir"
6526548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    absdir="$abs_ladir"
6527548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # Remove this search path later
6528548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_append notinst_path " $abs_ladir"
6529548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  else
6530548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    dir="$ladir/$objdir"
6531548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    absdir="$abs_ladir/$objdir"
6532548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # Remove this search path later
6533548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_append notinst_path " $abs_ladir"
6534548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
6535548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi # $installed = yes
6536548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_stripname 'lib' '.la' "$laname"
6537548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	name=$func_stripname_result
6538548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
6539548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# This library was specified with -dlpreopen.
6540548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test "$pass" = dlpreopen; then
6541548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test -z "$libdir" && test "$linkmode" = prog; then
6542548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
6543548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
6544548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  case "$host" in
6545548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # special handling for platforms with PE-DLLs.
6546548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    *cygwin* | *mingw* | *cegcc* )
6547548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # Linker will automatically link against shared library if both
6548548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # static and shared are present.  Therefore, ensure we extract
6549548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # symbols from the import library if a shared library is present
6550548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # (otherwise, the dlopen module name will be incorrect).  We do
6551548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # this by putting the import library name into $newdlprefiles.
6552548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # We recover the dlopen module name by 'saving' the la file
6553548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # name in a special purpose variable, and (later) extracting the
6554548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # dlname from the la file.
6555548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      if test -n "$dlname"; then
6556548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	        func_tr_sh "$dir/$linklib"
6557548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	        eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname"
6558548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	        func_append newdlprefiles " $dir/$linklib"
6559548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      else
6560548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	        func_append newdlprefiles " $dir/$old_library"
6561548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	        # Keep a list of preopened convenience libraries to check
6562548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	        # that they are being used correctly in the link pass.
6563548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	        test -z "$libdir" && \
6564548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	          func_append dlpreconveniencelibs " $dir/$old_library"
6565548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      fi
6566548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    ;;
6567548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    * )
6568548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # Prefer using a static library (so that no silly _DYNAMIC symbols
6569548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # are required to link).
6570548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      if test -n "$old_library"; then
6571548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	        func_append newdlprefiles " $dir/$old_library"
6572548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	        # Keep a list of preopened convenience libraries to check
6573548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	        # that they are being used correctly in the link pass.
6574548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	        test -z "$libdir" && \
6575548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	          func_append dlpreconveniencelibs " $dir/$old_library"
6576548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # Otherwise, use the dlname, so that lt_dlopen finds it.
6577548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      elif test -n "$dlname"; then
6578548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	        func_append newdlprefiles " $dir/$dlname"
6579548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      else
6580548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	        func_append newdlprefiles " $dir/$linklib"
6581548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      fi
6582548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    ;;
6583548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  esac
6584548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi # $pass = dlpreopen
6585548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
6586548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test -z "$libdir"; then
6587548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # Link the convenience library
6588548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test "$linkmode" = lib; then
6589548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    deplibs="$dir/$old_library $deplibs"
6590548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  elif test "$linkmode,$pass" = "prog,link"; then
6591548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    compile_deplibs="$dir/$old_library $compile_deplibs"
6592548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
6593548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  else
6594548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    deplibs="$lib $deplibs" # used for prog,scan pass
6595548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
6596548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  continue
6597548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
6598548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
6599548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
6600548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test "$linkmode" = prog && test "$pass" != link; then
6601548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_append newlib_search_path " $ladir"
6602548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  deplibs="$lib $deplibs"
6603548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
6604548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  linkalldeplibs=no
6605548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
6606548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	     test "$build_libtool_libs" = no; then
6607548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    linkalldeplibs=yes
6608548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
6609548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
6610548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  tmp_libs=
6611548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  for deplib in $dependency_libs; do
6612548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    case $deplib in
6613548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    -L*) func_stripname '-L' '' "$deplib"
6614548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	         func_resolve_sysroot "$func_stripname_result"
6615548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	         func_append newlib_search_path " $func_resolve_sysroot_result"
6616548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		 ;;
6617548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    esac
6618548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # Need to link against all dependency_libs?
6619548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if test "$linkalldeplibs" = yes; then
6620548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      deplibs="$deplib $deplibs"
6621548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    else
6622548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # Need to hardcode shared library paths
6623548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # or/and link against static libraries
6624548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      newdependency_libs="$deplib $newdependency_libs"
6625548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
6626548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if $opt_preserve_dup_deps ; then
6627548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      case "$tmp_libs " in
6628548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      *" $deplib "*) func_append specialdeplibs " $deplib" ;;
6629548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      esac
6630548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
6631548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_append tmp_libs " $deplib"
6632548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  done # for deplib
6633548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  continue
6634548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi # $linkmode = prog...
6635548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
6636548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test "$linkmode,$pass" = "prog,link"; then
6637548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test -n "$library_names" &&
6638548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	     { { test "$prefer_static_libs" = no ||
6639548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	         test "$prefer_static_libs,$installed" = "built,yes"; } ||
6640548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	       test -z "$old_library"; }; then
6641548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # We need to hardcode the library path
6642548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
6643548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # Make sure the rpath contains only unique directories.
6644548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      case "$temp_rpath:" in
6645548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      *"$absdir:"*) ;;
6646548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      *) func_append temp_rpath "$absdir:" ;;
6647548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      esac
6648548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
6649548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
6650548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # Hardcode the library path.
6651548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # Skip directories that are in the system default run-time
6652548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # search path.
6653548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    case " $sys_lib_dlsearch_path " in
6654548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    *" $absdir "*) ;;
6655548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    *)
6656548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      case "$compile_rpath " in
6657548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      *" $absdir "*) ;;
6658548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      *) func_append compile_rpath " $absdir" ;;
6659548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      esac
6660548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      ;;
6661548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    esac
6662548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    case " $sys_lib_dlsearch_path " in
6663548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    *" $libdir "*) ;;
6664548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    *)
6665548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      case "$finalize_rpath " in
6666548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      *" $libdir "*) ;;
6667548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      *) func_append finalize_rpath " $libdir" ;;
6668548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      esac
6669548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      ;;
6670548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    esac
6671548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi # $linkmode,$pass = prog,link...
6672548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
6673548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test "$alldeplibs" = yes &&
6674548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	     { test "$deplibs_check_method" = pass_all ||
6675548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	       { test "$build_libtool_libs" = yes &&
6676548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		 test -n "$library_names"; }; }; then
6677548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # We only need to search for static libraries
6678548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    continue
6679548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
6680548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
6681548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
6682548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	link_static=no # Whether the deplib will be linked statically
6683548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	use_static_libs=$prefer_static_libs
6684548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test "$use_static_libs" = built && test "$installed" = yes; then
6685548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  use_static_libs=no
6686548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
6687548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test -n "$library_names" &&
6688548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	   { test "$use_static_libs" = no || test -z "$old_library"; }; then
6689548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  case $host in
6690548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *cygwin* | *mingw* | *cegcc*)
6691548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # No point in relinking DLLs because paths are not encoded
6692548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      func_append notinst_deplibs " $lib"
6693548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      need_relink=no
6694548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    ;;
6695548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *)
6696548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if test "$installed" = no; then
6697548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      func_append notinst_deplibs " $lib"
6698548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      need_relink=yes
6699548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
6700548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    ;;
6701548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  esac
6702548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # This is a shared library
6703548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
6704548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # Warn about portability, can't link against -module's on some
6705548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # systems (darwin).  Don't bleat about dlopened modules though!
6706548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  dlopenmodule=""
6707548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  for dlpremoduletest in $dlprefiles; do
6708548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if test "X$dlpremoduletest" = "X$lib"; then
6709548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      dlopenmodule="$dlpremoduletest"
6710548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      break
6711548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
6712548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  done
6713548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
6714548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    echo
6715548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if test "$linkmode" = prog; then
6716548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      $ECHO "*** Warning: Linking the executable $output against the loadable module"
6717548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    else
6718548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      $ECHO "*** Warning: Linking the shared library $output against the loadable module"
6719548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
6720548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    $ECHO "*** $linklib is not portable!"
6721548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
6722548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test "$linkmode" = lib &&
6723548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	     test "$hardcode_into_libs" = yes; then
6724548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # Hardcode the library path.
6725548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # Skip directories that are in the system default run-time
6726548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # search path.
6727548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    case " $sys_lib_dlsearch_path " in
6728548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    *" $absdir "*) ;;
6729548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    *)
6730548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      case "$compile_rpath " in
6731548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      *" $absdir "*) ;;
6732548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      *) func_append compile_rpath " $absdir" ;;
6733548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      esac
6734548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      ;;
6735548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    esac
6736548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    case " $sys_lib_dlsearch_path " in
6737548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    *" $libdir "*) ;;
6738548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    *)
6739548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      case "$finalize_rpath " in
6740548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      *" $libdir "*) ;;
6741548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      *) func_append finalize_rpath " $libdir" ;;
6742548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      esac
6743548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      ;;
6744548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    esac
6745548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
6746548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
6747548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test -n "$old_archive_from_expsyms_cmds"; then
6748548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # figure out the soname
6749548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    set dummy $library_names
6750548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    shift
6751548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    realname="$1"
6752548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    shift
6753548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    libname=`eval "\\$ECHO \"$libname_spec\""`
6754548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # use dlname if we got it. it's perfectly good, no?
6755548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if test -n "$dlname"; then
6756548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      soname="$dlname"
6757548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    elif test -n "$soname_spec"; then
6758548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # bleh windows
6759548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      case $host in
6760548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      *cygwin* | mingw* | *cegcc*)
6761548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	        func_arith $current - $age
6762548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		major=$func_arith_result
6763548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		versuffix="-$major"
6764548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		;;
6765548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      esac
6766548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      eval soname=\"$soname_spec\"
6767548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    else
6768548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      soname="$realname"
6769548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
6770548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
6771548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # Make a new name for the extract_expsyms_cmds to use
6772548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    soroot="$soname"
6773548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_basename "$soroot"
6774548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    soname="$func_basename_result"
6775548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_stripname 'lib' '.dll' "$soname"
6776548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    newlib=libimp-$func_stripname_result.a
6777548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
6778548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # If the library has no export list, then create one now
6779548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if test -f "$output_objdir/$soname-def"; then :
6780548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    else
6781548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      func_verbose "extracting exported symbol list from \`$soname'"
6782548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
6783548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
6784548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
6785548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # Create $newlib
6786548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if test -f "$output_objdir/$newlib"; then :; else
6787548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      func_verbose "generating import library for \`$soname'"
6788548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
6789548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
6790548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # make sure the library variables are pointing to the new library
6791548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    dir=$output_objdir
6792548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    linklib=$newlib
6793548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi # test -n "$old_archive_from_expsyms_cmds"
6794548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
6795548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test "$linkmode" = prog || test "$opt_mode" != relink; then
6796548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    add_shlibpath=
6797548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    add_dir=
6798548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    add=
6799548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    lib_linked=yes
6800548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    case $hardcode_action in
6801548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    immediate | unsupported)
6802548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      if test "$hardcode_direct" = no; then
6803548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		add="$dir/$linklib"
6804548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		case $host in
6805548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
6806548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  *-*-sysv4*uw2*) add_dir="-L$dir" ;;
6807548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
6808548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    *-*-unixware7*) add_dir="-L$dir" ;;
6809548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  *-*-darwin* )
6810548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    # if the lib is a (non-dlopened) module then we can not
6811548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    # link against it, someone is ignoring the earlier warnings
6812548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    if /usr/bin/file -L $add 2> /dev/null |
6813548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			 $GREP ": [^:]* bundle" >/dev/null ; then
6814548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		      if test "X$dlopenmodule" != "X$lib"; then
6815548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			$ECHO "*** Warning: lib $linklib is a module, not a shared library"
6816548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			if test -z "$old_library" ; then
6817548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			  echo
6818548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			  echo "*** And there doesn't seem to be a static archive available"
6819548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			  echo "*** The link will probably fail, sorry"
6820548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			else
6821548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			  add="$dir/$old_library"
6822548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			fi
6823548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		      elif test -n "$old_library"; then
6824548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			add="$dir/$old_library"
6825548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		      fi
6826548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    fi
6827548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		esac
6828548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      elif test "$hardcode_minus_L" = no; then
6829548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		case $host in
6830548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		*-*-sunos*) add_shlibpath="$dir" ;;
6831548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		esac
6832548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		add_dir="-L$dir"
6833548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		add="-l$name"
6834548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      elif test "$hardcode_shlibpath_var" = no; then
6835548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		add_shlibpath="$dir"
6836548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		add="-l$name"
6837548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      else
6838548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		lib_linked=no
6839548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      fi
6840548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      ;;
6841548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    relink)
6842548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      if test "$hardcode_direct" = yes &&
6843548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	         test "$hardcode_direct_absolute" = no; then
6844548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		add="$dir/$linklib"
6845548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      elif test "$hardcode_minus_L" = yes; then
6846548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		add_dir="-L$dir"
6847548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		# Try looking first in the location we're being installed to.
6848548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		if test -n "$inst_prefix_dir"; then
6849548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  case $libdir in
6850548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    [\\/]*)
6851548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		      func_append add_dir " -L$inst_prefix_dir$libdir"
6852548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		      ;;
6853548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  esac
6854548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		fi
6855548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		add="-l$name"
6856548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      elif test "$hardcode_shlibpath_var" = yes; then
6857548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		add_shlibpath="$dir"
6858548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		add="-l$name"
6859548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      else
6860548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		lib_linked=no
6861548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      fi
6862548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      ;;
6863548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    *) lib_linked=no ;;
6864548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    esac
6865548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
6866548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if test "$lib_linked" != yes; then
6867548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      func_fatal_configuration "unsupported hardcode properties"
6868548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
6869548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
6870548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if test -n "$add_shlibpath"; then
6871548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      case :$compile_shlibpath: in
6872548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      *":$add_shlibpath:"*) ;;
6873548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      *) func_append compile_shlibpath "$add_shlibpath:" ;;
6874548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      esac
6875548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
6876548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if test "$linkmode" = prog; then
6877548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
6878548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
6879548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    else
6880548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
6881548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      test -n "$add" && deplibs="$add $deplibs"
6882548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      if test "$hardcode_direct" != yes &&
6883548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		 test "$hardcode_minus_L" != yes &&
6884548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		 test "$hardcode_shlibpath_var" = yes; then
6885548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		case :$finalize_shlibpath: in
6886548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		*":$libdir:"*) ;;
6887548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		*) func_append finalize_shlibpath "$libdir:" ;;
6888548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		esac
6889548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      fi
6890548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
6891548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
6892548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
6893548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test "$linkmode" = prog || test "$opt_mode" = relink; then
6894548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    add_shlibpath=
6895548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    add_dir=
6896548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    add=
6897548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # Finalize command for both is simple: just hardcode it.
6898548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if test "$hardcode_direct" = yes &&
6899548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	       test "$hardcode_direct_absolute" = no; then
6900548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      add="$libdir/$linklib"
6901548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    elif test "$hardcode_minus_L" = yes; then
6902548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      add_dir="-L$libdir"
6903548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      add="-l$name"
6904548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    elif test "$hardcode_shlibpath_var" = yes; then
6905548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      case :$finalize_shlibpath: in
6906548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      *":$libdir:"*) ;;
6907548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      *) func_append finalize_shlibpath "$libdir:" ;;
6908548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      esac
6909548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      add="-l$name"
6910548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    elif test "$hardcode_automatic" = yes; then
6911548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      if test -n "$inst_prefix_dir" &&
6912548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		 test -f "$inst_prefix_dir$libdir/$linklib" ; then
6913548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		add="$inst_prefix_dir$libdir/$linklib"
6914548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      else
6915548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		add="$libdir/$linklib"
6916548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      fi
6917548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    else
6918548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # We cannot seem to hardcode it, guess we'll fake it.
6919548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      add_dir="-L$libdir"
6920548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # Try looking first in the location we're being installed to.
6921548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      if test -n "$inst_prefix_dir"; then
6922548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		case $libdir in
6923548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  [\\/]*)
6924548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    func_append add_dir " -L$inst_prefix_dir$libdir"
6925548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    ;;
6926548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		esac
6927548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      fi
6928548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      add="-l$name"
6929548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
6930548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
6931548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if test "$linkmode" = prog; then
6932548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
6933548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
6934548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    else
6935548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
6936548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      test -n "$add" && deplibs="$add $deplibs"
6937548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
6938548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
6939548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	elif test "$linkmode" = prog; then
6940548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # Here we assume that one of hardcode_direct or hardcode_minus_L
6941548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # is not unsupported.  This is valid on all known static and
6942548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # shared platforms.
6943548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test "$hardcode_direct" != unsupported; then
6944548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    test -n "$old_library" && linklib="$old_library"
6945548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    compile_deplibs="$dir/$linklib $compile_deplibs"
6946548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
6947548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  else
6948548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    compile_deplibs="-l$name -L$dir $compile_deplibs"
6949548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
6950548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
6951548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	elif test "$build_libtool_libs" = yes; then
6952548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # Not a shared library
6953548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test "$deplibs_check_method" != pass_all; then
6954548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # We're trying link a shared library against a static one
6955548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # but the system doesn't support it.
6956548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
6957548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # Just print a warning and add the library to dependency_libs so
6958548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # that the program can be linked against the static library.
6959548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    echo
6960548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    $ECHO "*** Warning: This system can not link to static lib archive $lib."
6961548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    echo "*** I have the capability to make that library automatically link in when"
6962548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    echo "*** you link to this library.  But I can only do this if you have a"
6963548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    echo "*** shared version of the library, which you do not appear to have."
6964548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if test "$module" = yes; then
6965548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      echo "*** But as you try to build a module library, libtool will still create "
6966548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      echo "*** a static module, that should work as long as the dlopening application"
6967548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
6968548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      if test -z "$global_symbol_pipe"; then
6969548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		echo
6970548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		echo "*** However, this would only work if libtool was able to extract symbol"
6971548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
6972548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		echo "*** not find such a program.  So, this module is probably useless."
6973548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		echo "*** \`nm' from GNU binutils and a full rebuild may help."
6974548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      fi
6975548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      if test "$build_old_libs" = no; then
6976548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		build_libtool_libs=module
6977548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		build_old_libs=yes
6978548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      else
6979548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		build_libtool_libs=no
6980548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      fi
6981548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
6982548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  else
6983548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    deplibs="$dir/$old_library $deplibs"
6984548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    link_static=yes
6985548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
6986548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi # link shared/static library?
6987548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
6988548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test "$linkmode" = lib; then
6989548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test -n "$dependency_libs" &&
6990548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	     { test "$hardcode_into_libs" != yes ||
6991548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	       test "$build_old_libs" = yes ||
6992548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	       test "$link_static" = yes; }; then
6993548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # Extract -R from dependency_libs
6994548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    temp_deplibs=
6995548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    for libdir in $dependency_libs; do
6996548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      case $libdir in
6997548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      -R*) func_stripname '-R' '' "$libdir"
6998548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	           temp_xrpath=$func_stripname_result
6999548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		   case " $xrpath " in
7000548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		   *" $temp_xrpath "*) ;;
7001548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		   *) func_append xrpath " $temp_xrpath";;
7002548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		   esac;;
7003548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      *) func_append temp_deplibs " $libdir";;
7004548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      esac
7005548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    done
7006548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    dependency_libs="$temp_deplibs"
7007548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
7008548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
7009548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_append newlib_search_path " $absdir"
7010548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # Link against this library
7011548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
7012548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # ... and its dependency_libs
7013548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  tmp_libs=
7014548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  for deplib in $dependency_libs; do
7015548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    newdependency_libs="$deplib $newdependency_libs"
7016548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    case $deplib in
7017548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen              -L*) func_stripname '-L' '' "$deplib"
7018548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen                   func_resolve_sysroot "$func_stripname_result";;
7019548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen              *) func_resolve_sysroot "$deplib" ;;
7020548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen            esac
7021548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if $opt_preserve_dup_deps ; then
7022548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      case "$tmp_libs " in
7023548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      *" $func_resolve_sysroot_result "*)
7024548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen                func_append specialdeplibs " $func_resolve_sysroot_result" ;;
7025548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      esac
7026548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
7027548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_append tmp_libs " $func_resolve_sysroot_result"
7028548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  done
7029548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
7030548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test "$link_all_deplibs" != no; then
7031548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # Add the search paths of all dependency libraries
7032548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    for deplib in $dependency_libs; do
7033548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      path=
7034548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      case $deplib in
7035548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      -L*) path="$deplib" ;;
7036548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      *.la)
7037548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	        func_resolve_sysroot "$deplib"
7038548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	        deplib=$func_resolve_sysroot_result
7039548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	        func_dirname "$deplib" "" "."
7040548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		dir=$func_dirname_result
7041548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		# We need an absolute path.
7042548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		case $dir in
7043548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
7044548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		*)
7045548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  absdir=`cd "$dir" && pwd`
7046548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  if test -z "$absdir"; then
7047548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    func_warning "cannot determine absolute directory name of \`$dir'"
7048548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    absdir="$dir"
7049548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  fi
7050548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  ;;
7051548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		esac
7052548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		if $GREP "^installed=no" $deplib > /dev/null; then
7053548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		case $host in
7054548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		*-*-darwin*)
7055548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  depdepl=
7056548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
7057548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  if test -n "$deplibrary_names" ; then
7058548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    for tmp in $deplibrary_names ; do
7059548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		      depdepl=$tmp
7060548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    done
7061548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    if test -f "$absdir/$objdir/$depdepl" ; then
7062548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		      depdepl="$absdir/$objdir/$depdepl"
7063548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		      darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
7064548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen                      if test -z "$darwin_install_name"; then
7065548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen                          darwin_install_name=`${OTOOL64} -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
7066548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen                      fi
7067548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		      func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
7068548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		      func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}"
7069548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		      path=
7070548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    fi
7071548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  fi
7072548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  ;;
7073548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		*)
7074548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  path="-L$absdir/$objdir"
7075548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  ;;
7076548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		esac
7077548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		else
7078548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
7079548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  test -z "$libdir" && \
7080548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    func_fatal_error "\`$deplib' is not a valid libtool archive"
7081548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  test "$absdir" != "$libdir" && \
7082548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    func_warning "\`$deplib' seems to be moved"
7083548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
7084548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  path="-L$absdir"
7085548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		fi
7086548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		;;
7087548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      esac
7088548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      case " $deplibs " in
7089548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      *" $path "*) ;;
7090548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      *) deplibs="$path $deplibs" ;;
7091548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      esac
7092548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    done
7093548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi # link_all_deplibs != no
7094548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi # linkmode = lib
7095548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      done # for deplib in $libs
7096548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test "$pass" = link; then
7097548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test "$linkmode" = "prog"; then
7098548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
7099548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
7100548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	else
7101548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
7102548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
7103548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
7104548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      dependency_libs="$newdependency_libs"
7105548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test "$pass" = dlpreopen; then
7106548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Link the dlpreopened libraries before other libraries
7107548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	for deplib in $save_deplibs; do
7108548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  deplibs="$deplib $deplibs"
7109548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	done
7110548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
7111548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test "$pass" != dlopen; then
7112548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test "$pass" != conv; then
7113548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # Make sure lib_search_path contains only unique directories.
7114548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  lib_search_path=
7115548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  for dir in $newlib_search_path; do
7116548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    case "$lib_search_path " in
7117548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    *" $dir "*) ;;
7118548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    *) func_append lib_search_path " $dir" ;;
7119548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    esac
7120548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  done
7121548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  newlib_search_path=
7122548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
7123548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
7124548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test "$linkmode,$pass" != "prog,link"; then
7125548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  vars="deplibs"
7126548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	else
7127548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  vars="compile_deplibs finalize_deplibs"
7128548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
7129548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	for var in $vars dependency_libs; do
7130548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # Add libraries to $var in reverse order
7131548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  eval tmp_libs=\"\$$var\"
7132548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  new_libs=
7133548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  for deplib in $tmp_libs; do
7134548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # FIXME: Pedantically, this is the right thing to do, so
7135548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    #        that some nasty dependency loop isn't accidentally
7136548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    #        broken:
7137548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    #new_libs="$deplib $new_libs"
7138548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # Pragmatically, this seems to cause very few problems in
7139548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # practice:
7140548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    case $deplib in
7141548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    -L*) new_libs="$deplib $new_libs" ;;
7142548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    -R*) ;;
7143548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    *)
7144548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # And here is the reason: when a library appears more
7145548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # than once as an explicit dependence of a library, or
7146548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # is implicitly linked in more than once by the
7147548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # compiler, it is considered special, and multiple
7148548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # occurrences thereof are not removed.  Compare this
7149548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # with having the same library being listed as a
7150548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # dependency of multiple other libraries: in this case,
7151548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # we know (pedantically, we assume) the library does not
7152548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # need to be listed more than once, so we keep only the
7153548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # last copy.  This is not always right, but it is rare
7154548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # enough that we require users that really mean to play
7155548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # such unportable linking tricks to link the library
7156548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # using -Wl,-lname, so that libtool does not consider it
7157548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # for duplicate removal.
7158548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      case " $specialdeplibs " in
7159548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
7160548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      *)
7161548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		case " $new_libs " in
7162548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		*" $deplib "*) ;;
7163548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		*) new_libs="$deplib $new_libs" ;;
7164548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		esac
7165548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		;;
7166548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      esac
7167548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      ;;
7168548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    esac
7169548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  done
7170548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  tmp_libs=
7171548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  for deplib in $new_libs; do
7172548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    case $deplib in
7173548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    -L*)
7174548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      case " $tmp_libs " in
7175548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      *" $deplib "*) ;;
7176548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      *) func_append tmp_libs " $deplib" ;;
7177548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      esac
7178548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      ;;
7179548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    *) func_append tmp_libs " $deplib" ;;
7180548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    esac
7181548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  done
7182548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  eval $var=\"$tmp_libs\"
7183548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	done # for var
7184548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
7185548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Last step: remove runtime libs from dependency_libs
7186548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # (they stay in deplibs)
7187548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      tmp_libs=
7188548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      for i in $dependency_libs ; do
7189548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	case " $predeps $postdeps $compiler_lib_search_path " in
7190548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	*" $i "*)
7191548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  i=""
7192548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
7193548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	esac
7194548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test -n "$i" ; then
7195548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_append tmp_libs " $i"
7196548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
7197548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      done
7198548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      dependency_libs=$tmp_libs
7199548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    done # for pass
7200548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    if test "$linkmode" = prog; then
7201548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      dlfiles="$newdlfiles"
7202548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    fi
7203548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    if test "$linkmode" = prog || test "$linkmode" = lib; then
7204548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      dlprefiles="$newdlprefiles"
7205548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    fi
7206548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
7207548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    case $linkmode in
7208548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    oldlib)
7209548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
7210548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_warning "\`-dlopen' is ignored for archives"
7211548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
7212548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
7213548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      case " $deplibs" in
7214548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      *\ -l* | *\ -L*)
7215548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_warning "\`-l' and \`-L' are ignored for archives" ;;
7216548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      esac
7217548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
7218548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      test -n "$rpath" && \
7219548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_warning "\`-rpath' is ignored for archives"
7220548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
7221548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      test -n "$xrpath" && \
7222548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_warning "\`-R' is ignored for archives"
7223548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
7224548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      test -n "$vinfo" && \
7225548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_warning "\`-version-info/-version-number' is ignored for archives"
7226548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
7227548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      test -n "$release" && \
7228548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_warning "\`-release' is ignored for archives"
7229548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
7230548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      test -n "$export_symbols$export_symbols_regex" && \
7231548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_warning "\`-export-symbols' is ignored for archives"
7232548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
7233548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Now set the variables for building old libraries.
7234548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      build_libtool_libs=no
7235548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      oldlibs="$output"
7236548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_append objs "$old_deplibs"
7237548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      ;;
7238548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
7239548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    lib)
7240548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Make sure we only generate libraries of the form `libNAME.la'.
7241548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      case $outputname in
7242548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      lib*)
7243548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_stripname 'lib' '.la' "$outputname"
7244548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	name=$func_stripname_result
7245548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	eval shared_ext=\"$shrext_cmds\"
7246548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	eval libname=\"$libname_spec\"
7247548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
7248548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      *)
7249548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	test "$module" = no && \
7250548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_fatal_help "libtool library \`$output' must begin with \`lib'"
7251548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
7252548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test "$need_lib_prefix" != no; then
7253548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # Add the "lib" prefix for modules if required
7254548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_stripname '' '.la' "$outputname"
7255548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  name=$func_stripname_result
7256548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  eval shared_ext=\"$shrext_cmds\"
7257548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  eval libname=\"$libname_spec\"
7258548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	else
7259548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_stripname '' '.la' "$outputname"
7260548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  libname=$func_stripname_result
7261548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
7262548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
7263548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      esac
7264548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
7265548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test -n "$objs"; then
7266548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test "$deplibs_check_method" != pass_all; then
7267548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
7268548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	else
7269548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  echo
7270548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
7271548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  $ECHO "*** objects $objs is not portable!"
7272548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_append libobjs " $objs"
7273548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
7274548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
7275548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
7276548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      test "$dlself" != no && \
7277548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_warning "\`-dlopen self' is ignored for libtool libraries"
7278548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
7279548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      set dummy $rpath
7280548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      shift
7281548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      test "$#" -gt 1 && \
7282548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_warning "ignoring multiple \`-rpath's for a libtool library"
7283548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
7284548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      install_libdir="$1"
7285548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
7286548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      oldlibs=
7287548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test -z "$rpath"; then
7288548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test "$build_libtool_libs" = yes; then
7289548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # Building a libtool convenience library.
7290548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # Some compilers have problems with a `.al' extension so
7291548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # convenience libraries should have the same extension an
7292548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # archive normally would.
7293548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
7294548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  build_libtool_libs=convenience
7295548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  build_old_libs=yes
7296548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
7297548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
7298548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	test -n "$vinfo" && \
7299548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
7300548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
7301548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	test -n "$release" && \
7302548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_warning "\`-release' is ignored for convenience libraries"
7303548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      else
7304548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
7305548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Parse the version information argument.
7306548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	save_ifs="$IFS"; IFS=':'
7307548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	set dummy $vinfo 0 0 0
7308548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	shift
7309548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	IFS="$save_ifs"
7310548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
7311548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	test -n "$7" && \
7312548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_fatal_help "too many parameters to \`-version-info'"
7313548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
7314548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# convert absolute version numbers to libtool ages
7315548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# this retains compatibility with .la files and attempts
7316548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# to make the code below a bit more comprehensible
7317548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
7318548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	case $vinfo_number in
7319548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	yes)
7320548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  number_major="$1"
7321548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  number_minor="$2"
7322548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  number_revision="$3"
7323548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  #
7324548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # There are really only two kinds -- those that
7325548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # use the current revision as the major version
7326548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # and those that subtract age and use age as
7327548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # a minor version.  But, then there is irix
7328548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # which has an extra 1 added just for fun
7329548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  #
7330548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  case $version_type in
7331548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  darwin|linux|osf|windows|none)
7332548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_arith $number_major + $number_minor
7333548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    current=$func_arith_result
7334548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    age="$number_minor"
7335548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    revision="$number_revision"
7336548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    ;;
7337548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  freebsd-aout|freebsd-elf|qnx|sunos)
7338548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    current="$number_major"
7339548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    revision="$number_minor"
7340548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    age="0"
7341548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    ;;
7342548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  irix|nonstopux)
7343548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_arith $number_major + $number_minor
7344548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    current=$func_arith_result
7345548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    age="$number_minor"
7346548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    revision="$number_minor"
7347548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    lt_irix_increment=no
7348548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    ;;
7349548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  esac
7350548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
7351548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	no)
7352548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  current="$1"
7353548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  revision="$2"
7354548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  age="$3"
7355548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
7356548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	esac
7357548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
7358548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Check that each of the things are valid numbers.
7359548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	case $current in
7360548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	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]) ;;
7361548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	*)
7362548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_error "CURRENT \`$current' must be a nonnegative integer"
7363548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_fatal_error "\`$vinfo' is not valid version information"
7364548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
7365548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	esac
7366548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
7367548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	case $revision in
7368548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	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]) ;;
7369548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	*)
7370548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_error "REVISION \`$revision' must be a nonnegative integer"
7371548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_fatal_error "\`$vinfo' is not valid version information"
7372548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
7373548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	esac
7374548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
7375548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	case $age in
7376548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	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]) ;;
7377548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	*)
7378548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_error "AGE \`$age' must be a nonnegative integer"
7379548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_fatal_error "\`$vinfo' is not valid version information"
7380548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
7381548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	esac
7382548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
7383548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test "$age" -gt "$current"; then
7384548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_error "AGE \`$age' is greater than the current interface number \`$current'"
7385548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_fatal_error "\`$vinfo' is not valid version information"
7386548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
7387548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
7388548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Calculate the version variables.
7389548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	major=
7390548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	versuffix=
7391548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	verstring=
7392548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	case $version_type in
7393548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	none) ;;
7394548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
7395548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	darwin)
7396548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # Like Linux, but with the current version available in
7397548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # verstring for coding it into the library header
7398548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_arith $current - $age
7399548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  major=.$func_arith_result
7400548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  versuffix="$major.$age.$revision"
7401548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # Darwin ld doesn't like 0 for these options...
7402548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_arith $current + 1
7403548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  minor_current=$func_arith_result
7404548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
7405548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
7406548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
7407548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
7408548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	freebsd-aout)
7409548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  major=".$current"
7410548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  versuffix=".$current.$revision";
7411548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
7412548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
7413548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	freebsd-elf)
7414548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  major=".$current"
7415548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  versuffix=".$current"
7416548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
7417548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
7418548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	irix | nonstopux)
7419548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test "X$lt_irix_increment" = "Xno"; then
7420548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_arith $current - $age
7421548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  else
7422548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_arith $current - $age + 1
7423548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
7424548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  major=$func_arith_result
7425548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
7426548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  case $version_type in
7427548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    nonstopux) verstring_prefix=nonstopux ;;
7428548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    *)         verstring_prefix=sgi ;;
7429548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  esac
7430548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  verstring="$verstring_prefix$major.$revision"
7431548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
7432548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # Add in all the interfaces that we are compatible with.
7433548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  loop=$revision
7434548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  while test "$loop" -ne 0; do
7435548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_arith $revision - $loop
7436548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    iface=$func_arith_result
7437548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_arith $loop - 1
7438548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    loop=$func_arith_result
7439548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    verstring="$verstring_prefix$major.$iface:$verstring"
7440548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  done
7441548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
7442548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # Before this point, $major must not contain `.'.
7443548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  major=.$major
7444548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  versuffix="$major.$revision"
7445548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
7446548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
7447548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	linux)
7448548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_arith $current - $age
7449548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  major=.$func_arith_result
7450548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  versuffix="$major.$age.$revision"
7451548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
7452548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
7453548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	osf)
7454548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_arith $current - $age
7455548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  major=.$func_arith_result
7456548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  versuffix=".$current.$age.$revision"
7457548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  verstring="$current.$age.$revision"
7458548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
7459548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # Add in all the interfaces that we are compatible with.
7460548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  loop=$age
7461548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  while test "$loop" -ne 0; do
7462548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_arith $current - $loop
7463548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    iface=$func_arith_result
7464548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_arith $loop - 1
7465548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    loop=$func_arith_result
7466548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    verstring="$verstring:${iface}.0"
7467548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  done
7468548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
7469548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # Make executables depend on our current version.
7470548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_append verstring ":${current}.0"
7471548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
7472548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
7473548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	qnx)
7474548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  major=".$current"
7475548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  versuffix=".$current"
7476548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
7477548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
7478548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	sunos)
7479548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  major=".$current"
7480548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  versuffix=".$current.$revision"
7481548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
7482548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
7483548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	windows)
7484548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # Use '-' rather than '.', since we only want one
7485548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # extension on DOS 8.3 filesystems.
7486548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_arith $current - $age
7487548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  major=$func_arith_result
7488548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  versuffix="-$major"
7489548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
7490548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
7491548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	*)
7492548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_fatal_configuration "unknown library version type \`$version_type'"
7493548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
7494548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	esac
7495548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
7496548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Clear the version info if we defaulted, and they specified a release.
7497548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test -z "$vinfo" && test -n "$release"; then
7498548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  major=
7499548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  case $version_type in
7500548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  darwin)
7501548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # we can't check for "0.0" in archive_cmds due to quoting
7502548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # problems, so we reset it completely
7503548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    verstring=
7504548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    ;;
7505548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *)
7506548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    verstring="0.0"
7507548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    ;;
7508548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  esac
7509548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test "$need_version" = no; then
7510548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    versuffix=
7511548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  else
7512548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    versuffix=".0.0"
7513548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
7514548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
7515548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
7516548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Remove version info from name if versioning should be avoided
7517548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test "$avoid_version" = yes && test "$need_version" = no; then
7518548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  major=
7519548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  versuffix=
7520548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  verstring=""
7521548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
7522548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
7523548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Check to see if the archive will have undefined symbols.
7524548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test "$allow_undefined" = yes; then
7525548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test "$allow_undefined_flag" = unsupported; then
7526548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_warning "undefined symbols not allowed in $host shared libraries"
7527548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    build_libtool_libs=no
7528548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    build_old_libs=yes
7529548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
7530548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	else
7531548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # Don't allow undefined symbols.
7532548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  allow_undefined_flag="$no_undefined_flag"
7533548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
7534548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
7535548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
7536548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
7537548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_generate_dlsyms "$libname" "$libname" "yes"
7538548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_append libobjs " $symfileobj"
7539548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      test "X$libobjs" = "X " && libobjs=
7540548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
7541548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test "$opt_mode" != relink; then
7542548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Remove our outputs, but don't remove object files since they
7543548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# may have been created when compiling PIC objects.
7544548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	removelist=
7545548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	tempremovelist=`$ECHO "$output_objdir/*"`
7546548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	for p in $tempremovelist; do
7547548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  case $p in
7548548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    *.$objext | *.gcno)
7549548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	       ;;
7550548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
7551548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	       if test "X$precious_files_regex" != "X"; then
7552548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		 if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
7553548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		 then
7554548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		   continue
7555548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		 fi
7556548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	       fi
7557548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	       func_append removelist " $p"
7558548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	       ;;
7559548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    *) ;;
7560548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  esac
7561548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	done
7562548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	test -n "$removelist" && \
7563548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_show_eval "${RM}r \$removelist"
7564548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
7565548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
7566548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Now set the variables for building old libraries.
7567548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
7568548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_append oldlibs " $output_objdir/$libname.$libext"
7569548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
7570548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Transform .lo files to .o files.
7571548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP`
7572548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
7573548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
7574548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Eliminate all temporary directories.
7575548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      #for path in $notinst_path; do
7576548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      #	lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"`
7577548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      #	deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"`
7578548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      #	dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"`
7579548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      #done
7580548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
7581548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test -n "$xrpath"; then
7582548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# If the user specified any rpath flags, then add them.
7583548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	temp_xrpath=
7584548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	for libdir in $xrpath; do
7585548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_replace_sysroot "$libdir"
7586548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_append temp_xrpath " -R$func_replace_sysroot_result"
7587548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  case "$finalize_rpath " in
7588548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *" $libdir "*) ;;
7589548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *) func_append finalize_rpath " $libdir" ;;
7590548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  esac
7591548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	done
7592548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
7593548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  dependency_libs="$temp_xrpath $dependency_libs"
7594548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
7595548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
7596548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
7597548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Make sure dlfiles contains only unique files that won't be dlpreopened
7598548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      old_dlfiles="$dlfiles"
7599548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      dlfiles=
7600548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      for lib in $old_dlfiles; do
7601548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	case " $dlprefiles $dlfiles " in
7602548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	*" $lib "*) ;;
7603548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	*) func_append dlfiles " $lib" ;;
7604548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	esac
7605548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      done
7606548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
7607548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Make sure dlprefiles contains only unique files
7608548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      old_dlprefiles="$dlprefiles"
7609548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      dlprefiles=
7610548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      for lib in $old_dlprefiles; do
7611548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	case "$dlprefiles " in
7612548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	*" $lib "*) ;;
7613548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	*) func_append dlprefiles " $lib" ;;
7614548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	esac
7615548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      done
7616548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
7617548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test "$build_libtool_libs" = yes; then
7618548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test -n "$rpath"; then
7619548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  case $host in
7620548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*)
7621548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # these systems don't actually have a c library (as such)!
7622548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    ;;
7623548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *-*-rhapsody* | *-*-darwin1.[012])
7624548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # Rhapsody C library is in the System framework
7625548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_append deplibs " System.ltframework"
7626548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    ;;
7627548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *-*-netbsd*)
7628548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # Don't link with libc until the a.out ld.so is fixed.
7629548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    ;;
7630548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
7631548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # Do not include libc due to us having libc/libc_r.
7632548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    ;;
7633548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *-*-sco3.2v5* | *-*-sco5v6*)
7634548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # Causes problems with __ctype
7635548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    ;;
7636548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
7637548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # Compiler inserts libc in the correct place for threads to work
7638548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    ;;
7639548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *)
7640548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # Add libc to deplibs on all other systems if necessary.
7641548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if test "$build_libtool_need_lc" = "yes"; then
7642548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      func_append deplibs " -lc"
7643548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
7644548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    ;;
7645548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  esac
7646548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
7647548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
7648548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Transform deplibs into only deplibs that can be linked in shared.
7649548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	name_save=$name
7650548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	libname_save=$libname
7651548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	release_save=$release
7652548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	versuffix_save=$versuffix
7653548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	major_save=$major
7654548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# I'm not sure if I'm treating the release correctly.  I think
7655548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# release should show up in the -l (ie -lgmp5) so we don't want to
7656548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# add it in twice.  Is that correct?
7657548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	release=""
7658548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	versuffix=""
7659548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	major=""
7660548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	newdeplibs=
7661548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	droppeddeps=no
7662548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	case $deplibs_check_method in
7663548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	pass_all)
7664548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # Don't check for shared/static.  Everything works.
7665548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # This might be a little naive.  We might want to check
7666548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # whether the library exists or not.  But this is on
7667548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # osf3 & osf4 and I'm not really sure... Just
7668548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # implementing what was already the behavior.
7669548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  newdeplibs=$deplibs
7670548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
7671548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	test_compile)
7672548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # This code stresses the "libraries are programs" paradigm to its
7673548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # limits. Maybe even breaks it.  We compile a program, linking it
7674548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # against the deplibs as a proxy for the library.  Then we can check
7675548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # whether they linked in statically or dynamically with ldd.
7676548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  $opt_dry_run || $RM conftest.c
7677548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  cat > conftest.c <<EOF
7678548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  int main() { return 0; }
7679548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenEOF
7680548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  $opt_dry_run || $RM conftest
7681548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
7682548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    ldd_output=`ldd conftest`
7683548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    for i in $deplibs; do
7684548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      case $i in
7685548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      -l*)
7686548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		func_stripname -l '' "$i"
7687548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		name=$func_stripname_result
7688548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
7689548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  case " $predeps $postdeps " in
7690548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  *" $i "*)
7691548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    func_append newdeplibs " $i"
7692548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    i=""
7693548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    ;;
7694548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  esac
7695548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		fi
7696548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		if test -n "$i" ; then
7697548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  libname=`eval "\\$ECHO \"$libname_spec\""`
7698548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
7699548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  set dummy $deplib_matches; shift
7700548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  deplib_match=$1
7701548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
7702548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    func_append newdeplibs " $i"
7703548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  else
7704548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    droppeddeps=yes
7705548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    echo
7706548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    $ECHO "*** Warning: dynamic linker does not accept needed library $i."
7707548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    echo "*** I have the capability to make that library automatically link in when"
7708548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    echo "*** you link to this library.  But I can only do this if you have a"
7709548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    echo "*** shared version of the library, which I believe you do not have"
7710548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    echo "*** because a test_compile did reveal that the linker did not use it for"
7711548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    echo "*** its dynamic dependency list that programs get resolved with at runtime."
7712548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  fi
7713548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		fi
7714548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		;;
7715548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      *)
7716548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		func_append newdeplibs " $i"
7717548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		;;
7718548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      esac
7719548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    done
7720548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  else
7721548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # Error occurred in the first compile.  Let's try to salvage
7722548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # the situation: Compile a separate program for each library.
7723548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    for i in $deplibs; do
7724548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      case $i in
7725548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      -l*)
7726548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		func_stripname -l '' "$i"
7727548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		name=$func_stripname_result
7728548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		$opt_dry_run || $RM conftest
7729548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
7730548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  ldd_output=`ldd conftest`
7731548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
7732548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    case " $predeps $postdeps " in
7733548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    *" $i "*)
7734548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		      func_append newdeplibs " $i"
7735548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		      i=""
7736548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		      ;;
7737548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    esac
7738548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  fi
7739548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  if test -n "$i" ; then
7740548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    libname=`eval "\\$ECHO \"$libname_spec\""`
7741548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
7742548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    set dummy $deplib_matches; shift
7743548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    deplib_match=$1
7744548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
7745548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		      func_append newdeplibs " $i"
7746548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    else
7747548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		      droppeddeps=yes
7748548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		      echo
7749548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		      $ECHO "*** Warning: dynamic linker does not accept needed library $i."
7750548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		      echo "*** I have the capability to make that library automatically link in when"
7751548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		      echo "*** you link to this library.  But I can only do this if you have a"
7752548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		      echo "*** shared version of the library, which you do not appear to have"
7753548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		      echo "*** because a test_compile did reveal that the linker did not use this one"
7754548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		      echo "*** as a dynamic dependency that programs can get resolved with at runtime."
7755548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    fi
7756548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  fi
7757548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		else
7758548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  droppeddeps=yes
7759548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  echo
7760548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  $ECHO "*** Warning!  Library $i is needed by this library but I was not able to"
7761548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  echo "*** make it link in!  You will probably need to install it or some"
7762548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  echo "*** library that it depends on before this library will be fully"
7763548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  echo "*** functional.  Installing it before continuing would be even better."
7764548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		fi
7765548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		;;
7766548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      *)
7767548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		func_append newdeplibs " $i"
7768548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		;;
7769548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      esac
7770548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    done
7771548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
7772548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
7773548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	file_magic*)
7774548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  set dummy $deplibs_check_method; shift
7775548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
7776548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  for a_deplib in $deplibs; do
7777548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    case $a_deplib in
7778548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    -l*)
7779548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      func_stripname -l '' "$a_deplib"
7780548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      name=$func_stripname_result
7781548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
7782548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		case " $predeps $postdeps " in
7783548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		*" $a_deplib "*)
7784548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  func_append newdeplibs " $a_deplib"
7785548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  a_deplib=""
7786548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  ;;
7787548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		esac
7788548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      fi
7789548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      if test -n "$a_deplib" ; then
7790548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		libname=`eval "\\$ECHO \"$libname_spec\""`
7791548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		if test -n "$file_magic_glob"; then
7792548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob`
7793548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		else
7794548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  libnameglob=$libname
7795548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		fi
7796548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob`
7797548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
7798548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  if test "$want_nocaseglob" = yes; then
7799548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    shopt -s nocaseglob
7800548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
7801548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    $nocaseglob
7802548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  else
7803548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
7804548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  fi
7805548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  for potent_lib in $potential_libs; do
7806548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		      # Follow soft links.
7807548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		      if ls -lLd "$potent_lib" 2>/dev/null |
7808548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			 $GREP " -> " >/dev/null; then
7809548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			continue
7810548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		      fi
7811548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		      # The statement above tries to avoid entering an
7812548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		      # endless loop below, in case of cyclic links.
7813548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		      # We might still enter an endless loop, since a link
7814548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		      # loop can be closed while we follow links,
7815548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		      # but so what?
7816548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		      potlib="$potent_lib"
7817548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		      while test -h "$potlib" 2>/dev/null; do
7818548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
7819548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			case $potliblink in
7820548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
7821548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			*) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";;
7822548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			esac
7823548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		      done
7824548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
7825548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			 $SED -e 10q |
7826548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			 $EGREP "$file_magic_regex" > /dev/null; then
7827548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			func_append newdeplibs " $a_deplib"
7828548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			a_deplib=""
7829548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen			break 2
7830548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		      fi
7831548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  done
7832548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		done
7833548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      fi
7834548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      if test -n "$a_deplib" ; then
7835548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		droppeddeps=yes
7836548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		echo
7837548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
7838548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		echo "*** I have the capability to make that library automatically link in when"
7839548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		echo "*** you link to this library.  But I can only do this if you have a"
7840548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		echo "*** shared version of the library, which you do not appear to have"
7841548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		echo "*** because I did check the linker path looking for a file starting"
7842548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		if test -z "$potlib" ; then
7843548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
7844548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		else
7845548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  $ECHO "*** with $libname and none of the candidates passed a file format test"
7846548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  $ECHO "*** using a file magic. Last file checked: $potlib"
7847548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		fi
7848548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      fi
7849548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      ;;
7850548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    *)
7851548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # Add a -L argument.
7852548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      func_append newdeplibs " $a_deplib"
7853548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      ;;
7854548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    esac
7855548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  done # Gone through all deplibs.
7856548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
7857548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	match_pattern*)
7858548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  set dummy $deplibs_check_method; shift
7859548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
7860548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  for a_deplib in $deplibs; do
7861548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    case $a_deplib in
7862548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    -l*)
7863548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      func_stripname -l '' "$a_deplib"
7864548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      name=$func_stripname_result
7865548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
7866548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		case " $predeps $postdeps " in
7867548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		*" $a_deplib "*)
7868548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  func_append newdeplibs " $a_deplib"
7869548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  a_deplib=""
7870548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  ;;
7871548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		esac
7872548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      fi
7873548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      if test -n "$a_deplib" ; then
7874548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		libname=`eval "\\$ECHO \"$libname_spec\""`
7875548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
7876548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
7877548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  for potent_lib in $potential_libs; do
7878548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    potlib="$potent_lib" # see symlink-check above in file_magic test
7879548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \
7880548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		       $EGREP "$match_pattern_regex" > /dev/null; then
7881548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		      func_append newdeplibs " $a_deplib"
7882548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		      a_deplib=""
7883548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		      break 2
7884548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    fi
7885548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  done
7886548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		done
7887548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      fi
7888548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      if test -n "$a_deplib" ; then
7889548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		droppeddeps=yes
7890548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		echo
7891548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
7892548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		echo "*** I have the capability to make that library automatically link in when"
7893548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		echo "*** you link to this library.  But I can only do this if you have a"
7894548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		echo "*** shared version of the library, which you do not appear to have"
7895548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		echo "*** because I did check the linker path looking for a file starting"
7896548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		if test -z "$potlib" ; then
7897548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
7898548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		else
7899548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  $ECHO "*** with $libname and none of the candidates passed a file format test"
7900548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  $ECHO "*** using a regex pattern. Last file checked: $potlib"
7901548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		fi
7902548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      fi
7903548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      ;;
7904548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    *)
7905548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # Add a -L argument.
7906548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      func_append newdeplibs " $a_deplib"
7907548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      ;;
7908548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    esac
7909548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  done # Gone through all deplibs.
7910548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
7911548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	none | unknown | *)
7912548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  newdeplibs=""
7913548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'`
7914548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
7915548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    for i in $predeps $postdeps ; do
7916548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # can't use Xsed below, because $i might contain '/'
7917548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"`
7918548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    done
7919548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
7920548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  case $tmp_deplibs in
7921548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *[!\	\ ]*)
7922548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    echo
7923548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if test "X$deplibs_check_method" = "Xnone"; then
7924548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      echo "*** Warning: inter-library dependencies are not supported in this platform."
7925548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    else
7926548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      echo "*** Warning: inter-library dependencies are not known to be supported."
7927548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
7928548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    echo "*** All declared inter-library dependencies are being dropped."
7929548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    droppeddeps=yes
7930548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    ;;
7931548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  esac
7932548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
7933548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	esac
7934548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	versuffix=$versuffix_save
7935548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	major=$major_save
7936548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	release=$release_save
7937548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	libname=$libname_save
7938548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	name=$name_save
7939548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
7940548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	case $host in
7941548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	*-*-rhapsody* | *-*-darwin1.[012])
7942548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # On Rhapsody replace the C library with the System framework
7943548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'`
7944548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
7945548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	esac
7946548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
7947548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test "$droppeddeps" = yes; then
7948548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test "$module" = yes; then
7949548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    echo
7950548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    echo "*** Warning: libtool could not satisfy all declared inter-library"
7951548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    $ECHO "*** dependencies of module $libname.  Therefore, libtool will create"
7952548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    echo "*** a static module, that should work as long as the dlopening"
7953548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    echo "*** application is linked with the -dlopen flag."
7954548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if test -z "$global_symbol_pipe"; then
7955548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      echo
7956548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      echo "*** However, this would only work if libtool was able to extract symbol"
7957548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
7958548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      echo "*** not find such a program.  So, this module is probably useless."
7959548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      echo "*** \`nm' from GNU binutils and a full rebuild may help."
7960548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
7961548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if test "$build_old_libs" = no; then
7962548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      oldlibs="$output_objdir/$libname.$libext"
7963548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      build_libtool_libs=module
7964548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      build_old_libs=yes
7965548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    else
7966548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      build_libtool_libs=no
7967548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
7968548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  else
7969548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    echo "*** The inter-library dependencies that have been dropped here will be"
7970548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    echo "*** automatically added whenever a program is linked with this library"
7971548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    echo "*** or is declared to -dlopen it."
7972548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
7973548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if test "$allow_undefined" = no; then
7974548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      echo
7975548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      echo "*** Since this library must not contain undefined symbols,"
7976548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      echo "*** because either the platform does not support them or"
7977548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      echo "*** it was explicitly requested with -no-undefined,"
7978548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      echo "*** libtool will only create a static version of it."
7979548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      if test "$build_old_libs" = no; then
7980548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		oldlibs="$output_objdir/$libname.$libext"
7981548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		build_libtool_libs=module
7982548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		build_old_libs=yes
7983548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      else
7984548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		build_libtool_libs=no
7985548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      fi
7986548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
7987548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
7988548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
7989548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Done checking deplibs!
7990548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	deplibs=$newdeplibs
7991548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
7992548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Time to change all our "foo.ltframework" stuff back to "-framework foo"
7993548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      case $host in
7994548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	*-*-darwin*)
7995548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
7996548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
7997548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
7998548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
7999548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      esac
8000548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8001548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # move library search paths that coincide with paths to not yet
8002548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # installed libraries to the beginning of the library search list
8003548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      new_libs=
8004548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      for path in $notinst_path; do
8005548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	case " $new_libs " in
8006548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	*" -L$path/$objdir "*) ;;
8007548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	*)
8008548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  case " $deplibs " in
8009548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *" -L$path/$objdir "*)
8010548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_append new_libs " -L$path/$objdir" ;;
8011548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  esac
8012548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
8013548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	esac
8014548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      done
8015548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      for deplib in $deplibs; do
8016548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	case $deplib in
8017548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	-L*)
8018548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  case " $new_libs " in
8019548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *" $deplib "*) ;;
8020548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *) func_append new_libs " $deplib" ;;
8021548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  esac
8022548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
8023548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	*) func_append new_libs " $deplib" ;;
8024548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	esac
8025548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      done
8026548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      deplibs="$new_libs"
8027548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8028548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # All the library-specific variables (install_libdir is set above).
8029548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      library_names=
8030548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      old_library=
8031548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      dlname=
8032548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8033548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Test again, we may have decided not to build it any more
8034548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test "$build_libtool_libs" = yes; then
8035548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test "$hardcode_into_libs" = yes; then
8036548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # Hardcode the library paths
8037548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  hardcode_libdirs=
8038548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  dep_rpath=
8039548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  rpath="$finalize_rpath"
8040548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  test "$opt_mode" != relink && rpath="$compile_rpath$rpath"
8041548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  for libdir in $rpath; do
8042548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if test -n "$hardcode_libdir_flag_spec"; then
8043548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      if test -n "$hardcode_libdir_separator"; then
8044548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		func_replace_sysroot "$libdir"
8045548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		libdir=$func_replace_sysroot_result
8046548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		if test -z "$hardcode_libdirs"; then
8047548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  hardcode_libdirs="$libdir"
8048548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		else
8049548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  # Just accumulate the unique libdirs.
8050548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
8051548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
8052548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    ;;
8053548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  *)
8054548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
8055548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    ;;
8056548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  esac
8057548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		fi
8058548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      else
8059548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		eval flag=\"$hardcode_libdir_flag_spec\"
8060548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		func_append dep_rpath " $flag"
8061548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      fi
8062548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    elif test -n "$runpath_var"; then
8063548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      case "$perm_rpath " in
8064548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      *" $libdir "*) ;;
8065548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      *) func_apped perm_rpath " $libdir" ;;
8066548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      esac
8067548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
8068548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  done
8069548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # Substitute the hardcoded libdirs into the rpath.
8070548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test -n "$hardcode_libdir_separator" &&
8071548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	     test -n "$hardcode_libdirs"; then
8072548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    libdir="$hardcode_libdirs"
8073548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if test -n "$hardcode_libdir_flag_spec_ld"; then
8074548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
8075548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    else
8076548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      eval dep_rpath=\"$hardcode_libdir_flag_spec\"
8077548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
8078548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
8079548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
8080548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # We should set the runpath_var.
8081548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    rpath=
8082548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    for dir in $perm_rpath; do
8083548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      func_append rpath "$dir:"
8084548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    done
8085548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
8086548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
8087548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
8088548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
8089548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8090548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	shlibpath="$finalize_shlibpath"
8091548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
8092548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test -n "$shlibpath"; then
8093548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
8094548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
8095548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8096548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Get the real and link names of the library.
8097548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	eval shared_ext=\"$shrext_cmds\"
8098548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	eval library_names=\"$library_names_spec\"
8099548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	set dummy $library_names
8100548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	shift
8101548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	realname="$1"
8102548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	shift
8103548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8104548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test -n "$soname_spec"; then
8105548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  eval soname=\"$soname_spec\"
8106548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	else
8107548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  soname="$realname"
8108548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
8109548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test -z "$dlname"; then
8110548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  dlname=$soname
8111548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
8112548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8113548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	lib="$output_objdir/$realname"
8114548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	linknames=
8115548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	for link
8116548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	do
8117548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_append linknames " $link"
8118548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	done
8119548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8120548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Use standard objects if they are pic
8121548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP`
8122548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	test "X$libobjs" = "X " && libobjs=
8123548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8124548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	delfiles=
8125548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test -n "$export_symbols" && test -n "$include_expsyms"; then
8126548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
8127548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  export_symbols="$output_objdir/$libname.uexp"
8128548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_append delfiles " $export_symbols"
8129548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
8130548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8131548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	orig_export_symbols=
8132548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	case $host_os in
8133548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	cygwin* | mingw* | cegcc*)
8134548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
8135548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # exporting using user supplied symfile
8136548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
8137548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # and it's NOT already a .def file. Must figure out
8138548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # which of the given symbols are data symbols and tag
8139548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # them as such. So, trigger use of export_symbols_cmds.
8140548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # export_symbols gets reassigned inside the "prepare
8141548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # the list of exported symbols" if statement, so the
8142548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # include_expsyms logic still works.
8143548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      orig_export_symbols="$export_symbols"
8144548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      export_symbols=
8145548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      always_export_symbols=yes
8146548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
8147548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
8148548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
8149548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	esac
8150548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8151548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Prepare the list of exported symbols
8152548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test -z "$export_symbols"; then
8153548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
8154548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_verbose "generating symbol list for \`$libname.la'"
8155548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    export_symbols="$output_objdir/$libname.exp"
8156548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    $opt_dry_run || $RM $export_symbols
8157548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    cmds=$export_symbols_cmds
8158548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    save_ifs="$IFS"; IFS='~'
8159548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    for cmd1 in $cmds; do
8160548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      IFS="$save_ifs"
8161548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # Take the normal branch if the nm_file_list_spec branch
8162548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # doesn't work or if tool conversion is not needed.
8163548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      case $nm_file_list_spec~$to_tool_file_cmd in
8164548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		*~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*)
8165548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  try_normal_branch=yes
8166548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  eval cmd=\"$cmd1\"
8167548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  func_len " $cmd"
8168548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  len=$func_len_result
8169548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  ;;
8170548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		*)
8171548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  try_normal_branch=no
8172548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  ;;
8173548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      esac
8174548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      if test "$try_normal_branch" = yes \
8175548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		 && { test "$len" -lt "$max_cmd_len" \
8176548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		      || test "$max_cmd_len" -le -1; }
8177548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      then
8178548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		func_show_eval "$cmd" 'exit $?'
8179548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		skipped_export=false
8180548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      elif test -n "$nm_file_list_spec"; then
8181548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		func_basename "$output"
8182548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		output_la=$func_basename_result
8183548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		save_libobjs=$libobjs
8184548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		save_output=$output
8185548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		output=${output_objdir}/${output_la}.nm
8186548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		func_to_tool_file "$output"
8187548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		libobjs=$nm_file_list_spec$func_to_tool_file_result
8188548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		func_append delfiles " $output"
8189548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		func_verbose "creating $NM input file list: $output"
8190548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		for obj in $save_libobjs; do
8191548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  func_to_tool_file "$obj"
8192548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  $ECHO "$func_to_tool_file_result"
8193548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		done > "$output"
8194548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		eval cmd=\"$cmd1\"
8195548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		func_show_eval "$cmd" 'exit $?'
8196548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		output=$save_output
8197548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		libobjs=$save_libobjs
8198548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		skipped_export=false
8199548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      else
8200548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		# The command line is too long to execute in one step.
8201548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		func_verbose "using reloadable object file for export list..."
8202548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		skipped_export=:
8203548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		# Break out early, otherwise skipped_export may be
8204548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		# set to false by a later but shorter cmd.
8205548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		break
8206548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      fi
8207548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    done
8208548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    IFS="$save_ifs"
8209548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
8210548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
8211548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
8212548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
8213548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
8214548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
8215548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8216548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test -n "$export_symbols" && test -n "$include_expsyms"; then
8217548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  tmp_export_symbols="$export_symbols"
8218548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
8219548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
8220548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
8221548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8222548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
8223548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # The given exports_symbols file has to be filtered, so filter it.
8224548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
8225548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # FIXME: $output_objdir/$libname.filter potentially contains lots of
8226548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # 's' commands which not all seds can handle. GNU sed should be fine
8227548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # though. Also, the filter scales superlinearly with the number of
8228548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # global variables. join(1) would be nice here, but unfortunately
8229548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # isn't a blessed tool.
8230548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
8231548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_append delfiles " $export_symbols $output_objdir/$libname.filter"
8232548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  export_symbols=$output_objdir/$libname.def
8233548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
8234548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
8235548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8236548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	tmp_deplibs=
8237548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	inst_prefix_arg=
8238548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	for test_deplib in $deplibs; do
8239548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  case " $convenience " in
8240548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *" $test_deplib "*) ;;
8241548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *)
8242548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if test -n "$inst_prefix_dir" && test "$inst_prefix_dir" != "/" && (echo "$test_deplib" | grep -- "$inst_prefix_dir" >/dev/null); then
8243548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    	func_append inst_prefix_arg " $test_deplib"
8244548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    else
8245548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		func_append tmp_deplibs " $test_deplib"
8246548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
8247548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    ;;
8248548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  esac
8249548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	done
8250548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	deplibs="$tmp_deplibs"
8251548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test -n "$inst_prefix_arg"; then
8252548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		deplibs="$inst_prefix_arg $deplibs"
8253548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
8254548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8255548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test -n "$convenience"; then
8256548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test -n "$whole_archive_flag_spec" &&
8257548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    test "$compiler_needs_object" = yes &&
8258548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    test -z "$libobjs"; then
8259548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # extract the archives, so we have objects to list.
8260548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # TODO: could optimize this to just extract one archive.
8261548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    whole_archive_flag_spec=
8262548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
8263548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test -n "$whole_archive_flag_spec"; then
8264548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    save_libobjs=$libobjs
8265548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
8266548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    test "X$libobjs" = "X " && libobjs=
8267548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  else
8268548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    gentop="$output_objdir/${outputname}x"
8269548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_append generated " $gentop"
8270548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8271548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_extract_archives $gentop $convenience
8272548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_append libobjs " $func_extract_archives_result"
8273548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    test "X$libobjs" = "X " && libobjs=
8274548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
8275548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
8276548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8277548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
8278548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  eval flag=\"$thread_safe_flag_spec\"
8279548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_append linker_flags " $flag"
8280548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
8281548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8282548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Make a backup of the uninstalled library when relinking
8283548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test "$opt_mode" = relink; then
8284548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
8285548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
8286548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8287548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Do each of the archive commands.
8288548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test "$module" = yes && test -n "$module_cmds" ; then
8289548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
8290548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    eval test_cmds=\"$module_expsym_cmds\"
8291548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    cmds=$module_expsym_cmds
8292548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  else
8293548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    eval test_cmds=\"$module_cmds\"
8294548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    cmds=$module_cmds
8295548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
8296548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	else
8297548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
8298548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    eval test_cmds=\"$archive_expsym_cmds\"
8299548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    cmds=$archive_expsym_cmds
8300548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  else
8301548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    eval test_cmds=\"$archive_cmds\"
8302548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    cmds=$archive_cmds
8303548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
8304548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
8305548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8306548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test "X$skipped_export" != "X:" &&
8307548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	   func_len " $test_cmds" &&
8308548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	   len=$func_len_result &&
8309548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	   test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
8310548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  :
8311548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	else
8312548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # The command line is too long to link in one step, link piecewise
8313548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # or, if using GNU ld and skipped_export is not :, use a linker
8314548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # script.
8315548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8316548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # Save the value of $output and $libobjs because we want to
8317548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # use them later.  If we have whole_archive_flag_spec, we
8318548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # want to use save_libobjs as it was before
8319548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # whole_archive_flag_spec was expanded, because we can't
8320548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # assume the linker understands whole_archive_flag_spec.
8321548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # This may have to be revisited, in case too many
8322548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # convenience libraries get linked in and end up exceeding
8323548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # the spec.
8324548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
8325548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    save_libobjs=$libobjs
8326548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
8327548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  save_output=$output
8328548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_basename "$output"
8329548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  output_la=$func_basename_result
8330548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8331548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # Clear the reloadable object creation command queue and
8332548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # initialize k to one.
8333548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  test_cmds=
8334548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  concat_cmds=
8335548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  objlist=
8336548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  last_robj=
8337548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  k=1
8338548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8339548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
8340548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    output=${output_objdir}/${output_la}.lnkscript
8341548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_verbose "creating GNU ld script: $output"
8342548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    echo 'INPUT (' > $output
8343548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    for obj in $save_libobjs
8344548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    do
8345548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      func_to_tool_file "$obj"
8346548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      $ECHO "$func_to_tool_file_result" >> $output
8347548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    done
8348548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    echo ')' >> $output
8349548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_append delfiles " $output"
8350548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_to_tool_file "$output"
8351548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    output=$func_to_tool_file_result
8352548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
8353548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    output=${output_objdir}/${output_la}.lnk
8354548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_verbose "creating linker input file list: $output"
8355548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    : > $output
8356548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    set x $save_libobjs
8357548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    shift
8358548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    firstobj=
8359548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if test "$compiler_needs_object" = yes; then
8360548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      firstobj="$1 "
8361548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      shift
8362548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
8363548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    for obj
8364548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    do
8365548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      func_to_tool_file "$obj"
8366548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      $ECHO "$func_to_tool_file_result" >> $output
8367548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    done
8368548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_append delfiles " $output"
8369548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_to_tool_file "$output"
8370548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    output=$firstobj\"$file_list_spec$func_to_tool_file_result\"
8371548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  else
8372548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if test -n "$save_libobjs"; then
8373548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      func_verbose "creating reloadable object files..."
8374548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      output=$output_objdir/$output_la-${k}.$objext
8375548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      eval test_cmds=\"$reload_cmds\"
8376548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      func_len " $test_cmds"
8377548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      len0=$func_len_result
8378548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      len=$len0
8379548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8380548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # Loop over the list of objects to be linked.
8381548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      for obj in $save_libobjs
8382548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      do
8383548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		func_len " $obj"
8384548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		func_arith $len + $func_len_result
8385548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		len=$func_arith_result
8386548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		if test "X$objlist" = X ||
8387548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		   test "$len" -lt "$max_cmd_len"; then
8388548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  func_append objlist " $obj"
8389548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		else
8390548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  # The command $test_cmds is almost too long, add a
8391548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  # command to the queue.
8392548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  if test "$k" -eq 1 ; then
8393548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    # The first file doesn't have a previous command to add.
8394548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    reload_objs=$objlist
8395548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    eval concat_cmds=\"$reload_cmds\"
8396548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  else
8397548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    # All subsequent reloadable object files will link in
8398548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    # the last one created.
8399548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    reload_objs="$objlist $last_robj"
8400548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\"
8401548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  fi
8402548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  last_robj=$output_objdir/$output_la-${k}.$objext
8403548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  func_arith $k + 1
8404548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  k=$func_arith_result
8405548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  output=$output_objdir/$output_la-${k}.$objext
8406548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  objlist=" $obj"
8407548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  func_len " $last_robj"
8408548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  func_arith $len0 + $func_len_result
8409548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  len=$func_arith_result
8410548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		fi
8411548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      done
8412548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # Handle the remaining objects by creating one last
8413548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # reloadable object file.  All subsequent reloadable object
8414548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # files will link in the last one created.
8415548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
8416548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      reload_objs="$objlist $last_robj"
8417548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      eval concat_cmds=\"\${concat_cmds}$reload_cmds\"
8418548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      if test -n "$last_robj"; then
8419548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	        eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
8420548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      fi
8421548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      func_append delfiles " $output"
8422548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8423548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    else
8424548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      output=
8425548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
8426548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8427548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if ${skipped_export-false}; then
8428548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      func_verbose "generating symbol list for \`$libname.la'"
8429548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      export_symbols="$output_objdir/$libname.exp"
8430548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      $opt_dry_run || $RM $export_symbols
8431548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      libobjs=$output
8432548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # Append the command to create the export file.
8433548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
8434548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
8435548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      if test -n "$last_robj"; then
8436548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
8437548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      fi
8438548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
8439548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8440548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    test -n "$save_libobjs" &&
8441548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      func_verbose "creating a temporary reloadable object file: $output"
8442548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8443548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # Loop through the commands generated above and execute them.
8444548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    save_ifs="$IFS"; IFS='~'
8445548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    for cmd in $concat_cmds; do
8446548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      IFS="$save_ifs"
8447548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      $opt_silent || {
8448548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  func_quote_for_expand "$cmd"
8449548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  eval "func_echo $func_quote_for_expand_result"
8450548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      }
8451548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      $opt_dry_run || eval "$cmd" || {
8452548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		lt_exit=$?
8453548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8454548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		# Restore the uninstalled library and exit
8455548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		if test "$opt_mode" = relink; then
8456548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  ( cd "$output_objdir" && \
8457548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    $RM "${realname}T" && \
8458548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		    $MV "${realname}U" "$realname" )
8459548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		fi
8460548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8461548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		exit $lt_exit
8462548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      }
8463548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    done
8464548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    IFS="$save_ifs"
8465548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8466548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if test -n "$export_symbols_regex" && ${skipped_export-false}; then
8467548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
8468548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
8469548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
8470548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
8471548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8472548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen          if ${skipped_export-false}; then
8473548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if test -n "$export_symbols" && test -n "$include_expsyms"; then
8474548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      tmp_export_symbols="$export_symbols"
8475548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
8476548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
8477548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
8478548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8479548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if test -n "$orig_export_symbols"; then
8480548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # The given exports_symbols file has to be filtered, so filter it.
8481548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
8482548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # FIXME: $output_objdir/$libname.filter potentially contains lots of
8483548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # 's' commands which not all seds can handle. GNU sed should be fine
8484548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # though. Also, the filter scales superlinearly with the number of
8485548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # global variables. join(1) would be nice here, but unfortunately
8486548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # isn't a blessed tool.
8487548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
8488548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      func_append delfiles " $export_symbols $output_objdir/$libname.filter"
8489548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      export_symbols=$output_objdir/$libname.def
8490548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
8491548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
8492548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
8493548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8494548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  libobjs=$output
8495548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # Restore the value of output.
8496548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  output=$save_output
8497548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8498548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
8499548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
8500548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    test "X$libobjs" = "X " && libobjs=
8501548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
8502548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # Expand the library linking commands again to reset the
8503548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # value of $libobjs for piecewise linking.
8504548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8505548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # Do each of the archive commands.
8506548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test "$module" = yes && test -n "$module_cmds" ; then
8507548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
8508548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      cmds=$module_expsym_cmds
8509548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    else
8510548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      cmds=$module_cmds
8511548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
8512548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  else
8513548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
8514548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      cmds=$archive_expsym_cmds
8515548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    else
8516548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      cmds=$archive_cmds
8517548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
8518548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
8519548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
8520548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8521548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test -n "$delfiles"; then
8522548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # Append the command to remove temporary files to $cmds.
8523548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  eval cmds=\"\$cmds~\$RM $delfiles\"
8524548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
8525548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8526548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Add any objects from preloaded convenience libraries
8527548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test -n "$dlprefiles"; then
8528548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  gentop="$output_objdir/${outputname}x"
8529548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_append generated " $gentop"
8530548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8531548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_extract_archives $gentop $dlprefiles
8532548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_append libobjs " $func_extract_archives_result"
8533548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  test "X$libobjs" = "X " && libobjs=
8534548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
8535548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8536548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	save_ifs="$IFS"; IFS='~'
8537548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	for cmd in $cmds; do
8538548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  IFS="$save_ifs"
8539548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  eval cmd=\"$cmd\"
8540548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  $opt_silent || {
8541548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_quote_for_expand "$cmd"
8542548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    eval "func_echo $func_quote_for_expand_result"
8543548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  }
8544548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  $opt_dry_run || eval "$cmd" || {
8545548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    lt_exit=$?
8546548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8547548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # Restore the uninstalled library and exit
8548548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if test "$opt_mode" = relink; then
8549548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      ( cd "$output_objdir" && \
8550548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	        $RM "${realname}T" && \
8551548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		$MV "${realname}U" "$realname" )
8552548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
8553548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8554548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    exit $lt_exit
8555548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  }
8556548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	done
8557548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	IFS="$save_ifs"
8558548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8559548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Restore the uninstalled library and exit
8560548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test "$opt_mode" = relink; then
8561548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
8562548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8563548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test -n "$convenience"; then
8564548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if test -z "$whole_archive_flag_spec"; then
8565548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      func_show_eval '${RM}r "$gentop"'
8566548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
8567548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
8568548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8569548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  exit $EXIT_SUCCESS
8570548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
8571548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8572548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Create links to the real library.
8573548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	for linkname in $linknames; do
8574548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test "$realname" != "$linkname"; then
8575548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
8576548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
8577548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	done
8578548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8579548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# If -module or -export-dynamic was specified, set the dlname.
8580548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test "$module" = yes || test "$export_dynamic" = yes; then
8581548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # On all known operating systems, these are identical.
8582548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  dlname="$soname"
8583548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
8584548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
8585548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      ;;
8586548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8587548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    obj)
8588548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
8589548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_warning "\`-dlopen' is ignored for objects"
8590548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
8591548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8592548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      case " $deplibs" in
8593548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      *\ -l* | *\ -L*)
8594548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_warning "\`-l' and \`-L' are ignored for objects" ;;
8595548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      esac
8596548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8597548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      test -n "$rpath" && \
8598548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_warning "\`-rpath' is ignored for objects"
8599548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8600548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      test -n "$xrpath" && \
8601548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_warning "\`-R' is ignored for objects"
8602548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8603548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      test -n "$vinfo" && \
8604548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_warning "\`-version-info' is ignored for objects"
8605548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8606548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      test -n "$release" && \
8607548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_warning "\`-release' is ignored for objects"
8608548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8609548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      case $output in
8610548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      *.lo)
8611548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	test -n "$objs$old_deplibs" && \
8612548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_fatal_error "cannot build library object \`$output' from non-libtool objects"
8613548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8614548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	libobj=$output
8615548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_lo2o "$libobj"
8616548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	obj=$func_lo2o_result
8617548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
8618548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      *)
8619548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	libobj=
8620548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	obj="$output"
8621548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
8622548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      esac
8623548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8624548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Delete the old objects.
8625548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      $opt_dry_run || $RM $obj $libobj
8626548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8627548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Objects from convenience libraries.  This assumes
8628548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # single-version convenience libraries.  Whenever we create
8629548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # different ones for PIC/non-PIC, this we'll have to duplicate
8630548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # the extraction.
8631548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      reload_conv_objs=
8632548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      gentop=
8633548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # reload_cmds runs $LD directly, so let us get rid of
8634548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # -Wl from whole_archive_flag_spec and hope we can get by with
8635548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # turning comma into space..
8636548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      wl=
8637548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8638548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test -n "$convenience"; then
8639548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test -n "$whole_archive_flag_spec"; then
8640548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
8641548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'`
8642548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	else
8643548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  gentop="$output_objdir/${obj}x"
8644548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_append generated " $gentop"
8645548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8646548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_extract_archives $gentop $convenience
8647548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  reload_conv_objs="$reload_objs $func_extract_archives_result"
8648548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
8649548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
8650548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8651548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # If we're not building shared, we need to use non_pic_objs
8652548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      test "$build_libtool_libs" != yes && libobjs="$non_pic_objects"
8653548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8654548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Create the old-style object.
8655548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
8656548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8657548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      output="$obj"
8658548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_execute_cmds "$reload_cmds" 'exit $?'
8659548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8660548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Exit if we aren't doing a library object file.
8661548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test -z "$libobj"; then
8662548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test -n "$gentop"; then
8663548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_show_eval '${RM}r "$gentop"'
8664548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
8665548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8666548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	exit $EXIT_SUCCESS
8667548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
8668548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8669548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test "$build_libtool_libs" != yes; then
8670548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test -n "$gentop"; then
8671548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_show_eval '${RM}r "$gentop"'
8672548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
8673548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8674548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Create an invalid libtool object if no PIC, so that we don't
8675548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# accidentally link it into a program.
8676548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# $show "echo timestamp > $libobj"
8677548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
8678548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	exit $EXIT_SUCCESS
8679548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
8680548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8681548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test -n "$pic_flag" || test "$pic_mode" != default; then
8682548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Only do commands if we really have different PIC objects.
8683548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	reload_objs="$libobjs $reload_conv_objs"
8684548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	output="$libobj"
8685548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_execute_cmds "$reload_cmds" 'exit $?'
8686548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
8687548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8688548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test -n "$gentop"; then
8689548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_show_eval '${RM}r "$gentop"'
8690548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
8691548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8692548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      exit $EXIT_SUCCESS
8693548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      ;;
8694548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8695548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    prog)
8696548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      case $host in
8697548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	*cygwin*) func_stripname '' '.exe' "$output"
8698548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	          output=$func_stripname_result.exe;;
8699548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      esac
8700548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      test -n "$vinfo" && \
8701548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_warning "\`-version-info' is ignored for programs"
8702548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8703548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      test -n "$release" && \
8704548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_warning "\`-release' is ignored for programs"
8705548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8706548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      test "$preload" = yes \
8707548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        && test "$dlopen_support" = unknown \
8708548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	&& test "$dlopen_self" = unknown \
8709548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	&& test "$dlopen_self_static" = unknown && \
8710548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
8711548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8712548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      case $host in
8713548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      *-*-rhapsody* | *-*-darwin1.[012])
8714548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# On Rhapsody replace the C library is the System framework
8715548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'`
8716548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'`
8717548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
8718548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      esac
8719548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8720548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      case $host in
8721548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      *-*-darwin*)
8722548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Don't allow lazy linking, it breaks C++ global constructors
8723548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# But is supposedly fixed on 10.4 or later (yay!).
8724548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test "$tagname" = CXX ; then
8725548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
8726548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    10.[0123])
8727548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      func_append compile_command " ${wl}-bind_at_load"
8728548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      func_append finalize_command " ${wl}-bind_at_load"
8729548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    ;;
8730548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  esac
8731548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
8732548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Time to change all our "foo.ltframework" stuff back to "-framework foo"
8733548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
8734548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
8735548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
8736548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      esac
8737548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8738548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8739548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # move library search paths that coincide with paths to not yet
8740548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # installed libraries to the beginning of the library search list
8741548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      new_libs=
8742548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      for path in $notinst_path; do
8743548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	case " $new_libs " in
8744548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	*" -L$path/$objdir "*) ;;
8745548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	*)
8746548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  case " $compile_deplibs " in
8747548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *" -L$path/$objdir "*)
8748548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_append new_libs " -L$path/$objdir" ;;
8749548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  esac
8750548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
8751548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	esac
8752548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      done
8753548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      for deplib in $compile_deplibs; do
8754548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	case $deplib in
8755548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	-L*)
8756548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  case " $new_libs " in
8757548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *" $deplib "*) ;;
8758548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *) func_append new_libs " $deplib" ;;
8759548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  esac
8760548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
8761548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	*) func_append new_libs " $deplib" ;;
8762548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	esac
8763548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      done
8764548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      compile_deplibs="$new_libs"
8765548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8766548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8767548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_append compile_command " $compile_deplibs"
8768548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_append finalize_command " $finalize_deplibs"
8769548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8770548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test -n "$rpath$xrpath"; then
8771548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# If the user specified any rpath flags, then add them.
8772548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	for libdir in $rpath $xrpath; do
8773548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # This is the magic to use -rpath.
8774548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  case "$finalize_rpath " in
8775548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *" $libdir "*) ;;
8776548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *) func_append finalize_rpath " $libdir" ;;
8777548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  esac
8778548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	done
8779548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
8780548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8781548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Now hardcode the library paths
8782548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      rpath=
8783548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      hardcode_libdirs=
8784548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      for libdir in $compile_rpath $finalize_rpath; do
8785548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test -n "$hardcode_libdir_flag_spec"; then
8786548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test -n "$hardcode_libdir_separator"; then
8787548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if test -z "$hardcode_libdirs"; then
8788548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      hardcode_libdirs="$libdir"
8789548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    else
8790548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # Just accumulate the unique libdirs.
8791548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
8792548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
8793548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		;;
8794548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      *)
8795548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
8796548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		;;
8797548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      esac
8798548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
8799548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  else
8800548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    eval flag=\"$hardcode_libdir_flag_spec\"
8801548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_append rpath " $flag"
8802548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
8803548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	elif test -n "$runpath_var"; then
8804548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  case "$perm_rpath " in
8805548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *" $libdir "*) ;;
8806548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *) func_append perm_rpath " $libdir" ;;
8807548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  esac
8808548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
8809548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	case $host in
8810548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
8811548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
8812548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  case :$dllsearchpath: in
8813548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *":$libdir:"*) ;;
8814548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ::) dllsearchpath=$libdir;;
8815548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *) func_append dllsearchpath ":$libdir";;
8816548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  esac
8817548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  case :$dllsearchpath: in
8818548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *":$testbindir:"*) ;;
8819548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ::) dllsearchpath=$testbindir;;
8820548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *) func_append dllsearchpath ":$testbindir";;
8821548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  esac
8822548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
8823548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	esac
8824548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      done
8825548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Substitute the hardcoded libdirs into the rpath.
8826548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test -n "$hardcode_libdir_separator" &&
8827548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	 test -n "$hardcode_libdirs"; then
8828548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	libdir="$hardcode_libdirs"
8829548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	eval rpath=\" $hardcode_libdir_flag_spec\"
8830548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
8831548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      compile_rpath="$rpath"
8832548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8833548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      rpath=
8834548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      hardcode_libdirs=
8835548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      for libdir in $finalize_rpath; do
8836548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test -n "$hardcode_libdir_flag_spec"; then
8837548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test -n "$hardcode_libdir_separator"; then
8838548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if test -z "$hardcode_libdirs"; then
8839548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      hardcode_libdirs="$libdir"
8840548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    else
8841548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # Just accumulate the unique libdirs.
8842548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
8843548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
8844548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		;;
8845548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      *)
8846548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
8847548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		;;
8848548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      esac
8849548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
8850548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  else
8851548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    eval flag=\"$hardcode_libdir_flag_spec\"
8852548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_append rpath " $flag"
8853548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
8854548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	elif test -n "$runpath_var"; then
8855548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  case "$finalize_perm_rpath " in
8856548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *" $libdir "*) ;;
8857548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *) func_append finalize_perm_rpath " $libdir" ;;
8858548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  esac
8859548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
8860548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      done
8861548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Substitute the hardcoded libdirs into the rpath.
8862548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test -n "$hardcode_libdir_separator" &&
8863548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	 test -n "$hardcode_libdirs"; then
8864548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	libdir="$hardcode_libdirs"
8865548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	eval rpath=\" $hardcode_libdir_flag_spec\"
8866548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
8867548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      finalize_rpath="$rpath"
8868548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8869548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test -n "$libobjs" && test "$build_old_libs" = yes; then
8870548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Transform all the library objects into standard objects.
8871548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
8872548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
8873548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
8874548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8875548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
8876548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8877548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # template prelinking step
8878548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test -n "$prelink_cmds"; then
8879548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_execute_cmds "$prelink_cmds" 'exit $?'
8880548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
8881548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8882548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      wrappers_required=yes
8883548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      case $host in
8884548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      *cegcc* | *mingw32ce*)
8885548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway.
8886548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        wrappers_required=no
8887548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        ;;
8888548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      *cygwin* | *mingw* )
8889548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        if test "$build_libtool_libs" != yes; then
8890548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen          wrappers_required=no
8891548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        fi
8892548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        ;;
8893548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      *)
8894548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
8895548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen          wrappers_required=no
8896548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        fi
8897548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        ;;
8898548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      esac
8899548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test "$wrappers_required" = no; then
8900548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Replace the output file specification.
8901548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
8902548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	link_command="$compile_command$compile_rpath"
8903548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8904548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# We have no uninstalled library dependencies, so finalize right now.
8905548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	exit_status=0
8906548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_show_eval "$link_command" 'exit_status=$?'
8907548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8908548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test -n "$postlink_cmds"; then
8909548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_to_tool_file "$output"
8910548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
8911548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_execute_cmds "$postlink_cmds" 'exit $?'
8912548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
8913548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8914548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Delete the generated files.
8915548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test -f "$output_objdir/${outputname}S.${objext}"; then
8916548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
8917548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
8918548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8919548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	exit $exit_status
8920548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
8921548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8922548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test -n "$compile_shlibpath$finalize_shlibpath"; then
8923548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
8924548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
8925548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test -n "$finalize_shlibpath"; then
8926548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
8927548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
8928548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8929548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      compile_var=
8930548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      finalize_var=
8931548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test -n "$runpath_var"; then
8932548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test -n "$perm_rpath"; then
8933548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # We should set the runpath_var.
8934548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  rpath=
8935548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  for dir in $perm_rpath; do
8936548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_append rpath "$dir:"
8937548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  done
8938548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
8939548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
8940548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test -n "$finalize_perm_rpath"; then
8941548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # We should set the runpath_var.
8942548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  rpath=
8943548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  for dir in $finalize_perm_rpath; do
8944548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_append rpath "$dir:"
8945548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  done
8946548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
8947548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
8948548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
8949548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8950548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test "$no_install" = yes; then
8951548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# We don't need to create a wrapper script.
8952548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	link_command="$compile_var$compile_command$compile_rpath"
8953548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Replace the output file specification.
8954548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
8955548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Delete the old output file.
8956548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	$opt_dry_run || $RM $output
8957548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Link the executable and exit
8958548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_show_eval "$link_command" 'exit $?'
8959548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8960548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test -n "$postlink_cmds"; then
8961548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_to_tool_file "$output"
8962548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
8963548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_execute_cmds "$postlink_cmds" 'exit $?'
8964548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
8965548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8966548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	exit $EXIT_SUCCESS
8967548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
8968548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8969548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test "$hardcode_action" = relink; then
8970548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Fast installation is not supported
8971548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	link_command="$compile_var$compile_command$compile_rpath"
8972548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	relink_command="$finalize_var$finalize_command$finalize_rpath"
8973548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8974548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_warning "this platform does not like uninstalled shared libraries"
8975548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_warning "\`$output' will be relinked during installation"
8976548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      else
8977548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test "$fast_install" != no; then
8978548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  link_command="$finalize_var$compile_command$finalize_rpath"
8979548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test "$fast_install" = yes; then
8980548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'`
8981548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  else
8982548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # fast_install is set to needless
8983548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    relink_command=
8984548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
8985548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	else
8986548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  link_command="$compile_var$compile_command$compile_rpath"
8987548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  relink_command="$finalize_var$finalize_command$finalize_rpath"
8988548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
8989548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
8990548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8991548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Replace the output file specification.
8992548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
8993548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8994548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Delete the old output files.
8995548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
8996548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8997548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_show_eval "$link_command" 'exit $?'
8998548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
8999548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test -n "$postlink_cmds"; then
9000548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_to_tool_file "$output_objdir/$outputname"
9001548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
9002548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_execute_cmds "$postlink_cmds" 'exit $?'
9003548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
9004548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
9005548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Now create the wrapper script.
9006548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_verbose "creating $output"
9007548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
9008548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Quote the relink command for shipping.
9009548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test -n "$relink_command"; then
9010548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Preserve any variables that may affect compiler behavior
9011548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	for var in $variables_saved_for_relink; do
9012548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if eval test -z \"\${$var+set}\"; then
9013548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
9014548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  elif eval var_value=\$$var; test -z "$var_value"; then
9015548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    relink_command="$var=; export $var; $relink_command"
9016548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  else
9017548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_quote_for_eval "$var_value"
9018548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
9019548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
9020548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	done
9021548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	relink_command="(cd `pwd`; $relink_command)"
9022548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
9023548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
9024548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
9025548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Only actually do things if not in dry run mode.
9026548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      $opt_dry_run || {
9027548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# win32 will think the script is a binary if it has
9028548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# a .exe suffix, so we strip it off here.
9029548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	case $output in
9030548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *.exe) func_stripname '' '.exe' "$output"
9031548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	         output=$func_stripname_result ;;
9032548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	esac
9033548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# test for cygwin because mv fails w/o .exe extensions
9034548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	case $host in
9035548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *cygwin*)
9036548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    exeext=.exe
9037548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_stripname '' '.exe' "$outputname"
9038548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    outputname=$func_stripname_result ;;
9039548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *) exeext= ;;
9040548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	esac
9041548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	case $host in
9042548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *cygwin* | *mingw* )
9043548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_dirname_and_basename "$output" "" "."
9044548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    output_name=$func_basename_result
9045548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    output_path=$func_dirname_result
9046548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    cwrappersource="$output_path/$objdir/lt-$output_name.c"
9047548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    cwrapper="$output_path/$output_name.exe"
9048548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    $RM $cwrappersource $cwrapper
9049548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
9050548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
9051548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_emit_cwrapperexe_src > $cwrappersource
9052548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
9053548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # The wrapper executable is built using the $host compiler,
9054548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # because it contains $host paths and files. If cross-
9055548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # compiling, it, like the target executable, must be
9056548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # executed on the $host or under an emulation environment.
9057548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    $opt_dry_run || {
9058548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
9059548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      $STRIP $cwrapper
9060548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    }
9061548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
9062548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # Now, create the wrapper script for func_source use:
9063548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_ltwrapper_scriptname $cwrapper
9064548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    $RM $func_ltwrapper_scriptname_result
9065548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
9066548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    $opt_dry_run || {
9067548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # note: this script will not be executed, so do not chmod.
9068548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      if test "x$build" = "x$host" ; then
9069548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		$cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
9070548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      else
9071548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		func_emit_wrapper no > $func_ltwrapper_scriptname_result
9072548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      fi
9073548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    }
9074548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
9075548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  * )
9076548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    $RM $output
9077548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
9078548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
9079548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_emit_wrapper no > $output
9080548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    chmod +x $output
9081548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  ;;
9082548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	esac
9083548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      }
9084548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      exit $EXIT_SUCCESS
9085548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      ;;
9086548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    esac
9087548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
9088548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # See if we need to build an old-fashioned archive.
9089548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    for oldlib in $oldlibs; do
9090548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
9091548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test "$build_libtool_libs" = convenience; then
9092548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	oldobjs="$libobjs_save $symfileobj"
9093548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	addlibs="$convenience"
9094548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	build_libtool_libs=no
9095548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      else
9096548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test "$build_libtool_libs" = module; then
9097548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  oldobjs="$libobjs_save"
9098548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  build_libtool_libs=no
9099548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	else
9100548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  oldobjs="$old_deplibs $non_pic_objects"
9101548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test "$preload" = yes && test -f "$symfileobj"; then
9102548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_append oldobjs " $symfileobj"
9103548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
9104548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
9105548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	addlibs="$old_convenience"
9106548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
9107548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
9108548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test -n "$addlibs"; then
9109548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	gentop="$output_objdir/${outputname}x"
9110548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_append generated " $gentop"
9111548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
9112548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_extract_archives $gentop $addlibs
9113548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_append oldobjs " $func_extract_archives_result"
9114548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
9115548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
9116548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Do each command in the archive commands.
9117548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
9118548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	cmds=$old_archive_from_new_cmds
9119548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      else
9120548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
9121548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Add any objects from preloaded convenience libraries
9122548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test -n "$dlprefiles"; then
9123548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  gentop="$output_objdir/${outputname}x"
9124548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_append generated " $gentop"
9125548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
9126548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_extract_archives $gentop $dlprefiles
9127548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_append oldobjs " $func_extract_archives_result"
9128548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
9129548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
9130548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# POSIX demands no paths to be encoded in archives.  We have
9131548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# to avoid creating archives with duplicate basenames if we
9132548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# might have to extract them afterwards, e.g., when creating a
9133548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# static archive out of a convenience library, or when linking
9134548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# the entirety of a libtool archive into another (currently
9135548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# not supported by libtool).
9136548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if (for obj in $oldobjs
9137548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    do
9138548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      func_basename "$obj"
9139548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      $ECHO "$func_basename_result"
9140548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    done | sort | sort -uc >/dev/null 2>&1); then
9141548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  :
9142548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	else
9143548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  echo "copying selected object files to avoid basename conflicts..."
9144548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  gentop="$output_objdir/${outputname}x"
9145548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_append generated " $gentop"
9146548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_mkdir_p "$gentop"
9147548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  save_oldobjs=$oldobjs
9148548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  oldobjs=
9149548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  counter=1
9150548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  for obj in $save_oldobjs
9151548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  do
9152548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_basename "$obj"
9153548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    objbase="$func_basename_result"
9154548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    case " $oldobjs " in
9155548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    " ") oldobjs=$obj ;;
9156548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    *[\ /]"$objbase "*)
9157548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      while :; do
9158548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		# Make sure we don't pick an alternate name that also
9159548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		# overlaps.
9160548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		newobj=lt$counter-$objbase
9161548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		func_arith $counter + 1
9162548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		counter=$func_arith_result
9163548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		case " $oldobjs " in
9164548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		*[\ /]"$newobj "*) ;;
9165548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		*) if test ! -f "$gentop/$newobj"; then break; fi ;;
9166548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		esac
9167548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      done
9168548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
9169548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      func_append oldobjs " $gentop/$newobj"
9170548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      ;;
9171548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    *) func_append oldobjs " $obj" ;;
9172548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    esac
9173548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  done
9174548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
9175548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	eval cmds=\"$old_archive_cmds\"
9176548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
9177548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_len " $cmds"
9178548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	len=$func_len_result
9179548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
9180548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  cmds=$old_archive_cmds
9181548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	elif test -n "$archiver_list_spec"; then
9182548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_verbose "using command file archive linking..."
9183548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  for obj in $oldobjs
9184548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  do
9185548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_to_tool_file "$obj"
9186548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    $ECHO "$func_to_tool_file_result"
9187548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  done > $output_objdir/$libname.libcmd
9188548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_to_tool_file "$output_objdir/$libname.libcmd"
9189548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  oldobjs=" $archiver_list_spec$func_to_tool_file_result"
9190548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  cmds=$old_archive_cmds
9191548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	else
9192548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # the command line is too long to link in one step, link in parts
9193548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_verbose "using piecewise archive linking..."
9194548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  save_RANLIB=$RANLIB
9195548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  RANLIB=:
9196548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  objlist=
9197548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  concat_cmds=
9198548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  save_oldobjs=$oldobjs
9199548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  oldobjs=
9200548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # Is there a better way of finding the last object in the list?
9201548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  for obj in $save_oldobjs
9202548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  do
9203548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    last_oldobj=$obj
9204548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  done
9205548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  eval test_cmds=\"$old_archive_cmds\"
9206548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_len " $test_cmds"
9207548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  len0=$func_len_result
9208548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  len=$len0
9209548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  for obj in $save_oldobjs
9210548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  do
9211548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_len " $obj"
9212548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_arith $len + $func_len_result
9213548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    len=$func_arith_result
9214548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_append objlist " $obj"
9215548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if test "$len" -lt "$max_cmd_len"; then
9216548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      :
9217548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    else
9218548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # the above command should be used before it gets too long
9219548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      oldobjs=$objlist
9220548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      if test "$obj" = "$last_oldobj" ; then
9221548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		RANLIB=$save_RANLIB
9222548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      fi
9223548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
9224548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
9225548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      objlist=
9226548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      len=$len0
9227548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
9228548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  done
9229548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  RANLIB=$save_RANLIB
9230548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  oldobjs=$objlist
9231548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test "X$oldobjs" = "X" ; then
9232548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    eval cmds=\"\$concat_cmds\"
9233548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  else
9234548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
9235548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
9236548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
9237548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
9238548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_execute_cmds "$cmds" 'exit $?'
9239548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    done
9240548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
9241548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    test -n "$generated" && \
9242548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_show_eval "${RM}r$generated"
9243548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
9244548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # Now create the libtool archive.
9245548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    case $output in
9246548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    *.la)
9247548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      old_library=
9248548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      test "$build_old_libs" = yes && old_library="$libname.$libext"
9249548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_verbose "creating $output"
9250548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
9251548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Preserve any variables that may affect compiler behavior
9252548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      for var in $variables_saved_for_relink; do
9253548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if eval test -z \"\${$var+set}\"; then
9254548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
9255548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	elif eval var_value=\$$var; test -z "$var_value"; then
9256548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  relink_command="$var=; export $var; $relink_command"
9257548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	else
9258548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_quote_for_eval "$var_value"
9259548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
9260548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
9261548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      done
9262548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Quote the link command for shipping.
9263548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
9264548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
9265548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test "$hardcode_automatic" = yes ; then
9266548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	relink_command=
9267548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
9268548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
9269548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Only create the output if not a dry run.
9270548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      $opt_dry_run || {
9271548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	for installed in no yes; do
9272548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test "$installed" = yes; then
9273548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if test -z "$install_libdir"; then
9274548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      break
9275548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
9276548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    output="$output_objdir/$outputname"i
9277548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # Replace all uninstalled libtool libraries with the installed ones
9278548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    newdependency_libs=
9279548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    for deplib in $dependency_libs; do
9280548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      case $deplib in
9281548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      *.la)
9282548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		func_basename "$deplib"
9283548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		name="$func_basename_result"
9284548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
9285548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		test -z "$libdir" && \
9286548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  func_fatal_error "\`$deplib' is not a valid libtool archive"
9287548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name"
9288548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		;;
9289548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      -L*)
9290548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		func_stripname -L '' "$deplib"
9291548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		func_replace_sysroot "$func_stripname_result"
9292548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		func_append newdependency_libs " -L$func_replace_sysroot_result"
9293548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		;;
9294548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      -R*)
9295548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		func_stripname -R '' "$deplib"
9296548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		func_replace_sysroot "$func_stripname_result"
9297548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		func_append newdependency_libs " -R$func_replace_sysroot_result"
9298548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		;;
9299548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      *) func_append newdependency_libs " $deplib" ;;
9300548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      esac
9301548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    done
9302548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    dependency_libs="$newdependency_libs"
9303548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    newdlfiles=
9304548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
9305548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    for lib in $dlfiles; do
9306548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      case $lib in
9307548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      *.la)
9308548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	        func_basename "$lib"
9309548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		name="$func_basename_result"
9310548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
9311548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		test -z "$libdir" && \
9312548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  func_fatal_error "\`$lib' is not a valid libtool archive"
9313548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name"
9314548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		;;
9315548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      *) func_append newdlfiles " $lib" ;;
9316548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      esac
9317548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    done
9318548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    dlfiles="$newdlfiles"
9319548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    newdlprefiles=
9320548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    for lib in $dlprefiles; do
9321548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      case $lib in
9322548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      *.la)
9323548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		# Only pass preopened files to the pseudo-archive (for
9324548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		# eventual linking with the app. that links it) if we
9325548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		# didn't already link the preopened objects directly into
9326548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		# the library:
9327548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		func_basename "$lib"
9328548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		name="$func_basename_result"
9329548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
9330548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		test -z "$libdir" && \
9331548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		  func_fatal_error "\`$lib' is not a valid libtool archive"
9332548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name"
9333548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		;;
9334548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      esac
9335548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    done
9336548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    dlprefiles="$newdlprefiles"
9337548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  else
9338548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    newdlfiles=
9339548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    for lib in $dlfiles; do
9340548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      case $lib in
9341548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
9342548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		*) abs=`pwd`"/$lib" ;;
9343548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      esac
9344548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      func_append newdlfiles " $abs"
9345548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    done
9346548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    dlfiles="$newdlfiles"
9347548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    newdlprefiles=
9348548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    for lib in $dlprefiles; do
9349548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      case $lib in
9350548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
9351548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		*) abs=`pwd`"/$lib" ;;
9352548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      esac
9353548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      func_append newdlprefiles " $abs"
9354548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    done
9355548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    dlprefiles="$newdlprefiles"
9356548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
9357548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  $RM $output
9358548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # place dlname in correct position for cygwin
9359548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # In fact, it would be nice if we could use this code for all target
9360548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # systems that can't hard-code library paths into their executables
9361548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # and that have no shared library path variable independent of PATH,
9362548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # but it turns out we can't easily determine that from inspecting
9363548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # libtool variables, so we have to hard-code the OSs to which it
9364548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # applies here; at the moment, that means platforms that use the PE
9365548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # object format with DLL files.  See the long comment at the top of
9366548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # tests/bindir.at for full details.
9367548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  tdlname=$dlname
9368548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  case $host,$output,$installed,$module,$dlname in
9369548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll)
9370548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # If a -bindir argument was supplied, place the dll there.
9371548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      if test "x$bindir" != x ;
9372548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      then
9373548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		func_relative_path "$install_libdir" "$bindir"
9374548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		tdlname=$func_relative_path_result$dlname
9375548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      else
9376548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		# Otherwise fall back on heuristic.
9377548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen		tdlname=../bin/$dlname
9378548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      fi
9379548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      ;;
9380548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  esac
9381548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  $ECHO > $output "\
9382548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# $outputname - a libtool library file
9383548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
9384548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#
9385548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Please DO NOT delete this file!
9386548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# It is necessary for linking the library.
9387548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
9388548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# The name that we can dlopen(3).
9389548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissendlname='$tdlname'
9390548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
9391548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Names of this library.
9392548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenlibrary_names='$library_names'
9393548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
9394548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# The name of the static archive.
9395548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenold_library='$old_library'
9396548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
9397548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Linker flags that can not go in dependency_libs.
9398548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelisseninherited_linker_flags='$new_inherited_linker_flags'
9399548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
9400548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Libraries that this one depends upon.
9401548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissendependency_libs='$dependency_libs'
9402548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
9403548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Names of additional weak libraries provided by this library
9404548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenweak_library_names='$weak_libs'
9405548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
9406548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Version information for $libname.
9407548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissencurrent=$current
9408548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenage=$age
9409548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenrevision=$revision
9410548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
9411548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Is this an already installed library?
9412548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelisseninstalled=$installed
9413548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
9414548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Should we warn about portability when linking against -modules?
9415548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenshouldnotlink=$module
9416548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
9417548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Files to dlopen/dlpreopen
9418548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissendlopen='$dlfiles'
9419548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissendlpreopen='$dlprefiles'
9420548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
9421548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Directory that this library needs to be installed in:
9422548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenlibdir='$install_libdir'"
9423548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test "$installed" = no && test "$need_relink" = yes; then
9424548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    $ECHO >> $output "\
9425548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenrelink_command=\"$relink_command\""
9426548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
9427548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	done
9428548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      }
9429548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
9430548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Do a symbolic link so that the libtool archive can be found in
9431548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # LD_LIBRARY_PATH before the program is installed.
9432548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
9433548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      ;;
9434548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    esac
9435548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    exit $EXIT_SUCCESS
9436548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
9437548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
9438548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ test "$opt_mode" = link || test "$opt_mode" = relink; } &&
9439548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_mode_link ${1+"$@"}
9440548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
9441548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
9442548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_mode_uninstall arg...
9443548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_mode_uninstall ()
9444548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
9445548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    $opt_debug
9446548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    RM="$nonopt"
9447548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    files=
9448548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    rmforce=
9449548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    exit_status=0
9450548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
9451548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # This variable tells wrapper scripts just to set variables rather
9452548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # than running their programs.
9453548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    libtool_install_magic="$magic"
9454548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
9455548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    for arg
9456548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    do
9457548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      case $arg in
9458548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      -f) func_append RM " $arg"; rmforce=yes ;;
9459548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      -*) func_append RM " $arg" ;;
9460548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      *) func_append files " $arg" ;;
9461548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      esac
9462548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    done
9463548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
9464548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    test -z "$RM" && \
9465548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_fatal_help "you must specify an RM program"
9466548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
9467548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    rmdirs=
9468548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
9469548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    for file in $files; do
9470548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_dirname "$file" "" "."
9471548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      dir="$func_dirname_result"
9472548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test "X$dir" = X.; then
9473548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	odir="$objdir"
9474548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      else
9475548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	odir="$dir/$objdir"
9476548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
9477548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_basename "$file"
9478548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      name="$func_basename_result"
9479548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      test "$opt_mode" = uninstall && odir="$dir"
9480548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
9481548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Remember odir for removal later, being careful to avoid duplicates
9482548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test "$opt_mode" = clean; then
9483548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	case " $rmdirs " in
9484548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *" $odir "*) ;;
9485548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *) func_append rmdirs " $odir" ;;
9486548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	esac
9487548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
9488548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
9489548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      # Don't error if the file doesn't exist and rm -f was used.
9490548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if { test -L "$file"; } >/dev/null 2>&1 ||
9491548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	 { test -h "$file"; } >/dev/null 2>&1 ||
9492548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	 test -f "$file"; then
9493548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	:
9494548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      elif test -d "$file"; then
9495548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	exit_status=1
9496548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	continue
9497548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      elif test "$rmforce" = yes; then
9498548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	continue
9499548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
9500548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
9501548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      rmfiles="$file"
9502548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
9503548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      case $name in
9504548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      *.la)
9505548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Possibly a libtool archive, so verify it.
9506548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if func_lalib_p "$file"; then
9507548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_source $dir/$name
9508548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
9509548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # Delete the libtool libraries and symlinks.
9510548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  for n in $library_names; do
9511548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_append rmfiles " $odir/$n"
9512548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  done
9513548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  test -n "$old_library" && func_append rmfiles " $odir/$old_library"
9514548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
9515548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  case "$opt_mode" in
9516548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  clean)
9517548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    case " $library_names " in
9518548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    *" $dlname "*) ;;
9519548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;;
9520548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    esac
9521548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i"
9522548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    ;;
9523548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  uninstall)
9524548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if test -n "$library_names"; then
9525548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # Do each command in the postuninstall commands.
9526548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
9527548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
9528548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
9529548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if test -n "$old_library"; then
9530548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      # Do each command in the old_postuninstall commands.
9531548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
9532548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
9533548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # FIXME: should reinstall the best remaining shared library.
9534548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    ;;
9535548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  esac
9536548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
9537548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
9538548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
9539548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      *.lo)
9540548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	# Possibly a libtool object, so verify it.
9541548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if func_lalib_p "$file"; then
9542548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
9543548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # Read the .lo file
9544548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  func_source $dir/$name
9545548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
9546548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # Add PIC object to the list of files to remove.
9547548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test -n "$pic_object" &&
9548548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	     test "$pic_object" != none; then
9549548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_append rmfiles " $dir/$pic_object"
9550548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
9551548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
9552548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # Add non-PIC object to the list of files to remove.
9553548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if test -n "$non_pic_object" &&
9554548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	     test "$non_pic_object" != none; then
9555548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_append rmfiles " $dir/$non_pic_object"
9556548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
9557548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
9558548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
9559548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
9560548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      *)
9561548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	if test "$opt_mode" = clean ; then
9562548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  noexename=$name
9563548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  case $file in
9564548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  *.exe)
9565548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_stripname '' '.exe' "$file"
9566548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    file=$func_stripname_result
9567548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_stripname '' '.exe' "$name"
9568548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    noexename=$func_stripname_result
9569548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # $file with .exe has already been added to rmfiles,
9570548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # add $file without .exe
9571548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_append rmfiles " $file"
9572548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    ;;
9573548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  esac
9574548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  # Do a test to see if this is a libtool program.
9575548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  if func_ltwrapper_p "$file"; then
9576548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if func_ltwrapper_executable_p "$file"; then
9577548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      func_ltwrapper_scriptname "$file"
9578548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      relink_command=
9579548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      func_source $func_ltwrapper_scriptname_result
9580548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      func_append rmfiles " $func_ltwrapper_scriptname_result"
9581548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    else
9582548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      relink_command=
9583548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      func_source $dir/$noexename
9584548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
9585548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
9586548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # note $name still contains .exe if it was in $file originally
9587548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    # as does the version of $file that was added into $rmfiles
9588548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    func_append rmfiles " $odir/$name $odir/${name}S.${objext}"
9589548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if test "$fast_install" = yes && test -n "$relink_command"; then
9590548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      func_append rmfiles " $odir/lt-$name"
9591548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
9592548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    if test "X$noexename" != "X$name" ; then
9593548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	      func_append rmfiles " $odir/lt-${noexename}.c"
9594548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	    fi
9595548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	  fi
9596548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	fi
9597548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	;;
9598548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      esac
9599548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      func_show_eval "$RM $rmfiles" 'exit_status=1'
9600548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    done
9601548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
9602548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    # Try to remove the ${objdir}s in the directories where we deleted files
9603548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    for dir in $rmdirs; do
9604548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      if test -d "$dir"; then
9605548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	func_show_eval "rmdir $dir >/dev/null 2>&1"
9606548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen      fi
9607548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    done
9608548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
9609548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    exit $exit_status
9610548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
9611548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
9612548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } &&
9613548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen    func_mode_uninstall ${1+"$@"}
9614548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
9615548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissentest -z "$opt_mode" && {
9616548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  help="$generic_help"
9617548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  func_fatal_help "you must specify a MODE"
9618548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
9619548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
9620548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissentest -z "$exec_cmd" && \
9621548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  func_fatal_help "invalid operation mode \`$opt_mode'"
9622548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
9623548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenif test -n "$exec_cmd"; then
9624548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  eval exec "$exec_cmd"
9625548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen  exit $EXIT_FAILURE
9626548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfi
9627548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
9628548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenexit $exit_status
9629548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
9630548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
9631548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# The TAGs below are defined such that we never get into a situation
9632548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# in which we disable both kinds of libraries.  Given conflicting
9633548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# choices, we go for a static library, that is the most portable,
9634548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# since we can't tell whether shared libraries were disabled because
9635548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# the user asked for that or because the platform doesn't support
9636548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# them.  This is particularly important on AIX, because we don't
9637548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# support having both static and shared libraries enabled at the same
9638548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# time on that platform, so we default to a shared-only configuration.
9639548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# If a disable-shared tag is given, we'll fallback to a static-only
9640548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# configuration.  But we'll never go from static-only to shared-only.
9641548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
9642548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
9643548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenbuild_libtool_libs=no
9644548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenbuild_old_libs=yes
9645548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# ### END LIBTOOL TAG CONFIG: disable-shared
9646548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
9647548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# ### BEGIN LIBTOOL TAG CONFIG: disable-static
9648548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenbuild_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
9649548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# ### END LIBTOOL TAG CONFIG: disable-static
9650548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
9651548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Local Variables:
9652548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# mode:shell-script
9653548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# sh-indentation:2
9654548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# End:
9655548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# vi:sw=2
9656548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
9657