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