1748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# libtool (GNU libtool) 2.4.2
3748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
4748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
6748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
7748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# This is free software; see the source for copying conditions.  There is NO
8748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
9748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
10748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# GNU Libtool is free software; you can redistribute it and/or modify
11748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# it under the terms of the GNU General Public License as published by
12748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# the Free Software Foundation; either version 2 of the License, or
13748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# (at your option) any later version.
14748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#
15748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# As a special exception to the GNU General Public License,
16748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# if you distribute this file as part of a program or library that
17748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# is built using GNU Libtool, you may include this file under the
18748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# same distribution terms that you use for the rest of that program.
19748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#
20748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# GNU Libtool is distributed in the hope that it will be useful, but
21748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# WITHOUT ANY WARRANTY; without even the implied warranty of
22748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
23748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# General Public License for more details.
24748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#
25748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# You should have received a copy of the GNU General Public License
26748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# along with GNU Libtool; see the file COPYING.  If not, a copy
27748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# can be downloaded from http://www.gnu.org/licenses/gpl.html,
28748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# or obtained by writing to the Free Software Foundation, Inc.,
29748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
30748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
31748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Usage: $progname [OPTION]... [MODE-ARG]...
32748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#
33748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Provide generalized library-building support services.
34748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#
35748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#       --config             show all configuration variables
36748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#       --debug              enable verbose shell tracing
37748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#   -n, --dry-run            display commands without modifying any files
38748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#       --features           display basic configuration information and exit
39748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#       --mode=MODE          use operation mode MODE
40748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#       --preserve-dup-deps  don't remove duplicate dependency libraries
41748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#       --quiet, --silent    don't print informational messages
42748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#       --no-quiet, --no-silent
43748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#                            print informational messages (default)
44748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#       --no-warn            don't display warning messages
45748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#       --tag=TAG            use configuration variables from tag TAG
46748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#   -v, --verbose            print more informational messages than default
47748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#       --no-verbose         don't print the extra informational messages
48748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#       --version            print version information
49748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#   -h, --help, --help-all   print short, long, or detailed help message
50748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#
51748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# MODE must be one of the following:
52748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#
53748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#         clean              remove files from the build directory
54748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#         compile            compile a source file into a libtool object
55748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#         execute            automatically set library path, then run a program
56748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#         finish             complete the installation of libtool libraries
57748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#         install            install libraries or executables
58748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#         link               create a library or an executable
59748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#         uninstall          remove libraries from an installed directory
60748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#
61748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# MODE-ARGS vary depending on the MODE.  When passed as first option,
62748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that.
63748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
64748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#
65748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# When reporting a bug, please describe a test case to reproduce it and
66748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# include the following information:
67748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#
68748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#         host-triplet:	$host
69748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#         shell:		$SHELL
70748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#         compiler:		$LTCC
71748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#         compiler flags:		$LTCFLAGS
72748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#         linker:		$LD (gnu? $with_gnu_ld)
73748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#         $progname:	(GNU libtool) 2.4.2 Debian-2.4.2-1.11
74748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#         automake:	$automake_version
75748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#         autoconf:	$autoconf_version
76748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#
77748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Report bugs to <bug-libtool@gnu.org>.
78748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# GNU libtool home page: <http://www.gnu.org/software/libtool/>.
79748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# General help using GNU software: <http://www.gnu.org/gethelp/>.
80748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
81748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratPROGRAM=libtool
82748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratPACKAGE=libtool
83748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratVERSION="2.4.2 Debian-2.4.2-1.11"
84748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratTIMESTAMP=""
85748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratpackage_revision=1.3337
86748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
87748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Be Bourne compatible
88748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
89748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  emulate sh
90748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  NULLCMD=:
91748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
92748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  # is contrary to our usage.  Disable this feature.
93748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  alias -g '${1+"$@"}'='"$@"'
94748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  setopt NO_GLOB_SUBST
95748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratelse
96748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
97748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfi
98748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratBIN_SH=xpg4; export BIN_SH # for Tru64
99748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratDUALCASE=1; export DUALCASE # for MKS sh
100748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
101748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# A function that is used when there is no print builtin or printf.
102748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_fallback_echo ()
103748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
104748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  eval 'cat <<_LTECHO_EOF
105748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat$1
106748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat_LTECHO_EOF'
107748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
108748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
109748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# NLS nuisances: We save the old values to restore during execute mode.
110748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratlt_user_locale=
111748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratlt_safe_locale=
112748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfor lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
113748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratdo
114748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  eval "if test \"\${$lt_var+set}\" = set; then
115748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat          save_$lt_var=\$$lt_var
116748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat          $lt_var=C
117748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  export $lt_var
118748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
119748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
120748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi"
121748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratdone
122748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratLC_ALL=C
123748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratLANGUAGE=C
124748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratexport LANGUAGE LC_ALL
125748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
126748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat$lt_unset CDPATH
127748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
128748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
129748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
130748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# is ksh but when the shell is invoked as "sh" and the current value of
131748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# the _XPG environment variable is not equal to 1 (one), the special
132748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# positional parameter $0, within a function call, is the name of the
133748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# function.
134748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratprogpath="$0"
135748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
136748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
137748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
138748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat: ${CP="cp -f"}
139748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erattest "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
140748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat: ${MAKE="make"}
141748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat: ${MKDIR="mkdir"}
142748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat: ${MV="mv -f"}
143748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat: ${RM="rm -f"}
144748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
145748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat: ${Xsed="$SED -e 1s/^X//"}
146748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
147748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Global variables:
148748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratEXIT_SUCCESS=0
149748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratEXIT_FAILURE=1
150748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratEXIT_MISMATCH=63  # $? = 63 is used to indicate version mismatch to missing.
151748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratEXIT_SKIP=77	  # $? = 77 is used to indicate a skipped test to automake.
152748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
153748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratexit_status=$EXIT_SUCCESS
154748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
155748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Make sure IFS has a sensible default
156748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratlt_nl='
157748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat'
158748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratIFS=" 	$lt_nl"
159748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
160748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratdirname="s,/[^/]*$,,"
161748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratbasename="s,^.*/,,"
162748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
163748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_dirname file append nondir_replacement
164748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
165748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# otherwise set result to NONDIR_REPLACEMENT.
166748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_dirname ()
167748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
168748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
169748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    if test "X$func_dirname_result" = "X${1}"; then
170748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_dirname_result="${3}"
171748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    else
172748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_dirname_result="$func_dirname_result${2}"
173748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    fi
174748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} # func_dirname may be replaced by extended shell implementation
175748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
176748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
177748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_basename file
178748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_basename ()
179748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
180748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_basename_result=`$ECHO "${1}" | $SED "$basename"`
181748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} # func_basename may be replaced by extended shell implementation
182748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
183748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
184748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_dirname_and_basename file append nondir_replacement
185748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# perform func_basename and func_dirname in a single function
186748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# call:
187748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#   dirname:  Compute the dirname of FILE.  If nonempty,
188748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#             add APPEND to the result, otherwise set result
189748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#             to NONDIR_REPLACEMENT.
190748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#             value returned in "$func_dirname_result"
191748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#   basename: Compute filename of FILE.
192748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#             value retuned in "$func_basename_result"
193748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Implementation must be kept synchronized with func_dirname
194748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# and func_basename. For efficiency, we do not delegate to
195748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# those functions but instead duplicate the functionality here.
196748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_dirname_and_basename ()
197748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
198748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # Extract subdirectory from the argument.
199748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"`
200748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    if test "X$func_dirname_result" = "X${1}"; then
201748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_dirname_result="${3}"
202748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    else
203748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_dirname_result="$func_dirname_result${2}"
204748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    fi
205748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_basename_result=`$ECHO "${1}" | $SED -e "$basename"`
206748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} # func_dirname_and_basename may be replaced by extended shell implementation
207748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
208748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
209748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_stripname prefix suffix name
210748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# strip PREFIX and SUFFIX off of NAME.
211748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# PREFIX and SUFFIX must not contain globbing or regex special
212748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# characters, hashes, percent signs, but SUFFIX may contain a leading
213748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# dot (in which case that matches only a dot).
214748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_strip_suffix prefix name
215748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_stripname ()
216748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
217748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    case ${2} in
218748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
219748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      *)  func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
220748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    esac
221748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} # func_stripname may be replaced by extended shell implementation
222748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
223748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
224748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# These SED scripts presuppose an absolute path with a trailing slash.
225748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratpathcar='s,^/\([^/]*\).*$,\1,'
226748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratpathcdr='s,^/[^/]*,,'
227748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratremovedotparts=':dotsl
228748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		s@/\./@/@g
229748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		t dotsl
230748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		s,/\.$,/,'
231748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratcollapseslashes='s@/\{1,\}@/@g'
232748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfinalslash='s,/*$,/,'
233748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
234748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_normal_abspath PATH
235748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Remove doubled-up and trailing slashes, "." path components,
236748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# and cancel out any ".." path components in PATH after making
237748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# it an absolute path.
238748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#             value returned in "$func_normal_abspath_result"
239748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_normal_abspath ()
240748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
241748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  # Start from root dir and reassemble the path.
242748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  func_normal_abspath_result=
243748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  func_normal_abspath_tpath=$1
244748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  func_normal_abspath_altnamespace=
245748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  case $func_normal_abspath_tpath in
246748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    "")
247748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Empty path, that just means $cwd.
248748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_stripname '' '/' "`pwd`"
249748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_normal_abspath_result=$func_stripname_result
250748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      return
251748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    ;;
252748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # The next three entries are used to spot a run of precisely
253748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # two leading slashes without using negated character classes;
254748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # we take advantage of case's first-match behaviour.
255748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    ///*)
256748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Unusual form of absolute path, do nothing.
257748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    ;;
258748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    //*)
259748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Not necessarily an ordinary path; POSIX reserves leading '//'
260748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # and for example Cygwin uses it to access remote file shares
261748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # over CIFS/SMB, so we conserve a leading double slash if found.
262748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_normal_abspath_altnamespace=/
263748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    ;;
264748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    /*)
265748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Absolute path, do nothing.
266748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    ;;
267748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    *)
268748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Relative path, prepend $cwd.
269748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath
270748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    ;;
271748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  esac
272748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  # Cancel out all the simple stuff to save iterations.  We also want
273748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  # the path to end with a slash for ease of parsing, so make sure
274748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  # there is one (and only one) here.
275748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
276748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"`
277748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  while :; do
278748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # Processed it all yet?
279748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    if test "$func_normal_abspath_tpath" = / ; then
280748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # If we ascended to the root using ".." the result may be empty now.
281748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test -z "$func_normal_abspath_result" ; then
282748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        func_normal_abspath_result=/
283748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
284748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      break
285748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    fi
286748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \
287748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        -e "$pathcar"`
288748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
289748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        -e "$pathcdr"`
290748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # Figure out what to do with it
291748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    case $func_normal_abspath_tcomponent in
292748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      "")
293748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        # Trailing empty path component, ignore it.
294748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      ;;
295748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      ..)
296748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        # Parent dir; strip last assembled component from result.
297748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        func_dirname "$func_normal_abspath_result"
298748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        func_normal_abspath_result=$func_dirname_result
299748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      ;;
300748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      *)
301748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        # Actual path component, append it.
302748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent
303748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      ;;
304748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    esac
305748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  done
306748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  # Restore leading double-slash if one was found on entry.
307748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result
308748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
309748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
310748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_relative_path SRCDIR DSTDIR
311748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# generates a relative path from SRCDIR to DSTDIR, with a trailing
312748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# slash if non-empty, suitable for immediately appending a filename
313748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# without needing to append a separator.
314748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#             value returned in "$func_relative_path_result"
315748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_relative_path ()
316748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
317748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  func_relative_path_result=
318748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  func_normal_abspath "$1"
319748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  func_relative_path_tlibdir=$func_normal_abspath_result
320748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  func_normal_abspath "$2"
321748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  func_relative_path_tbindir=$func_normal_abspath_result
322748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
323748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  # Ascend the tree starting from libdir
324748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  while :; do
325748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # check if we have found a prefix of bindir
326748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    case $func_relative_path_tbindir in
327748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      $func_relative_path_tlibdir)
328748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        # found an exact match
329748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        func_relative_path_tcancelled=
330748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        break
331748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        ;;
332748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      $func_relative_path_tlibdir*)
333748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        # found a matching prefix
334748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir"
335748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        func_relative_path_tcancelled=$func_stripname_result
336748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        if test -z "$func_relative_path_result"; then
337748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat          func_relative_path_result=.
338748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        fi
339748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        break
340748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        ;;
341748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      *)
342748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        func_dirname $func_relative_path_tlibdir
343748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        func_relative_path_tlibdir=${func_dirname_result}
344748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        if test "x$func_relative_path_tlibdir" = x ; then
345748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat          # Have to descend all the way to the root!
346748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat          func_relative_path_result=../$func_relative_path_result
347748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat          func_relative_path_tcancelled=$func_relative_path_tbindir
348748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat          break
349748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        fi
350748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        func_relative_path_result=../$func_relative_path_result
351748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        ;;
352748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    esac
353748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  done
354748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
355748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  # Now calculate path; take care to avoid doubling-up slashes.
356748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  func_stripname '' '/' "$func_relative_path_result"
357748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  func_relative_path_result=$func_stripname_result
358748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  func_stripname '/' '/' "$func_relative_path_tcancelled"
359748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  if test "x$func_stripname_result" != x ; then
360748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_relative_path_result=${func_relative_path_result}/${func_stripname_result}
361748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  fi
362748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
363748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  # Normalisation. If bindir is libdir, return empty string,
364748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  # else relative path ending with a slash; either way, target
365748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  # file name can be directly appended.
366748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  if test ! -z "$func_relative_path_result"; then
367748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_stripname './' '' "$func_relative_path_result/"
368748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_relative_path_result=$func_stripname_result
369748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  fi
370748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
371748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
372748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# The name of this program:
373748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_dirname_and_basename "$progpath"
374748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratprogname=$func_basename_result
375748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
376748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Make sure we have an absolute path for reexecution:
377748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratcase $progpath in
378748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  [\\/]*|[A-Za-z]:\\*) ;;
379748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  *[\\/]*)
380748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat     progdir=$func_dirname_result
381748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat     progdir=`cd "$progdir" && pwd`
382748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat     progpath="$progdir/$progname"
383748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat     ;;
384748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  *)
385748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat     save_IFS="$IFS"
386748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat     IFS=${PATH_SEPARATOR-:}
387748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat     for progdir in $PATH; do
388748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat       IFS="$save_IFS"
389748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat       test -x "$progdir/$progname" && break
390748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat     done
391748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat     IFS="$save_IFS"
392748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat     test -n "$progdir" || progdir=`pwd`
393748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat     progpath="$progdir/$progname"
394748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat     ;;
395748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratesac
396748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
397748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Sed substitution that helps us do robust quoting.  It backslashifies
398748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# metacharacters that are still active within double-quoted strings.
399748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratXsed="${SED}"' -e 1s/^X//'
400748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratsed_quote_subst='s/\([`"$\\]\)/\\\1/g'
401748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
402748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Same as above, but do not quote variable references.
403748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratdouble_quote_subst='s/\(["`\\]\)/\\\1/g'
404748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
405748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Sed substitution that turns a string into a regex matching for the
406748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# string literally.
407748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratsed_make_literal_regex='s,[].[^$\\*\/],\\&,g'
408748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
409748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Sed substitution that converts a w32 file name or path
410748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# which contains forward slashes, into one that contains
411748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# (escaped) backslashes.  A very naive implementation.
412748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratlt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
413748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
414748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Re-`\' parameter expansions in output of double_quote_subst that were
415748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# `\'-ed in input to the same.  If an odd number of `\' preceded a '$'
416748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# in input to double_quote_subst, that '$' was protected from expansion.
417748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Since each input `\' is now two `\'s, look for any number of runs of
418748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# four `\'s followed by two `\'s and then a '$'.  `\' that '$'.
419748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratbs='\\'
420748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratbs2='\\\\'
421748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratbs4='\\\\\\\\'
422748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratdollar='\$'
423748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratsed_double_backslash="\
424748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  s/$bs4/&\\
425748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat/g
426748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  s/^$bs2$dollar/$bs&/
427748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
428748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  s/\n//g"
429748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
430748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Standard options:
431748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratopt_dry_run=false
432748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratopt_help=false
433748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratopt_quiet=false
434748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratopt_verbose=false
435748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratopt_warning=:
436748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
437748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_echo arg...
438748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Echo program name prefixed message, along with the current mode
439748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# name if it has been set yet.
440748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_echo ()
441748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
442748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    $ECHO "$progname: ${opt_mode+$opt_mode: }$*"
443748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
444748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
445748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_verbose arg...
446748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Echo program name prefixed message in verbose mode only.
447748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_verbose ()
448748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
449748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    $opt_verbose && func_echo ${1+"$@"}
450748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
451748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # A bug in bash halts the script if the last line of a function
452748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # fails when set -e is in force, so we need another command to
453748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # work around that:
454748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    :
455748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
456748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
457748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_echo_all arg...
458748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Invoke $ECHO with all args, space-separated.
459748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_echo_all ()
460748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
461748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    $ECHO "$*"
462748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
463748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
464748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_error arg...
465748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Echo program name prefixed message to standard error.
466748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_error ()
467748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
468748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2
469748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
470748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
471748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_warning arg...
472748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Echo program name prefixed warning message to standard error.
473748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_warning ()
474748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
475748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2
476748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
477748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # bash bug again:
478748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    :
479748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
480748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
481748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_fatal_error arg...
482748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Echo program name prefixed message to standard error, and exit.
483748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_fatal_error ()
484748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
485748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_error ${1+"$@"}
486748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    exit $EXIT_FAILURE
487748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
488748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
489748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_fatal_help arg...
490748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Echo program name prefixed message to standard error, followed by
491748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# a help hint, and exit.
492748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_fatal_help ()
493748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
494748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_error ${1+"$@"}
495748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_fatal_error "$help"
496748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
497748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erathelp="Try \`$progname --help' for more information."  ## default
498748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
499748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
500748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_grep expression filename
501748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Check whether EXPRESSION matches any line of FILENAME, without output.
502748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_grep ()
503748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
504748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    $GREP "$1" "$2" >/dev/null 2>&1
505748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
506748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
507748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
508748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_mkdir_p directory-path
509748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Make sure the entire path to DIRECTORY-PATH is available.
510748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_mkdir_p ()
511748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
512748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    my_directory_path="$1"
513748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    my_dir_list=
514748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
515748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
516748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
517748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Protect directory names starting with `-'
518748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      case $my_directory_path in
519748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        -*) my_directory_path="./$my_directory_path" ;;
520748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      esac
521748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
522748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # While some portion of DIR does not yet exist...
523748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      while test ! -d "$my_directory_path"; do
524748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        # ...make a list in topmost first order.  Use a colon delimited
525748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# list incase some portion of path contains whitespace.
526748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        my_dir_list="$my_directory_path:$my_dir_list"
527748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
528748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        # If the last portion added has no slash in it, the list is done
529748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        case $my_directory_path in */*) ;; *) break ;; esac
530748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
531748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        # ...otherwise throw away the child directory and loop
532748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"`
533748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      done
534748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'`
535748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
536748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      save_mkdir_p_IFS="$IFS"; IFS=':'
537748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      for my_dir in $my_dir_list; do
538748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	IFS="$save_mkdir_p_IFS"
539748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        # mkdir can fail with a `File exist' error if two processes
540748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        # try to create one of the directories concurrently.  Don't
541748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        # stop in that case!
542748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        $MKDIR "$my_dir" 2>/dev/null || :
543748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      done
544748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      IFS="$save_mkdir_p_IFS"
545748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
546748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Bail out if we (or some other process) failed to create a directory.
547748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      test -d "$my_directory_path" || \
548748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        func_fatal_error "Failed to create \`$1'"
549748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    fi
550748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
551748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
552748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
553748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_mktempdir [string]
554748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Make a temporary directory that won't clash with other running
555748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# libtool processes, and avoids race conditions if possible.  If
556748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# given, STRING is the basename for that directory.
557748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_mktempdir ()
558748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
559748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    my_template="${TMPDIR-/tmp}/${1-$progname}"
560748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
561748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    if test "$opt_dry_run" = ":"; then
562748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Return a directory name, but don't create it in dry-run mode
563748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      my_tmpdir="${my_template}-$$"
564748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    else
565748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
566748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # If mktemp works, use that first and foremost
567748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
568748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
569748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test ! -d "$my_tmpdir"; then
570748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        # Failing that, at least try and use $RANDOM to avoid a race
571748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        my_tmpdir="${my_template}-${RANDOM-0}$$"
572748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
573748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        save_mktempdir_umask=`umask`
574748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        umask 0077
575748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        $MKDIR "$my_tmpdir"
576748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        umask $save_mktempdir_umask
577748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
578748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
579748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # If we're not in dry-run mode, bomb out on failure
580748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      test -d "$my_tmpdir" || \
581748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
582748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    fi
583748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
584748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    $ECHO "$my_tmpdir"
585748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
586748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
587748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
588748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_quote_for_eval arg
589748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Aesthetically quote ARG to be evaled later.
590748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
591748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# is double-quoted, suitable for a subsequent eval, whereas
592748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
593748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# which are still active within double quotes backslashified.
594748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_quote_for_eval ()
595748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
596748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    case $1 in
597748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      *[\\\`\"\$]*)
598748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;;
599748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      *)
600748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        func_quote_for_eval_unquoted_result="$1" ;;
601748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    esac
602748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
603748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    case $func_quote_for_eval_unquoted_result in
604748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Double-quote args containing shell metacharacters to delay
605748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # word splitting, command substitution and and variable
606748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # expansion for a subsequent eval.
607748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Many Bourne shells cannot handle close brackets correctly
608748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # in scan sets, so we specify it separately.
609748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
610748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
611748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        ;;
612748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      *)
613748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
614748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    esac
615748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
616748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
617748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
618748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_quote_for_expand arg
619748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Aesthetically quote ARG to be evaled later; same as above,
620748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# but do not quote variable references.
621748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_quote_for_expand ()
622748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
623748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    case $1 in
624748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      *[\\\`\"]*)
625748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	my_arg=`$ECHO "$1" | $SED \
626748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
627748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      *)
628748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        my_arg="$1" ;;
629748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    esac
630748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
631748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    case $my_arg in
632748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Double-quote args containing shell metacharacters to delay
633748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # word splitting and command substitution for a subsequent eval.
634748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Many Bourne shells cannot handle close brackets correctly
635748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # in scan sets, so we specify it separately.
636748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
637748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        my_arg="\"$my_arg\""
638748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        ;;
639748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    esac
640748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
641748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_quote_for_expand_result="$my_arg"
642748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
643748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
644748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
645748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_show_eval cmd [fail_exp]
646748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
647748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
648748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# is given, then evaluate it.
649748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_show_eval ()
650748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
651748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    my_cmd="$1"
652748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    my_fail_exp="${2-:}"
653748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
654748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    ${opt_silent-false} || {
655748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_quote_for_expand "$my_cmd"
656748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      eval "func_echo $func_quote_for_expand_result"
657748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    }
658748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
659748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    if ${opt_dry_run-false}; then :; else
660748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      eval "$my_cmd"
661748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      my_status=$?
662748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test "$my_status" -eq 0; then :; else
663748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	eval "(exit $my_status); $my_fail_exp"
664748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
665748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    fi
666748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
667748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
668748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
669748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_show_eval_locale cmd [fail_exp]
670748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
671748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
672748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# is given, then evaluate it.  Use the saved locale for evaluation.
673748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_show_eval_locale ()
674748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
675748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    my_cmd="$1"
676748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    my_fail_exp="${2-:}"
677748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
678748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    ${opt_silent-false} || {
679748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_quote_for_expand "$my_cmd"
680748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      eval "func_echo $func_quote_for_expand_result"
681748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    }
682748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
683748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    if ${opt_dry_run-false}; then :; else
684748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      eval "$lt_user_locale
685748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    $my_cmd"
686748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      my_status=$?
687748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      eval "$lt_safe_locale"
688748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test "$my_status" -eq 0; then :; else
689748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	eval "(exit $my_status); $my_fail_exp"
690748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
691748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    fi
692748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
693748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
694748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_tr_sh
695748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Turn $1 into a string suitable for a shell variable name.
696748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Result is stored in $func_tr_sh_result.  All characters
697748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# not in the set a-zA-Z0-9_ are replaced with '_'. Further,
698748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# if $1 begins with a digit, a '_' is prepended as well.
699748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_tr_sh ()
700748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
701748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  case $1 in
702748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  [0-9]* | *[!a-zA-Z0-9_]*)
703748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'`
704748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    ;;
705748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  * )
706748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_tr_sh_result=$1
707748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    ;;
708748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  esac
709748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
710748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
711748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
712748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_version
713748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Echo version message to standard output and exit.
714748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_version ()
715748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
716748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    $opt_debug
717748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
718748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    $SED -n '/(C)/!b go
719748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	:more
720748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	/\./!{
721748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  N
722748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  s/\n# / /
723748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  b more
724748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	}
725748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	:go
726748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	/^# '$PROGRAM' (GNU /,/# warranty; / {
727748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        s/^# //
728748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	s/^# *$//
729748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
730748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        p
731748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat     }' < "$progpath"
732748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat     exit $?
733748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
734748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
735748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_usage
736748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Echo short help message to standard output and exit.
737748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_usage ()
738748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
739748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    $opt_debug
740748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
741748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    $SED -n '/^# Usage:/,/^#  *.*--help/ {
742748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        s/^# //
743748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	s/^# *$//
744748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	s/\$progname/'$progname'/
745748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	p
746748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    }' < "$progpath"
747748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    echo
748748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    $ECHO "run \`$progname --help | more' for full usage"
749748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    exit $?
750748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
751748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
752748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_help [NOEXIT]
753748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Echo long help message to standard output and exit,
754748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# unless 'noexit' is passed as argument.
755748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_help ()
756748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
757748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    $opt_debug
758748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
759748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    $SED -n '/^# Usage:/,/# Report bugs to/ {
760748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	:print
761748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        s/^# //
762748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	s/^# *$//
763748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	s*\$progname*'$progname'*
764748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	s*\$host*'"$host"'*
765748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	s*\$SHELL*'"$SHELL"'*
766748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	s*\$LTCC*'"$LTCC"'*
767748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	s*\$LTCFLAGS*'"$LTCFLAGS"'*
768748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	s*\$LD*'"$LD"'*
769748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	s/\$with_gnu_ld/'"$with_gnu_ld"'/
770748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/
771748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/
772748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	p
773748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	d
774748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat     }
775748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat     /^# .* home page:/b print
776748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat     /^# General help using/b print
777748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat     ' < "$progpath"
778748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    ret=$?
779748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    if test -z "$1"; then
780748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      exit $ret
781748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    fi
782748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
783748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
784748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_missing_arg argname
785748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Echo program name prefixed message to standard error and set global
786748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# exit_cmd.
787748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_missing_arg ()
788748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
789748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    $opt_debug
790748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
791748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_error "missing argument for $1."
792748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    exit_cmd=exit
793748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
794748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
795748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
796748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_split_short_opt shortopt
797748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Set func_split_short_opt_name and func_split_short_opt_arg shell
798748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# variables after splitting SHORTOPT after the 2nd character.
799748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_split_short_opt ()
800748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
801748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    my_sed_short_opt='1s/^\(..\).*$/\1/;q'
802748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    my_sed_short_rest='1s/^..\(.*\)$/\1/;q'
803748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
804748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"`
805748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"`
806748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} # func_split_short_opt may be replaced by extended shell implementation
807748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
808748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
809748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_split_long_opt longopt
810748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Set func_split_long_opt_name and func_split_long_opt_arg shell
811748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# variables after splitting LONGOPT at the `=' sign.
812748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_split_long_opt ()
813748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
814748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q'
815748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    my_sed_long_arg='1s/^--[^=]*=//'
816748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
817748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"`
818748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"`
819748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} # func_split_long_opt may be replaced by extended shell implementation
820748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
821748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratexit_cmd=:
822748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
823748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
824748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
825748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
826748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
827748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratmagic="%%%MAGIC variable%%%"
828748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratmagic_exe="%%%MAGIC EXE variable%%%"
829748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
830748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Global variables.
831748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratnonopt=
832748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratpreserve_args=
833748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratlo2o="s/\\.lo\$/.${objext}/"
834748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erato2lo="s/\\.${objext}\$/.lo/"
835748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratextracted_archives=
836748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratextracted_serial=0
837748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
838748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# If this variable is set in any of the actions, the command in it
839748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# will be execed at the end.  This prevents here-documents from being
840748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# left over by shells.
841748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratexec_cmd=
842748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
843748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_append var value
844748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Append VALUE to the end of shell variable VAR.
845748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_append ()
846748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
847748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    eval "${1}=\$${1}\${2}"
848748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} # func_append may be replaced by extended shell implementation
849748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
850748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_append_quoted var value
851748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Quote VALUE and append to the end of shell variable VAR, separated
852748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# by a space.
853748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_append_quoted ()
854748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
855748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_quote_for_eval "${2}"
856748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    eval "${1}=\$${1}\\ \$func_quote_for_eval_result"
857748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} # func_append_quoted may be replaced by extended shell implementation
858748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
859748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
860748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_arith arithmetic-term...
861748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_arith ()
862748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
863748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_arith_result=`expr "${@}"`
864748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} # func_arith may be replaced by extended shell implementation
865748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
866748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
867748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_len string
868748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# STRING may not start with a hyphen.
869748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_len ()
870748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
871748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len`
872748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} # func_len may be replaced by extended shell implementation
873748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
874748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
875748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_lo2o object
876748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_lo2o ()
877748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
878748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
879748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} # func_lo2o may be replaced by extended shell implementation
880748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
881748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
882748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_xform libobj-or-source
883748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_xform ()
884748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
885748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
886748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} # func_xform may be replaced by extended shell implementation
887748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
888748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
889748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_fatal_configuration arg...
890748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Echo program name prefixed message to standard error, followed by
891748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# a configuration failure hint, and exit.
892748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_fatal_configuration ()
893748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
894748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_error ${1+"$@"}
895748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_error "See the $PACKAGE documentation for more information."
896748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_fatal_error "Fatal configuration error."
897748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
898748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
899748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
900748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_config
901748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Display the configuration for all the tags in this script.
902748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_config ()
903748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
904748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    re_begincf='^# ### BEGIN LIBTOOL'
905748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    re_endcf='^# ### END LIBTOOL'
906748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
907748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # Default configuration.
908748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
909748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
910748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # Now print the configurations for the tags.
911748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    for tagname in $taglist; do
912748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
913748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    done
914748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
915748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    exit $?
916748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
917748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
918748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_features
919748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Display the features supported by this script.
920748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_features ()
921748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
922748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    echo "host: $host"
923748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    if test "$build_libtool_libs" = yes; then
924748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      echo "enable shared libraries"
925748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    else
926748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      echo "disable shared libraries"
927748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    fi
928748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    if test "$build_old_libs" = yes; then
929748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      echo "enable static libraries"
930748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    else
931748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      echo "disable static libraries"
932748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    fi
933748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
934748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    exit $?
935748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
936748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
937748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_enable_tag tagname
938748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Verify that TAGNAME is valid, and either flag an error and exit, or
939748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# enable the TAGNAME tag.  We also add TAGNAME to the global $taglist
940748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# variable here.
941748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_enable_tag ()
942748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
943748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  # Global variable:
944748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  tagname="$1"
945748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
946748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
947748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
948748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  sed_extractcf="/$re_begincf/,/$re_endcf/p"
949748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
950748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  # Validate tagname.
951748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  case $tagname in
952748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    *[!-_A-Za-z0-9,/]*)
953748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_fatal_error "invalid tag name: $tagname"
954748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      ;;
955748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  esac
956748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
957748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  # Don't test for the "default" C tag, as we know it's
958748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  # there but not specially marked.
959748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  case $tagname in
960748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    CC) ;;
961748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    *)
962748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
963748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	taglist="$taglist $tagname"
964748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
965748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Evaluate the configuration.  Be careful to quote the path
966748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# and the sed script, to avoid splitting on whitespace, but
967748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# also don't use non-portable quotes within backquotes within
968748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# quotes we have to do it in 2 steps:
969748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
970748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	eval "$extractedcf"
971748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      else
972748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_error "ignoring unknown tag $tagname"
973748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
974748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      ;;
975748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  esac
976748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
977748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
978748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_check_version_match
979748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Ensure that we are using m4 macros, and libtool script from the same
980748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# release of libtool.
981748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_check_version_match ()
982748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
983748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  if test "$package_revision" != "$macro_revision"; then
984748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    if test "$VERSION" != "$macro_version"; then
985748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test -z "$macro_version"; then
986748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        cat >&2 <<_LT_EOF
987748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
988748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat$progname: definition of this LT_INIT comes from an older release.
989748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
990748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat$progname: and run autoconf again.
991748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat_LT_EOF
992748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      else
993748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        cat >&2 <<_LT_EOF
994748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
995748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
996748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
997748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat$progname: and run autoconf again.
998748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat_LT_EOF
999748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
1000748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    else
1001748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      cat >&2 <<_LT_EOF
1002748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat$progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision,
1003748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat$progname: but the definition of this LT_INIT comes from revision $macro_revision.
1004748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat$progname: You should recreate aclocal.m4 with macros from revision $package_revision
1005748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat$progname: of $PACKAGE $VERSION and run autoconf again.
1006748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat_LT_EOF
1007748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    fi
1008748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1009748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    exit $EXIT_MISMATCH
1010748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  fi
1011748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
1012748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1013748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1014748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Shorthand for --mode=foo, only valid as the first argument
1015748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratcase $1 in
1016748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratclean|clea|cle|cl)
1017748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  shift; set dummy --mode clean ${1+"$@"}; shift
1018748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  ;;
1019748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratcompile|compil|compi|comp|com|co|c)
1020748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  shift; set dummy --mode compile ${1+"$@"}; shift
1021748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  ;;
1022748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratexecute|execut|execu|exec|exe|ex|e)
1023748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  shift; set dummy --mode execute ${1+"$@"}; shift
1024748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  ;;
1025748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfinish|finis|fini|fin|fi|f)
1026748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  shift; set dummy --mode finish ${1+"$@"}; shift
1027748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  ;;
1028748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratinstall|instal|insta|inst|ins|in|i)
1029748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  shift; set dummy --mode install ${1+"$@"}; shift
1030748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  ;;
1031748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratlink|lin|li|l)
1032748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  shift; set dummy --mode link ${1+"$@"}; shift
1033748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  ;;
1034748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratuninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
1035748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  shift; set dummy --mode uninstall ${1+"$@"}; shift
1036748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  ;;
1037748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratesac
1038748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1039748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1040748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1041748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Option defaults:
1042748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratopt_debug=:
1043748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratopt_dry_run=false
1044748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratopt_config=false
1045748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratopt_preserve_dup_deps=false
1046748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratopt_features=false
1047748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratopt_finish=false
1048748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratopt_help=false
1049748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratopt_help_all=false
1050748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratopt_silent=:
1051748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratopt_warning=:
1052748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratopt_verbose=:
1053748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratopt_silent=false
1054748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratopt_verbose=false
1055748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1056748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1057748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Parse options once, thoroughly.  This comes as soon as possible in the
1058748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# script to make things like `--version' happen as quickly as we can.
1059748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
1060748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  # this just eases exit handling
1061748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  while test $# -gt 0; do
1062748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    opt="$1"
1063748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    shift
1064748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    case $opt in
1065748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      --debug|-x)	opt_debug='set -x'
1066748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			func_echo "enabling shell trace mode"
1067748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			$opt_debug
1068748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			;;
1069748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      --dry-run|--dryrun|-n)
1070748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			opt_dry_run=:
1071748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			;;
1072748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      --config)
1073748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			opt_config=:
1074748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_config
1075748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			;;
1076748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      --dlopen|-dlopen)
1077748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			optarg="$1"
1078748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			opt_dlopen="${opt_dlopen+$opt_dlopen
1079748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}$optarg"
1080748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			shift
1081748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			;;
1082748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      --preserve-dup-deps)
1083748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			opt_preserve_dup_deps=:
1084748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			;;
1085748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      --features)
1086748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			opt_features=:
1087748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_features
1088748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			;;
1089748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      --finish)
1090748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			opt_finish=:
1091748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratset dummy --mode finish ${1+"$@"}; shift
1092748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			;;
1093748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      --help)
1094748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			opt_help=:
1095748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			;;
1096748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      --help-all)
1097748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			opt_help_all=:
1098748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratopt_help=': help-all'
1099748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			;;
1100748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      --mode)
1101748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			test $# = 0 && func_missing_arg $opt && break
1102748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			optarg="$1"
1103748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			opt_mode="$optarg"
1104748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratcase $optarg in
1105748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  # Valid mode arguments:
1106748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  clean|compile|execute|finish|install|link|relink|uninstall) ;;
1107748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1108748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  # Catch anything else as an error
1109748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  *) func_error "invalid argument for $opt"
1110748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat     exit_cmd=exit
1111748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat     break
1112748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat     ;;
1113748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratesac
1114748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			shift
1115748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			;;
1116748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      --no-silent|--no-quiet)
1117748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			opt_silent=false
1118748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_append preserve_args " $opt"
1119748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			;;
1120748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      --no-warning|--no-warn)
1121748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			opt_warning=false
1122748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_append preserve_args " $opt"
1123748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			;;
1124748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      --no-verbose)
1125748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			opt_verbose=false
1126748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_append preserve_args " $opt"
1127748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			;;
1128748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      --silent|--quiet)
1129748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			opt_silent=:
1130748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_append preserve_args " $opt"
1131748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        opt_verbose=false
1132748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			;;
1133748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      --verbose|-v)
1134748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			opt_verbose=:
1135748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_append preserve_args " $opt"
1136748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratopt_silent=false
1137748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			;;
1138748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      --tag)
1139748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			test $# = 0 && func_missing_arg $opt && break
1140748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			optarg="$1"
1141748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			opt_tag="$optarg"
1142748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_append preserve_args " $opt $optarg"
1143748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_enable_tag "$optarg"
1144748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			shift
1145748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			;;
1146748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1147748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      -\?|-h)		func_usage				;;
1148748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      --help)		func_help				;;
1149748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      --version)	func_version				;;
1150748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1151748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Separate optargs to long options:
1152748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      --*=*)
1153748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			func_split_long_opt "$opt"
1154748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"}
1155748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			shift
1156748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			;;
1157748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1158748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Separate non-argument short options:
1159748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      -\?*|-h*|-n*|-v*)
1160748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			func_split_short_opt "$opt"
1161748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"}
1162748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			shift
1163748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			;;
1164748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1165748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      --)		break					;;
1166748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      -*)		func_fatal_help "unrecognized option \`$opt'" ;;
1167748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      *)		set dummy "$opt" ${1+"$@"};	shift; break  ;;
1168748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    esac
1169748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  done
1170748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1171748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  # Validate options:
1172748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1173748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  # save first non-option argument
1174748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  if test "$#" -gt 0; then
1175748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    nonopt="$opt"
1176748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    shift
1177748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  fi
1178748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1179748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  # preserve --debug
1180748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  test "$opt_debug" = : || func_append preserve_args " --debug"
1181748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1182748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  case $host in
1183748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    *cygwin* | *mingw* | *pw32* | *cegcc*)
1184748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # don't eliminate duplications in $postdeps and $predeps
1185748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      opt_duplicate_compiler_generated_deps=:
1186748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      ;;
1187748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    *)
1188748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps
1189748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      ;;
1190748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  esac
1191748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1192748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  $opt_help || {
1193748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # Sanity checks first:
1194748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_check_version_match
1195748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1196748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
1197748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_fatal_configuration "not configured to build any kind of library"
1198748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    fi
1199748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1200748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # Darwin sucks
1201748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    eval std_shrext=\"$shrext_cmds\"
1202748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1203748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # Only execute mode is allowed to have -dlopen flags.
1204748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    if test -n "$opt_dlopen" && test "$opt_mode" != execute; then
1205748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_error "unrecognized option \`-dlopen'"
1206748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      $ECHO "$help" 1>&2
1207748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      exit $EXIT_FAILURE
1208748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    fi
1209748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1210748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # Change the help message to a mode-specific one.
1211748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    generic_help="$help"
1212748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    help="Try \`$progname --help --mode=$opt_mode' for more information."
1213748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  }
1214748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1215748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1216748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  # Bail if the options were screwed
1217748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  $exit_cmd $EXIT_FAILURE
1218748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
1219748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1220748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1221748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1222748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1223748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat## ----------- ##
1224748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat##    Main.    ##
1225748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat## ----------- ##
1226748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1227748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_lalib_p file
1228748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# True iff FILE is a libtool `.la' library or `.lo' object file.
1229748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# This function is only a basic sanity check; it will hardly flush out
1230748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# determined imposters.
1231748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_lalib_p ()
1232748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
1233748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    test -f "$1" &&
1234748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      $SED -e 4q "$1" 2>/dev/null \
1235748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
1236748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
1237748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1238748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_lalib_unsafe_p file
1239748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# True iff FILE is a libtool `.la' library or `.lo' object file.
1240748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# This function implements the same check as func_lalib_p without
1241748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# resorting to external programs.  To this end, it redirects stdin and
1242748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# closes it afterwards, without saving the original file descriptor.
1243748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# As a safety measure, use it only where a negative result would be
1244748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# fatal anyway.  Works if `file' does not exist.
1245748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_lalib_unsafe_p ()
1246748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
1247748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    lalib_p=no
1248748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
1249748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	for lalib_p_l in 1 2 3 4
1250748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	do
1251748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    read lalib_p_line
1252748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    case "$lalib_p_line" in
1253748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		\#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
1254748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    esac
1255748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	done
1256748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	exec 0<&5 5<&-
1257748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    fi
1258748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    test "$lalib_p" = yes
1259748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
1260748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1261748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_ltwrapper_script_p file
1262748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# True iff FILE is a libtool wrapper script
1263748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# This function is only a basic sanity check; it will hardly flush out
1264748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# determined imposters.
1265748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_ltwrapper_script_p ()
1266748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
1267748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_lalib_p "$1"
1268748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
1269748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1270748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_ltwrapper_executable_p file
1271748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# True iff FILE is a libtool wrapper executable
1272748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# This function is only a basic sanity check; it will hardly flush out
1273748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# determined imposters.
1274748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_ltwrapper_executable_p ()
1275748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
1276748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_ltwrapper_exec_suffix=
1277748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    case $1 in
1278748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    *.exe) ;;
1279748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    *) func_ltwrapper_exec_suffix=.exe ;;
1280748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    esac
1281748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
1282748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
1283748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1284748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_ltwrapper_scriptname file
1285748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Assumes file is an ltwrapper_executable
1286748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# uses $file to determine the appropriate filename for a
1287748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# temporary ltwrapper_script.
1288748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_ltwrapper_scriptname ()
1289748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
1290748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_dirname_and_basename "$1" "" "."
1291748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_stripname '' '.exe' "$func_basename_result"
1292748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
1293748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
1294748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1295748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_ltwrapper_p file
1296748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# True iff FILE is a libtool wrapper script or wrapper executable
1297748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# This function is only a basic sanity check; it will hardly flush out
1298748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# determined imposters.
1299748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_ltwrapper_p ()
1300748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
1301748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
1302748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
1303748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1304748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1305748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_execute_cmds commands fail_cmd
1306748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Execute tilde-delimited COMMANDS.
1307748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# If FAIL_CMD is given, eval that upon failure.
1308748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# FAIL_CMD may read-access the current command in variable CMD!
1309748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_execute_cmds ()
1310748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
1311748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    $opt_debug
1312748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    save_ifs=$IFS; IFS='~'
1313748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    for cmd in $1; do
1314748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      IFS=$save_ifs
1315748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      eval cmd=\"$cmd\"
1316748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_show_eval "$cmd" "${2-:}"
1317748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    done
1318748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    IFS=$save_ifs
1319748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
1320748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1321748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1322748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_source file
1323748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Source FILE, adding directory component if necessary.
1324748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Note that it is not necessary on cygwin/mingw to append a dot to
1325748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
1326748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# behavior happens only for exec(3), not for open(2)!  Also, sourcing
1327748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# `FILE.' does not work on cygwin managed mounts.
1328748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_source ()
1329748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
1330748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    $opt_debug
1331748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    case $1 in
1332748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    */* | *\\*)	. "$1" ;;
1333748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    *)		. "./$1" ;;
1334748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    esac
1335748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
1336748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1337748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1338748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_resolve_sysroot PATH
1339748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Replace a leading = in PATH with a sysroot.  Store the result into
1340748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_resolve_sysroot_result
1341748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_resolve_sysroot ()
1342748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
1343748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  func_resolve_sysroot_result=$1
1344748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  case $func_resolve_sysroot_result in
1345748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  =*)
1346748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_stripname '=' '' "$func_resolve_sysroot_result"
1347748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_resolve_sysroot_result=$lt_sysroot$func_stripname_result
1348748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    ;;
1349748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  esac
1350748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
1351748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1352748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_replace_sysroot PATH
1353748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# If PATH begins with the sysroot, replace it with = and
1354748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# store the result into func_replace_sysroot_result.
1355748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_replace_sysroot ()
1356748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
1357748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  case "$lt_sysroot:$1" in
1358748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  ?*:"$lt_sysroot"*)
1359748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_stripname "$lt_sysroot" '' "$1"
1360748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_replace_sysroot_result="=$func_stripname_result"
1361748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    ;;
1362748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  *)
1363748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # Including no sysroot.
1364748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_replace_sysroot_result=$1
1365748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    ;;
1366748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  esac
1367748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
1368748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1369748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_infer_tag arg
1370748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Infer tagged configuration to use if any are available and
1371748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# if one wasn't chosen via the "--tag" command line option.
1372748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Only attempt this if the compiler in the base compile
1373748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# command doesn't match the default compiler.
1374748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# arg is usually of the form 'gcc ...'
1375748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_infer_tag ()
1376748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
1377748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    $opt_debug
1378748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    if test -n "$available_tags" && test -z "$tagname"; then
1379748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      CC_quoted=
1380748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      for arg in $CC; do
1381748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_append_quoted CC_quoted "$arg"
1382748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      done
1383748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      CC_expanded=`func_echo_all $CC`
1384748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      CC_quoted_expanded=`func_echo_all $CC_quoted`
1385748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      case $@ in
1386748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Blanks in the command may have been stripped by the calling shell,
1387748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # but not from the CC environment variable when configure was run.
1388748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
1389748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;;
1390748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Blanks at the start of $base_compile will cause this to fail
1391748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # if we don't check for them as well.
1392748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      *)
1393748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	for z in $available_tags; do
1394748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
1395748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # Evaluate the configuration.
1396748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
1397748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    CC_quoted=
1398748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    for arg in $CC; do
1399748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # Double-quote args containing other shell metacharacters.
1400748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      func_append_quoted CC_quoted "$arg"
1401748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    done
1402748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    CC_expanded=`func_echo_all $CC`
1403748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    CC_quoted_expanded=`func_echo_all $CC_quoted`
1404748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    case "$@ " in
1405748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
1406748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*)
1407748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # The compiler in the base compile command matches
1408748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # the one in the tagged configuration.
1409748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # Assume this is the tagged configuration we want.
1410748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      tagname=$z
1411748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      break
1412748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      ;;
1413748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    esac
1414748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
1415748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	done
1416748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# If $tagname still isn't set, then no tagged configuration
1417748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# was found and let the user know that the "--tag" command
1418748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# line option must be used.
1419748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test -z "$tagname"; then
1420748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_echo "unable to infer tagged configuration"
1421748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_fatal_error "specify a tag with \`--tag'"
1422748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#	else
1423748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#	  func_verbose "using $tagname tagged configuration"
1424748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
1425748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
1426748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      esac
1427748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    fi
1428748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
1429748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1430748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1431748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1432748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_write_libtool_object output_name pic_name nonpic_name
1433748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Create a libtool object file (analogous to a ".la" file),
1434748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# but don't create it if we're doing a dry run.
1435748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_write_libtool_object ()
1436748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
1437748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    write_libobj=${1}
1438748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    if test "$build_libtool_libs" = yes; then
1439748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      write_lobj=\'${2}\'
1440748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    else
1441748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      write_lobj=none
1442748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    fi
1443748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1444748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    if test "$build_old_libs" = yes; then
1445748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      write_oldobj=\'${3}\'
1446748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    else
1447748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      write_oldobj=none
1448748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    fi
1449748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1450748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    $opt_dry_run || {
1451748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      cat >${write_libobj}T <<EOF
1452748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# $write_libobj - a libtool object file
1453748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
1454748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#
1455748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Please DO NOT delete this file!
1456748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# It is necessary for linking the library.
1457748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1458748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Name of the PIC object.
1459748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratpic_object=$write_lobj
1460748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1461748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Name of the non-PIC object
1462748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratnon_pic_object=$write_oldobj
1463748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1464748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratEOF
1465748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      $MV "${write_libobj}T" "${write_libobj}"
1466748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    }
1467748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
1468748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1469748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1470748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat##################################################
1471748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS #
1472748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat##################################################
1473748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1474748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_convert_core_file_wine_to_w32 ARG
1475748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Helper function used by file name conversion functions when $build is *nix,
1476748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# and $host is mingw, cygwin, or some other w32 environment. Relies on a
1477748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# correctly configured wine environment available, with the winepath program
1478748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# in $build's $PATH.
1479748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#
1480748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# ARG is the $build file name to be converted to w32 format.
1481748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Result is available in $func_convert_core_file_wine_to_w32_result, and will
1482748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# be empty on error (or when ARG is empty)
1483748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_convert_core_file_wine_to_w32 ()
1484748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
1485748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  $opt_debug
1486748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  func_convert_core_file_wine_to_w32_result="$1"
1487748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  if test -n "$1"; then
1488748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # Unfortunately, winepath does not exit with a non-zero error code, so we
1489748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # are forced to check the contents of stdout. On the other hand, if the
1490748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # command is not found, the shell will set an exit code of 127 and print
1491748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # *an error message* to stdout. So we must check for both error code of
1492748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # zero AND non-empty stdout, which explains the odd construction:
1493748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null`
1494748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then
1495748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" |
1496748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        $SED -e "$lt_sed_naive_backslashify"`
1497748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    else
1498748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_convert_core_file_wine_to_w32_result=
1499748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    fi
1500748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  fi
1501748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
1502748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# end: func_convert_core_file_wine_to_w32
1503748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1504748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1505748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_convert_core_path_wine_to_w32 ARG
1506748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Helper function used by path conversion functions when $build is *nix, and
1507748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly
1508748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# configured wine environment available, with the winepath program in $build's
1509748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# $PATH. Assumes ARG has no leading or trailing path separator characters.
1510748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#
1511748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# ARG is path to be converted from $build format to win32.
1512748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Result is available in $func_convert_core_path_wine_to_w32_result.
1513748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Unconvertible file (directory) names in ARG are skipped; if no directory names
1514748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# are convertible, then the result may be empty.
1515748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_convert_core_path_wine_to_w32 ()
1516748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
1517748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  $opt_debug
1518748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  # unfortunately, winepath doesn't convert paths, only file names
1519748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  func_convert_core_path_wine_to_w32_result=""
1520748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  if test -n "$1"; then
1521748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    oldIFS=$IFS
1522748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    IFS=:
1523748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    for func_convert_core_path_wine_to_w32_f in $1; do
1524748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      IFS=$oldIFS
1525748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f"
1526748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test -n "$func_convert_core_file_wine_to_w32_result" ; then
1527748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        if test -z "$func_convert_core_path_wine_to_w32_result"; then
1528748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat          func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result"
1529748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        else
1530748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat          func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result"
1531748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        fi
1532748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
1533748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    done
1534748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    IFS=$oldIFS
1535748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  fi
1536748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
1537748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# end: func_convert_core_path_wine_to_w32
1538748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1539748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1540748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_cygpath ARGS...
1541748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when
1542748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2)
1543748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or
1544748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# (2), returns the Cygwin file name or path in func_cygpath_result (input
1545748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# file name or path is assumed to be in w32 format, as previously converted
1546748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# from $build's *nix or MSYS format). In case (3), returns the w32 file name
1547748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# or path in func_cygpath_result (input file name or path is assumed to be in
1548748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Cygwin format). Returns an empty string on error.
1549748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#
1550748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# ARGS are passed to cygpath, with the last one being the file name or path to
1551748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# be converted.
1552748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#
1553748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH
1554748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# environment variable; do not put it in $PATH.
1555748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_cygpath ()
1556748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
1557748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  $opt_debug
1558748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then
1559748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null`
1560748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    if test "$?" -ne 0; then
1561748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # on failure, ensure result is empty
1562748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_cygpath_result=
1563748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    fi
1564748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  else
1565748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_cygpath_result=
1566748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'"
1567748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  fi
1568748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
1569748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#end: func_cygpath
1570748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1571748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1572748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_convert_core_msys_to_w32 ARG
1573748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Convert file name or path ARG from MSYS format to w32 format.  Return
1574748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# result in func_convert_core_msys_to_w32_result.
1575748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_convert_core_msys_to_w32 ()
1576748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
1577748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  $opt_debug
1578748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  # awkward: cmd appends spaces to result
1579748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null |
1580748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"`
1581748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
1582748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#end: func_convert_core_msys_to_w32
1583748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1584748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1585748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_convert_file_check ARG1 ARG2
1586748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Verify that ARG1 (a file name in $build format) was converted to $host
1587748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# format in ARG2. Otherwise, emit an error message, but continue (resetting
1588748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_to_host_file_result to ARG1).
1589748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_convert_file_check ()
1590748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
1591748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  $opt_debug
1592748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  if test -z "$2" && test -n "$1" ; then
1593748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_error "Could not determine host file name corresponding to"
1594748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_error "  \`$1'"
1595748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_error "Continuing, but uninstalled executables may not work."
1596748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # Fallback:
1597748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_to_host_file_result="$1"
1598748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  fi
1599748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
1600748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# end func_convert_file_check
1601748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1602748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1603748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH
1604748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Verify that FROM_PATH (a path in $build format) was converted to $host
1605748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# format in TO_PATH. Otherwise, emit an error message, but continue, resetting
1606748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_to_host_file_result to a simplistic fallback value (see below).
1607748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_convert_path_check ()
1608748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
1609748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  $opt_debug
1610748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  if test -z "$4" && test -n "$3"; then
1611748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_error "Could not determine the host path corresponding to"
1612748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_error "  \`$3'"
1613748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_error "Continuing, but uninstalled executables may not work."
1614748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # Fallback.  This is a deliberately simplistic "conversion" and
1615748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # should not be "improved".  See libtool.info.
1616748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    if test "x$1" != "x$2"; then
1617748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      lt_replace_pathsep_chars="s|$1|$2|g"
1618748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_to_host_path_result=`echo "$3" |
1619748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        $SED -e "$lt_replace_pathsep_chars"`
1620748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    else
1621748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_to_host_path_result="$3"
1622748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    fi
1623748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  fi
1624748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
1625748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# end func_convert_path_check
1626748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1627748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1628748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG
1629748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT
1630748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# and appending REPL if ORIG matches BACKPAT.
1631748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_convert_path_front_back_pathsep ()
1632748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
1633748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  $opt_debug
1634748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  case $4 in
1635748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  $1 ) func_to_host_path_result="$3$func_to_host_path_result"
1636748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    ;;
1637748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  esac
1638748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  case $4 in
1639748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  $2 ) func_append func_to_host_path_result "$3"
1640748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    ;;
1641748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  esac
1642748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
1643748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# end func_convert_path_front_back_pathsep
1644748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1645748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1646748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat##################################################
1647748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# $build to $host FILE NAME CONVERSION FUNCTIONS #
1648748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat##################################################
1649748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# invoked via `$to_host_file_cmd ARG'
1650748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#
1651748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# In each case, ARG is the path to be converted from $build to $host format.
1652748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Result will be available in $func_to_host_file_result.
1653748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1654748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1655748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_to_host_file ARG
1656748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Converts the file name ARG from $build format to $host format. Return result
1657748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# in func_to_host_file_result.
1658748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_to_host_file ()
1659748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
1660748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  $opt_debug
1661748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  $to_host_file_cmd "$1"
1662748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
1663748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# end func_to_host_file
1664748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1665748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1666748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_to_tool_file ARG LAZY
1667748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# converts the file name ARG from $build format to toolchain format. Return
1668748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# result in func_to_tool_file_result.  If the conversion in use is listed
1669748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# in (the comma separated) LAZY, no conversion takes place.
1670748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_to_tool_file ()
1671748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
1672748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  $opt_debug
1673748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  case ,$2, in
1674748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    *,"$to_tool_file_cmd",*)
1675748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_to_tool_file_result=$1
1676748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      ;;
1677748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    *)
1678748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      $to_tool_file_cmd "$1"
1679748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_to_tool_file_result=$func_to_host_file_result
1680748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      ;;
1681748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  esac
1682748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
1683748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# end func_to_tool_file
1684748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1685748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1686748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_convert_file_noop ARG
1687748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Copy ARG to func_to_host_file_result.
1688748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_convert_file_noop ()
1689748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
1690748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  func_to_host_file_result="$1"
1691748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
1692748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# end func_convert_file_noop
1693748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1694748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1695748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_convert_file_msys_to_w32 ARG
1696748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic
1697748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# conversion to w32 is not available inside the cwrapper.  Returns result in
1698748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_to_host_file_result.
1699748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_convert_file_msys_to_w32 ()
1700748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
1701748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  $opt_debug
1702748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  func_to_host_file_result="$1"
1703748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  if test -n "$1"; then
1704748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_convert_core_msys_to_w32 "$1"
1705748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_to_host_file_result="$func_convert_core_msys_to_w32_result"
1706748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  fi
1707748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  func_convert_file_check "$1" "$func_to_host_file_result"
1708748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
1709748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# end func_convert_file_msys_to_w32
1710748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1711748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1712748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_convert_file_cygwin_to_w32 ARG
1713748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Convert file name ARG from Cygwin to w32 format.  Returns result in
1714748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_to_host_file_result.
1715748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_convert_file_cygwin_to_w32 ()
1716748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
1717748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  $opt_debug
1718748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  func_to_host_file_result="$1"
1719748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  if test -n "$1"; then
1720748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # because $build is cygwin, we call "the" cygpath in $PATH; no need to use
1721748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # LT_CYGPATH in this case.
1722748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_to_host_file_result=`cygpath -m "$1"`
1723748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  fi
1724748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  func_convert_file_check "$1" "$func_to_host_file_result"
1725748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
1726748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# end func_convert_file_cygwin_to_w32
1727748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1728748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1729748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_convert_file_nix_to_w32 ARG
1730748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Convert file name ARG from *nix to w32 format.  Requires a wine environment
1731748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# and a working winepath. Returns result in func_to_host_file_result.
1732748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_convert_file_nix_to_w32 ()
1733748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
1734748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  $opt_debug
1735748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  func_to_host_file_result="$1"
1736748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  if test -n "$1"; then
1737748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_convert_core_file_wine_to_w32 "$1"
1738748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_to_host_file_result="$func_convert_core_file_wine_to_w32_result"
1739748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  fi
1740748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  func_convert_file_check "$1" "$func_to_host_file_result"
1741748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
1742748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# end func_convert_file_nix_to_w32
1743748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1744748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1745748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_convert_file_msys_to_cygwin ARG
1746748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Convert file name ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
1747748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Returns result in func_to_host_file_result.
1748748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_convert_file_msys_to_cygwin ()
1749748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
1750748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  $opt_debug
1751748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  func_to_host_file_result="$1"
1752748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  if test -n "$1"; then
1753748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_convert_core_msys_to_w32 "$1"
1754748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_cygpath -u "$func_convert_core_msys_to_w32_result"
1755748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_to_host_file_result="$func_cygpath_result"
1756748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  fi
1757748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  func_convert_file_check "$1" "$func_to_host_file_result"
1758748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
1759748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# end func_convert_file_msys_to_cygwin
1760748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1761748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1762748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_convert_file_nix_to_cygwin ARG
1763748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Convert file name ARG from *nix to Cygwin format.  Requires Cygwin installed
1764748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# in a wine environment, working winepath, and LT_CYGPATH set.  Returns result
1765748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# in func_to_host_file_result.
1766748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_convert_file_nix_to_cygwin ()
1767748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
1768748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  $opt_debug
1769748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  func_to_host_file_result="$1"
1770748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  if test -n "$1"; then
1771748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # convert from *nix to w32, then use cygpath to convert from w32 to cygwin.
1772748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_convert_core_file_wine_to_w32 "$1"
1773748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_cygpath -u "$func_convert_core_file_wine_to_w32_result"
1774748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_to_host_file_result="$func_cygpath_result"
1775748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  fi
1776748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  func_convert_file_check "$1" "$func_to_host_file_result"
1777748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
1778748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# end func_convert_file_nix_to_cygwin
1779748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1780748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1781748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#############################################
1782748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# $build to $host PATH CONVERSION FUNCTIONS #
1783748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#############################################
1784748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# invoked via `$to_host_path_cmd ARG'
1785748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#
1786748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# In each case, ARG is the path to be converted from $build to $host format.
1787748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# The result will be available in $func_to_host_path_result.
1788748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#
1789748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Path separators are also converted from $build format to $host format.  If
1790748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# ARG begins or ends with a path separator character, it is preserved (but
1791748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# converted to $host format) on output.
1792748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#
1793748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# All path conversion functions are named using the following convention:
1794748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#   file name conversion function    : func_convert_file_X_to_Y ()
1795748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#   path conversion function         : func_convert_path_X_to_Y ()
1796748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# where, for any given $build/$host combination the 'X_to_Y' value is the
1797748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# same.  If conversion functions are added for new $build/$host combinations,
1798748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# the two new functions must follow this pattern, or func_init_to_host_path_cmd
1799748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# will break.
1800748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1801748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1802748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_init_to_host_path_cmd
1803748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Ensures that function "pointer" variable $to_host_path_cmd is set to the
1804748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# appropriate value, based on the value of $to_host_file_cmd.
1805748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratto_host_path_cmd=
1806748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_init_to_host_path_cmd ()
1807748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
1808748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  $opt_debug
1809748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  if test -z "$to_host_path_cmd"; then
1810748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_stripname 'func_convert_file_' '' "$to_host_file_cmd"
1811748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    to_host_path_cmd="func_convert_path_${func_stripname_result}"
1812748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  fi
1813748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
1814748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1815748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1816748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_to_host_path ARG
1817748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Converts the path ARG from $build format to $host format. Return result
1818748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# in func_to_host_path_result.
1819748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_to_host_path ()
1820748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
1821748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  $opt_debug
1822748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  func_init_to_host_path_cmd
1823748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  $to_host_path_cmd "$1"
1824748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
1825748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# end func_to_host_path
1826748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1827748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1828748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_convert_path_noop ARG
1829748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Copy ARG to func_to_host_path_result.
1830748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_convert_path_noop ()
1831748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
1832748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  func_to_host_path_result="$1"
1833748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
1834748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# end func_convert_path_noop
1835748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1836748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1837748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_convert_path_msys_to_w32 ARG
1838748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic
1839748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# conversion to w32 is not available inside the cwrapper.  Returns result in
1840748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_to_host_path_result.
1841748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_convert_path_msys_to_w32 ()
1842748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
1843748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  $opt_debug
1844748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  func_to_host_path_result="$1"
1845748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  if test -n "$1"; then
1846748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # Remove leading and trailing path separator characters from ARG.  MSYS
1847748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # behavior is inconsistent here; cygpath turns them into '.;' and ';.';
1848748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # and winepath ignores them completely.
1849748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_stripname : : "$1"
1850748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_to_host_path_tmp1=$func_stripname_result
1851748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
1852748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_to_host_path_result="$func_convert_core_msys_to_w32_result"
1853748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_convert_path_check : ";" \
1854748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      "$func_to_host_path_tmp1" "$func_to_host_path_result"
1855748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
1856748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  fi
1857748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
1858748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# end func_convert_path_msys_to_w32
1859748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1860748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1861748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_convert_path_cygwin_to_w32 ARG
1862748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Convert path ARG from Cygwin to w32 format.  Returns result in
1863748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_to_host_file_result.
1864748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_convert_path_cygwin_to_w32 ()
1865748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
1866748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  $opt_debug
1867748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  func_to_host_path_result="$1"
1868748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  if test -n "$1"; then
1869748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # See func_convert_path_msys_to_w32:
1870748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_stripname : : "$1"
1871748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_to_host_path_tmp1=$func_stripname_result
1872748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"`
1873748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_convert_path_check : ";" \
1874748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      "$func_to_host_path_tmp1" "$func_to_host_path_result"
1875748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
1876748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  fi
1877748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
1878748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# end func_convert_path_cygwin_to_w32
1879748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1880748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1881748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_convert_path_nix_to_w32 ARG
1882748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Convert path ARG from *nix to w32 format.  Requires a wine environment and
1883748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# a working winepath.  Returns result in func_to_host_file_result.
1884748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_convert_path_nix_to_w32 ()
1885748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
1886748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  $opt_debug
1887748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  func_to_host_path_result="$1"
1888748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  if test -n "$1"; then
1889748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # See func_convert_path_msys_to_w32:
1890748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_stripname : : "$1"
1891748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_to_host_path_tmp1=$func_stripname_result
1892748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
1893748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_to_host_path_result="$func_convert_core_path_wine_to_w32_result"
1894748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_convert_path_check : ";" \
1895748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      "$func_to_host_path_tmp1" "$func_to_host_path_result"
1896748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
1897748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  fi
1898748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
1899748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# end func_convert_path_nix_to_w32
1900748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1901748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1902748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_convert_path_msys_to_cygwin ARG
1903748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Convert path ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
1904748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Returns result in func_to_host_file_result.
1905748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_convert_path_msys_to_cygwin ()
1906748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
1907748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  $opt_debug
1908748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  func_to_host_path_result="$1"
1909748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  if test -n "$1"; then
1910748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # See func_convert_path_msys_to_w32:
1911748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_stripname : : "$1"
1912748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_to_host_path_tmp1=$func_stripname_result
1913748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
1914748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_cygpath -u -p "$func_convert_core_msys_to_w32_result"
1915748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_to_host_path_result="$func_cygpath_result"
1916748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_convert_path_check : : \
1917748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      "$func_to_host_path_tmp1" "$func_to_host_path_result"
1918748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
1919748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  fi
1920748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
1921748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# end func_convert_path_msys_to_cygwin
1922748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1923748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1924748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_convert_path_nix_to_cygwin ARG
1925748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Convert path ARG from *nix to Cygwin format.  Requires Cygwin installed in a
1926748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# a wine environment, working winepath, and LT_CYGPATH set.  Returns result in
1927748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_to_host_file_result.
1928748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_convert_path_nix_to_cygwin ()
1929748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
1930748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  $opt_debug
1931748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  func_to_host_path_result="$1"
1932748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  if test -n "$1"; then
1933748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # Remove leading and trailing path separator characters from
1934748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # ARG. msys behavior is inconsistent here, cygpath turns them
1935748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # into '.;' and ';.', and winepath ignores them completely.
1936748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_stripname : : "$1"
1937748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_to_host_path_tmp1=$func_stripname_result
1938748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
1939748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result"
1940748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_to_host_path_result="$func_cygpath_result"
1941748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_convert_path_check : : \
1942748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      "$func_to_host_path_tmp1" "$func_to_host_path_result"
1943748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
1944748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  fi
1945748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
1946748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# end func_convert_path_nix_to_cygwin
1947748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1948748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1949748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_mode_compile arg...
1950748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_mode_compile ()
1951748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
1952748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    $opt_debug
1953748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # Get the compilation command and the source file.
1954748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    base_compile=
1955748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
1956748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    suppress_opt=yes
1957748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    suppress_output=
1958748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    arg_mode=normal
1959748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    libobj=
1960748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    later=
1961748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    pie_flag=
1962748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1963748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    for arg
1964748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    do
1965748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      case $arg_mode in
1966748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      arg  )
1967748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# do not "continue".  Instead, add this to base_compile
1968748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	lastarg="$arg"
1969748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	arg_mode=normal
1970748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
1971748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1972748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      target )
1973748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	libobj="$arg"
1974748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	arg_mode=normal
1975748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	continue
1976748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
1977748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1978748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      normal )
1979748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Accept any command-line options.
1980748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	case $arg in
1981748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	-o)
1982748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  test -n "$libobj" && \
1983748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_fatal_error "you cannot specify \`-o' more than once"
1984748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  arg_mode=target
1985748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  continue
1986748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
1987748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1988748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	-pie | -fpie | -fPIE)
1989748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat          func_append pie_flag " $arg"
1990748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  continue
1991748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
1992748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1993748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	-shared | -static | -prefer-pic | -prefer-non-pic)
1994748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_append later " $arg"
1995748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  continue
1996748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
1997748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
1998748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	-no-suppress)
1999748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  suppress_opt=no
2000748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  continue
2001748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
2002748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2003748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	-Xcompiler)
2004748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  arg_mode=arg  #  the next one goes into the "base_compile" arg list
2005748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  continue      #  The current "srcfile" will either be retained or
2006748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;            #  replaced later.  I would guess that would be a bug.
2007748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2008748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	-Wc,*)
2009748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_stripname '-Wc,' '' "$arg"
2010748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  args=$func_stripname_result
2011748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  lastarg=
2012748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  save_ifs="$IFS"; IFS=','
2013748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  for arg in $args; do
2014748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    IFS="$save_ifs"
2015748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_append_quoted lastarg "$arg"
2016748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  done
2017748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  IFS="$save_ifs"
2018748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_stripname ' ' '' "$lastarg"
2019748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  lastarg=$func_stripname_result
2020748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2021748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # Add the arguments to base_compile.
2022748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_append base_compile " $lastarg"
2023748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  continue
2024748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
2025748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2026748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	*)
2027748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # Accept the current argument as the source file.
2028748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # The previous "srcfile" becomes the current argument.
2029748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  #
2030748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  lastarg="$srcfile"
2031748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  srcfile="$arg"
2032748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
2033748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	esac  #  case $arg
2034748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
2035748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      esac    #  case $arg_mode
2036748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2037748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Aesthetically quote the previous argument.
2038748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_append_quoted base_compile "$lastarg"
2039748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    done # for arg
2040748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2041748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    case $arg_mode in
2042748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    arg)
2043748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_fatal_error "you must specify an argument for -Xcompile"
2044748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      ;;
2045748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    target)
2046748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_fatal_error "you must specify a target with \`-o'"
2047748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      ;;
2048748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    *)
2049748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Get the name of the library object.
2050748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      test -z "$libobj" && {
2051748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_basename "$srcfile"
2052748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	libobj="$func_basename_result"
2053748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      }
2054748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      ;;
2055748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    esac
2056748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2057748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # Recognize several different file suffixes.
2058748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # If the user specifies -o file.o, it is replaced with file.lo
2059748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    case $libobj in
2060748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    *.[cCFSifmso] | \
2061748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    *.ada | *.adb | *.ads | *.asm | \
2062748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
2063748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup)
2064748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_xform "$libobj"
2065748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      libobj=$func_xform_result
2066748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      ;;
2067748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    esac
2068748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2069748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    case $libobj in
2070748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
2071748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    *)
2072748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_fatal_error "cannot determine name of library object from \`$libobj'"
2073748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      ;;
2074748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    esac
2075748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2076748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_infer_tag $base_compile
2077748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2078748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    for arg in $later; do
2079748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      case $arg in
2080748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      -shared)
2081748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	test "$build_libtool_libs" != yes && \
2082748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_fatal_configuration "can not build a shared library"
2083748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	build_old_libs=no
2084748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	continue
2085748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
2086748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2087748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      -static)
2088748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	build_libtool_libs=no
2089748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	build_old_libs=yes
2090748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	continue
2091748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
2092748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2093748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      -prefer-pic)
2094748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	pic_mode=yes
2095748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	continue
2096748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
2097748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2098748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      -prefer-non-pic)
2099748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	pic_mode=no
2100748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	continue
2101748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
2102748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      esac
2103748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    done
2104748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2105748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_quote_for_eval "$libobj"
2106748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    test "X$libobj" != "X$func_quote_for_eval_result" \
2107748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"'	 &()|`$[]' \
2108748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      && func_warning "libobj name \`$libobj' may not contain shell special characters."
2109748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_dirname_and_basename "$obj" "/" ""
2110748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    objname="$func_basename_result"
2111748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    xdir="$func_dirname_result"
2112748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    lobj=${xdir}$objdir/$objname
2113748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2114748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    test -z "$base_compile" && \
2115748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_fatal_help "you must specify a compilation command"
2116748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2117748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # Delete any leftover library objects.
2118748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    if test "$build_old_libs" = yes; then
2119748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      removelist="$obj $lobj $libobj ${libobj}T"
2120748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    else
2121748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      removelist="$lobj $libobj ${libobj}T"
2122748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    fi
2123748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2124748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # On Cygwin there's no "real" PIC flag so we must build both object types
2125748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    case $host_os in
2126748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    cygwin* | mingw* | pw32* | os2* | cegcc*)
2127748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      pic_mode=default
2128748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      ;;
2129748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    esac
2130748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
2131748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # non-PIC code in shared libraries is not supported
2132748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      pic_mode=default
2133748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    fi
2134748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2135748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # Calculate the filename of the output object if compiler does
2136748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # not support -o with -c
2137748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    if test "$compiler_c_o" = no; then
2138748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext}
2139748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      lockfile="$output_obj.lock"
2140748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    else
2141748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      output_obj=
2142748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      need_locks=no
2143748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      lockfile=
2144748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    fi
2145748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2146748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # Lock this critical section if it is needed
2147748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # We use this script file to make the link, it avoids creating a new file
2148748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    if test "$need_locks" = yes; then
2149748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
2150748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_echo "Waiting for $lockfile to be removed"
2151748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	sleep 2
2152748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      done
2153748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    elif test "$need_locks" = warn; then
2154748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test -f "$lockfile"; then
2155748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	$ECHO "\
2156748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat*** ERROR, $lockfile exists and contains:
2157748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat`cat $lockfile 2>/dev/null`
2158748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2159748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratThis indicates that another process is trying to use the same
2160748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erattemporary object file, and libtool could not work around it because
2161748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratyour compiler does not support \`-c' and \`-o' together.  If you
2162748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratrepeat this compilation, it may succeed, by chance, but you had better
2163748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratavoid parallel builds (make -j) in this platform, or get a better
2164748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratcompiler."
2165748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2166748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	$opt_dry_run || $RM $removelist
2167748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	exit $EXIT_FAILURE
2168748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
2169748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_append removelist " $output_obj"
2170748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      $ECHO "$srcfile" > "$lockfile"
2171748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    fi
2172748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2173748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    $opt_dry_run || $RM $removelist
2174748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_append removelist " $lockfile"
2175748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
2176748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2177748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_to_tool_file "$srcfile" func_convert_file_msys_to_w32
2178748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    srcfile=$func_to_tool_file_result
2179748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_quote_for_eval "$srcfile"
2180748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    qsrcfile=$func_quote_for_eval_result
2181748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2182748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # Only build a PIC object if we are building libtool libraries.
2183748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    if test "$build_libtool_libs" = yes; then
2184748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Without this assignment, base_compile gets emptied.
2185748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fbsd_hideous_sh_bug=$base_compile
2186748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2187748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test "$pic_mode" != no; then
2188748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	command="$base_compile $qsrcfile $pic_flag"
2189748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      else
2190748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Don't build PIC code
2191748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	command="$base_compile $qsrcfile"
2192748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
2193748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2194748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_mkdir_p "$xdir$objdir"
2195748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2196748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test -z "$output_obj"; then
2197748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Place PIC objects in $objdir
2198748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_append command " -o $lobj"
2199748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
2200748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2201748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_show_eval_locale "$command"	\
2202748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat          'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
2203748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2204748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test "$need_locks" = warn &&
2205748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
2206748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	$ECHO "\
2207748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat*** ERROR, $lockfile contains:
2208748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat`cat $lockfile 2>/dev/null`
2209748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2210748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratbut it should contain:
2211748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat$srcfile
2212748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2213748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratThis indicates that another process is trying to use the same
2214748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erattemporary object file, and libtool could not work around it because
2215748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratyour compiler does not support \`-c' and \`-o' together.  If you
2216748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratrepeat this compilation, it may succeed, by chance, but you had better
2217748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratavoid parallel builds (make -j) in this platform, or get a better
2218748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratcompiler."
2219748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2220748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	$opt_dry_run || $RM $removelist
2221748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	exit $EXIT_FAILURE
2222748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
2223748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2224748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Just move the object if needed, then go on to compile the next one
2225748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
2226748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_show_eval '$MV "$output_obj" "$lobj"' \
2227748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
2228748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
2229748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2230748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Allow error messages only from the first compilation.
2231748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test "$suppress_opt" = yes; then
2232748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	suppress_output=' >/dev/null 2>&1'
2233748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
2234748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    fi
2235748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2236748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # Only build a position-dependent object if we build old libraries.
2237748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    if test "$build_old_libs" = yes; then
2238748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test "$pic_mode" != yes; then
2239748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Don't build PIC code
2240748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	command="$base_compile $qsrcfile$pie_flag"
2241748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      else
2242748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	command="$base_compile $qsrcfile $pic_flag"
2243748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
2244748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test "$compiler_c_o" = yes; then
2245748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_append command " -o $obj"
2246748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
2247748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2248748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Suppress compiler output if we already did a PIC compilation.
2249748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_append command "$suppress_output"
2250748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_show_eval_locale "$command" \
2251748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
2252748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2253748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test "$need_locks" = warn &&
2254748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
2255748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	$ECHO "\
2256748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat*** ERROR, $lockfile contains:
2257748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat`cat $lockfile 2>/dev/null`
2258748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2259748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratbut it should contain:
2260748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat$srcfile
2261748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2262748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratThis indicates that another process is trying to use the same
2263748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erattemporary object file, and libtool could not work around it because
2264748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratyour compiler does not support \`-c' and \`-o' together.  If you
2265748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratrepeat this compilation, it may succeed, by chance, but you had better
2266748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratavoid parallel builds (make -j) in this platform, or get a better
2267748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratcompiler."
2268748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2269748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	$opt_dry_run || $RM $removelist
2270748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	exit $EXIT_FAILURE
2271748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
2272748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2273748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Just move the object if needed
2274748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
2275748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_show_eval '$MV "$output_obj" "$obj"' \
2276748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
2277748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
2278748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    fi
2279748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2280748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    $opt_dry_run || {
2281748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
2282748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2283748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Unlock the critical section if it was locked
2284748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test "$need_locks" != no; then
2285748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	removelist=$lockfile
2286748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        $RM "$lockfile"
2287748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
2288748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    }
2289748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2290748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    exit $EXIT_SUCCESS
2291748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
2292748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2293748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat$opt_help || {
2294748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  test "$opt_mode" = compile && func_mode_compile ${1+"$@"}
2295748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
2296748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2297748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_mode_help ()
2298748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
2299748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # We need to display help for each of the modes.
2300748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    case $opt_mode in
2301748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      "")
2302748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        # Generic help is extracted from the usage comments
2303748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        # at the start of this file.
2304748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        func_help
2305748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        ;;
2306748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2307748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      clean)
2308748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        $ECHO \
2309748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
2310748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2311748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratRemove files from the build directory.
2312748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2313748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratRM is the name of the program to use to delete files associated with each FILE
2314748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
2315748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratto RM.
2316748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2317748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratIf FILE is a libtool library, object or program, all the files associated
2318748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratwith it are deleted. Otherwise, only FILE itself is deleted using RM."
2319748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        ;;
2320748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2321748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      compile)
2322748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      $ECHO \
2323748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
2324748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2325748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratCompile a source file into a libtool library object.
2326748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2327748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratThis mode accepts the following additional options:
2328748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2329748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
2330748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  -no-suppress      do not suppress compiler output for multiple passes
2331748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  -prefer-pic       try to build PIC objects only
2332748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  -prefer-non-pic   try to build non-PIC objects only
2333748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  -shared           do not build a \`.o' file suitable for static linking
2334748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  -static           only build a \`.o' file suitable for static linking
2335748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  -Wc,FLAG          pass FLAG directly to the compiler
2336748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2337748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratCOMPILE-COMMAND is a command to be used in creating a \`standard' object file
2338748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfrom the given SOURCEFILE.
2339748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2340748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratThe output file name is determined by removing the directory component from
2341748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratSOURCEFILE, then substituting the C source code suffix \`.c' with the
2342748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratlibrary object suffix, \`.lo'."
2343748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        ;;
2344748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2345748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      execute)
2346748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        $ECHO \
2347748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
2348748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2349748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratAutomatically set library path, then run a program.
2350748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2351748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratThis mode accepts the following additional options:
2352748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2353748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  -dlopen FILE      add the directory containing FILE to the library path
2354748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2355748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratThis mode sets the library path environment variable according to \`-dlopen'
2356748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratflags.
2357748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2358748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratIf any of the ARGS are libtool executable wrappers, then they are translated
2359748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratinto their corresponding uninstalled binary, and any of their required library
2360748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratdirectories are added to the library path.
2361748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2362748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratThen, COMMAND is executed, with ARGS as arguments."
2363748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        ;;
2364748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2365748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      finish)
2366748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        $ECHO \
2367748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
2368748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2369748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratComplete the installation of libtool libraries.
2370748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2371748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratEach LIBDIR is a directory that contains libtool libraries.
2372748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2373748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratThe commands that this mode executes may require superuser privileges.  Use
2374748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratthe \`--dry-run' option if you just want to see what would be executed."
2375748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        ;;
2376748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2377748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      install)
2378748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        $ECHO \
2379748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
2380748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2381748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratInstall executables or libraries.
2382748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2383748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratINSTALL-COMMAND is the installation command.  The first component should be
2384748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erateither the \`install' or \`cp' program.
2385748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2386748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratThe following components of INSTALL-COMMAND are treated specially:
2387748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2388748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  -inst-prefix-dir PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
2389748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2390748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratThe rest of the components are interpreted as arguments to that command (only
2391748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratBSD-compatible install options are recognized)."
2392748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        ;;
2393748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2394748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      link)
2395748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        $ECHO \
2396748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
2397748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2398748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratLink object files or libraries together to form another library, or to
2399748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratcreate an executable program.
2400748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2401748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratLINK-COMMAND is a command using the C compiler that you would use to create
2402748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erata program from several object files.
2403748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2404748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratThe following components of LINK-COMMAND are treated specially:
2405748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2406748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  -all-static       do not do any dynamic linking at all
2407748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  -avoid-version    do not add a version suffix if possible
2408748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  -bindir BINDIR    specify path to binaries directory (for systems where
2409748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat                    libraries must be found in the PATH setting at runtime)
2410748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
2411748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
2412748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
2413748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  -export-symbols SYMFILE
2414748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat                    try to export only the symbols listed in SYMFILE
2415748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  -export-symbols-regex REGEX
2416748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat                    try to export only the symbols matching REGEX
2417748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  -LLIBDIR          search LIBDIR for required installed libraries
2418748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  -lNAME            OUTPUT-FILE requires the installed library libNAME
2419748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  -module           build a library that can dlopened
2420748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  -no-fast-install  disable the fast-install mode
2421748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  -no-install       link a not-installable executable
2422748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  -no-undefined     declare that a library does not refer to external symbols
2423748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
2424748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  -objectlist FILE  Use a list of object files found in FILE to specify objects
2425748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  -precious-files-regex REGEX
2426748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat                    don't remove output files matching REGEX
2427748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  -release RELEASE  specify package release information
2428748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
2429748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
2430748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  -shared           only do dynamic linking of libtool libraries
2431748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  -shrext SUFFIX    override the standard shared library file extension
2432748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  -static           do not do any dynamic linking of uninstalled libtool libraries
2433748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  -static-libtool-libs
2434748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat                    do not do any dynamic linking of libtool libraries
2435748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  -version-info CURRENT[:REVISION[:AGE]]
2436748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat                    specify library version info [each variable defaults to 0]
2437748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  -weak LIBNAME     declare that the target provides the LIBNAME interface
2438748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  -Wc,FLAG
2439748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  -Xcompiler FLAG   pass linker-specific FLAG directly to the compiler
2440748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  -Wl,FLAG
2441748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  -Xlinker FLAG     pass linker-specific FLAG directly to the linker
2442748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  -XCClinker FLAG   pass link-specific FLAG to the compiler driver (CC)
2443748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2444748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratAll other options (arguments beginning with \`-') are ignored.
2445748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2446748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratEvery other argument is treated as a filename.  Files ending in \`.la' are
2447748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erattreated as uninstalled libtool libraries, other files are standard or library
2448748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratobject files.
2449748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2450748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratIf the OUTPUT-FILE ends in \`.la', then a libtool library is created,
2451748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratonly library objects (\`.lo' files) may be specified, and \`-rpath' is
2452748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratrequired, except when creating a convenience library.
2453748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2454748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
2455748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratusing \`ar' and \`ranlib', or on Windows using \`lib'.
2456748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2457748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
2458748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratis created, otherwise an executable program is created."
2459748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        ;;
2460748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2461748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      uninstall)
2462748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        $ECHO \
2463748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
2464748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2465748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratRemove libraries from an installation directory.
2466748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2467748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratRM is the name of the program to use to delete files associated with each FILE
2468748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
2469748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratto RM.
2470748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2471748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratIf FILE is a libtool library, all the files associated with it are deleted.
2472748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratOtherwise, only FILE itself is deleted using RM."
2473748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        ;;
2474748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2475748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      *)
2476748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        func_fatal_help "invalid operation mode \`$opt_mode'"
2477748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        ;;
2478748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    esac
2479748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2480748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    echo
2481748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    $ECHO "Try \`$progname --help' for more information about other modes."
2482748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
2483748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2484748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Now that we've collected a possible --mode arg, show help if necessary
2485748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratif $opt_help; then
2486748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  if test "$opt_help" = :; then
2487748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_mode_help
2488748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  else
2489748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    {
2490748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_help noexit
2491748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      for opt_mode in compile link execute install finish uninstall clean; do
2492748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_mode_help
2493748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      done
2494748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    } | sed -n '1p; 2,$s/^Usage:/  or: /p'
2495748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    {
2496748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_help noexit
2497748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      for opt_mode in compile link execute install finish uninstall clean; do
2498748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	echo
2499748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_mode_help
2500748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      done
2501748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    } |
2502748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    sed '1d
2503748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      /^When reporting/,/^Report/{
2504748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	H
2505748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	d
2506748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      }
2507748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      $x
2508748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      /information about other modes/d
2509748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      /more detailed .*MODE/d
2510748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/'
2511748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  fi
2512748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  exit $?
2513748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfi
2514748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2515748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2516748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_mode_execute arg...
2517748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_mode_execute ()
2518748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
2519748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    $opt_debug
2520748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # The first argument is the command name.
2521748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    cmd="$nonopt"
2522748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    test -z "$cmd" && \
2523748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_fatal_help "you must specify a COMMAND"
2524748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2525748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # Handle -dlopen flags immediately.
2526748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    for file in $opt_dlopen; do
2527748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      test -f "$file" \
2528748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	|| func_fatal_help "\`$file' is not a file"
2529748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2530748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      dir=
2531748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      case $file in
2532748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      *.la)
2533748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_resolve_sysroot "$file"
2534748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	file=$func_resolve_sysroot_result
2535748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2536748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Check to see that this really is a libtool archive.
2537748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_lalib_unsafe_p "$file" \
2538748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  || func_fatal_help "\`$lib' is not a valid libtool archive"
2539748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2540748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Read the libtool library.
2541748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	dlname=
2542748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	library_names=
2543748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_source "$file"
2544748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2545748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Skip this library if it cannot be dlopened.
2546748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test -z "$dlname"; then
2547748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # Warn if it was a shared library.
2548748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  test -n "$library_names" && \
2549748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_warning "\`$file' was not linked with \`-export-dynamic'"
2550748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  continue
2551748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
2552748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2553748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_dirname "$file" "" "."
2554748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	dir="$func_dirname_result"
2555748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2556748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test -f "$dir/$objdir/$dlname"; then
2557748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_append dir "/$objdir"
2558748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	else
2559748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test ! -f "$dir/$dlname"; then
2560748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
2561748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
2562748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
2563748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
2564748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2565748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      *.lo)
2566748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Just add the directory containing the .lo file.
2567748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_dirname "$file" "" "."
2568748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	dir="$func_dirname_result"
2569748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
2570748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2571748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      *)
2572748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
2573748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	continue
2574748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
2575748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      esac
2576748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2577748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Get the absolute pathname.
2578748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      absdir=`cd "$dir" && pwd`
2579748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      test -n "$absdir" && dir="$absdir"
2580748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2581748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Now add the directory to shlibpath_var.
2582748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if eval "test -z \"\$$shlibpath_var\""; then
2583748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	eval "$shlibpath_var=\"\$dir\""
2584748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      else
2585748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
2586748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
2587748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    done
2588748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2589748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # This variable tells wrapper scripts just to set shlibpath_var
2590748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # rather than running their programs.
2591748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    libtool_execute_magic="$magic"
2592748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2593748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # Check if any of the arguments is a wrapper script.
2594748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    args=
2595748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    for file
2596748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    do
2597748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      case $file in
2598748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      -* | *.la | *.lo ) ;;
2599748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      *)
2600748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Do a test to see if this is really a libtool program.
2601748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if func_ltwrapper_script_p "$file"; then
2602748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_source "$file"
2603748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # Transform arg to wrapped name.
2604748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  file="$progdir/$program"
2605748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	elif func_ltwrapper_executable_p "$file"; then
2606748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_ltwrapper_scriptname "$file"
2607748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_source "$func_ltwrapper_scriptname_result"
2608748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # Transform arg to wrapped name.
2609748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  file="$progdir/$program"
2610748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
2611748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
2612748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      esac
2613748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Quote arguments (to preserve shell metacharacters).
2614748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_append_quoted args "$file"
2615748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    done
2616748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2617748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    if test "X$opt_dry_run" = Xfalse; then
2618748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test -n "$shlibpath_var"; then
2619748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Export the shlibpath_var.
2620748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	eval "export $shlibpath_var"
2621748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
2622748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2623748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Restore saved environment variables
2624748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
2625748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      do
2626748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	eval "if test \"\${save_$lt_var+set}\" = set; then
2627748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat                $lt_var=\$save_$lt_var; export $lt_var
2628748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      else
2629748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		$lt_unset $lt_var
2630748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      fi"
2631748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      done
2632748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2633748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Now prepare to actually exec the command.
2634748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      exec_cmd="\$cmd$args"
2635748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    else
2636748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Display what would be done.
2637748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test -n "$shlibpath_var"; then
2638748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
2639748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	echo "export $shlibpath_var"
2640748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
2641748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      $ECHO "$cmd$args"
2642748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      exit $EXIT_SUCCESS
2643748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    fi
2644748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
2645748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2646748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erattest "$opt_mode" = execute && func_mode_execute ${1+"$@"}
2647748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2648748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2649748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_mode_finish arg...
2650748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_mode_finish ()
2651748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
2652748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    $opt_debug
2653748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    libs=
2654748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    libdirs=
2655748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    admincmds=
2656748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2657748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    for opt in "$nonopt" ${1+"$@"}
2658748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    do
2659748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test -d "$opt"; then
2660748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_append libdirs " $opt"
2661748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2662748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      elif test -f "$opt"; then
2663748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if func_lalib_unsafe_p "$opt"; then
2664748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_append libs " $opt"
2665748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	else
2666748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_warning "\`$opt' is not a valid libtool archive"
2667748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
2668748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2669748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      else
2670748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_fatal_error "invalid argument \`$opt'"
2671748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
2672748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    done
2673748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2674748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    if test -n "$libs"; then
2675748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test -n "$lt_sysroot"; then
2676748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"`
2677748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;"
2678748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      else
2679748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        sysroot_cmd=
2680748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
2681748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2682748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Remove sysroot references
2683748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if $opt_dry_run; then
2684748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        for lib in $libs; do
2685748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat          echo "removing references to $lt_sysroot and \`=' prefixes from $lib"
2686748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        done
2687748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      else
2688748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        tmpdir=`func_mktempdir`
2689748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        for lib in $libs; do
2690748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \
2691748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    > $tmpdir/tmp-la
2692748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  mv -f $tmpdir/tmp-la $lib
2693748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	done
2694748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        ${RM}r "$tmpdir"
2695748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
2696748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    fi
2697748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2698748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
2699748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      for libdir in $libdirs; do
2700748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test -n "$finish_cmds"; then
2701748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # Do each command in the finish commands.
2702748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
2703748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat'"$cmd"'"'
2704748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
2705748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test -n "$finish_eval"; then
2706748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # Do the single finish_eval.
2707748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  eval cmds=\"$finish_eval\"
2708748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  $opt_dry_run || eval "$cmds" || func_append admincmds "
2709748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat       $cmds"
2710748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
2711748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      done
2712748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    fi
2713748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2714748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # Exit here if they wanted silent mode.
2715748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    $opt_silent && exit $EXIT_SUCCESS
2716748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2717748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
2718748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      echo "----------------------------------------------------------------------"
2719748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      echo "Libraries have been installed in:"
2720748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      for libdir in $libdirs; do
2721748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	$ECHO "   $libdir"
2722748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      done
2723748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      echo
2724748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      echo "If you ever happen to want to link against installed libraries"
2725748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      echo "in a given directory, LIBDIR, you must either use libtool, and"
2726748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
2727748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      echo "flag during linking and do at least one of the following:"
2728748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test -n "$shlibpath_var"; then
2729748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	echo "   - add LIBDIR to the \`$shlibpath_var' environment variable"
2730748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	echo "     during execution"
2731748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
2732748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test -n "$runpath_var"; then
2733748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	echo "   - add LIBDIR to the \`$runpath_var' environment variable"
2734748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	echo "     during linking"
2735748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
2736748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test -n "$hardcode_libdir_flag_spec"; then
2737748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	libdir=LIBDIR
2738748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	eval flag=\"$hardcode_libdir_flag_spec\"
2739748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2740748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	$ECHO "   - use the \`$flag' linker flag"
2741748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
2742748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test -n "$admincmds"; then
2743748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	$ECHO "   - have your system administrator run these commands:$admincmds"
2744748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
2745748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test -f /etc/ld.so.conf; then
2746748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	echo "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
2747748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
2748748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      echo
2749748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2750748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      echo "See any operating system documentation about shared libraries for"
2751748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      case $host in
2752748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	solaris2.[6789]|solaris2.1[0-9])
2753748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  echo "more information, such as the ld(1), crle(1) and ld.so(8) manual"
2754748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  echo "pages."
2755748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
2756748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	*)
2757748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  echo "more information, such as the ld(1) and ld.so(8) manual pages."
2758748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
2759748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      esac
2760748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      echo "----------------------------------------------------------------------"
2761748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    fi
2762748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    exit $EXIT_SUCCESS
2763748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
2764748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2765748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erattest "$opt_mode" = finish && func_mode_finish ${1+"$@"}
2766748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2767748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2768748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_mode_install arg...
2769748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_mode_install ()
2770748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
2771748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    $opt_debug
2772748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # There may be an optional sh(1) argument at the beginning of
2773748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # install_prog (especially on Windows NT).
2774748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
2775748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat       # Allow the use of GNU shtool's install command.
2776748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat       case $nonopt in *shtool*) :;; *) false;; esac; then
2777748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Aesthetically quote it.
2778748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_quote_for_eval "$nonopt"
2779748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      install_prog="$func_quote_for_eval_result "
2780748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      arg=$1
2781748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      shift
2782748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    else
2783748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      install_prog=
2784748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      arg=$nonopt
2785748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    fi
2786748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2787748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # The real first argument should be the name of the installation program.
2788748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # Aesthetically quote it.
2789748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_quote_for_eval "$arg"
2790748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_append install_prog "$func_quote_for_eval_result"
2791748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    install_shared_prog=$install_prog
2792748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    case " $install_prog " in
2793748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      *[\\\ /]cp\ *) install_cp=: ;;
2794748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      *) install_cp=false ;;
2795748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    esac
2796748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2797748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # We need to accept at least all the BSD install flags.
2798748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    dest=
2799748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    files=
2800748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    opts=
2801748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    prev=
2802748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    install_type=
2803748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    isdir=no
2804748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    stripme=
2805748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    no_mode=:
2806748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    for arg
2807748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    do
2808748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      arg2=
2809748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test -n "$dest"; then
2810748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_append files " $dest"
2811748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	dest=$arg
2812748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	continue
2813748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
2814748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2815748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      case $arg in
2816748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      -d) isdir=yes ;;
2817748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      -f)
2818748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if $install_cp; then :; else
2819748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  prev=$arg
2820748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
2821748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
2822748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      -g | -m | -o)
2823748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	prev=$arg
2824748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
2825748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      -s)
2826748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	stripme=" -s"
2827748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	continue
2828748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
2829748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      -*)
2830748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
2831748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      *)
2832748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# If the previous option needed an argument, then skip it.
2833748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test -n "$prev"; then
2834748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test "x$prev" = x-m && test -n "$install_override_mode"; then
2835748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    arg2=$install_override_mode
2836748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    no_mode=false
2837748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
2838748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  prev=
2839748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	else
2840748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  dest=$arg
2841748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  continue
2842748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
2843748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
2844748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      esac
2845748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2846748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Aesthetically quote the argument.
2847748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_quote_for_eval "$arg"
2848748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_append install_prog " $func_quote_for_eval_result"
2849748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test -n "$arg2"; then
2850748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_quote_for_eval "$arg2"
2851748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
2852748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_append install_shared_prog " $func_quote_for_eval_result"
2853748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    done
2854748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2855748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    test -z "$install_prog" && \
2856748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_fatal_help "you must specify an install program"
2857748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2858748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    test -n "$prev" && \
2859748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_fatal_help "the \`$prev' option requires an argument"
2860748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2861748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    if test -n "$install_override_mode" && $no_mode; then
2862748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if $install_cp; then :; else
2863748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_quote_for_eval "$install_override_mode"
2864748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_append install_shared_prog " -m $func_quote_for_eval_result"
2865748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
2866748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    fi
2867748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2868748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    if test -z "$files"; then
2869748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test -z "$dest"; then
2870748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_fatal_help "no file or destination specified"
2871748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      else
2872748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_fatal_help "you must specify a destination"
2873748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
2874748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    fi
2875748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2876748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # Strip any trailing slash from the destination.
2877748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_stripname '' '/' "$dest"
2878748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    dest=$func_stripname_result
2879748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2880748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # Check to see that the destination is a directory.
2881748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    test -d "$dest" && isdir=yes
2882748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    if test "$isdir" = yes; then
2883748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      destdir="$dest"
2884748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      destname=
2885748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    else
2886748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_dirname_and_basename "$dest" "" "."
2887748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      destdir="$func_dirname_result"
2888748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      destname="$func_basename_result"
2889748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2890748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Not a directory, so check to see that there is only one file specified.
2891748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      set dummy $files; shift
2892748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      test "$#" -gt 1 && \
2893748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_fatal_help "\`$dest' is not a directory"
2894748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    fi
2895748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    case $destdir in
2896748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    [\\/]* | [A-Za-z]:[\\/]*) ;;
2897748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    *)
2898748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      for file in $files; do
2899748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	case $file in
2900748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	*.lo) ;;
2901748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	*)
2902748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_fatal_help "\`$destdir' must be an absolute directory name"
2903748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
2904748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	esac
2905748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      done
2906748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      ;;
2907748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    esac
2908748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2909748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # This variable tells wrapper scripts just to set variables rather
2910748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # than running their programs.
2911748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    libtool_install_magic="$magic"
2912748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2913748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    staticlibs=
2914748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    future_libdirs=
2915748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    current_libdirs=
2916748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    for file in $files; do
2917748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2918748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Do each installation.
2919748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      case $file in
2920748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      *.$libext)
2921748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Do the static libraries later.
2922748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_append staticlibs " $file"
2923748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
2924748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2925748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      *.la)
2926748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_resolve_sysroot "$file"
2927748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	file=$func_resolve_sysroot_result
2928748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2929748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Check to see that this really is a libtool archive.
2930748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_lalib_unsafe_p "$file" \
2931748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  || func_fatal_help "\`$file' is not a valid libtool archive"
2932748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2933748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	library_names=
2934748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	old_library=
2935748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	relink_command=
2936748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_source "$file"
2937748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2938748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Add the libdir to current_libdirs if it is the destination.
2939748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test "X$destdir" = "X$libdir"; then
2940748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  case "$current_libdirs " in
2941748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *" $libdir "*) ;;
2942748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *) func_append current_libdirs " $libdir" ;;
2943748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  esac
2944748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	else
2945748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # Note the libdir as a future libdir.
2946748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  case "$future_libdirs " in
2947748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *" $libdir "*) ;;
2948748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *) func_append future_libdirs " $libdir" ;;
2949748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  esac
2950748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
2951748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2952748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_dirname "$file" "/" ""
2953748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	dir="$func_dirname_result"
2954748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_append dir "$objdir"
2955748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2956748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test -n "$relink_command"; then
2957748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # Determine the prefix the user has applied to our future dir.
2958748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"`
2959748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2960748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # Don't allow the user to place us outside of our expected
2961748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # location b/c this prevents finding dependent libraries that
2962748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # are installed to the same prefix.
2963748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # At present, this check doesn't affect windows .dll's that
2964748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # are installed into $libdir/../bin (currently, that works fine)
2965748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # but it's something to keep an eye on.
2966748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  test "$inst_prefix_dir" = "$destdir" && \
2967748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
2968748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2969748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test -n "$inst_prefix_dir"; then
2970748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # Stick the inst_prefix_dir data into the link command.
2971748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
2972748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  else
2973748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
2974748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
2975748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2976748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_warning "relinking \`$file'"
2977748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_show_eval "$relink_command" \
2978748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
2979748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
2980748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2981748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# See the names of the shared library.
2982748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	set dummy $library_names; shift
2983748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test -n "$1"; then
2984748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  realname="$1"
2985748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  shift
2986748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2987748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  srcname="$realname"
2988748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  test -n "$relink_command" && srcname="$realname"T
2989748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
2990748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # Install the shared library and build the symlinks.
2991748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \
2992748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      'exit $?'
2993748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  tstripme="$stripme"
2994748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  case $host_os in
2995748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  cygwin* | mingw* | pw32* | cegcc*)
2996748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    case $realname in
2997748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    *.dll.a)
2998748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      tstripme=""
2999748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      ;;
3000748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    esac
3001748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    ;;
3002748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  esac
3003748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test -n "$tstripme" && test -n "$striplib"; then
3004748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_show_eval "$striplib $destdir/$realname" 'exit $?'
3005748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
3006748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3007748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test "$#" -gt 0; then
3008748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # Delete the old symlinks, and create new ones.
3009748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # Try `ln -sf' first, because the `ln' binary might depend on
3010748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # the symlink we replace!  Solaris /bin/ln does not understand -f,
3011748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # so we also need to try rm && ln -s.
3012748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    for linkname
3013748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    do
3014748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      test "$linkname" != "$realname" \
3015748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		&& func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
3016748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    done
3017748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
3018748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3019748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # Do each command in the postinstall commands.
3020748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  lib="$destdir/$realname"
3021748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_execute_cmds "$postinstall_cmds" 'exit $?'
3022748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
3023748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3024748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Install the pseudo-library for information purposes.
3025748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_basename "$file"
3026748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	name="$func_basename_result"
3027748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	instname="$dir/$name"i
3028748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
3029748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3030748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Maybe install the static library, too.
3031748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	test -n "$old_library" && func_append staticlibs " $dir/$old_library"
3032748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
3033748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3034748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      *.lo)
3035748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Install (i.e. copy) a libtool object.
3036748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3037748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Figure out destination file name, if it wasn't already specified.
3038748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test -n "$destname"; then
3039748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  destfile="$destdir/$destname"
3040748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	else
3041748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_basename "$file"
3042748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  destfile="$func_basename_result"
3043748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  destfile="$destdir/$destfile"
3044748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
3045748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3046748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Deduce the name of the destination old-style object file.
3047748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	case $destfile in
3048748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	*.lo)
3049748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_lo2o "$destfile"
3050748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  staticdest=$func_lo2o_result
3051748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
3052748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	*.$objext)
3053748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  staticdest="$destfile"
3054748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  destfile=
3055748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
3056748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	*)
3057748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_fatal_help "cannot copy a libtool object to \`$destfile'"
3058748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
3059748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	esac
3060748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3061748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Install the libtool object if requested.
3062748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	test -n "$destfile" && \
3063748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_show_eval "$install_prog $file $destfile" 'exit $?'
3064748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3065748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Install the old object if enabled.
3066748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test "$build_old_libs" = yes; then
3067748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # Deduce the name of the old-style object file.
3068748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_lo2o "$file"
3069748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  staticobj=$func_lo2o_result
3070748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
3071748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
3072748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	exit $EXIT_SUCCESS
3073748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
3074748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3075748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      *)
3076748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Figure out destination file name, if it wasn't already specified.
3077748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test -n "$destname"; then
3078748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  destfile="$destdir/$destname"
3079748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	else
3080748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_basename "$file"
3081748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  destfile="$func_basename_result"
3082748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  destfile="$destdir/$destfile"
3083748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
3084748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3085748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# If the file is missing, and there is a .exe on the end, strip it
3086748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# because it is most likely a libtool script we actually want to
3087748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# install
3088748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	stripped_ext=""
3089748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	case $file in
3090748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *.exe)
3091748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    if test ! -f "$file"; then
3092748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      func_stripname '' '.exe' "$file"
3093748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      file=$func_stripname_result
3094748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      stripped_ext=".exe"
3095748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    fi
3096748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    ;;
3097748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	esac
3098748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3099748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Do a test to see if this is really a libtool program.
3100748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	case $host in
3101748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	*cygwin* | *mingw*)
3102748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    if func_ltwrapper_executable_p "$file"; then
3103748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      func_ltwrapper_scriptname "$file"
3104748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      wrapper=$func_ltwrapper_scriptname_result
3105748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    else
3106748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      func_stripname '' '.exe' "$file"
3107748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      wrapper=$func_stripname_result
3108748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    fi
3109748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    ;;
3110748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	*)
3111748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    wrapper=$file
3112748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    ;;
3113748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	esac
3114748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if func_ltwrapper_script_p "$wrapper"; then
3115748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  notinst_deplibs=
3116748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  relink_command=
3117748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3118748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_source "$wrapper"
3119748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3120748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # Check the variables that should have been set.
3121748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  test -z "$generated_by_libtool_version" && \
3122748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_fatal_error "invalid libtool wrapper script \`$wrapper'"
3123748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3124748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  finalize=yes
3125748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  for lib in $notinst_deplibs; do
3126748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # Check to see that each library is installed.
3127748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    libdir=
3128748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    if test -f "$lib"; then
3129748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      func_source "$lib"
3130748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    fi
3131748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test
3132748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    if test -n "$libdir" && test ! -f "$libfile"; then
3133748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      func_warning "\`$lib' has not been installed in \`$libdir'"
3134748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      finalize=no
3135748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    fi
3136748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  done
3137748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3138748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  relink_command=
3139748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_source "$wrapper"
3140748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3141748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  outputname=
3142748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test "$fast_install" = no && test -n "$relink_command"; then
3143748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    $opt_dry_run || {
3144748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      if test "$finalize" = yes; then
3145748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	        tmpdir=`func_mktempdir`
3146748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		func_basename "$file$stripped_ext"
3147748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		file="$func_basename_result"
3148748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	        outputname="$tmpdir/$file"
3149748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	        # Replace the output file specification.
3150748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	        relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'`
3151748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3152748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	        $opt_silent || {
3153748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	          func_quote_for_expand "$relink_command"
3154748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  eval "func_echo $func_quote_for_expand_result"
3155748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	        }
3156748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	        if eval "$relink_command"; then :
3157748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	          else
3158748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  func_error "error: relink \`$file' with the above command before installing it"
3159748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  $opt_dry_run || ${RM}r "$tmpdir"
3160748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  continue
3161748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	        fi
3162748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	        file="$outputname"
3163748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      else
3164748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	        func_warning "cannot relink \`$file'"
3165748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      fi
3166748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    }
3167748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  else
3168748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # Install the binary that we compiled earlier.
3169748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"`
3170748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
3171748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
3172748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3173748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# remove .exe since cygwin /usr/bin/install will append another
3174748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# one anyway
3175748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	case $install_prog,$host in
3176748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	*/usr/bin/install*,*cygwin*)
3177748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  case $file:$destfile in
3178748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *.exe:*.exe)
3179748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # this is ok
3180748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    ;;
3181748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *.exe:*)
3182748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    destfile=$destfile.exe
3183748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    ;;
3184748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *:*.exe)
3185748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_stripname '' '.exe' "$destfile"
3186748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    destfile=$func_stripname_result
3187748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    ;;
3188748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  esac
3189748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
3190748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	esac
3191748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
3192748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	$opt_dry_run || if test -n "$outputname"; then
3193748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ${RM}r "$tmpdir"
3194748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
3195748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
3196748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      esac
3197748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    done
3198748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3199748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    for file in $staticlibs; do
3200748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_basename "$file"
3201748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      name="$func_basename_result"
3202748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3203748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Set up the ranlib parameters.
3204748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      oldlib="$destdir/$name"
3205748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
3206748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      tool_oldlib=$func_to_tool_file_result
3207748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3208748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
3209748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3210748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test -n "$stripme" && test -n "$old_striplib"; then
3211748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_show_eval "$old_striplib $tool_oldlib" 'exit $?'
3212748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
3213748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3214748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Do each command in the postinstall commands.
3215748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_execute_cmds "$old_postinstall_cmds" 'exit $?'
3216748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    done
3217748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3218748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    test -n "$future_libdirs" && \
3219748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_warning "remember to run \`$progname --finish$future_libdirs'"
3220748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3221748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    if test -n "$current_libdirs"; then
3222748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Maybe just do a dry run.
3223748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      $opt_dry_run && current_libdirs=" -n$current_libdirs"
3224748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
3225748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    else
3226748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      exit $EXIT_SUCCESS
3227748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    fi
3228748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
3229748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3230748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erattest "$opt_mode" = install && func_mode_install ${1+"$@"}
3231748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3232748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3233748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_generate_dlsyms outputname originator pic_p
3234748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Extract symbols from dlprefiles and create ${outputname}S.o with
3235748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# a dlpreopen symbol table.
3236748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_generate_dlsyms ()
3237748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
3238748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    $opt_debug
3239748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    my_outputname="$1"
3240748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    my_originator="$2"
3241748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    my_pic_p="${3-no}"
3242748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
3243748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    my_dlsyms=
3244748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3245748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
3246748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test -n "$NM" && test -n "$global_symbol_pipe"; then
3247748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	my_dlsyms="${my_outputname}S.c"
3248748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      else
3249748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_error "not configured to extract global symbols from dlpreopened files"
3250748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
3251748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    fi
3252748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3253748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    if test -n "$my_dlsyms"; then
3254748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      case $my_dlsyms in
3255748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      "") ;;
3256748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      *.c)
3257748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Discover the nlist of each of the dlfiles.
3258748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	nlist="$output_objdir/${my_outputname}.nm"
3259748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3260748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
3261748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3262748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Parse the name list into a source file.
3263748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_verbose "creating $output_objdir/$my_dlsyms"
3264748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3265748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	$opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
3266748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
3267748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
3268748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3269748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#ifdef __cplusplus
3270748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratextern \"C\" {
3271748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#endif
3272748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3273748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4))
3274748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
3275748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#endif
3276748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3277748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
3278748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
3279748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat/* DATA imports from DLLs on WIN32 con't be const, because runtime
3280748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat   relocations are performed -- see ld's documentation on pseudo-relocs.  */
3281748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# define LT_DLSYM_CONST
3282748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#elif defined(__osf__)
3283748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat/* This system does not cope well with relocations in const data.  */
3284748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# define LT_DLSYM_CONST
3285748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#else
3286748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# define LT_DLSYM_CONST const
3287748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#endif
3288748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3289748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat/* External symbol declarations for the compiler. */\
3290748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat"
3291748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3292748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test "$dlself" = yes; then
3293748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_verbose "generating symbol list for \`$output'"
3294748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3295748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
3296748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3297748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # Add our own program objects to the symbol list.
3298748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP`
3299748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  for progfile in $progfiles; do
3300748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_to_tool_file "$progfile" func_convert_file_msys_to_w32
3301748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_verbose "extracting global C symbols from \`$func_to_tool_file_result'"
3302748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'"
3303748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  done
3304748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3305748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test -n "$exclude_expsyms"; then
3306748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    $opt_dry_run || {
3307748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
3308748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      eval '$MV "$nlist"T "$nlist"'
3309748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    }
3310748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
3311748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3312748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test -n "$export_symbols_regex"; then
3313748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    $opt_dry_run || {
3314748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
3315748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      eval '$MV "$nlist"T "$nlist"'
3316748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    }
3317748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
3318748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3319748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # Prepare the list of exported symbols
3320748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test -z "$export_symbols"; then
3321748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    export_symbols="$output_objdir/$outputname.exp"
3322748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    $opt_dry_run || {
3323748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      $RM $export_symbols
3324748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
3325748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      case $host in
3326748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      *cygwin* | *mingw* | *cegcc* )
3327748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat                eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
3328748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat                eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
3329748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	        ;;
3330748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      esac
3331748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    }
3332748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  else
3333748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    $opt_dry_run || {
3334748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
3335748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
3336748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      eval '$MV "$nlist"T "$nlist"'
3337748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      case $host in
3338748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	        *cygwin* | *mingw* | *cegcc* )
3339748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	          eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
3340748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	          eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
3341748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	          ;;
3342748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      esac
3343748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    }
3344748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
3345748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
3346748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3347748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	for dlprefile in $dlprefiles; do
3348748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_verbose "extracting global C symbols from \`$dlprefile'"
3349748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_basename "$dlprefile"
3350748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  name="$func_basename_result"
3351748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat          case $host in
3352748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    *cygwin* | *mingw* | *cegcc* )
3353748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # if an import library, we need to obtain dlname
3354748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      if func_win32_import_lib_p "$dlprefile"; then
3355748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	        func_tr_sh "$dlprefile"
3356748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	        eval "curr_lafile=\$libfile_$func_tr_sh_result"
3357748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	        dlprefile_dlbasename=""
3358748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	        if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then
3359748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	          # Use subshell, to avoid clobbering current variable values
3360748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	          dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"`
3361748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	          if test -n "$dlprefile_dlname" ; then
3362748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	            func_basename "$dlprefile_dlname"
3363748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	            dlprefile_dlbasename="$func_basename_result"
3364748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	          else
3365748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	            # no lafile. user explicitly requested -dlpreopen <import library>.
3366748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	            $sharedlib_from_linklib_cmd "$dlprefile"
3367748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	            dlprefile_dlbasename=$sharedlib_from_linklib_result
3368748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	          fi
3369748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	        fi
3370748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	        $opt_dry_run || {
3371748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	          if test -n "$dlprefile_dlbasename" ; then
3372748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	            eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"'
3373748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	          else
3374748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	            func_warning "Could not compute DLL name from $name"
3375748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	            eval '$ECHO ": $name " >> "$nlist"'
3376748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	          fi
3377748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	          func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
3378748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	          eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe |
3379748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	            $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'"
3380748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	        }
3381748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      else # not an import lib
3382748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	        $opt_dry_run || {
3383748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	          eval '$ECHO ": $name " >> "$nlist"'
3384748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	          func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
3385748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	          eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
3386748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	        }
3387748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      fi
3388748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    ;;
3389748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    *)
3390748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      $opt_dry_run || {
3391748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	        eval '$ECHO ": $name " >> "$nlist"'
3392748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	        func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
3393748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	        eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
3394748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      }
3395748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    ;;
3396748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat          esac
3397748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	done
3398748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3399748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	$opt_dry_run || {
3400748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # Make sure we have at least an empty file.
3401748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  test -f "$nlist" || : > "$nlist"
3402748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3403748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test -n "$exclude_expsyms"; then
3404748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
3405748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    $MV "$nlist"T "$nlist"
3406748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
3407748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3408748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # Try sorting and uniquifying the output.
3409748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if $GREP -v "^: " < "$nlist" |
3410748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      if sort -k 3 </dev/null >/dev/null 2>&1; then
3411748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		sort -k 3
3412748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      else
3413748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		sort +2
3414748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      fi |
3415748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      uniq > "$nlist"S; then
3416748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    :
3417748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  else
3418748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    $GREP -v "^: " < "$nlist" > "$nlist"S
3419748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
3420748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3421748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test -f "$nlist"S; then
3422748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
3423748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  else
3424748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    echo '/* NONE */' >> "$output_objdir/$my_dlsyms"
3425748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
3426748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3427748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  echo >> "$output_objdir/$my_dlsyms" "\
3428748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3429748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat/* The mapping between symbol names and symbols.  */
3430748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erattypedef struct {
3431748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  const char *name;
3432748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  void *address;
3433748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} lt_dlsymlist;
3434748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratextern LT_DLSYM_CONST lt_dlsymlist
3435748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratlt_${my_prefix}_LTX_preloaded_symbols[];
3436748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratLT_DLSYM_CONST lt_dlsymlist
3437748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratlt_${my_prefix}_LTX_preloaded_symbols[] =
3438748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{\
3439748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  { \"$my_originator\", (void *) 0 },"
3440748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3441748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  case $need_lib_prefix in
3442748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  no)
3443748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
3444748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    ;;
3445748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *)
3446748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
3447748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    ;;
3448748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  esac
3449748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  echo >> "$output_objdir/$my_dlsyms" "\
3450748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  {0, (void *) 0}
3451748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat};
3452748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3453748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat/* This works around a problem in FreeBSD linker */
3454748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#ifdef FREEBSD_WORKAROUND
3455748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratstatic const void *lt_preloaded_setup() {
3456748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  return lt_${my_prefix}_LTX_preloaded_symbols;
3457748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
3458748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#endif
3459748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3460748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#ifdef __cplusplus
3461748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
3462748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#endif\
3463748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat"
3464748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	} # !$opt_dry_run
3465748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3466748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	pic_flag_for_symtable=
3467748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	case "$compile_command " in
3468748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	*" -static "*) ;;
3469748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	*)
3470748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  case $host in
3471748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # compiling the symbol table file with pic_flag works around
3472748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # a FreeBSD bug that causes programs to crash when -lm is
3473748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # linked before any other PIC object.  But we must not use
3474748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # pic_flag when linking with -static.  The problem exists in
3475748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
3476748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
3477748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
3478748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *-*-hpux*)
3479748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    pic_flag_for_symtable=" $pic_flag"  ;;
3480748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *)
3481748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    if test "X$my_pic_p" != Xno; then
3482748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      pic_flag_for_symtable=" $pic_flag"
3483748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    fi
3484748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    ;;
3485748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  esac
3486748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
3487748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	esac
3488748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	symtab_cflags=
3489748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	for arg in $LTCFLAGS; do
3490748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  case $arg in
3491748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  -pie | -fpie | -fPIE) ;;
3492748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *) func_append symtab_cflags " $arg" ;;
3493748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  esac
3494748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	done
3495748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3496748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Now compile the dynamic symbol file.
3497748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
3498748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3499748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Clean up the generated files.
3500748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
3501748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3502748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Transform the symbol file into the correct name.
3503748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	symfileobj="$output_objdir/${my_outputname}S.$objext"
3504748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	case $host in
3505748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	*cygwin* | *mingw* | *cegcc* )
3506748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test -f "$output_objdir/$my_outputname.def"; then
3507748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
3508748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
3509748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  else
3510748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
3511748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
3512748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
3513748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
3514748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	*)
3515748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
3516748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
3517748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
3518748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	esac
3519748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
3520748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      *)
3521748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_fatal_error "unknown suffix for \`$my_dlsyms'"
3522748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
3523748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      esac
3524748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    else
3525748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # We keep going just in case the user didn't refer to
3526748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
3527748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # really was required.
3528748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3529748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Nullify the symbol file.
3530748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"`
3531748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"`
3532748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    fi
3533748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
3534748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3535748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_win32_libid arg
3536748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# return the library type of file 'arg'
3537748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#
3538748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Need a lot of goo to handle *both* DLLs and import libs
3539748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Has to be a shell function in order to 'eat' the argument
3540748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# that is supplied when $file_magic_command is called.
3541748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Despite the name, also deal with 64 bit binaries.
3542748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_win32_libid ()
3543748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
3544748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  $opt_debug
3545748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  win32_libid_type="unknown"
3546748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  win32_fileres=`file -L $1 2>/dev/null`
3547748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  case $win32_fileres in
3548748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  *ar\ archive\ import\ library*) # definitely import
3549748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    win32_libid_type="x86 archive import"
3550748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    ;;
3551748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  *ar\ archive*) # could be an import, or static
3552748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD.
3553748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
3554748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat       $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then
3555748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_to_tool_file "$1" func_convert_file_msys_to_w32
3556748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" |
3557748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	$SED -n -e '
3558748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    1,100{
3559748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		/ I /{
3560748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    s,.*,import,
3561748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    p
3562748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    q
3563748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		}
3564748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    }'`
3565748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      case $win32_nmres in
3566748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      import*)  win32_libid_type="x86 archive import";;
3567748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      *)        win32_libid_type="x86 archive static";;
3568748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      esac
3569748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    fi
3570748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    ;;
3571748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  *DLL*)
3572748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    win32_libid_type="x86 DLL"
3573748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    ;;
3574748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  *executable*) # but shell scripts are "executable" too...
3575748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    case $win32_fileres in
3576748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    *MS\ Windows\ PE\ Intel*)
3577748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      win32_libid_type="x86 DLL"
3578748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      ;;
3579748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    esac
3580748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    ;;
3581748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  esac
3582748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  $ECHO "$win32_libid_type"
3583748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
3584748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3585748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_cygming_dll_for_implib ARG
3586748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#
3587748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Platform-specific function to extract the
3588748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# name of the DLL associated with the specified
3589748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# import library ARG.
3590748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Invoked by eval'ing the libtool variable
3591748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#    $sharedlib_from_linklib_cmd
3592748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Result is available in the variable
3593748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#    $sharedlib_from_linklib_result
3594748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_cygming_dll_for_implib ()
3595748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
3596748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  $opt_debug
3597748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"`
3598748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
3599748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3600748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs
3601748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#
3602748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# The is the core of a fallback implementation of a
3603748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# platform-specific function to extract the name of the
3604748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# DLL associated with the specified import library LIBNAME.
3605748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#
3606748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# SECTION_NAME is either .idata$6 or .idata$7, depending
3607748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# on the platform and compiler that created the implib.
3608748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#
3609748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Echos the name of the DLL associated with the
3610748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# specified import library.
3611748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_cygming_dll_for_implib_fallback_core ()
3612748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
3613748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  $opt_debug
3614748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"`
3615748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  $OBJDUMP -s --section "$1" "$2" 2>/dev/null |
3616748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    $SED '/^Contents of section '"$match_literal"':/{
3617748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Place marker at beginning of archive member dllname section
3618748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      s/.*/====MARK====/
3619748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      p
3620748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      d
3621748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    }
3622748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # These lines can sometimes be longer than 43 characters, but
3623748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # are always uninteresting
3624748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    /:[	 ]*file format pe[i]\{,1\}-/d
3625748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    /^In archive [^:]*:/d
3626748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # Ensure marker is printed
3627748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    /^====MARK====/p
3628748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # Remove all lines with less than 43 characters
3629748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    /^.\{43\}/!d
3630748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # From remaining lines, remove first 43 characters
3631748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    s/^.\{43\}//' |
3632748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    $SED -n '
3633748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Join marker and all lines until next marker into a single line
3634748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      /^====MARK====/ b para
3635748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      H
3636748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      $ b para
3637748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      b
3638748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      :para
3639748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      x
3640748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      s/\n//g
3641748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Remove the marker
3642748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      s/^====MARK====//
3643748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Remove trailing dots and whitespace
3644748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      s/[\. \t]*$//
3645748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Print
3646748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      /./p' |
3647748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # we now have a list, one entry per line, of the stringified
3648748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # contents of the appropriate section of all members of the
3649748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # archive which possess that section. Heuristic: eliminate
3650748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # all those which have a first or second character that is
3651748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # a '.' (that is, objdump's representation of an unprintable
3652748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # character.) This should work for all archives with less than
3653748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # 0x302f exports -- but will fail for DLLs whose name actually
3654748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # begins with a literal '.' or a single character followed by
3655748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # a '.'.
3656748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    #
3657748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # Of those that remain, print the first one.
3658748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    $SED -e '/^\./d;/^.\./d;q'
3659748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
3660748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3661748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_cygming_gnu_implib_p ARG
3662748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# This predicate returns with zero status (TRUE) if
3663748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# ARG is a GNU/binutils-style import library. Returns
3664748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# with nonzero status (FALSE) otherwise.
3665748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_cygming_gnu_implib_p ()
3666748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
3667748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  $opt_debug
3668748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  func_to_tool_file "$1" func_convert_file_msys_to_w32
3669748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  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)$'`
3670748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  test -n "$func_cygming_gnu_implib_tmp"
3671748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
3672748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3673748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_cygming_ms_implib_p ARG
3674748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# This predicate returns with zero status (TRUE) if
3675748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# ARG is an MS-style import library. Returns
3676748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# with nonzero status (FALSE) otherwise.
3677748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_cygming_ms_implib_p ()
3678748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
3679748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  $opt_debug
3680748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  func_to_tool_file "$1" func_convert_file_msys_to_w32
3681748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'`
3682748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  test -n "$func_cygming_ms_implib_tmp"
3683748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
3684748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3685748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_cygming_dll_for_implib_fallback ARG
3686748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Platform-specific function to extract the
3687748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# name of the DLL associated with the specified
3688748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# import library ARG.
3689748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#
3690748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# This fallback implementation is for use when $DLLTOOL
3691748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# does not support the --identify-strict option.
3692748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Invoked by eval'ing the libtool variable
3693748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#    $sharedlib_from_linklib_cmd
3694748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Result is available in the variable
3695748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#    $sharedlib_from_linklib_result
3696748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_cygming_dll_for_implib_fallback ()
3697748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
3698748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  $opt_debug
3699748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  if func_cygming_gnu_implib_p "$1" ; then
3700748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # binutils import library
3701748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"`
3702748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  elif func_cygming_ms_implib_p "$1" ; then
3703748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # ms-generated import library
3704748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"`
3705748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  else
3706748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # unknown
3707748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    sharedlib_from_linklib_result=""
3708748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  fi
3709748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
3710748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3711748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3712748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_extract_an_archive dir oldlib
3713748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_extract_an_archive ()
3714748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
3715748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    $opt_debug
3716748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    f_ex_an_ar_dir="$1"; shift
3717748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    f_ex_an_ar_oldlib="$1"
3718748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    if test "$lock_old_archive_extraction" = yes; then
3719748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      lockfile=$f_ex_an_ar_oldlib.lock
3720748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
3721748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_echo "Waiting for $lockfile to be removed"
3722748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	sleep 2
3723748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      done
3724748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    fi
3725748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \
3726748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		   'stat=$?; rm -f "$lockfile"; exit $stat'
3727748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    if test "$lock_old_archive_extraction" = yes; then
3728748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      $opt_dry_run || rm -f "$lockfile"
3729748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    fi
3730748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
3731748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat     :
3732748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    else
3733748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
3734748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    fi
3735748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
3736748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3737748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3738748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_extract_archives gentop oldlib ...
3739748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_extract_archives ()
3740748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
3741748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    $opt_debug
3742748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    my_gentop="$1"; shift
3743748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    my_oldlibs=${1+"$@"}
3744748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    my_oldobjs=""
3745748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    my_xlib=""
3746748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    my_xabs=""
3747748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    my_xdir=""
3748748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3749748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    for my_xlib in $my_oldlibs; do
3750748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Extract the objects.
3751748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      case $my_xlib in
3752748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	[\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
3753748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	*) my_xabs=`pwd`"/$my_xlib" ;;
3754748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      esac
3755748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_basename "$my_xlib"
3756748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      my_xlib="$func_basename_result"
3757748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      my_xlib_u=$my_xlib
3758748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      while :; do
3759748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        case " $extracted_archives " in
3760748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	*" $my_xlib_u "*)
3761748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_arith $extracted_serial + 1
3762748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  extracted_serial=$func_arith_result
3763748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  my_xlib_u=lt$extracted_serial-$my_xlib ;;
3764748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	*) break ;;
3765748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	esac
3766748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      done
3767748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      extracted_archives="$extracted_archives $my_xlib_u"
3768748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      my_xdir="$my_gentop/$my_xlib_u"
3769748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3770748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_mkdir_p "$my_xdir"
3771748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3772748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      case $host in
3773748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      *-darwin*)
3774748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_verbose "Extracting $my_xabs"
3775748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Do not bother doing anything if just a dry run
3776748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	$opt_dry_run || {
3777748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  darwin_orig_dir=`pwd`
3778748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  cd $my_xdir || exit $?
3779748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  darwin_archive=$my_xabs
3780748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  darwin_curdir=`pwd`
3781748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  darwin_base_archive=`basename "$darwin_archive"`
3782748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
3783748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test -n "$darwin_arches"; then
3784748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
3785748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    darwin_arch=
3786748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
3787748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    for darwin_arch in  $darwin_arches ; do
3788748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
3789748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
3790748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
3791748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      func_extract_an_archive "`pwd`" "${darwin_base_archive}"
3792748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      cd "$darwin_curdir"
3793748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
3794748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    done # $darwin_arches
3795748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat            ## Okay now we've a bunch of thin objects, gotta fatten them up :)
3796748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
3797748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    darwin_file=
3798748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    darwin_files=
3799748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    for darwin_file in $darwin_filelist; do
3800748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP`
3801748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      $LIPO -create -output "$darwin_file" $darwin_files
3802748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    done # $darwin_filelist
3803748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    $RM -rf unfat-$$
3804748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    cd "$darwin_orig_dir"
3805748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  else
3806748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    cd $darwin_orig_dir
3807748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_extract_an_archive "$my_xdir" "$my_xabs"
3808748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi # $darwin_arches
3809748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	} # !$opt_dry_run
3810748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
3811748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      *)
3812748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        func_extract_an_archive "$my_xdir" "$my_xabs"
3813748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
3814748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      esac
3815748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP`
3816748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    done
3817748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3818748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_extract_archives_result="$my_oldobjs"
3819748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
3820748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3821748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3822748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_emit_wrapper [arg=no]
3823748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#
3824748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Emit a libtool wrapper script on stdout.
3825748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Don't directly open a file because we may want to
3826748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# incorporate the script contents within a cygwin/mingw
3827748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# wrapper executable.  Must ONLY be called from within
3828748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_mode_link because it depends on a number of variables
3829748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# set therein.
3830748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#
3831748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
3832748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# variable will take.  If 'yes', then the emitted script
3833748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# will assume that the directory in which it is stored is
3834748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# the $objdir directory.  This is a cygwin/mingw-specific
3835748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# behavior.
3836748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_emit_wrapper ()
3837748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
3838748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_emit_wrapper_arg1=${1-no}
3839748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3840748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	$ECHO "\
3841748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#! $SHELL
3842748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3843748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# $output - temporary wrapper script for $objdir/$outputname
3844748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
3845748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#
3846748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# The $output program cannot be directly executed until all the libtool
3847748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# libraries that it depends on are installed.
3848748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#
3849748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# This wrapper script should never be moved out of the build directory.
3850748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# If it is, it will not operate correctly.
3851748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3852748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Sed substitution that helps us do robust quoting.  It backslashifies
3853748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# metacharacters that are still active within double-quoted strings.
3854748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratsed_quote_subst='$sed_quote_subst'
3855748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3856748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Be Bourne compatible
3857748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratif test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
3858748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  emulate sh
3859748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  NULLCMD=:
3860748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
3861748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  # is contrary to our usage.  Disable this feature.
3862748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  alias -g '\${1+\"\$@\"}'='\"\$@\"'
3863748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  setopt NO_GLOB_SUBST
3864748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratelse
3865748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
3866748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfi
3867748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratBIN_SH=xpg4; export BIN_SH # for Tru64
3868748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratDUALCASE=1; export DUALCASE # for MKS sh
3869748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3870748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# The HP-UX ksh and POSIX shell print the target directory to stdout
3871748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# if CDPATH is set.
3872748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
3873748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3874748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratrelink_command=\"$relink_command\"
3875748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3876748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# This environment variable determines our operation mode.
3877748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratif test \"\$libtool_install_magic\" = \"$magic\"; then
3878748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  # install mode needs the following variables:
3879748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  generated_by_libtool_version='$macro_version'
3880748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  notinst_deplibs='$notinst_deplibs'
3881748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratelse
3882748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  # When we are sourced in execute mode, \$file and \$ECHO are already set.
3883748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  if test \"\$libtool_execute_magic\" != \"$magic\"; then
3884748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    file=\"\$0\""
3885748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3886748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"`
3887748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    $ECHO "\
3888748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3889748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# A function that is used when there is no print builtin or printf.
3890748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_fallback_echo ()
3891748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
3892748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  eval 'cat <<_LTECHO_EOF
3893748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat\$1
3894748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat_LTECHO_EOF'
3895748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
3896748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    ECHO=\"$qECHO\"
3897748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  fi
3898748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3899748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Very basic option parsing. These options are (a) specific to
3900748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# the libtool wrapper, (b) are identical between the wrapper
3901748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# /script/ and the wrapper /executable/ which is used only on
3902748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# windows platforms, and (c) all begin with the string "--lt-"
3903748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# (application programs are unlikely to have options which match
3904748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# this pattern).
3905748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#
3906748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# There are only two supported options: --lt-debug and
3907748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# --lt-dump-script. There is, deliberately, no --lt-help.
3908748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#
3909748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# The first argument to this parsing function should be the
3910748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# script's $0 value, followed by "$@".
3911748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratlt_option_debug=
3912748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_parse_lt_options ()
3913748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
3914748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  lt_script_arg0=\$0
3915748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  shift
3916748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  for lt_opt
3917748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  do
3918748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    case \"\$lt_opt\" in
3919748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    --lt-debug) lt_option_debug=1 ;;
3920748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    --lt-dump-script)
3921748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\`
3922748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=.
3923748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\`
3924748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        cat \"\$lt_dump_D/\$lt_dump_F\"
3925748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        exit 0
3926748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      ;;
3927748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    --lt-*)
3928748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2
3929748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        exit 1
3930748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      ;;
3931748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    esac
3932748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  done
3933748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3934748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  # Print the debug banner immediately:
3935748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  if test -n \"\$lt_option_debug\"; then
3936748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2
3937748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  fi
3938748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
3939748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3940748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Used when --lt-debug. Prints its arguments to stdout
3941748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# (redirection is the responsibility of the caller)
3942748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_lt_dump_args ()
3943748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
3944748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  lt_dump_args_N=1;
3945748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  for lt_arg
3946748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  do
3947748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\"
3948748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    lt_dump_args_N=\`expr \$lt_dump_args_N + 1\`
3949748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  done
3950748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
3951748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3952748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Core function for launching the target application
3953748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_exec_program_core ()
3954748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
3955748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat"
3956748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  case $host in
3957748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  # Backslashes separate directories on plain windows
3958748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  *-*-mingw | *-*-os2* | *-cegcc*)
3959748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    $ECHO "\
3960748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test -n \"\$lt_option_debug\"; then
3961748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2
3962748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        func_lt_dump_args \${1+\"\$@\"} 1>&2
3963748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
3964748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
3965748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat"
3966748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    ;;
3967748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3968748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  *)
3969748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    $ECHO "\
3970748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test -n \"\$lt_option_debug\"; then
3971748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2
3972748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        func_lt_dump_args \${1+\"\$@\"} 1>&2
3973748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
3974748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      exec \"\$progdir/\$program\" \${1+\"\$@\"}
3975748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat"
3976748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    ;;
3977748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  esac
3978748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  $ECHO "\
3979748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
3980748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      exit 1
3981748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
3982748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
3983748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# A function to encapsulate launching the target application
3984748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Strips options in the --lt-* namespace from \$@ and
3985748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# launches target application with the remaining arguments.
3986748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_exec_program ()
3987748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
3988748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  case \" \$* \" in
3989748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  *\\ --lt-*)
3990748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    for lt_wr_arg
3991748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    do
3992748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      case \$lt_wr_arg in
3993748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      --lt-*) ;;
3994748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
3995748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      esac
3996748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      shift
3997748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    done ;;
3998748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  esac
3999748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  func_exec_program_core \${1+\"\$@\"}
4000748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
4001748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4002748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  # Parse options
4003748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  func_parse_lt_options \"\$0\" \${1+\"\$@\"}
4004748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4005748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  # Find the directory that this script lives in.
4006748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\`
4007748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
4008748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4009748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  # Follow symbolic links until we get to the real thisdir.
4010748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\`
4011748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  while test -n \"\$file\"; do
4012748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\`
4013748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4014748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # If there was a directory component, then change thisdir.
4015748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    if test \"x\$destdir\" != \"x\$file\"; then
4016748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      case \"\$destdir\" in
4017748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
4018748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      *) thisdir=\"\$thisdir/\$destdir\" ;;
4019748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      esac
4020748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    fi
4021748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4022748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\`
4023748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\`
4024748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  done
4025748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4026748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  # Usually 'no', except on cygwin/mingw when embedded into
4027748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  # the cwrapper.
4028748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1
4029748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
4030748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # special case for '.'
4031748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    if test \"\$thisdir\" = \".\"; then
4032748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      thisdir=\`pwd\`
4033748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    fi
4034748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # remove .libs from thisdir
4035748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    case \"\$thisdir\" in
4036748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;;
4037748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    $objdir )   thisdir=. ;;
4038748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    esac
4039748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  fi
4040748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4041748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  # Try to get the absolute directory name.
4042748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  absdir=\`cd \"\$thisdir\" && pwd\`
4043748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  test -n \"\$absdir\" && thisdir=\"\$absdir\"
4044748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat"
4045748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4046748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test "$fast_install" = yes; then
4047748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  $ECHO "\
4048748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  program=lt-'$outputname'$exeext
4049748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  progdir=\"\$thisdir/$objdir\"
4050748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4051748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  if test ! -f \"\$progdir/\$program\" ||
4052748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
4053748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
4054748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4055748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    file=\"\$\$-\$program\"
4056748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4057748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    if test ! -d \"\$progdir\"; then
4058748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      $MKDIR \"\$progdir\"
4059748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    else
4060748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      $RM \"\$progdir/\$file\"
4061748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    fi"
4062748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4063748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  $ECHO "\
4064748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4065748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # relink executable if necessary
4066748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    if test -n \"\$relink_command\"; then
4067748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
4068748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      else
4069748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	$ECHO \"\$relink_command_output\" >&2
4070748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	$RM \"\$progdir/\$file\"
4071748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	exit 1
4072748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
4073748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    fi
4074748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4075748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
4076748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    { $RM \"\$progdir/\$program\";
4077748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
4078748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    $RM \"\$progdir/\$file\"
4079748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  fi"
4080748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	else
4081748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  $ECHO "\
4082748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  program='$outputname'
4083748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  progdir=\"\$thisdir/$objdir\"
4084748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat"
4085748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
4086748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4087748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	$ECHO "\
4088748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4089748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  if test -f \"\$progdir/\$program\"; then"
4090748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4091748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# fixup the dll searchpath if we need to.
4092748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	#
4093748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Fix the DLL searchpath if we need to.  Do this before prepending
4094748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# to shlibpath, because on Windows, both are PATH and uninstalled
4095748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# libraries must come first.
4096748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test -n "$dllsearchpath"; then
4097748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  $ECHO "\
4098748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # Add the dll search path components to the executable PATH
4099748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    PATH=$dllsearchpath:\$PATH
4100748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat"
4101748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
4102748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4103748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Export our shlibpath_var if we have one.
4104748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
4105748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  $ECHO "\
4106748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # Add our own library path to $shlibpath_var
4107748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
4108748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4109748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # Some systems cannot cope with colon-terminated $shlibpath_var
4110748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # The second colon is a workaround for a bug in BeOS R4 sed
4111748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\`
4112748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4113748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    export $shlibpath_var
4114748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat"
4115748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
4116748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4117748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	$ECHO "\
4118748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    if test \"\$libtool_execute_magic\" != \"$magic\"; then
4119748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Run the actual program with our arguments.
4120748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_exec_program \${1+\"\$@\"}
4121748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    fi
4122748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  else
4123748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # The program doesn't exist.
4124748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
4125748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
4126748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
4127748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    exit 1
4128748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  fi
4129748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfi\
4130748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat"
4131748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
4132748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4133748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4134748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_emit_cwrapperexe_src
4135748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# emit the source code for a wrapper executable on stdout
4136748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Must ONLY be called from within func_mode_link because
4137748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# it depends on a number of variable set therein.
4138748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_emit_cwrapperexe_src ()
4139748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
4140748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	cat <<EOF
4141748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4142748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
4143748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat   Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
4144748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4145748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat   The $output program cannot be directly executed until all the libtool
4146748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat   libraries that it depends on are installed.
4147748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4148748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat   This wrapper executable should never be moved out of the build directory.
4149748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat   If it is, it will not operate correctly.
4150748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat*/
4151748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratEOF
4152748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    cat <<"EOF"
4153748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#ifdef _MSC_VER
4154748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# define _CRT_SECURE_NO_DEPRECATE 1
4155748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#endif
4156748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#include <stdio.h>
4157748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#include <stdlib.h>
4158748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#ifdef _MSC_VER
4159748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# include <direct.h>
4160748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# include <process.h>
4161748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# include <io.h>
4162748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#else
4163748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# include <unistd.h>
4164748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# include <stdint.h>
4165748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# ifdef __CYGWIN__
4166748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#  include <io.h>
4167748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# endif
4168748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#endif
4169748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#include <malloc.h>
4170748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#include <stdarg.h>
4171748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#include <assert.h>
4172748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#include <string.h>
4173748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#include <ctype.h>
4174748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#include <errno.h>
4175748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#include <fcntl.h>
4176748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#include <sys/stat.h>
4177748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4178748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat/* declarations of non-ANSI functions */
4179748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#if defined(__MINGW32__)
4180748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# ifdef __STRICT_ANSI__
4181748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratint _putenv (const char *);
4182748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# endif
4183748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#elif defined(__CYGWIN__)
4184748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# ifdef __STRICT_ANSI__
4185748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratchar *realpath (const char *, char *);
4186748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratint putenv (char *);
4187748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratint setenv (const char *, const char *, int);
4188748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# endif
4189748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat/* #elif defined (other platforms) ... */
4190748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#endif
4191748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4192748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat/* portability defines, excluding path handling macros */
4193748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#if defined(_MSC_VER)
4194748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# define setmode _setmode
4195748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# define stat    _stat
4196748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# define chmod   _chmod
4197748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# define getcwd  _getcwd
4198748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# define putenv  _putenv
4199748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# define S_IXUSR _S_IEXEC
4200748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# ifndef _INTPTR_T_DEFINED
4201748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#  define _INTPTR_T_DEFINED
4202748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#  define intptr_t int
4203748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# endif
4204748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#elif defined(__MINGW32__)
4205748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# define setmode _setmode
4206748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# define stat    _stat
4207748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# define chmod   _chmod
4208748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# define getcwd  _getcwd
4209748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# define putenv  _putenv
4210748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#elif defined(__CYGWIN__)
4211748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# define HAVE_SETENV
4212748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# define FOPEN_WB "wb"
4213748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat/* #elif defined (other platforms) ... */
4214748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#endif
4215748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4216748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#if defined(PATH_MAX)
4217748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# define LT_PATHMAX PATH_MAX
4218748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#elif defined(MAXPATHLEN)
4219748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# define LT_PATHMAX MAXPATHLEN
4220748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#else
4221748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# define LT_PATHMAX 1024
4222748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#endif
4223748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4224748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#ifndef S_IXOTH
4225748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# define S_IXOTH 0
4226748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#endif
4227748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#ifndef S_IXGRP
4228748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# define S_IXGRP 0
4229748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#endif
4230748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4231748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat/* path handling portability macros */
4232748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#ifndef DIR_SEPARATOR
4233748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# define DIR_SEPARATOR '/'
4234748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# define PATH_SEPARATOR ':'
4235748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#endif
4236748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4237748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
4238748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  defined (__OS2__)
4239748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# define HAVE_DOS_BASED_FILE_SYSTEM
4240748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# define FOPEN_WB "wb"
4241748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# ifndef DIR_SEPARATOR_2
4242748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#  define DIR_SEPARATOR_2 '\\'
4243748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# endif
4244748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# ifndef PATH_SEPARATOR_2
4245748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#  define PATH_SEPARATOR_2 ';'
4246748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# endif
4247748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#endif
4248748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4249748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#ifndef DIR_SEPARATOR_2
4250748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
4251748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#else /* DIR_SEPARATOR_2 */
4252748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# define IS_DIR_SEPARATOR(ch) \
4253748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	(((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
4254748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#endif /* DIR_SEPARATOR_2 */
4255748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4256748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#ifndef PATH_SEPARATOR_2
4257748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
4258748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#else /* PATH_SEPARATOR_2 */
4259748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
4260748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#endif /* PATH_SEPARATOR_2 */
4261748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4262748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#ifndef FOPEN_WB
4263748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# define FOPEN_WB "w"
4264748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#endif
4265748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#ifndef _O_BINARY
4266748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# define _O_BINARY 0
4267748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#endif
4268748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4269748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
4270748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#define XFREE(stale) do { \
4271748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  if (stale) { free ((void *) stale); stale = 0; } \
4272748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} while (0)
4273748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4274748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#if defined(LT_DEBUGWRAPPER)
4275748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratstatic int lt_debug = 1;
4276748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#else
4277748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratstatic int lt_debug = 0;
4278748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#endif
4279748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4280748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratconst char *program_name = "libtool-wrapper"; /* in case xstrdup fails */
4281748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4282748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratvoid *xmalloc (size_t num);
4283748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratchar *xstrdup (const char *string);
4284748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratconst char *base_name (const char *name);
4285748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratchar *find_executable (const char *wrapper);
4286748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratchar *chase_symlinks (const char *pathspec);
4287748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratint make_executable (const char *path);
4288748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratint check_executable (const char *path);
4289748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratchar *strendzap (char *str, const char *pat);
4290748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratvoid lt_debugprintf (const char *file, int line, const char *fmt, ...);
4291748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratvoid lt_fatal (const char *file, int line, const char *message, ...);
4292748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratstatic const char *nonnull (const char *s);
4293748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratstatic const char *nonempty (const char *s);
4294748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratvoid lt_setenv (const char *name, const char *value);
4295748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratchar *lt_extend_str (const char *orig_value, const char *add, int to_end);
4296748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratvoid lt_update_exe_path (const char *name, const char *value);
4297748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratvoid lt_update_lib_path (const char *name, const char *value);
4298748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratchar **prepare_spawn (char **argv);
4299748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratvoid lt_dump_script (FILE *f);
4300748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratEOF
4301748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4302748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    cat <<EOF
4303748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratvolatile const char * MAGIC_EXE = "$magic_exe";
4304748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratconst char * LIB_PATH_VARNAME = "$shlibpath_var";
4305748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratEOF
4306748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4307748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
4308748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat              func_to_host_path "$temp_rpath"
4309748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      cat <<EOF
4310748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratconst char * LIB_PATH_VALUE   = "$func_to_host_path_result";
4311748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratEOF
4312748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    else
4313748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      cat <<"EOF"
4314748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratconst char * LIB_PATH_VALUE   = "";
4315748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratEOF
4316748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    fi
4317748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4318748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    if test -n "$dllsearchpath"; then
4319748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat              func_to_host_path "$dllsearchpath:"
4320748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      cat <<EOF
4321748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratconst char * EXE_PATH_VARNAME = "PATH";
4322748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratconst char * EXE_PATH_VALUE   = "$func_to_host_path_result";
4323748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratEOF
4324748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    else
4325748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      cat <<"EOF"
4326748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratconst char * EXE_PATH_VARNAME = "";
4327748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratconst char * EXE_PATH_VALUE   = "";
4328748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratEOF
4329748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    fi
4330748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4331748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    if test "$fast_install" = yes; then
4332748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      cat <<EOF
4333748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratconst char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
4334748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratEOF
4335748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    else
4336748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      cat <<EOF
4337748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratconst char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
4338748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratEOF
4339748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    fi
4340748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4341748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4342748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    cat <<"EOF"
4343748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4344748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#define LTWRAPPER_OPTION_PREFIX         "--lt-"
4345748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4346748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratstatic const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
4347748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratstatic const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX "dump-script";
4348748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratstatic const char *debug_opt            = LTWRAPPER_OPTION_PREFIX "debug";
4349748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4350748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratint
4351748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratmain (int argc, char *argv[])
4352748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
4353748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  char **newargz;
4354748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  int  newargc;
4355748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  char *tmp_pathspec;
4356748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  char *actual_cwrapper_path;
4357748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  char *actual_cwrapper_name;
4358748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  char *target_name;
4359748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  char *lt_argv_zero;
4360748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  intptr_t rval = 127;
4361748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4362748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  int i;
4363748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4364748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  program_name = (char *) xstrdup (base_name (argv[0]));
4365748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  newargz = XMALLOC (char *, argc + 1);
4366748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4367748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  /* very simple arg parsing; don't want to rely on getopt
4368748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat   * also, copy all non cwrapper options to newargz, except
4369748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat   * argz[0], which is handled differently
4370748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat   */
4371748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  newargc=0;
4372748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  for (i = 1; i < argc; i++)
4373748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    {
4374748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if (strcmp (argv[i], dumpscript_opt) == 0)
4375748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	{
4376748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratEOF
4377748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    case "$host" in
4378748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      *mingw* | *cygwin* )
4379748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		# make stdout use "unix" line endings
4380748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		echo "          setmode(1,_O_BINARY);"
4381748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		;;
4382748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      esac
4383748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4384748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    cat <<"EOF"
4385748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  lt_dump_script (stdout);
4386748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  return 0;
4387748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	}
4388748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if (strcmp (argv[i], debug_opt) == 0)
4389748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	{
4390748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat          lt_debug = 1;
4391748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat          continue;
4392748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	}
4393748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if (strcmp (argv[i], ltwrapper_option_prefix) == 0)
4394748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        {
4395748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat          /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
4396748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat             namespace, but it is not one of the ones we know about and
4397748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat             have already dealt with, above (inluding dump-script), then
4398748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat             report an error. Otherwise, targets might begin to believe
4399748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat             they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
4400748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat             namespace. The first time any user complains about this, we'll
4401748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat             need to make LTWRAPPER_OPTION_PREFIX a configure-time option
4402748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat             or a configure.ac-settable value.
4403748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat           */
4404748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat          lt_fatal (__FILE__, __LINE__,
4405748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    "unrecognized %s option: '%s'",
4406748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat                    ltwrapper_option_prefix, argv[i]);
4407748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        }
4408748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      /* otherwise ... */
4409748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      newargz[++newargc] = xstrdup (argv[i]);
4410748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    }
4411748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  newargz[++newargc] = NULL;
4412748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4413748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratEOF
4414748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    cat <<EOF
4415748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  /* The GNU banner must be the first non-error debug message */
4416748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n");
4417748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratEOF
4418748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    cat <<"EOF"
4419748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]);
4420748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name);
4421748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4422748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  tmp_pathspec = find_executable (argv[0]);
4423748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  if (tmp_pathspec == NULL)
4424748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]);
4425748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  lt_debugprintf (__FILE__, __LINE__,
4426748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat                  "(main) found exe (before symlink chase) at: %s\n",
4427748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  tmp_pathspec);
4428748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4429748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  actual_cwrapper_path = chase_symlinks (tmp_pathspec);
4430748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  lt_debugprintf (__FILE__, __LINE__,
4431748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat                  "(main) found exe (after symlink chase) at: %s\n",
4432748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  actual_cwrapper_path);
4433748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  XFREE (tmp_pathspec);
4434748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4435748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path));
4436748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  strendzap (actual_cwrapper_path, actual_cwrapper_name);
4437748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4438748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  /* wrapper name transforms */
4439748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  strendzap (actual_cwrapper_name, ".exe");
4440748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
4441748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  XFREE (actual_cwrapper_name);
4442748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  actual_cwrapper_name = tmp_pathspec;
4443748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  tmp_pathspec = 0;
4444748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4445748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  /* target_name transforms -- use actual target program name; might have lt- prefix */
4446748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
4447748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  strendzap (target_name, ".exe");
4448748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
4449748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  XFREE (target_name);
4450748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  target_name = tmp_pathspec;
4451748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  tmp_pathspec = 0;
4452748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4453748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  lt_debugprintf (__FILE__, __LINE__,
4454748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  "(main) libtool target name: %s\n",
4455748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  target_name);
4456748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratEOF
4457748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4458748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    cat <<EOF
4459748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  newargz[0] =
4460748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    XMALLOC (char, (strlen (actual_cwrapper_path) +
4461748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
4462748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  strcpy (newargz[0], actual_cwrapper_path);
4463748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  strcat (newargz[0], "$objdir");
4464748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  strcat (newargz[0], "/");
4465748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratEOF
4466748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4467748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    cat <<"EOF"
4468748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  /* stop here, and copy so we don't have to do this twice */
4469748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  tmp_pathspec = xstrdup (newargz[0]);
4470748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4471748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
4472748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  strcat (newargz[0], actual_cwrapper_name);
4473748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4474748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  /* DO want the lt- prefix here if it exists, so use target_name */
4475748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
4476748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  XFREE (tmp_pathspec);
4477748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  tmp_pathspec = NULL;
4478748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratEOF
4479748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4480748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    case $host_os in
4481748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      mingw*)
4482748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    cat <<"EOF"
4483748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  {
4484748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    char* p;
4485748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    while ((p = strchr (newargz[0], '\\')) != NULL)
4486748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      {
4487748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	*p = '/';
4488748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      }
4489748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    while ((p = strchr (lt_argv_zero, '\\')) != NULL)
4490748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      {
4491748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	*p = '/';
4492748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      }
4493748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  }
4494748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratEOF
4495748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    ;;
4496748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    esac
4497748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4498748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    cat <<"EOF"
4499748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  XFREE (target_name);
4500748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  XFREE (actual_cwrapper_path);
4501748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  XFREE (actual_cwrapper_name);
4502748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4503748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
4504748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  lt_setenv ("DUALCASE", "1");  /* for MSK sh */
4505748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  /* Update the DLL searchpath.  EXE_PATH_VALUE ($dllsearchpath) must
4506748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat     be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath)
4507748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat     because on Windows, both *_VARNAMEs are PATH but uninstalled
4508748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat     libraries must come first. */
4509748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
4510748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
4511748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4512748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n",
4513748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  nonnull (lt_argv_zero));
4514748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  for (i = 0; i < newargc; i++)
4515748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    {
4516748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n",
4517748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		      i, nonnull (newargz[i]));
4518748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    }
4519748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4520748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratEOF
4521748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4522748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    case $host_os in
4523748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      mingw*)
4524748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		cat <<"EOF"
4525748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  /* execv doesn't actually work on mingw as expected on unix */
4526748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  newargz = prepare_spawn (newargz);
4527748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
4528748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  if (rval == -1)
4529748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    {
4530748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      /* failed to start process */
4531748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      lt_debugprintf (__FILE__, __LINE__,
4532748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		      "(main) failed to launch target \"%s\": %s\n",
4533748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		      lt_argv_zero, nonnull (strerror (errno)));
4534748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      return 127;
4535748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    }
4536748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  return rval;
4537748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratEOF
4538748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		;;
4539748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      *)
4540748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		cat <<"EOF"
4541748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  execv (lt_argv_zero, newargz);
4542748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  return rval; /* =127, but avoids unused variable warning */
4543748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratEOF
4544748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		;;
4545748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    esac
4546748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4547748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    cat <<"EOF"
4548748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
4549748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4550748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratvoid *
4551748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratxmalloc (size_t num)
4552748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
4553748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  void *p = (void *) malloc (num);
4554748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  if (!p)
4555748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    lt_fatal (__FILE__, __LINE__, "memory exhausted");
4556748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4557748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  return p;
4558748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
4559748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4560748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratchar *
4561748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratxstrdup (const char *string)
4562748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
4563748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
4564748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			  string) : NULL;
4565748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
4566748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4567748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratconst char *
4568748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratbase_name (const char *name)
4569748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
4570748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  const char *base;
4571748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4572748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
4573748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  /* Skip over the disk name in MSDOS pathnames. */
4574748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  if (isalpha ((unsigned char) name[0]) && name[1] == ':')
4575748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    name += 2;
4576748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#endif
4577748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4578748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  for (base = name; *name; name++)
4579748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    if (IS_DIR_SEPARATOR (*name))
4580748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      base = name + 1;
4581748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  return base;
4582748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
4583748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4584748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratint
4585748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratcheck_executable (const char *path)
4586748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
4587748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  struct stat st;
4588748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4589748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n",
4590748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat                  nonempty (path));
4591748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  if ((!path) || (!*path))
4592748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    return 0;
4593748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4594748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  if ((stat (path, &st) >= 0)
4595748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
4596748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    return 1;
4597748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  else
4598748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    return 0;
4599748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
4600748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4601748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratint
4602748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratmake_executable (const char *path)
4603748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
4604748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  int rval = 0;
4605748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  struct stat st;
4606748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4607748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n",
4608748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat                  nonempty (path));
4609748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  if ((!path) || (!*path))
4610748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    return 0;
4611748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4612748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  if (stat (path, &st) >= 0)
4613748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    {
4614748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
4615748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    }
4616748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  return rval;
4617748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
4618748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4619748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat/* Searches for the full path of the wrapper.  Returns
4620748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat   newly allocated full path name if found, NULL otherwise
4621748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat   Does not chase symlinks, even on platforms that support them.
4622748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat*/
4623748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratchar *
4624748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfind_executable (const char *wrapper)
4625748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
4626748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  int has_slash = 0;
4627748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  const char *p;
4628748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  const char *p_next;
4629748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  /* static buffer for getcwd */
4630748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  char tmp[LT_PATHMAX + 1];
4631748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  int tmp_len;
4632748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  char *concat_name;
4633748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4634748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n",
4635748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat                  nonempty (wrapper));
4636748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4637748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  if ((wrapper == NULL) || (*wrapper == '\0'))
4638748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    return NULL;
4639748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4640748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  /* Absolute path? */
4641748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
4642748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
4643748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    {
4644748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      concat_name = xstrdup (wrapper);
4645748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if (check_executable (concat_name))
4646748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	return concat_name;
4647748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      XFREE (concat_name);
4648748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    }
4649748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  else
4650748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    {
4651748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#endif
4652748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if (IS_DIR_SEPARATOR (wrapper[0]))
4653748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	{
4654748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  concat_name = xstrdup (wrapper);
4655748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if (check_executable (concat_name))
4656748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    return concat_name;
4657748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  XFREE (concat_name);
4658748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	}
4659748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
4660748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    }
4661748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#endif
4662748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4663748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  for (p = wrapper; *p; p++)
4664748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    if (*p == '/')
4665748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      {
4666748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	has_slash = 1;
4667748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	break;
4668748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      }
4669748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  if (!has_slash)
4670748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    {
4671748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      /* no slashes; search PATH */
4672748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      const char *path = getenv ("PATH");
4673748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if (path != NULL)
4674748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	{
4675748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  for (p = path; *p; p = p_next)
4676748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    {
4677748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      const char *q;
4678748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      size_t p_len;
4679748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      for (q = p; *q; q++)
4680748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		if (IS_PATH_SEPARATOR (*q))
4681748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  break;
4682748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      p_len = q - p;
4683748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      p_next = (*q == '\0' ? q : q + 1);
4684748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      if (p_len == 0)
4685748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		{
4686748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  /* empty path: current directory */
4687748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  if (getcwd (tmp, LT_PATHMAX) == NULL)
4688748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
4689748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat                              nonnull (strerror (errno)));
4690748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  tmp_len = strlen (tmp);
4691748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  concat_name =
4692748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
4693748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  memcpy (concat_name, tmp, tmp_len);
4694748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  concat_name[tmp_len] = '/';
4695748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  strcpy (concat_name + tmp_len + 1, wrapper);
4696748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		}
4697748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      else
4698748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		{
4699748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  concat_name =
4700748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
4701748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  memcpy (concat_name, p, p_len);
4702748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  concat_name[p_len] = '/';
4703748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  strcpy (concat_name + p_len + 1, wrapper);
4704748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		}
4705748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      if (check_executable (concat_name))
4706748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		return concat_name;
4707748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      XFREE (concat_name);
4708748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    }
4709748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	}
4710748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      /* not found in PATH; assume curdir */
4711748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    }
4712748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  /* Relative path | not found in path: prepend cwd */
4713748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  if (getcwd (tmp, LT_PATHMAX) == NULL)
4714748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
4715748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat              nonnull (strerror (errno)));
4716748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  tmp_len = strlen (tmp);
4717748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
4718748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  memcpy (concat_name, tmp, tmp_len);
4719748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  concat_name[tmp_len] = '/';
4720748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  strcpy (concat_name + tmp_len + 1, wrapper);
4721748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4722748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  if (check_executable (concat_name))
4723748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    return concat_name;
4724748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  XFREE (concat_name);
4725748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  return NULL;
4726748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
4727748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4728748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratchar *
4729748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratchase_symlinks (const char *pathspec)
4730748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
4731748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#ifndef S_ISLNK
4732748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  return xstrdup (pathspec);
4733748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#else
4734748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  char buf[LT_PATHMAX];
4735748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  struct stat s;
4736748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  char *tmp_pathspec = xstrdup (pathspec);
4737748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  char *p;
4738748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  int has_symlinks = 0;
4739748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  while (strlen (tmp_pathspec) && !has_symlinks)
4740748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    {
4741748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      lt_debugprintf (__FILE__, __LINE__,
4742748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		      "checking path component for symlinks: %s\n",
4743748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		      tmp_pathspec);
4744748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if (lstat (tmp_pathspec, &s) == 0)
4745748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	{
4746748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if (S_ISLNK (s.st_mode) != 0)
4747748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    {
4748748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      has_symlinks = 1;
4749748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      break;
4750748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    }
4751748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4752748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  /* search backwards for last DIR_SEPARATOR */
4753748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  p = tmp_pathspec + strlen (tmp_pathspec) - 1;
4754748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
4755748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    p--;
4756748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
4757748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    {
4758748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      /* no more DIR_SEPARATORS left */
4759748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      break;
4760748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    }
4761748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *p = '\0';
4762748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	}
4763748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      else
4764748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	{
4765748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  lt_fatal (__FILE__, __LINE__,
4766748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    "error accessing file \"%s\": %s",
4767748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    tmp_pathspec, nonnull (strerror (errno)));
4768748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	}
4769748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    }
4770748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  XFREE (tmp_pathspec);
4771748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4772748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  if (!has_symlinks)
4773748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    {
4774748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      return xstrdup (pathspec);
4775748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    }
4776748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4777748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  tmp_pathspec = realpath (pathspec, buf);
4778748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  if (tmp_pathspec == 0)
4779748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    {
4780748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      lt_fatal (__FILE__, __LINE__,
4781748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		"could not follow symlinks for %s", pathspec);
4782748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    }
4783748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  return xstrdup (tmp_pathspec);
4784748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#endif
4785748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
4786748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4787748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratchar *
4788748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratstrendzap (char *str, const char *pat)
4789748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
4790748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  size_t len, patlen;
4791748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4792748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  assert (str != NULL);
4793748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  assert (pat != NULL);
4794748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4795748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  len = strlen (str);
4796748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  patlen = strlen (pat);
4797748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4798748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  if (patlen <= len)
4799748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    {
4800748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      str += len - patlen;
4801748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if (strcmp (str, pat) == 0)
4802748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	*str = '\0';
4803748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    }
4804748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  return str;
4805748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
4806748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4807748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratvoid
4808748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratlt_debugprintf (const char *file, int line, const char *fmt, ...)
4809748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
4810748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  va_list args;
4811748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  if (lt_debug)
4812748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    {
4813748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line);
4814748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      va_start (args, fmt);
4815748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      (void) vfprintf (stderr, fmt, args);
4816748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      va_end (args);
4817748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    }
4818748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
4819748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4820748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratstatic void
4821748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratlt_error_core (int exit_status, const char *file,
4822748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	       int line, const char *mode,
4823748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	       const char *message, va_list ap)
4824748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
4825748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode);
4826748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  vfprintf (stderr, message, ap);
4827748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  fprintf (stderr, ".\n");
4828748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4829748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  if (exit_status >= 0)
4830748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    exit (exit_status);
4831748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
4832748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4833748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratvoid
4834748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratlt_fatal (const char *file, int line, const char *message, ...)
4835748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
4836748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  va_list ap;
4837748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  va_start (ap, message);
4838748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap);
4839748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  va_end (ap);
4840748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
4841748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4842748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratstatic const char *
4843748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratnonnull (const char *s)
4844748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
4845748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  return s ? s : "(null)";
4846748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
4847748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4848748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratstatic const char *
4849748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratnonempty (const char *s)
4850748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
4851748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  return (s && !*s) ? "(empty)" : nonnull (s);
4852748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
4853748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4854748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratvoid
4855748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratlt_setenv (const char *name, const char *value)
4856748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
4857748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  lt_debugprintf (__FILE__, __LINE__,
4858748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  "(lt_setenv) setting '%s' to '%s'\n",
4859748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat                  nonnull (name), nonnull (value));
4860748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  {
4861748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#ifdef HAVE_SETENV
4862748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    /* always make a copy, for consistency with !HAVE_SETENV */
4863748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    char *str = xstrdup (value);
4864748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    setenv (name, str, 1);
4865748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#else
4866748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    int len = strlen (name) + 1 + strlen (value) + 1;
4867748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    char *str = XMALLOC (char, len);
4868748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    sprintf (str, "%s=%s", name, value);
4869748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    if (putenv (str) != EXIT_SUCCESS)
4870748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      {
4871748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        XFREE (str);
4872748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      }
4873748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#endif
4874748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  }
4875748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
4876748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4877748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratchar *
4878748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratlt_extend_str (const char *orig_value, const char *add, int to_end)
4879748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
4880748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  char *new_value;
4881748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  if (orig_value && *orig_value)
4882748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    {
4883748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      int orig_value_len = strlen (orig_value);
4884748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      int add_len = strlen (add);
4885748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      new_value = XMALLOC (char, add_len + orig_value_len + 1);
4886748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if (to_end)
4887748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        {
4888748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat          strcpy (new_value, orig_value);
4889748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat          strcpy (new_value + orig_value_len, add);
4890748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        }
4891748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      else
4892748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        {
4893748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat          strcpy (new_value, add);
4894748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat          strcpy (new_value + add_len, orig_value);
4895748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        }
4896748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    }
4897748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  else
4898748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    {
4899748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      new_value = xstrdup (add);
4900748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    }
4901748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  return new_value;
4902748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
4903748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4904748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratvoid
4905748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratlt_update_exe_path (const char *name, const char *value)
4906748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
4907748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  lt_debugprintf (__FILE__, __LINE__,
4908748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  "(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
4909748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat                  nonnull (name), nonnull (value));
4910748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4911748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  if (name && *name && value && *value)
4912748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    {
4913748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      char *new_value = lt_extend_str (getenv (name), value, 0);
4914748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      /* some systems can't cope with a ':'-terminated path #' */
4915748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      int len = strlen (new_value);
4916748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
4917748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        {
4918748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat          new_value[len-1] = '\0';
4919748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        }
4920748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      lt_setenv (name, new_value);
4921748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      XFREE (new_value);
4922748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    }
4923748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
4924748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4925748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratvoid
4926748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratlt_update_lib_path (const char *name, const char *value)
4927748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
4928748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  lt_debugprintf (__FILE__, __LINE__,
4929748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  "(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
4930748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat                  nonnull (name), nonnull (value));
4931748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4932748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  if (name && *name && value && *value)
4933748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    {
4934748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      char *new_value = lt_extend_str (getenv (name), value, 0);
4935748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      lt_setenv (name, new_value);
4936748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      XFREE (new_value);
4937748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    }
4938748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
4939748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4940748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratEOF
4941748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    case $host_os in
4942748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      mingw*)
4943748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		cat <<"EOF"
4944748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4945748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat/* Prepares an argument vector before calling spawn().
4946748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat   Note that spawn() does not by itself call the command interpreter
4947748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat     (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") :
4948748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
4949748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat         GetVersionEx(&v);
4950748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat         v.dwPlatformId == VER_PLATFORM_WIN32_NT;
4951748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      }) ? "cmd.exe" : "command.com").
4952748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat   Instead it simply concatenates the arguments, separated by ' ', and calls
4953748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat   CreateProcess().  We must quote the arguments since Win32 CreateProcess()
4954748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat   interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a
4955748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat   special way:
4956748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat   - Space and tab are interpreted as delimiters. They are not treated as
4957748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat     delimiters if they are surrounded by double quotes: "...".
4958748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat   - Unescaped double quotes are removed from the input. Their only effect is
4959748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat     that within double quotes, space and tab are treated like normal
4960748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat     characters.
4961748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat   - Backslashes not followed by double quotes are not special.
4962748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat   - But 2*n+1 backslashes followed by a double quote become
4963748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat     n backslashes followed by a double quote (n >= 0):
4964748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat       \" -> "
4965748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat       \\\" -> \"
4966748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat       \\\\\" -> \\"
4967748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat */
4968748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#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"
4969748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#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"
4970748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratchar **
4971748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratprepare_spawn (char **argv)
4972748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
4973748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  size_t argc;
4974748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  char **new_argv;
4975748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  size_t i;
4976748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4977748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  /* Count number of arguments.  */
4978748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  for (argc = 0; argv[argc] != NULL; argc++)
4979748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    ;
4980748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4981748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  /* Allocate new argument vector.  */
4982748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  new_argv = XMALLOC (char *, argc + 1);
4983748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4984748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  /* Put quoted arguments into the new argument vector.  */
4985748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  for (i = 0; i < argc; i++)
4986748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    {
4987748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      const char *string = argv[i];
4988748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
4989748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if (string[0] == '\0')
4990748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	new_argv[i] = xstrdup ("\"\"");
4991748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL)
4992748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	{
4993748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL);
4994748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  size_t length;
4995748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  unsigned int backslashes;
4996748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  const char *s;
4997748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  char *quoted_string;
4998748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  char *p;
4999748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5000748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  length = 0;
5001748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  backslashes = 0;
5002748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if (quote_around)
5003748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    length++;
5004748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  for (s = string; *s != '\0'; s++)
5005748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    {
5006748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      char c = *s;
5007748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      if (c == '"')
5008748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		length += backslashes + 1;
5009748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      length++;
5010748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      if (c == '\\')
5011748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		backslashes++;
5012748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      else
5013748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		backslashes = 0;
5014748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    }
5015748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if (quote_around)
5016748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    length += backslashes + 1;
5017748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5018748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  quoted_string = XMALLOC (char, length + 1);
5019748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5020748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  p = quoted_string;
5021748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  backslashes = 0;
5022748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if (quote_around)
5023748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    *p++ = '"';
5024748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  for (s = string; *s != '\0'; s++)
5025748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    {
5026748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      char c = *s;
5027748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      if (c == '"')
5028748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		{
5029748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  unsigned int j;
5030748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  for (j = backslashes + 1; j > 0; j--)
5031748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    *p++ = '\\';
5032748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		}
5033748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      *p++ = c;
5034748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      if (c == '\\')
5035748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		backslashes++;
5036748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      else
5037748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		backslashes = 0;
5038748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    }
5039748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if (quote_around)
5040748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    {
5041748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      unsigned int j;
5042748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      for (j = backslashes; j > 0; j--)
5043748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		*p++ = '\\';
5044748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      *p++ = '"';
5045748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    }
5046748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *p = '\0';
5047748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5048748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  new_argv[i] = quoted_string;
5049748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	}
5050748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      else
5051748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	new_argv[i] = (char *) string;
5052748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    }
5053748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  new_argv[argc] = NULL;
5054748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5055748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  return new_argv;
5056748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
5057748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratEOF
5058748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		;;
5059748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    esac
5060748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5061748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat            cat <<"EOF"
5062748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratvoid lt_dump_script (FILE* f)
5063748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
5064748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratEOF
5065748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_emit_wrapper yes |
5066748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      $SED -n -e '
5067748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erats/^\(.\{79\}\)\(..*\)/\1\
5068748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat\2/
5069748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erath
5070748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erats/\([\\"]\)/\\\1/g
5071748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erats/$/\\n/
5072748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erats/\([^\n]*\).*/  fputs ("\1", f);/p
5073748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratg
5074748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratD'
5075748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat            cat <<"EOF"
5076748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
5077748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratEOF
5078748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
5079748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# end: func_emit_cwrapperexe_src
5080748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5081748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_win32_import_lib_p ARG
5082748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# True if ARG is an import lib, as indicated by $file_magic_cmd
5083748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_win32_import_lib_p ()
5084748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
5085748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    $opt_debug
5086748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in
5087748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    *import*) : ;;
5088748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    *) false ;;
5089748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    esac
5090748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
5091748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5092748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_mode_link arg...
5093748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_mode_link ()
5094748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
5095748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    $opt_debug
5096748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    case $host in
5097748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
5098748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # It is impossible to link a dll without this setting, and
5099748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # we shouldn't force the makefile maintainer to figure out
5100748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # which system we are compiling for in order to pass an extra
5101748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # flag for every libtool invocation.
5102748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # allow_undefined=no
5103748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5104748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # FIXME: Unfortunately, there are problems with the above when trying
5105748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # to make a dll which has undefined symbols, in which case not
5106748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # even a static library is built.  For now, we need to specify
5107748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # -no-undefined on the libtool link line when we can be certain
5108748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # that all symbols are satisfied, otherwise we get a static library.
5109748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      allow_undefined=yes
5110748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      ;;
5111748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    *)
5112748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      allow_undefined=yes
5113748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      ;;
5114748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    esac
5115748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    libtool_args=$nonopt
5116748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    base_compile="$nonopt $@"
5117748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    compile_command=$nonopt
5118748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    finalize_command=$nonopt
5119748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5120748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    compile_rpath=
5121748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    finalize_rpath=
5122748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    compile_shlibpath=
5123748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    finalize_shlibpath=
5124748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    convenience=
5125748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    old_convenience=
5126748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    deplibs=
5127748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    old_deplibs=
5128748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    compiler_flags=
5129748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    linker_flags=
5130748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    dllsearchpath=
5131748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    lib_search_path=`pwd`
5132748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    inst_prefix_dir=
5133748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    new_inherited_linker_flags=
5134748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5135748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    avoid_version=no
5136748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    bindir=
5137748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    dlfiles=
5138748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    dlprefiles=
5139748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    dlself=no
5140748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    export_dynamic=no
5141748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    export_symbols=
5142748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    export_symbols_regex=
5143748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    generated=
5144748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    libobjs=
5145748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    ltlibs=
5146748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    module=no
5147748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    no_install=no
5148748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    objs=
5149748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    non_pic_objects=
5150748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    precious_files_regex=
5151748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    prefer_static_libs=no
5152748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    preload=no
5153748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    prev=
5154748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    prevarg=
5155748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    release=
5156748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    rpath=
5157748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    xrpath=
5158748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    perm_rpath=
5159748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    temp_rpath=
5160748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    thread_safe=no
5161748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    vinfo=
5162748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    vinfo_number=no
5163748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    weak_libs=
5164748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    single_module="${wl}-single_module"
5165748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_infer_tag $base_compile
5166748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5167748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # We need to know -static, to get the right output filenames.
5168748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    for arg
5169748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    do
5170748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      case $arg in
5171748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      -shared)
5172748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	test "$build_libtool_libs" != yes && \
5173748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_fatal_configuration "can not build a shared library"
5174748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	build_old_libs=no
5175748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	break
5176748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
5177748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      -all-static | -static | -static-libtool-libs)
5178748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	case $arg in
5179748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	-all-static)
5180748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
5181748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_warning "complete static linking is impossible in this configuration"
5182748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
5183748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test -n "$link_static_flag"; then
5184748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    dlopen_self=$dlopen_self_static
5185748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
5186748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  prefer_static_libs=yes
5187748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
5188748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	-static)
5189748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
5190748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    dlopen_self=$dlopen_self_static
5191748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
5192748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  prefer_static_libs=built
5193748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
5194748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	-static-libtool-libs)
5195748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
5196748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    dlopen_self=$dlopen_self_static
5197748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
5198748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  prefer_static_libs=yes
5199748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
5200748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	esac
5201748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	build_libtool_libs=no
5202748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	build_old_libs=yes
5203748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	break
5204748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
5205748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      esac
5206748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    done
5207748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5208748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # See if our shared archives depend on static archives.
5209748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
5210748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5211748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # Go through the arguments, transforming them on the way.
5212748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    while test "$#" -gt 0; do
5213748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      arg="$1"
5214748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      shift
5215748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_quote_for_eval "$arg"
5216748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      qarg=$func_quote_for_eval_unquoted_result
5217748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_append libtool_args " $func_quote_for_eval_result"
5218748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5219748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # If the previous option needs an argument, assign it.
5220748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test -n "$prev"; then
5221748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	case $prev in
5222748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	output)
5223748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_append compile_command " @OUTPUT@"
5224748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_append finalize_command " @OUTPUT@"
5225748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
5226748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	esac
5227748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5228748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	case $prev in
5229748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	bindir)
5230748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  bindir="$arg"
5231748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  prev=
5232748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  continue
5233748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
5234748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	dlfiles|dlprefiles)
5235748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test "$preload" = no; then
5236748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # Add the symbol object into the linking commands.
5237748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_append compile_command " @SYMFILE@"
5238748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_append finalize_command " @SYMFILE@"
5239748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    preload=yes
5240748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
5241748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  case $arg in
5242748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *.la | *.lo) ;;  # We handle these cases below.
5243748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  force)
5244748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    if test "$dlself" = no; then
5245748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      dlself=needless
5246748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      export_dynamic=yes
5247748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    fi
5248748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    prev=
5249748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    continue
5250748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    ;;
5251748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  self)
5252748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    if test "$prev" = dlprefiles; then
5253748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      dlself=yes
5254748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
5255748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      dlself=yes
5256748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    else
5257748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      dlself=needless
5258748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      export_dynamic=yes
5259748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    fi
5260748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    prev=
5261748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    continue
5262748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    ;;
5263748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *)
5264748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    if test "$prev" = dlfiles; then
5265748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      func_append dlfiles " $arg"
5266748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    else
5267748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      func_append dlprefiles " $arg"
5268748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    fi
5269748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    prev=
5270748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    continue
5271748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    ;;
5272748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  esac
5273748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
5274748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	expsyms)
5275748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  export_symbols="$arg"
5276748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  test -f "$arg" \
5277748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    || func_fatal_error "symbol file \`$arg' does not exist"
5278748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  prev=
5279748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  continue
5280748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
5281748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	expsyms_regex)
5282748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  export_symbols_regex="$arg"
5283748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  prev=
5284748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  continue
5285748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
5286748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	framework)
5287748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  case $host in
5288748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    *-*-darwin*)
5289748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      case "$deplibs " in
5290748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		*" $qarg.ltframework "*) ;;
5291748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		*) func_append deplibs " $qarg.ltframework" # this is fixed later
5292748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		   ;;
5293748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      esac
5294748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      ;;
5295748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  esac
5296748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  prev=
5297748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  continue
5298748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
5299748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	inst_prefix)
5300748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  inst_prefix_dir="$arg"
5301748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  prev=
5302748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  continue
5303748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
5304748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	objectlist)
5305748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test -f "$arg"; then
5306748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    save_arg=$arg
5307748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    moreargs=
5308748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    for fil in `cat "$save_arg"`
5309748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    do
5310748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#	      func_append moreargs " $fil"
5311748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      arg=$fil
5312748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # A libtool-controlled object.
5313748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5314748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # Check to see that this really is a libtool object.
5315748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      if func_lalib_unsafe_p "$arg"; then
5316748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		pic_object=
5317748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		non_pic_object=
5318748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5319748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		# Read the .lo file
5320748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		func_source "$arg"
5321748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5322748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		if test -z "$pic_object" ||
5323748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		   test -z "$non_pic_object" ||
5324748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		   test "$pic_object" = none &&
5325748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		   test "$non_pic_object" = none; then
5326748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  func_fatal_error "cannot find name of object for \`$arg'"
5327748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		fi
5328748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5329748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		# Extract subdirectory from the argument.
5330748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		func_dirname "$arg" "/" ""
5331748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		xdir="$func_dirname_result"
5332748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5333748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		if test "$pic_object" != none; then
5334748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  # Prepend the subdirectory the object is found in.
5335748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  pic_object="$xdir$pic_object"
5336748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5337748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  if test "$prev" = dlfiles; then
5338748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
5339748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		      func_append dlfiles " $pic_object"
5340748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		      prev=
5341748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		      continue
5342748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    else
5343748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		      # If libtool objects are unsupported, then we need to preload.
5344748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		      prev=dlprefiles
5345748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    fi
5346748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  fi
5347748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5348748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  # CHECK ME:  I think I busted this.  -Ossama
5349748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  if test "$prev" = dlprefiles; then
5350748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    # Preload the old-style object.
5351748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    func_append dlprefiles " $pic_object"
5352748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    prev=
5353748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  fi
5354748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5355748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  # A PIC object.
5356748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  func_append libobjs " $pic_object"
5357748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  arg="$pic_object"
5358748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		fi
5359748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5360748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		# Non-PIC object.
5361748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		if test "$non_pic_object" != none; then
5362748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  # Prepend the subdirectory the object is found in.
5363748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  non_pic_object="$xdir$non_pic_object"
5364748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5365748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  # A standard non-PIC object
5366748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  func_append non_pic_objects " $non_pic_object"
5367748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  if test -z "$pic_object" || test "$pic_object" = none ; then
5368748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    arg="$non_pic_object"
5369748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  fi
5370748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		else
5371748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  # If the PIC object exists, use it instead.
5372748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  # $xdir was prepended to $pic_object above.
5373748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  non_pic_object="$pic_object"
5374748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  func_append non_pic_objects " $non_pic_object"
5375748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		fi
5376748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      else
5377748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		# Only an error if not doing a dry-run.
5378748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		if $opt_dry_run; then
5379748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  # Extract subdirectory from the argument.
5380748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  func_dirname "$arg" "/" ""
5381748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  xdir="$func_dirname_result"
5382748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5383748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  func_lo2o "$arg"
5384748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  pic_object=$xdir$objdir/$func_lo2o_result
5385748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  non_pic_object=$xdir$func_lo2o_result
5386748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  func_append libobjs " $pic_object"
5387748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  func_append non_pic_objects " $non_pic_object"
5388748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	        else
5389748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  func_fatal_error "\`$arg' is not a valid libtool object"
5390748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		fi
5391748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      fi
5392748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    done
5393748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  else
5394748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_fatal_error "link input file \`$arg' does not exist"
5395748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
5396748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  arg=$save_arg
5397748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  prev=
5398748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  continue
5399748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
5400748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	precious_regex)
5401748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  precious_files_regex="$arg"
5402748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  prev=
5403748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  continue
5404748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
5405748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	release)
5406748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  release="-$arg"
5407748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  prev=
5408748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  continue
5409748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
5410748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	rpath | xrpath)
5411748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # We need an absolute path.
5412748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  case $arg in
5413748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  [\\/]* | [A-Za-z]:[\\/]*) ;;
5414748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *)
5415748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_fatal_error "only absolute run-paths are allowed"
5416748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    ;;
5417748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  esac
5418748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test "$prev" = rpath; then
5419748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    case "$rpath " in
5420748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    *" $arg "*) ;;
5421748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    *) func_append rpath " $arg" ;;
5422748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    esac
5423748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  else
5424748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    case "$xrpath " in
5425748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    *" $arg "*) ;;
5426748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    *) func_append xrpath " $arg" ;;
5427748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    esac
5428748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
5429748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  prev=
5430748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  continue
5431748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
5432748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	shrext)
5433748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  shrext_cmds="$arg"
5434748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  prev=
5435748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  continue
5436748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
5437748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	weak)
5438748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_append weak_libs " $arg"
5439748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  prev=
5440748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  continue
5441748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
5442748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	xcclinker)
5443748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_append linker_flags " $qarg"
5444748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_append compiler_flags " $qarg"
5445748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  prev=
5446748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_append compile_command " $qarg"
5447748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_append finalize_command " $qarg"
5448748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  continue
5449748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
5450748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	xcompiler)
5451748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_append compiler_flags " $qarg"
5452748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  prev=
5453748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_append compile_command " $qarg"
5454748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_append finalize_command " $qarg"
5455748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  continue
5456748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
5457748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	xlinker)
5458748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_append linker_flags " $qarg"
5459748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_append compiler_flags " $wl$qarg"
5460748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  prev=
5461748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_append compile_command " $wl$qarg"
5462748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_append finalize_command " $wl$qarg"
5463748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  continue
5464748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
5465748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	*)
5466748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  eval "$prev=\"\$arg\""
5467748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  prev=
5468748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  continue
5469748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
5470748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	esac
5471748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi # test -n "$prev"
5472748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5473748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      prevarg="$arg"
5474748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5475748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      case $arg in
5476748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      -all-static)
5477748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test -n "$link_static_flag"; then
5478748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # See comment for -static flag below, for more details.
5479748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_append compile_command " $link_static_flag"
5480748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_append finalize_command " $link_static_flag"
5481748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
5482748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	continue
5483748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
5484748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5485748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      -allow-undefined)
5486748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# FIXME: remove this flag sometime in the future.
5487748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_fatal_error "\`-allow-undefined' must not be used because it is the default"
5488748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
5489748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5490748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      -avoid-version)
5491748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	avoid_version=yes
5492748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	continue
5493748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
5494748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5495748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      -bindir)
5496748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	prev=bindir
5497748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	continue
5498748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
5499748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5500748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      -dlopen)
5501748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	prev=dlfiles
5502748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	continue
5503748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
5504748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5505748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      -dlpreopen)
5506748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	prev=dlprefiles
5507748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	continue
5508748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
5509748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5510748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      -export-dynamic)
5511748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	export_dynamic=yes
5512748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	continue
5513748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
5514748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5515748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      -export-symbols | -export-symbols-regex)
5516748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
5517748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_fatal_error "more than one -exported-symbols argument is not allowed"
5518748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
5519748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test "X$arg" = "X-export-symbols"; then
5520748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  prev=expsyms
5521748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	else
5522748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  prev=expsyms_regex
5523748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
5524748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	continue
5525748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
5526748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5527748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      -framework)
5528748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	prev=framework
5529748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	continue
5530748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
5531748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5532748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      -inst-prefix-dir)
5533748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	prev=inst_prefix
5534748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	continue
5535748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
5536748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5537748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
5538748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # so, if we see these flags be careful not to treat them like -L
5539748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      -L[A-Z][A-Z]*:*)
5540748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	case $with_gcc/$host in
5541748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	no/*-*-irix* | /*-*-irix*)
5542748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_append compile_command " $arg"
5543748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_append finalize_command " $arg"
5544748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
5545748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	esac
5546748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	continue
5547748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
5548748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5549748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      -L*)
5550748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_stripname "-L" '' "$arg"
5551748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test -z "$func_stripname_result"; then
5552748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test "$#" -gt 0; then
5553748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_fatal_error "require no space between \`-L' and \`$1'"
5554748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  else
5555748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_fatal_error "need path for \`-L' option"
5556748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
5557748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
5558748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_resolve_sysroot "$func_stripname_result"
5559748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	dir=$func_resolve_sysroot_result
5560748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# We need an absolute path.
5561748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	case $dir in
5562748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	[\\/]* | [A-Za-z]:[\\/]*) ;;
5563748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	*)
5564748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  absdir=`cd "$dir" && pwd`
5565748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  test -z "$absdir" && \
5566748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_fatal_error "cannot determine absolute directory name of \`$dir'"
5567748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  dir="$absdir"
5568748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
5569748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	esac
5570748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	case "$deplibs " in
5571748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	*" -L$dir "* | *" $arg "*)
5572748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # Will only happen for absolute or sysroot arguments
5573748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
5574748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	*)
5575748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # Preserve sysroot, but never include relative directories
5576748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  case $dir in
5577748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;;
5578748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    *) func_append deplibs " -L$dir" ;;
5579748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  esac
5580748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_append lib_search_path " $dir"
5581748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
5582748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	esac
5583748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	case $host in
5584748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
5585748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'`
5586748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  case :$dllsearchpath: in
5587748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *":$dir:"*) ;;
5588748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ::) dllsearchpath=$dir;;
5589748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *) func_append dllsearchpath ":$dir";;
5590748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  esac
5591748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  case :$dllsearchpath: in
5592748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *":$testbindir:"*) ;;
5593748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ::) dllsearchpath=$testbindir;;
5594748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *) func_append dllsearchpath ":$testbindir";;
5595748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  esac
5596748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
5597748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	esac
5598748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	continue
5599748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
5600748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5601748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      -l*)
5602748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
5603748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  case $host in
5604748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*)
5605748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # These systems don't actually have a C or math library (as such)
5606748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    continue
5607748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    ;;
5608748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *-*-os2*)
5609748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # These systems don't actually have a C library (as such)
5610748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    test "X$arg" = "X-lc" && continue
5611748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    ;;
5612748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
5613748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # Do not include libc due to us having libc/libc_r.
5614748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    test "X$arg" = "X-lc" && continue
5615748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    ;;
5616748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *-*-rhapsody* | *-*-darwin1.[012])
5617748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # Rhapsody C and math libraries are in the System framework
5618748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_append deplibs " System.ltframework"
5619748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    continue
5620748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    ;;
5621748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *-*-sco3.2v5* | *-*-sco5v6*)
5622748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # Causes problems with __ctype
5623748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    test "X$arg" = "X-lc" && continue
5624748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    ;;
5625748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
5626748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # Compiler inserts libc in the correct place for threads to work
5627748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    test "X$arg" = "X-lc" && continue
5628748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    ;;
5629748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  esac
5630748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	elif test "X$arg" = "X-lc_r"; then
5631748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	 case $host in
5632748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
5633748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	   # Do not include libc_r directly, use -pthread flag.
5634748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	   continue
5635748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	   ;;
5636748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	 esac
5637748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
5638748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_append deplibs " $arg"
5639748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	continue
5640748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
5641748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5642748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      -module)
5643748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	module=yes
5644748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	continue
5645748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
5646748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5647748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Tru64 UNIX uses -model [arg] to determine the layout of C++
5648748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # classes, name mangling, and exception handling.
5649748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Darwin uses the -arch flag to determine output architecture.
5650748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      -model|-arch|-isysroot|--sysroot)
5651748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_append compiler_flags " $arg"
5652748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_append compile_command " $arg"
5653748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_append finalize_command " $arg"
5654748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	prev=xcompiler
5655748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	continue
5656748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
5657748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5658748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
5659748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
5660748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_append compiler_flags " $arg"
5661748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_append compile_command " $arg"
5662748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_append finalize_command " $arg"
5663748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	case "$new_inherited_linker_flags " in
5664748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    *" $arg "*) ;;
5665748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    * ) func_append new_inherited_linker_flags " $arg" ;;
5666748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	esac
5667748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	continue
5668748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
5669748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5670748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      -multi_module)
5671748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	single_module="${wl}-multi_module"
5672748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	continue
5673748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
5674748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5675748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      -no-fast-install)
5676748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fast_install=no
5677748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	continue
5678748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
5679748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5680748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      -no-install)
5681748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	case $host in
5682748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
5683748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # The PATH hackery in wrapper scripts is required on Windows
5684748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # and Darwin in order for the loader to find any dlls it needs.
5685748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_warning "\`-no-install' is ignored for $host"
5686748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_warning "assuming \`-no-fast-install' instead"
5687748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fast_install=no
5688748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
5689748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	*) no_install=yes ;;
5690748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	esac
5691748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	continue
5692748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
5693748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5694748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      -no-undefined)
5695748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	allow_undefined=no
5696748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	continue
5697748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
5698748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5699748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      -objectlist)
5700748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	prev=objectlist
5701748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	continue
5702748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
5703748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5704748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      -o) prev=output ;;
5705748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5706748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      -precious-files-regex)
5707748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	prev=precious_regex
5708748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	continue
5709748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
5710748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5711748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      -release)
5712748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	prev=release
5713748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	continue
5714748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
5715748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5716748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      -rpath)
5717748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	prev=rpath
5718748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	continue
5719748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
5720748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5721748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      -R)
5722748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	prev=xrpath
5723748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	continue
5724748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
5725748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5726748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      -R*)
5727748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_stripname '-R' '' "$arg"
5728748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	dir=$func_stripname_result
5729748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# We need an absolute path.
5730748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	case $dir in
5731748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	[\\/]* | [A-Za-z]:[\\/]*) ;;
5732748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	=*)
5733748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_stripname '=' '' "$dir"
5734748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  dir=$lt_sysroot$func_stripname_result
5735748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
5736748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	*)
5737748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_fatal_error "only absolute run-paths are allowed"
5738748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
5739748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	esac
5740748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	case "$xrpath " in
5741748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	*" $dir "*) ;;
5742748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	*) func_append xrpath " $dir" ;;
5743748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	esac
5744748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	continue
5745748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
5746748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5747748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      -shared)
5748748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# The effects of -shared are defined in a previous loop.
5749748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	continue
5750748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
5751748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5752748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      -shrext)
5753748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	prev=shrext
5754748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	continue
5755748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
5756748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5757748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      -static | -static-libtool-libs)
5758748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# The effects of -static are defined in a previous loop.
5759748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# We used to do the same as -all-static on platforms that
5760748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# didn't have a PIC flag, but the assumption that the effects
5761748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# would be equivalent was wrong.  It would break on at least
5762748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Digital Unix and AIX.
5763748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	continue
5764748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
5765748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5766748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      -thread-safe)
5767748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	thread_safe=yes
5768748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	continue
5769748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
5770748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5771748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      -version-info)
5772748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	prev=vinfo
5773748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	continue
5774748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
5775748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5776748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      -version-number)
5777748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	prev=vinfo
5778748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	vinfo_number=yes
5779748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	continue
5780748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
5781748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5782748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      -weak)
5783748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        prev=weak
5784748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	continue
5785748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
5786748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5787748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      -Wc,*)
5788748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_stripname '-Wc,' '' "$arg"
5789748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	args=$func_stripname_result
5790748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	arg=
5791748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	save_ifs="$IFS"; IFS=','
5792748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	for flag in $args; do
5793748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  IFS="$save_ifs"
5794748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat          func_quote_for_eval "$flag"
5795748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_append arg " $func_quote_for_eval_result"
5796748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_append compiler_flags " $func_quote_for_eval_result"
5797748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	done
5798748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	IFS="$save_ifs"
5799748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_stripname ' ' '' "$arg"
5800748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	arg=$func_stripname_result
5801748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
5802748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5803748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      -Wl,*)
5804748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_stripname '-Wl,' '' "$arg"
5805748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	args=$func_stripname_result
5806748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	arg=
5807748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	save_ifs="$IFS"; IFS=','
5808748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	for flag in $args; do
5809748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  IFS="$save_ifs"
5810748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat          func_quote_for_eval "$flag"
5811748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_append arg " $wl$func_quote_for_eval_result"
5812748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_append compiler_flags " $wl$func_quote_for_eval_result"
5813748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_append linker_flags " $func_quote_for_eval_result"
5814748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	done
5815748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	IFS="$save_ifs"
5816748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_stripname ' ' '' "$arg"
5817748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	arg=$func_stripname_result
5818748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
5819748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5820748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      -Xcompiler)
5821748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	prev=xcompiler
5822748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	continue
5823748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
5824748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5825748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      -Xlinker)
5826748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	prev=xlinker
5827748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	continue
5828748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
5829748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5830748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      -XCClinker)
5831748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	prev=xcclinker
5832748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	continue
5833748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
5834748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5835748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # -msg_* for osf cc
5836748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      -msg_*)
5837748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_quote_for_eval "$arg"
5838748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	arg="$func_quote_for_eval_result"
5839748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
5840748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5841748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Flags to be passed through unchanged, with rationale:
5842748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # -64, -mips[0-9]      enable 64-bit mode for the SGI compiler
5843748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # -r[0-9][0-9]*        specify processor for the SGI compiler
5844748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler
5845748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # +DA*, +DD*           enable 64-bit mode for the HP compiler
5846748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # -q*                  compiler args for the IBM compiler
5847748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # -m*, -t[45]*, -txscale* architecture-specific flags for GCC
5848748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # -F/path              path to uninstalled frameworks, gcc on darwin
5849748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # -p, -pg, --coverage, -fprofile-*  profiling flags for GCC
5850748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # @file                GCC response files
5851748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # -tp=*                Portland pgcc target processor selection
5852748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # --sysroot=*          for sysroot support
5853748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
5854748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
5855748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
5856748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      -O*|-flto*|-fwhopr*|-fuse-linker-plugin)
5857748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        func_quote_for_eval "$arg"
5858748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	arg="$func_quote_for_eval_result"
5859748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        func_append compile_command " $arg"
5860748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        func_append finalize_command " $arg"
5861748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        func_append compiler_flags " $arg"
5862748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        continue
5863748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        ;;
5864748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5865748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Some other compiler flag.
5866748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      -* | +*)
5867748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        func_quote_for_eval "$arg"
5868748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	arg="$func_quote_for_eval_result"
5869748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
5870748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5871748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      *.$objext)
5872748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# A standard object.
5873748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_append objs " $arg"
5874748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
5875748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5876748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      *.lo)
5877748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# A libtool-controlled object.
5878748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5879748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Check to see that this really is a libtool object.
5880748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if func_lalib_unsafe_p "$arg"; then
5881748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  pic_object=
5882748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  non_pic_object=
5883748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5884748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # Read the .lo file
5885748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_source "$arg"
5886748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5887748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test -z "$pic_object" ||
5888748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	     test -z "$non_pic_object" ||
5889748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	     test "$pic_object" = none &&
5890748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	     test "$non_pic_object" = none; then
5891748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_fatal_error "cannot find name of object for \`$arg'"
5892748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
5893748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5894748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # Extract subdirectory from the argument.
5895748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_dirname "$arg" "/" ""
5896748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  xdir="$func_dirname_result"
5897748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5898748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test "$pic_object" != none; then
5899748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # Prepend the subdirectory the object is found in.
5900748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    pic_object="$xdir$pic_object"
5901748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5902748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    if test "$prev" = dlfiles; then
5903748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
5904748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		func_append dlfiles " $pic_object"
5905748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		prev=
5906748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		continue
5907748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      else
5908748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		# If libtool objects are unsupported, then we need to preload.
5909748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		prev=dlprefiles
5910748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      fi
5911748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    fi
5912748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5913748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # CHECK ME:  I think I busted this.  -Ossama
5914748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    if test "$prev" = dlprefiles; then
5915748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # Preload the old-style object.
5916748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      func_append dlprefiles " $pic_object"
5917748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      prev=
5918748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    fi
5919748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5920748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # A PIC object.
5921748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_append libobjs " $pic_object"
5922748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    arg="$pic_object"
5923748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
5924748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5925748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # Non-PIC object.
5926748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test "$non_pic_object" != none; then
5927748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # Prepend the subdirectory the object is found in.
5928748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    non_pic_object="$xdir$non_pic_object"
5929748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5930748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # A standard non-PIC object
5931748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_append non_pic_objects " $non_pic_object"
5932748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    if test -z "$pic_object" || test "$pic_object" = none ; then
5933748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      arg="$non_pic_object"
5934748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    fi
5935748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  else
5936748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # If the PIC object exists, use it instead.
5937748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # $xdir was prepended to $pic_object above.
5938748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    non_pic_object="$pic_object"
5939748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_append non_pic_objects " $non_pic_object"
5940748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
5941748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	else
5942748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # Only an error if not doing a dry-run.
5943748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if $opt_dry_run; then
5944748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # Extract subdirectory from the argument.
5945748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_dirname "$arg" "/" ""
5946748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    xdir="$func_dirname_result"
5947748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5948748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_lo2o "$arg"
5949748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    pic_object=$xdir$objdir/$func_lo2o_result
5950748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    non_pic_object=$xdir$func_lo2o_result
5951748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_append libobjs " $pic_object"
5952748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_append non_pic_objects " $non_pic_object"
5953748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  else
5954748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_fatal_error "\`$arg' is not a valid libtool object"
5955748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
5956748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
5957748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
5958748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5959748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      *.$libext)
5960748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# An archive.
5961748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_append deplibs " $arg"
5962748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_append old_deplibs " $arg"
5963748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	continue
5964748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
5965748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5966748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      *.la)
5967748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# A libtool-controlled library.
5968748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5969748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_resolve_sysroot "$arg"
5970748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test "$prev" = dlfiles; then
5971748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # This library was specified with -dlopen.
5972748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_append dlfiles " $func_resolve_sysroot_result"
5973748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  prev=
5974748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	elif test "$prev" = dlprefiles; then
5975748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # The library was specified with -dlpreopen.
5976748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_append dlprefiles " $func_resolve_sysroot_result"
5977748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  prev=
5978748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	else
5979748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_append deplibs " $func_resolve_sysroot_result"
5980748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
5981748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	continue
5982748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
5983748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5984748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Some other compiler argument.
5985748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      *)
5986748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Unknown arguments in both finalize_command and compile_command need
5987748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# to be aesthetically quoted because they are evaled later.
5988748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_quote_for_eval "$arg"
5989748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	arg="$func_quote_for_eval_result"
5990748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
5991748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      esac # arg
5992748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
5993748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Now actually substitute the argument into the commands.
5994748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test -n "$arg"; then
5995748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_append compile_command " $arg"
5996748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_append finalize_command " $arg"
5997748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
5998748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    done # argument parsing loop
5999748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
6000748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    test -n "$prev" && \
6001748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_fatal_help "the \`$prevarg' option requires an argument"
6002748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
6003748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
6004748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      eval arg=\"$export_dynamic_flag_spec\"
6005748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_append compile_command " $arg"
6006748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_append finalize_command " $arg"
6007748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    fi
6008748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
6009748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    oldlibs=
6010748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # calculate the name of the file, without its directory
6011748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_basename "$output"
6012748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    outputname="$func_basename_result"
6013748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    libobjs_save="$libobjs"
6014748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
6015748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    if test -n "$shlibpath_var"; then
6016748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # get the directories listed in $shlibpath_var
6017748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\`
6018748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    else
6019748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      shlib_search_path=
6020748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    fi
6021748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
6022748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
6023748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
6024748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_dirname "$output" "/" ""
6025748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    output_objdir="$func_dirname_result$objdir"
6026748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_to_tool_file "$output_objdir/"
6027748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    tool_output_objdir=$func_to_tool_file_result
6028748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # Create the object directory.
6029748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_mkdir_p "$output_objdir"
6030748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
6031748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # Determine the type of output
6032748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    case $output in
6033748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    "")
6034748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_fatal_help "you must specify an output file"
6035748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      ;;
6036748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    *.$libext) linkmode=oldlib ;;
6037748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    *.lo | *.$objext) linkmode=obj ;;
6038748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    *.la) linkmode=lib ;;
6039748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    *) linkmode=prog ;; # Anything else should be a program.
6040748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    esac
6041748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
6042748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    specialdeplibs=
6043748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
6044748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    libs=
6045748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # Find all interdependent deplibs by searching for libraries
6046748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # that are linked more than once (e.g. -la -lb -la)
6047748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    for deplib in $deplibs; do
6048748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if $opt_preserve_dup_deps ; then
6049748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	case "$libs " in
6050748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	*" $deplib "*) func_append specialdeplibs " $deplib" ;;
6051748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	esac
6052748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
6053748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_append libs " $deplib"
6054748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    done
6055748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
6056748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    if test "$linkmode" = lib; then
6057748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      libs="$predeps $libs $compiler_lib_search_path $postdeps"
6058748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
6059748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Compute libraries that are listed more than once in $predeps
6060748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # $postdeps and mark them as special (i.e., whose duplicates are
6061748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # not to be eliminated).
6062748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      pre_post_deps=
6063748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if $opt_duplicate_compiler_generated_deps; then
6064748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	for pre_post_dep in $predeps $postdeps; do
6065748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  case "$pre_post_deps " in
6066748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;;
6067748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  esac
6068748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_append pre_post_deps " $pre_post_dep"
6069748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	done
6070748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
6071748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      pre_post_deps=
6072748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    fi
6073748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
6074748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    deplibs=
6075748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    newdependency_libs=
6076748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    newlib_search_path=
6077748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    need_relink=no # whether we're linking any uninstalled libtool libraries
6078748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    notinst_deplibs= # not-installed libtool libraries
6079748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    notinst_path= # paths that contain not-installed libtool libraries
6080748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
6081748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    case $linkmode in
6082748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    lib)
6083748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	passes="conv dlpreopen link"
6084748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	for file in $dlfiles $dlprefiles; do
6085748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  case $file in
6086748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *.la) ;;
6087748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *)
6088748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
6089748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    ;;
6090748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  esac
6091748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	done
6092748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
6093748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    prog)
6094748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	compile_deplibs=
6095748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	finalize_deplibs=
6096748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	alldeplibs=no
6097748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	newdlfiles=
6098748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	newdlprefiles=
6099748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	passes="conv scan dlopen dlpreopen link"
6100748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
6101748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    *)  passes="conv"
6102748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
6103748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    esac
6104748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
6105748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    for pass in $passes; do
6106748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # The preopen pass in lib mode reverses $deplibs; put it back here
6107748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # so that -L comes before libs that need it for instance...
6108748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test "$linkmode,$pass" = "lib,link"; then
6109748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	## FIXME: Find the place where the list is rebuilt in the wrong
6110748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	##        order, and fix it there properly
6111748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        tmp_deplibs=
6112748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	for deplib in $deplibs; do
6113748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  tmp_deplibs="$deplib $tmp_deplibs"
6114748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	done
6115748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	deplibs="$tmp_deplibs"
6116748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
6117748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
6118748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test "$linkmode,$pass" = "lib,link" ||
6119748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	 test "$linkmode,$pass" = "prog,scan"; then
6120748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	libs="$deplibs"
6121748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	deplibs=
6122748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
6123748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test "$linkmode" = prog; then
6124748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	case $pass in
6125748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	dlopen) libs="$dlfiles" ;;
6126748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	dlpreopen) libs="$dlprefiles" ;;
6127748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	link)
6128748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  libs="$deplibs %DEPLIBS%"
6129748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs"
6130748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
6131748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	esac
6132748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
6133748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test "$linkmode,$pass" = "lib,dlpreopen"; then
6134748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Collect and forward deplibs of preopened libtool libs
6135748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	for lib in $dlprefiles; do
6136748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # Ignore non-libtool-libs
6137748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  dependency_libs=
6138748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_resolve_sysroot "$lib"
6139748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  case $lib in
6140748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *.la)	func_source "$func_resolve_sysroot_result" ;;
6141748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  esac
6142748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
6143748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # Collect preopened libtool deplibs, except any this library
6144748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # has declared as weak libs
6145748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  for deplib in $dependency_libs; do
6146748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_basename "$deplib"
6147748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat            deplib_base=$func_basename_result
6148748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    case " $weak_libs " in
6149748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    *" $deplib_base "*) ;;
6150748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    *) func_append deplibs " $deplib" ;;
6151748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    esac
6152748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  done
6153748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	done
6154748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	libs="$dlprefiles"
6155748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
6156748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test "$pass" = dlopen; then
6157748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Collect dlpreopened libraries
6158748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	save_deplibs="$deplibs"
6159748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	deplibs=
6160748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
6161748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
6162748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      for deplib in $libs; do
6163748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	lib=
6164748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	found=no
6165748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	case $deplib in
6166748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
6167748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
6168748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test "$linkmode,$pass" = "prog,link"; then
6169748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    compile_deplibs="$deplib $compile_deplibs"
6170748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    finalize_deplibs="$deplib $finalize_deplibs"
6171748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  else
6172748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_append compiler_flags " $deplib"
6173748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    if test "$linkmode" = lib ; then
6174748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		case "$new_inherited_linker_flags " in
6175748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    *" $deplib "*) ;;
6176748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    * ) func_append new_inherited_linker_flags " $deplib" ;;
6177748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		esac
6178748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    fi
6179748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
6180748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  continue
6181748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
6182748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	-l*)
6183748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test "$linkmode" != lib && test "$linkmode" != prog; then
6184748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_warning "\`-l' is ignored for archives/objects"
6185748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    continue
6186748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
6187748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_stripname '-l' '' "$deplib"
6188748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  name=$func_stripname_result
6189748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test "$linkmode" = lib; then
6190748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
6191748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  else
6192748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
6193748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
6194748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  for searchdir in $searchdirs; do
6195748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    for search_ext in .la $std_shrext .so .a; do
6196748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # Search the libtool library
6197748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      lib="$searchdir/lib${name}${search_ext}"
6198748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      if test -f "$lib"; then
6199748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		if test "$search_ext" = ".la"; then
6200748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  found=yes
6201748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		else
6202748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  found=no
6203748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		fi
6204748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		break 2
6205748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      fi
6206748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    done
6207748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  done
6208748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test "$found" != yes; then
6209748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # deplib doesn't seem to be a libtool library
6210748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    if test "$linkmode,$pass" = "prog,link"; then
6211748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      compile_deplibs="$deplib $compile_deplibs"
6212748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      finalize_deplibs="$deplib $finalize_deplibs"
6213748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    else
6214748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      deplibs="$deplib $deplibs"
6215748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
6216748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    fi
6217748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    continue
6218748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  else # deplib is a libtool library
6219748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
6220748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # We need to do some special things here, and not later.
6221748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
6222748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      case " $predeps $postdeps " in
6223748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      *" $deplib "*)
6224748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		if func_lalib_p "$lib"; then
6225748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  library_names=
6226748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  old_library=
6227748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  func_source "$lib"
6228748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  for l in $old_library $library_names; do
6229748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    ll="$l"
6230748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  done
6231748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  if test "X$ll" = "X$old_library" ; then # only static version available
6232748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    found=no
6233748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    func_dirname "$lib" "" "."
6234748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    ladir="$func_dirname_result"
6235748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    lib=$ladir/$old_library
6236748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    if test "$linkmode,$pass" = "prog,link"; then
6237748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		      compile_deplibs="$deplib $compile_deplibs"
6238748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		      finalize_deplibs="$deplib $finalize_deplibs"
6239748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    else
6240748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		      deplibs="$deplib $deplibs"
6241748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
6242748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    fi
6243748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    continue
6244748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  fi
6245748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		fi
6246748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		;;
6247748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      *) ;;
6248748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      esac
6249748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    fi
6250748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
6251748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;; # -l
6252748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	*.ltframework)
6253748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test "$linkmode,$pass" = "prog,link"; then
6254748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    compile_deplibs="$deplib $compile_deplibs"
6255748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    finalize_deplibs="$deplib $finalize_deplibs"
6256748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  else
6257748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    deplibs="$deplib $deplibs"
6258748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    if test "$linkmode" = lib ; then
6259748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		case "$new_inherited_linker_flags " in
6260748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    *" $deplib "*) ;;
6261748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    * ) func_append new_inherited_linker_flags " $deplib" ;;
6262748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		esac
6263748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    fi
6264748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
6265748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  continue
6266748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
6267748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	-L*)
6268748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  case $linkmode in
6269748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  lib)
6270748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    deplibs="$deplib $deplibs"
6271748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    test "$pass" = conv && continue
6272748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    newdependency_libs="$deplib $newdependency_libs"
6273748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_stripname '-L' '' "$deplib"
6274748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_resolve_sysroot "$func_stripname_result"
6275748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_append newlib_search_path " $func_resolve_sysroot_result"
6276748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    ;;
6277748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  prog)
6278748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    if test "$pass" = conv; then
6279748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      deplibs="$deplib $deplibs"
6280748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      continue
6281748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    fi
6282748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    if test "$pass" = scan; then
6283748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      deplibs="$deplib $deplibs"
6284748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    else
6285748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      compile_deplibs="$deplib $compile_deplibs"
6286748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      finalize_deplibs="$deplib $finalize_deplibs"
6287748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    fi
6288748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_stripname '-L' '' "$deplib"
6289748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_resolve_sysroot "$func_stripname_result"
6290748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_append newlib_search_path " $func_resolve_sysroot_result"
6291748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    ;;
6292748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *)
6293748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_warning "\`-L' is ignored for archives/objects"
6294748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    ;;
6295748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  esac # linkmode
6296748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  continue
6297748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;; # -L
6298748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	-R*)
6299748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test "$pass" = link; then
6300748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_stripname '-R' '' "$deplib"
6301748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_resolve_sysroot "$func_stripname_result"
6302748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    dir=$func_resolve_sysroot_result
6303748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # Make sure the xrpath contains only unique directories.
6304748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    case "$xrpath " in
6305748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    *" $dir "*) ;;
6306748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    *) func_append xrpath " $dir" ;;
6307748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    esac
6308748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
6309748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  deplibs="$deplib $deplibs"
6310748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  continue
6311748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
6312748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	*.la)
6313748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_resolve_sysroot "$deplib"
6314748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  lib=$func_resolve_sysroot_result
6315748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
6316748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	*.$libext)
6317748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test "$pass" = conv; then
6318748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    deplibs="$deplib $deplibs"
6319748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    continue
6320748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
6321748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  case $linkmode in
6322748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  lib)
6323748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # Linking convenience modules into shared libraries is allowed,
6324748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # but linking other static libraries is non-portable.
6325748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    case " $dlpreconveniencelibs " in
6326748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    *" $deplib "*) ;;
6327748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    *)
6328748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      valid_a_lib=no
6329748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      case $deplibs_check_method in
6330748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		match_pattern*)
6331748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  set dummy $deplibs_check_method; shift
6332748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
6333748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \
6334748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    | $EGREP "$match_pattern_regex" > /dev/null; then
6335748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    valid_a_lib=yes
6336748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  fi
6337748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		;;
6338748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		pass_all)
6339748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  valid_a_lib=yes
6340748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		;;
6341748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      esac
6342748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      if test "$valid_a_lib" != yes; then
6343748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		echo
6344748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		$ECHO "*** Warning: Trying to link with static lib archive $deplib."
6345748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		echo "*** I have the capability to make that library automatically link in when"
6346748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		echo "*** you link to this library.  But I can only do this if you have a"
6347748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		echo "*** shared version of the library, which you do not appear to have"
6348748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		echo "*** because the file extensions .$libext of this argument makes me believe"
6349748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		echo "*** that it is just a static archive that I should not use here."
6350748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      else
6351748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		echo
6352748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		$ECHO "*** Warning: Linking the shared library $output against the"
6353748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		$ECHO "*** static library $deplib is not portable!"
6354748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		deplibs="$deplib $deplibs"
6355748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      fi
6356748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      ;;
6357748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    esac
6358748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    continue
6359748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    ;;
6360748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  prog)
6361748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    if test "$pass" != link; then
6362748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      deplibs="$deplib $deplibs"
6363748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    else
6364748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      compile_deplibs="$deplib $compile_deplibs"
6365748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      finalize_deplibs="$deplib $finalize_deplibs"
6366748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    fi
6367748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    continue
6368748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    ;;
6369748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  esac # linkmode
6370748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;; # *.$libext
6371748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	*.lo | *.$objext)
6372748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test "$pass" = conv; then
6373748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    deplibs="$deplib $deplibs"
6374748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  elif test "$linkmode" = prog; then
6375748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
6376748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # If there is no dlopen support or we're linking statically,
6377748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # we need to preload.
6378748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      func_append newdlprefiles " $deplib"
6379748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      compile_deplibs="$deplib $compile_deplibs"
6380748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      finalize_deplibs="$deplib $finalize_deplibs"
6381748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    else
6382748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      func_append newdlfiles " $deplib"
6383748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    fi
6384748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
6385748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  continue
6386748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
6387748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	%DEPLIBS%)
6388748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  alldeplibs=yes
6389748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  continue
6390748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
6391748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	esac # case $deplib
6392748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
6393748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test "$found" = yes || test -f "$lib"; then :
6394748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	else
6395748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
6396748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
6397748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
6398748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Check to see that this really is a libtool archive.
6399748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_lalib_unsafe_p "$lib" \
6400748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  || func_fatal_error "\`$lib' is not a valid libtool archive"
6401748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
6402748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_dirname "$lib" "" "."
6403748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	ladir="$func_dirname_result"
6404748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
6405748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	dlname=
6406748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	dlopen=
6407748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	dlpreopen=
6408748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	libdir=
6409748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	library_names=
6410748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	old_library=
6411748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	inherited_linker_flags=
6412748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# If the library was installed with an old release of libtool,
6413748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# it will not redefine variables installed, or shouldnotlink
6414748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	installed=yes
6415748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	shouldnotlink=no
6416748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	avoidtemprpath=
6417748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
6418748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
6419748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Read the .la file
6420748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_source "$lib"
6421748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
6422748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Convert "-framework foo" to "foo.ltframework"
6423748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test -n "$inherited_linker_flags"; then
6424748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`
6425748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
6426748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    case " $new_inherited_linker_flags " in
6427748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      *" $tmp_inherited_linker_flag "*) ;;
6428748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";;
6429748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    esac
6430748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  done
6431748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
6432748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
6433748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test "$linkmode,$pass" = "lib,link" ||
6434748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	   test "$linkmode,$pass" = "prog,scan" ||
6435748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then
6436748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  test -n "$dlopen" && func_append dlfiles " $dlopen"
6437748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen"
6438748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
6439748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
6440748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test "$pass" = conv; then
6441748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # Only check for convenience libraries
6442748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  deplibs="$lib $deplibs"
6443748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test -z "$libdir"; then
6444748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    if test -z "$old_library"; then
6445748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      func_fatal_error "cannot find name of link library for \`$lib'"
6446748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    fi
6447748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # It is a libtool convenience library, so add in its objects.
6448748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_append convenience " $ladir/$objdir/$old_library"
6449748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_append old_convenience " $ladir/$objdir/$old_library"
6450748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    tmp_libs=
6451748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    for deplib in $dependency_libs; do
6452748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      deplibs="$deplib $deplibs"
6453748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      if $opt_preserve_dup_deps ; then
6454748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		case "$tmp_libs " in
6455748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		*" $deplib "*) func_append specialdeplibs " $deplib" ;;
6456748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		esac
6457748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      fi
6458748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      func_append tmp_libs " $deplib"
6459748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    done
6460748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
6461748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_fatal_error "\`$lib' is not a convenience library"
6462748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
6463748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  continue
6464748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi # $pass = conv
6465748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
6466748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
6467748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Get the name of the library we link against.
6468748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	linklib=
6469748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test -n "$old_library" &&
6470748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	   { test "$prefer_static_libs" = yes ||
6471748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	     test "$prefer_static_libs,$installed" = "built,no"; }; then
6472748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  linklib=$old_library
6473748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	else
6474748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  for l in $old_library $library_names; do
6475748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    linklib="$l"
6476748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  done
6477748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
6478748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test -z "$linklib"; then
6479748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_fatal_error "cannot find name of link library for \`$lib'"
6480748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
6481748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
6482748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# This library was specified with -dlopen.
6483748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test "$pass" = dlopen; then
6484748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test -z "$libdir"; then
6485748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
6486748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
6487748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test -z "$dlname" ||
6488748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	     test "$dlopen_support" != yes ||
6489748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	     test "$build_libtool_libs" = no; then
6490748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # If there is no dlname, no dlopen support or we're linking
6491748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # statically, we need to preload.  We also need to preload any
6492748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # dependent libraries so libltdl's deplib preloader doesn't
6493748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # bomb out in the load deplibs phase.
6494748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_append dlprefiles " $lib $dependency_libs"
6495748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  else
6496748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_append newdlfiles " $lib"
6497748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
6498748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  continue
6499748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi # $pass = dlopen
6500748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
6501748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# We need an absolute path.
6502748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	case $ladir in
6503748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
6504748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	*)
6505748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  abs_ladir=`cd "$ladir" && pwd`
6506748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test -z "$abs_ladir"; then
6507748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_warning "cannot determine absolute directory name of \`$ladir'"
6508748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_warning "passing it literally to the linker, although it might fail"
6509748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    abs_ladir="$ladir"
6510748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
6511748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
6512748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	esac
6513748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_basename "$lib"
6514748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	laname="$func_basename_result"
6515748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
6516748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Find the relevant object directory and library name.
6517748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test "X$installed" = Xyes; then
6518748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
6519748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_warning "library \`$lib' was moved."
6520748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    dir="$ladir"
6521748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    absdir="$abs_ladir"
6522748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    libdir="$abs_ladir"
6523748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  else
6524748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    dir="$lt_sysroot$libdir"
6525748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    absdir="$lt_sysroot$libdir"
6526748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
6527748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
6528748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	else
6529748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
6530748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    dir="$ladir"
6531748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    absdir="$abs_ladir"
6532748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # Remove this search path later
6533748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_append notinst_path " $abs_ladir"
6534748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  else
6535748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    dir="$ladir/$objdir"
6536748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    absdir="$abs_ladir/$objdir"
6537748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # Remove this search path later
6538748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_append notinst_path " $abs_ladir"
6539748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
6540748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi # $installed = yes
6541748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_stripname 'lib' '.la' "$laname"
6542748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	name=$func_stripname_result
6543748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
6544748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# This library was specified with -dlpreopen.
6545748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test "$pass" = dlpreopen; then
6546748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test -z "$libdir" && test "$linkmode" = prog; then
6547748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
6548748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
6549748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  case "$host" in
6550748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # special handling for platforms with PE-DLLs.
6551748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    *cygwin* | *mingw* | *cegcc* )
6552748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # Linker will automatically link against shared library if both
6553748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # static and shared are present.  Therefore, ensure we extract
6554748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # symbols from the import library if a shared library is present
6555748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # (otherwise, the dlopen module name will be incorrect).  We do
6556748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # this by putting the import library name into $newdlprefiles.
6557748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # We recover the dlopen module name by 'saving' the la file
6558748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # name in a special purpose variable, and (later) extracting the
6559748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # dlname from the la file.
6560748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      if test -n "$dlname"; then
6561748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	        func_tr_sh "$dir/$linklib"
6562748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	        eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname"
6563748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	        func_append newdlprefiles " $dir/$linklib"
6564748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      else
6565748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	        func_append newdlprefiles " $dir/$old_library"
6566748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	        # Keep a list of preopened convenience libraries to check
6567748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	        # that they are being used correctly in the link pass.
6568748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	        test -z "$libdir" && \
6569748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	          func_append dlpreconveniencelibs " $dir/$old_library"
6570748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      fi
6571748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    ;;
6572748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    * )
6573748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # Prefer using a static library (so that no silly _DYNAMIC symbols
6574748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # are required to link).
6575748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      if test -n "$old_library"; then
6576748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	        func_append newdlprefiles " $dir/$old_library"
6577748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	        # Keep a list of preopened convenience libraries to check
6578748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	        # that they are being used correctly in the link pass.
6579748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	        test -z "$libdir" && \
6580748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	          func_append dlpreconveniencelibs " $dir/$old_library"
6581748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # Otherwise, use the dlname, so that lt_dlopen finds it.
6582748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      elif test -n "$dlname"; then
6583748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	        func_append newdlprefiles " $dir/$dlname"
6584748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      else
6585748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	        func_append newdlprefiles " $dir/$linklib"
6586748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      fi
6587748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    ;;
6588748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  esac
6589748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi # $pass = dlpreopen
6590748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
6591748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test -z "$libdir"; then
6592748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # Link the convenience library
6593748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test "$linkmode" = lib; then
6594748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    deplibs="$dir/$old_library $deplibs"
6595748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  elif test "$linkmode,$pass" = "prog,link"; then
6596748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    compile_deplibs="$dir/$old_library $compile_deplibs"
6597748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
6598748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  else
6599748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    deplibs="$lib $deplibs" # used for prog,scan pass
6600748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
6601748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  continue
6602748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
6603748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
6604748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
6605748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test "$linkmode" = prog && test "$pass" != link; then
6606748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_append newlib_search_path " $ladir"
6607748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  deplibs="$lib $deplibs"
6608748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
6609748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  linkalldeplibs=no
6610748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
6611748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	     test "$build_libtool_libs" = no; then
6612748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    linkalldeplibs=yes
6613748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
6614748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
6615748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  tmp_libs=
6616748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  for deplib in $dependency_libs; do
6617748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    case $deplib in
6618748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    -L*) func_stripname '-L' '' "$deplib"
6619748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	         func_resolve_sysroot "$func_stripname_result"
6620748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	         func_append newlib_search_path " $func_resolve_sysroot_result"
6621748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		 ;;
6622748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    esac
6623748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # Need to link against all dependency_libs?
6624748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    if test "$linkalldeplibs" = yes; then
6625748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      deplibs="$deplib $deplibs"
6626748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    else
6627748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # Need to hardcode shared library paths
6628748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # or/and link against static libraries
6629748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      newdependency_libs="$deplib $newdependency_libs"
6630748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    fi
6631748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    if $opt_preserve_dup_deps ; then
6632748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      case "$tmp_libs " in
6633748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      *" $deplib "*) func_append specialdeplibs " $deplib" ;;
6634748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      esac
6635748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    fi
6636748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_append tmp_libs " $deplib"
6637748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  done # for deplib
6638748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  continue
6639748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi # $linkmode = prog...
6640748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
6641748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test "$linkmode,$pass" = "prog,link"; then
6642748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test -n "$library_names" &&
6643748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	     { { test "$prefer_static_libs" = no ||
6644748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	         test "$prefer_static_libs,$installed" = "built,yes"; } ||
6645748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	       test -z "$old_library"; }; then
6646748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # We need to hardcode the library path
6647748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
6648748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # Make sure the rpath contains only unique directories.
6649748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      case "$temp_rpath:" in
6650748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      *"$absdir:"*) ;;
6651748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      *) func_append temp_rpath "$absdir:" ;;
6652748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      esac
6653748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    fi
6654748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
6655748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # Hardcode the library path.
6656748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # Skip directories that are in the system default run-time
6657748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # search path.
6658748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    case " $sys_lib_dlsearch_path " in
6659748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    *" $absdir "*) ;;
6660748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    *)
6661748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      case "$compile_rpath " in
6662748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      *" $absdir "*) ;;
6663748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      *) func_append compile_rpath " $absdir" ;;
6664748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      esac
6665748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      ;;
6666748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    esac
6667748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    case " $sys_lib_dlsearch_path " in
6668748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    *" $libdir "*) ;;
6669748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    *)
6670748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      case "$finalize_rpath " in
6671748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      *" $libdir "*) ;;
6672748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      *) func_append finalize_rpath " $libdir" ;;
6673748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      esac
6674748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      ;;
6675748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    esac
6676748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi # $linkmode,$pass = prog,link...
6677748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
6678748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test "$alldeplibs" = yes &&
6679748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	     { test "$deplibs_check_method" = pass_all ||
6680748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	       { test "$build_libtool_libs" = yes &&
6681748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		 test -n "$library_names"; }; }; then
6682748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # We only need to search for static libraries
6683748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    continue
6684748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
6685748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
6686748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
6687748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	link_static=no # Whether the deplib will be linked statically
6688748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	use_static_libs=$prefer_static_libs
6689748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test "$use_static_libs" = built && test "$installed" = yes; then
6690748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  use_static_libs=no
6691748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
6692748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test -n "$library_names" &&
6693748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	   { test "$use_static_libs" = no || test -z "$old_library"; }; then
6694748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  case $host in
6695748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *cygwin* | *mingw* | *cegcc*)
6696748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # No point in relinking DLLs because paths are not encoded
6697748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      func_append notinst_deplibs " $lib"
6698748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      need_relink=no
6699748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    ;;
6700748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *)
6701748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    if test "$installed" = no; then
6702748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      func_append notinst_deplibs " $lib"
6703748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      need_relink=yes
6704748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    fi
6705748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    ;;
6706748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  esac
6707748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # This is a shared library
6708748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
6709748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # Warn about portability, can't link against -module's on some
6710748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # systems (darwin).  Don't bleat about dlopened modules though!
6711748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  dlopenmodule=""
6712748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  for dlpremoduletest in $dlprefiles; do
6713748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    if test "X$dlpremoduletest" = "X$lib"; then
6714748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      dlopenmodule="$dlpremoduletest"
6715748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      break
6716748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    fi
6717748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  done
6718748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
6719748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    echo
6720748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    if test "$linkmode" = prog; then
6721748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      $ECHO "*** Warning: Linking the executable $output against the loadable module"
6722748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    else
6723748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      $ECHO "*** Warning: Linking the shared library $output against the loadable module"
6724748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    fi
6725748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    $ECHO "*** $linklib is not portable!"
6726748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
6727748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test "$linkmode" = lib &&
6728748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	     test "$hardcode_into_libs" = yes; then
6729748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # Hardcode the library path.
6730748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # Skip directories that are in the system default run-time
6731748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # search path.
6732748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    case " $sys_lib_dlsearch_path " in
6733748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    *" $absdir "*) ;;
6734748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    *)
6735748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      case "$compile_rpath " in
6736748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      *" $absdir "*) ;;
6737748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      *) func_append compile_rpath " $absdir" ;;
6738748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      esac
6739748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      ;;
6740748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    esac
6741748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    case " $sys_lib_dlsearch_path " in
6742748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    *" $libdir "*) ;;
6743748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    *)
6744748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      case "$finalize_rpath " in
6745748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      *" $libdir "*) ;;
6746748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      *) func_append finalize_rpath " $libdir" ;;
6747748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      esac
6748748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      ;;
6749748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    esac
6750748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
6751748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
6752748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test -n "$old_archive_from_expsyms_cmds"; then
6753748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # figure out the soname
6754748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    set dummy $library_names
6755748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    shift
6756748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    realname="$1"
6757748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    shift
6758748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    libname=`eval "\\$ECHO \"$libname_spec\""`
6759748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # use dlname if we got it. it's perfectly good, no?
6760748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    if test -n "$dlname"; then
6761748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      soname="$dlname"
6762748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    elif test -n "$soname_spec"; then
6763748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # bleh windows
6764748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      case $host in
6765748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      *cygwin* | mingw* | *cegcc*)
6766748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	        func_arith $current - $age
6767748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		major=$func_arith_result
6768748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		versuffix="-$major"
6769748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		;;
6770748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      esac
6771748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      eval soname=\"$soname_spec\"
6772748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    else
6773748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      soname="$realname"
6774748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    fi
6775748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
6776748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # Make a new name for the extract_expsyms_cmds to use
6777748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    soroot="$soname"
6778748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_basename "$soroot"
6779748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    soname="$func_basename_result"
6780748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_stripname 'lib' '.dll' "$soname"
6781748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    newlib=libimp-$func_stripname_result.a
6782748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
6783748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # If the library has no export list, then create one now
6784748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    if test -f "$output_objdir/$soname-def"; then :
6785748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    else
6786748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      func_verbose "extracting exported symbol list from \`$soname'"
6787748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
6788748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    fi
6789748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
6790748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # Create $newlib
6791748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    if test -f "$output_objdir/$newlib"; then :; else
6792748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      func_verbose "generating import library for \`$soname'"
6793748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
6794748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    fi
6795748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # make sure the library variables are pointing to the new library
6796748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    dir=$output_objdir
6797748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    linklib=$newlib
6798748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi # test -n "$old_archive_from_expsyms_cmds"
6799748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
6800748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test "$linkmode" = prog || test "$opt_mode" != relink; then
6801748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    add_shlibpath=
6802748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    add_dir=
6803748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    add=
6804748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    lib_linked=yes
6805748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    case $hardcode_action in
6806748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    immediate | unsupported)
6807748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      if test "$hardcode_direct" = no; then
6808748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		add="$dir/$linklib"
6809748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		case $host in
6810748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
6811748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  *-*-sysv4*uw2*) add_dir="-L$dir" ;;
6812748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
6813748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    *-*-unixware7*) add_dir="-L$dir" ;;
6814748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  *-*-darwin* )
6815748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    # if the lib is a (non-dlopened) module then we can not
6816748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    # link against it, someone is ignoring the earlier warnings
6817748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    if /usr/bin/file -L $add 2> /dev/null |
6818748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			 $GREP ": [^:]* bundle" >/dev/null ; then
6819748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		      if test "X$dlopenmodule" != "X$lib"; then
6820748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			$ECHO "*** Warning: lib $linklib is a module, not a shared library"
6821748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			if test -z "$old_library" ; then
6822748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			  echo
6823748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			  echo "*** And there doesn't seem to be a static archive available"
6824748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			  echo "*** The link will probably fail, sorry"
6825748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			else
6826748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			  add="$dir/$old_library"
6827748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			fi
6828748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		      elif test -n "$old_library"; then
6829748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			add="$dir/$old_library"
6830748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		      fi
6831748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    fi
6832748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		esac
6833748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      elif test "$hardcode_minus_L" = no; then
6834748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		case $host in
6835748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		*-*-sunos*) add_shlibpath="$dir" ;;
6836748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		esac
6837748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		add_dir="-L$dir"
6838748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		add="-l$name"
6839748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      elif test "$hardcode_shlibpath_var" = no; then
6840748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		add_shlibpath="$dir"
6841748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		add="-l$name"
6842748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      else
6843748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		lib_linked=no
6844748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      fi
6845748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      ;;
6846748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    relink)
6847748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      if test "$hardcode_direct" = yes &&
6848748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	         test "$hardcode_direct_absolute" = no; then
6849748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		add="$dir/$linklib"
6850748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      elif test "$hardcode_minus_L" = yes; then
6851748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		add_dir="-L$absdir"
6852748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		# Try looking first in the location we're being installed to.
6853748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		if test -n "$inst_prefix_dir"; then
6854748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  case $libdir in
6855748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    [\\/]*)
6856748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		      func_append add_dir " -L$inst_prefix_dir$libdir"
6857748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		      ;;
6858748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  esac
6859748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		fi
6860748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		add="-l$name"
6861748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      elif test "$hardcode_shlibpath_var" = yes; then
6862748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		add_shlibpath="$dir"
6863748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		add="-l$name"
6864748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      else
6865748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		lib_linked=no
6866748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      fi
6867748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      ;;
6868748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    *) lib_linked=no ;;
6869748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    esac
6870748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
6871748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    if test "$lib_linked" != yes; then
6872748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      func_fatal_configuration "unsupported hardcode properties"
6873748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    fi
6874748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
6875748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    if test -n "$add_shlibpath"; then
6876748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      case :$compile_shlibpath: in
6877748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      *":$add_shlibpath:"*) ;;
6878748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      *) func_append compile_shlibpath "$add_shlibpath:" ;;
6879748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      esac
6880748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    fi
6881748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    if test "$linkmode" = prog; then
6882748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
6883748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
6884748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    else
6885748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
6886748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      test -n "$add" && deplibs="$add $deplibs"
6887748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      if test "$hardcode_direct" != yes &&
6888748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		 test "$hardcode_minus_L" != yes &&
6889748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		 test "$hardcode_shlibpath_var" = yes; then
6890748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		case :$finalize_shlibpath: in
6891748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		*":$libdir:"*) ;;
6892748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		*) func_append finalize_shlibpath "$libdir:" ;;
6893748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		esac
6894748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      fi
6895748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    fi
6896748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
6897748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
6898748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test "$linkmode" = prog || test "$opt_mode" = relink; then
6899748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    add_shlibpath=
6900748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    add_dir=
6901748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    add=
6902748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # Finalize command for both is simple: just hardcode it.
6903748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    if test "$hardcode_direct" = yes &&
6904748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	       test "$hardcode_direct_absolute" = no; then
6905748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      add="$libdir/$linklib"
6906748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    elif test "$hardcode_minus_L" = yes; then
6907748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      add_dir="-L$libdir"
6908748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      add="-l$name"
6909748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    elif test "$hardcode_shlibpath_var" = yes; then
6910748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      case :$finalize_shlibpath: in
6911748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      *":$libdir:"*) ;;
6912748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      *) func_append finalize_shlibpath "$libdir:" ;;
6913748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      esac
6914748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      add="-l$name"
6915748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    elif test "$hardcode_automatic" = yes; then
6916748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      if test -n "$inst_prefix_dir" &&
6917748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		 test -f "$inst_prefix_dir$libdir/$linklib" ; then
6918748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		add="$inst_prefix_dir$libdir/$linklib"
6919748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      else
6920748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		add="$libdir/$linklib"
6921748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      fi
6922748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    else
6923748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # We cannot seem to hardcode it, guess we'll fake it.
6924748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      add_dir="-L$libdir"
6925748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # Try looking first in the location we're being installed to.
6926748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      if test -n "$inst_prefix_dir"; then
6927748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		case $libdir in
6928748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  [\\/]*)
6929748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    func_append add_dir " -L$inst_prefix_dir$libdir"
6930748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    ;;
6931748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		esac
6932748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      fi
6933748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      add="-l$name"
6934748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    fi
6935748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
6936748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    if test "$linkmode" = prog; then
6937748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
6938748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
6939748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    else
6940748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
6941748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      test -n "$add" && deplibs="$add $deplibs"
6942748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    fi
6943748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
6944748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	elif test "$linkmode" = prog; then
6945748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # Here we assume that one of hardcode_direct or hardcode_minus_L
6946748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # is not unsupported.  This is valid on all known static and
6947748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # shared platforms.
6948748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test "$hardcode_direct" != unsupported; then
6949748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    test -n "$old_library" && linklib="$old_library"
6950748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    compile_deplibs="$dir/$linklib $compile_deplibs"
6951748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
6952748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  else
6953748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    compile_deplibs="-l$name -L$dir $compile_deplibs"
6954748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
6955748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
6956748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	elif test "$build_libtool_libs" = yes; then
6957748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # Not a shared library
6958748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test "$deplibs_check_method" != pass_all; then
6959748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # We're trying link a shared library against a static one
6960748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # but the system doesn't support it.
6961748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
6962748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # Just print a warning and add the library to dependency_libs so
6963748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # that the program can be linked against the static library.
6964748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    echo
6965748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    $ECHO "*** Warning: This system can not link to static lib archive $lib."
6966748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    echo "*** I have the capability to make that library automatically link in when"
6967748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    echo "*** you link to this library.  But I can only do this if you have a"
6968748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    echo "*** shared version of the library, which you do not appear to have."
6969748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    if test "$module" = yes; then
6970748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      echo "*** But as you try to build a module library, libtool will still create "
6971748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      echo "*** a static module, that should work as long as the dlopening application"
6972748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
6973748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      if test -z "$global_symbol_pipe"; then
6974748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		echo
6975748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		echo "*** However, this would only work if libtool was able to extract symbol"
6976748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
6977748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		echo "*** not find such a program.  So, this module is probably useless."
6978748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		echo "*** \`nm' from GNU binutils and a full rebuild may help."
6979748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      fi
6980748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      if test "$build_old_libs" = no; then
6981748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		build_libtool_libs=module
6982748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		build_old_libs=yes
6983748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      else
6984748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		build_libtool_libs=no
6985748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      fi
6986748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    fi
6987748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  else
6988748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    deplibs="$dir/$old_library $deplibs"
6989748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    link_static=yes
6990748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
6991748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi # link shared/static library?
6992748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
6993748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test "$linkmode" = lib; then
6994748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test -n "$dependency_libs" &&
6995748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	     { test "$hardcode_into_libs" != yes ||
6996748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	       test "$build_old_libs" = yes ||
6997748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	       test "$link_static" = yes; }; then
6998748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # Extract -R from dependency_libs
6999748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    temp_deplibs=
7000748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    for libdir in $dependency_libs; do
7001748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      case $libdir in
7002748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      -R*) func_stripname '-R' '' "$libdir"
7003748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	           temp_xrpath=$func_stripname_result
7004748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		   case " $xrpath " in
7005748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		   *" $temp_xrpath "*) ;;
7006748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		   *) func_append xrpath " $temp_xrpath";;
7007748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		   esac;;
7008748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      *) func_append temp_deplibs " $libdir";;
7009748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      esac
7010748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    done
7011748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    dependency_libs="$temp_deplibs"
7012748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
7013748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
7014748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_append newlib_search_path " $absdir"
7015748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # Link against this library
7016748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
7017748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # ... and its dependency_libs
7018748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  tmp_libs=
7019748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  for deplib in $dependency_libs; do
7020748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    newdependency_libs="$deplib $newdependency_libs"
7021748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    case $deplib in
7022748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat              -L*) func_stripname '-L' '' "$deplib"
7023748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat                   func_resolve_sysroot "$func_stripname_result";;
7024748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat              *) func_resolve_sysroot "$deplib" ;;
7025748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat            esac
7026748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    if $opt_preserve_dup_deps ; then
7027748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      case "$tmp_libs " in
7028748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      *" $func_resolve_sysroot_result "*)
7029748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat                func_append specialdeplibs " $func_resolve_sysroot_result" ;;
7030748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      esac
7031748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    fi
7032748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_append tmp_libs " $func_resolve_sysroot_result"
7033748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  done
7034748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
7035748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test "$link_all_deplibs" != no; then
7036748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # Add the search paths of all dependency libraries
7037748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    for deplib in $dependency_libs; do
7038748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      path=
7039748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      case $deplib in
7040748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      -L*) path="$deplib" ;;
7041748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      *.la)
7042748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	        func_resolve_sysroot "$deplib"
7043748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	        deplib=$func_resolve_sysroot_result
7044748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	        func_dirname "$deplib" "" "."
7045748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		dir=$func_dirname_result
7046748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		# We need an absolute path.
7047748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		case $dir in
7048748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
7049748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		*)
7050748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  absdir=`cd "$dir" && pwd`
7051748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  if test -z "$absdir"; then
7052748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    func_warning "cannot determine absolute directory name of \`$dir'"
7053748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    absdir="$dir"
7054748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  fi
7055748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  ;;
7056748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		esac
7057748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		if $GREP "^installed=no" $deplib > /dev/null; then
7058748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		case $host in
7059748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		*-*-darwin*)
7060748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  depdepl=
7061748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
7062748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  if test -n "$deplibrary_names" ; then
7063748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    for tmp in $deplibrary_names ; do
7064748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		      depdepl=$tmp
7065748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    done
7066748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    if test -f "$absdir/$objdir/$depdepl" ; then
7067748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		      depdepl="$absdir/$objdir/$depdepl"
7068748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		      darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
7069748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat                      if test -z "$darwin_install_name"; then
7070748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat                          darwin_install_name=`${OTOOL64} -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
7071748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat                      fi
7072748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		      func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
7073748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		      func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}"
7074748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		      path=
7075748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    fi
7076748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  fi
7077748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  ;;
7078748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		*)
7079748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  path="-L$absdir/$objdir"
7080748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  ;;
7081748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		esac
7082748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		else
7083748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
7084748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  test -z "$libdir" && \
7085748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    func_fatal_error "\`$deplib' is not a valid libtool archive"
7086748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  test "$absdir" != "$libdir" && \
7087748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    func_warning "\`$deplib' seems to be moved"
7088748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
7089748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  path="-L$absdir"
7090748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		fi
7091748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		;;
7092748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      esac
7093748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      case " $deplibs " in
7094748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      *" $path "*) ;;
7095748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      *) deplibs="$path $deplibs" ;;
7096748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      esac
7097748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    done
7098748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi # link_all_deplibs != no
7099748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi # linkmode = lib
7100748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      done # for deplib in $libs
7101748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test "$pass" = link; then
7102748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test "$linkmode" = "prog"; then
7103748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
7104748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
7105748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	else
7106748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
7107748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
7108748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
7109748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      dependency_libs="$newdependency_libs"
7110748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test "$pass" = dlpreopen; then
7111748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Link the dlpreopened libraries before other libraries
7112748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	for deplib in $save_deplibs; do
7113748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  deplibs="$deplib $deplibs"
7114748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	done
7115748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
7116748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test "$pass" != dlopen; then
7117748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test "$pass" != conv; then
7118748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # Make sure lib_search_path contains only unique directories.
7119748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  lib_search_path=
7120748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  for dir in $newlib_search_path; do
7121748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    case "$lib_search_path " in
7122748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    *" $dir "*) ;;
7123748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    *) func_append lib_search_path " $dir" ;;
7124748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    esac
7125748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  done
7126748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  newlib_search_path=
7127748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
7128748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
7129748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test "$linkmode,$pass" != "prog,link"; then
7130748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  vars="deplibs"
7131748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	else
7132748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  vars="compile_deplibs finalize_deplibs"
7133748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
7134748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	for var in $vars dependency_libs; do
7135748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # Add libraries to $var in reverse order
7136748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  eval tmp_libs=\"\$$var\"
7137748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  new_libs=
7138748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  for deplib in $tmp_libs; do
7139748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # FIXME: Pedantically, this is the right thing to do, so
7140748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    #        that some nasty dependency loop isn't accidentally
7141748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    #        broken:
7142748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    #new_libs="$deplib $new_libs"
7143748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # Pragmatically, this seems to cause very few problems in
7144748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # practice:
7145748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    case $deplib in
7146748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    -L*) new_libs="$deplib $new_libs" ;;
7147748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    -R*) ;;
7148748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    *)
7149748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # And here is the reason: when a library appears more
7150748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # than once as an explicit dependence of a library, or
7151748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # is implicitly linked in more than once by the
7152748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # compiler, it is considered special, and multiple
7153748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # occurrences thereof are not removed.  Compare this
7154748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # with having the same library being listed as a
7155748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # dependency of multiple other libraries: in this case,
7156748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # we know (pedantically, we assume) the library does not
7157748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # need to be listed more than once, so we keep only the
7158748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # last copy.  This is not always right, but it is rare
7159748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # enough that we require users that really mean to play
7160748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # such unportable linking tricks to link the library
7161748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # using -Wl,-lname, so that libtool does not consider it
7162748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # for duplicate removal.
7163748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      case " $specialdeplibs " in
7164748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
7165748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      *)
7166748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		case " $new_libs " in
7167748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		*" $deplib "*) ;;
7168748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		*) new_libs="$deplib $new_libs" ;;
7169748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		esac
7170748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		;;
7171748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      esac
7172748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      ;;
7173748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    esac
7174748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  done
7175748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  tmp_libs=
7176748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  for deplib in $new_libs; do
7177748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    case $deplib in
7178748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    -L*)
7179748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      case " $tmp_libs " in
7180748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      *" $deplib "*) ;;
7181748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      *) func_append tmp_libs " $deplib" ;;
7182748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      esac
7183748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      ;;
7184748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    *) func_append tmp_libs " $deplib" ;;
7185748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    esac
7186748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  done
7187748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  eval $var=\"$tmp_libs\"
7188748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	done # for var
7189748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
7190748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Last step: remove runtime libs from dependency_libs
7191748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # (they stay in deplibs)
7192748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      tmp_libs=
7193748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      for i in $dependency_libs ; do
7194748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	case " $predeps $postdeps $compiler_lib_search_path " in
7195748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	*" $i "*)
7196748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  i=""
7197748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
7198748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	esac
7199748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test -n "$i" ; then
7200748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_append tmp_libs " $i"
7201748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
7202748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      done
7203748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      dependency_libs=$tmp_libs
7204748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    done # for pass
7205748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    if test "$linkmode" = prog; then
7206748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      dlfiles="$newdlfiles"
7207748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    fi
7208748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    if test "$linkmode" = prog || test "$linkmode" = lib; then
7209748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      dlprefiles="$newdlprefiles"
7210748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    fi
7211748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
7212748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    case $linkmode in
7213748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    oldlib)
7214748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
7215748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_warning "\`-dlopen' is ignored for archives"
7216748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
7217748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
7218748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      case " $deplibs" in
7219748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      *\ -l* | *\ -L*)
7220748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_warning "\`-l' and \`-L' are ignored for archives" ;;
7221748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      esac
7222748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
7223748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      test -n "$rpath" && \
7224748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_warning "\`-rpath' is ignored for archives"
7225748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
7226748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      test -n "$xrpath" && \
7227748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_warning "\`-R' is ignored for archives"
7228748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
7229748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      test -n "$vinfo" && \
7230748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_warning "\`-version-info/-version-number' is ignored for archives"
7231748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
7232748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      test -n "$release" && \
7233748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_warning "\`-release' is ignored for archives"
7234748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
7235748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      test -n "$export_symbols$export_symbols_regex" && \
7236748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_warning "\`-export-symbols' is ignored for archives"
7237748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
7238748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Now set the variables for building old libraries.
7239748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      build_libtool_libs=no
7240748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      oldlibs="$output"
7241748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_append objs "$old_deplibs"
7242748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      ;;
7243748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
7244748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    lib)
7245748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Make sure we only generate libraries of the form `libNAME.la'.
7246748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      case $outputname in
7247748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      lib*)
7248748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_stripname 'lib' '.la' "$outputname"
7249748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	name=$func_stripname_result
7250748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	eval shared_ext=\"$shrext_cmds\"
7251748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	eval libname=\"$libname_spec\"
7252748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
7253748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      *)
7254748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	test "$module" = no && \
7255748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_fatal_help "libtool library \`$output' must begin with \`lib'"
7256748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
7257748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test "$need_lib_prefix" != no; then
7258748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # Add the "lib" prefix for modules if required
7259748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_stripname '' '.la' "$outputname"
7260748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  name=$func_stripname_result
7261748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  eval shared_ext=\"$shrext_cmds\"
7262748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  eval libname=\"$libname_spec\"
7263748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	else
7264748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_stripname '' '.la' "$outputname"
7265748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  libname=$func_stripname_result
7266748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
7267748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
7268748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      esac
7269748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
7270748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test -n "$objs"; then
7271748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test "$deplibs_check_method" != pass_all; then
7272748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
7273748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	else
7274748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  echo
7275748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
7276748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  $ECHO "*** objects $objs is not portable!"
7277748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_append libobjs " $objs"
7278748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
7279748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
7280748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
7281748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      test "$dlself" != no && \
7282748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_warning "\`-dlopen self' is ignored for libtool libraries"
7283748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
7284748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      set dummy $rpath
7285748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      shift
7286748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      test "$#" -gt 1 && \
7287748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_warning "ignoring multiple \`-rpath's for a libtool library"
7288748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
7289748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      install_libdir="$1"
7290748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
7291748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      oldlibs=
7292748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test -z "$rpath"; then
7293748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test "$build_libtool_libs" = yes; then
7294748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # Building a libtool convenience library.
7295748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # Some compilers have problems with a `.al' extension so
7296748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # convenience libraries should have the same extension an
7297748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # archive normally would.
7298748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
7299748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  build_libtool_libs=convenience
7300748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  build_old_libs=yes
7301748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
7302748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
7303748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	test -n "$vinfo" && \
7304748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
7305748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
7306748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	test -n "$release" && \
7307748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_warning "\`-release' is ignored for convenience libraries"
7308748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      else
7309748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
7310748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Parse the version information argument.
7311748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	save_ifs="$IFS"; IFS=':'
7312748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	set dummy $vinfo 0 0 0
7313748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	shift
7314748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	IFS="$save_ifs"
7315748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
7316748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	test -n "$7" && \
7317748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_fatal_help "too many parameters to \`-version-info'"
7318748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
7319748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# convert absolute version numbers to libtool ages
7320748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# this retains compatibility with .la files and attempts
7321748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# to make the code below a bit more comprehensible
7322748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
7323748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	case $vinfo_number in
7324748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	yes)
7325748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  number_major="$1"
7326748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  number_minor="$2"
7327748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  number_revision="$3"
7328748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  #
7329748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # There are really only two kinds -- those that
7330748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # use the current revision as the major version
7331748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # and those that subtract age and use age as
7332748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # a minor version.  But, then there is irix
7333748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # which has an extra 1 added just for fun
7334748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  #
7335748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  case $version_type in
7336748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # correct linux to gnu/linux during the next big refactor
7337748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  darwin|linux|osf|windows|none)
7338748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_arith $number_major + $number_minor
7339748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    current=$func_arith_result
7340748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    age="$number_minor"
7341748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    revision="$number_revision"
7342748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    ;;
7343748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  freebsd-aout|freebsd-elf|qnx|sunos)
7344748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    current="$number_major"
7345748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    revision="$number_minor"
7346748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    age="0"
7347748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    ;;
7348748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  irix|nonstopux)
7349748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_arith $number_major + $number_minor
7350748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    current=$func_arith_result
7351748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    age="$number_minor"
7352748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    revision="$number_minor"
7353748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    lt_irix_increment=no
7354748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    ;;
7355748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *)
7356748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_fatal_configuration "$modename: unknown library version type \`$version_type'"
7357748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    ;;
7358748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  esac
7359748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
7360748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	no)
7361748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  current="$1"
7362748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  revision="$2"
7363748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  age="$3"
7364748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
7365748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	esac
7366748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
7367748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Check that each of the things are valid numbers.
7368748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	case $current in
7369748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	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]) ;;
7370748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	*)
7371748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_error "CURRENT \`$current' must be a nonnegative integer"
7372748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_fatal_error "\`$vinfo' is not valid version information"
7373748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
7374748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	esac
7375748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
7376748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	case $revision in
7377748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	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]) ;;
7378748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	*)
7379748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_error "REVISION \`$revision' must be a nonnegative integer"
7380748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_fatal_error "\`$vinfo' is not valid version information"
7381748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
7382748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	esac
7383748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
7384748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	case $age in
7385748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	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]) ;;
7386748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	*)
7387748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_error "AGE \`$age' must be a nonnegative integer"
7388748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_fatal_error "\`$vinfo' is not valid version information"
7389748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
7390748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	esac
7391748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
7392748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test "$age" -gt "$current"; then
7393748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_error "AGE \`$age' is greater than the current interface number \`$current'"
7394748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_fatal_error "\`$vinfo' is not valid version information"
7395748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
7396748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
7397748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Calculate the version variables.
7398748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	major=
7399748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	versuffix=
7400748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	verstring=
7401748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	case $version_type in
7402748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	none) ;;
7403748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
7404748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	darwin)
7405748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # Like Linux, but with the current version available in
7406748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # verstring for coding it into the library header
7407748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_arith $current - $age
7408748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  major=.$func_arith_result
7409748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  versuffix="$major.$age.$revision"
7410748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # Darwin ld doesn't like 0 for these options...
7411748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_arith $current + 1
7412748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  minor_current=$func_arith_result
7413748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
7414748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
7415748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
7416748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
7417748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	freebsd-aout)
7418748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  major=".$current"
7419748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  versuffix=".$current.$revision";
7420748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
7421748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
7422748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	freebsd-elf)
7423748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  major=".$current"
7424748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  versuffix=".$current"
7425748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
7426748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
7427748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	irix | nonstopux)
7428748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test "X$lt_irix_increment" = "Xno"; then
7429748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_arith $current - $age
7430748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  else
7431748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_arith $current - $age + 1
7432748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
7433748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  major=$func_arith_result
7434748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
7435748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  case $version_type in
7436748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    nonstopux) verstring_prefix=nonstopux ;;
7437748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    *)         verstring_prefix=sgi ;;
7438748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  esac
7439748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  verstring="$verstring_prefix$major.$revision"
7440748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
7441748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # Add in all the interfaces that we are compatible with.
7442748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  loop=$revision
7443748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  while test "$loop" -ne 0; do
7444748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_arith $revision - $loop
7445748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    iface=$func_arith_result
7446748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_arith $loop - 1
7447748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    loop=$func_arith_result
7448748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    verstring="$verstring_prefix$major.$iface:$verstring"
7449748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  done
7450748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
7451748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # Before this point, $major must not contain `.'.
7452748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  major=.$major
7453748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  versuffix="$major.$revision"
7454748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
7455748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
7456748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	linux) # correct to gnu/linux during the next big refactor
7457748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_arith $current - $age
7458748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  major=.$func_arith_result
7459748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  versuffix="$major.$age.$revision"
7460748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
7461748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
7462748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	osf)
7463748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_arith $current - $age
7464748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  major=.$func_arith_result
7465748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  versuffix=".$current.$age.$revision"
7466748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  verstring="$current.$age.$revision"
7467748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
7468748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # Add in all the interfaces that we are compatible with.
7469748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  loop=$age
7470748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  while test "$loop" -ne 0; do
7471748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_arith $current - $loop
7472748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    iface=$func_arith_result
7473748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_arith $loop - 1
7474748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    loop=$func_arith_result
7475748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    verstring="$verstring:${iface}.0"
7476748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  done
7477748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
7478748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # Make executables depend on our current version.
7479748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_append verstring ":${current}.0"
7480748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
7481748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
7482748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	qnx)
7483748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  major=".$current"
7484748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  versuffix=".$current"
7485748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
7486748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
7487748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	sunos)
7488748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  major=".$current"
7489748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  versuffix=".$current.$revision"
7490748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
7491748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
7492748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	windows)
7493748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # Use '-' rather than '.', since we only want one
7494748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # extension on DOS 8.3 filesystems.
7495748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_arith $current - $age
7496748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  major=$func_arith_result
7497748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  versuffix="-$major"
7498748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
7499748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
7500748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	*)
7501748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_fatal_configuration "unknown library version type \`$version_type'"
7502748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
7503748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	esac
7504748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
7505748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Clear the version info if we defaulted, and they specified a release.
7506748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test -z "$vinfo" && test -n "$release"; then
7507748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  major=
7508748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  case $version_type in
7509748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  darwin)
7510748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # we can't check for "0.0" in archive_cmds due to quoting
7511748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # problems, so we reset it completely
7512748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    verstring=
7513748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    ;;
7514748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *)
7515748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    verstring="0.0"
7516748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    ;;
7517748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  esac
7518748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test "$need_version" = no; then
7519748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    versuffix=
7520748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  else
7521748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    versuffix=".0.0"
7522748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
7523748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
7524748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
7525748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Remove version info from name if versioning should be avoided
7526748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test "$avoid_version" = yes && test "$need_version" = no; then
7527748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  major=
7528748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  versuffix=
7529748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  verstring=""
7530748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
7531748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
7532748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Check to see if the archive will have undefined symbols.
7533748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test "$allow_undefined" = yes; then
7534748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test "$allow_undefined_flag" = unsupported; then
7535748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_warning "undefined symbols not allowed in $host shared libraries"
7536748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    build_libtool_libs=no
7537748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    build_old_libs=yes
7538748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
7539748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	else
7540748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # Don't allow undefined symbols.
7541748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  allow_undefined_flag="$no_undefined_flag"
7542748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
7543748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
7544748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
7545748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
7546748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_generate_dlsyms "$libname" "$libname" "yes"
7547748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_append libobjs " $symfileobj"
7548748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      test "X$libobjs" = "X " && libobjs=
7549748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
7550748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test "$opt_mode" != relink; then
7551748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Remove our outputs, but don't remove object files since they
7552748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# may have been created when compiling PIC objects.
7553748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	removelist=
7554748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	tempremovelist=`$ECHO "$output_objdir/*"`
7555748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	for p in $tempremovelist; do
7556748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  case $p in
7557748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    *.$objext | *.gcno)
7558748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	       ;;
7559748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
7560748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	       if test "X$precious_files_regex" != "X"; then
7561748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		 if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
7562748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		 then
7563748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		   continue
7564748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		 fi
7565748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	       fi
7566748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	       func_append removelist " $p"
7567748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	       ;;
7568748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    *) ;;
7569748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  esac
7570748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	done
7571748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	test -n "$removelist" && \
7572748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_show_eval "${RM}r \$removelist"
7573748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
7574748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
7575748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Now set the variables for building old libraries.
7576748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
7577748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_append oldlibs " $output_objdir/$libname.$libext"
7578748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
7579748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Transform .lo files to .o files.
7580748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP`
7581748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
7582748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
7583748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Eliminate all temporary directories.
7584748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      #for path in $notinst_path; do
7585748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      #	lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"`
7586748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      #	deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"`
7587748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      #	dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"`
7588748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      #done
7589748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
7590748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test -n "$xrpath"; then
7591748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# If the user specified any rpath flags, then add them.
7592748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	temp_xrpath=
7593748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	for libdir in $xrpath; do
7594748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_replace_sysroot "$libdir"
7595748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_append temp_xrpath " -R$func_replace_sysroot_result"
7596748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  case "$finalize_rpath " in
7597748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *" $libdir "*) ;;
7598748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *) func_append finalize_rpath " $libdir" ;;
7599748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  esac
7600748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	done
7601748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
7602748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  dependency_libs="$temp_xrpath $dependency_libs"
7603748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
7604748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
7605748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
7606748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Make sure dlfiles contains only unique files that won't be dlpreopened
7607748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      old_dlfiles="$dlfiles"
7608748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      dlfiles=
7609748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      for lib in $old_dlfiles; do
7610748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	case " $dlprefiles $dlfiles " in
7611748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	*" $lib "*) ;;
7612748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	*) func_append dlfiles " $lib" ;;
7613748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	esac
7614748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      done
7615748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
7616748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Make sure dlprefiles contains only unique files
7617748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      old_dlprefiles="$dlprefiles"
7618748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      dlprefiles=
7619748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      for lib in $old_dlprefiles; do
7620748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	case "$dlprefiles " in
7621748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	*" $lib "*) ;;
7622748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	*) func_append dlprefiles " $lib" ;;
7623748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	esac
7624748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      done
7625748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
7626748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test "$build_libtool_libs" = yes; then
7627748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test -n "$rpath"; then
7628748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  case $host in
7629748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*)
7630748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # these systems don't actually have a c library (as such)!
7631748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    ;;
7632748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *-*-rhapsody* | *-*-darwin1.[012])
7633748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # Rhapsody C library is in the System framework
7634748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_append deplibs " System.ltframework"
7635748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    ;;
7636748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *-*-netbsd*)
7637748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # Don't link with libc until the a.out ld.so is fixed.
7638748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    ;;
7639748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
7640748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # Do not include libc due to us having libc/libc_r.
7641748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    ;;
7642748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *-*-sco3.2v5* | *-*-sco5v6*)
7643748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # Causes problems with __ctype
7644748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    ;;
7645748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
7646748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # Compiler inserts libc in the correct place for threads to work
7647748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    ;;
7648748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *)
7649748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # Add libc to deplibs on all other systems if necessary.
7650748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    if test "$build_libtool_need_lc" = "yes"; then
7651748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      func_append deplibs " -lc"
7652748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    fi
7653748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    ;;
7654748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  esac
7655748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
7656748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
7657748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Transform deplibs into only deplibs that can be linked in shared.
7658748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	name_save=$name
7659748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	libname_save=$libname
7660748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	release_save=$release
7661748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	versuffix_save=$versuffix
7662748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	major_save=$major
7663748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# I'm not sure if I'm treating the release correctly.  I think
7664748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# release should show up in the -l (ie -lgmp5) so we don't want to
7665748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# add it in twice.  Is that correct?
7666748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	release=""
7667748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	versuffix=""
7668748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	major=""
7669748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	newdeplibs=
7670748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	droppeddeps=no
7671748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	case $deplibs_check_method in
7672748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	pass_all)
7673748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # Don't check for shared/static.  Everything works.
7674748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # This might be a little naive.  We might want to check
7675748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # whether the library exists or not.  But this is on
7676748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # osf3 & osf4 and I'm not really sure... Just
7677748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # implementing what was already the behavior.
7678748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  newdeplibs=$deplibs
7679748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
7680748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	test_compile)
7681748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # This code stresses the "libraries are programs" paradigm to its
7682748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # limits. Maybe even breaks it.  We compile a program, linking it
7683748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # against the deplibs as a proxy for the library.  Then we can check
7684748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # whether they linked in statically or dynamically with ldd.
7685748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  $opt_dry_run || $RM conftest.c
7686748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  cat > conftest.c <<EOF
7687748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  int main() { return 0; }
7688748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratEOF
7689748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  $opt_dry_run || $RM conftest
7690748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
7691748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    ldd_output=`ldd conftest`
7692748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    for i in $deplibs; do
7693748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      case $i in
7694748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      -l*)
7695748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		func_stripname -l '' "$i"
7696748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		name=$func_stripname_result
7697748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
7698748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  case " $predeps $postdeps " in
7699748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  *" $i "*)
7700748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    func_append newdeplibs " $i"
7701748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    i=""
7702748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    ;;
7703748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  esac
7704748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		fi
7705748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		if test -n "$i" ; then
7706748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  libname=`eval "\\$ECHO \"$libname_spec\""`
7707748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
7708748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  set dummy $deplib_matches; shift
7709748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  deplib_match=$1
7710748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
7711748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    func_append newdeplibs " $i"
7712748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  else
7713748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    droppeddeps=yes
7714748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    echo
7715748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    $ECHO "*** Warning: dynamic linker does not accept needed library $i."
7716748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    echo "*** I have the capability to make that library automatically link in when"
7717748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    echo "*** you link to this library.  But I can only do this if you have a"
7718748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    echo "*** shared version of the library, which I believe you do not have"
7719748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    echo "*** because a test_compile did reveal that the linker did not use it for"
7720748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    echo "*** its dynamic dependency list that programs get resolved with at runtime."
7721748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  fi
7722748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		fi
7723748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		;;
7724748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      *)
7725748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		func_append newdeplibs " $i"
7726748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		;;
7727748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      esac
7728748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    done
7729748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  else
7730748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # Error occurred in the first compile.  Let's try to salvage
7731748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # the situation: Compile a separate program for each library.
7732748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    for i in $deplibs; do
7733748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      case $i in
7734748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      -l*)
7735748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		func_stripname -l '' "$i"
7736748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		name=$func_stripname_result
7737748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		$opt_dry_run || $RM conftest
7738748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
7739748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  ldd_output=`ldd conftest`
7740748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
7741748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    case " $predeps $postdeps " in
7742748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    *" $i "*)
7743748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		      func_append newdeplibs " $i"
7744748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		      i=""
7745748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		      ;;
7746748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    esac
7747748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  fi
7748748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  if test -n "$i" ; then
7749748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    libname=`eval "\\$ECHO \"$libname_spec\""`
7750748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
7751748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    set dummy $deplib_matches; shift
7752748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    deplib_match=$1
7753748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
7754748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		      func_append newdeplibs " $i"
7755748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    else
7756748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		      droppeddeps=yes
7757748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		      echo
7758748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		      $ECHO "*** Warning: dynamic linker does not accept needed library $i."
7759748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		      echo "*** I have the capability to make that library automatically link in when"
7760748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		      echo "*** you link to this library.  But I can only do this if you have a"
7761748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		      echo "*** shared version of the library, which you do not appear to have"
7762748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		      echo "*** because a test_compile did reveal that the linker did not use this one"
7763748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		      echo "*** as a dynamic dependency that programs can get resolved with at runtime."
7764748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    fi
7765748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  fi
7766748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		else
7767748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  droppeddeps=yes
7768748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  echo
7769748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  $ECHO "*** Warning!  Library $i is needed by this library but I was not able to"
7770748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  echo "*** make it link in!  You will probably need to install it or some"
7771748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  echo "*** library that it depends on before this library will be fully"
7772748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  echo "*** functional.  Installing it before continuing would be even better."
7773748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		fi
7774748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		;;
7775748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      *)
7776748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		func_append newdeplibs " $i"
7777748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		;;
7778748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      esac
7779748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    done
7780748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
7781748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
7782748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	file_magic*)
7783748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  set dummy $deplibs_check_method; shift
7784748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
7785748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  for a_deplib in $deplibs; do
7786748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    case $a_deplib in
7787748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    -l*)
7788748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      func_stripname -l '' "$a_deplib"
7789748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      name=$func_stripname_result
7790748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
7791748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		case " $predeps $postdeps " in
7792748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		*" $a_deplib "*)
7793748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  func_append newdeplibs " $a_deplib"
7794748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  a_deplib=""
7795748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  ;;
7796748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		esac
7797748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      fi
7798748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      if test -n "$a_deplib" ; then
7799748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		libname=`eval "\\$ECHO \"$libname_spec\""`
7800748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		if test -n "$file_magic_glob"; then
7801748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob`
7802748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		else
7803748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  libnameglob=$libname
7804748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		fi
7805748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob`
7806748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
7807748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  if test "$want_nocaseglob" = yes; then
7808748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    shopt -s nocaseglob
7809748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
7810748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    $nocaseglob
7811748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  else
7812748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
7813748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  fi
7814748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  for potent_lib in $potential_libs; do
7815748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		      # Follow soft links.
7816748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		      if ls -lLd "$potent_lib" 2>/dev/null |
7817748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			 $GREP " -> " >/dev/null; then
7818748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			continue
7819748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		      fi
7820748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		      # The statement above tries to avoid entering an
7821748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		      # endless loop below, in case of cyclic links.
7822748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		      # We might still enter an endless loop, since a link
7823748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		      # loop can be closed while we follow links,
7824748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		      # but so what?
7825748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		      potlib="$potent_lib"
7826748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		      while test -h "$potlib" 2>/dev/null; do
7827748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
7828748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			case $potliblink in
7829748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
7830748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			*) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";;
7831748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			esac
7832748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		      done
7833748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
7834748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			 $SED -e 10q |
7835748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			 $EGREP "$file_magic_regex" > /dev/null; then
7836748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			func_append newdeplibs " $a_deplib"
7837748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			a_deplib=""
7838748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat			break 2
7839748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		      fi
7840748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  done
7841748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		done
7842748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      fi
7843748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      if test -n "$a_deplib" ; then
7844748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		droppeddeps=yes
7845748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		echo
7846748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
7847748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		echo "*** I have the capability to make that library automatically link in when"
7848748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		echo "*** you link to this library.  But I can only do this if you have a"
7849748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		echo "*** shared version of the library, which you do not appear to have"
7850748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		echo "*** because I did check the linker path looking for a file starting"
7851748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		if test -z "$potlib" ; then
7852748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
7853748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		else
7854748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  $ECHO "*** with $libname and none of the candidates passed a file format test"
7855748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  $ECHO "*** using a file magic. Last file checked: $potlib"
7856748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		fi
7857748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      fi
7858748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      ;;
7859748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    *)
7860748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # Add a -L argument.
7861748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      func_append newdeplibs " $a_deplib"
7862748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      ;;
7863748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    esac
7864748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  done # Gone through all deplibs.
7865748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
7866748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	match_pattern*)
7867748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  set dummy $deplibs_check_method; shift
7868748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
7869748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  for a_deplib in $deplibs; do
7870748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    case $a_deplib in
7871748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    -l*)
7872748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      func_stripname -l '' "$a_deplib"
7873748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      name=$func_stripname_result
7874748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
7875748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		case " $predeps $postdeps " in
7876748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		*" $a_deplib "*)
7877748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  func_append newdeplibs " $a_deplib"
7878748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  a_deplib=""
7879748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  ;;
7880748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		esac
7881748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      fi
7882748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      if test -n "$a_deplib" ; then
7883748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		libname=`eval "\\$ECHO \"$libname_spec\""`
7884748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
7885748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
7886748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  for potent_lib in $potential_libs; do
7887748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    potlib="$potent_lib" # see symlink-check above in file_magic test
7888748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \
7889748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		       $EGREP "$match_pattern_regex" > /dev/null; then
7890748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		      func_append newdeplibs " $a_deplib"
7891748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		      a_deplib=""
7892748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		      break 2
7893748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    fi
7894748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  done
7895748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		done
7896748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      fi
7897748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      if test -n "$a_deplib" ; then
7898748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		droppeddeps=yes
7899748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		echo
7900748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
7901748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		echo "*** I have the capability to make that library automatically link in when"
7902748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		echo "*** you link to this library.  But I can only do this if you have a"
7903748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		echo "*** shared version of the library, which you do not appear to have"
7904748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		echo "*** because I did check the linker path looking for a file starting"
7905748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		if test -z "$potlib" ; then
7906748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
7907748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		else
7908748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  $ECHO "*** with $libname and none of the candidates passed a file format test"
7909748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  $ECHO "*** using a regex pattern. Last file checked: $potlib"
7910748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		fi
7911748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      fi
7912748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      ;;
7913748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    *)
7914748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # Add a -L argument.
7915748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      func_append newdeplibs " $a_deplib"
7916748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      ;;
7917748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    esac
7918748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  done # Gone through all deplibs.
7919748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
7920748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	none | unknown | *)
7921748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  newdeplibs=""
7922748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'`
7923748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
7924748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    for i in $predeps $postdeps ; do
7925748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # can't use Xsed below, because $i might contain '/'
7926748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"`
7927748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    done
7928748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
7929748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  case $tmp_deplibs in
7930748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *[!\	\ ]*)
7931748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    echo
7932748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    if test "X$deplibs_check_method" = "Xnone"; then
7933748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      echo "*** Warning: inter-library dependencies are not supported in this platform."
7934748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    else
7935748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      echo "*** Warning: inter-library dependencies are not known to be supported."
7936748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    fi
7937748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    echo "*** All declared inter-library dependencies are being dropped."
7938748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    droppeddeps=yes
7939748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    ;;
7940748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  esac
7941748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
7942748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	esac
7943748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	versuffix=$versuffix_save
7944748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	major=$major_save
7945748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	release=$release_save
7946748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	libname=$libname_save
7947748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	name=$name_save
7948748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
7949748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	case $host in
7950748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	*-*-rhapsody* | *-*-darwin1.[012])
7951748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # On Rhapsody replace the C library with the System framework
7952748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'`
7953748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
7954748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	esac
7955748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
7956748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test "$droppeddeps" = yes; then
7957748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test "$module" = yes; then
7958748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    echo
7959748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    echo "*** Warning: libtool could not satisfy all declared inter-library"
7960748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    $ECHO "*** dependencies of module $libname.  Therefore, libtool will create"
7961748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    echo "*** a static module, that should work as long as the dlopening"
7962748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    echo "*** application is linked with the -dlopen flag."
7963748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    if test -z "$global_symbol_pipe"; then
7964748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      echo
7965748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      echo "*** However, this would only work if libtool was able to extract symbol"
7966748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
7967748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      echo "*** not find such a program.  So, this module is probably useless."
7968748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      echo "*** \`nm' from GNU binutils and a full rebuild may help."
7969748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    fi
7970748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    if test "$build_old_libs" = no; then
7971748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      oldlibs="$output_objdir/$libname.$libext"
7972748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      build_libtool_libs=module
7973748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      build_old_libs=yes
7974748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    else
7975748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      build_libtool_libs=no
7976748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    fi
7977748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  else
7978748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    echo "*** The inter-library dependencies that have been dropped here will be"
7979748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    echo "*** automatically added whenever a program is linked with this library"
7980748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    echo "*** or is declared to -dlopen it."
7981748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
7982748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    if test "$allow_undefined" = no; then
7983748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      echo
7984748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      echo "*** Since this library must not contain undefined symbols,"
7985748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      echo "*** because either the platform does not support them or"
7986748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      echo "*** it was explicitly requested with -no-undefined,"
7987748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      echo "*** libtool will only create a static version of it."
7988748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      if test "$build_old_libs" = no; then
7989748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		oldlibs="$output_objdir/$libname.$libext"
7990748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		build_libtool_libs=module
7991748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		build_old_libs=yes
7992748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      else
7993748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		build_libtool_libs=no
7994748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      fi
7995748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    fi
7996748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
7997748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
7998748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Done checking deplibs!
7999748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	deplibs=$newdeplibs
8000748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
8001748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Time to change all our "foo.ltframework" stuff back to "-framework foo"
8002748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      case $host in
8003748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	*-*-darwin*)
8004748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
8005748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
8006748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
8007748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
8008748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      esac
8009748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8010748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # move library search paths that coincide with paths to not yet
8011748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # installed libraries to the beginning of the library search list
8012748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      new_libs=
8013748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      for path in $notinst_path; do
8014748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	case " $new_libs " in
8015748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	*" -L$path/$objdir "*) ;;
8016748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	*)
8017748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  case " $deplibs " in
8018748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *" -L$path/$objdir "*)
8019748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_append new_libs " -L$path/$objdir" ;;
8020748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  esac
8021748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
8022748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	esac
8023748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      done
8024748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      for deplib in $deplibs; do
8025748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	case $deplib in
8026748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	-L*)
8027748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  case " $new_libs " in
8028748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *" $deplib "*) ;;
8029748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *) func_append new_libs " $deplib" ;;
8030748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  esac
8031748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
8032748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	*) func_append new_libs " $deplib" ;;
8033748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	esac
8034748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      done
8035748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      deplibs="$new_libs"
8036748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8037748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # All the library-specific variables (install_libdir is set above).
8038748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      library_names=
8039748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      old_library=
8040748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      dlname=
8041748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8042748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Test again, we may have decided not to build it any more
8043748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test "$build_libtool_libs" = yes; then
8044748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Remove ${wl} instances when linking with ld.
8045748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# FIXME: should test the right _cmds variable.
8046748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	case $archive_cmds in
8047748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *\$LD\ *) wl= ;;
8048748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        esac
8049748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test "$hardcode_into_libs" = yes; then
8050748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # Hardcode the library paths
8051748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  hardcode_libdirs=
8052748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  dep_rpath=
8053748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  rpath="$finalize_rpath"
8054748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  test "$opt_mode" != relink && rpath="$compile_rpath$rpath"
8055748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  for libdir in $rpath; do
8056748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    if test -n "$hardcode_libdir_flag_spec"; then
8057748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      if test -n "$hardcode_libdir_separator"; then
8058748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		func_replace_sysroot "$libdir"
8059748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		libdir=$func_replace_sysroot_result
8060748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		if test -z "$hardcode_libdirs"; then
8061748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  hardcode_libdirs="$libdir"
8062748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		else
8063748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  # Just accumulate the unique libdirs.
8064748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
8065748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
8066748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    ;;
8067748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  *)
8068748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
8069748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    ;;
8070748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  esac
8071748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		fi
8072748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      else
8073748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		eval flag=\"$hardcode_libdir_flag_spec\"
8074748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		func_append dep_rpath " $flag"
8075748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      fi
8076748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    elif test -n "$runpath_var"; then
8077748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      case "$perm_rpath " in
8078748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      *" $libdir "*) ;;
8079748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      *) func_append perm_rpath " $libdir" ;;
8080748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      esac
8081748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    fi
8082748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  done
8083748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # Substitute the hardcoded libdirs into the rpath.
8084748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test -n "$hardcode_libdir_separator" &&
8085748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	     test -n "$hardcode_libdirs"; then
8086748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    libdir="$hardcode_libdirs"
8087748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    eval "dep_rpath=\"$hardcode_libdir_flag_spec\""
8088748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
8089748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
8090748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # We should set the runpath_var.
8091748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    rpath=
8092748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    for dir in $perm_rpath; do
8093748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      func_append rpath "$dir:"
8094748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    done
8095748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
8096748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
8097748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
8098748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
8099748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8100748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	shlibpath="$finalize_shlibpath"
8101748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
8102748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test -n "$shlibpath"; then
8103748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
8104748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
8105748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8106748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Get the real and link names of the library.
8107748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	eval shared_ext=\"$shrext_cmds\"
8108748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	eval library_names=\"$library_names_spec\"
8109748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	set dummy $library_names
8110748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	shift
8111748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	realname="$1"
8112748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	shift
8113748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8114748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test -n "$soname_spec"; then
8115748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  eval soname=\"$soname_spec\"
8116748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	else
8117748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  soname="$realname"
8118748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
8119748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test -z "$dlname"; then
8120748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  dlname=$soname
8121748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
8122748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8123748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	lib="$output_objdir/$realname"
8124748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	linknames=
8125748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	for link
8126748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	do
8127748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_append linknames " $link"
8128748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	done
8129748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8130748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Use standard objects if they are pic
8131748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP`
8132748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	test "X$libobjs" = "X " && libobjs=
8133748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8134748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	delfiles=
8135748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test -n "$export_symbols" && test -n "$include_expsyms"; then
8136748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
8137748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  export_symbols="$output_objdir/$libname.uexp"
8138748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_append delfiles " $export_symbols"
8139748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
8140748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8141748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	orig_export_symbols=
8142748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	case $host_os in
8143748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	cygwin* | mingw* | cegcc*)
8144748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
8145748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # exporting using user supplied symfile
8146748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
8147748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # and it's NOT already a .def file. Must figure out
8148748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # which of the given symbols are data symbols and tag
8149748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # them as such. So, trigger use of export_symbols_cmds.
8150748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # export_symbols gets reassigned inside the "prepare
8151748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # the list of exported symbols" if statement, so the
8152748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # include_expsyms logic still works.
8153748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      orig_export_symbols="$export_symbols"
8154748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      export_symbols=
8155748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      always_export_symbols=yes
8156748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    fi
8157748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
8158748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
8159748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	esac
8160748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8161748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Prepare the list of exported symbols
8162748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test -z "$export_symbols"; then
8163748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
8164748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_verbose "generating symbol list for \`$libname.la'"
8165748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    export_symbols="$output_objdir/$libname.exp"
8166748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    $opt_dry_run || $RM $export_symbols
8167748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    cmds=$export_symbols_cmds
8168748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    save_ifs="$IFS"; IFS='~'
8169748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    for cmd1 in $cmds; do
8170748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      IFS="$save_ifs"
8171748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # Take the normal branch if the nm_file_list_spec branch
8172748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # doesn't work or if tool conversion is not needed.
8173748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      case $nm_file_list_spec~$to_tool_file_cmd in
8174748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		*~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*)
8175748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  try_normal_branch=yes
8176748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  eval cmd=\"$cmd1\"
8177748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  func_len " $cmd"
8178748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  len=$func_len_result
8179748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  ;;
8180748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		*)
8181748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  try_normal_branch=no
8182748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  ;;
8183748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      esac
8184748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      if test "$try_normal_branch" = yes \
8185748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		 && { test "$len" -lt "$max_cmd_len" \
8186748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		      || test "$max_cmd_len" -le -1; }
8187748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      then
8188748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		func_show_eval "$cmd" 'exit $?'
8189748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		skipped_export=false
8190748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      elif test -n "$nm_file_list_spec"; then
8191748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		func_basename "$output"
8192748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		output_la=$func_basename_result
8193748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		save_libobjs=$libobjs
8194748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		save_output=$output
8195748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		output=${output_objdir}/${output_la}.nm
8196748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		func_to_tool_file "$output"
8197748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		libobjs=$nm_file_list_spec$func_to_tool_file_result
8198748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		func_append delfiles " $output"
8199748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		func_verbose "creating $NM input file list: $output"
8200748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		for obj in $save_libobjs; do
8201748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  func_to_tool_file "$obj"
8202748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  $ECHO "$func_to_tool_file_result"
8203748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		done > "$output"
8204748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		eval cmd=\"$cmd1\"
8205748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		func_show_eval "$cmd" 'exit $?'
8206748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		output=$save_output
8207748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		libobjs=$save_libobjs
8208748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		skipped_export=false
8209748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      else
8210748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		# The command line is too long to execute in one step.
8211748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		func_verbose "using reloadable object file for export list..."
8212748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		skipped_export=:
8213748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		# Break out early, otherwise skipped_export may be
8214748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		# set to false by a later but shorter cmd.
8215748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		break
8216748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      fi
8217748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    done
8218748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    IFS="$save_ifs"
8219748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
8220748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
8221748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
8222748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    fi
8223748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
8224748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
8225748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8226748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test -n "$export_symbols" && test -n "$include_expsyms"; then
8227748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  tmp_export_symbols="$export_symbols"
8228748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
8229748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
8230748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
8231748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8232748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
8233748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # The given exports_symbols file has to be filtered, so filter it.
8234748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
8235748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # FIXME: $output_objdir/$libname.filter potentially contains lots of
8236748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # 's' commands which not all seds can handle. GNU sed should be fine
8237748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # though. Also, the filter scales superlinearly with the number of
8238748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # global variables. join(1) would be nice here, but unfortunately
8239748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # isn't a blessed tool.
8240748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
8241748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_append delfiles " $export_symbols $output_objdir/$libname.filter"
8242748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  export_symbols=$output_objdir/$libname.def
8243748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
8244748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
8245748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8246748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	tmp_deplibs=
8247748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	for test_deplib in $deplibs; do
8248748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  case " $convenience " in
8249748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *" $test_deplib "*) ;;
8250748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *)
8251748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_append tmp_deplibs " $test_deplib"
8252748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    ;;
8253748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  esac
8254748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	done
8255748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	deplibs="$tmp_deplibs"
8256748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8257748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test -n "$convenience"; then
8258748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test -n "$whole_archive_flag_spec" &&
8259748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    test "$compiler_needs_object" = yes &&
8260748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    test -z "$libobjs"; then
8261748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # extract the archives, so we have objects to list.
8262748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # TODO: could optimize this to just extract one archive.
8263748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    whole_archive_flag_spec=
8264748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
8265748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test -n "$whole_archive_flag_spec"; then
8266748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    save_libobjs=$libobjs
8267748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
8268748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    test "X$libobjs" = "X " && libobjs=
8269748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  else
8270748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    gentop="$output_objdir/${outputname}x"
8271748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_append generated " $gentop"
8272748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8273748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_extract_archives $gentop $convenience
8274748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_append libobjs " $func_extract_archives_result"
8275748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    test "X$libobjs" = "X " && libobjs=
8276748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
8277748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
8278748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8279748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
8280748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  eval flag=\"$thread_safe_flag_spec\"
8281748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_append linker_flags " $flag"
8282748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
8283748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8284748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Make a backup of the uninstalled library when relinking
8285748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test "$opt_mode" = relink; then
8286748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
8287748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
8288748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8289748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Do each of the archive commands.
8290748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test "$module" = yes && test -n "$module_cmds" ; then
8291748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
8292748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    eval test_cmds=\"$module_expsym_cmds\"
8293748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    cmds=$module_expsym_cmds
8294748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  else
8295748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    eval test_cmds=\"$module_cmds\"
8296748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    cmds=$module_cmds
8297748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
8298748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	else
8299748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
8300748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    eval test_cmds=\"$archive_expsym_cmds\"
8301748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    cmds=$archive_expsym_cmds
8302748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  else
8303748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    eval test_cmds=\"$archive_cmds\"
8304748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    cmds=$archive_cmds
8305748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
8306748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
8307748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8308748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test "X$skipped_export" != "X:" &&
8309748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	   func_len " $test_cmds" &&
8310748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	   len=$func_len_result &&
8311748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	   test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
8312748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  :
8313748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	else
8314748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # The command line is too long to link in one step, link piecewise
8315748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # or, if using GNU ld and skipped_export is not :, use a linker
8316748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # script.
8317748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8318748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # Save the value of $output and $libobjs because we want to
8319748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # use them later.  If we have whole_archive_flag_spec, we
8320748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # want to use save_libobjs as it was before
8321748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # whole_archive_flag_spec was expanded, because we can't
8322748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # assume the linker understands whole_archive_flag_spec.
8323748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # This may have to be revisited, in case too many
8324748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # convenience libraries get linked in and end up exceeding
8325748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # the spec.
8326748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
8327748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    save_libobjs=$libobjs
8328748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
8329748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  save_output=$output
8330748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_basename "$output"
8331748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  output_la=$func_basename_result
8332748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8333748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # Clear the reloadable object creation command queue and
8334748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # initialize k to one.
8335748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  test_cmds=
8336748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  concat_cmds=
8337748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  objlist=
8338748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  last_robj=
8339748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  k=1
8340748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8341748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
8342748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    output=${output_objdir}/${output_la}.lnkscript
8343748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_verbose "creating GNU ld script: $output"
8344748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    echo 'INPUT (' > $output
8345748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    for obj in $save_libobjs
8346748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    do
8347748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      func_to_tool_file "$obj"
8348748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      $ECHO "$func_to_tool_file_result" >> $output
8349748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    done
8350748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    echo ')' >> $output
8351748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_append delfiles " $output"
8352748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_to_tool_file "$output"
8353748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    output=$func_to_tool_file_result
8354748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
8355748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    output=${output_objdir}/${output_la}.lnk
8356748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_verbose "creating linker input file list: $output"
8357748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    : > $output
8358748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    set x $save_libobjs
8359748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    shift
8360748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    firstobj=
8361748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    if test "$compiler_needs_object" = yes; then
8362748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      firstobj="$1 "
8363748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      shift
8364748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    fi
8365748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    for obj
8366748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    do
8367748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      func_to_tool_file "$obj"
8368748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      $ECHO "$func_to_tool_file_result" >> $output
8369748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    done
8370748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_append delfiles " $output"
8371748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_to_tool_file "$output"
8372748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    output=$firstobj\"$file_list_spec$func_to_tool_file_result\"
8373748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  else
8374748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    if test -n "$save_libobjs"; then
8375748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      func_verbose "creating reloadable object files..."
8376748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      output=$output_objdir/$output_la-${k}.$objext
8377748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      eval test_cmds=\"$reload_cmds\"
8378748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      func_len " $test_cmds"
8379748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      len0=$func_len_result
8380748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      len=$len0
8381748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8382748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # Loop over the list of objects to be linked.
8383748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      for obj in $save_libobjs
8384748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      do
8385748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		func_len " $obj"
8386748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		func_arith $len + $func_len_result
8387748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		len=$func_arith_result
8388748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		if test "X$objlist" = X ||
8389748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		   test "$len" -lt "$max_cmd_len"; then
8390748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  func_append objlist " $obj"
8391748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		else
8392748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  # The command $test_cmds is almost too long, add a
8393748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  # command to the queue.
8394748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  if test "$k" -eq 1 ; then
8395748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    # The first file doesn't have a previous command to add.
8396748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    reload_objs=$objlist
8397748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    eval concat_cmds=\"$reload_cmds\"
8398748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  else
8399748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    # All subsequent reloadable object files will link in
8400748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    # the last one created.
8401748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    reload_objs="$objlist $last_robj"
8402748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\"
8403748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  fi
8404748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  last_robj=$output_objdir/$output_la-${k}.$objext
8405748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  func_arith $k + 1
8406748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  k=$func_arith_result
8407748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  output=$output_objdir/$output_la-${k}.$objext
8408748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  objlist=" $obj"
8409748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  func_len " $last_robj"
8410748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  func_arith $len0 + $func_len_result
8411748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  len=$func_arith_result
8412748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		fi
8413748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      done
8414748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # Handle the remaining objects by creating one last
8415748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # reloadable object file.  All subsequent reloadable object
8416748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # files will link in the last one created.
8417748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
8418748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      reload_objs="$objlist $last_robj"
8419748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      eval concat_cmds=\"\${concat_cmds}$reload_cmds\"
8420748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      if test -n "$last_robj"; then
8421748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	        eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
8422748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      fi
8423748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      func_append delfiles " $output"
8424748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8425748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    else
8426748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      output=
8427748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    fi
8428748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8429748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    if ${skipped_export-false}; then
8430748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      func_verbose "generating symbol list for \`$libname.la'"
8431748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      export_symbols="$output_objdir/$libname.exp"
8432748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      $opt_dry_run || $RM $export_symbols
8433748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      libobjs=$output
8434748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # Append the command to create the export file.
8435748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
8436748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
8437748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      if test -n "$last_robj"; then
8438748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
8439748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      fi
8440748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    fi
8441748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8442748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    test -n "$save_libobjs" &&
8443748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      func_verbose "creating a temporary reloadable object file: $output"
8444748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8445748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # Loop through the commands generated above and execute them.
8446748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    save_ifs="$IFS"; IFS='~'
8447748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    for cmd in $concat_cmds; do
8448748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      IFS="$save_ifs"
8449748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      $opt_silent || {
8450748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  func_quote_for_expand "$cmd"
8451748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  eval "func_echo $func_quote_for_expand_result"
8452748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      }
8453748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      $opt_dry_run || eval "$cmd" || {
8454748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		lt_exit=$?
8455748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8456748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		# Restore the uninstalled library and exit
8457748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		if test "$opt_mode" = relink; then
8458748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  ( cd "$output_objdir" && \
8459748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    $RM "${realname}T" && \
8460748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		    $MV "${realname}U" "$realname" )
8461748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		fi
8462748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8463748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		exit $lt_exit
8464748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      }
8465748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    done
8466748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    IFS="$save_ifs"
8467748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8468748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    if test -n "$export_symbols_regex" && ${skipped_export-false}; then
8469748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
8470748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
8471748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    fi
8472748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
8473748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8474748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat          if ${skipped_export-false}; then
8475748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    if test -n "$export_symbols" && test -n "$include_expsyms"; then
8476748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      tmp_export_symbols="$export_symbols"
8477748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
8478748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
8479748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    fi
8480748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8481748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    if test -n "$orig_export_symbols"; then
8482748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # The given exports_symbols file has to be filtered, so filter it.
8483748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
8484748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # FIXME: $output_objdir/$libname.filter potentially contains lots of
8485748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # 's' commands which not all seds can handle. GNU sed should be fine
8486748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # though. Also, the filter scales superlinearly with the number of
8487748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # global variables. join(1) would be nice here, but unfortunately
8488748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # isn't a blessed tool.
8489748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
8490748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      func_append delfiles " $export_symbols $output_objdir/$libname.filter"
8491748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      export_symbols=$output_objdir/$libname.def
8492748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
8493748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    fi
8494748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
8495748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8496748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  libobjs=$output
8497748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # Restore the value of output.
8498748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  output=$save_output
8499748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8500748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
8501748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
8502748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    test "X$libobjs" = "X " && libobjs=
8503748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
8504748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # Expand the library linking commands again to reset the
8505748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # value of $libobjs for piecewise linking.
8506748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8507748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # Do each of the archive commands.
8508748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test "$module" = yes && test -n "$module_cmds" ; then
8509748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
8510748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      cmds=$module_expsym_cmds
8511748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    else
8512748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      cmds=$module_cmds
8513748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    fi
8514748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  else
8515748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
8516748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      cmds=$archive_expsym_cmds
8517748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    else
8518748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      cmds=$archive_cmds
8519748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    fi
8520748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
8521748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
8522748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8523748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test -n "$delfiles"; then
8524748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # Append the command to remove temporary files to $cmds.
8525748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  eval cmds=\"\$cmds~\$RM $delfiles\"
8526748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
8527748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8528748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Add any objects from preloaded convenience libraries
8529748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test -n "$dlprefiles"; then
8530748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  gentop="$output_objdir/${outputname}x"
8531748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_append generated " $gentop"
8532748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8533748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_extract_archives $gentop $dlprefiles
8534748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_append libobjs " $func_extract_archives_result"
8535748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  test "X$libobjs" = "X " && libobjs=
8536748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
8537748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8538748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	save_ifs="$IFS"; IFS='~'
8539748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	for cmd in $cmds; do
8540748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  IFS="$save_ifs"
8541748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  eval cmd=\"$cmd\"
8542748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  $opt_silent || {
8543748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_quote_for_expand "$cmd"
8544748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    eval "func_echo $func_quote_for_expand_result"
8545748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  }
8546748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  $opt_dry_run || eval "$cmd" || {
8547748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    lt_exit=$?
8548748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8549748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # Restore the uninstalled library and exit
8550748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    if test "$opt_mode" = relink; then
8551748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      ( cd "$output_objdir" && \
8552748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	        $RM "${realname}T" && \
8553748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		$MV "${realname}U" "$realname" )
8554748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    fi
8555748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8556748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    exit $lt_exit
8557748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  }
8558748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	done
8559748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	IFS="$save_ifs"
8560748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8561748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Restore the uninstalled library and exit
8562748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test "$opt_mode" = relink; then
8563748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
8564748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8565748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test -n "$convenience"; then
8566748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    if test -z "$whole_archive_flag_spec"; then
8567748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      func_show_eval '${RM}r "$gentop"'
8568748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    fi
8569748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
8570748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8571748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  exit $EXIT_SUCCESS
8572748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
8573748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8574748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Create links to the real library.
8575748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	for linkname in $linknames; do
8576748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test "$realname" != "$linkname"; then
8577748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
8578748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
8579748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	done
8580748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8581748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# If -module or -export-dynamic was specified, set the dlname.
8582748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test "$module" = yes || test "$export_dynamic" = yes; then
8583748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # On all known operating systems, these are identical.
8584748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  dlname="$soname"
8585748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
8586748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
8587748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      ;;
8588748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8589748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    obj)
8590748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
8591748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_warning "\`-dlopen' is ignored for objects"
8592748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
8593748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8594748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      case " $deplibs" in
8595748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      *\ -l* | *\ -L*)
8596748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_warning "\`-l' and \`-L' are ignored for objects" ;;
8597748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      esac
8598748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8599748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      test -n "$rpath" && \
8600748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_warning "\`-rpath' is ignored for objects"
8601748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8602748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      test -n "$xrpath" && \
8603748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_warning "\`-R' is ignored for objects"
8604748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8605748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      test -n "$vinfo" && \
8606748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_warning "\`-version-info' is ignored for objects"
8607748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8608748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      test -n "$release" && \
8609748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_warning "\`-release' is ignored for objects"
8610748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8611748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      case $output in
8612748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      *.lo)
8613748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	test -n "$objs$old_deplibs" && \
8614748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_fatal_error "cannot build library object \`$output' from non-libtool objects"
8615748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8616748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	libobj=$output
8617748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_lo2o "$libobj"
8618748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	obj=$func_lo2o_result
8619748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
8620748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      *)
8621748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	libobj=
8622748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	obj="$output"
8623748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
8624748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      esac
8625748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8626748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Delete the old objects.
8627748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      $opt_dry_run || $RM $obj $libobj
8628748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8629748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Objects from convenience libraries.  This assumes
8630748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # single-version convenience libraries.  Whenever we create
8631748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # different ones for PIC/non-PIC, this we'll have to duplicate
8632748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # the extraction.
8633748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      reload_conv_objs=
8634748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      gentop=
8635748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # reload_cmds runs $LD directly, so let us get rid of
8636748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # -Wl from whole_archive_flag_spec and hope we can get by with
8637748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # turning comma into space..
8638748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      wl=
8639748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8640748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test -n "$convenience"; then
8641748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test -n "$whole_archive_flag_spec"; then
8642748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
8643748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'`
8644748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	else
8645748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  gentop="$output_objdir/${obj}x"
8646748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_append generated " $gentop"
8647748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8648748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_extract_archives $gentop $convenience
8649748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  reload_conv_objs="$reload_objs $func_extract_archives_result"
8650748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
8651748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
8652748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8653748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # If we're not building shared, we need to use non_pic_objs
8654748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      test "$build_libtool_libs" != yes && libobjs="$non_pic_objects"
8655748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8656748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Create the old-style object.
8657748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
8658748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8659748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      output="$obj"
8660748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_execute_cmds "$reload_cmds" 'exit $?'
8661748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8662748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Exit if we aren't doing a library object file.
8663748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test -z "$libobj"; then
8664748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test -n "$gentop"; then
8665748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_show_eval '${RM}r "$gentop"'
8666748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
8667748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8668748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	exit $EXIT_SUCCESS
8669748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
8670748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8671748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test "$build_libtool_libs" != yes; then
8672748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test -n "$gentop"; then
8673748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_show_eval '${RM}r "$gentop"'
8674748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
8675748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8676748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Create an invalid libtool object if no PIC, so that we don't
8677748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# accidentally link it into a program.
8678748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# $show "echo timestamp > $libobj"
8679748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
8680748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	exit $EXIT_SUCCESS
8681748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
8682748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8683748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test -n "$pic_flag" || test "$pic_mode" != default; then
8684748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Only do commands if we really have different PIC objects.
8685748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	reload_objs="$libobjs $reload_conv_objs"
8686748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	output="$libobj"
8687748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_execute_cmds "$reload_cmds" 'exit $?'
8688748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
8689748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8690748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test -n "$gentop"; then
8691748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_show_eval '${RM}r "$gentop"'
8692748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
8693748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8694748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      exit $EXIT_SUCCESS
8695748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      ;;
8696748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8697748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    prog)
8698748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      case $host in
8699748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	*cygwin*) func_stripname '' '.exe' "$output"
8700748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	          output=$func_stripname_result.exe;;
8701748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      esac
8702748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      test -n "$vinfo" && \
8703748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_warning "\`-version-info' is ignored for programs"
8704748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8705748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      test -n "$release" && \
8706748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_warning "\`-release' is ignored for programs"
8707748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8708748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      test "$preload" = yes \
8709748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        && test "$dlopen_support" = unknown \
8710748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	&& test "$dlopen_self" = unknown \
8711748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	&& test "$dlopen_self_static" = unknown && \
8712748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
8713748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8714748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      case $host in
8715748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      *-*-rhapsody* | *-*-darwin1.[012])
8716748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# On Rhapsody replace the C library is the System framework
8717748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'`
8718748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'`
8719748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
8720748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      esac
8721748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8722748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      case $host in
8723748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      *-*-darwin*)
8724748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Don't allow lazy linking, it breaks C++ global constructors
8725748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# But is supposedly fixed on 10.4 or later (yay!).
8726748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test "$tagname" = CXX ; then
8727748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
8728748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    10.[0123])
8729748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      func_append compile_command " ${wl}-bind_at_load"
8730748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      func_append finalize_command " ${wl}-bind_at_load"
8731748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    ;;
8732748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  esac
8733748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
8734748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Time to change all our "foo.ltframework" stuff back to "-framework foo"
8735748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
8736748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
8737748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
8738748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      esac
8739748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8740748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8741748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # move library search paths that coincide with paths to not yet
8742748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # installed libraries to the beginning of the library search list
8743748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      new_libs=
8744748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      for path in $notinst_path; do
8745748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	case " $new_libs " in
8746748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	*" -L$path/$objdir "*) ;;
8747748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	*)
8748748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  case " $compile_deplibs " in
8749748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *" -L$path/$objdir "*)
8750748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_append new_libs " -L$path/$objdir" ;;
8751748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  esac
8752748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
8753748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	esac
8754748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      done
8755748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      for deplib in $compile_deplibs; do
8756748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	case $deplib in
8757748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	-L*)
8758748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  case " $new_libs " in
8759748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *" $deplib "*) ;;
8760748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *) func_append new_libs " $deplib" ;;
8761748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  esac
8762748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
8763748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	*) func_append new_libs " $deplib" ;;
8764748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	esac
8765748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      done
8766748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      compile_deplibs="$new_libs"
8767748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8768748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8769748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_append compile_command " $compile_deplibs"
8770748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_append finalize_command " $finalize_deplibs"
8771748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8772748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test -n "$rpath$xrpath"; then
8773748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# If the user specified any rpath flags, then add them.
8774748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	for libdir in $rpath $xrpath; do
8775748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # This is the magic to use -rpath.
8776748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  case "$finalize_rpath " in
8777748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *" $libdir "*) ;;
8778748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *) func_append finalize_rpath " $libdir" ;;
8779748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  esac
8780748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	done
8781748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
8782748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8783748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Now hardcode the library paths
8784748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      rpath=
8785748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      hardcode_libdirs=
8786748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      for libdir in $compile_rpath $finalize_rpath; do
8787748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test -n "$hardcode_libdir_flag_spec"; then
8788748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test -n "$hardcode_libdir_separator"; then
8789748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    if test -z "$hardcode_libdirs"; then
8790748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      hardcode_libdirs="$libdir"
8791748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    else
8792748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # Just accumulate the unique libdirs.
8793748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
8794748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
8795748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		;;
8796748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      *)
8797748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
8798748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		;;
8799748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      esac
8800748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    fi
8801748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  else
8802748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    eval flag=\"$hardcode_libdir_flag_spec\"
8803748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_append rpath " $flag"
8804748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
8805748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	elif test -n "$runpath_var"; then
8806748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  case "$perm_rpath " in
8807748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *" $libdir "*) ;;
8808748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *) func_append perm_rpath " $libdir" ;;
8809748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  esac
8810748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
8811748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	case $host in
8812748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
8813748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
8814748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  case :$dllsearchpath: in
8815748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *":$libdir:"*) ;;
8816748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ::) dllsearchpath=$libdir;;
8817748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *) func_append dllsearchpath ":$libdir";;
8818748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  esac
8819748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  case :$dllsearchpath: in
8820748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *":$testbindir:"*) ;;
8821748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ::) dllsearchpath=$testbindir;;
8822748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *) func_append dllsearchpath ":$testbindir";;
8823748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  esac
8824748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
8825748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	esac
8826748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      done
8827748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Substitute the hardcoded libdirs into the rpath.
8828748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test -n "$hardcode_libdir_separator" &&
8829748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	 test -n "$hardcode_libdirs"; then
8830748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	libdir="$hardcode_libdirs"
8831748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	eval rpath=\" $hardcode_libdir_flag_spec\"
8832748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
8833748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      compile_rpath="$rpath"
8834748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8835748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      rpath=
8836748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      hardcode_libdirs=
8837748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      for libdir in $finalize_rpath; do
8838748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test -n "$hardcode_libdir_flag_spec"; then
8839748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test -n "$hardcode_libdir_separator"; then
8840748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    if test -z "$hardcode_libdirs"; then
8841748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      hardcode_libdirs="$libdir"
8842748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    else
8843748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # Just accumulate the unique libdirs.
8844748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
8845748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
8846748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		;;
8847748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      *)
8848748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
8849748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		;;
8850748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      esac
8851748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    fi
8852748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  else
8853748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    eval flag=\"$hardcode_libdir_flag_spec\"
8854748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_append rpath " $flag"
8855748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
8856748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	elif test -n "$runpath_var"; then
8857748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  case "$finalize_perm_rpath " in
8858748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *" $libdir "*) ;;
8859748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *) func_append finalize_perm_rpath " $libdir" ;;
8860748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  esac
8861748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
8862748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      done
8863748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Substitute the hardcoded libdirs into the rpath.
8864748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test -n "$hardcode_libdir_separator" &&
8865748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	 test -n "$hardcode_libdirs"; then
8866748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	libdir="$hardcode_libdirs"
8867748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	eval rpath=\" $hardcode_libdir_flag_spec\"
8868748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
8869748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      finalize_rpath="$rpath"
8870748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8871748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test -n "$libobjs" && test "$build_old_libs" = yes; then
8872748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Transform all the library objects into standard objects.
8873748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
8874748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
8875748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
8876748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8877748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
8878748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8879748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # template prelinking step
8880748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test -n "$prelink_cmds"; then
8881748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_execute_cmds "$prelink_cmds" 'exit $?'
8882748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
8883748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8884748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      wrappers_required=yes
8885748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      case $host in
8886748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      *cegcc* | *mingw32ce*)
8887748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway.
8888748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        wrappers_required=no
8889748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        ;;
8890748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      *cygwin* | *mingw* )
8891748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        if test "$build_libtool_libs" != yes; then
8892748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat          wrappers_required=no
8893748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        fi
8894748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        ;;
8895748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      *)
8896748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
8897748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat          wrappers_required=no
8898748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        fi
8899748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat        ;;
8900748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      esac
8901748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test "$wrappers_required" = no; then
8902748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Replace the output file specification.
8903748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
8904748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	link_command="$compile_command$compile_rpath"
8905748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8906748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# We have no uninstalled library dependencies, so finalize right now.
8907748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	exit_status=0
8908748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_show_eval "$link_command" 'exit_status=$?'
8909748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8910748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test -n "$postlink_cmds"; then
8911748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_to_tool_file "$output"
8912748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
8913748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_execute_cmds "$postlink_cmds" 'exit $?'
8914748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
8915748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8916748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Delete the generated files.
8917748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test -f "$output_objdir/${outputname}S.${objext}"; then
8918748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
8919748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
8920748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8921748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	exit $exit_status
8922748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
8923748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8924748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test -n "$compile_shlibpath$finalize_shlibpath"; then
8925748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
8926748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
8927748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test -n "$finalize_shlibpath"; then
8928748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
8929748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
8930748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8931748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      compile_var=
8932748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      finalize_var=
8933748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test -n "$runpath_var"; then
8934748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test -n "$perm_rpath"; then
8935748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # We should set the runpath_var.
8936748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  rpath=
8937748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  for dir in $perm_rpath; do
8938748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_append rpath "$dir:"
8939748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  done
8940748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
8941748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
8942748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test -n "$finalize_perm_rpath"; then
8943748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # We should set the runpath_var.
8944748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  rpath=
8945748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  for dir in $finalize_perm_rpath; do
8946748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_append rpath "$dir:"
8947748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  done
8948748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
8949748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
8950748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
8951748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8952748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test "$no_install" = yes; then
8953748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# We don't need to create a wrapper script.
8954748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	link_command="$compile_var$compile_command$compile_rpath"
8955748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Replace the output file specification.
8956748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
8957748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Delete the old output file.
8958748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	$opt_dry_run || $RM $output
8959748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Link the executable and exit
8960748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_show_eval "$link_command" 'exit $?'
8961748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8962748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test -n "$postlink_cmds"; then
8963748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_to_tool_file "$output"
8964748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
8965748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_execute_cmds "$postlink_cmds" 'exit $?'
8966748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
8967748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8968748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	exit $EXIT_SUCCESS
8969748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
8970748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8971748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test "$hardcode_action" = relink; then
8972748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Fast installation is not supported
8973748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	link_command="$compile_var$compile_command$compile_rpath"
8974748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	relink_command="$finalize_var$finalize_command$finalize_rpath"
8975748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8976748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_warning "this platform does not like uninstalled shared libraries"
8977748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_warning "\`$output' will be relinked during installation"
8978748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      else
8979748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test "$fast_install" != no; then
8980748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  link_command="$finalize_var$compile_command$finalize_rpath"
8981748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test "$fast_install" = yes; then
8982748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'`
8983748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  else
8984748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # fast_install is set to needless
8985748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    relink_command=
8986748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
8987748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	else
8988748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  link_command="$compile_var$compile_command$compile_rpath"
8989748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  relink_command="$finalize_var$finalize_command$finalize_rpath"
8990748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
8991748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
8992748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8993748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Replace the output file specification.
8994748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
8995748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8996748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Delete the old output files.
8997748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
8998748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
8999748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_show_eval "$link_command" 'exit $?'
9000748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9001748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test -n "$postlink_cmds"; then
9002748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_to_tool_file "$output_objdir/$outputname"
9003748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	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'`
9004748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_execute_cmds "$postlink_cmds" 'exit $?'
9005748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
9006748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9007748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Now create the wrapper script.
9008748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_verbose "creating $output"
9009748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9010748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Quote the relink command for shipping.
9011748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test -n "$relink_command"; then
9012748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Preserve any variables that may affect compiler behavior
9013748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	for var in $variables_saved_for_relink; do
9014748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if eval test -z \"\${$var+set}\"; then
9015748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
9016748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  elif eval var_value=\$$var; test -z "$var_value"; then
9017748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    relink_command="$var=; export $var; $relink_command"
9018748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  else
9019748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_quote_for_eval "$var_value"
9020748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
9021748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
9022748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	done
9023748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	relink_command="(cd `pwd`; $relink_command)"
9024748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
9025748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
9026748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9027748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Only actually do things if not in dry run mode.
9028748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      $opt_dry_run || {
9029748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# win32 will think the script is a binary if it has
9030748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# a .exe suffix, so we strip it off here.
9031748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	case $output in
9032748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *.exe) func_stripname '' '.exe' "$output"
9033748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	         output=$func_stripname_result ;;
9034748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	esac
9035748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# test for cygwin because mv fails w/o .exe extensions
9036748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	case $host in
9037748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *cygwin*)
9038748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    exeext=.exe
9039748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_stripname '' '.exe' "$outputname"
9040748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    outputname=$func_stripname_result ;;
9041748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *) exeext= ;;
9042748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	esac
9043748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	case $host in
9044748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *cygwin* | *mingw* )
9045748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_dirname_and_basename "$output" "" "."
9046748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    output_name=$func_basename_result
9047748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    output_path=$func_dirname_result
9048748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    cwrappersource="$output_path/$objdir/lt-$output_name.c"
9049748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    cwrapper="$output_path/$output_name.exe"
9050748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    $RM $cwrappersource $cwrapper
9051748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
9052748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9053748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_emit_cwrapperexe_src > $cwrappersource
9054748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9055748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # The wrapper executable is built using the $host compiler,
9056748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # because it contains $host paths and files. If cross-
9057748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # compiling, it, like the target executable, must be
9058748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # executed on the $host or under an emulation environment.
9059748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    $opt_dry_run || {
9060748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
9061748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      $STRIP $cwrapper
9062748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    }
9063748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9064748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # Now, create the wrapper script for func_source use:
9065748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_ltwrapper_scriptname $cwrapper
9066748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    $RM $func_ltwrapper_scriptname_result
9067748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
9068748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    $opt_dry_run || {
9069748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # note: this script will not be executed, so do not chmod.
9070748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      if test "x$build" = "x$host" ; then
9071748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		$cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
9072748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      else
9073748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		func_emit_wrapper no > $func_ltwrapper_scriptname_result
9074748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      fi
9075748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    }
9076748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
9077748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  * )
9078748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    $RM $output
9079748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
9080748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9081748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_emit_wrapper no > $output
9082748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    chmod +x $output
9083748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  ;;
9084748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	esac
9085748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      }
9086748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      exit $EXIT_SUCCESS
9087748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      ;;
9088748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    esac
9089748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9090748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # See if we need to build an old-fashioned archive.
9091748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    for oldlib in $oldlibs; do
9092748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9093748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test "$build_libtool_libs" = convenience; then
9094748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	oldobjs="$libobjs_save $symfileobj"
9095748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	addlibs="$convenience"
9096748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	build_libtool_libs=no
9097748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      else
9098748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test "$build_libtool_libs" = module; then
9099748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  oldobjs="$libobjs_save"
9100748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  build_libtool_libs=no
9101748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	else
9102748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  oldobjs="$old_deplibs $non_pic_objects"
9103748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test "$preload" = yes && test -f "$symfileobj"; then
9104748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_append oldobjs " $symfileobj"
9105748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
9106748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
9107748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	addlibs="$old_convenience"
9108748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
9109748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9110748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test -n "$addlibs"; then
9111748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	gentop="$output_objdir/${outputname}x"
9112748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_append generated " $gentop"
9113748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9114748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_extract_archives $gentop $addlibs
9115748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_append oldobjs " $func_extract_archives_result"
9116748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
9117748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9118748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Do each command in the archive commands.
9119748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
9120748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	cmds=$old_archive_from_new_cmds
9121748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      else
9122748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9123748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Add any objects from preloaded convenience libraries
9124748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test -n "$dlprefiles"; then
9125748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  gentop="$output_objdir/${outputname}x"
9126748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_append generated " $gentop"
9127748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9128748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_extract_archives $gentop $dlprefiles
9129748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_append oldobjs " $func_extract_archives_result"
9130748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
9131748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9132748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# POSIX demands no paths to be encoded in archives.  We have
9133748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# to avoid creating archives with duplicate basenames if we
9134748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# might have to extract them afterwards, e.g., when creating a
9135748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# static archive out of a convenience library, or when linking
9136748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# the entirety of a libtool archive into another (currently
9137748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# not supported by libtool).
9138748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if (for obj in $oldobjs
9139748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    do
9140748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      func_basename "$obj"
9141748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      $ECHO "$func_basename_result"
9142748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    done | sort | sort -uc >/dev/null 2>&1); then
9143748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  :
9144748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	else
9145748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  echo "copying selected object files to avoid basename conflicts..."
9146748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  gentop="$output_objdir/${outputname}x"
9147748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_append generated " $gentop"
9148748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_mkdir_p "$gentop"
9149748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  save_oldobjs=$oldobjs
9150748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  oldobjs=
9151748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  counter=1
9152748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  for obj in $save_oldobjs
9153748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  do
9154748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_basename "$obj"
9155748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    objbase="$func_basename_result"
9156748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    case " $oldobjs " in
9157748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    " ") oldobjs=$obj ;;
9158748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    *[\ /]"$objbase "*)
9159748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      while :; do
9160748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		# Make sure we don't pick an alternate name that also
9161748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		# overlaps.
9162748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		newobj=lt$counter-$objbase
9163748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		func_arith $counter + 1
9164748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		counter=$func_arith_result
9165748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		case " $oldobjs " in
9166748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		*[\ /]"$newobj "*) ;;
9167748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		*) if test ! -f "$gentop/$newobj"; then break; fi ;;
9168748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		esac
9169748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      done
9170748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
9171748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      func_append oldobjs " $gentop/$newobj"
9172748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      ;;
9173748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    *) func_append oldobjs " $obj" ;;
9174748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    esac
9175748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  done
9176748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
9177748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
9178748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	tool_oldlib=$func_to_tool_file_result
9179748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	eval cmds=\"$old_archive_cmds\"
9180748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9181748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_len " $cmds"
9182748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	len=$func_len_result
9183748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
9184748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  cmds=$old_archive_cmds
9185748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	elif test -n "$archiver_list_spec"; then
9186748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_verbose "using command file archive linking..."
9187748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  for obj in $oldobjs
9188748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  do
9189748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_to_tool_file "$obj"
9190748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    $ECHO "$func_to_tool_file_result"
9191748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  done > $output_objdir/$libname.libcmd
9192748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_to_tool_file "$output_objdir/$libname.libcmd"
9193748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  oldobjs=" $archiver_list_spec$func_to_tool_file_result"
9194748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  cmds=$old_archive_cmds
9195748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	else
9196748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # the command line is too long to link in one step, link in parts
9197748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_verbose "using piecewise archive linking..."
9198748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  save_RANLIB=$RANLIB
9199748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  RANLIB=:
9200748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  objlist=
9201748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  concat_cmds=
9202748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  save_oldobjs=$oldobjs
9203748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  oldobjs=
9204748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # Is there a better way of finding the last object in the list?
9205748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  for obj in $save_oldobjs
9206748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  do
9207748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    last_oldobj=$obj
9208748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  done
9209748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  eval test_cmds=\"$old_archive_cmds\"
9210748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_len " $test_cmds"
9211748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  len0=$func_len_result
9212748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  len=$len0
9213748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  for obj in $save_oldobjs
9214748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  do
9215748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_len " $obj"
9216748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_arith $len + $func_len_result
9217748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    len=$func_arith_result
9218748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_append objlist " $obj"
9219748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    if test "$len" -lt "$max_cmd_len"; then
9220748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      :
9221748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    else
9222748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # the above command should be used before it gets too long
9223748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      oldobjs=$objlist
9224748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      if test "$obj" = "$last_oldobj" ; then
9225748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		RANLIB=$save_RANLIB
9226748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      fi
9227748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
9228748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
9229748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      objlist=
9230748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      len=$len0
9231748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    fi
9232748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  done
9233748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  RANLIB=$save_RANLIB
9234748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  oldobjs=$objlist
9235748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test "X$oldobjs" = "X" ; then
9236748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    eval cmds=\"\$concat_cmds\"
9237748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  else
9238748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
9239748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
9240748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
9241748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
9242748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_execute_cmds "$cmds" 'exit $?'
9243748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    done
9244748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9245748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    test -n "$generated" && \
9246748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_show_eval "${RM}r$generated"
9247748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9248748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # Now create the libtool archive.
9249748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    case $output in
9250748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    *.la)
9251748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      old_library=
9252748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      test "$build_old_libs" = yes && old_library="$libname.$libext"
9253748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_verbose "creating $output"
9254748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9255748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Preserve any variables that may affect compiler behavior
9256748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      for var in $variables_saved_for_relink; do
9257748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if eval test -z \"\${$var+set}\"; then
9258748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
9259748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	elif eval var_value=\$$var; test -z "$var_value"; then
9260748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  relink_command="$var=; export $var; $relink_command"
9261748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	else
9262748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_quote_for_eval "$var_value"
9263748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
9264748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
9265748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      done
9266748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Quote the link command for shipping.
9267748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
9268748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
9269748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test "$hardcode_automatic" = yes ; then
9270748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	relink_command=
9271748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
9272748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9273748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Only create the output if not a dry run.
9274748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      $opt_dry_run || {
9275748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	for installed in no yes; do
9276748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test "$installed" = yes; then
9277748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    if test -z "$install_libdir"; then
9278748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      break
9279748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    fi
9280748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    output="$output_objdir/$outputname"i
9281748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # Replace all uninstalled libtool libraries with the installed ones
9282748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    newdependency_libs=
9283748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    for deplib in $dependency_libs; do
9284748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      case $deplib in
9285748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      *.la)
9286748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		func_basename "$deplib"
9287748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		name="$func_basename_result"
9288748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		func_resolve_sysroot "$deplib"
9289748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
9290748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		test -z "$libdir" && \
9291748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  func_fatal_error "\`$deplib' is not a valid libtool archive"
9292748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name"
9293748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		;;
9294748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      -L*)
9295748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		func_stripname -L '' "$deplib"
9296748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		func_replace_sysroot "$func_stripname_result"
9297748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		func_append newdependency_libs " -L$func_replace_sysroot_result"
9298748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		;;
9299748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      -R*)
9300748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		func_stripname -R '' "$deplib"
9301748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		func_replace_sysroot "$func_stripname_result"
9302748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		func_append newdependency_libs " -R$func_replace_sysroot_result"
9303748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		;;
9304748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      *) func_append newdependency_libs " $deplib" ;;
9305748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      esac
9306748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    done
9307748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    dependency_libs="$newdependency_libs"
9308748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    newdlfiles=
9309748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9310748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    for lib in $dlfiles; do
9311748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      case $lib in
9312748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      *.la)
9313748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	        func_basename "$lib"
9314748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		name="$func_basename_result"
9315748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
9316748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		test -z "$libdir" && \
9317748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  func_fatal_error "\`$lib' is not a valid libtool archive"
9318748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name"
9319748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		;;
9320748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      *) func_append newdlfiles " $lib" ;;
9321748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      esac
9322748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    done
9323748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    dlfiles="$newdlfiles"
9324748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    newdlprefiles=
9325748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    for lib in $dlprefiles; do
9326748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      case $lib in
9327748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      *.la)
9328748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		# Only pass preopened files to the pseudo-archive (for
9329748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		# eventual linking with the app. that links it) if we
9330748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		# didn't already link the preopened objects directly into
9331748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		# the library:
9332748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		func_basename "$lib"
9333748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		name="$func_basename_result"
9334748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
9335748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		test -z "$libdir" && \
9336748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		  func_fatal_error "\`$lib' is not a valid libtool archive"
9337748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name"
9338748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		;;
9339748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      esac
9340748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    done
9341748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    dlprefiles="$newdlprefiles"
9342748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  else
9343748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    newdlfiles=
9344748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    for lib in $dlfiles; do
9345748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      case $lib in
9346748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
9347748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		*) abs=`pwd`"/$lib" ;;
9348748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      esac
9349748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      func_append newdlfiles " $abs"
9350748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    done
9351748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    dlfiles="$newdlfiles"
9352748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    newdlprefiles=
9353748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    for lib in $dlprefiles; do
9354748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      case $lib in
9355748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
9356748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		*) abs=`pwd`"/$lib" ;;
9357748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      esac
9358748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      func_append newdlprefiles " $abs"
9359748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    done
9360748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    dlprefiles="$newdlprefiles"
9361748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
9362748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  $RM $output
9363748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # place dlname in correct position for cygwin
9364748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # In fact, it would be nice if we could use this code for all target
9365748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # systems that can't hard-code library paths into their executables
9366748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # and that have no shared library path variable independent of PATH,
9367748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # but it turns out we can't easily determine that from inspecting
9368748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # libtool variables, so we have to hard-code the OSs to which it
9369748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # applies here; at the moment, that means platforms that use the PE
9370748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # object format with DLL files.  See the long comment at the top of
9371748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # tests/bindir.at for full details.
9372748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  tdlname=$dlname
9373748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  case $host,$output,$installed,$module,$dlname in
9374748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll)
9375748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # If a -bindir argument was supplied, place the dll there.
9376748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      if test "x$bindir" != x ;
9377748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      then
9378748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		func_relative_path "$install_libdir" "$bindir"
9379748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		tdlname=$func_relative_path_result$dlname
9380748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      else
9381748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		# Otherwise fall back on heuristic.
9382748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat		tdlname=../bin/$dlname
9383748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      fi
9384748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      ;;
9385748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  esac
9386748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  $ECHO > $output "\
9387748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# $outputname - a libtool library file
9388748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
9389748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#
9390748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Please DO NOT delete this file!
9391748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# It is necessary for linking the library.
9392748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9393748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# The name that we can dlopen(3).
9394748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratdlname='$tdlname'
9395748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9396748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Names of this library.
9397748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratlibrary_names='$library_names'
9398748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9399748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# The name of the static archive.
9400748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratold_library='$old_library'
9401748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9402748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Linker flags that can not go in dependency_libs.
9403748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratinherited_linker_flags='$new_inherited_linker_flags'
9404748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9405748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Libraries that this one depends upon.
9406748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratdependency_libs='$dependency_libs'
9407748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9408748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Names of additional weak libraries provided by this library
9409748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratweak_library_names='$weak_libs'
9410748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9411748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Version information for $libname.
9412748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratcurrent=$current
9413748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratage=$age
9414748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratrevision=$revision
9415748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9416748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Is this an already installed library?
9417748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratinstalled=$installed
9418748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9419748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Should we warn about portability when linking against -modules?
9420748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratshouldnotlink=$module
9421748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9422748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Files to dlopen/dlpreopen
9423748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratdlopen='$dlfiles'
9424748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratdlpreopen='$dlprefiles'
9425748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9426748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Directory that this library needs to be installed in:
9427748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratlibdir='$install_libdir'"
9428748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test "$installed" = no && test "$need_relink" = yes; then
9429748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    $ECHO >> $output "\
9430748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratrelink_command=\"$relink_command\""
9431748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
9432748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	done
9433748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      }
9434748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9435748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Do a symbolic link so that the libtool archive can be found in
9436748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # LD_LIBRARY_PATH before the program is installed.
9437748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
9438748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      ;;
9439748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    esac
9440748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    exit $EXIT_SUCCESS
9441748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
9442748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9443748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ test "$opt_mode" = link || test "$opt_mode" = relink; } &&
9444748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_mode_link ${1+"$@"}
9445748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9446748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9447748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_mode_uninstall arg...
9448748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_mode_uninstall ()
9449748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{
9450748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    $opt_debug
9451748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    RM="$nonopt"
9452748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    files=
9453748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    rmforce=
9454748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    exit_status=0
9455748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9456748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # This variable tells wrapper scripts just to set variables rather
9457748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # than running their programs.
9458748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    libtool_install_magic="$magic"
9459748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9460748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    for arg
9461748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    do
9462748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      case $arg in
9463748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      -f) func_append RM " $arg"; rmforce=yes ;;
9464748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      -*) func_append RM " $arg" ;;
9465748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      *) func_append files " $arg" ;;
9466748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      esac
9467748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    done
9468748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9469748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    test -z "$RM" && \
9470748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_fatal_help "you must specify an RM program"
9471748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9472748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    rmdirs=
9473748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9474748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    for file in $files; do
9475748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_dirname "$file" "" "."
9476748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      dir="$func_dirname_result"
9477748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test "X$dir" = X.; then
9478748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	odir="$objdir"
9479748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      else
9480748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	odir="$dir/$objdir"
9481748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
9482748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_basename "$file"
9483748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      name="$func_basename_result"
9484748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      test "$opt_mode" = uninstall && odir="$dir"
9485748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9486748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Remember odir for removal later, being careful to avoid duplicates
9487748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test "$opt_mode" = clean; then
9488748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	case " $rmdirs " in
9489748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *" $odir "*) ;;
9490748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *) func_append rmdirs " $odir" ;;
9491748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	esac
9492748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
9493748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9494748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      # Don't error if the file doesn't exist and rm -f was used.
9495748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if { test -L "$file"; } >/dev/null 2>&1 ||
9496748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	 { test -h "$file"; } >/dev/null 2>&1 ||
9497748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	 test -f "$file"; then
9498748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	:
9499748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      elif test -d "$file"; then
9500748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	exit_status=1
9501748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	continue
9502748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      elif test "$rmforce" = yes; then
9503748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	continue
9504748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
9505748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9506748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      rmfiles="$file"
9507748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9508748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      case $name in
9509748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      *.la)
9510748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Possibly a libtool archive, so verify it.
9511748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if func_lalib_p "$file"; then
9512748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_source $dir/$name
9513748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9514748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # Delete the libtool libraries and symlinks.
9515748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  for n in $library_names; do
9516748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_append rmfiles " $odir/$n"
9517748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  done
9518748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  test -n "$old_library" && func_append rmfiles " $odir/$old_library"
9519748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9520748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  case "$opt_mode" in
9521748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  clean)
9522748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    case " $library_names " in
9523748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    *" $dlname "*) ;;
9524748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;;
9525748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    esac
9526748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i"
9527748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    ;;
9528748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  uninstall)
9529748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    if test -n "$library_names"; then
9530748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # Do each command in the postuninstall commands.
9531748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
9532748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    fi
9533748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9534748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    if test -n "$old_library"; then
9535748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      # Do each command in the old_postuninstall commands.
9536748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
9537748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    fi
9538748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # FIXME: should reinstall the best remaining shared library.
9539748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    ;;
9540748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  esac
9541748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
9542748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
9543748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9544748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      *.lo)
9545748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	# Possibly a libtool object, so verify it.
9546748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if func_lalib_p "$file"; then
9547748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9548748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # Read the .lo file
9549748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  func_source $dir/$name
9550748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9551748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # Add PIC object to the list of files to remove.
9552748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test -n "$pic_object" &&
9553748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	     test "$pic_object" != none; then
9554748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_append rmfiles " $dir/$pic_object"
9555748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
9556748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9557748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # Add non-PIC object to the list of files to remove.
9558748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if test -n "$non_pic_object" &&
9559748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	     test "$non_pic_object" != none; then
9560748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_append rmfiles " $dir/$non_pic_object"
9561748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
9562748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
9563748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
9564748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9565748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      *)
9566748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	if test "$opt_mode" = clean ; then
9567748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  noexename=$name
9568748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  case $file in
9569748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  *.exe)
9570748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_stripname '' '.exe' "$file"
9571748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    file=$func_stripname_result
9572748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_stripname '' '.exe' "$name"
9573748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    noexename=$func_stripname_result
9574748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # $file with .exe has already been added to rmfiles,
9575748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # add $file without .exe
9576748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_append rmfiles " $file"
9577748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    ;;
9578748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  esac
9579748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  # Do a test to see if this is a libtool program.
9580748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  if func_ltwrapper_p "$file"; then
9581748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    if func_ltwrapper_executable_p "$file"; then
9582748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      func_ltwrapper_scriptname "$file"
9583748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      relink_command=
9584748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      func_source $func_ltwrapper_scriptname_result
9585748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      func_append rmfiles " $func_ltwrapper_scriptname_result"
9586748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    else
9587748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      relink_command=
9588748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      func_source $dir/$noexename
9589748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    fi
9590748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9591748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # note $name still contains .exe if it was in $file originally
9592748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    # as does the version of $file that was added into $rmfiles
9593748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    func_append rmfiles " $odir/$name $odir/${name}S.${objext}"
9594748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    if test "$fast_install" = yes && test -n "$relink_command"; then
9595748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      func_append rmfiles " $odir/lt-$name"
9596748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    fi
9597748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    if test "X$noexename" != "X$name" ; then
9598748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	      func_append rmfiles " $odir/lt-${noexename}.c"
9599748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    fi
9600748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	  fi
9601748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	fi
9602748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	;;
9603748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      esac
9604748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      func_show_eval "$RM $rmfiles" 'exit_status=1'
9605748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    done
9606748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9607748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    # Try to remove the ${objdir}s in the directories where we deleted files
9608748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    for dir in $rmdirs; do
9609748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      if test -d "$dir"; then
9610748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	func_show_eval "rmdir $dir >/dev/null 2>&1"
9611748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat      fi
9612748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    done
9613748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9614748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    exit $exit_status
9615748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
9616748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9617748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } &&
9618748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat    func_mode_uninstall ${1+"$@"}
9619748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9620748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erattest -z "$opt_mode" && {
9621748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  help="$generic_help"
9622748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  func_fatal_help "you must specify a MODE"
9623748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}
9624748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9625748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erattest -z "$exec_cmd" && \
9626748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  func_fatal_help "invalid operation mode \`$opt_mode'"
9627748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9628748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratif test -n "$exec_cmd"; then
9629748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  eval exec "$exec_cmd"
9630748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat  exit $EXIT_FAILURE
9631748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfi
9632748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9633748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratexit $exit_status
9634748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9635748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9636748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# The TAGs below are defined such that we never get into a situation
9637748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# in which we disable both kinds of libraries.  Given conflicting
9638748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# choices, we go for a static library, that is the most portable,
9639748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# since we can't tell whether shared libraries were disabled because
9640748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# the user asked for that or because the platform doesn't support
9641748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# them.  This is particularly important on AIX, because we don't
9642748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# support having both static and shared libraries enabled at the same
9643748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# time on that platform, so we default to a shared-only configuration.
9644748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# If a disable-shared tag is given, we'll fallback to a static-only
9645748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# configuration.  But we'll never go from static-only to shared-only.
9646748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9647748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
9648748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratbuild_libtool_libs=no
9649748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratbuild_old_libs=yes
9650748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# ### END LIBTOOL TAG CONFIG: disable-shared
9651748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9652748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# ### BEGIN LIBTOOL TAG CONFIG: disable-static
9653748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratbuild_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
9654748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# ### END LIBTOOL TAG CONFIG: disable-static
9655748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9656748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Local Variables:
9657748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# mode:shell-script
9658748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# sh-indentation:2
9659748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# End:
9660748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# vi:sw=2
9661748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9662