1809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# libtool (GNU libtool) 2.4.2
3809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
4809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
6809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
7809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# This is free software; see the source for copying conditions.  There is NO
8809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
9809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
10809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# GNU Libtool is free software; you can redistribute it and/or modify
11809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# it under the terms of the GNU General Public License as published by
12809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# the Free Software Foundation; either version 2 of the License, or
13809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# (at your option) any later version.
14809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#
15809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# As a special exception to the GNU General Public License,
16809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# if you distribute this file as part of a program or library that
17809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# is built using GNU Libtool, you may include this file under the
18809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# same distribution terms that you use for the rest of that program.
19809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#
20809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# GNU Libtool is distributed in the hope that it will be useful, but
21809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# WITHOUT ANY WARRANTY; without even the implied warranty of
22809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
23809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# General Public License for more details.
24809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#
25809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# You should have received a copy of the GNU General Public License
26809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# along with GNU Libtool; see the file COPYING.  If not, a copy
27809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# can be downloaded from http://www.gnu.org/licenses/gpl.html,
28809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# or obtained by writing to the Free Software Foundation, Inc.,
29809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
30809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
31809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Usage: $progname [OPTION]... [MODE-ARG]...
32809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#
33809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Provide generalized library-building support services.
34809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#
35809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#       --config             show all configuration variables
36809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#       --debug              enable verbose shell tracing
37809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#   -n, --dry-run            display commands without modifying any files
38809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#       --features           display basic configuration information and exit
39809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#       --mode=MODE          use operation mode MODE
40809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#       --preserve-dup-deps  don't remove duplicate dependency libraries
41809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#       --quiet, --silent    don't print informational messages
42809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#       --no-quiet, --no-silent
43809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#                            print informational messages (default)
44809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#       --no-warn            don't display warning messages
45809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#       --tag=TAG            use configuration variables from tag TAG
46809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#   -v, --verbose            print more informational messages than default
47809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#       --no-verbose         don't print the extra informational messages
48809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#       --version            print version information
49809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#   -h, --help, --help-all   print short, long, or detailed help message
50809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#
51809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# MODE must be one of the following:
52809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#
53809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#         clean              remove files from the build directory
54809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#         compile            compile a source file into a libtool object
55809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#         execute            automatically set library path, then run a program
56809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#         finish             complete the installation of libtool libraries
57809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#         install            install libraries or executables
58809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#         link               create a library or an executable
59809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#         uninstall          remove libraries from an installed directory
60809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#
61809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# MODE-ARGS vary depending on the MODE.  When passed as first option,
62809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that.
63809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
64809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#
65809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# When reporting a bug, please describe a test case to reproduce it and
66809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# include the following information:
67809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#
68809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#         host-triplet:	$host
69809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#         shell:		$SHELL
70809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#         compiler:		$LTCC
71809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#         compiler flags:		$LTCFLAGS
72809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#         linker:		$LD (gnu? $with_gnu_ld)
73809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#         $progname:	(GNU libtool) 2.4.2 Debian-2.4.2-1.11
74809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#         automake:	$automake_version
75809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#         autoconf:	$autoconf_version
76809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#
77809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Report bugs to <bug-libtool@gnu.org>.
78809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# GNU libtool home page: <http://www.gnu.org/software/libtool/>.
79809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# General help using GNU software: <http://www.gnu.org/gethelp/>.
80809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
81809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsPROGRAM=libtool
82809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsPACKAGE=libtool
83809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsVERSION="2.4.2 Debian-2.4.2-1.11"
84809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsTIMESTAMP=""
85809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatspackage_revision=1.3337
86809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
87809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Be Bourne compatible
88809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
89809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  emulate sh
90809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  NULLCMD=:
91809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
92809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  # is contrary to our usage.  Disable this feature.
93809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  alias -g '${1+"$@"}'='"$@"'
94809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  setopt NO_GLOB_SUBST
95809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatselse
96809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
97809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfi
98809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsBIN_SH=xpg4; export BIN_SH # for Tru64
99809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsDUALCASE=1; export DUALCASE # for MKS sh
100809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
101809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# A function that is used when there is no print builtin or printf.
102809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_fallback_echo ()
103809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
104809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  eval 'cat <<_LTECHO_EOF
105809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats$1
106809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats_LTECHO_EOF'
107809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
108809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
109809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# NLS nuisances: We save the old values to restore during execute mode.
110809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatslt_user_locale=
111809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatslt_safe_locale=
112809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfor lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
113809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsdo
114809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  eval "if test \"\${$lt_var+set}\" = set; then
115809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats          save_$lt_var=\$$lt_var
116809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats          $lt_var=C
117809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  export $lt_var
118809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
119809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
120809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi"
121809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsdone
122809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsLC_ALL=C
123809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsLANGUAGE=C
124809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsexport LANGUAGE LC_ALL
125809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
126809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats$lt_unset CDPATH
127809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
128809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
129809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
130809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# is ksh but when the shell is invoked as "sh" and the current value of
131809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# the _XPG environment variable is not equal to 1 (one), the special
132809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# positional parameter $0, within a function call, is the name of the
133809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# function.
134809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsprogpath="$0"
135809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
136809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
137809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
138809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats: ${CP="cp -f"}
139809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatstest "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
140809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats: ${MAKE="make"}
141809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats: ${MKDIR="mkdir"}
142809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats: ${MV="mv -f"}
143809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats: ${RM="rm -f"}
144809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
145809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats: ${Xsed="$SED -e 1s/^X//"}
146809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
147809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Global variables:
148809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsEXIT_SUCCESS=0
149809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsEXIT_FAILURE=1
150809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsEXIT_MISMATCH=63  # $? = 63 is used to indicate version mismatch to missing.
151809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsEXIT_SKIP=77	  # $? = 77 is used to indicate a skipped test to automake.
152809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
153809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsexit_status=$EXIT_SUCCESS
154809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
155809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Make sure IFS has a sensible default
156809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatslt_nl='
157809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats'
158809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsIFS=" 	$lt_nl"
159809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
160809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsdirname="s,/[^/]*$,,"
161809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsbasename="s,^.*/,,"
162809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
163809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_dirname file append nondir_replacement
164809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
165809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# otherwise set result to NONDIR_REPLACEMENT.
166809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_dirname ()
167809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
168809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
169809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    if test "X$func_dirname_result" = "X${1}"; then
170809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_dirname_result="${3}"
171809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    else
172809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_dirname_result="$func_dirname_result${2}"
173809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    fi
174809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} # func_dirname may be replaced by extended shell implementation
175809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
176809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
177809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_basename file
178809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_basename ()
179809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
180809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_basename_result=`$ECHO "${1}" | $SED "$basename"`
181809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} # func_basename may be replaced by extended shell implementation
182809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
183809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
184809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_dirname_and_basename file append nondir_replacement
185809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# perform func_basename and func_dirname in a single function
186809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# call:
187809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#   dirname:  Compute the dirname of FILE.  If nonempty,
188809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#             add APPEND to the result, otherwise set result
189809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#             to NONDIR_REPLACEMENT.
190809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#             value returned in "$func_dirname_result"
191809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#   basename: Compute filename of FILE.
192809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#             value retuned in "$func_basename_result"
193809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Implementation must be kept synchronized with func_dirname
194809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# and func_basename. For efficiency, we do not delegate to
195809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# those functions but instead duplicate the functionality here.
196809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_dirname_and_basename ()
197809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
198809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # Extract subdirectory from the argument.
199809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"`
200809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    if test "X$func_dirname_result" = "X${1}"; then
201809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_dirname_result="${3}"
202809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    else
203809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_dirname_result="$func_dirname_result${2}"
204809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    fi
205809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_basename_result=`$ECHO "${1}" | $SED -e "$basename"`
206809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} # func_dirname_and_basename may be replaced by extended shell implementation
207809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
208809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
209809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_stripname prefix suffix name
210809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# strip PREFIX and SUFFIX off of NAME.
211809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# PREFIX and SUFFIX must not contain globbing or regex special
212809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# characters, hashes, percent signs, but SUFFIX may contain a leading
213809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# dot (in which case that matches only a dot).
214809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_strip_suffix prefix name
215809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_stripname ()
216809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
217809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    case ${2} in
218809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
219809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      *)  func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
220809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    esac
221809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} # func_stripname may be replaced by extended shell implementation
222809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
223809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
224809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# These SED scripts presuppose an absolute path with a trailing slash.
225809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatspathcar='s,^/\([^/]*\).*$,\1,'
226809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatspathcdr='s,^/[^/]*,,'
227809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsremovedotparts=':dotsl
228809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		s@/\./@/@g
229809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		t dotsl
230809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		s,/\.$,/,'
231809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatscollapseslashes='s@/\{1,\}@/@g'
232809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfinalslash='s,/*$,/,'
233809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
234809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_normal_abspath PATH
235809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Remove doubled-up and trailing slashes, "." path components,
236809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# and cancel out any ".." path components in PATH after making
237809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# it an absolute path.
238809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#             value returned in "$func_normal_abspath_result"
239809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_normal_abspath ()
240809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
241809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  # Start from root dir and reassemble the path.
242809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  func_normal_abspath_result=
243809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  func_normal_abspath_tpath=$1
244809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  func_normal_abspath_altnamespace=
245809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  case $func_normal_abspath_tpath in
246809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    "")
247809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Empty path, that just means $cwd.
248809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_stripname '' '/' "`pwd`"
249809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_normal_abspath_result=$func_stripname_result
250809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      return
251809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    ;;
252809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # The next three entries are used to spot a run of precisely
253809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # two leading slashes without using negated character classes;
254809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # we take advantage of case's first-match behaviour.
255809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    ///*)
256809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Unusual form of absolute path, do nothing.
257809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    ;;
258809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    //*)
259809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Not necessarily an ordinary path; POSIX reserves leading '//'
260809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # and for example Cygwin uses it to access remote file shares
261809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # over CIFS/SMB, so we conserve a leading double slash if found.
262809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_normal_abspath_altnamespace=/
263809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    ;;
264809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    /*)
265809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Absolute path, do nothing.
266809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    ;;
267809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    *)
268809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Relative path, prepend $cwd.
269809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath
270809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    ;;
271809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  esac
272809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  # Cancel out all the simple stuff to save iterations.  We also want
273809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  # the path to end with a slash for ease of parsing, so make sure
274809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  # there is one (and only one) here.
275809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
276809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"`
277809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  while :; do
278809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # Processed it all yet?
279809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    if test "$func_normal_abspath_tpath" = / ; then
280809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # If we ascended to the root using ".." the result may be empty now.
281809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test -z "$func_normal_abspath_result" ; then
282809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        func_normal_abspath_result=/
283809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
284809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      break
285809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    fi
286809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \
287809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        -e "$pathcar"`
288809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
289809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        -e "$pathcdr"`
290809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # Figure out what to do with it
291809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    case $func_normal_abspath_tcomponent in
292809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      "")
293809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        # Trailing empty path component, ignore it.
294809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      ;;
295809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      ..)
296809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        # Parent dir; strip last assembled component from result.
297809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        func_dirname "$func_normal_abspath_result"
298809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        func_normal_abspath_result=$func_dirname_result
299809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      ;;
300809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      *)
301809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        # Actual path component, append it.
302809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent
303809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      ;;
304809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    esac
305809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  done
306809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  # Restore leading double-slash if one was found on entry.
307809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result
308809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
309809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
310809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_relative_path SRCDIR DSTDIR
311809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# generates a relative path from SRCDIR to DSTDIR, with a trailing
312809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# slash if non-empty, suitable for immediately appending a filename
313809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# without needing to append a separator.
314809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#             value returned in "$func_relative_path_result"
315809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_relative_path ()
316809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
317809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  func_relative_path_result=
318809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  func_normal_abspath "$1"
319809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  func_relative_path_tlibdir=$func_normal_abspath_result
320809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  func_normal_abspath "$2"
321809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  func_relative_path_tbindir=$func_normal_abspath_result
322809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
323809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  # Ascend the tree starting from libdir
324809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  while :; do
325809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # check if we have found a prefix of bindir
326809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    case $func_relative_path_tbindir in
327809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      $func_relative_path_tlibdir)
328809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        # found an exact match
329809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        func_relative_path_tcancelled=
330809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        break
331809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        ;;
332809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      $func_relative_path_tlibdir*)
333809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        # found a matching prefix
334809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir"
335809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        func_relative_path_tcancelled=$func_stripname_result
336809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        if test -z "$func_relative_path_result"; then
337809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats          func_relative_path_result=.
338809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        fi
339809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        break
340809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        ;;
341809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      *)
342809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        func_dirname $func_relative_path_tlibdir
343809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        func_relative_path_tlibdir=${func_dirname_result}
344809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        if test "x$func_relative_path_tlibdir" = x ; then
345809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats          # Have to descend all the way to the root!
346809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats          func_relative_path_result=../$func_relative_path_result
347809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats          func_relative_path_tcancelled=$func_relative_path_tbindir
348809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats          break
349809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        fi
350809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        func_relative_path_result=../$func_relative_path_result
351809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        ;;
352809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    esac
353809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  done
354809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
355809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  # Now calculate path; take care to avoid doubling-up slashes.
356809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  func_stripname '' '/' "$func_relative_path_result"
357809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  func_relative_path_result=$func_stripname_result
358809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  func_stripname '/' '/' "$func_relative_path_tcancelled"
359809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  if test "x$func_stripname_result" != x ; then
360809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_relative_path_result=${func_relative_path_result}/${func_stripname_result}
361809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  fi
362809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
363809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  # Normalisation. If bindir is libdir, return empty string,
364809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  # else relative path ending with a slash; either way, target
365809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  # file name can be directly appended.
366809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  if test ! -z "$func_relative_path_result"; then
367809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_stripname './' '' "$func_relative_path_result/"
368809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_relative_path_result=$func_stripname_result
369809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  fi
370809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
371809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
372809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# The name of this program:
373809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_dirname_and_basename "$progpath"
374809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsprogname=$func_basename_result
375809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
376809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Make sure we have an absolute path for reexecution:
377809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatscase $progpath in
378809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  [\\/]*|[A-Za-z]:\\*) ;;
379809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  *[\\/]*)
380809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats     progdir=$func_dirname_result
381809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats     progdir=`cd "$progdir" && pwd`
382809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats     progpath="$progdir/$progname"
383809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats     ;;
384809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  *)
385809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats     save_IFS="$IFS"
386809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats     IFS=${PATH_SEPARATOR-:}
387809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats     for progdir in $PATH; do
388809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats       IFS="$save_IFS"
389809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats       test -x "$progdir/$progname" && break
390809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats     done
391809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats     IFS="$save_IFS"
392809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats     test -n "$progdir" || progdir=`pwd`
393809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats     progpath="$progdir/$progname"
394809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats     ;;
395809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsesac
396809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
397809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Sed substitution that helps us do robust quoting.  It backslashifies
398809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# metacharacters that are still active within double-quoted strings.
399809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsXsed="${SED}"' -e 1s/^X//'
400809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatssed_quote_subst='s/\([`"$\\]\)/\\\1/g'
401809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
402809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Same as above, but do not quote variable references.
403809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsdouble_quote_subst='s/\(["`\\]\)/\\\1/g'
404809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
405809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Sed substitution that turns a string into a regex matching for the
406809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# string literally.
407809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatssed_make_literal_regex='s,[].[^$\\*\/],\\&,g'
408809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
409809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Sed substitution that converts a w32 file name or path
410809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# which contains forward slashes, into one that contains
411809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# (escaped) backslashes.  A very naive implementation.
412809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatslt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
413809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
414809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Re-`\' parameter expansions in output of double_quote_subst that were
415809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# `\'-ed in input to the same.  If an odd number of `\' preceded a '$'
416809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# in input to double_quote_subst, that '$' was protected from expansion.
417809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Since each input `\' is now two `\'s, look for any number of runs of
418809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# four `\'s followed by two `\'s and then a '$'.  `\' that '$'.
419809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsbs='\\'
420809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsbs2='\\\\'
421809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsbs4='\\\\\\\\'
422809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsdollar='\$'
423809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatssed_double_backslash="\
424809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  s/$bs4/&\\
425809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats/g
426809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  s/^$bs2$dollar/$bs&/
427809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
428809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  s/\n//g"
429809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
430809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Standard options:
431809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsopt_dry_run=false
432809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsopt_help=false
433809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsopt_quiet=false
434809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsopt_verbose=false
435809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsopt_warning=:
436809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
437809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_echo arg...
438809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Echo program name prefixed message, along with the current mode
439809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# name if it has been set yet.
440809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_echo ()
441809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
442809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    $ECHO "$progname: ${opt_mode+$opt_mode: }$*"
443809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
444809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
445809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_verbose arg...
446809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Echo program name prefixed message in verbose mode only.
447809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_verbose ()
448809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
449809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    $opt_verbose && func_echo ${1+"$@"}
450809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
451809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # A bug in bash halts the script if the last line of a function
452809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # fails when set -e is in force, so we need another command to
453809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # work around that:
454809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    :
455809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
456809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
457809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_echo_all arg...
458809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Invoke $ECHO with all args, space-separated.
459809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_echo_all ()
460809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
461809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    $ECHO "$*"
462809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
463809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
464809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_error arg...
465809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Echo program name prefixed message to standard error.
466809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_error ()
467809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
468809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2
469809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
470809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
471809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_warning arg...
472809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Echo program name prefixed warning message to standard error.
473809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_warning ()
474809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
475809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2
476809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
477809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # bash bug again:
478809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    :
479809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
480809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
481809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_fatal_error arg...
482809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Echo program name prefixed message to standard error, and exit.
483809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_fatal_error ()
484809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
485809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_error ${1+"$@"}
486809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    exit $EXIT_FAILURE
487809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
488809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
489809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_fatal_help arg...
490809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Echo program name prefixed message to standard error, followed by
491809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# a help hint, and exit.
492809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_fatal_help ()
493809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
494809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_error ${1+"$@"}
495809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_fatal_error "$help"
496809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
497809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatshelp="Try \`$progname --help' for more information."  ## default
498809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
499809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
500809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_grep expression filename
501809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Check whether EXPRESSION matches any line of FILENAME, without output.
502809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_grep ()
503809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
504809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    $GREP "$1" "$2" >/dev/null 2>&1
505809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
506809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
507809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
508809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_mkdir_p directory-path
509809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Make sure the entire path to DIRECTORY-PATH is available.
510809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_mkdir_p ()
511809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
512809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    my_directory_path="$1"
513809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    my_dir_list=
514809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
515809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
516809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
517809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Protect directory names starting with `-'
518809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      case $my_directory_path in
519809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        -*) my_directory_path="./$my_directory_path" ;;
520809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      esac
521809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
522809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # While some portion of DIR does not yet exist...
523809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      while test ! -d "$my_directory_path"; do
524809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        # ...make a list in topmost first order.  Use a colon delimited
525809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# list incase some portion of path contains whitespace.
526809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        my_dir_list="$my_directory_path:$my_dir_list"
527809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
528809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        # If the last portion added has no slash in it, the list is done
529809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        case $my_directory_path in */*) ;; *) break ;; esac
530809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
531809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        # ...otherwise throw away the child directory and loop
532809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"`
533809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      done
534809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'`
535809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
536809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      save_mkdir_p_IFS="$IFS"; IFS=':'
537809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      for my_dir in $my_dir_list; do
538809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	IFS="$save_mkdir_p_IFS"
539809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        # mkdir can fail with a `File exist' error if two processes
540809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        # try to create one of the directories concurrently.  Don't
541809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        # stop in that case!
542809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        $MKDIR "$my_dir" 2>/dev/null || :
543809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      done
544809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      IFS="$save_mkdir_p_IFS"
545809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
546809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Bail out if we (or some other process) failed to create a directory.
547809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      test -d "$my_directory_path" || \
548809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        func_fatal_error "Failed to create \`$1'"
549809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    fi
550809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
551809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
552809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
553809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_mktempdir [string]
554809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Make a temporary directory that won't clash with other running
555809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# libtool processes, and avoids race conditions if possible.  If
556809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# given, STRING is the basename for that directory.
557809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_mktempdir ()
558809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
559809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    my_template="${TMPDIR-/tmp}/${1-$progname}"
560809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
561809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    if test "$opt_dry_run" = ":"; then
562809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Return a directory name, but don't create it in dry-run mode
563809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      my_tmpdir="${my_template}-$$"
564809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    else
565809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
566809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # If mktemp works, use that first and foremost
567809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
568809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
569809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test ! -d "$my_tmpdir"; then
570809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        # Failing that, at least try and use $RANDOM to avoid a race
571809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        my_tmpdir="${my_template}-${RANDOM-0}$$"
572809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
573809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        save_mktempdir_umask=`umask`
574809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        umask 0077
575809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        $MKDIR "$my_tmpdir"
576809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        umask $save_mktempdir_umask
577809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
578809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
579809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # If we're not in dry-run mode, bomb out on failure
580809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      test -d "$my_tmpdir" || \
581809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
582809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    fi
583809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
584809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    $ECHO "$my_tmpdir"
585809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
586809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
587809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
588809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_quote_for_eval arg
589809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Aesthetically quote ARG to be evaled later.
590809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
591809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# is double-quoted, suitable for a subsequent eval, whereas
592809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
593809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# which are still active within double quotes backslashified.
594809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_quote_for_eval ()
595809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
596809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    case $1 in
597809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      *[\\\`\"\$]*)
598809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;;
599809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      *)
600809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        func_quote_for_eval_unquoted_result="$1" ;;
601809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    esac
602809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
603809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    case $func_quote_for_eval_unquoted_result in
604809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Double-quote args containing shell metacharacters to delay
605809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # word splitting, command substitution and and variable
606809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # expansion for a subsequent eval.
607809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Many Bourne shells cannot handle close brackets correctly
608809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # in scan sets, so we specify it separately.
609809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
610809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
611809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        ;;
612809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      *)
613809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
614809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    esac
615809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
616809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
617809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
618809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_quote_for_expand arg
619809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Aesthetically quote ARG to be evaled later; same as above,
620809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# but do not quote variable references.
621809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_quote_for_expand ()
622809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
623809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    case $1 in
624809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      *[\\\`\"]*)
625809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	my_arg=`$ECHO "$1" | $SED \
626809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
627809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      *)
628809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        my_arg="$1" ;;
629809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    esac
630809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
631809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    case $my_arg in
632809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Double-quote args containing shell metacharacters to delay
633809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # word splitting and command substitution for a subsequent eval.
634809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Many Bourne shells cannot handle close brackets correctly
635809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # in scan sets, so we specify it separately.
636809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
637809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        my_arg="\"$my_arg\""
638809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        ;;
639809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    esac
640809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
641809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_quote_for_expand_result="$my_arg"
642809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
643809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
644809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
645809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_show_eval cmd [fail_exp]
646809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
647809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
648809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# is given, then evaluate it.
649809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_show_eval ()
650809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
651809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    my_cmd="$1"
652809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    my_fail_exp="${2-:}"
653809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
654809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    ${opt_silent-false} || {
655809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_quote_for_expand "$my_cmd"
656809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      eval "func_echo $func_quote_for_expand_result"
657809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    }
658809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
659809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    if ${opt_dry_run-false}; then :; else
660809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      eval "$my_cmd"
661809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      my_status=$?
662809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test "$my_status" -eq 0; then :; else
663809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	eval "(exit $my_status); $my_fail_exp"
664809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
665809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    fi
666809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
667809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
668809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
669809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_show_eval_locale cmd [fail_exp]
670809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
671809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
672809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# is given, then evaluate it.  Use the saved locale for evaluation.
673809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_show_eval_locale ()
674809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
675809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    my_cmd="$1"
676809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    my_fail_exp="${2-:}"
677809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
678809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    ${opt_silent-false} || {
679809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_quote_for_expand "$my_cmd"
680809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      eval "func_echo $func_quote_for_expand_result"
681809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    }
682809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
683809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    if ${opt_dry_run-false}; then :; else
684809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      eval "$lt_user_locale
685809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    $my_cmd"
686809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      my_status=$?
687809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      eval "$lt_safe_locale"
688809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test "$my_status" -eq 0; then :; else
689809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	eval "(exit $my_status); $my_fail_exp"
690809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
691809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    fi
692809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
693809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
694809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_tr_sh
695809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Turn $1 into a string suitable for a shell variable name.
696809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Result is stored in $func_tr_sh_result.  All characters
697809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# not in the set a-zA-Z0-9_ are replaced with '_'. Further,
698809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# if $1 begins with a digit, a '_' is prepended as well.
699809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_tr_sh ()
700809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
701809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  case $1 in
702809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  [0-9]* | *[!a-zA-Z0-9_]*)
703809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'`
704809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    ;;
705809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  * )
706809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_tr_sh_result=$1
707809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    ;;
708809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  esac
709809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
710809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
711809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
712809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_version
713809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Echo version message to standard output and exit.
714809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_version ()
715809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
716809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    $opt_debug
717809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
718809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    $SED -n '/(C)/!b go
719809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	:more
720809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	/\./!{
721809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  N
722809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  s/\n# / /
723809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  b more
724809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	}
725809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	:go
726809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	/^# '$PROGRAM' (GNU /,/# warranty; / {
727809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        s/^# //
728809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	s/^# *$//
729809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
730809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        p
731809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats     }' < "$progpath"
732809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats     exit $?
733809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
734809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
735809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_usage
736809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Echo short help message to standard output and exit.
737809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_usage ()
738809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
739809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    $opt_debug
740809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
741809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    $SED -n '/^# Usage:/,/^#  *.*--help/ {
742809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        s/^# //
743809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	s/^# *$//
744809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	s/\$progname/'$progname'/
745809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	p
746809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    }' < "$progpath"
747809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    echo
748809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    $ECHO "run \`$progname --help | more' for full usage"
749809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    exit $?
750809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
751809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
752809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_help [NOEXIT]
753809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Echo long help message to standard output and exit,
754809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# unless 'noexit' is passed as argument.
755809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_help ()
756809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
757809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    $opt_debug
758809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
759809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    $SED -n '/^# Usage:/,/# Report bugs to/ {
760809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	:print
761809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        s/^# //
762809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	s/^# *$//
763809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	s*\$progname*'$progname'*
764809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	s*\$host*'"$host"'*
765809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	s*\$SHELL*'"$SHELL"'*
766809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	s*\$LTCC*'"$LTCC"'*
767809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	s*\$LTCFLAGS*'"$LTCFLAGS"'*
768809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	s*\$LD*'"$LD"'*
769809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	s/\$with_gnu_ld/'"$with_gnu_ld"'/
770809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/
771809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/
772809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	p
773809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	d
774809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats     }
775809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats     /^# .* home page:/b print
776809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats     /^# General help using/b print
777809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats     ' < "$progpath"
778809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    ret=$?
779809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    if test -z "$1"; then
780809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      exit $ret
781809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    fi
782809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
783809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
784809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_missing_arg argname
785809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Echo program name prefixed message to standard error and set global
786809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# exit_cmd.
787809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_missing_arg ()
788809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
789809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    $opt_debug
790809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
791809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_error "missing argument for $1."
792809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    exit_cmd=exit
793809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
794809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
795809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
796809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_split_short_opt shortopt
797809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Set func_split_short_opt_name and func_split_short_opt_arg shell
798809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# variables after splitting SHORTOPT after the 2nd character.
799809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_split_short_opt ()
800809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
801809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    my_sed_short_opt='1s/^\(..\).*$/\1/;q'
802809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    my_sed_short_rest='1s/^..\(.*\)$/\1/;q'
803809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
804809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"`
805809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"`
806809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} # func_split_short_opt may be replaced by extended shell implementation
807809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
808809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
809809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_split_long_opt longopt
810809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Set func_split_long_opt_name and func_split_long_opt_arg shell
811809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# variables after splitting LONGOPT at the `=' sign.
812809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_split_long_opt ()
813809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
814809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q'
815809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    my_sed_long_arg='1s/^--[^=]*=//'
816809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
817809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"`
818809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"`
819809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} # func_split_long_opt may be replaced by extended shell implementation
820809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
821809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsexit_cmd=:
822809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
823809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
824809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
825809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
826809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
827809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsmagic="%%%MAGIC variable%%%"
828809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsmagic_exe="%%%MAGIC EXE variable%%%"
829809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
830809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Global variables.
831809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsnonopt=
832809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatspreserve_args=
833809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatslo2o="s/\\.lo\$/.${objext}/"
834809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatso2lo="s/\\.${objext}\$/.lo/"
835809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsextracted_archives=
836809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsextracted_serial=0
837809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
838809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# If this variable is set in any of the actions, the command in it
839809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# will be execed at the end.  This prevents here-documents from being
840809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# left over by shells.
841809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsexec_cmd=
842809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
843809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_append var value
844809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Append VALUE to the end of shell variable VAR.
845809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_append ()
846809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
847809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    eval "${1}=\$${1}\${2}"
848809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} # func_append may be replaced by extended shell implementation
849809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
850809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_append_quoted var value
851809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Quote VALUE and append to the end of shell variable VAR, separated
852809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# by a space.
853809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_append_quoted ()
854809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
855809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_quote_for_eval "${2}"
856809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    eval "${1}=\$${1}\\ \$func_quote_for_eval_result"
857809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} # func_append_quoted may be replaced by extended shell implementation
858809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
859809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
860809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_arith arithmetic-term...
861809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_arith ()
862809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
863809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_arith_result=`expr "${@}"`
864809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} # func_arith may be replaced by extended shell implementation
865809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
866809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
867809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_len string
868809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# STRING may not start with a hyphen.
869809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_len ()
870809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
871809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len`
872809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} # func_len may be replaced by extended shell implementation
873809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
874809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
875809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_lo2o object
876809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_lo2o ()
877809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
878809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
879809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} # func_lo2o may be replaced by extended shell implementation
880809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
881809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
882809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_xform libobj-or-source
883809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_xform ()
884809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
885809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
886809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} # func_xform may be replaced by extended shell implementation
887809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
888809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
889809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_fatal_configuration arg...
890809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Echo program name prefixed message to standard error, followed by
891809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# a configuration failure hint, and exit.
892809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_fatal_configuration ()
893809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
894809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_error ${1+"$@"}
895809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_error "See the $PACKAGE documentation for more information."
896809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_fatal_error "Fatal configuration error."
897809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
898809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
899809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
900809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_config
901809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Display the configuration for all the tags in this script.
902809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_config ()
903809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
904809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    re_begincf='^# ### BEGIN LIBTOOL'
905809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    re_endcf='^# ### END LIBTOOL'
906809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
907809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # Default configuration.
908809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
909809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
910809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # Now print the configurations for the tags.
911809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    for tagname in $taglist; do
912809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
913809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    done
914809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
915809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    exit $?
916809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
917809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
918809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_features
919809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Display the features supported by this script.
920809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_features ()
921809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
922809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    echo "host: $host"
923809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    if test "$build_libtool_libs" = yes; then
924809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      echo "enable shared libraries"
925809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    else
926809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      echo "disable shared libraries"
927809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    fi
928809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    if test "$build_old_libs" = yes; then
929809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      echo "enable static libraries"
930809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    else
931809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      echo "disable static libraries"
932809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    fi
933809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
934809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    exit $?
935809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
936809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
937809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_enable_tag tagname
938809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Verify that TAGNAME is valid, and either flag an error and exit, or
939809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# enable the TAGNAME tag.  We also add TAGNAME to the global $taglist
940809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# variable here.
941809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_enable_tag ()
942809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
943809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  # Global variable:
944809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  tagname="$1"
945809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
946809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
947809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
948809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  sed_extractcf="/$re_begincf/,/$re_endcf/p"
949809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
950809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  # Validate tagname.
951809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  case $tagname in
952809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    *[!-_A-Za-z0-9,/]*)
953809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_fatal_error "invalid tag name: $tagname"
954809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      ;;
955809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  esac
956809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
957809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  # Don't test for the "default" C tag, as we know it's
958809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  # there but not specially marked.
959809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  case $tagname in
960809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    CC) ;;
961809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    *)
962809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
963809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	taglist="$taglist $tagname"
964809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
965809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Evaluate the configuration.  Be careful to quote the path
966809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# and the sed script, to avoid splitting on whitespace, but
967809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# also don't use non-portable quotes within backquotes within
968809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# quotes we have to do it in 2 steps:
969809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
970809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	eval "$extractedcf"
971809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      else
972809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_error "ignoring unknown tag $tagname"
973809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
974809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      ;;
975809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  esac
976809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
977809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
978809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_check_version_match
979809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Ensure that we are using m4 macros, and libtool script from the same
980809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# release of libtool.
981809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_check_version_match ()
982809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
983809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  if test "$package_revision" != "$macro_revision"; then
984809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    if test "$VERSION" != "$macro_version"; then
985809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test -z "$macro_version"; then
986809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        cat >&2 <<_LT_EOF
987809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
988809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats$progname: definition of this LT_INIT comes from an older release.
989809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
990809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats$progname: and run autoconf again.
991809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats_LT_EOF
992809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      else
993809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        cat >&2 <<_LT_EOF
994809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
995809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
996809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
997809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats$progname: and run autoconf again.
998809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats_LT_EOF
999809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
1000809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    else
1001809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      cat >&2 <<_LT_EOF
1002809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats$progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision,
1003809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats$progname: but the definition of this LT_INIT comes from revision $macro_revision.
1004809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats$progname: You should recreate aclocal.m4 with macros from revision $package_revision
1005809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats$progname: of $PACKAGE $VERSION and run autoconf again.
1006809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats_LT_EOF
1007809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    fi
1008809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1009809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    exit $EXIT_MISMATCH
1010809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  fi
1011809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
1012809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1013809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1014809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Shorthand for --mode=foo, only valid as the first argument
1015809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatscase $1 in
1016809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsclean|clea|cle|cl)
1017809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  shift; set dummy --mode clean ${1+"$@"}; shift
1018809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  ;;
1019809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatscompile|compil|compi|comp|com|co|c)
1020809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  shift; set dummy --mode compile ${1+"$@"}; shift
1021809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  ;;
1022809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsexecute|execut|execu|exec|exe|ex|e)
1023809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  shift; set dummy --mode execute ${1+"$@"}; shift
1024809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  ;;
1025809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfinish|finis|fini|fin|fi|f)
1026809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  shift; set dummy --mode finish ${1+"$@"}; shift
1027809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  ;;
1028809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsinstall|instal|insta|inst|ins|in|i)
1029809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  shift; set dummy --mode install ${1+"$@"}; shift
1030809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  ;;
1031809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatslink|lin|li|l)
1032809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  shift; set dummy --mode link ${1+"$@"}; shift
1033809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  ;;
1034809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsuninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
1035809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  shift; set dummy --mode uninstall ${1+"$@"}; shift
1036809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  ;;
1037809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsesac
1038809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1039809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1040809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1041809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Option defaults:
1042809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsopt_debug=:
1043809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsopt_dry_run=false
1044809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsopt_config=false
1045809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsopt_preserve_dup_deps=false
1046809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsopt_features=false
1047809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsopt_finish=false
1048809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsopt_help=false
1049809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsopt_help_all=false
1050809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsopt_silent=:
1051809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsopt_warning=:
1052809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsopt_verbose=:
1053809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsopt_silent=false
1054809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsopt_verbose=false
1055809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1056809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1057809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Parse options once, thoroughly.  This comes as soon as possible in the
1058809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# script to make things like `--version' happen as quickly as we can.
1059809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
1060809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  # this just eases exit handling
1061809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  while test $# -gt 0; do
1062809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    opt="$1"
1063809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    shift
1064809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    case $opt in
1065809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      --debug|-x)	opt_debug='set -x'
1066809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			func_echo "enabling shell trace mode"
1067809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			$opt_debug
1068809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			;;
1069809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      --dry-run|--dryrun|-n)
1070809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			opt_dry_run=:
1071809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			;;
1072809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      --config)
1073809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			opt_config=:
1074809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_config
1075809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			;;
1076809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      --dlopen|-dlopen)
1077809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			optarg="$1"
1078809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			opt_dlopen="${opt_dlopen+$opt_dlopen
1079809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}$optarg"
1080809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			shift
1081809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			;;
1082809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      --preserve-dup-deps)
1083809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			opt_preserve_dup_deps=:
1084809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			;;
1085809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      --features)
1086809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			opt_features=:
1087809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_features
1088809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			;;
1089809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      --finish)
1090809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			opt_finish=:
1091809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsset dummy --mode finish ${1+"$@"}; shift
1092809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			;;
1093809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      --help)
1094809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			opt_help=:
1095809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			;;
1096809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      --help-all)
1097809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			opt_help_all=:
1098809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsopt_help=': help-all'
1099809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			;;
1100809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      --mode)
1101809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			test $# = 0 && func_missing_arg $opt && break
1102809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			optarg="$1"
1103809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			opt_mode="$optarg"
1104809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatscase $optarg in
1105809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  # Valid mode arguments:
1106809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  clean|compile|execute|finish|install|link|relink|uninstall) ;;
1107809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1108809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  # Catch anything else as an error
1109809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  *) func_error "invalid argument for $opt"
1110809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats     exit_cmd=exit
1111809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats     break
1112809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats     ;;
1113809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsesac
1114809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			shift
1115809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			;;
1116809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      --no-silent|--no-quiet)
1117809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			opt_silent=false
1118809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_append preserve_args " $opt"
1119809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			;;
1120809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      --no-warning|--no-warn)
1121809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			opt_warning=false
1122809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_append preserve_args " $opt"
1123809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			;;
1124809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      --no-verbose)
1125809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			opt_verbose=false
1126809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_append preserve_args " $opt"
1127809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			;;
1128809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      --silent|--quiet)
1129809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			opt_silent=:
1130809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_append preserve_args " $opt"
1131809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        opt_verbose=false
1132809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			;;
1133809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      --verbose|-v)
1134809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			opt_verbose=:
1135809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_append preserve_args " $opt"
1136809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsopt_silent=false
1137809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			;;
1138809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      --tag)
1139809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			test $# = 0 && func_missing_arg $opt && break
1140809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			optarg="$1"
1141809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			opt_tag="$optarg"
1142809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_append preserve_args " $opt $optarg"
1143809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_enable_tag "$optarg"
1144809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			shift
1145809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			;;
1146809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1147809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      -\?|-h)		func_usage				;;
1148809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      --help)		func_help				;;
1149809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      --version)	func_version				;;
1150809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1151809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Separate optargs to long options:
1152809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      --*=*)
1153809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			func_split_long_opt "$opt"
1154809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"}
1155809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			shift
1156809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			;;
1157809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1158809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Separate non-argument short options:
1159809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      -\?*|-h*|-n*|-v*)
1160809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			func_split_short_opt "$opt"
1161809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"}
1162809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			shift
1163809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			;;
1164809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1165809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      --)		break					;;
1166809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      -*)		func_fatal_help "unrecognized option \`$opt'" ;;
1167809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      *)		set dummy "$opt" ${1+"$@"};	shift; break  ;;
1168809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    esac
1169809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  done
1170809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1171809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  # Validate options:
1172809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1173809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  # save first non-option argument
1174809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  if test "$#" -gt 0; then
1175809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    nonopt="$opt"
1176809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    shift
1177809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  fi
1178809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1179809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  # preserve --debug
1180809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  test "$opt_debug" = : || func_append preserve_args " --debug"
1181809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1182809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  case $host in
1183809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    *cygwin* | *mingw* | *pw32* | *cegcc*)
1184809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # don't eliminate duplications in $postdeps and $predeps
1185809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      opt_duplicate_compiler_generated_deps=:
1186809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      ;;
1187809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    *)
1188809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps
1189809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      ;;
1190809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  esac
1191809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1192809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  $opt_help || {
1193809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # Sanity checks first:
1194809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_check_version_match
1195809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1196809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
1197809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_fatal_configuration "not configured to build any kind of library"
1198809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    fi
1199809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1200809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # Darwin sucks
1201809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    eval std_shrext=\"$shrext_cmds\"
1202809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1203809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # Only execute mode is allowed to have -dlopen flags.
1204809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    if test -n "$opt_dlopen" && test "$opt_mode" != execute; then
1205809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_error "unrecognized option \`-dlopen'"
1206809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      $ECHO "$help" 1>&2
1207809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      exit $EXIT_FAILURE
1208809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    fi
1209809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1210809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # Change the help message to a mode-specific one.
1211809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    generic_help="$help"
1212809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    help="Try \`$progname --help --mode=$opt_mode' for more information."
1213809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  }
1214809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1215809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1216809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  # Bail if the options were screwed
1217809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  $exit_cmd $EXIT_FAILURE
1218809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
1219809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1220809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1221809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1222809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1223809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats## ----------- ##
1224809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats##    Main.    ##
1225809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats## ----------- ##
1226809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1227809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_lalib_p file
1228809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# True iff FILE is a libtool `.la' library or `.lo' object file.
1229809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# This function is only a basic sanity check; it will hardly flush out
1230809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# determined imposters.
1231809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_lalib_p ()
1232809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
1233809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    test -f "$1" &&
1234809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      $SED -e 4q "$1" 2>/dev/null \
1235809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
1236809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
1237809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1238809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_lalib_unsafe_p file
1239809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# True iff FILE is a libtool `.la' library or `.lo' object file.
1240809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# This function implements the same check as func_lalib_p without
1241809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# resorting to external programs.  To this end, it redirects stdin and
1242809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# closes it afterwards, without saving the original file descriptor.
1243809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# As a safety measure, use it only where a negative result would be
1244809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# fatal anyway.  Works if `file' does not exist.
1245809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_lalib_unsafe_p ()
1246809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
1247809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    lalib_p=no
1248809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
1249809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	for lalib_p_l in 1 2 3 4
1250809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	do
1251809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    read lalib_p_line
1252809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    case "$lalib_p_line" in
1253809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		\#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
1254809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    esac
1255809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	done
1256809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	exec 0<&5 5<&-
1257809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    fi
1258809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    test "$lalib_p" = yes
1259809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
1260809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1261809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_ltwrapper_script_p file
1262809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# True iff FILE is a libtool wrapper script
1263809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# This function is only a basic sanity check; it will hardly flush out
1264809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# determined imposters.
1265809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_ltwrapper_script_p ()
1266809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
1267809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_lalib_p "$1"
1268809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
1269809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1270809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_ltwrapper_executable_p file
1271809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# True iff FILE is a libtool wrapper executable
1272809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# This function is only a basic sanity check; it will hardly flush out
1273809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# determined imposters.
1274809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_ltwrapper_executable_p ()
1275809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
1276809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_ltwrapper_exec_suffix=
1277809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    case $1 in
1278809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    *.exe) ;;
1279809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    *) func_ltwrapper_exec_suffix=.exe ;;
1280809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    esac
1281809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
1282809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
1283809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1284809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_ltwrapper_scriptname file
1285809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Assumes file is an ltwrapper_executable
1286809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# uses $file to determine the appropriate filename for a
1287809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# temporary ltwrapper_script.
1288809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_ltwrapper_scriptname ()
1289809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
1290809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_dirname_and_basename "$1" "" "."
1291809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_stripname '' '.exe' "$func_basename_result"
1292809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
1293809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
1294809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1295809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_ltwrapper_p file
1296809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# True iff FILE is a libtool wrapper script or wrapper executable
1297809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# This function is only a basic sanity check; it will hardly flush out
1298809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# determined imposters.
1299809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_ltwrapper_p ()
1300809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
1301809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
1302809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
1303809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1304809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1305809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_execute_cmds commands fail_cmd
1306809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Execute tilde-delimited COMMANDS.
1307809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# If FAIL_CMD is given, eval that upon failure.
1308809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# FAIL_CMD may read-access the current command in variable CMD!
1309809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_execute_cmds ()
1310809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
1311809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    $opt_debug
1312809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    save_ifs=$IFS; IFS='~'
1313809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    for cmd in $1; do
1314809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      IFS=$save_ifs
1315809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      eval cmd=\"$cmd\"
1316809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_show_eval "$cmd" "${2-:}"
1317809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    done
1318809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    IFS=$save_ifs
1319809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
1320809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1321809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1322809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_source file
1323809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Source FILE, adding directory component if necessary.
1324809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Note that it is not necessary on cygwin/mingw to append a dot to
1325809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
1326809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# behavior happens only for exec(3), not for open(2)!  Also, sourcing
1327809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# `FILE.' does not work on cygwin managed mounts.
1328809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_source ()
1329809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
1330809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    $opt_debug
1331809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    case $1 in
1332809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    */* | *\\*)	. "$1" ;;
1333809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    *)		. "./$1" ;;
1334809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    esac
1335809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
1336809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1337809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1338809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_resolve_sysroot PATH
1339809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Replace a leading = in PATH with a sysroot.  Store the result into
1340809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_resolve_sysroot_result
1341809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_resolve_sysroot ()
1342809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
1343809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  func_resolve_sysroot_result=$1
1344809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  case $func_resolve_sysroot_result in
1345809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  =*)
1346809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_stripname '=' '' "$func_resolve_sysroot_result"
1347809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_resolve_sysroot_result=$lt_sysroot$func_stripname_result
1348809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    ;;
1349809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  esac
1350809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
1351809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1352809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_replace_sysroot PATH
1353809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# If PATH begins with the sysroot, replace it with = and
1354809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# store the result into func_replace_sysroot_result.
1355809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_replace_sysroot ()
1356809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
1357809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  case "$lt_sysroot:$1" in
1358809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  ?*:"$lt_sysroot"*)
1359809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_stripname "$lt_sysroot" '' "$1"
1360809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_replace_sysroot_result="=$func_stripname_result"
1361809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    ;;
1362809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  *)
1363809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # Including no sysroot.
1364809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_replace_sysroot_result=$1
1365809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    ;;
1366809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  esac
1367809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
1368809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1369809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_infer_tag arg
1370809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Infer tagged configuration to use if any are available and
1371809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# if one wasn't chosen via the "--tag" command line option.
1372809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Only attempt this if the compiler in the base compile
1373809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# command doesn't match the default compiler.
1374809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# arg is usually of the form 'gcc ...'
1375809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_infer_tag ()
1376809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
1377809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    $opt_debug
1378809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    if test -n "$available_tags" && test -z "$tagname"; then
1379809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      CC_quoted=
1380809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      for arg in $CC; do
1381809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_append_quoted CC_quoted "$arg"
1382809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      done
1383809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      CC_expanded=`func_echo_all $CC`
1384809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      CC_quoted_expanded=`func_echo_all $CC_quoted`
1385809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      case $@ in
1386809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Blanks in the command may have been stripped by the calling shell,
1387809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # but not from the CC environment variable when configure was run.
1388809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
1389809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;;
1390809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Blanks at the start of $base_compile will cause this to fail
1391809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # if we don't check for them as well.
1392809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      *)
1393809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	for z in $available_tags; do
1394809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
1395809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # Evaluate the configuration.
1396809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
1397809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    CC_quoted=
1398809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    for arg in $CC; do
1399809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # Double-quote args containing other shell metacharacters.
1400809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      func_append_quoted CC_quoted "$arg"
1401809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    done
1402809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    CC_expanded=`func_echo_all $CC`
1403809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    CC_quoted_expanded=`func_echo_all $CC_quoted`
1404809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    case "$@ " in
1405809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
1406809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*)
1407809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # The compiler in the base compile command matches
1408809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # the one in the tagged configuration.
1409809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # Assume this is the tagged configuration we want.
1410809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      tagname=$z
1411809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      break
1412809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      ;;
1413809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    esac
1414809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
1415809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	done
1416809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# If $tagname still isn't set, then no tagged configuration
1417809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# was found and let the user know that the "--tag" command
1418809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# line option must be used.
1419809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test -z "$tagname"; then
1420809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_echo "unable to infer tagged configuration"
1421809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_fatal_error "specify a tag with \`--tag'"
1422809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#	else
1423809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#	  func_verbose "using $tagname tagged configuration"
1424809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
1425809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
1426809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      esac
1427809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    fi
1428809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
1429809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1430809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1431809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1432809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_write_libtool_object output_name pic_name nonpic_name
1433809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Create a libtool object file (analogous to a ".la" file),
1434809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# but don't create it if we're doing a dry run.
1435809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_write_libtool_object ()
1436809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
1437809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    write_libobj=${1}
1438809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    if test "$build_libtool_libs" = yes; then
1439809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      write_lobj=\'${2}\'
1440809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    else
1441809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      write_lobj=none
1442809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    fi
1443809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1444809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    if test "$build_old_libs" = yes; then
1445809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      write_oldobj=\'${3}\'
1446809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    else
1447809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      write_oldobj=none
1448809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    fi
1449809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1450809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    $opt_dry_run || {
1451809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      cat >${write_libobj}T <<EOF
1452809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# $write_libobj - a libtool object file
1453809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
1454809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#
1455809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Please DO NOT delete this file!
1456809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# It is necessary for linking the library.
1457809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1458809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Name of the PIC object.
1459809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatspic_object=$write_lobj
1460809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1461809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Name of the non-PIC object
1462809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsnon_pic_object=$write_oldobj
1463809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1464809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsEOF
1465809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      $MV "${write_libobj}T" "${write_libobj}"
1466809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    }
1467809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
1468809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1469809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1470809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats##################################################
1471809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS #
1472809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats##################################################
1473809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1474809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_convert_core_file_wine_to_w32 ARG
1475809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Helper function used by file name conversion functions when $build is *nix,
1476809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# and $host is mingw, cygwin, or some other w32 environment. Relies on a
1477809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# correctly configured wine environment available, with the winepath program
1478809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# in $build's $PATH.
1479809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#
1480809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# ARG is the $build file name to be converted to w32 format.
1481809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Result is available in $func_convert_core_file_wine_to_w32_result, and will
1482809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# be empty on error (or when ARG is empty)
1483809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_convert_core_file_wine_to_w32 ()
1484809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
1485809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  $opt_debug
1486809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  func_convert_core_file_wine_to_w32_result="$1"
1487809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  if test -n "$1"; then
1488809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # Unfortunately, winepath does not exit with a non-zero error code, so we
1489809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # are forced to check the contents of stdout. On the other hand, if the
1490809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # command is not found, the shell will set an exit code of 127 and print
1491809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # *an error message* to stdout. So we must check for both error code of
1492809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # zero AND non-empty stdout, which explains the odd construction:
1493809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null`
1494809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then
1495809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" |
1496809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        $SED -e "$lt_sed_naive_backslashify"`
1497809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    else
1498809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_convert_core_file_wine_to_w32_result=
1499809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    fi
1500809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  fi
1501809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
1502809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# end: func_convert_core_file_wine_to_w32
1503809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1504809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1505809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_convert_core_path_wine_to_w32 ARG
1506809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Helper function used by path conversion functions when $build is *nix, and
1507809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly
1508809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# configured wine environment available, with the winepath program in $build's
1509809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# $PATH. Assumes ARG has no leading or trailing path separator characters.
1510809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#
1511809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# ARG is path to be converted from $build format to win32.
1512809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Result is available in $func_convert_core_path_wine_to_w32_result.
1513809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Unconvertible file (directory) names in ARG are skipped; if no directory names
1514809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# are convertible, then the result may be empty.
1515809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_convert_core_path_wine_to_w32 ()
1516809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
1517809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  $opt_debug
1518809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  # unfortunately, winepath doesn't convert paths, only file names
1519809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  func_convert_core_path_wine_to_w32_result=""
1520809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  if test -n "$1"; then
1521809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    oldIFS=$IFS
1522809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    IFS=:
1523809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    for func_convert_core_path_wine_to_w32_f in $1; do
1524809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      IFS=$oldIFS
1525809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f"
1526809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test -n "$func_convert_core_file_wine_to_w32_result" ; then
1527809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        if test -z "$func_convert_core_path_wine_to_w32_result"; then
1528809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats          func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result"
1529809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        else
1530809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats          func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result"
1531809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        fi
1532809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
1533809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    done
1534809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    IFS=$oldIFS
1535809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  fi
1536809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
1537809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# end: func_convert_core_path_wine_to_w32
1538809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1539809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1540809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_cygpath ARGS...
1541809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when
1542809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2)
1543809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or
1544809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# (2), returns the Cygwin file name or path in func_cygpath_result (input
1545809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# file name or path is assumed to be in w32 format, as previously converted
1546809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# from $build's *nix or MSYS format). In case (3), returns the w32 file name
1547809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# or path in func_cygpath_result (input file name or path is assumed to be in
1548809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Cygwin format). Returns an empty string on error.
1549809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#
1550809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# ARGS are passed to cygpath, with the last one being the file name or path to
1551809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# be converted.
1552809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#
1553809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH
1554809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# environment variable; do not put it in $PATH.
1555809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_cygpath ()
1556809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
1557809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  $opt_debug
1558809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then
1559809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null`
1560809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    if test "$?" -ne 0; then
1561809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # on failure, ensure result is empty
1562809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_cygpath_result=
1563809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    fi
1564809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  else
1565809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_cygpath_result=
1566809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'"
1567809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  fi
1568809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
1569809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#end: func_cygpath
1570809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1571809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1572809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_convert_core_msys_to_w32 ARG
1573809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Convert file name or path ARG from MSYS format to w32 format.  Return
1574809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# result in func_convert_core_msys_to_w32_result.
1575809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_convert_core_msys_to_w32 ()
1576809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
1577809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  $opt_debug
1578809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  # awkward: cmd appends spaces to result
1579809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null |
1580809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"`
1581809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
1582809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#end: func_convert_core_msys_to_w32
1583809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1584809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1585809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_convert_file_check ARG1 ARG2
1586809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Verify that ARG1 (a file name in $build format) was converted to $host
1587809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# format in ARG2. Otherwise, emit an error message, but continue (resetting
1588809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_to_host_file_result to ARG1).
1589809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_convert_file_check ()
1590809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
1591809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  $opt_debug
1592809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  if test -z "$2" && test -n "$1" ; then
1593809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_error "Could not determine host file name corresponding to"
1594809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_error "  \`$1'"
1595809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_error "Continuing, but uninstalled executables may not work."
1596809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # Fallback:
1597809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_to_host_file_result="$1"
1598809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  fi
1599809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
1600809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# end func_convert_file_check
1601809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1602809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1603809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH
1604809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Verify that FROM_PATH (a path in $build format) was converted to $host
1605809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# format in TO_PATH. Otherwise, emit an error message, but continue, resetting
1606809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_to_host_file_result to a simplistic fallback value (see below).
1607809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_convert_path_check ()
1608809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
1609809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  $opt_debug
1610809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  if test -z "$4" && test -n "$3"; then
1611809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_error "Could not determine the host path corresponding to"
1612809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_error "  \`$3'"
1613809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_error "Continuing, but uninstalled executables may not work."
1614809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # Fallback.  This is a deliberately simplistic "conversion" and
1615809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # should not be "improved".  See libtool.info.
1616809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    if test "x$1" != "x$2"; then
1617809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      lt_replace_pathsep_chars="s|$1|$2|g"
1618809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_to_host_path_result=`echo "$3" |
1619809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        $SED -e "$lt_replace_pathsep_chars"`
1620809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    else
1621809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_to_host_path_result="$3"
1622809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    fi
1623809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  fi
1624809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
1625809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# end func_convert_path_check
1626809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1627809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1628809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG
1629809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT
1630809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# and appending REPL if ORIG matches BACKPAT.
1631809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_convert_path_front_back_pathsep ()
1632809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
1633809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  $opt_debug
1634809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  case $4 in
1635809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  $1 ) func_to_host_path_result="$3$func_to_host_path_result"
1636809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    ;;
1637809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  esac
1638809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  case $4 in
1639809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  $2 ) func_append func_to_host_path_result "$3"
1640809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    ;;
1641809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  esac
1642809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
1643809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# end func_convert_path_front_back_pathsep
1644809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1645809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1646809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats##################################################
1647809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# $build to $host FILE NAME CONVERSION FUNCTIONS #
1648809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats##################################################
1649809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# invoked via `$to_host_file_cmd ARG'
1650809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#
1651809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# In each case, ARG is the path to be converted from $build to $host format.
1652809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Result will be available in $func_to_host_file_result.
1653809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1654809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1655809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_to_host_file ARG
1656809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Converts the file name ARG from $build format to $host format. Return result
1657809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# in func_to_host_file_result.
1658809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_to_host_file ()
1659809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
1660809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  $opt_debug
1661809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  $to_host_file_cmd "$1"
1662809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
1663809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# end func_to_host_file
1664809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1665809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1666809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_to_tool_file ARG LAZY
1667809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# converts the file name ARG from $build format to toolchain format. Return
1668809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# result in func_to_tool_file_result.  If the conversion in use is listed
1669809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# in (the comma separated) LAZY, no conversion takes place.
1670809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_to_tool_file ()
1671809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
1672809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  $opt_debug
1673809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  case ,$2, in
1674809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    *,"$to_tool_file_cmd",*)
1675809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_to_tool_file_result=$1
1676809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      ;;
1677809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    *)
1678809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      $to_tool_file_cmd "$1"
1679809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_to_tool_file_result=$func_to_host_file_result
1680809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      ;;
1681809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  esac
1682809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
1683809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# end func_to_tool_file
1684809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1685809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1686809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_convert_file_noop ARG
1687809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Copy ARG to func_to_host_file_result.
1688809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_convert_file_noop ()
1689809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
1690809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  func_to_host_file_result="$1"
1691809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
1692809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# end func_convert_file_noop
1693809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1694809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1695809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_convert_file_msys_to_w32 ARG
1696809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic
1697809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# conversion to w32 is not available inside the cwrapper.  Returns result in
1698809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_to_host_file_result.
1699809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_convert_file_msys_to_w32 ()
1700809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
1701809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  $opt_debug
1702809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  func_to_host_file_result="$1"
1703809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  if test -n "$1"; then
1704809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_convert_core_msys_to_w32 "$1"
1705809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_to_host_file_result="$func_convert_core_msys_to_w32_result"
1706809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  fi
1707809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  func_convert_file_check "$1" "$func_to_host_file_result"
1708809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
1709809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# end func_convert_file_msys_to_w32
1710809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1711809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1712809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_convert_file_cygwin_to_w32 ARG
1713809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Convert file name ARG from Cygwin to w32 format.  Returns result in
1714809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_to_host_file_result.
1715809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_convert_file_cygwin_to_w32 ()
1716809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
1717809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  $opt_debug
1718809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  func_to_host_file_result="$1"
1719809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  if test -n "$1"; then
1720809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # because $build is cygwin, we call "the" cygpath in $PATH; no need to use
1721809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # LT_CYGPATH in this case.
1722809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_to_host_file_result=`cygpath -m "$1"`
1723809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  fi
1724809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  func_convert_file_check "$1" "$func_to_host_file_result"
1725809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
1726809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# end func_convert_file_cygwin_to_w32
1727809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1728809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1729809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_convert_file_nix_to_w32 ARG
1730809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Convert file name ARG from *nix to w32 format.  Requires a wine environment
1731809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# and a working winepath. Returns result in func_to_host_file_result.
1732809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_convert_file_nix_to_w32 ()
1733809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
1734809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  $opt_debug
1735809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  func_to_host_file_result="$1"
1736809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  if test -n "$1"; then
1737809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_convert_core_file_wine_to_w32 "$1"
1738809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_to_host_file_result="$func_convert_core_file_wine_to_w32_result"
1739809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  fi
1740809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  func_convert_file_check "$1" "$func_to_host_file_result"
1741809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
1742809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# end func_convert_file_nix_to_w32
1743809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1744809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1745809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_convert_file_msys_to_cygwin ARG
1746809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Convert file name ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
1747809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Returns result in func_to_host_file_result.
1748809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_convert_file_msys_to_cygwin ()
1749809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
1750809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  $opt_debug
1751809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  func_to_host_file_result="$1"
1752809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  if test -n "$1"; then
1753809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_convert_core_msys_to_w32 "$1"
1754809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_cygpath -u "$func_convert_core_msys_to_w32_result"
1755809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_to_host_file_result="$func_cygpath_result"
1756809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  fi
1757809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  func_convert_file_check "$1" "$func_to_host_file_result"
1758809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
1759809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# end func_convert_file_msys_to_cygwin
1760809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1761809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1762809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_convert_file_nix_to_cygwin ARG
1763809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Convert file name ARG from *nix to Cygwin format.  Requires Cygwin installed
1764809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# in a wine environment, working winepath, and LT_CYGPATH set.  Returns result
1765809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# in func_to_host_file_result.
1766809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_convert_file_nix_to_cygwin ()
1767809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
1768809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  $opt_debug
1769809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  func_to_host_file_result="$1"
1770809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  if test -n "$1"; then
1771809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # convert from *nix to w32, then use cygpath to convert from w32 to cygwin.
1772809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_convert_core_file_wine_to_w32 "$1"
1773809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_cygpath -u "$func_convert_core_file_wine_to_w32_result"
1774809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_to_host_file_result="$func_cygpath_result"
1775809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  fi
1776809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  func_convert_file_check "$1" "$func_to_host_file_result"
1777809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
1778809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# end func_convert_file_nix_to_cygwin
1779809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1780809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1781809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#############################################
1782809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# $build to $host PATH CONVERSION FUNCTIONS #
1783809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#############################################
1784809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# invoked via `$to_host_path_cmd ARG'
1785809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#
1786809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# In each case, ARG is the path to be converted from $build to $host format.
1787809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# The result will be available in $func_to_host_path_result.
1788809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#
1789809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Path separators are also converted from $build format to $host format.  If
1790809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# ARG begins or ends with a path separator character, it is preserved (but
1791809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# converted to $host format) on output.
1792809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#
1793809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# All path conversion functions are named using the following convention:
1794809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#   file name conversion function    : func_convert_file_X_to_Y ()
1795809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#   path conversion function         : func_convert_path_X_to_Y ()
1796809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# where, for any given $build/$host combination the 'X_to_Y' value is the
1797809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# same.  If conversion functions are added for new $build/$host combinations,
1798809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# the two new functions must follow this pattern, or func_init_to_host_path_cmd
1799809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# will break.
1800809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1801809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1802809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_init_to_host_path_cmd
1803809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Ensures that function "pointer" variable $to_host_path_cmd is set to the
1804809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# appropriate value, based on the value of $to_host_file_cmd.
1805809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsto_host_path_cmd=
1806809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_init_to_host_path_cmd ()
1807809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
1808809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  $opt_debug
1809809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  if test -z "$to_host_path_cmd"; then
1810809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_stripname 'func_convert_file_' '' "$to_host_file_cmd"
1811809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    to_host_path_cmd="func_convert_path_${func_stripname_result}"
1812809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  fi
1813809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
1814809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1815809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1816809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_to_host_path ARG
1817809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Converts the path ARG from $build format to $host format. Return result
1818809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# in func_to_host_path_result.
1819809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_to_host_path ()
1820809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
1821809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  $opt_debug
1822809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  func_init_to_host_path_cmd
1823809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  $to_host_path_cmd "$1"
1824809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
1825809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# end func_to_host_path
1826809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1827809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1828809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_convert_path_noop ARG
1829809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Copy ARG to func_to_host_path_result.
1830809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_convert_path_noop ()
1831809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
1832809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  func_to_host_path_result="$1"
1833809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
1834809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# end func_convert_path_noop
1835809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1836809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1837809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_convert_path_msys_to_w32 ARG
1838809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic
1839809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# conversion to w32 is not available inside the cwrapper.  Returns result in
1840809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_to_host_path_result.
1841809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_convert_path_msys_to_w32 ()
1842809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
1843809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  $opt_debug
1844809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  func_to_host_path_result="$1"
1845809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  if test -n "$1"; then
1846809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # Remove leading and trailing path separator characters from ARG.  MSYS
1847809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # behavior is inconsistent here; cygpath turns them into '.;' and ';.';
1848809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # and winepath ignores them completely.
1849809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_stripname : : "$1"
1850809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_to_host_path_tmp1=$func_stripname_result
1851809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
1852809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_to_host_path_result="$func_convert_core_msys_to_w32_result"
1853809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_convert_path_check : ";" \
1854809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      "$func_to_host_path_tmp1" "$func_to_host_path_result"
1855809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
1856809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  fi
1857809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
1858809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# end func_convert_path_msys_to_w32
1859809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1860809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1861809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_convert_path_cygwin_to_w32 ARG
1862809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Convert path ARG from Cygwin to w32 format.  Returns result in
1863809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_to_host_file_result.
1864809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_convert_path_cygwin_to_w32 ()
1865809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
1866809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  $opt_debug
1867809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  func_to_host_path_result="$1"
1868809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  if test -n "$1"; then
1869809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # See func_convert_path_msys_to_w32:
1870809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_stripname : : "$1"
1871809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_to_host_path_tmp1=$func_stripname_result
1872809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"`
1873809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_convert_path_check : ";" \
1874809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      "$func_to_host_path_tmp1" "$func_to_host_path_result"
1875809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
1876809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  fi
1877809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
1878809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# end func_convert_path_cygwin_to_w32
1879809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1880809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1881809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_convert_path_nix_to_w32 ARG
1882809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Convert path ARG from *nix to w32 format.  Requires a wine environment and
1883809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# a working winepath.  Returns result in func_to_host_file_result.
1884809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_convert_path_nix_to_w32 ()
1885809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
1886809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  $opt_debug
1887809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  func_to_host_path_result="$1"
1888809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  if test -n "$1"; then
1889809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # See func_convert_path_msys_to_w32:
1890809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_stripname : : "$1"
1891809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_to_host_path_tmp1=$func_stripname_result
1892809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
1893809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_to_host_path_result="$func_convert_core_path_wine_to_w32_result"
1894809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_convert_path_check : ";" \
1895809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      "$func_to_host_path_tmp1" "$func_to_host_path_result"
1896809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
1897809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  fi
1898809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
1899809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# end func_convert_path_nix_to_w32
1900809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1901809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1902809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_convert_path_msys_to_cygwin ARG
1903809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Convert path ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
1904809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Returns result in func_to_host_file_result.
1905809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_convert_path_msys_to_cygwin ()
1906809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
1907809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  $opt_debug
1908809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  func_to_host_path_result="$1"
1909809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  if test -n "$1"; then
1910809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # See func_convert_path_msys_to_w32:
1911809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_stripname : : "$1"
1912809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_to_host_path_tmp1=$func_stripname_result
1913809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
1914809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_cygpath -u -p "$func_convert_core_msys_to_w32_result"
1915809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_to_host_path_result="$func_cygpath_result"
1916809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_convert_path_check : : \
1917809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      "$func_to_host_path_tmp1" "$func_to_host_path_result"
1918809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
1919809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  fi
1920809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
1921809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# end func_convert_path_msys_to_cygwin
1922809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1923809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1924809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_convert_path_nix_to_cygwin ARG
1925809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Convert path ARG from *nix to Cygwin format.  Requires Cygwin installed in a
1926809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# a wine environment, working winepath, and LT_CYGPATH set.  Returns result in
1927809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_to_host_file_result.
1928809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_convert_path_nix_to_cygwin ()
1929809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
1930809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  $opt_debug
1931809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  func_to_host_path_result="$1"
1932809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  if test -n "$1"; then
1933809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # Remove leading and trailing path separator characters from
1934809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # ARG. msys behavior is inconsistent here, cygpath turns them
1935809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # into '.;' and ';.', and winepath ignores them completely.
1936809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_stripname : : "$1"
1937809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_to_host_path_tmp1=$func_stripname_result
1938809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
1939809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result"
1940809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_to_host_path_result="$func_cygpath_result"
1941809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_convert_path_check : : \
1942809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      "$func_to_host_path_tmp1" "$func_to_host_path_result"
1943809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
1944809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  fi
1945809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
1946809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# end func_convert_path_nix_to_cygwin
1947809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1948809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1949809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_mode_compile arg...
1950809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_mode_compile ()
1951809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
1952809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    $opt_debug
1953809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # Get the compilation command and the source file.
1954809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    base_compile=
1955809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
1956809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    suppress_opt=yes
1957809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    suppress_output=
1958809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    arg_mode=normal
1959809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    libobj=
1960809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    later=
1961809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    pie_flag=
1962809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1963809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    for arg
1964809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    do
1965809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      case $arg_mode in
1966809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      arg  )
1967809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# do not "continue".  Instead, add this to base_compile
1968809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	lastarg="$arg"
1969809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	arg_mode=normal
1970809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
1971809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1972809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      target )
1973809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	libobj="$arg"
1974809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	arg_mode=normal
1975809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	continue
1976809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
1977809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1978809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      normal )
1979809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Accept any command-line options.
1980809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	case $arg in
1981809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	-o)
1982809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  test -n "$libobj" && \
1983809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_fatal_error "you cannot specify \`-o' more than once"
1984809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  arg_mode=target
1985809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  continue
1986809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
1987809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1988809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	-pie | -fpie | -fPIE)
1989809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats          func_append pie_flag " $arg"
1990809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  continue
1991809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
1992809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1993809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	-shared | -static | -prefer-pic | -prefer-non-pic)
1994809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_append later " $arg"
1995809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  continue
1996809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
1997809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
1998809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	-no-suppress)
1999809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  suppress_opt=no
2000809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  continue
2001809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
2002809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2003809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	-Xcompiler)
2004809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  arg_mode=arg  #  the next one goes into the "base_compile" arg list
2005809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  continue      #  The current "srcfile" will either be retained or
2006809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;            #  replaced later.  I would guess that would be a bug.
2007809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2008809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	-Wc,*)
2009809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_stripname '-Wc,' '' "$arg"
2010809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  args=$func_stripname_result
2011809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  lastarg=
2012809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  save_ifs="$IFS"; IFS=','
2013809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  for arg in $args; do
2014809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    IFS="$save_ifs"
2015809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_append_quoted lastarg "$arg"
2016809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  done
2017809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  IFS="$save_ifs"
2018809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_stripname ' ' '' "$lastarg"
2019809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  lastarg=$func_stripname_result
2020809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2021809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # Add the arguments to base_compile.
2022809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_append base_compile " $lastarg"
2023809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  continue
2024809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
2025809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2026809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	*)
2027809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # Accept the current argument as the source file.
2028809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # The previous "srcfile" becomes the current argument.
2029809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  #
2030809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  lastarg="$srcfile"
2031809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  srcfile="$arg"
2032809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
2033809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	esac  #  case $arg
2034809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
2035809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      esac    #  case $arg_mode
2036809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2037809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Aesthetically quote the previous argument.
2038809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_append_quoted base_compile "$lastarg"
2039809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    done # for arg
2040809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2041809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    case $arg_mode in
2042809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    arg)
2043809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_fatal_error "you must specify an argument for -Xcompile"
2044809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      ;;
2045809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    target)
2046809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_fatal_error "you must specify a target with \`-o'"
2047809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      ;;
2048809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    *)
2049809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Get the name of the library object.
2050809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      test -z "$libobj" && {
2051809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_basename "$srcfile"
2052809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	libobj="$func_basename_result"
2053809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      }
2054809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      ;;
2055809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    esac
2056809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2057809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # Recognize several different file suffixes.
2058809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # If the user specifies -o file.o, it is replaced with file.lo
2059809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    case $libobj in
2060809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    *.[cCFSifmso] | \
2061809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    *.ada | *.adb | *.ads | *.asm | \
2062809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
2063809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup)
2064809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_xform "$libobj"
2065809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      libobj=$func_xform_result
2066809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      ;;
2067809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    esac
2068809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2069809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    case $libobj in
2070809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
2071809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    *)
2072809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_fatal_error "cannot determine name of library object from \`$libobj'"
2073809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      ;;
2074809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    esac
2075809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2076809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_infer_tag $base_compile
2077809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2078809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    for arg in $later; do
2079809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      case $arg in
2080809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      -shared)
2081809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	test "$build_libtool_libs" != yes && \
2082809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_fatal_configuration "can not build a shared library"
2083809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	build_old_libs=no
2084809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	continue
2085809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
2086809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2087809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      -static)
2088809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	build_libtool_libs=no
2089809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	build_old_libs=yes
2090809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	continue
2091809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
2092809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2093809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      -prefer-pic)
2094809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	pic_mode=yes
2095809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	continue
2096809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
2097809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2098809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      -prefer-non-pic)
2099809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	pic_mode=no
2100809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	continue
2101809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
2102809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      esac
2103809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    done
2104809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2105809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_quote_for_eval "$libobj"
2106809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    test "X$libobj" != "X$func_quote_for_eval_result" \
2107809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"'	 &()|`$[]' \
2108809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      && func_warning "libobj name \`$libobj' may not contain shell special characters."
2109809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_dirname_and_basename "$obj" "/" ""
2110809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    objname="$func_basename_result"
2111809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    xdir="$func_dirname_result"
2112809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    lobj=${xdir}$objdir/$objname
2113809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2114809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    test -z "$base_compile" && \
2115809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_fatal_help "you must specify a compilation command"
2116809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2117809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # Delete any leftover library objects.
2118809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    if test "$build_old_libs" = yes; then
2119809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      removelist="$obj $lobj $libobj ${libobj}T"
2120809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    else
2121809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      removelist="$lobj $libobj ${libobj}T"
2122809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    fi
2123809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2124809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # On Cygwin there's no "real" PIC flag so we must build both object types
2125809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    case $host_os in
2126809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    cygwin* | mingw* | pw32* | os2* | cegcc*)
2127809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      pic_mode=default
2128809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      ;;
2129809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    esac
2130809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
2131809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # non-PIC code in shared libraries is not supported
2132809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      pic_mode=default
2133809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    fi
2134809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2135809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # Calculate the filename of the output object if compiler does
2136809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # not support -o with -c
2137809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    if test "$compiler_c_o" = no; then
2138809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext}
2139809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      lockfile="$output_obj.lock"
2140809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    else
2141809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      output_obj=
2142809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      need_locks=no
2143809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      lockfile=
2144809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    fi
2145809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2146809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # Lock this critical section if it is needed
2147809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # We use this script file to make the link, it avoids creating a new file
2148809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    if test "$need_locks" = yes; then
2149809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
2150809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_echo "Waiting for $lockfile to be removed"
2151809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	sleep 2
2152809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      done
2153809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    elif test "$need_locks" = warn; then
2154809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test -f "$lockfile"; then
2155809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	$ECHO "\
2156809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats*** ERROR, $lockfile exists and contains:
2157809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats`cat $lockfile 2>/dev/null`
2158809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2159809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsThis indicates that another process is trying to use the same
2160809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatstemporary object file, and libtool could not work around it because
2161809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsyour compiler does not support \`-c' and \`-o' together.  If you
2162809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsrepeat this compilation, it may succeed, by chance, but you had better
2163809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsavoid parallel builds (make -j) in this platform, or get a better
2164809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatscompiler."
2165809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2166809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	$opt_dry_run || $RM $removelist
2167809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	exit $EXIT_FAILURE
2168809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
2169809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_append removelist " $output_obj"
2170809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      $ECHO "$srcfile" > "$lockfile"
2171809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    fi
2172809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2173809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    $opt_dry_run || $RM $removelist
2174809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_append removelist " $lockfile"
2175809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
2176809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2177809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_to_tool_file "$srcfile" func_convert_file_msys_to_w32
2178809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    srcfile=$func_to_tool_file_result
2179809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_quote_for_eval "$srcfile"
2180809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    qsrcfile=$func_quote_for_eval_result
2181809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2182809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # Only build a PIC object if we are building libtool libraries.
2183809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    if test "$build_libtool_libs" = yes; then
2184809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Without this assignment, base_compile gets emptied.
2185809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fbsd_hideous_sh_bug=$base_compile
2186809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2187809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test "$pic_mode" != no; then
2188809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	command="$base_compile $qsrcfile $pic_flag"
2189809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      else
2190809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Don't build PIC code
2191809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	command="$base_compile $qsrcfile"
2192809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
2193809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2194809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_mkdir_p "$xdir$objdir"
2195809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2196809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test -z "$output_obj"; then
2197809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Place PIC objects in $objdir
2198809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_append command " -o $lobj"
2199809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
2200809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2201809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_show_eval_locale "$command"	\
2202809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats          'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
2203809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2204809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test "$need_locks" = warn &&
2205809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
2206809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	$ECHO "\
2207809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats*** ERROR, $lockfile contains:
2208809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats`cat $lockfile 2>/dev/null`
2209809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2210809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsbut it should contain:
2211809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats$srcfile
2212809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2213809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsThis indicates that another process is trying to use the same
2214809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatstemporary object file, and libtool could not work around it because
2215809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsyour compiler does not support \`-c' and \`-o' together.  If you
2216809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsrepeat this compilation, it may succeed, by chance, but you had better
2217809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsavoid parallel builds (make -j) in this platform, or get a better
2218809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatscompiler."
2219809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2220809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	$opt_dry_run || $RM $removelist
2221809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	exit $EXIT_FAILURE
2222809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
2223809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2224809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Just move the object if needed, then go on to compile the next one
2225809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
2226809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_show_eval '$MV "$output_obj" "$lobj"' \
2227809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
2228809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
2229809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2230809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Allow error messages only from the first compilation.
2231809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test "$suppress_opt" = yes; then
2232809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	suppress_output=' >/dev/null 2>&1'
2233809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
2234809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    fi
2235809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2236809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # Only build a position-dependent object if we build old libraries.
2237809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    if test "$build_old_libs" = yes; then
2238809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test "$pic_mode" != yes; then
2239809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Don't build PIC code
2240809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	command="$base_compile $qsrcfile$pie_flag"
2241809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      else
2242809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	command="$base_compile $qsrcfile $pic_flag"
2243809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
2244809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test "$compiler_c_o" = yes; then
2245809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_append command " -o $obj"
2246809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
2247809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2248809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Suppress compiler output if we already did a PIC compilation.
2249809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_append command "$suppress_output"
2250809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_show_eval_locale "$command" \
2251809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
2252809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2253809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test "$need_locks" = warn &&
2254809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
2255809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	$ECHO "\
2256809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats*** ERROR, $lockfile contains:
2257809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats`cat $lockfile 2>/dev/null`
2258809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2259809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsbut it should contain:
2260809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats$srcfile
2261809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2262809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsThis indicates that another process is trying to use the same
2263809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatstemporary object file, and libtool could not work around it because
2264809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsyour compiler does not support \`-c' and \`-o' together.  If you
2265809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsrepeat this compilation, it may succeed, by chance, but you had better
2266809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsavoid parallel builds (make -j) in this platform, or get a better
2267809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatscompiler."
2268809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2269809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	$opt_dry_run || $RM $removelist
2270809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	exit $EXIT_FAILURE
2271809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
2272809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2273809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Just move the object if needed
2274809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
2275809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_show_eval '$MV "$output_obj" "$obj"' \
2276809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
2277809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
2278809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    fi
2279809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2280809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    $opt_dry_run || {
2281809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
2282809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2283809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Unlock the critical section if it was locked
2284809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test "$need_locks" != no; then
2285809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	removelist=$lockfile
2286809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        $RM "$lockfile"
2287809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
2288809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    }
2289809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2290809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    exit $EXIT_SUCCESS
2291809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
2292809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2293809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats$opt_help || {
2294809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  test "$opt_mode" = compile && func_mode_compile ${1+"$@"}
2295809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
2296809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2297809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_mode_help ()
2298809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
2299809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # We need to display help for each of the modes.
2300809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    case $opt_mode in
2301809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      "")
2302809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        # Generic help is extracted from the usage comments
2303809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        # at the start of this file.
2304809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        func_help
2305809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        ;;
2306809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2307809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      clean)
2308809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        $ECHO \
2309809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
2310809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2311809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsRemove files from the build directory.
2312809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2313809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsRM is the name of the program to use to delete files associated with each FILE
2314809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
2315809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsto RM.
2316809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2317809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsIf FILE is a libtool library, object or program, all the files associated
2318809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatswith it are deleted. Otherwise, only FILE itself is deleted using RM."
2319809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        ;;
2320809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2321809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      compile)
2322809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      $ECHO \
2323809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
2324809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2325809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsCompile a source file into a libtool library object.
2326809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2327809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsThis mode accepts the following additional options:
2328809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2329809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
2330809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  -no-suppress      do not suppress compiler output for multiple passes
2331809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  -prefer-pic       try to build PIC objects only
2332809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  -prefer-non-pic   try to build non-PIC objects only
2333809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  -shared           do not build a \`.o' file suitable for static linking
2334809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  -static           only build a \`.o' file suitable for static linking
2335809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  -Wc,FLAG          pass FLAG directly to the compiler
2336809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2337809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsCOMPILE-COMMAND is a command to be used in creating a \`standard' object file
2338809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfrom the given SOURCEFILE.
2339809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2340809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsThe output file name is determined by removing the directory component from
2341809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsSOURCEFILE, then substituting the C source code suffix \`.c' with the
2342809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatslibrary object suffix, \`.lo'."
2343809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        ;;
2344809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2345809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      execute)
2346809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        $ECHO \
2347809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
2348809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2349809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsAutomatically set library path, then run a program.
2350809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2351809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsThis mode accepts the following additional options:
2352809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2353809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  -dlopen FILE      add the directory containing FILE to the library path
2354809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2355809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsThis mode sets the library path environment variable according to \`-dlopen'
2356809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsflags.
2357809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2358809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsIf any of the ARGS are libtool executable wrappers, then they are translated
2359809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsinto their corresponding uninstalled binary, and any of their required library
2360809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsdirectories are added to the library path.
2361809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2362809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsThen, COMMAND is executed, with ARGS as arguments."
2363809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        ;;
2364809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2365809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      finish)
2366809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        $ECHO \
2367809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
2368809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2369809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsComplete the installation of libtool libraries.
2370809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2371809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsEach LIBDIR is a directory that contains libtool libraries.
2372809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2373809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsThe commands that this mode executes may require superuser privileges.  Use
2374809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsthe \`--dry-run' option if you just want to see what would be executed."
2375809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        ;;
2376809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2377809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      install)
2378809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        $ECHO \
2379809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
2380809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2381809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsInstall executables or libraries.
2382809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2383809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsINSTALL-COMMAND is the installation command.  The first component should be
2384809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatseither the \`install' or \`cp' program.
2385809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2386809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsThe following components of INSTALL-COMMAND are treated specially:
2387809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2388809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  -inst-prefix-dir PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
2389809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2390809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsThe rest of the components are interpreted as arguments to that command (only
2391809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsBSD-compatible install options are recognized)."
2392809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        ;;
2393809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2394809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      link)
2395809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        $ECHO \
2396809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
2397809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2398809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsLink object files or libraries together to form another library, or to
2399809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatscreate an executable program.
2400809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2401809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsLINK-COMMAND is a command using the C compiler that you would use to create
2402809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsa program from several object files.
2403809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2404809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsThe following components of LINK-COMMAND are treated specially:
2405809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2406809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  -all-static       do not do any dynamic linking at all
2407809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  -avoid-version    do not add a version suffix if possible
2408809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  -bindir BINDIR    specify path to binaries directory (for systems where
2409809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats                    libraries must be found in the PATH setting at runtime)
2410809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
2411809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
2412809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
2413809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  -export-symbols SYMFILE
2414809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats                    try to export only the symbols listed in SYMFILE
2415809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  -export-symbols-regex REGEX
2416809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats                    try to export only the symbols matching REGEX
2417809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  -LLIBDIR          search LIBDIR for required installed libraries
2418809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  -lNAME            OUTPUT-FILE requires the installed library libNAME
2419809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  -module           build a library that can dlopened
2420809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  -no-fast-install  disable the fast-install mode
2421809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  -no-install       link a not-installable executable
2422809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  -no-undefined     declare that a library does not refer to external symbols
2423809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
2424809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  -objectlist FILE  Use a list of object files found in FILE to specify objects
2425809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  -precious-files-regex REGEX
2426809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats                    don't remove output files matching REGEX
2427809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  -release RELEASE  specify package release information
2428809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
2429809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
2430809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  -shared           only do dynamic linking of libtool libraries
2431809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  -shrext SUFFIX    override the standard shared library file extension
2432809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  -static           do not do any dynamic linking of uninstalled libtool libraries
2433809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  -static-libtool-libs
2434809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats                    do not do any dynamic linking of libtool libraries
2435809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  -version-info CURRENT[:REVISION[:AGE]]
2436809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats                    specify library version info [each variable defaults to 0]
2437809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  -weak LIBNAME     declare that the target provides the LIBNAME interface
2438809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  -Wc,FLAG
2439809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  -Xcompiler FLAG   pass linker-specific FLAG directly to the compiler
2440809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  -Wl,FLAG
2441809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  -Xlinker FLAG     pass linker-specific FLAG directly to the linker
2442809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  -XCClinker FLAG   pass link-specific FLAG to the compiler driver (CC)
2443809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2444809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsAll other options (arguments beginning with \`-') are ignored.
2445809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2446809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsEvery other argument is treated as a filename.  Files ending in \`.la' are
2447809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatstreated as uninstalled libtool libraries, other files are standard or library
2448809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsobject files.
2449809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2450809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsIf the OUTPUT-FILE ends in \`.la', then a libtool library is created,
2451809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsonly library objects (\`.lo' files) may be specified, and \`-rpath' is
2452809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsrequired, except when creating a convenience library.
2453809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2454809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
2455809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsusing \`ar' and \`ranlib', or on Windows using \`lib'.
2456809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2457809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
2458809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsis created, otherwise an executable program is created."
2459809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        ;;
2460809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2461809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      uninstall)
2462809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        $ECHO \
2463809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
2464809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2465809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsRemove libraries from an installation directory.
2466809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2467809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsRM is the name of the program to use to delete files associated with each FILE
2468809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
2469809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsto RM.
2470809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2471809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsIf FILE is a libtool library, all the files associated with it are deleted.
2472809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsOtherwise, only FILE itself is deleted using RM."
2473809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        ;;
2474809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2475809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      *)
2476809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        func_fatal_help "invalid operation mode \`$opt_mode'"
2477809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        ;;
2478809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    esac
2479809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2480809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    echo
2481809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    $ECHO "Try \`$progname --help' for more information about other modes."
2482809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
2483809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2484809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Now that we've collected a possible --mode arg, show help if necessary
2485809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsif $opt_help; then
2486809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  if test "$opt_help" = :; then
2487809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_mode_help
2488809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  else
2489809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    {
2490809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_help noexit
2491809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      for opt_mode in compile link execute install finish uninstall clean; do
2492809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_mode_help
2493809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      done
2494809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    } | sed -n '1p; 2,$s/^Usage:/  or: /p'
2495809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    {
2496809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_help noexit
2497809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      for opt_mode in compile link execute install finish uninstall clean; do
2498809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	echo
2499809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_mode_help
2500809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      done
2501809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    } |
2502809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    sed '1d
2503809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      /^When reporting/,/^Report/{
2504809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	H
2505809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	d
2506809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      }
2507809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      $x
2508809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      /information about other modes/d
2509809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      /more detailed .*MODE/d
2510809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/'
2511809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  fi
2512809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  exit $?
2513809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfi
2514809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2515809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2516809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_mode_execute arg...
2517809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_mode_execute ()
2518809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
2519809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    $opt_debug
2520809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # The first argument is the command name.
2521809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    cmd="$nonopt"
2522809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    test -z "$cmd" && \
2523809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_fatal_help "you must specify a COMMAND"
2524809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2525809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # Handle -dlopen flags immediately.
2526809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    for file in $opt_dlopen; do
2527809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      test -f "$file" \
2528809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	|| func_fatal_help "\`$file' is not a file"
2529809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2530809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      dir=
2531809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      case $file in
2532809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      *.la)
2533809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_resolve_sysroot "$file"
2534809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	file=$func_resolve_sysroot_result
2535809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2536809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Check to see that this really is a libtool archive.
2537809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_lalib_unsafe_p "$file" \
2538809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  || func_fatal_help "\`$lib' is not a valid libtool archive"
2539809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2540809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Read the libtool library.
2541809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	dlname=
2542809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	library_names=
2543809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_source "$file"
2544809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2545809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Skip this library if it cannot be dlopened.
2546809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test -z "$dlname"; then
2547809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # Warn if it was a shared library.
2548809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  test -n "$library_names" && \
2549809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_warning "\`$file' was not linked with \`-export-dynamic'"
2550809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  continue
2551809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
2552809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2553809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_dirname "$file" "" "."
2554809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	dir="$func_dirname_result"
2555809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2556809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test -f "$dir/$objdir/$dlname"; then
2557809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_append dir "/$objdir"
2558809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	else
2559809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test ! -f "$dir/$dlname"; then
2560809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
2561809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
2562809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
2563809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
2564809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2565809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      *.lo)
2566809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Just add the directory containing the .lo file.
2567809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_dirname "$file" "" "."
2568809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	dir="$func_dirname_result"
2569809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
2570809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2571809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      *)
2572809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
2573809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	continue
2574809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
2575809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      esac
2576809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2577809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Get the absolute pathname.
2578809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      absdir=`cd "$dir" && pwd`
2579809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      test -n "$absdir" && dir="$absdir"
2580809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2581809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Now add the directory to shlibpath_var.
2582809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if eval "test -z \"\$$shlibpath_var\""; then
2583809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	eval "$shlibpath_var=\"\$dir\""
2584809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      else
2585809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
2586809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
2587809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    done
2588809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2589809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # This variable tells wrapper scripts just to set shlibpath_var
2590809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # rather than running their programs.
2591809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    libtool_execute_magic="$magic"
2592809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2593809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # Check if any of the arguments is a wrapper script.
2594809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    args=
2595809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    for file
2596809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    do
2597809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      case $file in
2598809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      -* | *.la | *.lo ) ;;
2599809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      *)
2600809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Do a test to see if this is really a libtool program.
2601809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if func_ltwrapper_script_p "$file"; then
2602809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_source "$file"
2603809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # Transform arg to wrapped name.
2604809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  file="$progdir/$program"
2605809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	elif func_ltwrapper_executable_p "$file"; then
2606809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_ltwrapper_scriptname "$file"
2607809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_source "$func_ltwrapper_scriptname_result"
2608809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # Transform arg to wrapped name.
2609809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  file="$progdir/$program"
2610809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
2611809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
2612809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      esac
2613809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Quote arguments (to preserve shell metacharacters).
2614809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_append_quoted args "$file"
2615809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    done
2616809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2617809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    if test "X$opt_dry_run" = Xfalse; then
2618809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test -n "$shlibpath_var"; then
2619809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Export the shlibpath_var.
2620809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	eval "export $shlibpath_var"
2621809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
2622809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2623809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Restore saved environment variables
2624809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
2625809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      do
2626809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	eval "if test \"\${save_$lt_var+set}\" = set; then
2627809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats                $lt_var=\$save_$lt_var; export $lt_var
2628809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      else
2629809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		$lt_unset $lt_var
2630809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      fi"
2631809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      done
2632809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2633809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Now prepare to actually exec the command.
2634809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      exec_cmd="\$cmd$args"
2635809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    else
2636809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Display what would be done.
2637809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test -n "$shlibpath_var"; then
2638809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
2639809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	echo "export $shlibpath_var"
2640809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
2641809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      $ECHO "$cmd$args"
2642809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      exit $EXIT_SUCCESS
2643809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    fi
2644809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
2645809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2646809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatstest "$opt_mode" = execute && func_mode_execute ${1+"$@"}
2647809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2648809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2649809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_mode_finish arg...
2650809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_mode_finish ()
2651809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
2652809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    $opt_debug
2653809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    libs=
2654809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    libdirs=
2655809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    admincmds=
2656809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2657809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    for opt in "$nonopt" ${1+"$@"}
2658809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    do
2659809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test -d "$opt"; then
2660809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_append libdirs " $opt"
2661809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2662809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      elif test -f "$opt"; then
2663809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if func_lalib_unsafe_p "$opt"; then
2664809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_append libs " $opt"
2665809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	else
2666809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_warning "\`$opt' is not a valid libtool archive"
2667809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
2668809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2669809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      else
2670809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_fatal_error "invalid argument \`$opt'"
2671809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
2672809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    done
2673809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2674809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    if test -n "$libs"; then
2675809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test -n "$lt_sysroot"; then
2676809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"`
2677809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;"
2678809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      else
2679809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        sysroot_cmd=
2680809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
2681809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2682809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Remove sysroot references
2683809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if $opt_dry_run; then
2684809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        for lib in $libs; do
2685809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats          echo "removing references to $lt_sysroot and \`=' prefixes from $lib"
2686809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        done
2687809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      else
2688809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        tmpdir=`func_mktempdir`
2689809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        for lib in $libs; do
2690809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \
2691809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    > $tmpdir/tmp-la
2692809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  mv -f $tmpdir/tmp-la $lib
2693809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	done
2694809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        ${RM}r "$tmpdir"
2695809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
2696809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    fi
2697809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2698809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
2699809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      for libdir in $libdirs; do
2700809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test -n "$finish_cmds"; then
2701809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # Do each command in the finish commands.
2702809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
2703809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats'"$cmd"'"'
2704809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
2705809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test -n "$finish_eval"; then
2706809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # Do the single finish_eval.
2707809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  eval cmds=\"$finish_eval\"
2708809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  $opt_dry_run || eval "$cmds" || func_append admincmds "
2709809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats       $cmds"
2710809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
2711809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      done
2712809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    fi
2713809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2714809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # Exit here if they wanted silent mode.
2715809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    $opt_silent && exit $EXIT_SUCCESS
2716809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2717809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
2718809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      echo "----------------------------------------------------------------------"
2719809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      echo "Libraries have been installed in:"
2720809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      for libdir in $libdirs; do
2721809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	$ECHO "   $libdir"
2722809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      done
2723809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      echo
2724809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      echo "If you ever happen to want to link against installed libraries"
2725809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      echo "in a given directory, LIBDIR, you must either use libtool, and"
2726809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
2727809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      echo "flag during linking and do at least one of the following:"
2728809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test -n "$shlibpath_var"; then
2729809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	echo "   - add LIBDIR to the \`$shlibpath_var' environment variable"
2730809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	echo "     during execution"
2731809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
2732809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test -n "$runpath_var"; then
2733809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	echo "   - add LIBDIR to the \`$runpath_var' environment variable"
2734809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	echo "     during linking"
2735809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
2736809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test -n "$hardcode_libdir_flag_spec"; then
2737809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	libdir=LIBDIR
2738809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	eval flag=\"$hardcode_libdir_flag_spec\"
2739809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2740809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	$ECHO "   - use the \`$flag' linker flag"
2741809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
2742809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test -n "$admincmds"; then
2743809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	$ECHO "   - have your system administrator run these commands:$admincmds"
2744809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
2745809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test -f /etc/ld.so.conf; then
2746809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	echo "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
2747809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
2748809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      echo
2749809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2750809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      echo "See any operating system documentation about shared libraries for"
2751809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      case $host in
2752809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	solaris2.[6789]|solaris2.1[0-9])
2753809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  echo "more information, such as the ld(1), crle(1) and ld.so(8) manual"
2754809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  echo "pages."
2755809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
2756809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	*)
2757809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  echo "more information, such as the ld(1) and ld.so(8) manual pages."
2758809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
2759809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      esac
2760809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      echo "----------------------------------------------------------------------"
2761809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    fi
2762809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    exit $EXIT_SUCCESS
2763809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
2764809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2765809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatstest "$opt_mode" = finish && func_mode_finish ${1+"$@"}
2766809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2767809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2768809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_mode_install arg...
2769809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_mode_install ()
2770809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
2771809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    $opt_debug
2772809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # There may be an optional sh(1) argument at the beginning of
2773809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # install_prog (especially on Windows NT).
2774809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
2775809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats       # Allow the use of GNU shtool's install command.
2776809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats       case $nonopt in *shtool*) :;; *) false;; esac; then
2777809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Aesthetically quote it.
2778809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_quote_for_eval "$nonopt"
2779809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      install_prog="$func_quote_for_eval_result "
2780809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      arg=$1
2781809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      shift
2782809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    else
2783809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      install_prog=
2784809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      arg=$nonopt
2785809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    fi
2786809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2787809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # The real first argument should be the name of the installation program.
2788809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # Aesthetically quote it.
2789809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_quote_for_eval "$arg"
2790809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_append install_prog "$func_quote_for_eval_result"
2791809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    install_shared_prog=$install_prog
2792809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    case " $install_prog " in
2793809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      *[\\\ /]cp\ *) install_cp=: ;;
2794809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      *) install_cp=false ;;
2795809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    esac
2796809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2797809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # We need to accept at least all the BSD install flags.
2798809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    dest=
2799809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    files=
2800809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    opts=
2801809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    prev=
2802809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    install_type=
2803809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    isdir=no
2804809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    stripme=
2805809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    no_mode=:
2806809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    for arg
2807809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    do
2808809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      arg2=
2809809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test -n "$dest"; then
2810809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_append files " $dest"
2811809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	dest=$arg
2812809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	continue
2813809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
2814809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2815809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      case $arg in
2816809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      -d) isdir=yes ;;
2817809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      -f)
2818809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if $install_cp; then :; else
2819809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  prev=$arg
2820809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
2821809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
2822809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      -g | -m | -o)
2823809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	prev=$arg
2824809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
2825809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      -s)
2826809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	stripme=" -s"
2827809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	continue
2828809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
2829809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      -*)
2830809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
2831809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      *)
2832809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# If the previous option needed an argument, then skip it.
2833809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test -n "$prev"; then
2834809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test "x$prev" = x-m && test -n "$install_override_mode"; then
2835809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    arg2=$install_override_mode
2836809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    no_mode=false
2837809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
2838809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  prev=
2839809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	else
2840809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  dest=$arg
2841809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  continue
2842809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
2843809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
2844809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      esac
2845809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2846809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Aesthetically quote the argument.
2847809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_quote_for_eval "$arg"
2848809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_append install_prog " $func_quote_for_eval_result"
2849809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test -n "$arg2"; then
2850809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_quote_for_eval "$arg2"
2851809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
2852809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_append install_shared_prog " $func_quote_for_eval_result"
2853809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    done
2854809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2855809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    test -z "$install_prog" && \
2856809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_fatal_help "you must specify an install program"
2857809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2858809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    test -n "$prev" && \
2859809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_fatal_help "the \`$prev' option requires an argument"
2860809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2861809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    if test -n "$install_override_mode" && $no_mode; then
2862809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if $install_cp; then :; else
2863809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_quote_for_eval "$install_override_mode"
2864809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_append install_shared_prog " -m $func_quote_for_eval_result"
2865809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
2866809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    fi
2867809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2868809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    if test -z "$files"; then
2869809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test -z "$dest"; then
2870809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_fatal_help "no file or destination specified"
2871809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      else
2872809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_fatal_help "you must specify a destination"
2873809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
2874809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    fi
2875809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2876809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # Strip any trailing slash from the destination.
2877809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_stripname '' '/' "$dest"
2878809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    dest=$func_stripname_result
2879809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2880809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # Check to see that the destination is a directory.
2881809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    test -d "$dest" && isdir=yes
2882809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    if test "$isdir" = yes; then
2883809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      destdir="$dest"
2884809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      destname=
2885809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    else
2886809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_dirname_and_basename "$dest" "" "."
2887809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      destdir="$func_dirname_result"
2888809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      destname="$func_basename_result"
2889809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2890809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Not a directory, so check to see that there is only one file specified.
2891809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      set dummy $files; shift
2892809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      test "$#" -gt 1 && \
2893809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_fatal_help "\`$dest' is not a directory"
2894809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    fi
2895809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    case $destdir in
2896809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    [\\/]* | [A-Za-z]:[\\/]*) ;;
2897809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    *)
2898809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      for file in $files; do
2899809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	case $file in
2900809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	*.lo) ;;
2901809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	*)
2902809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_fatal_help "\`$destdir' must be an absolute directory name"
2903809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
2904809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	esac
2905809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      done
2906809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      ;;
2907809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    esac
2908809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2909809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # This variable tells wrapper scripts just to set variables rather
2910809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # than running their programs.
2911809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    libtool_install_magic="$magic"
2912809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2913809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    staticlibs=
2914809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    future_libdirs=
2915809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    current_libdirs=
2916809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    for file in $files; do
2917809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2918809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Do each installation.
2919809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      case $file in
2920809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      *.$libext)
2921809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Do the static libraries later.
2922809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_append staticlibs " $file"
2923809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
2924809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2925809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      *.la)
2926809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_resolve_sysroot "$file"
2927809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	file=$func_resolve_sysroot_result
2928809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2929809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Check to see that this really is a libtool archive.
2930809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_lalib_unsafe_p "$file" \
2931809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  || func_fatal_help "\`$file' is not a valid libtool archive"
2932809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2933809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	library_names=
2934809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	old_library=
2935809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	relink_command=
2936809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_source "$file"
2937809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2938809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Add the libdir to current_libdirs if it is the destination.
2939809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test "X$destdir" = "X$libdir"; then
2940809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  case "$current_libdirs " in
2941809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *" $libdir "*) ;;
2942809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *) func_append current_libdirs " $libdir" ;;
2943809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  esac
2944809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	else
2945809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # Note the libdir as a future libdir.
2946809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  case "$future_libdirs " in
2947809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *" $libdir "*) ;;
2948809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *) func_append future_libdirs " $libdir" ;;
2949809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  esac
2950809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
2951809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2952809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_dirname "$file" "/" ""
2953809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	dir="$func_dirname_result"
2954809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_append dir "$objdir"
2955809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2956809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test -n "$relink_command"; then
2957809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # Determine the prefix the user has applied to our future dir.
2958809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"`
2959809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2960809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # Don't allow the user to place us outside of our expected
2961809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # location b/c this prevents finding dependent libraries that
2962809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # are installed to the same prefix.
2963809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # At present, this check doesn't affect windows .dll's that
2964809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # are installed into $libdir/../bin (currently, that works fine)
2965809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # but it's something to keep an eye on.
2966809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  test "$inst_prefix_dir" = "$destdir" && \
2967809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
2968809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2969809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test -n "$inst_prefix_dir"; then
2970809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # Stick the inst_prefix_dir data into the link command.
2971809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
2972809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  else
2973809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
2974809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
2975809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2976809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_warning "relinking \`$file'"
2977809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_show_eval "$relink_command" \
2978809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
2979809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
2980809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2981809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# See the names of the shared library.
2982809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	set dummy $library_names; shift
2983809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test -n "$1"; then
2984809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  realname="$1"
2985809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  shift
2986809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2987809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  srcname="$realname"
2988809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  test -n "$relink_command" && srcname="$realname"T
2989809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
2990809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # Install the shared library and build the symlinks.
2991809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \
2992809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      'exit $?'
2993809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  tstripme="$stripme"
2994809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  case $host_os in
2995809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  cygwin* | mingw* | pw32* | cegcc*)
2996809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    case $realname in
2997809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    *.dll.a)
2998809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      tstripme=""
2999809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      ;;
3000809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    esac
3001809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    ;;
3002809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  esac
3003809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test -n "$tstripme" && test -n "$striplib"; then
3004809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_show_eval "$striplib $destdir/$realname" 'exit $?'
3005809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
3006809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3007809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test "$#" -gt 0; then
3008809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # Delete the old symlinks, and create new ones.
3009809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # Try `ln -sf' first, because the `ln' binary might depend on
3010809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # the symlink we replace!  Solaris /bin/ln does not understand -f,
3011809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # so we also need to try rm && ln -s.
3012809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    for linkname
3013809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    do
3014809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      test "$linkname" != "$realname" \
3015809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		&& func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
3016809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    done
3017809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
3018809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3019809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # Do each command in the postinstall commands.
3020809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  lib="$destdir/$realname"
3021809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_execute_cmds "$postinstall_cmds" 'exit $?'
3022809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
3023809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3024809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Install the pseudo-library for information purposes.
3025809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_basename "$file"
3026809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	name="$func_basename_result"
3027809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	instname="$dir/$name"i
3028809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
3029809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3030809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Maybe install the static library, too.
3031809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	test -n "$old_library" && func_append staticlibs " $dir/$old_library"
3032809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
3033809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3034809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      *.lo)
3035809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Install (i.e. copy) a libtool object.
3036809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3037809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Figure out destination file name, if it wasn't already specified.
3038809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test -n "$destname"; then
3039809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  destfile="$destdir/$destname"
3040809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	else
3041809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_basename "$file"
3042809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  destfile="$func_basename_result"
3043809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  destfile="$destdir/$destfile"
3044809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
3045809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3046809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Deduce the name of the destination old-style object file.
3047809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	case $destfile in
3048809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	*.lo)
3049809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_lo2o "$destfile"
3050809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  staticdest=$func_lo2o_result
3051809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
3052809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	*.$objext)
3053809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  staticdest="$destfile"
3054809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  destfile=
3055809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
3056809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	*)
3057809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_fatal_help "cannot copy a libtool object to \`$destfile'"
3058809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
3059809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	esac
3060809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3061809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Install the libtool object if requested.
3062809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	test -n "$destfile" && \
3063809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_show_eval "$install_prog $file $destfile" 'exit $?'
3064809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3065809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Install the old object if enabled.
3066809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test "$build_old_libs" = yes; then
3067809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # Deduce the name of the old-style object file.
3068809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_lo2o "$file"
3069809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  staticobj=$func_lo2o_result
3070809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
3071809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
3072809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	exit $EXIT_SUCCESS
3073809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
3074809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3075809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      *)
3076809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Figure out destination file name, if it wasn't already specified.
3077809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test -n "$destname"; then
3078809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  destfile="$destdir/$destname"
3079809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	else
3080809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_basename "$file"
3081809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  destfile="$func_basename_result"
3082809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  destfile="$destdir/$destfile"
3083809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
3084809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3085809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# If the file is missing, and there is a .exe on the end, strip it
3086809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# because it is most likely a libtool script we actually want to
3087809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# install
3088809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	stripped_ext=""
3089809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	case $file in
3090809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *.exe)
3091809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    if test ! -f "$file"; then
3092809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      func_stripname '' '.exe' "$file"
3093809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      file=$func_stripname_result
3094809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      stripped_ext=".exe"
3095809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    fi
3096809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    ;;
3097809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	esac
3098809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3099809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Do a test to see if this is really a libtool program.
3100809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	case $host in
3101809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	*cygwin* | *mingw*)
3102809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    if func_ltwrapper_executable_p "$file"; then
3103809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      func_ltwrapper_scriptname "$file"
3104809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      wrapper=$func_ltwrapper_scriptname_result
3105809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    else
3106809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      func_stripname '' '.exe' "$file"
3107809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      wrapper=$func_stripname_result
3108809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    fi
3109809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    ;;
3110809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	*)
3111809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    wrapper=$file
3112809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    ;;
3113809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	esac
3114809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if func_ltwrapper_script_p "$wrapper"; then
3115809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  notinst_deplibs=
3116809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  relink_command=
3117809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3118809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_source "$wrapper"
3119809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3120809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # Check the variables that should have been set.
3121809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  test -z "$generated_by_libtool_version" && \
3122809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_fatal_error "invalid libtool wrapper script \`$wrapper'"
3123809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3124809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  finalize=yes
3125809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  for lib in $notinst_deplibs; do
3126809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # Check to see that each library is installed.
3127809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    libdir=
3128809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    if test -f "$lib"; then
3129809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      func_source "$lib"
3130809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    fi
3131809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test
3132809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    if test -n "$libdir" && test ! -f "$libfile"; then
3133809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      func_warning "\`$lib' has not been installed in \`$libdir'"
3134809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      finalize=no
3135809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    fi
3136809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  done
3137809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3138809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  relink_command=
3139809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_source "$wrapper"
3140809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3141809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  outputname=
3142809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test "$fast_install" = no && test -n "$relink_command"; then
3143809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    $opt_dry_run || {
3144809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      if test "$finalize" = yes; then
3145809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	        tmpdir=`func_mktempdir`
3146809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		func_basename "$file$stripped_ext"
3147809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		file="$func_basename_result"
3148809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	        outputname="$tmpdir/$file"
3149809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	        # Replace the output file specification.
3150809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	        relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'`
3151809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3152809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	        $opt_silent || {
3153809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	          func_quote_for_expand "$relink_command"
3154809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  eval "func_echo $func_quote_for_expand_result"
3155809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	        }
3156809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	        if eval "$relink_command"; then :
3157809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	          else
3158809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  func_error "error: relink \`$file' with the above command before installing it"
3159809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  $opt_dry_run || ${RM}r "$tmpdir"
3160809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  continue
3161809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	        fi
3162809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	        file="$outputname"
3163809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      else
3164809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	        func_warning "cannot relink \`$file'"
3165809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      fi
3166809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    }
3167809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  else
3168809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # Install the binary that we compiled earlier.
3169809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"`
3170809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
3171809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
3172809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3173809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# remove .exe since cygwin /usr/bin/install will append another
3174809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# one anyway
3175809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	case $install_prog,$host in
3176809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	*/usr/bin/install*,*cygwin*)
3177809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  case $file:$destfile in
3178809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *.exe:*.exe)
3179809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # this is ok
3180809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    ;;
3181809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *.exe:*)
3182809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    destfile=$destfile.exe
3183809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    ;;
3184809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *:*.exe)
3185809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_stripname '' '.exe' "$destfile"
3186809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    destfile=$func_stripname_result
3187809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    ;;
3188809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  esac
3189809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
3190809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	esac
3191809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
3192809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	$opt_dry_run || if test -n "$outputname"; then
3193809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ${RM}r "$tmpdir"
3194809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
3195809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
3196809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      esac
3197809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    done
3198809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3199809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    for file in $staticlibs; do
3200809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_basename "$file"
3201809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      name="$func_basename_result"
3202809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3203809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Set up the ranlib parameters.
3204809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      oldlib="$destdir/$name"
3205809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
3206809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      tool_oldlib=$func_to_tool_file_result
3207809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3208809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
3209809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3210809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test -n "$stripme" && test -n "$old_striplib"; then
3211809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_show_eval "$old_striplib $tool_oldlib" 'exit $?'
3212809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
3213809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3214809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Do each command in the postinstall commands.
3215809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_execute_cmds "$old_postinstall_cmds" 'exit $?'
3216809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    done
3217809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3218809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    test -n "$future_libdirs" && \
3219809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_warning "remember to run \`$progname --finish$future_libdirs'"
3220809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3221809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    if test -n "$current_libdirs"; then
3222809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Maybe just do a dry run.
3223809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      $opt_dry_run && current_libdirs=" -n$current_libdirs"
3224809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
3225809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    else
3226809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      exit $EXIT_SUCCESS
3227809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    fi
3228809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
3229809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3230809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatstest "$opt_mode" = install && func_mode_install ${1+"$@"}
3231809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3232809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3233809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_generate_dlsyms outputname originator pic_p
3234809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Extract symbols from dlprefiles and create ${outputname}S.o with
3235809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# a dlpreopen symbol table.
3236809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_generate_dlsyms ()
3237809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
3238809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    $opt_debug
3239809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    my_outputname="$1"
3240809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    my_originator="$2"
3241809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    my_pic_p="${3-no}"
3242809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
3243809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    my_dlsyms=
3244809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3245809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
3246809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test -n "$NM" && test -n "$global_symbol_pipe"; then
3247809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	my_dlsyms="${my_outputname}S.c"
3248809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      else
3249809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_error "not configured to extract global symbols from dlpreopened files"
3250809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
3251809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    fi
3252809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3253809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    if test -n "$my_dlsyms"; then
3254809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      case $my_dlsyms in
3255809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      "") ;;
3256809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      *.c)
3257809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Discover the nlist of each of the dlfiles.
3258809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	nlist="$output_objdir/${my_outputname}.nm"
3259809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3260809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
3261809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3262809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Parse the name list into a source file.
3263809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_verbose "creating $output_objdir/$my_dlsyms"
3264809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3265809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	$opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
3266809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
3267809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
3268809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3269809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#ifdef __cplusplus
3270809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsextern \"C\" {
3271809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#endif
3272809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3273809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4))
3274809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
3275809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#endif
3276809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3277809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
3278809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
3279809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats/* DATA imports from DLLs on WIN32 con't be const, because runtime
3280809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats   relocations are performed -- see ld's documentation on pseudo-relocs.  */
3281809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# define LT_DLSYM_CONST
3282809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#elif defined(__osf__)
3283809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats/* This system does not cope well with relocations in const data.  */
3284809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# define LT_DLSYM_CONST
3285809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#else
3286809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# define LT_DLSYM_CONST const
3287809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#endif
3288809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3289809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats/* External symbol declarations for the compiler. */\
3290809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats"
3291809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3292809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test "$dlself" = yes; then
3293809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_verbose "generating symbol list for \`$output'"
3294809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3295809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
3296809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3297809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # Add our own program objects to the symbol list.
3298809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP`
3299809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  for progfile in $progfiles; do
3300809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_to_tool_file "$progfile" func_convert_file_msys_to_w32
3301809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_verbose "extracting global C symbols from \`$func_to_tool_file_result'"
3302809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'"
3303809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  done
3304809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3305809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test -n "$exclude_expsyms"; then
3306809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    $opt_dry_run || {
3307809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
3308809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      eval '$MV "$nlist"T "$nlist"'
3309809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    }
3310809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
3311809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3312809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test -n "$export_symbols_regex"; then
3313809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    $opt_dry_run || {
3314809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
3315809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      eval '$MV "$nlist"T "$nlist"'
3316809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    }
3317809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
3318809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3319809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # Prepare the list of exported symbols
3320809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test -z "$export_symbols"; then
3321809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    export_symbols="$output_objdir/$outputname.exp"
3322809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    $opt_dry_run || {
3323809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      $RM $export_symbols
3324809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
3325809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      case $host in
3326809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      *cygwin* | *mingw* | *cegcc* )
3327809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats                eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
3328809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats                eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
3329809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	        ;;
3330809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      esac
3331809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    }
3332809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  else
3333809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    $opt_dry_run || {
3334809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
3335809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
3336809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      eval '$MV "$nlist"T "$nlist"'
3337809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      case $host in
3338809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	        *cygwin* | *mingw* | *cegcc* )
3339809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	          eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
3340809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	          eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
3341809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	          ;;
3342809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      esac
3343809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    }
3344809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
3345809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
3346809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3347809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	for dlprefile in $dlprefiles; do
3348809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_verbose "extracting global C symbols from \`$dlprefile'"
3349809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_basename "$dlprefile"
3350809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  name="$func_basename_result"
3351809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats          case $host in
3352809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    *cygwin* | *mingw* | *cegcc* )
3353809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # if an import library, we need to obtain dlname
3354809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      if func_win32_import_lib_p "$dlprefile"; then
3355809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	        func_tr_sh "$dlprefile"
3356809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	        eval "curr_lafile=\$libfile_$func_tr_sh_result"
3357809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	        dlprefile_dlbasename=""
3358809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	        if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then
3359809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	          # Use subshell, to avoid clobbering current variable values
3360809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	          dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"`
3361809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	          if test -n "$dlprefile_dlname" ; then
3362809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	            func_basename "$dlprefile_dlname"
3363809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	            dlprefile_dlbasename="$func_basename_result"
3364809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	          else
3365809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	            # no lafile. user explicitly requested -dlpreopen <import library>.
3366809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	            $sharedlib_from_linklib_cmd "$dlprefile"
3367809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	            dlprefile_dlbasename=$sharedlib_from_linklib_result
3368809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	          fi
3369809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	        fi
3370809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	        $opt_dry_run || {
3371809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	          if test -n "$dlprefile_dlbasename" ; then
3372809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	            eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"'
3373809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	          else
3374809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	            func_warning "Could not compute DLL name from $name"
3375809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	            eval '$ECHO ": $name " >> "$nlist"'
3376809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	          fi
3377809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	          func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
3378809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	          eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe |
3379809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	            $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'"
3380809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	        }
3381809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      else # not an import lib
3382809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	        $opt_dry_run || {
3383809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	          eval '$ECHO ": $name " >> "$nlist"'
3384809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	          func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
3385809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	          eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
3386809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	        }
3387809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      fi
3388809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    ;;
3389809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    *)
3390809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      $opt_dry_run || {
3391809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	        eval '$ECHO ": $name " >> "$nlist"'
3392809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	        func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
3393809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	        eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
3394809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      }
3395809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    ;;
3396809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats          esac
3397809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	done
3398809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3399809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	$opt_dry_run || {
3400809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # Make sure we have at least an empty file.
3401809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  test -f "$nlist" || : > "$nlist"
3402809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3403809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test -n "$exclude_expsyms"; then
3404809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
3405809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    $MV "$nlist"T "$nlist"
3406809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
3407809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3408809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # Try sorting and uniquifying the output.
3409809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if $GREP -v "^: " < "$nlist" |
3410809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      if sort -k 3 </dev/null >/dev/null 2>&1; then
3411809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		sort -k 3
3412809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      else
3413809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		sort +2
3414809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      fi |
3415809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      uniq > "$nlist"S; then
3416809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    :
3417809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  else
3418809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    $GREP -v "^: " < "$nlist" > "$nlist"S
3419809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
3420809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3421809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test -f "$nlist"S; then
3422809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
3423809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  else
3424809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    echo '/* NONE */' >> "$output_objdir/$my_dlsyms"
3425809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
3426809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3427809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  echo >> "$output_objdir/$my_dlsyms" "\
3428809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3429809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats/* The mapping between symbol names and symbols.  */
3430809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatstypedef struct {
3431809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  const char *name;
3432809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  void *address;
3433809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} lt_dlsymlist;
3434809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsextern LT_DLSYM_CONST lt_dlsymlist
3435809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatslt_${my_prefix}_LTX_preloaded_symbols[];
3436809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsLT_DLSYM_CONST lt_dlsymlist
3437809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatslt_${my_prefix}_LTX_preloaded_symbols[] =
3438809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{\
3439809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  { \"$my_originator\", (void *) 0 },"
3440809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3441809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  case $need_lib_prefix in
3442809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  no)
3443809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
3444809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    ;;
3445809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *)
3446809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
3447809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    ;;
3448809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  esac
3449809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  echo >> "$output_objdir/$my_dlsyms" "\
3450809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  {0, (void *) 0}
3451809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats};
3452809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3453809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats/* This works around a problem in FreeBSD linker */
3454809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#ifdef FREEBSD_WORKAROUND
3455809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsstatic const void *lt_preloaded_setup() {
3456809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  return lt_${my_prefix}_LTX_preloaded_symbols;
3457809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
3458809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#endif
3459809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3460809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#ifdef __cplusplus
3461809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
3462809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#endif\
3463809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats"
3464809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	} # !$opt_dry_run
3465809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3466809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	pic_flag_for_symtable=
3467809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	case "$compile_command " in
3468809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	*" -static "*) ;;
3469809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	*)
3470809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  case $host in
3471809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # compiling the symbol table file with pic_flag works around
3472809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # a FreeBSD bug that causes programs to crash when -lm is
3473809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # linked before any other PIC object.  But we must not use
3474809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # pic_flag when linking with -static.  The problem exists in
3475809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
3476809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
3477809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
3478809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *-*-hpux*)
3479809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    pic_flag_for_symtable=" $pic_flag"  ;;
3480809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *)
3481809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    if test "X$my_pic_p" != Xno; then
3482809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      pic_flag_for_symtable=" $pic_flag"
3483809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    fi
3484809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    ;;
3485809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  esac
3486809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
3487809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	esac
3488809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	symtab_cflags=
3489809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	for arg in $LTCFLAGS; do
3490809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  case $arg in
3491809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  -pie | -fpie | -fPIE) ;;
3492809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *) func_append symtab_cflags " $arg" ;;
3493809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  esac
3494809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	done
3495809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3496809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Now compile the dynamic symbol file.
3497809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
3498809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3499809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Clean up the generated files.
3500809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
3501809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3502809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Transform the symbol file into the correct name.
3503809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	symfileobj="$output_objdir/${my_outputname}S.$objext"
3504809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	case $host in
3505809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	*cygwin* | *mingw* | *cegcc* )
3506809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test -f "$output_objdir/$my_outputname.def"; then
3507809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
3508809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
3509809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  else
3510809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
3511809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
3512809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
3513809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
3514809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	*)
3515809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
3516809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
3517809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
3518809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	esac
3519809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
3520809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      *)
3521809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_fatal_error "unknown suffix for \`$my_dlsyms'"
3522809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
3523809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      esac
3524809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    else
3525809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # We keep going just in case the user didn't refer to
3526809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
3527809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # really was required.
3528809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3529809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Nullify the symbol file.
3530809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"`
3531809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"`
3532809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    fi
3533809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
3534809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3535809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_win32_libid arg
3536809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# return the library type of file 'arg'
3537809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#
3538809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Need a lot of goo to handle *both* DLLs and import libs
3539809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Has to be a shell function in order to 'eat' the argument
3540809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# that is supplied when $file_magic_command is called.
3541809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Despite the name, also deal with 64 bit binaries.
3542809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_win32_libid ()
3543809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
3544809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  $opt_debug
3545809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  win32_libid_type="unknown"
3546809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  win32_fileres=`file -L $1 2>/dev/null`
3547809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  case $win32_fileres in
3548809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  *ar\ archive\ import\ library*) # definitely import
3549809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    win32_libid_type="x86 archive import"
3550809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    ;;
3551809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  *ar\ archive*) # could be an import, or static
3552809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD.
3553809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
3554809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats       $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then
3555809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_to_tool_file "$1" func_convert_file_msys_to_w32
3556809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" |
3557809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	$SED -n -e '
3558809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    1,100{
3559809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		/ I /{
3560809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    s,.*,import,
3561809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    p
3562809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    q
3563809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		}
3564809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    }'`
3565809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      case $win32_nmres in
3566809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      import*)  win32_libid_type="x86 archive import";;
3567809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      *)        win32_libid_type="x86 archive static";;
3568809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      esac
3569809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    fi
3570809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    ;;
3571809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  *DLL*)
3572809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    win32_libid_type="x86 DLL"
3573809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    ;;
3574809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  *executable*) # but shell scripts are "executable" too...
3575809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    case $win32_fileres in
3576809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    *MS\ Windows\ PE\ Intel*)
3577809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      win32_libid_type="x86 DLL"
3578809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      ;;
3579809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    esac
3580809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    ;;
3581809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  esac
3582809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  $ECHO "$win32_libid_type"
3583809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
3584809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3585809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_cygming_dll_for_implib ARG
3586809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#
3587809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Platform-specific function to extract the
3588809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# name of the DLL associated with the specified
3589809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# import library ARG.
3590809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Invoked by eval'ing the libtool variable
3591809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#    $sharedlib_from_linklib_cmd
3592809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Result is available in the variable
3593809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#    $sharedlib_from_linklib_result
3594809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_cygming_dll_for_implib ()
3595809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
3596809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  $opt_debug
3597809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"`
3598809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
3599809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3600809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs
3601809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#
3602809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# The is the core of a fallback implementation of a
3603809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# platform-specific function to extract the name of the
3604809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# DLL associated with the specified import library LIBNAME.
3605809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#
3606809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# SECTION_NAME is either .idata$6 or .idata$7, depending
3607809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# on the platform and compiler that created the implib.
3608809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#
3609809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Echos the name of the DLL associated with the
3610809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# specified import library.
3611809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_cygming_dll_for_implib_fallback_core ()
3612809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
3613809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  $opt_debug
3614809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"`
3615809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  $OBJDUMP -s --section "$1" "$2" 2>/dev/null |
3616809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    $SED '/^Contents of section '"$match_literal"':/{
3617809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Place marker at beginning of archive member dllname section
3618809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      s/.*/====MARK====/
3619809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      p
3620809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      d
3621809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    }
3622809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # These lines can sometimes be longer than 43 characters, but
3623809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # are always uninteresting
3624809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    /:[	 ]*file format pe[i]\{,1\}-/d
3625809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    /^In archive [^:]*:/d
3626809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # Ensure marker is printed
3627809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    /^====MARK====/p
3628809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # Remove all lines with less than 43 characters
3629809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    /^.\{43\}/!d
3630809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # From remaining lines, remove first 43 characters
3631809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    s/^.\{43\}//' |
3632809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    $SED -n '
3633809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Join marker and all lines until next marker into a single line
3634809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      /^====MARK====/ b para
3635809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      H
3636809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      $ b para
3637809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      b
3638809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      :para
3639809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      x
3640809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      s/\n//g
3641809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Remove the marker
3642809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      s/^====MARK====//
3643809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Remove trailing dots and whitespace
3644809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      s/[\. \t]*$//
3645809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Print
3646809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      /./p' |
3647809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # we now have a list, one entry per line, of the stringified
3648809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # contents of the appropriate section of all members of the
3649809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # archive which possess that section. Heuristic: eliminate
3650809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # all those which have a first or second character that is
3651809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # a '.' (that is, objdump's representation of an unprintable
3652809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # character.) This should work for all archives with less than
3653809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # 0x302f exports -- but will fail for DLLs whose name actually
3654809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # begins with a literal '.' or a single character followed by
3655809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # a '.'.
3656809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    #
3657809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # Of those that remain, print the first one.
3658809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    $SED -e '/^\./d;/^.\./d;q'
3659809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
3660809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3661809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_cygming_gnu_implib_p ARG
3662809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# This predicate returns with zero status (TRUE) if
3663809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# ARG is a GNU/binutils-style import library. Returns
3664809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# with nonzero status (FALSE) otherwise.
3665809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_cygming_gnu_implib_p ()
3666809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
3667809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  $opt_debug
3668809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  func_to_tool_file "$1" func_convert_file_msys_to_w32
3669809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  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)$'`
3670809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  test -n "$func_cygming_gnu_implib_tmp"
3671809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
3672809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3673809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_cygming_ms_implib_p ARG
3674809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# This predicate returns with zero status (TRUE) if
3675809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# ARG is an MS-style import library. Returns
3676809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# with nonzero status (FALSE) otherwise.
3677809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_cygming_ms_implib_p ()
3678809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
3679809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  $opt_debug
3680809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  func_to_tool_file "$1" func_convert_file_msys_to_w32
3681809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'`
3682809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  test -n "$func_cygming_ms_implib_tmp"
3683809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
3684809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3685809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_cygming_dll_for_implib_fallback ARG
3686809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Platform-specific function to extract the
3687809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# name of the DLL associated with the specified
3688809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# import library ARG.
3689809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#
3690809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# This fallback implementation is for use when $DLLTOOL
3691809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# does not support the --identify-strict option.
3692809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Invoked by eval'ing the libtool variable
3693809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#    $sharedlib_from_linklib_cmd
3694809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Result is available in the variable
3695809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#    $sharedlib_from_linklib_result
3696809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_cygming_dll_for_implib_fallback ()
3697809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
3698809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  $opt_debug
3699809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  if func_cygming_gnu_implib_p "$1" ; then
3700809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # binutils import library
3701809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"`
3702809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  elif func_cygming_ms_implib_p "$1" ; then
3703809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # ms-generated import library
3704809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"`
3705809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  else
3706809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # unknown
3707809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    sharedlib_from_linklib_result=""
3708809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  fi
3709809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
3710809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3711809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3712809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_extract_an_archive dir oldlib
3713809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_extract_an_archive ()
3714809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
3715809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    $opt_debug
3716809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    f_ex_an_ar_dir="$1"; shift
3717809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    f_ex_an_ar_oldlib="$1"
3718809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    if test "$lock_old_archive_extraction" = yes; then
3719809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      lockfile=$f_ex_an_ar_oldlib.lock
3720809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
3721809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_echo "Waiting for $lockfile to be removed"
3722809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	sleep 2
3723809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      done
3724809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    fi
3725809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \
3726809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		   'stat=$?; rm -f "$lockfile"; exit $stat'
3727809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    if test "$lock_old_archive_extraction" = yes; then
3728809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      $opt_dry_run || rm -f "$lockfile"
3729809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    fi
3730809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
3731809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats     :
3732809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    else
3733809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
3734809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    fi
3735809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
3736809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3737809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3738809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_extract_archives gentop oldlib ...
3739809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_extract_archives ()
3740809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
3741809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    $opt_debug
3742809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    my_gentop="$1"; shift
3743809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    my_oldlibs=${1+"$@"}
3744809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    my_oldobjs=""
3745809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    my_xlib=""
3746809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    my_xabs=""
3747809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    my_xdir=""
3748809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3749809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    for my_xlib in $my_oldlibs; do
3750809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Extract the objects.
3751809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      case $my_xlib in
3752809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	[\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
3753809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	*) my_xabs=`pwd`"/$my_xlib" ;;
3754809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      esac
3755809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_basename "$my_xlib"
3756809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      my_xlib="$func_basename_result"
3757809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      my_xlib_u=$my_xlib
3758809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      while :; do
3759809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        case " $extracted_archives " in
3760809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	*" $my_xlib_u "*)
3761809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_arith $extracted_serial + 1
3762809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  extracted_serial=$func_arith_result
3763809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  my_xlib_u=lt$extracted_serial-$my_xlib ;;
3764809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	*) break ;;
3765809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	esac
3766809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      done
3767809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      extracted_archives="$extracted_archives $my_xlib_u"
3768809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      my_xdir="$my_gentop/$my_xlib_u"
3769809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3770809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_mkdir_p "$my_xdir"
3771809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3772809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      case $host in
3773809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      *-darwin*)
3774809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_verbose "Extracting $my_xabs"
3775809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Do not bother doing anything if just a dry run
3776809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	$opt_dry_run || {
3777809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  darwin_orig_dir=`pwd`
3778809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  cd $my_xdir || exit $?
3779809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  darwin_archive=$my_xabs
3780809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  darwin_curdir=`pwd`
3781809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  darwin_base_archive=`basename "$darwin_archive"`
3782809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
3783809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test -n "$darwin_arches"; then
3784809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
3785809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    darwin_arch=
3786809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
3787809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    for darwin_arch in  $darwin_arches ; do
3788809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
3789809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
3790809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
3791809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      func_extract_an_archive "`pwd`" "${darwin_base_archive}"
3792809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      cd "$darwin_curdir"
3793809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
3794809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    done # $darwin_arches
3795809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats            ## Okay now we've a bunch of thin objects, gotta fatten them up :)
3796809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
3797809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    darwin_file=
3798809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    darwin_files=
3799809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    for darwin_file in $darwin_filelist; do
3800809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP`
3801809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      $LIPO -create -output "$darwin_file" $darwin_files
3802809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    done # $darwin_filelist
3803809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    $RM -rf unfat-$$
3804809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    cd "$darwin_orig_dir"
3805809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  else
3806809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    cd $darwin_orig_dir
3807809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_extract_an_archive "$my_xdir" "$my_xabs"
3808809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi # $darwin_arches
3809809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	} # !$opt_dry_run
3810809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
3811809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      *)
3812809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        func_extract_an_archive "$my_xdir" "$my_xabs"
3813809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
3814809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      esac
3815809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP`
3816809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    done
3817809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3818809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_extract_archives_result="$my_oldobjs"
3819809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
3820809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3821809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3822809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_emit_wrapper [arg=no]
3823809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#
3824809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Emit a libtool wrapper script on stdout.
3825809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Don't directly open a file because we may want to
3826809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# incorporate the script contents within a cygwin/mingw
3827809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# wrapper executable.  Must ONLY be called from within
3828809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_mode_link because it depends on a number of variables
3829809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# set therein.
3830809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#
3831809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
3832809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# variable will take.  If 'yes', then the emitted script
3833809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# will assume that the directory in which it is stored is
3834809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# the $objdir directory.  This is a cygwin/mingw-specific
3835809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# behavior.
3836809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_emit_wrapper ()
3837809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
3838809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_emit_wrapper_arg1=${1-no}
3839809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3840809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	$ECHO "\
3841809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#! $SHELL
3842809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3843809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# $output - temporary wrapper script for $objdir/$outputname
3844809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
3845809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#
3846809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# The $output program cannot be directly executed until all the libtool
3847809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# libraries that it depends on are installed.
3848809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#
3849809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# This wrapper script should never be moved out of the build directory.
3850809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# If it is, it will not operate correctly.
3851809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3852809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Sed substitution that helps us do robust quoting.  It backslashifies
3853809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# metacharacters that are still active within double-quoted strings.
3854809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatssed_quote_subst='$sed_quote_subst'
3855809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3856809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Be Bourne compatible
3857809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsif test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
3858809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  emulate sh
3859809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  NULLCMD=:
3860809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
3861809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  # is contrary to our usage.  Disable this feature.
3862809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  alias -g '\${1+\"\$@\"}'='\"\$@\"'
3863809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  setopt NO_GLOB_SUBST
3864809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatselse
3865809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
3866809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfi
3867809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsBIN_SH=xpg4; export BIN_SH # for Tru64
3868809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsDUALCASE=1; export DUALCASE # for MKS sh
3869809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3870809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# The HP-UX ksh and POSIX shell print the target directory to stdout
3871809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# if CDPATH is set.
3872809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
3873809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3874809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsrelink_command=\"$relink_command\"
3875809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3876809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# This environment variable determines our operation mode.
3877809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsif test \"\$libtool_install_magic\" = \"$magic\"; then
3878809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  # install mode needs the following variables:
3879809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  generated_by_libtool_version='$macro_version'
3880809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  notinst_deplibs='$notinst_deplibs'
3881809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatselse
3882809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  # When we are sourced in execute mode, \$file and \$ECHO are already set.
3883809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  if test \"\$libtool_execute_magic\" != \"$magic\"; then
3884809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    file=\"\$0\""
3885809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3886809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"`
3887809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    $ECHO "\
3888809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3889809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# A function that is used when there is no print builtin or printf.
3890809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_fallback_echo ()
3891809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
3892809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  eval 'cat <<_LTECHO_EOF
3893809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats\$1
3894809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats_LTECHO_EOF'
3895809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
3896809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    ECHO=\"$qECHO\"
3897809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  fi
3898809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3899809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Very basic option parsing. These options are (a) specific to
3900809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# the libtool wrapper, (b) are identical between the wrapper
3901809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# /script/ and the wrapper /executable/ which is used only on
3902809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# windows platforms, and (c) all begin with the string "--lt-"
3903809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# (application programs are unlikely to have options which match
3904809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# this pattern).
3905809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#
3906809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# There are only two supported options: --lt-debug and
3907809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# --lt-dump-script. There is, deliberately, no --lt-help.
3908809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#
3909809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# The first argument to this parsing function should be the
3910809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# script's $0 value, followed by "$@".
3911809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatslt_option_debug=
3912809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_parse_lt_options ()
3913809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
3914809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  lt_script_arg0=\$0
3915809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  shift
3916809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  for lt_opt
3917809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  do
3918809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    case \"\$lt_opt\" in
3919809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    --lt-debug) lt_option_debug=1 ;;
3920809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    --lt-dump-script)
3921809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\`
3922809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=.
3923809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\`
3924809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        cat \"\$lt_dump_D/\$lt_dump_F\"
3925809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        exit 0
3926809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      ;;
3927809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    --lt-*)
3928809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2
3929809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        exit 1
3930809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      ;;
3931809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    esac
3932809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  done
3933809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3934809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  # Print the debug banner immediately:
3935809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  if test -n \"\$lt_option_debug\"; then
3936809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2
3937809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  fi
3938809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
3939809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3940809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Used when --lt-debug. Prints its arguments to stdout
3941809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# (redirection is the responsibility of the caller)
3942809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_lt_dump_args ()
3943809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
3944809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  lt_dump_args_N=1;
3945809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  for lt_arg
3946809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  do
3947809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\"
3948809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    lt_dump_args_N=\`expr \$lt_dump_args_N + 1\`
3949809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  done
3950809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
3951809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3952809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Core function for launching the target application
3953809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_exec_program_core ()
3954809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
3955809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats"
3956809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  case $host in
3957809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  # Backslashes separate directories on plain windows
3958809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  *-*-mingw | *-*-os2* | *-cegcc*)
3959809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    $ECHO "\
3960809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test -n \"\$lt_option_debug\"; then
3961809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2
3962809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        func_lt_dump_args \${1+\"\$@\"} 1>&2
3963809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
3964809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
3965809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats"
3966809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    ;;
3967809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3968809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  *)
3969809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    $ECHO "\
3970809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test -n \"\$lt_option_debug\"; then
3971809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2
3972809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        func_lt_dump_args \${1+\"\$@\"} 1>&2
3973809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
3974809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      exec \"\$progdir/\$program\" \${1+\"\$@\"}
3975809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats"
3976809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    ;;
3977809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  esac
3978809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  $ECHO "\
3979809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
3980809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      exit 1
3981809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
3982809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
3983809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# A function to encapsulate launching the target application
3984809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Strips options in the --lt-* namespace from \$@ and
3985809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# launches target application with the remaining arguments.
3986809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_exec_program ()
3987809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
3988809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  case \" \$* \" in
3989809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  *\\ --lt-*)
3990809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    for lt_wr_arg
3991809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    do
3992809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      case \$lt_wr_arg in
3993809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      --lt-*) ;;
3994809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
3995809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      esac
3996809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      shift
3997809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    done ;;
3998809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  esac
3999809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  func_exec_program_core \${1+\"\$@\"}
4000809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
4001809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4002809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  # Parse options
4003809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  func_parse_lt_options \"\$0\" \${1+\"\$@\"}
4004809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4005809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  # Find the directory that this script lives in.
4006809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\`
4007809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
4008809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4009809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  # Follow symbolic links until we get to the real thisdir.
4010809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\`
4011809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  while test -n \"\$file\"; do
4012809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\`
4013809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4014809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # If there was a directory component, then change thisdir.
4015809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    if test \"x\$destdir\" != \"x\$file\"; then
4016809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      case \"\$destdir\" in
4017809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
4018809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      *) thisdir=\"\$thisdir/\$destdir\" ;;
4019809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      esac
4020809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    fi
4021809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4022809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\`
4023809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\`
4024809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  done
4025809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4026809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  # Usually 'no', except on cygwin/mingw when embedded into
4027809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  # the cwrapper.
4028809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1
4029809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
4030809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # special case for '.'
4031809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    if test \"\$thisdir\" = \".\"; then
4032809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      thisdir=\`pwd\`
4033809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    fi
4034809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # remove .libs from thisdir
4035809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    case \"\$thisdir\" in
4036809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;;
4037809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    $objdir )   thisdir=. ;;
4038809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    esac
4039809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  fi
4040809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4041809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  # Try to get the absolute directory name.
4042809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  absdir=\`cd \"\$thisdir\" && pwd\`
4043809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  test -n \"\$absdir\" && thisdir=\"\$absdir\"
4044809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats"
4045809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4046809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test "$fast_install" = yes; then
4047809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  $ECHO "\
4048809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  program=lt-'$outputname'$exeext
4049809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  progdir=\"\$thisdir/$objdir\"
4050809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4051809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  if test ! -f \"\$progdir/\$program\" ||
4052809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
4053809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
4054809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4055809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    file=\"\$\$-\$program\"
4056809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4057809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    if test ! -d \"\$progdir\"; then
4058809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      $MKDIR \"\$progdir\"
4059809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    else
4060809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      $RM \"\$progdir/\$file\"
4061809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    fi"
4062809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4063809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  $ECHO "\
4064809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4065809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # relink executable if necessary
4066809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    if test -n \"\$relink_command\"; then
4067809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
4068809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      else
4069809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	$ECHO \"\$relink_command_output\" >&2
4070809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	$RM \"\$progdir/\$file\"
4071809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	exit 1
4072809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
4073809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    fi
4074809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4075809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
4076809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    { $RM \"\$progdir/\$program\";
4077809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
4078809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    $RM \"\$progdir/\$file\"
4079809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  fi"
4080809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	else
4081809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  $ECHO "\
4082809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  program='$outputname'
4083809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  progdir=\"\$thisdir/$objdir\"
4084809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats"
4085809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
4086809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4087809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	$ECHO "\
4088809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4089809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  if test -f \"\$progdir/\$program\"; then"
4090809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4091809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# fixup the dll searchpath if we need to.
4092809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	#
4093809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Fix the DLL searchpath if we need to.  Do this before prepending
4094809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# to shlibpath, because on Windows, both are PATH and uninstalled
4095809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# libraries must come first.
4096809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test -n "$dllsearchpath"; then
4097809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  $ECHO "\
4098809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # Add the dll search path components to the executable PATH
4099809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    PATH=$dllsearchpath:\$PATH
4100809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats"
4101809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
4102809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4103809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Export our shlibpath_var if we have one.
4104809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
4105809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  $ECHO "\
4106809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # Add our own library path to $shlibpath_var
4107809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
4108809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4109809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # Some systems cannot cope with colon-terminated $shlibpath_var
4110809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # The second colon is a workaround for a bug in BeOS R4 sed
4111809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\`
4112809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4113809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    export $shlibpath_var
4114809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats"
4115809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
4116809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4117809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	$ECHO "\
4118809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    if test \"\$libtool_execute_magic\" != \"$magic\"; then
4119809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Run the actual program with our arguments.
4120809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_exec_program \${1+\"\$@\"}
4121809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    fi
4122809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  else
4123809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # The program doesn't exist.
4124809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
4125809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
4126809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
4127809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    exit 1
4128809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  fi
4129809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfi\
4130809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats"
4131809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
4132809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4133809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4134809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_emit_cwrapperexe_src
4135809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# emit the source code for a wrapper executable on stdout
4136809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Must ONLY be called from within func_mode_link because
4137809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# it depends on a number of variable set therein.
4138809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_emit_cwrapperexe_src ()
4139809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
4140809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	cat <<EOF
4141809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4142809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
4143809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats   Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
4144809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4145809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats   The $output program cannot be directly executed until all the libtool
4146809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats   libraries that it depends on are installed.
4147809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4148809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats   This wrapper executable should never be moved out of the build directory.
4149809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats   If it is, it will not operate correctly.
4150809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats*/
4151809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsEOF
4152809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    cat <<"EOF"
4153809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#ifdef _MSC_VER
4154809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# define _CRT_SECURE_NO_DEPRECATE 1
4155809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#endif
4156809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#include <stdio.h>
4157809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#include <stdlib.h>
4158809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#ifdef _MSC_VER
4159809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# include <direct.h>
4160809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# include <process.h>
4161809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# include <io.h>
4162809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#else
4163809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# include <unistd.h>
4164809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# include <stdint.h>
4165809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# ifdef __CYGWIN__
4166809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#  include <io.h>
4167809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# endif
4168809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#endif
4169809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#include <malloc.h>
4170809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#include <stdarg.h>
4171809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#include <assert.h>
4172809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#include <string.h>
4173809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#include <ctype.h>
4174809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#include <errno.h>
4175809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#include <fcntl.h>
4176809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#include <sys/stat.h>
4177809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4178809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats/* declarations of non-ANSI functions */
4179809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#if defined(__MINGW32__)
4180809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# ifdef __STRICT_ANSI__
4181809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsint _putenv (const char *);
4182809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# endif
4183809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#elif defined(__CYGWIN__)
4184809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# ifdef __STRICT_ANSI__
4185809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatschar *realpath (const char *, char *);
4186809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsint putenv (char *);
4187809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsint setenv (const char *, const char *, int);
4188809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# endif
4189809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats/* #elif defined (other platforms) ... */
4190809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#endif
4191809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4192809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats/* portability defines, excluding path handling macros */
4193809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#if defined(_MSC_VER)
4194809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# define setmode _setmode
4195809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# define stat    _stat
4196809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# define chmod   _chmod
4197809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# define getcwd  _getcwd
4198809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# define putenv  _putenv
4199809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# define S_IXUSR _S_IEXEC
4200809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# ifndef _INTPTR_T_DEFINED
4201809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#  define _INTPTR_T_DEFINED
4202809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#  define intptr_t int
4203809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# endif
4204809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#elif defined(__MINGW32__)
4205809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# define setmode _setmode
4206809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# define stat    _stat
4207809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# define chmod   _chmod
4208809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# define getcwd  _getcwd
4209809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# define putenv  _putenv
4210809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#elif defined(__CYGWIN__)
4211809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# define HAVE_SETENV
4212809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# define FOPEN_WB "wb"
4213809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats/* #elif defined (other platforms) ... */
4214809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#endif
4215809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4216809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#if defined(PATH_MAX)
4217809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# define LT_PATHMAX PATH_MAX
4218809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#elif defined(MAXPATHLEN)
4219809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# define LT_PATHMAX MAXPATHLEN
4220809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#else
4221809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# define LT_PATHMAX 1024
4222809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#endif
4223809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4224809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#ifndef S_IXOTH
4225809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# define S_IXOTH 0
4226809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#endif
4227809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#ifndef S_IXGRP
4228809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# define S_IXGRP 0
4229809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#endif
4230809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4231809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats/* path handling portability macros */
4232809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#ifndef DIR_SEPARATOR
4233809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# define DIR_SEPARATOR '/'
4234809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# define PATH_SEPARATOR ':'
4235809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#endif
4236809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4237809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
4238809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  defined (__OS2__)
4239809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# define HAVE_DOS_BASED_FILE_SYSTEM
4240809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# define FOPEN_WB "wb"
4241809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# ifndef DIR_SEPARATOR_2
4242809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#  define DIR_SEPARATOR_2 '\\'
4243809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# endif
4244809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# ifndef PATH_SEPARATOR_2
4245809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#  define PATH_SEPARATOR_2 ';'
4246809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# endif
4247809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#endif
4248809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4249809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#ifndef DIR_SEPARATOR_2
4250809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
4251809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#else /* DIR_SEPARATOR_2 */
4252809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# define IS_DIR_SEPARATOR(ch) \
4253809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	(((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
4254809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#endif /* DIR_SEPARATOR_2 */
4255809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4256809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#ifndef PATH_SEPARATOR_2
4257809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
4258809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#else /* PATH_SEPARATOR_2 */
4259809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
4260809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#endif /* PATH_SEPARATOR_2 */
4261809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4262809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#ifndef FOPEN_WB
4263809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# define FOPEN_WB "w"
4264809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#endif
4265809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#ifndef _O_BINARY
4266809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# define _O_BINARY 0
4267809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#endif
4268809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4269809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
4270809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#define XFREE(stale) do { \
4271809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  if (stale) { free ((void *) stale); stale = 0; } \
4272809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} while (0)
4273809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4274809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#if defined(LT_DEBUGWRAPPER)
4275809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsstatic int lt_debug = 1;
4276809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#else
4277809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsstatic int lt_debug = 0;
4278809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#endif
4279809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4280809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsconst char *program_name = "libtool-wrapper"; /* in case xstrdup fails */
4281809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4282809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsvoid *xmalloc (size_t num);
4283809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatschar *xstrdup (const char *string);
4284809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsconst char *base_name (const char *name);
4285809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatschar *find_executable (const char *wrapper);
4286809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatschar *chase_symlinks (const char *pathspec);
4287809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsint make_executable (const char *path);
4288809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsint check_executable (const char *path);
4289809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatschar *strendzap (char *str, const char *pat);
4290809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsvoid lt_debugprintf (const char *file, int line, const char *fmt, ...);
4291809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsvoid lt_fatal (const char *file, int line, const char *message, ...);
4292809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsstatic const char *nonnull (const char *s);
4293809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsstatic const char *nonempty (const char *s);
4294809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsvoid lt_setenv (const char *name, const char *value);
4295809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatschar *lt_extend_str (const char *orig_value, const char *add, int to_end);
4296809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsvoid lt_update_exe_path (const char *name, const char *value);
4297809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsvoid lt_update_lib_path (const char *name, const char *value);
4298809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatschar **prepare_spawn (char **argv);
4299809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsvoid lt_dump_script (FILE *f);
4300809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsEOF
4301809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4302809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    cat <<EOF
4303809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsvolatile const char * MAGIC_EXE = "$magic_exe";
4304809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsconst char * LIB_PATH_VARNAME = "$shlibpath_var";
4305809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsEOF
4306809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4307809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
4308809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats              func_to_host_path "$temp_rpath"
4309809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      cat <<EOF
4310809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsconst char * LIB_PATH_VALUE   = "$func_to_host_path_result";
4311809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsEOF
4312809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    else
4313809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      cat <<"EOF"
4314809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsconst char * LIB_PATH_VALUE   = "";
4315809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsEOF
4316809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    fi
4317809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4318809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    if test -n "$dllsearchpath"; then
4319809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats              func_to_host_path "$dllsearchpath:"
4320809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      cat <<EOF
4321809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsconst char * EXE_PATH_VARNAME = "PATH";
4322809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsconst char * EXE_PATH_VALUE   = "$func_to_host_path_result";
4323809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsEOF
4324809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    else
4325809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      cat <<"EOF"
4326809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsconst char * EXE_PATH_VARNAME = "";
4327809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsconst char * EXE_PATH_VALUE   = "";
4328809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsEOF
4329809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    fi
4330809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4331809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    if test "$fast_install" = yes; then
4332809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      cat <<EOF
4333809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsconst char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
4334809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsEOF
4335809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    else
4336809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      cat <<EOF
4337809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsconst char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
4338809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsEOF
4339809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    fi
4340809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4341809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4342809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    cat <<"EOF"
4343809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4344809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#define LTWRAPPER_OPTION_PREFIX         "--lt-"
4345809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4346809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsstatic const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
4347809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsstatic const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX "dump-script";
4348809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsstatic const char *debug_opt            = LTWRAPPER_OPTION_PREFIX "debug";
4349809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4350809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsint
4351809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsmain (int argc, char *argv[])
4352809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
4353809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  char **newargz;
4354809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  int  newargc;
4355809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  char *tmp_pathspec;
4356809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  char *actual_cwrapper_path;
4357809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  char *actual_cwrapper_name;
4358809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  char *target_name;
4359809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  char *lt_argv_zero;
4360809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  intptr_t rval = 127;
4361809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4362809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  int i;
4363809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4364809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  program_name = (char *) xstrdup (base_name (argv[0]));
4365809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  newargz = XMALLOC (char *, argc + 1);
4366809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4367809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  /* very simple arg parsing; don't want to rely on getopt
4368809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats   * also, copy all non cwrapper options to newargz, except
4369809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats   * argz[0], which is handled differently
4370809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats   */
4371809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  newargc=0;
4372809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  for (i = 1; i < argc; i++)
4373809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    {
4374809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if (strcmp (argv[i], dumpscript_opt) == 0)
4375809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	{
4376809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsEOF
4377809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    case "$host" in
4378809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      *mingw* | *cygwin* )
4379809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		# make stdout use "unix" line endings
4380809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		echo "          setmode(1,_O_BINARY);"
4381809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		;;
4382809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      esac
4383809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4384809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    cat <<"EOF"
4385809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  lt_dump_script (stdout);
4386809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  return 0;
4387809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	}
4388809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if (strcmp (argv[i], debug_opt) == 0)
4389809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	{
4390809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats          lt_debug = 1;
4391809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats          continue;
4392809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	}
4393809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if (strcmp (argv[i], ltwrapper_option_prefix) == 0)
4394809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        {
4395809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats          /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
4396809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats             namespace, but it is not one of the ones we know about and
4397809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats             have already dealt with, above (inluding dump-script), then
4398809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats             report an error. Otherwise, targets might begin to believe
4399809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats             they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
4400809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats             namespace. The first time any user complains about this, we'll
4401809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats             need to make LTWRAPPER_OPTION_PREFIX a configure-time option
4402809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats             or a configure.ac-settable value.
4403809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats           */
4404809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats          lt_fatal (__FILE__, __LINE__,
4405809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    "unrecognized %s option: '%s'",
4406809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats                    ltwrapper_option_prefix, argv[i]);
4407809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        }
4408809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      /* otherwise ... */
4409809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      newargz[++newargc] = xstrdup (argv[i]);
4410809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    }
4411809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  newargz[++newargc] = NULL;
4412809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4413809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsEOF
4414809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    cat <<EOF
4415809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  /* The GNU banner must be the first non-error debug message */
4416809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n");
4417809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsEOF
4418809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    cat <<"EOF"
4419809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]);
4420809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name);
4421809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4422809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  tmp_pathspec = find_executable (argv[0]);
4423809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  if (tmp_pathspec == NULL)
4424809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]);
4425809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  lt_debugprintf (__FILE__, __LINE__,
4426809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats                  "(main) found exe (before symlink chase) at: %s\n",
4427809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  tmp_pathspec);
4428809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4429809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  actual_cwrapper_path = chase_symlinks (tmp_pathspec);
4430809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  lt_debugprintf (__FILE__, __LINE__,
4431809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats                  "(main) found exe (after symlink chase) at: %s\n",
4432809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  actual_cwrapper_path);
4433809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  XFREE (tmp_pathspec);
4434809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4435809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path));
4436809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  strendzap (actual_cwrapper_path, actual_cwrapper_name);
4437809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4438809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  /* wrapper name transforms */
4439809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  strendzap (actual_cwrapper_name, ".exe");
4440809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
4441809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  XFREE (actual_cwrapper_name);
4442809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  actual_cwrapper_name = tmp_pathspec;
4443809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  tmp_pathspec = 0;
4444809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4445809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  /* target_name transforms -- use actual target program name; might have lt- prefix */
4446809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
4447809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  strendzap (target_name, ".exe");
4448809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
4449809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  XFREE (target_name);
4450809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  target_name = tmp_pathspec;
4451809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  tmp_pathspec = 0;
4452809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4453809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  lt_debugprintf (__FILE__, __LINE__,
4454809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  "(main) libtool target name: %s\n",
4455809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  target_name);
4456809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsEOF
4457809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4458809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    cat <<EOF
4459809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  newargz[0] =
4460809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    XMALLOC (char, (strlen (actual_cwrapper_path) +
4461809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
4462809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  strcpy (newargz[0], actual_cwrapper_path);
4463809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  strcat (newargz[0], "$objdir");
4464809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  strcat (newargz[0], "/");
4465809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsEOF
4466809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4467809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    cat <<"EOF"
4468809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  /* stop here, and copy so we don't have to do this twice */
4469809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  tmp_pathspec = xstrdup (newargz[0]);
4470809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4471809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
4472809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  strcat (newargz[0], actual_cwrapper_name);
4473809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4474809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  /* DO want the lt- prefix here if it exists, so use target_name */
4475809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
4476809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  XFREE (tmp_pathspec);
4477809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  tmp_pathspec = NULL;
4478809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsEOF
4479809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4480809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    case $host_os in
4481809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      mingw*)
4482809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    cat <<"EOF"
4483809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  {
4484809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    char* p;
4485809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    while ((p = strchr (newargz[0], '\\')) != NULL)
4486809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      {
4487809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	*p = '/';
4488809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      }
4489809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    while ((p = strchr (lt_argv_zero, '\\')) != NULL)
4490809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      {
4491809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	*p = '/';
4492809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      }
4493809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  }
4494809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsEOF
4495809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    ;;
4496809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    esac
4497809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4498809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    cat <<"EOF"
4499809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  XFREE (target_name);
4500809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  XFREE (actual_cwrapper_path);
4501809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  XFREE (actual_cwrapper_name);
4502809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4503809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
4504809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  lt_setenv ("DUALCASE", "1");  /* for MSK sh */
4505809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  /* Update the DLL searchpath.  EXE_PATH_VALUE ($dllsearchpath) must
4506809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats     be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath)
4507809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats     because on Windows, both *_VARNAMEs are PATH but uninstalled
4508809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats     libraries must come first. */
4509809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
4510809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
4511809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4512809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n",
4513809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  nonnull (lt_argv_zero));
4514809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  for (i = 0; i < newargc; i++)
4515809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    {
4516809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n",
4517809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		      i, nonnull (newargz[i]));
4518809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    }
4519809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4520809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsEOF
4521809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4522809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    case $host_os in
4523809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      mingw*)
4524809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		cat <<"EOF"
4525809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  /* execv doesn't actually work on mingw as expected on unix */
4526809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  newargz = prepare_spawn (newargz);
4527809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
4528809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  if (rval == -1)
4529809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    {
4530809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      /* failed to start process */
4531809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      lt_debugprintf (__FILE__, __LINE__,
4532809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		      "(main) failed to launch target \"%s\": %s\n",
4533809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		      lt_argv_zero, nonnull (strerror (errno)));
4534809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      return 127;
4535809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    }
4536809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  return rval;
4537809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsEOF
4538809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		;;
4539809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      *)
4540809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		cat <<"EOF"
4541809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  execv (lt_argv_zero, newargz);
4542809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  return rval; /* =127, but avoids unused variable warning */
4543809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsEOF
4544809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		;;
4545809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    esac
4546809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4547809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    cat <<"EOF"
4548809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
4549809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4550809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsvoid *
4551809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsxmalloc (size_t num)
4552809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
4553809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  void *p = (void *) malloc (num);
4554809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  if (!p)
4555809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    lt_fatal (__FILE__, __LINE__, "memory exhausted");
4556809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4557809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  return p;
4558809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
4559809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4560809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatschar *
4561809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsxstrdup (const char *string)
4562809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
4563809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
4564809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			  string) : NULL;
4565809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
4566809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4567809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsconst char *
4568809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsbase_name (const char *name)
4569809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
4570809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  const char *base;
4571809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4572809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
4573809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  /* Skip over the disk name in MSDOS pathnames. */
4574809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  if (isalpha ((unsigned char) name[0]) && name[1] == ':')
4575809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    name += 2;
4576809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#endif
4577809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4578809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  for (base = name; *name; name++)
4579809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    if (IS_DIR_SEPARATOR (*name))
4580809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      base = name + 1;
4581809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  return base;
4582809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
4583809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4584809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsint
4585809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatscheck_executable (const char *path)
4586809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
4587809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  struct stat st;
4588809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4589809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n",
4590809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats                  nonempty (path));
4591809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  if ((!path) || (!*path))
4592809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    return 0;
4593809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4594809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  if ((stat (path, &st) >= 0)
4595809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
4596809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    return 1;
4597809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  else
4598809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    return 0;
4599809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
4600809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4601809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsint
4602809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsmake_executable (const char *path)
4603809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
4604809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  int rval = 0;
4605809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  struct stat st;
4606809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4607809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n",
4608809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats                  nonempty (path));
4609809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  if ((!path) || (!*path))
4610809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    return 0;
4611809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4612809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  if (stat (path, &st) >= 0)
4613809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    {
4614809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
4615809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    }
4616809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  return rval;
4617809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
4618809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4619809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats/* Searches for the full path of the wrapper.  Returns
4620809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats   newly allocated full path name if found, NULL otherwise
4621809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats   Does not chase symlinks, even on platforms that support them.
4622809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats*/
4623809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatschar *
4624809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfind_executable (const char *wrapper)
4625809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
4626809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  int has_slash = 0;
4627809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  const char *p;
4628809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  const char *p_next;
4629809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  /* static buffer for getcwd */
4630809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  char tmp[LT_PATHMAX + 1];
4631809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  int tmp_len;
4632809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  char *concat_name;
4633809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4634809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n",
4635809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats                  nonempty (wrapper));
4636809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4637809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  if ((wrapper == NULL) || (*wrapper == '\0'))
4638809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    return NULL;
4639809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4640809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  /* Absolute path? */
4641809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
4642809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
4643809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    {
4644809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      concat_name = xstrdup (wrapper);
4645809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if (check_executable (concat_name))
4646809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	return concat_name;
4647809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      XFREE (concat_name);
4648809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    }
4649809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  else
4650809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    {
4651809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#endif
4652809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if (IS_DIR_SEPARATOR (wrapper[0]))
4653809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	{
4654809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  concat_name = xstrdup (wrapper);
4655809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if (check_executable (concat_name))
4656809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    return concat_name;
4657809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  XFREE (concat_name);
4658809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	}
4659809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
4660809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    }
4661809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#endif
4662809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4663809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  for (p = wrapper; *p; p++)
4664809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    if (*p == '/')
4665809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      {
4666809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	has_slash = 1;
4667809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	break;
4668809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      }
4669809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  if (!has_slash)
4670809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    {
4671809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      /* no slashes; search PATH */
4672809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      const char *path = getenv ("PATH");
4673809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if (path != NULL)
4674809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	{
4675809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  for (p = path; *p; p = p_next)
4676809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    {
4677809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      const char *q;
4678809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      size_t p_len;
4679809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      for (q = p; *q; q++)
4680809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		if (IS_PATH_SEPARATOR (*q))
4681809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  break;
4682809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      p_len = q - p;
4683809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      p_next = (*q == '\0' ? q : q + 1);
4684809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      if (p_len == 0)
4685809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		{
4686809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  /* empty path: current directory */
4687809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  if (getcwd (tmp, LT_PATHMAX) == NULL)
4688809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
4689809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats                              nonnull (strerror (errno)));
4690809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  tmp_len = strlen (tmp);
4691809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  concat_name =
4692809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
4693809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  memcpy (concat_name, tmp, tmp_len);
4694809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  concat_name[tmp_len] = '/';
4695809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  strcpy (concat_name + tmp_len + 1, wrapper);
4696809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		}
4697809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      else
4698809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		{
4699809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  concat_name =
4700809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
4701809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  memcpy (concat_name, p, p_len);
4702809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  concat_name[p_len] = '/';
4703809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  strcpy (concat_name + p_len + 1, wrapper);
4704809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		}
4705809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      if (check_executable (concat_name))
4706809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		return concat_name;
4707809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      XFREE (concat_name);
4708809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    }
4709809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	}
4710809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      /* not found in PATH; assume curdir */
4711809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    }
4712809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  /* Relative path | not found in path: prepend cwd */
4713809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  if (getcwd (tmp, LT_PATHMAX) == NULL)
4714809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
4715809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats              nonnull (strerror (errno)));
4716809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  tmp_len = strlen (tmp);
4717809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
4718809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  memcpy (concat_name, tmp, tmp_len);
4719809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  concat_name[tmp_len] = '/';
4720809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  strcpy (concat_name + tmp_len + 1, wrapper);
4721809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4722809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  if (check_executable (concat_name))
4723809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    return concat_name;
4724809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  XFREE (concat_name);
4725809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  return NULL;
4726809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
4727809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4728809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatschar *
4729809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatschase_symlinks (const char *pathspec)
4730809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
4731809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#ifndef S_ISLNK
4732809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  return xstrdup (pathspec);
4733809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#else
4734809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  char buf[LT_PATHMAX];
4735809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  struct stat s;
4736809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  char *tmp_pathspec = xstrdup (pathspec);
4737809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  char *p;
4738809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  int has_symlinks = 0;
4739809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  while (strlen (tmp_pathspec) && !has_symlinks)
4740809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    {
4741809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      lt_debugprintf (__FILE__, __LINE__,
4742809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		      "checking path component for symlinks: %s\n",
4743809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		      tmp_pathspec);
4744809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if (lstat (tmp_pathspec, &s) == 0)
4745809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	{
4746809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if (S_ISLNK (s.st_mode) != 0)
4747809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    {
4748809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      has_symlinks = 1;
4749809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      break;
4750809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    }
4751809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4752809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  /* search backwards for last DIR_SEPARATOR */
4753809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  p = tmp_pathspec + strlen (tmp_pathspec) - 1;
4754809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
4755809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    p--;
4756809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
4757809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    {
4758809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      /* no more DIR_SEPARATORS left */
4759809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      break;
4760809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    }
4761809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *p = '\0';
4762809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	}
4763809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      else
4764809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	{
4765809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  lt_fatal (__FILE__, __LINE__,
4766809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    "error accessing file \"%s\": %s",
4767809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    tmp_pathspec, nonnull (strerror (errno)));
4768809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	}
4769809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    }
4770809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  XFREE (tmp_pathspec);
4771809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4772809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  if (!has_symlinks)
4773809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    {
4774809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      return xstrdup (pathspec);
4775809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    }
4776809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4777809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  tmp_pathspec = realpath (pathspec, buf);
4778809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  if (tmp_pathspec == 0)
4779809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    {
4780809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      lt_fatal (__FILE__, __LINE__,
4781809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		"could not follow symlinks for %s", pathspec);
4782809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    }
4783809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  return xstrdup (tmp_pathspec);
4784809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#endif
4785809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
4786809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4787809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatschar *
4788809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsstrendzap (char *str, const char *pat)
4789809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
4790809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  size_t len, patlen;
4791809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4792809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  assert (str != NULL);
4793809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  assert (pat != NULL);
4794809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4795809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  len = strlen (str);
4796809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  patlen = strlen (pat);
4797809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4798809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  if (patlen <= len)
4799809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    {
4800809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      str += len - patlen;
4801809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if (strcmp (str, pat) == 0)
4802809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	*str = '\0';
4803809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    }
4804809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  return str;
4805809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
4806809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4807809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsvoid
4808809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatslt_debugprintf (const char *file, int line, const char *fmt, ...)
4809809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
4810809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  va_list args;
4811809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  if (lt_debug)
4812809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    {
4813809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line);
4814809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      va_start (args, fmt);
4815809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      (void) vfprintf (stderr, fmt, args);
4816809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      va_end (args);
4817809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    }
4818809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
4819809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4820809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsstatic void
4821809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatslt_error_core (int exit_status, const char *file,
4822809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	       int line, const char *mode,
4823809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	       const char *message, va_list ap)
4824809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
4825809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode);
4826809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  vfprintf (stderr, message, ap);
4827809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  fprintf (stderr, ".\n");
4828809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4829809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  if (exit_status >= 0)
4830809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    exit (exit_status);
4831809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
4832809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4833809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsvoid
4834809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatslt_fatal (const char *file, int line, const char *message, ...)
4835809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
4836809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  va_list ap;
4837809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  va_start (ap, message);
4838809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap);
4839809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  va_end (ap);
4840809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
4841809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4842809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsstatic const char *
4843809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsnonnull (const char *s)
4844809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
4845809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  return s ? s : "(null)";
4846809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
4847809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4848809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsstatic const char *
4849809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsnonempty (const char *s)
4850809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
4851809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  return (s && !*s) ? "(empty)" : nonnull (s);
4852809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
4853809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4854809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsvoid
4855809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatslt_setenv (const char *name, const char *value)
4856809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
4857809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  lt_debugprintf (__FILE__, __LINE__,
4858809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  "(lt_setenv) setting '%s' to '%s'\n",
4859809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats                  nonnull (name), nonnull (value));
4860809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  {
4861809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#ifdef HAVE_SETENV
4862809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    /* always make a copy, for consistency with !HAVE_SETENV */
4863809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    char *str = xstrdup (value);
4864809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    setenv (name, str, 1);
4865809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#else
4866809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    int len = strlen (name) + 1 + strlen (value) + 1;
4867809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    char *str = XMALLOC (char, len);
4868809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    sprintf (str, "%s=%s", name, value);
4869809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    if (putenv (str) != EXIT_SUCCESS)
4870809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      {
4871809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        XFREE (str);
4872809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      }
4873809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#endif
4874809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  }
4875809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
4876809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4877809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatschar *
4878809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatslt_extend_str (const char *orig_value, const char *add, int to_end)
4879809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
4880809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  char *new_value;
4881809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  if (orig_value && *orig_value)
4882809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    {
4883809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      int orig_value_len = strlen (orig_value);
4884809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      int add_len = strlen (add);
4885809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      new_value = XMALLOC (char, add_len + orig_value_len + 1);
4886809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if (to_end)
4887809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        {
4888809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats          strcpy (new_value, orig_value);
4889809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats          strcpy (new_value + orig_value_len, add);
4890809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        }
4891809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      else
4892809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        {
4893809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats          strcpy (new_value, add);
4894809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats          strcpy (new_value + add_len, orig_value);
4895809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        }
4896809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    }
4897809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  else
4898809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    {
4899809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      new_value = xstrdup (add);
4900809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    }
4901809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  return new_value;
4902809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
4903809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4904809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsvoid
4905809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatslt_update_exe_path (const char *name, const char *value)
4906809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
4907809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  lt_debugprintf (__FILE__, __LINE__,
4908809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  "(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
4909809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats                  nonnull (name), nonnull (value));
4910809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4911809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  if (name && *name && value && *value)
4912809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    {
4913809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      char *new_value = lt_extend_str (getenv (name), value, 0);
4914809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      /* some systems can't cope with a ':'-terminated path #' */
4915809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      int len = strlen (new_value);
4916809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
4917809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        {
4918809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats          new_value[len-1] = '\0';
4919809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        }
4920809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      lt_setenv (name, new_value);
4921809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      XFREE (new_value);
4922809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    }
4923809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
4924809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4925809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsvoid
4926809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatslt_update_lib_path (const char *name, const char *value)
4927809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
4928809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  lt_debugprintf (__FILE__, __LINE__,
4929809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  "(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
4930809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats                  nonnull (name), nonnull (value));
4931809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4932809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  if (name && *name && value && *value)
4933809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    {
4934809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      char *new_value = lt_extend_str (getenv (name), value, 0);
4935809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      lt_setenv (name, new_value);
4936809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      XFREE (new_value);
4937809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    }
4938809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
4939809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4940809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsEOF
4941809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    case $host_os in
4942809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      mingw*)
4943809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		cat <<"EOF"
4944809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4945809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats/* Prepares an argument vector before calling spawn().
4946809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats   Note that spawn() does not by itself call the command interpreter
4947809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats     (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") :
4948809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
4949809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats         GetVersionEx(&v);
4950809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats         v.dwPlatformId == VER_PLATFORM_WIN32_NT;
4951809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      }) ? "cmd.exe" : "command.com").
4952809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats   Instead it simply concatenates the arguments, separated by ' ', and calls
4953809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats   CreateProcess().  We must quote the arguments since Win32 CreateProcess()
4954809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats   interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a
4955809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats   special way:
4956809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats   - Space and tab are interpreted as delimiters. They are not treated as
4957809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats     delimiters if they are surrounded by double quotes: "...".
4958809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats   - Unescaped double quotes are removed from the input. Their only effect is
4959809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats     that within double quotes, space and tab are treated like normal
4960809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats     characters.
4961809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats   - Backslashes not followed by double quotes are not special.
4962809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats   - But 2*n+1 backslashes followed by a double quote become
4963809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats     n backslashes followed by a double quote (n >= 0):
4964809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats       \" -> "
4965809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats       \\\" -> \"
4966809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats       \\\\\" -> \\"
4967809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats */
4968809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#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"
4969809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#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"
4970809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatschar **
4971809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsprepare_spawn (char **argv)
4972809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
4973809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  size_t argc;
4974809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  char **new_argv;
4975809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  size_t i;
4976809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4977809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  /* Count number of arguments.  */
4978809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  for (argc = 0; argv[argc] != NULL; argc++)
4979809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    ;
4980809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4981809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  /* Allocate new argument vector.  */
4982809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  new_argv = XMALLOC (char *, argc + 1);
4983809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4984809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  /* Put quoted arguments into the new argument vector.  */
4985809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  for (i = 0; i < argc; i++)
4986809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    {
4987809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      const char *string = argv[i];
4988809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
4989809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if (string[0] == '\0')
4990809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	new_argv[i] = xstrdup ("\"\"");
4991809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL)
4992809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	{
4993809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL);
4994809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  size_t length;
4995809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  unsigned int backslashes;
4996809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  const char *s;
4997809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  char *quoted_string;
4998809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  char *p;
4999809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5000809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  length = 0;
5001809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  backslashes = 0;
5002809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if (quote_around)
5003809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    length++;
5004809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  for (s = string; *s != '\0'; s++)
5005809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    {
5006809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      char c = *s;
5007809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      if (c == '"')
5008809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		length += backslashes + 1;
5009809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      length++;
5010809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      if (c == '\\')
5011809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		backslashes++;
5012809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      else
5013809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		backslashes = 0;
5014809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    }
5015809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if (quote_around)
5016809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    length += backslashes + 1;
5017809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5018809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  quoted_string = XMALLOC (char, length + 1);
5019809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5020809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  p = quoted_string;
5021809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  backslashes = 0;
5022809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if (quote_around)
5023809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    *p++ = '"';
5024809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  for (s = string; *s != '\0'; s++)
5025809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    {
5026809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      char c = *s;
5027809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      if (c == '"')
5028809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		{
5029809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  unsigned int j;
5030809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  for (j = backslashes + 1; j > 0; j--)
5031809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    *p++ = '\\';
5032809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		}
5033809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      *p++ = c;
5034809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      if (c == '\\')
5035809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		backslashes++;
5036809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      else
5037809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		backslashes = 0;
5038809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    }
5039809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if (quote_around)
5040809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    {
5041809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      unsigned int j;
5042809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      for (j = backslashes; j > 0; j--)
5043809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		*p++ = '\\';
5044809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      *p++ = '"';
5045809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    }
5046809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *p = '\0';
5047809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5048809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  new_argv[i] = quoted_string;
5049809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	}
5050809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      else
5051809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	new_argv[i] = (char *) string;
5052809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    }
5053809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  new_argv[argc] = NULL;
5054809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5055809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  return new_argv;
5056809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
5057809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsEOF
5058809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		;;
5059809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    esac
5060809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5061809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats            cat <<"EOF"
5062809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsvoid lt_dump_script (FILE* f)
5063809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
5064809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsEOF
5065809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_emit_wrapper yes |
5066809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      $SED -n -e '
5067809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatss/^\(.\{79\}\)\(..*\)/\1\
5068809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats\2/
5069809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsh
5070809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatss/\([\\"]\)/\\\1/g
5071809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatss/$/\\n/
5072809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatss/\([^\n]*\).*/  fputs ("\1", f);/p
5073809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsg
5074809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsD'
5075809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats            cat <<"EOF"
5076809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
5077809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsEOF
5078809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
5079809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# end: func_emit_cwrapperexe_src
5080809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5081809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_win32_import_lib_p ARG
5082809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# True if ARG is an import lib, as indicated by $file_magic_cmd
5083809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_win32_import_lib_p ()
5084809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
5085809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    $opt_debug
5086809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in
5087809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    *import*) : ;;
5088809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    *) false ;;
5089809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    esac
5090809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
5091809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5092809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_mode_link arg...
5093809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_mode_link ()
5094809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
5095809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    $opt_debug
5096809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    case $host in
5097809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
5098809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # It is impossible to link a dll without this setting, and
5099809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # we shouldn't force the makefile maintainer to figure out
5100809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # which system we are compiling for in order to pass an extra
5101809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # flag for every libtool invocation.
5102809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # allow_undefined=no
5103809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5104809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # FIXME: Unfortunately, there are problems with the above when trying
5105809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # to make a dll which has undefined symbols, in which case not
5106809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # even a static library is built.  For now, we need to specify
5107809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # -no-undefined on the libtool link line when we can be certain
5108809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # that all symbols are satisfied, otherwise we get a static library.
5109809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      allow_undefined=yes
5110809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      ;;
5111809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    *)
5112809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      allow_undefined=yes
5113809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      ;;
5114809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    esac
5115809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    libtool_args=$nonopt
5116809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    base_compile="$nonopt $@"
5117809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    compile_command=$nonopt
5118809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    finalize_command=$nonopt
5119809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5120809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    compile_rpath=
5121809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    finalize_rpath=
5122809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    compile_shlibpath=
5123809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    finalize_shlibpath=
5124809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    convenience=
5125809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    old_convenience=
5126809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    deplibs=
5127809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    old_deplibs=
5128809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    compiler_flags=
5129809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    linker_flags=
5130809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    dllsearchpath=
5131809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    lib_search_path=`pwd`
5132809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    inst_prefix_dir=
5133809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    new_inherited_linker_flags=
5134809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5135809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    avoid_version=no
5136809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    bindir=
5137809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    dlfiles=
5138809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    dlprefiles=
5139809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    dlself=no
5140809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    export_dynamic=no
5141809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    export_symbols=
5142809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    export_symbols_regex=
5143809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    generated=
5144809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    libobjs=
5145809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    ltlibs=
5146809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    module=no
5147809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    no_install=no
5148809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    objs=
5149809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    non_pic_objects=
5150809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    precious_files_regex=
5151809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    prefer_static_libs=no
5152809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    preload=no
5153809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    prev=
5154809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    prevarg=
5155809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    release=
5156809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    rpath=
5157809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    xrpath=
5158809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    perm_rpath=
5159809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    temp_rpath=
5160809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    thread_safe=no
5161809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    vinfo=
5162809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    vinfo_number=no
5163809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    weak_libs=
5164809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    single_module="${wl}-single_module"
5165809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_infer_tag $base_compile
5166809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5167809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # We need to know -static, to get the right output filenames.
5168809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    for arg
5169809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    do
5170809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      case $arg in
5171809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      -shared)
5172809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	test "$build_libtool_libs" != yes && \
5173809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_fatal_configuration "can not build a shared library"
5174809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	build_old_libs=no
5175809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	break
5176809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
5177809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      -all-static | -static | -static-libtool-libs)
5178809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	case $arg in
5179809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	-all-static)
5180809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
5181809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_warning "complete static linking is impossible in this configuration"
5182809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
5183809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test -n "$link_static_flag"; then
5184809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    dlopen_self=$dlopen_self_static
5185809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
5186809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  prefer_static_libs=yes
5187809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
5188809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	-static)
5189809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
5190809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    dlopen_self=$dlopen_self_static
5191809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
5192809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  prefer_static_libs=built
5193809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
5194809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	-static-libtool-libs)
5195809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
5196809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    dlopen_self=$dlopen_self_static
5197809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
5198809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  prefer_static_libs=yes
5199809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
5200809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	esac
5201809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	build_libtool_libs=no
5202809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	build_old_libs=yes
5203809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	break
5204809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
5205809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      esac
5206809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    done
5207809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5208809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # See if our shared archives depend on static archives.
5209809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
5210809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5211809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # Go through the arguments, transforming them on the way.
5212809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    while test "$#" -gt 0; do
5213809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      arg="$1"
5214809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      shift
5215809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_quote_for_eval "$arg"
5216809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      qarg=$func_quote_for_eval_unquoted_result
5217809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_append libtool_args " $func_quote_for_eval_result"
5218809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5219809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # If the previous option needs an argument, assign it.
5220809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test -n "$prev"; then
5221809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	case $prev in
5222809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	output)
5223809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_append compile_command " @OUTPUT@"
5224809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_append finalize_command " @OUTPUT@"
5225809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
5226809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	esac
5227809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5228809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	case $prev in
5229809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	bindir)
5230809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  bindir="$arg"
5231809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  prev=
5232809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  continue
5233809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
5234809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	dlfiles|dlprefiles)
5235809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test "$preload" = no; then
5236809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # Add the symbol object into the linking commands.
5237809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_append compile_command " @SYMFILE@"
5238809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_append finalize_command " @SYMFILE@"
5239809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    preload=yes
5240809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
5241809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  case $arg in
5242809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *.la | *.lo) ;;  # We handle these cases below.
5243809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  force)
5244809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    if test "$dlself" = no; then
5245809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      dlself=needless
5246809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      export_dynamic=yes
5247809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    fi
5248809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    prev=
5249809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    continue
5250809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    ;;
5251809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  self)
5252809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    if test "$prev" = dlprefiles; then
5253809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      dlself=yes
5254809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
5255809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      dlself=yes
5256809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    else
5257809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      dlself=needless
5258809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      export_dynamic=yes
5259809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    fi
5260809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    prev=
5261809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    continue
5262809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    ;;
5263809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *)
5264809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    if test "$prev" = dlfiles; then
5265809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      func_append dlfiles " $arg"
5266809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    else
5267809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      func_append dlprefiles " $arg"
5268809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    fi
5269809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    prev=
5270809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    continue
5271809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    ;;
5272809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  esac
5273809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
5274809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	expsyms)
5275809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  export_symbols="$arg"
5276809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  test -f "$arg" \
5277809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    || func_fatal_error "symbol file \`$arg' does not exist"
5278809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  prev=
5279809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  continue
5280809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
5281809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	expsyms_regex)
5282809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  export_symbols_regex="$arg"
5283809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  prev=
5284809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  continue
5285809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
5286809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	framework)
5287809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  case $host in
5288809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    *-*-darwin*)
5289809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      case "$deplibs " in
5290809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		*" $qarg.ltframework "*) ;;
5291809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		*) func_append deplibs " $qarg.ltframework" # this is fixed later
5292809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		   ;;
5293809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      esac
5294809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      ;;
5295809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  esac
5296809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  prev=
5297809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  continue
5298809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
5299809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	inst_prefix)
5300809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  inst_prefix_dir="$arg"
5301809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  prev=
5302809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  continue
5303809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
5304809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	objectlist)
5305809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test -f "$arg"; then
5306809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    save_arg=$arg
5307809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    moreargs=
5308809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    for fil in `cat "$save_arg"`
5309809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    do
5310809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#	      func_append moreargs " $fil"
5311809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      arg=$fil
5312809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # A libtool-controlled object.
5313809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5314809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # Check to see that this really is a libtool object.
5315809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      if func_lalib_unsafe_p "$arg"; then
5316809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		pic_object=
5317809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		non_pic_object=
5318809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5319809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		# Read the .lo file
5320809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		func_source "$arg"
5321809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5322809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		if test -z "$pic_object" ||
5323809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		   test -z "$non_pic_object" ||
5324809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		   test "$pic_object" = none &&
5325809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		   test "$non_pic_object" = none; then
5326809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  func_fatal_error "cannot find name of object for \`$arg'"
5327809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		fi
5328809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5329809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		# Extract subdirectory from the argument.
5330809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		func_dirname "$arg" "/" ""
5331809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		xdir="$func_dirname_result"
5332809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5333809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		if test "$pic_object" != none; then
5334809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  # Prepend the subdirectory the object is found in.
5335809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  pic_object="$xdir$pic_object"
5336809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5337809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  if test "$prev" = dlfiles; then
5338809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
5339809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		      func_append dlfiles " $pic_object"
5340809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		      prev=
5341809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		      continue
5342809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    else
5343809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		      # If libtool objects are unsupported, then we need to preload.
5344809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		      prev=dlprefiles
5345809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    fi
5346809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  fi
5347809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5348809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  # CHECK ME:  I think I busted this.  -Ossama
5349809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  if test "$prev" = dlprefiles; then
5350809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    # Preload the old-style object.
5351809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    func_append dlprefiles " $pic_object"
5352809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    prev=
5353809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  fi
5354809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5355809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  # A PIC object.
5356809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  func_append libobjs " $pic_object"
5357809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  arg="$pic_object"
5358809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		fi
5359809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5360809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		# Non-PIC object.
5361809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		if test "$non_pic_object" != none; then
5362809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  # Prepend the subdirectory the object is found in.
5363809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  non_pic_object="$xdir$non_pic_object"
5364809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5365809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  # A standard non-PIC object
5366809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  func_append non_pic_objects " $non_pic_object"
5367809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  if test -z "$pic_object" || test "$pic_object" = none ; then
5368809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    arg="$non_pic_object"
5369809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  fi
5370809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		else
5371809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  # If the PIC object exists, use it instead.
5372809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  # $xdir was prepended to $pic_object above.
5373809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  non_pic_object="$pic_object"
5374809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  func_append non_pic_objects " $non_pic_object"
5375809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		fi
5376809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      else
5377809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		# Only an error if not doing a dry-run.
5378809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		if $opt_dry_run; then
5379809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  # Extract subdirectory from the argument.
5380809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  func_dirname "$arg" "/" ""
5381809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  xdir="$func_dirname_result"
5382809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5383809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  func_lo2o "$arg"
5384809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  pic_object=$xdir$objdir/$func_lo2o_result
5385809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  non_pic_object=$xdir$func_lo2o_result
5386809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  func_append libobjs " $pic_object"
5387809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  func_append non_pic_objects " $non_pic_object"
5388809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	        else
5389809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  func_fatal_error "\`$arg' is not a valid libtool object"
5390809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		fi
5391809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      fi
5392809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    done
5393809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  else
5394809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_fatal_error "link input file \`$arg' does not exist"
5395809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
5396809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  arg=$save_arg
5397809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  prev=
5398809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  continue
5399809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
5400809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	precious_regex)
5401809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  precious_files_regex="$arg"
5402809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  prev=
5403809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  continue
5404809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
5405809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	release)
5406809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  release="-$arg"
5407809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  prev=
5408809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  continue
5409809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
5410809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	rpath | xrpath)
5411809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # We need an absolute path.
5412809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  case $arg in
5413809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  [\\/]* | [A-Za-z]:[\\/]*) ;;
5414809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *)
5415809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_fatal_error "only absolute run-paths are allowed"
5416809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    ;;
5417809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  esac
5418809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test "$prev" = rpath; then
5419809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    case "$rpath " in
5420809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    *" $arg "*) ;;
5421809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    *) func_append rpath " $arg" ;;
5422809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    esac
5423809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  else
5424809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    case "$xrpath " in
5425809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    *" $arg "*) ;;
5426809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    *) func_append xrpath " $arg" ;;
5427809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    esac
5428809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
5429809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  prev=
5430809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  continue
5431809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
5432809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	shrext)
5433809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  shrext_cmds="$arg"
5434809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  prev=
5435809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  continue
5436809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
5437809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	weak)
5438809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_append weak_libs " $arg"
5439809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  prev=
5440809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  continue
5441809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
5442809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	xcclinker)
5443809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_append linker_flags " $qarg"
5444809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_append compiler_flags " $qarg"
5445809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  prev=
5446809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_append compile_command " $qarg"
5447809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_append finalize_command " $qarg"
5448809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  continue
5449809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
5450809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	xcompiler)
5451809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_append compiler_flags " $qarg"
5452809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  prev=
5453809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_append compile_command " $qarg"
5454809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_append finalize_command " $qarg"
5455809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  continue
5456809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
5457809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	xlinker)
5458809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_append linker_flags " $qarg"
5459809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_append compiler_flags " $wl$qarg"
5460809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  prev=
5461809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_append compile_command " $wl$qarg"
5462809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_append finalize_command " $wl$qarg"
5463809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  continue
5464809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
5465809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	*)
5466809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  eval "$prev=\"\$arg\""
5467809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  prev=
5468809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  continue
5469809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
5470809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	esac
5471809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi # test -n "$prev"
5472809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5473809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      prevarg="$arg"
5474809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5475809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      case $arg in
5476809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      -all-static)
5477809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test -n "$link_static_flag"; then
5478809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # See comment for -static flag below, for more details.
5479809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_append compile_command " $link_static_flag"
5480809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_append finalize_command " $link_static_flag"
5481809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
5482809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	continue
5483809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
5484809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5485809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      -allow-undefined)
5486809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# FIXME: remove this flag sometime in the future.
5487809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_fatal_error "\`-allow-undefined' must not be used because it is the default"
5488809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
5489809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5490809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      -avoid-version)
5491809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	avoid_version=yes
5492809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	continue
5493809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
5494809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5495809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      -bindir)
5496809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	prev=bindir
5497809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	continue
5498809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
5499809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5500809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      -dlopen)
5501809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	prev=dlfiles
5502809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	continue
5503809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
5504809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5505809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      -dlpreopen)
5506809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	prev=dlprefiles
5507809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	continue
5508809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
5509809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5510809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      -export-dynamic)
5511809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	export_dynamic=yes
5512809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	continue
5513809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
5514809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5515809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      -export-symbols | -export-symbols-regex)
5516809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
5517809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_fatal_error "more than one -exported-symbols argument is not allowed"
5518809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
5519809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test "X$arg" = "X-export-symbols"; then
5520809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  prev=expsyms
5521809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	else
5522809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  prev=expsyms_regex
5523809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
5524809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	continue
5525809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
5526809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5527809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      -framework)
5528809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	prev=framework
5529809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	continue
5530809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
5531809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5532809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      -inst-prefix-dir)
5533809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	prev=inst_prefix
5534809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	continue
5535809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
5536809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5537809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
5538809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # so, if we see these flags be careful not to treat them like -L
5539809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      -L[A-Z][A-Z]*:*)
5540809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	case $with_gcc/$host in
5541809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	no/*-*-irix* | /*-*-irix*)
5542809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_append compile_command " $arg"
5543809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_append finalize_command " $arg"
5544809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
5545809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	esac
5546809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	continue
5547809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
5548809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5549809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      -L*)
5550809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_stripname "-L" '' "$arg"
5551809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test -z "$func_stripname_result"; then
5552809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test "$#" -gt 0; then
5553809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_fatal_error "require no space between \`-L' and \`$1'"
5554809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  else
5555809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_fatal_error "need path for \`-L' option"
5556809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
5557809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
5558809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_resolve_sysroot "$func_stripname_result"
5559809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	dir=$func_resolve_sysroot_result
5560809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# We need an absolute path.
5561809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	case $dir in
5562809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	[\\/]* | [A-Za-z]:[\\/]*) ;;
5563809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	*)
5564809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  absdir=`cd "$dir" && pwd`
5565809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  test -z "$absdir" && \
5566809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_fatal_error "cannot determine absolute directory name of \`$dir'"
5567809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  dir="$absdir"
5568809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
5569809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	esac
5570809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	case "$deplibs " in
5571809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	*" -L$dir "* | *" $arg "*)
5572809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # Will only happen for absolute or sysroot arguments
5573809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
5574809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	*)
5575809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # Preserve sysroot, but never include relative directories
5576809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  case $dir in
5577809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;;
5578809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    *) func_append deplibs " -L$dir" ;;
5579809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  esac
5580809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_append lib_search_path " $dir"
5581809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
5582809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	esac
5583809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	case $host in
5584809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
5585809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'`
5586809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  case :$dllsearchpath: in
5587809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *":$dir:"*) ;;
5588809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ::) dllsearchpath=$dir;;
5589809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *) func_append dllsearchpath ":$dir";;
5590809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  esac
5591809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  case :$dllsearchpath: in
5592809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *":$testbindir:"*) ;;
5593809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ::) dllsearchpath=$testbindir;;
5594809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *) func_append dllsearchpath ":$testbindir";;
5595809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  esac
5596809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
5597809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	esac
5598809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	continue
5599809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
5600809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5601809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      -l*)
5602809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
5603809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  case $host in
5604809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*)
5605809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # These systems don't actually have a C or math library (as such)
5606809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    continue
5607809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    ;;
5608809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *-*-os2*)
5609809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # These systems don't actually have a C library (as such)
5610809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    test "X$arg" = "X-lc" && continue
5611809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    ;;
5612809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
5613809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # Do not include libc due to us having libc/libc_r.
5614809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    test "X$arg" = "X-lc" && continue
5615809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    ;;
5616809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *-*-rhapsody* | *-*-darwin1.[012])
5617809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # Rhapsody C and math libraries are in the System framework
5618809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_append deplibs " System.ltframework"
5619809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    continue
5620809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    ;;
5621809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *-*-sco3.2v5* | *-*-sco5v6*)
5622809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # Causes problems with __ctype
5623809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    test "X$arg" = "X-lc" && continue
5624809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    ;;
5625809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
5626809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # Compiler inserts libc in the correct place for threads to work
5627809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    test "X$arg" = "X-lc" && continue
5628809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    ;;
5629809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  esac
5630809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	elif test "X$arg" = "X-lc_r"; then
5631809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	 case $host in
5632809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
5633809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	   # Do not include libc_r directly, use -pthread flag.
5634809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	   continue
5635809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	   ;;
5636809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	 esac
5637809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
5638809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_append deplibs " $arg"
5639809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	continue
5640809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
5641809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5642809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      -module)
5643809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	module=yes
5644809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	continue
5645809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
5646809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5647809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Tru64 UNIX uses -model [arg] to determine the layout of C++
5648809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # classes, name mangling, and exception handling.
5649809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Darwin uses the -arch flag to determine output architecture.
5650809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      -model|-arch|-isysroot|--sysroot)
5651809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_append compiler_flags " $arg"
5652809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_append compile_command " $arg"
5653809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_append finalize_command " $arg"
5654809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	prev=xcompiler
5655809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	continue
5656809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
5657809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5658809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
5659809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
5660809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_append compiler_flags " $arg"
5661809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_append compile_command " $arg"
5662809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_append finalize_command " $arg"
5663809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	case "$new_inherited_linker_flags " in
5664809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    *" $arg "*) ;;
5665809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    * ) func_append new_inherited_linker_flags " $arg" ;;
5666809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	esac
5667809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	continue
5668809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
5669809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5670809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      -multi_module)
5671809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	single_module="${wl}-multi_module"
5672809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	continue
5673809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
5674809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5675809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      -no-fast-install)
5676809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fast_install=no
5677809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	continue
5678809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
5679809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5680809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      -no-install)
5681809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	case $host in
5682809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
5683809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # The PATH hackery in wrapper scripts is required on Windows
5684809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # and Darwin in order for the loader to find any dlls it needs.
5685809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_warning "\`-no-install' is ignored for $host"
5686809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_warning "assuming \`-no-fast-install' instead"
5687809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fast_install=no
5688809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
5689809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	*) no_install=yes ;;
5690809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	esac
5691809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	continue
5692809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
5693809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5694809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      -no-undefined)
5695809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	allow_undefined=no
5696809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	continue
5697809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
5698809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5699809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      -objectlist)
5700809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	prev=objectlist
5701809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	continue
5702809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
5703809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5704809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      -o) prev=output ;;
5705809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5706809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      -precious-files-regex)
5707809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	prev=precious_regex
5708809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	continue
5709809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
5710809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5711809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      -release)
5712809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	prev=release
5713809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	continue
5714809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
5715809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5716809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      -rpath)
5717809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	prev=rpath
5718809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	continue
5719809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
5720809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5721809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      -R)
5722809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	prev=xrpath
5723809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	continue
5724809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
5725809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5726809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      -R*)
5727809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_stripname '-R' '' "$arg"
5728809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	dir=$func_stripname_result
5729809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# We need an absolute path.
5730809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	case $dir in
5731809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	[\\/]* | [A-Za-z]:[\\/]*) ;;
5732809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	=*)
5733809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_stripname '=' '' "$dir"
5734809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  dir=$lt_sysroot$func_stripname_result
5735809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
5736809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	*)
5737809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_fatal_error "only absolute run-paths are allowed"
5738809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
5739809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	esac
5740809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	case "$xrpath " in
5741809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	*" $dir "*) ;;
5742809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	*) func_append xrpath " $dir" ;;
5743809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	esac
5744809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	continue
5745809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
5746809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5747809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      -shared)
5748809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# The effects of -shared are defined in a previous loop.
5749809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	continue
5750809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
5751809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5752809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      -shrext)
5753809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	prev=shrext
5754809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	continue
5755809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
5756809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5757809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      -static | -static-libtool-libs)
5758809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# The effects of -static are defined in a previous loop.
5759809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# We used to do the same as -all-static on platforms that
5760809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# didn't have a PIC flag, but the assumption that the effects
5761809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# would be equivalent was wrong.  It would break on at least
5762809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Digital Unix and AIX.
5763809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	continue
5764809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
5765809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5766809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      -thread-safe)
5767809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	thread_safe=yes
5768809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	continue
5769809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
5770809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5771809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      -version-info)
5772809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	prev=vinfo
5773809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	continue
5774809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
5775809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5776809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      -version-number)
5777809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	prev=vinfo
5778809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	vinfo_number=yes
5779809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	continue
5780809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
5781809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5782809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      -weak)
5783809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        prev=weak
5784809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	continue
5785809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
5786809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5787809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      -Wc,*)
5788809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_stripname '-Wc,' '' "$arg"
5789809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	args=$func_stripname_result
5790809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	arg=
5791809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	save_ifs="$IFS"; IFS=','
5792809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	for flag in $args; do
5793809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  IFS="$save_ifs"
5794809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats          func_quote_for_eval "$flag"
5795809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_append arg " $func_quote_for_eval_result"
5796809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_append compiler_flags " $func_quote_for_eval_result"
5797809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	done
5798809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	IFS="$save_ifs"
5799809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_stripname ' ' '' "$arg"
5800809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	arg=$func_stripname_result
5801809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
5802809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5803809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      -Wl,*)
5804809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_stripname '-Wl,' '' "$arg"
5805809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	args=$func_stripname_result
5806809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	arg=
5807809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	save_ifs="$IFS"; IFS=','
5808809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	for flag in $args; do
5809809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  IFS="$save_ifs"
5810809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats          func_quote_for_eval "$flag"
5811809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_append arg " $wl$func_quote_for_eval_result"
5812809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_append compiler_flags " $wl$func_quote_for_eval_result"
5813809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_append linker_flags " $func_quote_for_eval_result"
5814809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	done
5815809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	IFS="$save_ifs"
5816809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_stripname ' ' '' "$arg"
5817809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	arg=$func_stripname_result
5818809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
5819809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5820809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      -Xcompiler)
5821809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	prev=xcompiler
5822809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	continue
5823809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
5824809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5825809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      -Xlinker)
5826809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	prev=xlinker
5827809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	continue
5828809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
5829809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5830809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      -XCClinker)
5831809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	prev=xcclinker
5832809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	continue
5833809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
5834809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5835809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # -msg_* for osf cc
5836809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      -msg_*)
5837809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_quote_for_eval "$arg"
5838809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	arg="$func_quote_for_eval_result"
5839809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
5840809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5841809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Flags to be passed through unchanged, with rationale:
5842809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # -64, -mips[0-9]      enable 64-bit mode for the SGI compiler
5843809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # -r[0-9][0-9]*        specify processor for the SGI compiler
5844809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler
5845809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # +DA*, +DD*           enable 64-bit mode for the HP compiler
5846809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # -q*                  compiler args for the IBM compiler
5847809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # -m*, -t[45]*, -txscale* architecture-specific flags for GCC
5848809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # -F/path              path to uninstalled frameworks, gcc on darwin
5849809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # -p, -pg, --coverage, -fprofile-*  profiling flags for GCC
5850809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # @file                GCC response files
5851809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # -tp=*                Portland pgcc target processor selection
5852809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # --sysroot=*          for sysroot support
5853809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
5854809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
5855809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
5856809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      -O*|-flto*|-fwhopr*|-fuse-linker-plugin)
5857809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        func_quote_for_eval "$arg"
5858809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	arg="$func_quote_for_eval_result"
5859809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        func_append compile_command " $arg"
5860809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        func_append finalize_command " $arg"
5861809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        func_append compiler_flags " $arg"
5862809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        continue
5863809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        ;;
5864809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5865809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Some other compiler flag.
5866809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      -* | +*)
5867809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        func_quote_for_eval "$arg"
5868809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	arg="$func_quote_for_eval_result"
5869809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
5870809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5871809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      *.$objext)
5872809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# A standard object.
5873809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_append objs " $arg"
5874809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
5875809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5876809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      *.lo)
5877809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# A libtool-controlled object.
5878809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5879809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Check to see that this really is a libtool object.
5880809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if func_lalib_unsafe_p "$arg"; then
5881809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  pic_object=
5882809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  non_pic_object=
5883809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5884809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # Read the .lo file
5885809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_source "$arg"
5886809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5887809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test -z "$pic_object" ||
5888809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	     test -z "$non_pic_object" ||
5889809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	     test "$pic_object" = none &&
5890809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	     test "$non_pic_object" = none; then
5891809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_fatal_error "cannot find name of object for \`$arg'"
5892809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
5893809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5894809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # Extract subdirectory from the argument.
5895809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_dirname "$arg" "/" ""
5896809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  xdir="$func_dirname_result"
5897809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5898809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test "$pic_object" != none; then
5899809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # Prepend the subdirectory the object is found in.
5900809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    pic_object="$xdir$pic_object"
5901809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5902809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    if test "$prev" = dlfiles; then
5903809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
5904809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		func_append dlfiles " $pic_object"
5905809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		prev=
5906809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		continue
5907809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      else
5908809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		# If libtool objects are unsupported, then we need to preload.
5909809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		prev=dlprefiles
5910809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      fi
5911809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    fi
5912809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5913809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # CHECK ME:  I think I busted this.  -Ossama
5914809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    if test "$prev" = dlprefiles; then
5915809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # Preload the old-style object.
5916809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      func_append dlprefiles " $pic_object"
5917809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      prev=
5918809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    fi
5919809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5920809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # A PIC object.
5921809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_append libobjs " $pic_object"
5922809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    arg="$pic_object"
5923809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
5924809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5925809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # Non-PIC object.
5926809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test "$non_pic_object" != none; then
5927809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # Prepend the subdirectory the object is found in.
5928809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    non_pic_object="$xdir$non_pic_object"
5929809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5930809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # A standard non-PIC object
5931809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_append non_pic_objects " $non_pic_object"
5932809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    if test -z "$pic_object" || test "$pic_object" = none ; then
5933809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      arg="$non_pic_object"
5934809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    fi
5935809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  else
5936809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # If the PIC object exists, use it instead.
5937809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # $xdir was prepended to $pic_object above.
5938809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    non_pic_object="$pic_object"
5939809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_append non_pic_objects " $non_pic_object"
5940809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
5941809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	else
5942809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # Only an error if not doing a dry-run.
5943809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if $opt_dry_run; then
5944809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # Extract subdirectory from the argument.
5945809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_dirname "$arg" "/" ""
5946809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    xdir="$func_dirname_result"
5947809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5948809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_lo2o "$arg"
5949809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    pic_object=$xdir$objdir/$func_lo2o_result
5950809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    non_pic_object=$xdir$func_lo2o_result
5951809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_append libobjs " $pic_object"
5952809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_append non_pic_objects " $non_pic_object"
5953809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  else
5954809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_fatal_error "\`$arg' is not a valid libtool object"
5955809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
5956809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
5957809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
5958809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5959809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      *.$libext)
5960809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# An archive.
5961809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_append deplibs " $arg"
5962809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_append old_deplibs " $arg"
5963809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	continue
5964809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
5965809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5966809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      *.la)
5967809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# A libtool-controlled library.
5968809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5969809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_resolve_sysroot "$arg"
5970809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test "$prev" = dlfiles; then
5971809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # This library was specified with -dlopen.
5972809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_append dlfiles " $func_resolve_sysroot_result"
5973809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  prev=
5974809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	elif test "$prev" = dlprefiles; then
5975809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # The library was specified with -dlpreopen.
5976809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_append dlprefiles " $func_resolve_sysroot_result"
5977809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  prev=
5978809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	else
5979809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_append deplibs " $func_resolve_sysroot_result"
5980809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
5981809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	continue
5982809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
5983809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5984809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Some other compiler argument.
5985809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      *)
5986809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Unknown arguments in both finalize_command and compile_command need
5987809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# to be aesthetically quoted because they are evaled later.
5988809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_quote_for_eval "$arg"
5989809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	arg="$func_quote_for_eval_result"
5990809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
5991809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      esac # arg
5992809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
5993809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Now actually substitute the argument into the commands.
5994809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test -n "$arg"; then
5995809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_append compile_command " $arg"
5996809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_append finalize_command " $arg"
5997809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
5998809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    done # argument parsing loop
5999809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
6000809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    test -n "$prev" && \
6001809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_fatal_help "the \`$prevarg' option requires an argument"
6002809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
6003809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
6004809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      eval arg=\"$export_dynamic_flag_spec\"
6005809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_append compile_command " $arg"
6006809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_append finalize_command " $arg"
6007809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    fi
6008809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
6009809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    oldlibs=
6010809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # calculate the name of the file, without its directory
6011809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_basename "$output"
6012809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    outputname="$func_basename_result"
6013809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    libobjs_save="$libobjs"
6014809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
6015809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    if test -n "$shlibpath_var"; then
6016809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # get the directories listed in $shlibpath_var
6017809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\`
6018809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    else
6019809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      shlib_search_path=
6020809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    fi
6021809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
6022809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
6023809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
6024809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_dirname "$output" "/" ""
6025809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    output_objdir="$func_dirname_result$objdir"
6026809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_to_tool_file "$output_objdir/"
6027809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    tool_output_objdir=$func_to_tool_file_result
6028809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # Create the object directory.
6029809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_mkdir_p "$output_objdir"
6030809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
6031809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # Determine the type of output
6032809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    case $output in
6033809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    "")
6034809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_fatal_help "you must specify an output file"
6035809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      ;;
6036809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    *.$libext) linkmode=oldlib ;;
6037809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    *.lo | *.$objext) linkmode=obj ;;
6038809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    *.la) linkmode=lib ;;
6039809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    *) linkmode=prog ;; # Anything else should be a program.
6040809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    esac
6041809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
6042809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    specialdeplibs=
6043809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
6044809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    libs=
6045809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # Find all interdependent deplibs by searching for libraries
6046809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # that are linked more than once (e.g. -la -lb -la)
6047809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    for deplib in $deplibs; do
6048809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if $opt_preserve_dup_deps ; then
6049809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	case "$libs " in
6050809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	*" $deplib "*) func_append specialdeplibs " $deplib" ;;
6051809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	esac
6052809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
6053809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_append libs " $deplib"
6054809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    done
6055809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
6056809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    if test "$linkmode" = lib; then
6057809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      libs="$predeps $libs $compiler_lib_search_path $postdeps"
6058809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
6059809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Compute libraries that are listed more than once in $predeps
6060809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # $postdeps and mark them as special (i.e., whose duplicates are
6061809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # not to be eliminated).
6062809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      pre_post_deps=
6063809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if $opt_duplicate_compiler_generated_deps; then
6064809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	for pre_post_dep in $predeps $postdeps; do
6065809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  case "$pre_post_deps " in
6066809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;;
6067809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  esac
6068809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_append pre_post_deps " $pre_post_dep"
6069809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	done
6070809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
6071809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      pre_post_deps=
6072809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    fi
6073809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
6074809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    deplibs=
6075809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    newdependency_libs=
6076809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    newlib_search_path=
6077809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    need_relink=no # whether we're linking any uninstalled libtool libraries
6078809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    notinst_deplibs= # not-installed libtool libraries
6079809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    notinst_path= # paths that contain not-installed libtool libraries
6080809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
6081809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    case $linkmode in
6082809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    lib)
6083809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	passes="conv dlpreopen link"
6084809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	for file in $dlfiles $dlprefiles; do
6085809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  case $file in
6086809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *.la) ;;
6087809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *)
6088809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
6089809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    ;;
6090809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  esac
6091809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	done
6092809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
6093809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    prog)
6094809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	compile_deplibs=
6095809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	finalize_deplibs=
6096809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	alldeplibs=no
6097809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	newdlfiles=
6098809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	newdlprefiles=
6099809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	passes="conv scan dlopen dlpreopen link"
6100809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
6101809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    *)  passes="conv"
6102809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
6103809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    esac
6104809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
6105809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    for pass in $passes; do
6106809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # The preopen pass in lib mode reverses $deplibs; put it back here
6107809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # so that -L comes before libs that need it for instance...
6108809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test "$linkmode,$pass" = "lib,link"; then
6109809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	## FIXME: Find the place where the list is rebuilt in the wrong
6110809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	##        order, and fix it there properly
6111809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        tmp_deplibs=
6112809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	for deplib in $deplibs; do
6113809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  tmp_deplibs="$deplib $tmp_deplibs"
6114809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	done
6115809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	deplibs="$tmp_deplibs"
6116809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
6117809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
6118809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test "$linkmode,$pass" = "lib,link" ||
6119809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	 test "$linkmode,$pass" = "prog,scan"; then
6120809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	libs="$deplibs"
6121809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	deplibs=
6122809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
6123809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test "$linkmode" = prog; then
6124809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	case $pass in
6125809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	dlopen) libs="$dlfiles" ;;
6126809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	dlpreopen) libs="$dlprefiles" ;;
6127809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	link)
6128809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  libs="$deplibs %DEPLIBS%"
6129809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs"
6130809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
6131809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	esac
6132809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
6133809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test "$linkmode,$pass" = "lib,dlpreopen"; then
6134809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Collect and forward deplibs of preopened libtool libs
6135809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	for lib in $dlprefiles; do
6136809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # Ignore non-libtool-libs
6137809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  dependency_libs=
6138809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_resolve_sysroot "$lib"
6139809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  case $lib in
6140809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *.la)	func_source "$func_resolve_sysroot_result" ;;
6141809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  esac
6142809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
6143809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # Collect preopened libtool deplibs, except any this library
6144809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # has declared as weak libs
6145809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  for deplib in $dependency_libs; do
6146809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_basename "$deplib"
6147809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats            deplib_base=$func_basename_result
6148809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    case " $weak_libs " in
6149809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    *" $deplib_base "*) ;;
6150809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    *) func_append deplibs " $deplib" ;;
6151809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    esac
6152809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  done
6153809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	done
6154809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	libs="$dlprefiles"
6155809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
6156809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test "$pass" = dlopen; then
6157809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Collect dlpreopened libraries
6158809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	save_deplibs="$deplibs"
6159809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	deplibs=
6160809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
6161809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
6162809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      for deplib in $libs; do
6163809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	lib=
6164809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	found=no
6165809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	case $deplib in
6166809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
6167809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
6168809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test "$linkmode,$pass" = "prog,link"; then
6169809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    compile_deplibs="$deplib $compile_deplibs"
6170809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    finalize_deplibs="$deplib $finalize_deplibs"
6171809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  else
6172809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_append compiler_flags " $deplib"
6173809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    if test "$linkmode" = lib ; then
6174809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		case "$new_inherited_linker_flags " in
6175809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    *" $deplib "*) ;;
6176809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    * ) func_append new_inherited_linker_flags " $deplib" ;;
6177809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		esac
6178809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    fi
6179809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
6180809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  continue
6181809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
6182809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	-l*)
6183809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test "$linkmode" != lib && test "$linkmode" != prog; then
6184809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_warning "\`-l' is ignored for archives/objects"
6185809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    continue
6186809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
6187809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_stripname '-l' '' "$deplib"
6188809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  name=$func_stripname_result
6189809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test "$linkmode" = lib; then
6190809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
6191809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  else
6192809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
6193809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
6194809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  for searchdir in $searchdirs; do
6195809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    for search_ext in .la $std_shrext .so .a; do
6196809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # Search the libtool library
6197809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      lib="$searchdir/lib${name}${search_ext}"
6198809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      if test -f "$lib"; then
6199809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		if test "$search_ext" = ".la"; then
6200809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  found=yes
6201809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		else
6202809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  found=no
6203809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		fi
6204809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		break 2
6205809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      fi
6206809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    done
6207809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  done
6208809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test "$found" != yes; then
6209809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # deplib doesn't seem to be a libtool library
6210809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    if test "$linkmode,$pass" = "prog,link"; then
6211809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      compile_deplibs="$deplib $compile_deplibs"
6212809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      finalize_deplibs="$deplib $finalize_deplibs"
6213809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    else
6214809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      deplibs="$deplib $deplibs"
6215809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
6216809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    fi
6217809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    continue
6218809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  else # deplib is a libtool library
6219809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
6220809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # We need to do some special things here, and not later.
6221809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
6222809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      case " $predeps $postdeps " in
6223809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      *" $deplib "*)
6224809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		if func_lalib_p "$lib"; then
6225809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  library_names=
6226809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  old_library=
6227809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  func_source "$lib"
6228809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  for l in $old_library $library_names; do
6229809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    ll="$l"
6230809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  done
6231809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  if test "X$ll" = "X$old_library" ; then # only static version available
6232809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    found=no
6233809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    func_dirname "$lib" "" "."
6234809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    ladir="$func_dirname_result"
6235809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    lib=$ladir/$old_library
6236809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    if test "$linkmode,$pass" = "prog,link"; then
6237809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		      compile_deplibs="$deplib $compile_deplibs"
6238809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		      finalize_deplibs="$deplib $finalize_deplibs"
6239809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    else
6240809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		      deplibs="$deplib $deplibs"
6241809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
6242809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    fi
6243809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    continue
6244809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  fi
6245809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		fi
6246809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		;;
6247809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      *) ;;
6248809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      esac
6249809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    fi
6250809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
6251809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;; # -l
6252809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	*.ltframework)
6253809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test "$linkmode,$pass" = "prog,link"; then
6254809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    compile_deplibs="$deplib $compile_deplibs"
6255809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    finalize_deplibs="$deplib $finalize_deplibs"
6256809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  else
6257809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    deplibs="$deplib $deplibs"
6258809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    if test "$linkmode" = lib ; then
6259809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		case "$new_inherited_linker_flags " in
6260809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    *" $deplib "*) ;;
6261809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    * ) func_append new_inherited_linker_flags " $deplib" ;;
6262809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		esac
6263809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    fi
6264809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
6265809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  continue
6266809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
6267809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	-L*)
6268809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  case $linkmode in
6269809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  lib)
6270809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    deplibs="$deplib $deplibs"
6271809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    test "$pass" = conv && continue
6272809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    newdependency_libs="$deplib $newdependency_libs"
6273809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_stripname '-L' '' "$deplib"
6274809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_resolve_sysroot "$func_stripname_result"
6275809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_append newlib_search_path " $func_resolve_sysroot_result"
6276809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    ;;
6277809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  prog)
6278809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    if test "$pass" = conv; then
6279809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      deplibs="$deplib $deplibs"
6280809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      continue
6281809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    fi
6282809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    if test "$pass" = scan; then
6283809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      deplibs="$deplib $deplibs"
6284809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    else
6285809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      compile_deplibs="$deplib $compile_deplibs"
6286809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      finalize_deplibs="$deplib $finalize_deplibs"
6287809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    fi
6288809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_stripname '-L' '' "$deplib"
6289809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_resolve_sysroot "$func_stripname_result"
6290809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_append newlib_search_path " $func_resolve_sysroot_result"
6291809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    ;;
6292809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *)
6293809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_warning "\`-L' is ignored for archives/objects"
6294809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    ;;
6295809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  esac # linkmode
6296809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  continue
6297809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;; # -L
6298809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	-R*)
6299809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test "$pass" = link; then
6300809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_stripname '-R' '' "$deplib"
6301809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_resolve_sysroot "$func_stripname_result"
6302809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    dir=$func_resolve_sysroot_result
6303809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # Make sure the xrpath contains only unique directories.
6304809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    case "$xrpath " in
6305809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    *" $dir "*) ;;
6306809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    *) func_append xrpath " $dir" ;;
6307809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    esac
6308809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
6309809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  deplibs="$deplib $deplibs"
6310809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  continue
6311809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
6312809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	*.la)
6313809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_resolve_sysroot "$deplib"
6314809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  lib=$func_resolve_sysroot_result
6315809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
6316809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	*.$libext)
6317809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test "$pass" = conv; then
6318809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    deplibs="$deplib $deplibs"
6319809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    continue
6320809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
6321809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  case $linkmode in
6322809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  lib)
6323809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # Linking convenience modules into shared libraries is allowed,
6324809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # but linking other static libraries is non-portable.
6325809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    case " $dlpreconveniencelibs " in
6326809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    *" $deplib "*) ;;
6327809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    *)
6328809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      valid_a_lib=no
6329809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      case $deplibs_check_method in
6330809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		match_pattern*)
6331809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  set dummy $deplibs_check_method; shift
6332809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
6333809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \
6334809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    | $EGREP "$match_pattern_regex" > /dev/null; then
6335809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    valid_a_lib=yes
6336809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  fi
6337809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		;;
6338809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		pass_all)
6339809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  valid_a_lib=yes
6340809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		;;
6341809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      esac
6342809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      if test "$valid_a_lib" != yes; then
6343809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		echo
6344809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		$ECHO "*** Warning: Trying to link with static lib archive $deplib."
6345809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		echo "*** I have the capability to make that library automatically link in when"
6346809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		echo "*** you link to this library.  But I can only do this if you have a"
6347809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		echo "*** shared version of the library, which you do not appear to have"
6348809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		echo "*** because the file extensions .$libext of this argument makes me believe"
6349809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		echo "*** that it is just a static archive that I should not use here."
6350809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      else
6351809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		echo
6352809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		$ECHO "*** Warning: Linking the shared library $output against the"
6353809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		$ECHO "*** static library $deplib is not portable!"
6354809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		deplibs="$deplib $deplibs"
6355809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      fi
6356809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      ;;
6357809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    esac
6358809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    continue
6359809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    ;;
6360809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  prog)
6361809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    if test "$pass" != link; then
6362809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      deplibs="$deplib $deplibs"
6363809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    else
6364809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      compile_deplibs="$deplib $compile_deplibs"
6365809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      finalize_deplibs="$deplib $finalize_deplibs"
6366809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    fi
6367809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    continue
6368809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    ;;
6369809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  esac # linkmode
6370809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;; # *.$libext
6371809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	*.lo | *.$objext)
6372809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test "$pass" = conv; then
6373809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    deplibs="$deplib $deplibs"
6374809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  elif test "$linkmode" = prog; then
6375809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
6376809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # If there is no dlopen support or we're linking statically,
6377809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # we need to preload.
6378809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      func_append newdlprefiles " $deplib"
6379809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      compile_deplibs="$deplib $compile_deplibs"
6380809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      finalize_deplibs="$deplib $finalize_deplibs"
6381809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    else
6382809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      func_append newdlfiles " $deplib"
6383809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    fi
6384809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
6385809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  continue
6386809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
6387809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	%DEPLIBS%)
6388809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  alldeplibs=yes
6389809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  continue
6390809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
6391809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	esac # case $deplib
6392809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
6393809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test "$found" = yes || test -f "$lib"; then :
6394809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	else
6395809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
6396809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
6397809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
6398809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Check to see that this really is a libtool archive.
6399809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_lalib_unsafe_p "$lib" \
6400809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  || func_fatal_error "\`$lib' is not a valid libtool archive"
6401809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
6402809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_dirname "$lib" "" "."
6403809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	ladir="$func_dirname_result"
6404809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
6405809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	dlname=
6406809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	dlopen=
6407809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	dlpreopen=
6408809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	libdir=
6409809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	library_names=
6410809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	old_library=
6411809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	inherited_linker_flags=
6412809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# If the library was installed with an old release of libtool,
6413809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# it will not redefine variables installed, or shouldnotlink
6414809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	installed=yes
6415809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	shouldnotlink=no
6416809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	avoidtemprpath=
6417809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
6418809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
6419809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Read the .la file
6420809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_source "$lib"
6421809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
6422809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Convert "-framework foo" to "foo.ltframework"
6423809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test -n "$inherited_linker_flags"; then
6424809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`
6425809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
6426809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    case " $new_inherited_linker_flags " in
6427809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      *" $tmp_inherited_linker_flag "*) ;;
6428809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";;
6429809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    esac
6430809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  done
6431809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
6432809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
6433809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test "$linkmode,$pass" = "lib,link" ||
6434809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	   test "$linkmode,$pass" = "prog,scan" ||
6435809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then
6436809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  test -n "$dlopen" && func_append dlfiles " $dlopen"
6437809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen"
6438809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
6439809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
6440809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test "$pass" = conv; then
6441809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # Only check for convenience libraries
6442809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  deplibs="$lib $deplibs"
6443809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test -z "$libdir"; then
6444809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    if test -z "$old_library"; then
6445809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      func_fatal_error "cannot find name of link library for \`$lib'"
6446809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    fi
6447809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # It is a libtool convenience library, so add in its objects.
6448809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_append convenience " $ladir/$objdir/$old_library"
6449809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_append old_convenience " $ladir/$objdir/$old_library"
6450809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    tmp_libs=
6451809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    for deplib in $dependency_libs; do
6452809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      deplibs="$deplib $deplibs"
6453809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      if $opt_preserve_dup_deps ; then
6454809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		case "$tmp_libs " in
6455809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		*" $deplib "*) func_append specialdeplibs " $deplib" ;;
6456809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		esac
6457809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      fi
6458809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      func_append tmp_libs " $deplib"
6459809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    done
6460809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
6461809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_fatal_error "\`$lib' is not a convenience library"
6462809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
6463809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  continue
6464809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi # $pass = conv
6465809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
6466809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
6467809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Get the name of the library we link against.
6468809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	linklib=
6469809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test -n "$old_library" &&
6470809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	   { test "$prefer_static_libs" = yes ||
6471809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	     test "$prefer_static_libs,$installed" = "built,no"; }; then
6472809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  linklib=$old_library
6473809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	else
6474809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  for l in $old_library $library_names; do
6475809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    linklib="$l"
6476809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  done
6477809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
6478809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test -z "$linklib"; then
6479809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_fatal_error "cannot find name of link library for \`$lib'"
6480809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
6481809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
6482809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# This library was specified with -dlopen.
6483809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test "$pass" = dlopen; then
6484809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test -z "$libdir"; then
6485809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
6486809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
6487809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test -z "$dlname" ||
6488809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	     test "$dlopen_support" != yes ||
6489809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	     test "$build_libtool_libs" = no; then
6490809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # If there is no dlname, no dlopen support or we're linking
6491809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # statically, we need to preload.  We also need to preload any
6492809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # dependent libraries so libltdl's deplib preloader doesn't
6493809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # bomb out in the load deplibs phase.
6494809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_append dlprefiles " $lib $dependency_libs"
6495809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  else
6496809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_append newdlfiles " $lib"
6497809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
6498809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  continue
6499809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi # $pass = dlopen
6500809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
6501809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# We need an absolute path.
6502809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	case $ladir in
6503809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
6504809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	*)
6505809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  abs_ladir=`cd "$ladir" && pwd`
6506809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test -z "$abs_ladir"; then
6507809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_warning "cannot determine absolute directory name of \`$ladir'"
6508809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_warning "passing it literally to the linker, although it might fail"
6509809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    abs_ladir="$ladir"
6510809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
6511809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
6512809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	esac
6513809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_basename "$lib"
6514809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	laname="$func_basename_result"
6515809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
6516809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Find the relevant object directory and library name.
6517809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test "X$installed" = Xyes; then
6518809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
6519809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_warning "library \`$lib' was moved."
6520809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    dir="$ladir"
6521809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    absdir="$abs_ladir"
6522809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    libdir="$abs_ladir"
6523809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  else
6524809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    dir="$lt_sysroot$libdir"
6525809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    absdir="$lt_sysroot$libdir"
6526809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
6527809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
6528809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	else
6529809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
6530809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    dir="$ladir"
6531809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    absdir="$abs_ladir"
6532809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # Remove this search path later
6533809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_append notinst_path " $abs_ladir"
6534809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  else
6535809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    dir="$ladir/$objdir"
6536809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    absdir="$abs_ladir/$objdir"
6537809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # Remove this search path later
6538809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_append notinst_path " $abs_ladir"
6539809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
6540809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi # $installed = yes
6541809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_stripname 'lib' '.la' "$laname"
6542809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	name=$func_stripname_result
6543809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
6544809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# This library was specified with -dlpreopen.
6545809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test "$pass" = dlpreopen; then
6546809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test -z "$libdir" && test "$linkmode" = prog; then
6547809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
6548809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
6549809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  case "$host" in
6550809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # special handling for platforms with PE-DLLs.
6551809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    *cygwin* | *mingw* | *cegcc* )
6552809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # Linker will automatically link against shared library if both
6553809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # static and shared are present.  Therefore, ensure we extract
6554809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # symbols from the import library if a shared library is present
6555809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # (otherwise, the dlopen module name will be incorrect).  We do
6556809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # this by putting the import library name into $newdlprefiles.
6557809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # We recover the dlopen module name by 'saving' the la file
6558809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # name in a special purpose variable, and (later) extracting the
6559809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # dlname from the la file.
6560809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      if test -n "$dlname"; then
6561809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	        func_tr_sh "$dir/$linklib"
6562809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	        eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname"
6563809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	        func_append newdlprefiles " $dir/$linklib"
6564809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      else
6565809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	        func_append newdlprefiles " $dir/$old_library"
6566809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	        # Keep a list of preopened convenience libraries to check
6567809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	        # that they are being used correctly in the link pass.
6568809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	        test -z "$libdir" && \
6569809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	          func_append dlpreconveniencelibs " $dir/$old_library"
6570809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      fi
6571809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    ;;
6572809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    * )
6573809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # Prefer using a static library (so that no silly _DYNAMIC symbols
6574809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # are required to link).
6575809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      if test -n "$old_library"; then
6576809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	        func_append newdlprefiles " $dir/$old_library"
6577809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	        # Keep a list of preopened convenience libraries to check
6578809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	        # that they are being used correctly in the link pass.
6579809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	        test -z "$libdir" && \
6580809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	          func_append dlpreconveniencelibs " $dir/$old_library"
6581809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # Otherwise, use the dlname, so that lt_dlopen finds it.
6582809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      elif test -n "$dlname"; then
6583809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	        func_append newdlprefiles " $dir/$dlname"
6584809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      else
6585809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	        func_append newdlprefiles " $dir/$linklib"
6586809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      fi
6587809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    ;;
6588809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  esac
6589809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi # $pass = dlpreopen
6590809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
6591809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test -z "$libdir"; then
6592809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # Link the convenience library
6593809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test "$linkmode" = lib; then
6594809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    deplibs="$dir/$old_library $deplibs"
6595809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  elif test "$linkmode,$pass" = "prog,link"; then
6596809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    compile_deplibs="$dir/$old_library $compile_deplibs"
6597809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
6598809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  else
6599809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    deplibs="$lib $deplibs" # used for prog,scan pass
6600809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
6601809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  continue
6602809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
6603809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
6604809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
6605809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test "$linkmode" = prog && test "$pass" != link; then
6606809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_append newlib_search_path " $ladir"
6607809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  deplibs="$lib $deplibs"
6608809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
6609809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  linkalldeplibs=no
6610809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
6611809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	     test "$build_libtool_libs" = no; then
6612809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    linkalldeplibs=yes
6613809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
6614809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
6615809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  tmp_libs=
6616809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  for deplib in $dependency_libs; do
6617809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    case $deplib in
6618809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    -L*) func_stripname '-L' '' "$deplib"
6619809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	         func_resolve_sysroot "$func_stripname_result"
6620809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	         func_append newlib_search_path " $func_resolve_sysroot_result"
6621809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		 ;;
6622809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    esac
6623809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # Need to link against all dependency_libs?
6624809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    if test "$linkalldeplibs" = yes; then
6625809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      deplibs="$deplib $deplibs"
6626809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    else
6627809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # Need to hardcode shared library paths
6628809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # or/and link against static libraries
6629809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      newdependency_libs="$deplib $newdependency_libs"
6630809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    fi
6631809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    if $opt_preserve_dup_deps ; then
6632809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      case "$tmp_libs " in
6633809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      *" $deplib "*) func_append specialdeplibs " $deplib" ;;
6634809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      esac
6635809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    fi
6636809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_append tmp_libs " $deplib"
6637809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  done # for deplib
6638809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  continue
6639809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi # $linkmode = prog...
6640809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
6641809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test "$linkmode,$pass" = "prog,link"; then
6642809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test -n "$library_names" &&
6643809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	     { { test "$prefer_static_libs" = no ||
6644809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	         test "$prefer_static_libs,$installed" = "built,yes"; } ||
6645809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	       test -z "$old_library"; }; then
6646809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # We need to hardcode the library path
6647809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
6648809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # Make sure the rpath contains only unique directories.
6649809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      case "$temp_rpath:" in
6650809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      *"$absdir:"*) ;;
6651809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      *) func_append temp_rpath "$absdir:" ;;
6652809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      esac
6653809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    fi
6654809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
6655809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # Hardcode the library path.
6656809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # Skip directories that are in the system default run-time
6657809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # search path.
6658809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    case " $sys_lib_dlsearch_path " in
6659809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    *" $absdir "*) ;;
6660809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    *)
6661809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      case "$compile_rpath " in
6662809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      *" $absdir "*) ;;
6663809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      *) func_append compile_rpath " $absdir" ;;
6664809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      esac
6665809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      ;;
6666809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    esac
6667809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    case " $sys_lib_dlsearch_path " in
6668809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    *" $libdir "*) ;;
6669809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    *)
6670809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      case "$finalize_rpath " in
6671809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      *" $libdir "*) ;;
6672809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      *) func_append finalize_rpath " $libdir" ;;
6673809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      esac
6674809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      ;;
6675809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    esac
6676809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi # $linkmode,$pass = prog,link...
6677809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
6678809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test "$alldeplibs" = yes &&
6679809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	     { test "$deplibs_check_method" = pass_all ||
6680809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	       { test "$build_libtool_libs" = yes &&
6681809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		 test -n "$library_names"; }; }; then
6682809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # We only need to search for static libraries
6683809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    continue
6684809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
6685809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
6686809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
6687809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	link_static=no # Whether the deplib will be linked statically
6688809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	use_static_libs=$prefer_static_libs
6689809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test "$use_static_libs" = built && test "$installed" = yes; then
6690809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  use_static_libs=no
6691809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
6692809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test -n "$library_names" &&
6693809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	   { test "$use_static_libs" = no || test -z "$old_library"; }; then
6694809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  case $host in
6695809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *cygwin* | *mingw* | *cegcc*)
6696809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # No point in relinking DLLs because paths are not encoded
6697809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      func_append notinst_deplibs " $lib"
6698809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      need_relink=no
6699809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    ;;
6700809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *)
6701809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    if test "$installed" = no; then
6702809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      func_append notinst_deplibs " $lib"
6703809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      need_relink=yes
6704809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    fi
6705809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    ;;
6706809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  esac
6707809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # This is a shared library
6708809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
6709809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # Warn about portability, can't link against -module's on some
6710809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # systems (darwin).  Don't bleat about dlopened modules though!
6711809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  dlopenmodule=""
6712809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  for dlpremoduletest in $dlprefiles; do
6713809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    if test "X$dlpremoduletest" = "X$lib"; then
6714809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      dlopenmodule="$dlpremoduletest"
6715809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      break
6716809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    fi
6717809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  done
6718809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
6719809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    echo
6720809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    if test "$linkmode" = prog; then
6721809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      $ECHO "*** Warning: Linking the executable $output against the loadable module"
6722809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    else
6723809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      $ECHO "*** Warning: Linking the shared library $output against the loadable module"
6724809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    fi
6725809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    $ECHO "*** $linklib is not portable!"
6726809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
6727809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test "$linkmode" = lib &&
6728809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	     test "$hardcode_into_libs" = yes; then
6729809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # Hardcode the library path.
6730809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # Skip directories that are in the system default run-time
6731809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # search path.
6732809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    case " $sys_lib_dlsearch_path " in
6733809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    *" $absdir "*) ;;
6734809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    *)
6735809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      case "$compile_rpath " in
6736809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      *" $absdir "*) ;;
6737809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      *) func_append compile_rpath " $absdir" ;;
6738809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      esac
6739809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      ;;
6740809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    esac
6741809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    case " $sys_lib_dlsearch_path " in
6742809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    *" $libdir "*) ;;
6743809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    *)
6744809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      case "$finalize_rpath " in
6745809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      *" $libdir "*) ;;
6746809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      *) func_append finalize_rpath " $libdir" ;;
6747809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      esac
6748809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      ;;
6749809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    esac
6750809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
6751809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
6752809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test -n "$old_archive_from_expsyms_cmds"; then
6753809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # figure out the soname
6754809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    set dummy $library_names
6755809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    shift
6756809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    realname="$1"
6757809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    shift
6758809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    libname=`eval "\\$ECHO \"$libname_spec\""`
6759809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # use dlname if we got it. it's perfectly good, no?
6760809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    if test -n "$dlname"; then
6761809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      soname="$dlname"
6762809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    elif test -n "$soname_spec"; then
6763809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # bleh windows
6764809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      case $host in
6765809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      *cygwin* | mingw* | *cegcc*)
6766809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	        func_arith $current - $age
6767809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		major=$func_arith_result
6768809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		versuffix="-$major"
6769809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		;;
6770809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      esac
6771809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      eval soname=\"$soname_spec\"
6772809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    else
6773809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      soname="$realname"
6774809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    fi
6775809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
6776809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # Make a new name for the extract_expsyms_cmds to use
6777809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    soroot="$soname"
6778809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_basename "$soroot"
6779809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    soname="$func_basename_result"
6780809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_stripname 'lib' '.dll' "$soname"
6781809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    newlib=libimp-$func_stripname_result.a
6782809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
6783809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # If the library has no export list, then create one now
6784809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    if test -f "$output_objdir/$soname-def"; then :
6785809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    else
6786809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      func_verbose "extracting exported symbol list from \`$soname'"
6787809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
6788809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    fi
6789809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
6790809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # Create $newlib
6791809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    if test -f "$output_objdir/$newlib"; then :; else
6792809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      func_verbose "generating import library for \`$soname'"
6793809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
6794809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    fi
6795809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # make sure the library variables are pointing to the new library
6796809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    dir=$output_objdir
6797809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    linklib=$newlib
6798809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi # test -n "$old_archive_from_expsyms_cmds"
6799809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
6800809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test "$linkmode" = prog || test "$opt_mode" != relink; then
6801809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    add_shlibpath=
6802809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    add_dir=
6803809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    add=
6804809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    lib_linked=yes
6805809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    case $hardcode_action in
6806809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    immediate | unsupported)
6807809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      if test "$hardcode_direct" = no; then
6808809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		add="$dir/$linklib"
6809809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		case $host in
6810809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
6811809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  *-*-sysv4*uw2*) add_dir="-L$dir" ;;
6812809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
6813809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    *-*-unixware7*) add_dir="-L$dir" ;;
6814809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  *-*-darwin* )
6815809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    # if the lib is a (non-dlopened) module then we can not
6816809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    # link against it, someone is ignoring the earlier warnings
6817809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    if /usr/bin/file -L $add 2> /dev/null |
6818809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			 $GREP ": [^:]* bundle" >/dev/null ; then
6819809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		      if test "X$dlopenmodule" != "X$lib"; then
6820809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			$ECHO "*** Warning: lib $linklib is a module, not a shared library"
6821809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			if test -z "$old_library" ; then
6822809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			  echo
6823809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			  echo "*** And there doesn't seem to be a static archive available"
6824809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			  echo "*** The link will probably fail, sorry"
6825809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			else
6826809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			  add="$dir/$old_library"
6827809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			fi
6828809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		      elif test -n "$old_library"; then
6829809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			add="$dir/$old_library"
6830809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		      fi
6831809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    fi
6832809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		esac
6833809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      elif test "$hardcode_minus_L" = no; then
6834809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		case $host in
6835809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		*-*-sunos*) add_shlibpath="$dir" ;;
6836809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		esac
6837809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		add_dir="-L$dir"
6838809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		add="-l$name"
6839809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      elif test "$hardcode_shlibpath_var" = no; then
6840809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		add_shlibpath="$dir"
6841809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		add="-l$name"
6842809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      else
6843809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		lib_linked=no
6844809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      fi
6845809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      ;;
6846809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    relink)
6847809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      if test "$hardcode_direct" = yes &&
6848809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	         test "$hardcode_direct_absolute" = no; then
6849809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		add="$dir/$linklib"
6850809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      elif test "$hardcode_minus_L" = yes; then
6851809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		add_dir="-L$absdir"
6852809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		# Try looking first in the location we're being installed to.
6853809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		if test -n "$inst_prefix_dir"; then
6854809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  case $libdir in
6855809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    [\\/]*)
6856809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		      func_append add_dir " -L$inst_prefix_dir$libdir"
6857809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		      ;;
6858809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  esac
6859809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		fi
6860809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		add="-l$name"
6861809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      elif test "$hardcode_shlibpath_var" = yes; then
6862809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		add_shlibpath="$dir"
6863809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		add="-l$name"
6864809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      else
6865809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		lib_linked=no
6866809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      fi
6867809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      ;;
6868809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    *) lib_linked=no ;;
6869809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    esac
6870809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
6871809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    if test "$lib_linked" != yes; then
6872809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      func_fatal_configuration "unsupported hardcode properties"
6873809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    fi
6874809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
6875809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    if test -n "$add_shlibpath"; then
6876809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      case :$compile_shlibpath: in
6877809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      *":$add_shlibpath:"*) ;;
6878809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      *) func_append compile_shlibpath "$add_shlibpath:" ;;
6879809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      esac
6880809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    fi
6881809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    if test "$linkmode" = prog; then
6882809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
6883809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
6884809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    else
6885809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
6886809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      test -n "$add" && deplibs="$add $deplibs"
6887809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      if test "$hardcode_direct" != yes &&
6888809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		 test "$hardcode_minus_L" != yes &&
6889809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		 test "$hardcode_shlibpath_var" = yes; then
6890809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		case :$finalize_shlibpath: in
6891809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		*":$libdir:"*) ;;
6892809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		*) func_append finalize_shlibpath "$libdir:" ;;
6893809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		esac
6894809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      fi
6895809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    fi
6896809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
6897809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
6898809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test "$linkmode" = prog || test "$opt_mode" = relink; then
6899809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    add_shlibpath=
6900809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    add_dir=
6901809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    add=
6902809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # Finalize command for both is simple: just hardcode it.
6903809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    if test "$hardcode_direct" = yes &&
6904809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	       test "$hardcode_direct_absolute" = no; then
6905809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      add="$libdir/$linklib"
6906809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    elif test "$hardcode_minus_L" = yes; then
6907809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      add_dir="-L$libdir"
6908809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      add="-l$name"
6909809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    elif test "$hardcode_shlibpath_var" = yes; then
6910809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      case :$finalize_shlibpath: in
6911809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      *":$libdir:"*) ;;
6912809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      *) func_append finalize_shlibpath "$libdir:" ;;
6913809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      esac
6914809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      add="-l$name"
6915809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    elif test "$hardcode_automatic" = yes; then
6916809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      if test -n "$inst_prefix_dir" &&
6917809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		 test -f "$inst_prefix_dir$libdir/$linklib" ; then
6918809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		add="$inst_prefix_dir$libdir/$linklib"
6919809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      else
6920809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		add="$libdir/$linklib"
6921809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      fi
6922809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    else
6923809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # We cannot seem to hardcode it, guess we'll fake it.
6924809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      add_dir="-L$libdir"
6925809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # Try looking first in the location we're being installed to.
6926809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      if test -n "$inst_prefix_dir"; then
6927809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		case $libdir in
6928809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  [\\/]*)
6929809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    func_append add_dir " -L$inst_prefix_dir$libdir"
6930809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    ;;
6931809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		esac
6932809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      fi
6933809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      add="-l$name"
6934809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    fi
6935809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
6936809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    if test "$linkmode" = prog; then
6937809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
6938809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
6939809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    else
6940809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
6941809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      test -n "$add" && deplibs="$add $deplibs"
6942809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    fi
6943809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
6944809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	elif test "$linkmode" = prog; then
6945809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # Here we assume that one of hardcode_direct or hardcode_minus_L
6946809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # is not unsupported.  This is valid on all known static and
6947809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # shared platforms.
6948809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test "$hardcode_direct" != unsupported; then
6949809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    test -n "$old_library" && linklib="$old_library"
6950809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    compile_deplibs="$dir/$linklib $compile_deplibs"
6951809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
6952809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  else
6953809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    compile_deplibs="-l$name -L$dir $compile_deplibs"
6954809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
6955809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
6956809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	elif test "$build_libtool_libs" = yes; then
6957809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # Not a shared library
6958809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test "$deplibs_check_method" != pass_all; then
6959809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # We're trying link a shared library against a static one
6960809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # but the system doesn't support it.
6961809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
6962809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # Just print a warning and add the library to dependency_libs so
6963809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # that the program can be linked against the static library.
6964809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    echo
6965809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    $ECHO "*** Warning: This system can not link to static lib archive $lib."
6966809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    echo "*** I have the capability to make that library automatically link in when"
6967809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    echo "*** you link to this library.  But I can only do this if you have a"
6968809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    echo "*** shared version of the library, which you do not appear to have."
6969809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    if test "$module" = yes; then
6970809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      echo "*** But as you try to build a module library, libtool will still create "
6971809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      echo "*** a static module, that should work as long as the dlopening application"
6972809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
6973809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      if test -z "$global_symbol_pipe"; then
6974809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		echo
6975809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		echo "*** However, this would only work if libtool was able to extract symbol"
6976809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
6977809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		echo "*** not find such a program.  So, this module is probably useless."
6978809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		echo "*** \`nm' from GNU binutils and a full rebuild may help."
6979809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      fi
6980809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      if test "$build_old_libs" = no; then
6981809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		build_libtool_libs=module
6982809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		build_old_libs=yes
6983809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      else
6984809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		build_libtool_libs=no
6985809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      fi
6986809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    fi
6987809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  else
6988809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    deplibs="$dir/$old_library $deplibs"
6989809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    link_static=yes
6990809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
6991809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi # link shared/static library?
6992809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
6993809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test "$linkmode" = lib; then
6994809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test -n "$dependency_libs" &&
6995809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	     { test "$hardcode_into_libs" != yes ||
6996809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	       test "$build_old_libs" = yes ||
6997809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	       test "$link_static" = yes; }; then
6998809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # Extract -R from dependency_libs
6999809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    temp_deplibs=
7000809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    for libdir in $dependency_libs; do
7001809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      case $libdir in
7002809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      -R*) func_stripname '-R' '' "$libdir"
7003809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	           temp_xrpath=$func_stripname_result
7004809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		   case " $xrpath " in
7005809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		   *" $temp_xrpath "*) ;;
7006809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		   *) func_append xrpath " $temp_xrpath";;
7007809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		   esac;;
7008809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      *) func_append temp_deplibs " $libdir";;
7009809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      esac
7010809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    done
7011809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    dependency_libs="$temp_deplibs"
7012809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
7013809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
7014809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_append newlib_search_path " $absdir"
7015809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # Link against this library
7016809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
7017809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # ... and its dependency_libs
7018809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  tmp_libs=
7019809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  for deplib in $dependency_libs; do
7020809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    newdependency_libs="$deplib $newdependency_libs"
7021809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    case $deplib in
7022809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats              -L*) func_stripname '-L' '' "$deplib"
7023809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats                   func_resolve_sysroot "$func_stripname_result";;
7024809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats              *) func_resolve_sysroot "$deplib" ;;
7025809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats            esac
7026809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    if $opt_preserve_dup_deps ; then
7027809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      case "$tmp_libs " in
7028809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      *" $func_resolve_sysroot_result "*)
7029809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats                func_append specialdeplibs " $func_resolve_sysroot_result" ;;
7030809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      esac
7031809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    fi
7032809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_append tmp_libs " $func_resolve_sysroot_result"
7033809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  done
7034809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
7035809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test "$link_all_deplibs" != no; then
7036809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # Add the search paths of all dependency libraries
7037809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    for deplib in $dependency_libs; do
7038809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      path=
7039809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      case $deplib in
7040809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      -L*) path="$deplib" ;;
7041809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      *.la)
7042809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	        func_resolve_sysroot "$deplib"
7043809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	        deplib=$func_resolve_sysroot_result
7044809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	        func_dirname "$deplib" "" "."
7045809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		dir=$func_dirname_result
7046809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		# We need an absolute path.
7047809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		case $dir in
7048809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
7049809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		*)
7050809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  absdir=`cd "$dir" && pwd`
7051809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  if test -z "$absdir"; then
7052809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    func_warning "cannot determine absolute directory name of \`$dir'"
7053809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    absdir="$dir"
7054809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  fi
7055809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  ;;
7056809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		esac
7057809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		if $GREP "^installed=no" $deplib > /dev/null; then
7058809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		case $host in
7059809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		*-*-darwin*)
7060809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  depdepl=
7061809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
7062809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  if test -n "$deplibrary_names" ; then
7063809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    for tmp in $deplibrary_names ; do
7064809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		      depdepl=$tmp
7065809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    done
7066809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    if test -f "$absdir/$objdir/$depdepl" ; then
7067809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		      depdepl="$absdir/$objdir/$depdepl"
7068809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		      darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
7069809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats                      if test -z "$darwin_install_name"; then
7070809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats                          darwin_install_name=`${OTOOL64} -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
7071809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats                      fi
7072809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		      func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
7073809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		      func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}"
7074809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		      path=
7075809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    fi
7076809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  fi
7077809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  ;;
7078809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		*)
7079809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  path="-L$absdir/$objdir"
7080809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  ;;
7081809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		esac
7082809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		else
7083809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
7084809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  test -z "$libdir" && \
7085809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    func_fatal_error "\`$deplib' is not a valid libtool archive"
7086809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  test "$absdir" != "$libdir" && \
7087809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    func_warning "\`$deplib' seems to be moved"
7088809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
7089809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  path="-L$absdir"
7090809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		fi
7091809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		;;
7092809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      esac
7093809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      case " $deplibs " in
7094809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      *" $path "*) ;;
7095809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      *) deplibs="$path $deplibs" ;;
7096809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      esac
7097809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    done
7098809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi # link_all_deplibs != no
7099809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi # linkmode = lib
7100809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      done # for deplib in $libs
7101809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test "$pass" = link; then
7102809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test "$linkmode" = "prog"; then
7103809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
7104809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
7105809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	else
7106809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
7107809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
7108809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
7109809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      dependency_libs="$newdependency_libs"
7110809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test "$pass" = dlpreopen; then
7111809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Link the dlpreopened libraries before other libraries
7112809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	for deplib in $save_deplibs; do
7113809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  deplibs="$deplib $deplibs"
7114809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	done
7115809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
7116809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test "$pass" != dlopen; then
7117809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test "$pass" != conv; then
7118809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # Make sure lib_search_path contains only unique directories.
7119809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  lib_search_path=
7120809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  for dir in $newlib_search_path; do
7121809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    case "$lib_search_path " in
7122809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    *" $dir "*) ;;
7123809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    *) func_append lib_search_path " $dir" ;;
7124809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    esac
7125809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  done
7126809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  newlib_search_path=
7127809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
7128809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
7129809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test "$linkmode,$pass" != "prog,link"; then
7130809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  vars="deplibs"
7131809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	else
7132809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  vars="compile_deplibs finalize_deplibs"
7133809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
7134809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	for var in $vars dependency_libs; do
7135809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # Add libraries to $var in reverse order
7136809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  eval tmp_libs=\"\$$var\"
7137809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  new_libs=
7138809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  for deplib in $tmp_libs; do
7139809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # FIXME: Pedantically, this is the right thing to do, so
7140809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    #        that some nasty dependency loop isn't accidentally
7141809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    #        broken:
7142809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    #new_libs="$deplib $new_libs"
7143809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # Pragmatically, this seems to cause very few problems in
7144809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # practice:
7145809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    case $deplib in
7146809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    -L*) new_libs="$deplib $new_libs" ;;
7147809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    -R*) ;;
7148809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    *)
7149809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # And here is the reason: when a library appears more
7150809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # than once as an explicit dependence of a library, or
7151809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # is implicitly linked in more than once by the
7152809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # compiler, it is considered special, and multiple
7153809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # occurrences thereof are not removed.  Compare this
7154809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # with having the same library being listed as a
7155809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # dependency of multiple other libraries: in this case,
7156809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # we know (pedantically, we assume) the library does not
7157809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # need to be listed more than once, so we keep only the
7158809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # last copy.  This is not always right, but it is rare
7159809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # enough that we require users that really mean to play
7160809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # such unportable linking tricks to link the library
7161809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # using -Wl,-lname, so that libtool does not consider it
7162809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # for duplicate removal.
7163809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      case " $specialdeplibs " in
7164809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
7165809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      *)
7166809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		case " $new_libs " in
7167809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		*" $deplib "*) ;;
7168809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		*) new_libs="$deplib $new_libs" ;;
7169809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		esac
7170809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		;;
7171809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      esac
7172809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      ;;
7173809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    esac
7174809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  done
7175809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  tmp_libs=
7176809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  for deplib in $new_libs; do
7177809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    case $deplib in
7178809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    -L*)
7179809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      case " $tmp_libs " in
7180809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      *" $deplib "*) ;;
7181809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      *) func_append tmp_libs " $deplib" ;;
7182809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      esac
7183809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      ;;
7184809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    *) func_append tmp_libs " $deplib" ;;
7185809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    esac
7186809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  done
7187809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  eval $var=\"$tmp_libs\"
7188809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	done # for var
7189809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
7190809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Last step: remove runtime libs from dependency_libs
7191809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # (they stay in deplibs)
7192809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      tmp_libs=
7193809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      for i in $dependency_libs ; do
7194809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	case " $predeps $postdeps $compiler_lib_search_path " in
7195809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	*" $i "*)
7196809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  i=""
7197809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
7198809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	esac
7199809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test -n "$i" ; then
7200809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_append tmp_libs " $i"
7201809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
7202809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      done
7203809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      dependency_libs=$tmp_libs
7204809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    done # for pass
7205809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    if test "$linkmode" = prog; then
7206809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      dlfiles="$newdlfiles"
7207809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    fi
7208809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    if test "$linkmode" = prog || test "$linkmode" = lib; then
7209809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      dlprefiles="$newdlprefiles"
7210809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    fi
7211809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
7212809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    case $linkmode in
7213809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    oldlib)
7214809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
7215809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_warning "\`-dlopen' is ignored for archives"
7216809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
7217809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
7218809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      case " $deplibs" in
7219809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      *\ -l* | *\ -L*)
7220809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_warning "\`-l' and \`-L' are ignored for archives" ;;
7221809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      esac
7222809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
7223809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      test -n "$rpath" && \
7224809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_warning "\`-rpath' is ignored for archives"
7225809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
7226809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      test -n "$xrpath" && \
7227809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_warning "\`-R' is ignored for archives"
7228809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
7229809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      test -n "$vinfo" && \
7230809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_warning "\`-version-info/-version-number' is ignored for archives"
7231809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
7232809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      test -n "$release" && \
7233809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_warning "\`-release' is ignored for archives"
7234809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
7235809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      test -n "$export_symbols$export_symbols_regex" && \
7236809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_warning "\`-export-symbols' is ignored for archives"
7237809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
7238809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Now set the variables for building old libraries.
7239809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      build_libtool_libs=no
7240809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      oldlibs="$output"
7241809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_append objs "$old_deplibs"
7242809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      ;;
7243809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
7244809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    lib)
7245809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Make sure we only generate libraries of the form `libNAME.la'.
7246809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      case $outputname in
7247809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      lib*)
7248809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_stripname 'lib' '.la' "$outputname"
7249809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	name=$func_stripname_result
7250809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	eval shared_ext=\"$shrext_cmds\"
7251809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	eval libname=\"$libname_spec\"
7252809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
7253809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      *)
7254809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	test "$module" = no && \
7255809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_fatal_help "libtool library \`$output' must begin with \`lib'"
7256809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
7257809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test "$need_lib_prefix" != no; then
7258809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # Add the "lib" prefix for modules if required
7259809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_stripname '' '.la' "$outputname"
7260809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  name=$func_stripname_result
7261809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  eval shared_ext=\"$shrext_cmds\"
7262809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  eval libname=\"$libname_spec\"
7263809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	else
7264809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_stripname '' '.la' "$outputname"
7265809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  libname=$func_stripname_result
7266809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
7267809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
7268809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      esac
7269809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
7270809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test -n "$objs"; then
7271809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test "$deplibs_check_method" != pass_all; then
7272809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
7273809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	else
7274809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  echo
7275809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
7276809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  $ECHO "*** objects $objs is not portable!"
7277809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_append libobjs " $objs"
7278809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
7279809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
7280809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
7281809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      test "$dlself" != no && \
7282809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_warning "\`-dlopen self' is ignored for libtool libraries"
7283809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
7284809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      set dummy $rpath
7285809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      shift
7286809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      test "$#" -gt 1 && \
7287809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_warning "ignoring multiple \`-rpath's for a libtool library"
7288809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
7289809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      install_libdir="$1"
7290809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
7291809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      oldlibs=
7292809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test -z "$rpath"; then
7293809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test "$build_libtool_libs" = yes; then
7294809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # Building a libtool convenience library.
7295809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # Some compilers have problems with a `.al' extension so
7296809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # convenience libraries should have the same extension an
7297809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # archive normally would.
7298809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
7299809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  build_libtool_libs=convenience
7300809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  build_old_libs=yes
7301809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
7302809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
7303809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	test -n "$vinfo" && \
7304809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
7305809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
7306809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	test -n "$release" && \
7307809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_warning "\`-release' is ignored for convenience libraries"
7308809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      else
7309809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
7310809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Parse the version information argument.
7311809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	save_ifs="$IFS"; IFS=':'
7312809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	set dummy $vinfo 0 0 0
7313809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	shift
7314809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	IFS="$save_ifs"
7315809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
7316809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	test -n "$7" && \
7317809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_fatal_help "too many parameters to \`-version-info'"
7318809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
7319809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# convert absolute version numbers to libtool ages
7320809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# this retains compatibility with .la files and attempts
7321809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# to make the code below a bit more comprehensible
7322809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
7323809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	case $vinfo_number in
7324809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	yes)
7325809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  number_major="$1"
7326809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  number_minor="$2"
7327809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  number_revision="$3"
7328809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  #
7329809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # There are really only two kinds -- those that
7330809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # use the current revision as the major version
7331809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # and those that subtract age and use age as
7332809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # a minor version.  But, then there is irix
7333809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # which has an extra 1 added just for fun
7334809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  #
7335809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  case $version_type in
7336809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # correct linux to gnu/linux during the next big refactor
7337809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  darwin|linux|osf|windows|none)
7338809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_arith $number_major + $number_minor
7339809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    current=$func_arith_result
7340809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    age="$number_minor"
7341809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    revision="$number_revision"
7342809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    ;;
7343809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  freebsd-aout|freebsd-elf|qnx|sunos)
7344809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    current="$number_major"
7345809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    revision="$number_minor"
7346809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    age="0"
7347809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    ;;
7348809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  irix|nonstopux)
7349809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_arith $number_major + $number_minor
7350809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    current=$func_arith_result
7351809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    age="$number_minor"
7352809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    revision="$number_minor"
7353809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    lt_irix_increment=no
7354809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    ;;
7355809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *)
7356809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_fatal_configuration "$modename: unknown library version type \`$version_type'"
7357809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    ;;
7358809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  esac
7359809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
7360809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	no)
7361809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  current="$1"
7362809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  revision="$2"
7363809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  age="$3"
7364809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
7365809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	esac
7366809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
7367809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Check that each of the things are valid numbers.
7368809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	case $current in
7369809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	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]) ;;
7370809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	*)
7371809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_error "CURRENT \`$current' must be a nonnegative integer"
7372809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_fatal_error "\`$vinfo' is not valid version information"
7373809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
7374809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	esac
7375809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
7376809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	case $revision in
7377809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	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]) ;;
7378809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	*)
7379809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_error "REVISION \`$revision' must be a nonnegative integer"
7380809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_fatal_error "\`$vinfo' is not valid version information"
7381809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
7382809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	esac
7383809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
7384809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	case $age in
7385809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	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]) ;;
7386809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	*)
7387809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_error "AGE \`$age' must be a nonnegative integer"
7388809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_fatal_error "\`$vinfo' is not valid version information"
7389809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
7390809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	esac
7391809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
7392809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test "$age" -gt "$current"; then
7393809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_error "AGE \`$age' is greater than the current interface number \`$current'"
7394809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_fatal_error "\`$vinfo' is not valid version information"
7395809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
7396809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
7397809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Calculate the version variables.
7398809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	major=
7399809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	versuffix=
7400809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	verstring=
7401809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	case $version_type in
7402809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	none) ;;
7403809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
7404809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	darwin)
7405809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # Like Linux, but with the current version available in
7406809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # verstring for coding it into the library header
7407809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_arith $current - $age
7408809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  major=.$func_arith_result
7409809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  versuffix="$major.$age.$revision"
7410809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # Darwin ld doesn't like 0 for these options...
7411809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_arith $current + 1
7412809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  minor_current=$func_arith_result
7413809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
7414809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
7415809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
7416809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
7417809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	freebsd-aout)
7418809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  major=".$current"
7419809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  versuffix=".$current.$revision";
7420809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
7421809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
7422809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	freebsd-elf)
7423809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  major=".$current"
7424809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  versuffix=".$current"
7425809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
7426809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
7427809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	irix | nonstopux)
7428809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test "X$lt_irix_increment" = "Xno"; then
7429809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_arith $current - $age
7430809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  else
7431809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_arith $current - $age + 1
7432809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
7433809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  major=$func_arith_result
7434809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
7435809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  case $version_type in
7436809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    nonstopux) verstring_prefix=nonstopux ;;
7437809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    *)         verstring_prefix=sgi ;;
7438809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  esac
7439809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  verstring="$verstring_prefix$major.$revision"
7440809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
7441809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # Add in all the interfaces that we are compatible with.
7442809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  loop=$revision
7443809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  while test "$loop" -ne 0; do
7444809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_arith $revision - $loop
7445809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    iface=$func_arith_result
7446809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_arith $loop - 1
7447809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    loop=$func_arith_result
7448809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    verstring="$verstring_prefix$major.$iface:$verstring"
7449809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  done
7450809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
7451809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # Before this point, $major must not contain `.'.
7452809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  major=.$major
7453809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  versuffix="$major.$revision"
7454809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
7455809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
7456809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	linux) # correct to gnu/linux during the next big refactor
7457809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_arith $current - $age
7458809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  major=.$func_arith_result
7459809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  versuffix="$major.$age.$revision"
7460809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
7461809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
7462809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	osf)
7463809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_arith $current - $age
7464809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  major=.$func_arith_result
7465809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  versuffix=".$current.$age.$revision"
7466809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  verstring="$current.$age.$revision"
7467809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
7468809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # Add in all the interfaces that we are compatible with.
7469809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  loop=$age
7470809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  while test "$loop" -ne 0; do
7471809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_arith $current - $loop
7472809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    iface=$func_arith_result
7473809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_arith $loop - 1
7474809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    loop=$func_arith_result
7475809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    verstring="$verstring:${iface}.0"
7476809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  done
7477809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
7478809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # Make executables depend on our current version.
7479809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_append verstring ":${current}.0"
7480809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
7481809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
7482809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	qnx)
7483809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  major=".$current"
7484809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  versuffix=".$current"
7485809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
7486809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
7487809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	sunos)
7488809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  major=".$current"
7489809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  versuffix=".$current.$revision"
7490809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
7491809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
7492809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	windows)
7493809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # Use '-' rather than '.', since we only want one
7494809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # extension on DOS 8.3 filesystems.
7495809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_arith $current - $age
7496809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  major=$func_arith_result
7497809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  versuffix="-$major"
7498809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
7499809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
7500809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	*)
7501809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_fatal_configuration "unknown library version type \`$version_type'"
7502809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
7503809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	esac
7504809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
7505809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Clear the version info if we defaulted, and they specified a release.
7506809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test -z "$vinfo" && test -n "$release"; then
7507809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  major=
7508809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  case $version_type in
7509809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  darwin)
7510809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # we can't check for "0.0" in archive_cmds due to quoting
7511809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # problems, so we reset it completely
7512809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    verstring=
7513809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    ;;
7514809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *)
7515809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    verstring="0.0"
7516809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    ;;
7517809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  esac
7518809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test "$need_version" = no; then
7519809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    versuffix=
7520809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  else
7521809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    versuffix=".0.0"
7522809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
7523809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
7524809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
7525809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Remove version info from name if versioning should be avoided
7526809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test "$avoid_version" = yes && test "$need_version" = no; then
7527809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  major=
7528809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  versuffix=
7529809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  verstring=""
7530809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
7531809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
7532809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Check to see if the archive will have undefined symbols.
7533809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test "$allow_undefined" = yes; then
7534809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test "$allow_undefined_flag" = unsupported; then
7535809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_warning "undefined symbols not allowed in $host shared libraries"
7536809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    build_libtool_libs=no
7537809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    build_old_libs=yes
7538809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
7539809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	else
7540809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # Don't allow undefined symbols.
7541809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  allow_undefined_flag="$no_undefined_flag"
7542809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
7543809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
7544809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
7545809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
7546809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_generate_dlsyms "$libname" "$libname" "yes"
7547809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_append libobjs " $symfileobj"
7548809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      test "X$libobjs" = "X " && libobjs=
7549809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
7550809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test "$opt_mode" != relink; then
7551809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Remove our outputs, but don't remove object files since they
7552809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# may have been created when compiling PIC objects.
7553809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	removelist=
7554809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	tempremovelist=`$ECHO "$output_objdir/*"`
7555809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	for p in $tempremovelist; do
7556809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  case $p in
7557809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    *.$objext | *.gcno)
7558809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	       ;;
7559809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
7560809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	       if test "X$precious_files_regex" != "X"; then
7561809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		 if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
7562809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		 then
7563809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		   continue
7564809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		 fi
7565809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	       fi
7566809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	       func_append removelist " $p"
7567809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	       ;;
7568809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    *) ;;
7569809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  esac
7570809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	done
7571809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	test -n "$removelist" && \
7572809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_show_eval "${RM}r \$removelist"
7573809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
7574809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
7575809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Now set the variables for building old libraries.
7576809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
7577809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_append oldlibs " $output_objdir/$libname.$libext"
7578809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
7579809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Transform .lo files to .o files.
7580809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP`
7581809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
7582809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
7583809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Eliminate all temporary directories.
7584809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      #for path in $notinst_path; do
7585809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      #	lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"`
7586809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      #	deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"`
7587809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      #	dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"`
7588809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      #done
7589809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
7590809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test -n "$xrpath"; then
7591809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# If the user specified any rpath flags, then add them.
7592809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	temp_xrpath=
7593809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	for libdir in $xrpath; do
7594809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_replace_sysroot "$libdir"
7595809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_append temp_xrpath " -R$func_replace_sysroot_result"
7596809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  case "$finalize_rpath " in
7597809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *" $libdir "*) ;;
7598809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *) func_append finalize_rpath " $libdir" ;;
7599809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  esac
7600809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	done
7601809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
7602809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  dependency_libs="$temp_xrpath $dependency_libs"
7603809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
7604809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
7605809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
7606809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Make sure dlfiles contains only unique files that won't be dlpreopened
7607809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      old_dlfiles="$dlfiles"
7608809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      dlfiles=
7609809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      for lib in $old_dlfiles; do
7610809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	case " $dlprefiles $dlfiles " in
7611809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	*" $lib "*) ;;
7612809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	*) func_append dlfiles " $lib" ;;
7613809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	esac
7614809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      done
7615809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
7616809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Make sure dlprefiles contains only unique files
7617809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      old_dlprefiles="$dlprefiles"
7618809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      dlprefiles=
7619809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      for lib in $old_dlprefiles; do
7620809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	case "$dlprefiles " in
7621809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	*" $lib "*) ;;
7622809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	*) func_append dlprefiles " $lib" ;;
7623809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	esac
7624809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      done
7625809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
7626809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test "$build_libtool_libs" = yes; then
7627809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test -n "$rpath"; then
7628809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  case $host in
7629809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*)
7630809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # these systems don't actually have a c library (as such)!
7631809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    ;;
7632809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *-*-rhapsody* | *-*-darwin1.[012])
7633809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # Rhapsody C library is in the System framework
7634809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_append deplibs " System.ltframework"
7635809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    ;;
7636809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *-*-netbsd*)
7637809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # Don't link with libc until the a.out ld.so is fixed.
7638809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    ;;
7639809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
7640809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # Do not include libc due to us having libc/libc_r.
7641809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    ;;
7642809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *-*-sco3.2v5* | *-*-sco5v6*)
7643809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # Causes problems with __ctype
7644809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    ;;
7645809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
7646809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # Compiler inserts libc in the correct place for threads to work
7647809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    ;;
7648809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *)
7649809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # Add libc to deplibs on all other systems if necessary.
7650809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    if test "$build_libtool_need_lc" = "yes"; then
7651809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      func_append deplibs " -lc"
7652809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    fi
7653809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    ;;
7654809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  esac
7655809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
7656809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
7657809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Transform deplibs into only deplibs that can be linked in shared.
7658809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	name_save=$name
7659809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	libname_save=$libname
7660809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	release_save=$release
7661809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	versuffix_save=$versuffix
7662809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	major_save=$major
7663809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# I'm not sure if I'm treating the release correctly.  I think
7664809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# release should show up in the -l (ie -lgmp5) so we don't want to
7665809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# add it in twice.  Is that correct?
7666809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	release=""
7667809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	versuffix=""
7668809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	major=""
7669809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	newdeplibs=
7670809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	droppeddeps=no
7671809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	case $deplibs_check_method in
7672809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	pass_all)
7673809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # Don't check for shared/static.  Everything works.
7674809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # This might be a little naive.  We might want to check
7675809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # whether the library exists or not.  But this is on
7676809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # osf3 & osf4 and I'm not really sure... Just
7677809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # implementing what was already the behavior.
7678809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  newdeplibs=$deplibs
7679809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
7680809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	test_compile)
7681809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # This code stresses the "libraries are programs" paradigm to its
7682809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # limits. Maybe even breaks it.  We compile a program, linking it
7683809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # against the deplibs as a proxy for the library.  Then we can check
7684809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # whether they linked in statically or dynamically with ldd.
7685809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  $opt_dry_run || $RM conftest.c
7686809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  cat > conftest.c <<EOF
7687809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  int main() { return 0; }
7688809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsEOF
7689809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  $opt_dry_run || $RM conftest
7690809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
7691809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    ldd_output=`ldd conftest`
7692809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    for i in $deplibs; do
7693809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      case $i in
7694809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      -l*)
7695809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		func_stripname -l '' "$i"
7696809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		name=$func_stripname_result
7697809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
7698809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  case " $predeps $postdeps " in
7699809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  *" $i "*)
7700809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    func_append newdeplibs " $i"
7701809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    i=""
7702809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    ;;
7703809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  esac
7704809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		fi
7705809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		if test -n "$i" ; then
7706809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  libname=`eval "\\$ECHO \"$libname_spec\""`
7707809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
7708809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  set dummy $deplib_matches; shift
7709809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  deplib_match=$1
7710809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
7711809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    func_append newdeplibs " $i"
7712809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  else
7713809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    droppeddeps=yes
7714809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    echo
7715809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    $ECHO "*** Warning: dynamic linker does not accept needed library $i."
7716809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    echo "*** I have the capability to make that library automatically link in when"
7717809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    echo "*** you link to this library.  But I can only do this if you have a"
7718809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    echo "*** shared version of the library, which I believe you do not have"
7719809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    echo "*** because a test_compile did reveal that the linker did not use it for"
7720809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    echo "*** its dynamic dependency list that programs get resolved with at runtime."
7721809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  fi
7722809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		fi
7723809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		;;
7724809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      *)
7725809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		func_append newdeplibs " $i"
7726809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		;;
7727809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      esac
7728809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    done
7729809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  else
7730809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # Error occurred in the first compile.  Let's try to salvage
7731809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # the situation: Compile a separate program for each library.
7732809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    for i in $deplibs; do
7733809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      case $i in
7734809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      -l*)
7735809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		func_stripname -l '' "$i"
7736809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		name=$func_stripname_result
7737809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		$opt_dry_run || $RM conftest
7738809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
7739809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  ldd_output=`ldd conftest`
7740809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
7741809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    case " $predeps $postdeps " in
7742809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    *" $i "*)
7743809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		      func_append newdeplibs " $i"
7744809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		      i=""
7745809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		      ;;
7746809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    esac
7747809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  fi
7748809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  if test -n "$i" ; then
7749809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    libname=`eval "\\$ECHO \"$libname_spec\""`
7750809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
7751809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    set dummy $deplib_matches; shift
7752809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    deplib_match=$1
7753809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
7754809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		      func_append newdeplibs " $i"
7755809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    else
7756809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		      droppeddeps=yes
7757809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		      echo
7758809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		      $ECHO "*** Warning: dynamic linker does not accept needed library $i."
7759809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		      echo "*** I have the capability to make that library automatically link in when"
7760809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		      echo "*** you link to this library.  But I can only do this if you have a"
7761809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		      echo "*** shared version of the library, which you do not appear to have"
7762809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		      echo "*** because a test_compile did reveal that the linker did not use this one"
7763809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		      echo "*** as a dynamic dependency that programs can get resolved with at runtime."
7764809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    fi
7765809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  fi
7766809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		else
7767809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  droppeddeps=yes
7768809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  echo
7769809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  $ECHO "*** Warning!  Library $i is needed by this library but I was not able to"
7770809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  echo "*** make it link in!  You will probably need to install it or some"
7771809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  echo "*** library that it depends on before this library will be fully"
7772809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  echo "*** functional.  Installing it before continuing would be even better."
7773809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		fi
7774809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		;;
7775809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      *)
7776809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		func_append newdeplibs " $i"
7777809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		;;
7778809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      esac
7779809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    done
7780809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
7781809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
7782809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	file_magic*)
7783809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  set dummy $deplibs_check_method; shift
7784809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
7785809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  for a_deplib in $deplibs; do
7786809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    case $a_deplib in
7787809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    -l*)
7788809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      func_stripname -l '' "$a_deplib"
7789809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      name=$func_stripname_result
7790809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
7791809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		case " $predeps $postdeps " in
7792809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		*" $a_deplib "*)
7793809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  func_append newdeplibs " $a_deplib"
7794809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  a_deplib=""
7795809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  ;;
7796809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		esac
7797809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      fi
7798809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      if test -n "$a_deplib" ; then
7799809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		libname=`eval "\\$ECHO \"$libname_spec\""`
7800809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		if test -n "$file_magic_glob"; then
7801809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob`
7802809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		else
7803809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  libnameglob=$libname
7804809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		fi
7805809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob`
7806809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
7807809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  if test "$want_nocaseglob" = yes; then
7808809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    shopt -s nocaseglob
7809809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
7810809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    $nocaseglob
7811809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  else
7812809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
7813809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  fi
7814809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  for potent_lib in $potential_libs; do
7815809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		      # Follow soft links.
7816809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		      if ls -lLd "$potent_lib" 2>/dev/null |
7817809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			 $GREP " -> " >/dev/null; then
7818809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			continue
7819809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		      fi
7820809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		      # The statement above tries to avoid entering an
7821809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		      # endless loop below, in case of cyclic links.
7822809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		      # We might still enter an endless loop, since a link
7823809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		      # loop can be closed while we follow links,
7824809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		      # but so what?
7825809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		      potlib="$potent_lib"
7826809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		      while test -h "$potlib" 2>/dev/null; do
7827809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
7828809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			case $potliblink in
7829809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
7830809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			*) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";;
7831809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			esac
7832809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		      done
7833809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
7834809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			 $SED -e 10q |
7835809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			 $EGREP "$file_magic_regex" > /dev/null; then
7836809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			func_append newdeplibs " $a_deplib"
7837809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			a_deplib=""
7838809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats			break 2
7839809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		      fi
7840809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  done
7841809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		done
7842809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      fi
7843809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      if test -n "$a_deplib" ; then
7844809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		droppeddeps=yes
7845809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		echo
7846809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
7847809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		echo "*** I have the capability to make that library automatically link in when"
7848809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		echo "*** you link to this library.  But I can only do this if you have a"
7849809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		echo "*** shared version of the library, which you do not appear to have"
7850809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		echo "*** because I did check the linker path looking for a file starting"
7851809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		if test -z "$potlib" ; then
7852809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
7853809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		else
7854809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  $ECHO "*** with $libname and none of the candidates passed a file format test"
7855809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  $ECHO "*** using a file magic. Last file checked: $potlib"
7856809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		fi
7857809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      fi
7858809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      ;;
7859809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    *)
7860809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # Add a -L argument.
7861809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      func_append newdeplibs " $a_deplib"
7862809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      ;;
7863809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    esac
7864809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  done # Gone through all deplibs.
7865809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
7866809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	match_pattern*)
7867809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  set dummy $deplibs_check_method; shift
7868809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
7869809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  for a_deplib in $deplibs; do
7870809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    case $a_deplib in
7871809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    -l*)
7872809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      func_stripname -l '' "$a_deplib"
7873809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      name=$func_stripname_result
7874809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
7875809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		case " $predeps $postdeps " in
7876809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		*" $a_deplib "*)
7877809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  func_append newdeplibs " $a_deplib"
7878809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  a_deplib=""
7879809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  ;;
7880809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		esac
7881809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      fi
7882809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      if test -n "$a_deplib" ; then
7883809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		libname=`eval "\\$ECHO \"$libname_spec\""`
7884809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
7885809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
7886809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  for potent_lib in $potential_libs; do
7887809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    potlib="$potent_lib" # see symlink-check above in file_magic test
7888809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \
7889809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		       $EGREP "$match_pattern_regex" > /dev/null; then
7890809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		      func_append newdeplibs " $a_deplib"
7891809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		      a_deplib=""
7892809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		      break 2
7893809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    fi
7894809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  done
7895809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		done
7896809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      fi
7897809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      if test -n "$a_deplib" ; then
7898809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		droppeddeps=yes
7899809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		echo
7900809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
7901809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		echo "*** I have the capability to make that library automatically link in when"
7902809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		echo "*** you link to this library.  But I can only do this if you have a"
7903809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		echo "*** shared version of the library, which you do not appear to have"
7904809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		echo "*** because I did check the linker path looking for a file starting"
7905809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		if test -z "$potlib" ; then
7906809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
7907809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		else
7908809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  $ECHO "*** with $libname and none of the candidates passed a file format test"
7909809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  $ECHO "*** using a regex pattern. Last file checked: $potlib"
7910809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		fi
7911809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      fi
7912809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      ;;
7913809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    *)
7914809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # Add a -L argument.
7915809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      func_append newdeplibs " $a_deplib"
7916809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      ;;
7917809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    esac
7918809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  done # Gone through all deplibs.
7919809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
7920809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	none | unknown | *)
7921809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  newdeplibs=""
7922809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'`
7923809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
7924809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    for i in $predeps $postdeps ; do
7925809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # can't use Xsed below, because $i might contain '/'
7926809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"`
7927809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    done
7928809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
7929809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  case $tmp_deplibs in
7930809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *[!\	\ ]*)
7931809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    echo
7932809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    if test "X$deplibs_check_method" = "Xnone"; then
7933809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      echo "*** Warning: inter-library dependencies are not supported in this platform."
7934809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    else
7935809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      echo "*** Warning: inter-library dependencies are not known to be supported."
7936809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    fi
7937809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    echo "*** All declared inter-library dependencies are being dropped."
7938809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    droppeddeps=yes
7939809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    ;;
7940809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  esac
7941809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
7942809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	esac
7943809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	versuffix=$versuffix_save
7944809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	major=$major_save
7945809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	release=$release_save
7946809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	libname=$libname_save
7947809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	name=$name_save
7948809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
7949809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	case $host in
7950809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	*-*-rhapsody* | *-*-darwin1.[012])
7951809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # On Rhapsody replace the C library with the System framework
7952809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'`
7953809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
7954809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	esac
7955809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
7956809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test "$droppeddeps" = yes; then
7957809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test "$module" = yes; then
7958809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    echo
7959809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    echo "*** Warning: libtool could not satisfy all declared inter-library"
7960809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    $ECHO "*** dependencies of module $libname.  Therefore, libtool will create"
7961809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    echo "*** a static module, that should work as long as the dlopening"
7962809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    echo "*** application is linked with the -dlopen flag."
7963809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    if test -z "$global_symbol_pipe"; then
7964809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      echo
7965809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      echo "*** However, this would only work if libtool was able to extract symbol"
7966809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
7967809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      echo "*** not find such a program.  So, this module is probably useless."
7968809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      echo "*** \`nm' from GNU binutils and a full rebuild may help."
7969809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    fi
7970809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    if test "$build_old_libs" = no; then
7971809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      oldlibs="$output_objdir/$libname.$libext"
7972809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      build_libtool_libs=module
7973809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      build_old_libs=yes
7974809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    else
7975809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      build_libtool_libs=no
7976809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    fi
7977809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  else
7978809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    echo "*** The inter-library dependencies that have been dropped here will be"
7979809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    echo "*** automatically added whenever a program is linked with this library"
7980809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    echo "*** or is declared to -dlopen it."
7981809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
7982809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    if test "$allow_undefined" = no; then
7983809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      echo
7984809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      echo "*** Since this library must not contain undefined symbols,"
7985809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      echo "*** because either the platform does not support them or"
7986809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      echo "*** it was explicitly requested with -no-undefined,"
7987809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      echo "*** libtool will only create a static version of it."
7988809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      if test "$build_old_libs" = no; then
7989809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		oldlibs="$output_objdir/$libname.$libext"
7990809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		build_libtool_libs=module
7991809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		build_old_libs=yes
7992809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      else
7993809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		build_libtool_libs=no
7994809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      fi
7995809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    fi
7996809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
7997809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
7998809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Done checking deplibs!
7999809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	deplibs=$newdeplibs
8000809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
8001809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Time to change all our "foo.ltframework" stuff back to "-framework foo"
8002809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      case $host in
8003809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	*-*-darwin*)
8004809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
8005809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
8006809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
8007809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
8008809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      esac
8009809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8010809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # move library search paths that coincide with paths to not yet
8011809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # installed libraries to the beginning of the library search list
8012809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      new_libs=
8013809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      for path in $notinst_path; do
8014809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	case " $new_libs " in
8015809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	*" -L$path/$objdir "*) ;;
8016809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	*)
8017809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  case " $deplibs " in
8018809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *" -L$path/$objdir "*)
8019809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_append new_libs " -L$path/$objdir" ;;
8020809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  esac
8021809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
8022809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	esac
8023809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      done
8024809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      for deplib in $deplibs; do
8025809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	case $deplib in
8026809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	-L*)
8027809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  case " $new_libs " in
8028809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *" $deplib "*) ;;
8029809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *) func_append new_libs " $deplib" ;;
8030809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  esac
8031809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
8032809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	*) func_append new_libs " $deplib" ;;
8033809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	esac
8034809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      done
8035809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      deplibs="$new_libs"
8036809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8037809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # All the library-specific variables (install_libdir is set above).
8038809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      library_names=
8039809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      old_library=
8040809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      dlname=
8041809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8042809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Test again, we may have decided not to build it any more
8043809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test "$build_libtool_libs" = yes; then
8044809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Remove ${wl} instances when linking with ld.
8045809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# FIXME: should test the right _cmds variable.
8046809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	case $archive_cmds in
8047809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *\$LD\ *) wl= ;;
8048809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        esac
8049809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test "$hardcode_into_libs" = yes; then
8050809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # Hardcode the library paths
8051809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  hardcode_libdirs=
8052809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  dep_rpath=
8053809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  rpath="$finalize_rpath"
8054809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  test "$opt_mode" != relink && rpath="$compile_rpath$rpath"
8055809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  for libdir in $rpath; do
8056809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    if test -n "$hardcode_libdir_flag_spec"; then
8057809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      if test -n "$hardcode_libdir_separator"; then
8058809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		func_replace_sysroot "$libdir"
8059809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		libdir=$func_replace_sysroot_result
8060809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		if test -z "$hardcode_libdirs"; then
8061809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  hardcode_libdirs="$libdir"
8062809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		else
8063809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  # Just accumulate the unique libdirs.
8064809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
8065809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
8066809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    ;;
8067809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  *)
8068809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
8069809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    ;;
8070809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  esac
8071809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		fi
8072809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      else
8073809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		eval flag=\"$hardcode_libdir_flag_spec\"
8074809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		func_append dep_rpath " $flag"
8075809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      fi
8076809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    elif test -n "$runpath_var"; then
8077809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      case "$perm_rpath " in
8078809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      *" $libdir "*) ;;
8079809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      *) func_append perm_rpath " $libdir" ;;
8080809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      esac
8081809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    fi
8082809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  done
8083809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # Substitute the hardcoded libdirs into the rpath.
8084809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test -n "$hardcode_libdir_separator" &&
8085809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	     test -n "$hardcode_libdirs"; then
8086809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    libdir="$hardcode_libdirs"
8087809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    eval "dep_rpath=\"$hardcode_libdir_flag_spec\""
8088809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
8089809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
8090809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # We should set the runpath_var.
8091809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    rpath=
8092809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    for dir in $perm_rpath; do
8093809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      func_append rpath "$dir:"
8094809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    done
8095809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
8096809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
8097809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
8098809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
8099809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8100809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	shlibpath="$finalize_shlibpath"
8101809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
8102809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test -n "$shlibpath"; then
8103809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
8104809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
8105809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8106809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Get the real and link names of the library.
8107809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	eval shared_ext=\"$shrext_cmds\"
8108809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	eval library_names=\"$library_names_spec\"
8109809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	set dummy $library_names
8110809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	shift
8111809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	realname="$1"
8112809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	shift
8113809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8114809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test -n "$soname_spec"; then
8115809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  eval soname=\"$soname_spec\"
8116809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	else
8117809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  soname="$realname"
8118809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
8119809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test -z "$dlname"; then
8120809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  dlname=$soname
8121809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
8122809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8123809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	lib="$output_objdir/$realname"
8124809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	linknames=
8125809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	for link
8126809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	do
8127809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_append linknames " $link"
8128809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	done
8129809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8130809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Use standard objects if they are pic
8131809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP`
8132809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	test "X$libobjs" = "X " && libobjs=
8133809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8134809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	delfiles=
8135809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test -n "$export_symbols" && test -n "$include_expsyms"; then
8136809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
8137809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  export_symbols="$output_objdir/$libname.uexp"
8138809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_append delfiles " $export_symbols"
8139809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
8140809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8141809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	orig_export_symbols=
8142809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	case $host_os in
8143809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	cygwin* | mingw* | cegcc*)
8144809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
8145809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # exporting using user supplied symfile
8146809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
8147809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # and it's NOT already a .def file. Must figure out
8148809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # which of the given symbols are data symbols and tag
8149809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # them as such. So, trigger use of export_symbols_cmds.
8150809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # export_symbols gets reassigned inside the "prepare
8151809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # the list of exported symbols" if statement, so the
8152809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # include_expsyms logic still works.
8153809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      orig_export_symbols="$export_symbols"
8154809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      export_symbols=
8155809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      always_export_symbols=yes
8156809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    fi
8157809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
8158809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
8159809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	esac
8160809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8161809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Prepare the list of exported symbols
8162809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test -z "$export_symbols"; then
8163809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
8164809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_verbose "generating symbol list for \`$libname.la'"
8165809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    export_symbols="$output_objdir/$libname.exp"
8166809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    $opt_dry_run || $RM $export_symbols
8167809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    cmds=$export_symbols_cmds
8168809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    save_ifs="$IFS"; IFS='~'
8169809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    for cmd1 in $cmds; do
8170809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      IFS="$save_ifs"
8171809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # Take the normal branch if the nm_file_list_spec branch
8172809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # doesn't work or if tool conversion is not needed.
8173809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      case $nm_file_list_spec~$to_tool_file_cmd in
8174809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		*~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*)
8175809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  try_normal_branch=yes
8176809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  eval cmd=\"$cmd1\"
8177809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  func_len " $cmd"
8178809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  len=$func_len_result
8179809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  ;;
8180809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		*)
8181809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  try_normal_branch=no
8182809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  ;;
8183809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      esac
8184809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      if test "$try_normal_branch" = yes \
8185809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		 && { test "$len" -lt "$max_cmd_len" \
8186809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		      || test "$max_cmd_len" -le -1; }
8187809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      then
8188809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		func_show_eval "$cmd" 'exit $?'
8189809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		skipped_export=false
8190809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      elif test -n "$nm_file_list_spec"; then
8191809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		func_basename "$output"
8192809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		output_la=$func_basename_result
8193809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		save_libobjs=$libobjs
8194809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		save_output=$output
8195809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		output=${output_objdir}/${output_la}.nm
8196809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		func_to_tool_file "$output"
8197809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		libobjs=$nm_file_list_spec$func_to_tool_file_result
8198809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		func_append delfiles " $output"
8199809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		func_verbose "creating $NM input file list: $output"
8200809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		for obj in $save_libobjs; do
8201809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  func_to_tool_file "$obj"
8202809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  $ECHO "$func_to_tool_file_result"
8203809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		done > "$output"
8204809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		eval cmd=\"$cmd1\"
8205809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		func_show_eval "$cmd" 'exit $?'
8206809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		output=$save_output
8207809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		libobjs=$save_libobjs
8208809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		skipped_export=false
8209809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      else
8210809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		# The command line is too long to execute in one step.
8211809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		func_verbose "using reloadable object file for export list..."
8212809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		skipped_export=:
8213809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		# Break out early, otherwise skipped_export may be
8214809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		# set to false by a later but shorter cmd.
8215809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		break
8216809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      fi
8217809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    done
8218809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    IFS="$save_ifs"
8219809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
8220809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
8221809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
8222809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    fi
8223809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
8224809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
8225809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8226809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test -n "$export_symbols" && test -n "$include_expsyms"; then
8227809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  tmp_export_symbols="$export_symbols"
8228809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
8229809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
8230809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
8231809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8232809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
8233809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # The given exports_symbols file has to be filtered, so filter it.
8234809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
8235809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # FIXME: $output_objdir/$libname.filter potentially contains lots of
8236809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # 's' commands which not all seds can handle. GNU sed should be fine
8237809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # though. Also, the filter scales superlinearly with the number of
8238809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # global variables. join(1) would be nice here, but unfortunately
8239809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # isn't a blessed tool.
8240809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
8241809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_append delfiles " $export_symbols $output_objdir/$libname.filter"
8242809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  export_symbols=$output_objdir/$libname.def
8243809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
8244809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
8245809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8246809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	tmp_deplibs=
8247809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	for test_deplib in $deplibs; do
8248809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  case " $convenience " in
8249809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *" $test_deplib "*) ;;
8250809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *)
8251809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_append tmp_deplibs " $test_deplib"
8252809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    ;;
8253809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  esac
8254809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	done
8255809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	deplibs="$tmp_deplibs"
8256809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8257809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test -n "$convenience"; then
8258809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test -n "$whole_archive_flag_spec" &&
8259809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    test "$compiler_needs_object" = yes &&
8260809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    test -z "$libobjs"; then
8261809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # extract the archives, so we have objects to list.
8262809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # TODO: could optimize this to just extract one archive.
8263809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    whole_archive_flag_spec=
8264809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
8265809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test -n "$whole_archive_flag_spec"; then
8266809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    save_libobjs=$libobjs
8267809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
8268809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    test "X$libobjs" = "X " && libobjs=
8269809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  else
8270809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    gentop="$output_objdir/${outputname}x"
8271809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_append generated " $gentop"
8272809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8273809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_extract_archives $gentop $convenience
8274809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_append libobjs " $func_extract_archives_result"
8275809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    test "X$libobjs" = "X " && libobjs=
8276809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
8277809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
8278809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8279809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
8280809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  eval flag=\"$thread_safe_flag_spec\"
8281809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_append linker_flags " $flag"
8282809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
8283809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8284809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Make a backup of the uninstalled library when relinking
8285809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test "$opt_mode" = relink; then
8286809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
8287809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
8288809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8289809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Do each of the archive commands.
8290809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test "$module" = yes && test -n "$module_cmds" ; then
8291809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
8292809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    eval test_cmds=\"$module_expsym_cmds\"
8293809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    cmds=$module_expsym_cmds
8294809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  else
8295809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    eval test_cmds=\"$module_cmds\"
8296809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    cmds=$module_cmds
8297809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
8298809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	else
8299809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
8300809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    eval test_cmds=\"$archive_expsym_cmds\"
8301809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    cmds=$archive_expsym_cmds
8302809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  else
8303809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    eval test_cmds=\"$archive_cmds\"
8304809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    cmds=$archive_cmds
8305809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
8306809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
8307809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8308809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test "X$skipped_export" != "X:" &&
8309809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	   func_len " $test_cmds" &&
8310809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	   len=$func_len_result &&
8311809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	   test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
8312809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  :
8313809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	else
8314809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # The command line is too long to link in one step, link piecewise
8315809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # or, if using GNU ld and skipped_export is not :, use a linker
8316809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # script.
8317809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8318809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # Save the value of $output and $libobjs because we want to
8319809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # use them later.  If we have whole_archive_flag_spec, we
8320809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # want to use save_libobjs as it was before
8321809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # whole_archive_flag_spec was expanded, because we can't
8322809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # assume the linker understands whole_archive_flag_spec.
8323809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # This may have to be revisited, in case too many
8324809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # convenience libraries get linked in and end up exceeding
8325809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # the spec.
8326809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
8327809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    save_libobjs=$libobjs
8328809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
8329809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  save_output=$output
8330809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_basename "$output"
8331809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  output_la=$func_basename_result
8332809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8333809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # Clear the reloadable object creation command queue and
8334809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # initialize k to one.
8335809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  test_cmds=
8336809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  concat_cmds=
8337809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  objlist=
8338809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  last_robj=
8339809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  k=1
8340809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8341809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
8342809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    output=${output_objdir}/${output_la}.lnkscript
8343809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_verbose "creating GNU ld script: $output"
8344809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    echo 'INPUT (' > $output
8345809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    for obj in $save_libobjs
8346809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    do
8347809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      func_to_tool_file "$obj"
8348809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      $ECHO "$func_to_tool_file_result" >> $output
8349809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    done
8350809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    echo ')' >> $output
8351809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_append delfiles " $output"
8352809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_to_tool_file "$output"
8353809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    output=$func_to_tool_file_result
8354809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
8355809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    output=${output_objdir}/${output_la}.lnk
8356809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_verbose "creating linker input file list: $output"
8357809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    : > $output
8358809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    set x $save_libobjs
8359809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    shift
8360809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    firstobj=
8361809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    if test "$compiler_needs_object" = yes; then
8362809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      firstobj="$1 "
8363809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      shift
8364809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    fi
8365809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    for obj
8366809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    do
8367809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      func_to_tool_file "$obj"
8368809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      $ECHO "$func_to_tool_file_result" >> $output
8369809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    done
8370809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_append delfiles " $output"
8371809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_to_tool_file "$output"
8372809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    output=$firstobj\"$file_list_spec$func_to_tool_file_result\"
8373809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  else
8374809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    if test -n "$save_libobjs"; then
8375809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      func_verbose "creating reloadable object files..."
8376809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      output=$output_objdir/$output_la-${k}.$objext
8377809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      eval test_cmds=\"$reload_cmds\"
8378809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      func_len " $test_cmds"
8379809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      len0=$func_len_result
8380809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      len=$len0
8381809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8382809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # Loop over the list of objects to be linked.
8383809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      for obj in $save_libobjs
8384809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      do
8385809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		func_len " $obj"
8386809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		func_arith $len + $func_len_result
8387809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		len=$func_arith_result
8388809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		if test "X$objlist" = X ||
8389809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		   test "$len" -lt "$max_cmd_len"; then
8390809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  func_append objlist " $obj"
8391809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		else
8392809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  # The command $test_cmds is almost too long, add a
8393809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  # command to the queue.
8394809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  if test "$k" -eq 1 ; then
8395809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    # The first file doesn't have a previous command to add.
8396809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    reload_objs=$objlist
8397809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    eval concat_cmds=\"$reload_cmds\"
8398809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  else
8399809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    # All subsequent reloadable object files will link in
8400809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    # the last one created.
8401809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    reload_objs="$objlist $last_robj"
8402809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\"
8403809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  fi
8404809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  last_robj=$output_objdir/$output_la-${k}.$objext
8405809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  func_arith $k + 1
8406809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  k=$func_arith_result
8407809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  output=$output_objdir/$output_la-${k}.$objext
8408809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  objlist=" $obj"
8409809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  func_len " $last_robj"
8410809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  func_arith $len0 + $func_len_result
8411809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  len=$func_arith_result
8412809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		fi
8413809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      done
8414809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # Handle the remaining objects by creating one last
8415809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # reloadable object file.  All subsequent reloadable object
8416809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # files will link in the last one created.
8417809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
8418809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      reload_objs="$objlist $last_robj"
8419809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      eval concat_cmds=\"\${concat_cmds}$reload_cmds\"
8420809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      if test -n "$last_robj"; then
8421809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	        eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
8422809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      fi
8423809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      func_append delfiles " $output"
8424809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8425809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    else
8426809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      output=
8427809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    fi
8428809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8429809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    if ${skipped_export-false}; then
8430809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      func_verbose "generating symbol list for \`$libname.la'"
8431809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      export_symbols="$output_objdir/$libname.exp"
8432809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      $opt_dry_run || $RM $export_symbols
8433809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      libobjs=$output
8434809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # Append the command to create the export file.
8435809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
8436809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
8437809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      if test -n "$last_robj"; then
8438809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
8439809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      fi
8440809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    fi
8441809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8442809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    test -n "$save_libobjs" &&
8443809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      func_verbose "creating a temporary reloadable object file: $output"
8444809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8445809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # Loop through the commands generated above and execute them.
8446809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    save_ifs="$IFS"; IFS='~'
8447809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    for cmd in $concat_cmds; do
8448809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      IFS="$save_ifs"
8449809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      $opt_silent || {
8450809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  func_quote_for_expand "$cmd"
8451809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  eval "func_echo $func_quote_for_expand_result"
8452809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      }
8453809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      $opt_dry_run || eval "$cmd" || {
8454809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		lt_exit=$?
8455809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8456809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		# Restore the uninstalled library and exit
8457809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		if test "$opt_mode" = relink; then
8458809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  ( cd "$output_objdir" && \
8459809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    $RM "${realname}T" && \
8460809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		    $MV "${realname}U" "$realname" )
8461809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		fi
8462809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8463809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		exit $lt_exit
8464809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      }
8465809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    done
8466809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    IFS="$save_ifs"
8467809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8468809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    if test -n "$export_symbols_regex" && ${skipped_export-false}; then
8469809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
8470809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
8471809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    fi
8472809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
8473809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8474809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats          if ${skipped_export-false}; then
8475809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    if test -n "$export_symbols" && test -n "$include_expsyms"; then
8476809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      tmp_export_symbols="$export_symbols"
8477809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
8478809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
8479809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    fi
8480809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8481809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    if test -n "$orig_export_symbols"; then
8482809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # The given exports_symbols file has to be filtered, so filter it.
8483809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
8484809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # FIXME: $output_objdir/$libname.filter potentially contains lots of
8485809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # 's' commands which not all seds can handle. GNU sed should be fine
8486809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # though. Also, the filter scales superlinearly with the number of
8487809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # global variables. join(1) would be nice here, but unfortunately
8488809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # isn't a blessed tool.
8489809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
8490809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      func_append delfiles " $export_symbols $output_objdir/$libname.filter"
8491809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      export_symbols=$output_objdir/$libname.def
8492809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
8493809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    fi
8494809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
8495809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8496809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  libobjs=$output
8497809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # Restore the value of output.
8498809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  output=$save_output
8499809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8500809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
8501809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
8502809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    test "X$libobjs" = "X " && libobjs=
8503809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
8504809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # Expand the library linking commands again to reset the
8505809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # value of $libobjs for piecewise linking.
8506809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8507809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # Do each of the archive commands.
8508809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test "$module" = yes && test -n "$module_cmds" ; then
8509809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
8510809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      cmds=$module_expsym_cmds
8511809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    else
8512809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      cmds=$module_cmds
8513809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    fi
8514809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  else
8515809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
8516809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      cmds=$archive_expsym_cmds
8517809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    else
8518809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      cmds=$archive_cmds
8519809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    fi
8520809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
8521809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
8522809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8523809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test -n "$delfiles"; then
8524809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # Append the command to remove temporary files to $cmds.
8525809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  eval cmds=\"\$cmds~\$RM $delfiles\"
8526809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
8527809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8528809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Add any objects from preloaded convenience libraries
8529809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test -n "$dlprefiles"; then
8530809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  gentop="$output_objdir/${outputname}x"
8531809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_append generated " $gentop"
8532809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8533809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_extract_archives $gentop $dlprefiles
8534809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_append libobjs " $func_extract_archives_result"
8535809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  test "X$libobjs" = "X " && libobjs=
8536809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
8537809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8538809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	save_ifs="$IFS"; IFS='~'
8539809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	for cmd in $cmds; do
8540809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  IFS="$save_ifs"
8541809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  eval cmd=\"$cmd\"
8542809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  $opt_silent || {
8543809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_quote_for_expand "$cmd"
8544809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    eval "func_echo $func_quote_for_expand_result"
8545809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  }
8546809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  $opt_dry_run || eval "$cmd" || {
8547809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    lt_exit=$?
8548809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8549809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # Restore the uninstalled library and exit
8550809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    if test "$opt_mode" = relink; then
8551809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      ( cd "$output_objdir" && \
8552809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	        $RM "${realname}T" && \
8553809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		$MV "${realname}U" "$realname" )
8554809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    fi
8555809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8556809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    exit $lt_exit
8557809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  }
8558809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	done
8559809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	IFS="$save_ifs"
8560809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8561809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Restore the uninstalled library and exit
8562809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test "$opt_mode" = relink; then
8563809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
8564809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8565809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test -n "$convenience"; then
8566809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    if test -z "$whole_archive_flag_spec"; then
8567809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      func_show_eval '${RM}r "$gentop"'
8568809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    fi
8569809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
8570809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8571809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  exit $EXIT_SUCCESS
8572809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
8573809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8574809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Create links to the real library.
8575809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	for linkname in $linknames; do
8576809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test "$realname" != "$linkname"; then
8577809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
8578809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
8579809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	done
8580809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8581809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# If -module or -export-dynamic was specified, set the dlname.
8582809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test "$module" = yes || test "$export_dynamic" = yes; then
8583809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # On all known operating systems, these are identical.
8584809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  dlname="$soname"
8585809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
8586809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
8587809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      ;;
8588809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8589809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    obj)
8590809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
8591809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_warning "\`-dlopen' is ignored for objects"
8592809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
8593809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8594809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      case " $deplibs" in
8595809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      *\ -l* | *\ -L*)
8596809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_warning "\`-l' and \`-L' are ignored for objects" ;;
8597809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      esac
8598809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8599809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      test -n "$rpath" && \
8600809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_warning "\`-rpath' is ignored for objects"
8601809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8602809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      test -n "$xrpath" && \
8603809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_warning "\`-R' is ignored for objects"
8604809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8605809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      test -n "$vinfo" && \
8606809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_warning "\`-version-info' is ignored for objects"
8607809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8608809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      test -n "$release" && \
8609809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_warning "\`-release' is ignored for objects"
8610809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8611809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      case $output in
8612809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      *.lo)
8613809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	test -n "$objs$old_deplibs" && \
8614809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_fatal_error "cannot build library object \`$output' from non-libtool objects"
8615809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8616809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	libobj=$output
8617809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_lo2o "$libobj"
8618809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	obj=$func_lo2o_result
8619809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
8620809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      *)
8621809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	libobj=
8622809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	obj="$output"
8623809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
8624809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      esac
8625809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8626809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Delete the old objects.
8627809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      $opt_dry_run || $RM $obj $libobj
8628809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8629809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Objects from convenience libraries.  This assumes
8630809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # single-version convenience libraries.  Whenever we create
8631809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # different ones for PIC/non-PIC, this we'll have to duplicate
8632809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # the extraction.
8633809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      reload_conv_objs=
8634809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      gentop=
8635809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # reload_cmds runs $LD directly, so let us get rid of
8636809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # -Wl from whole_archive_flag_spec and hope we can get by with
8637809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # turning comma into space..
8638809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      wl=
8639809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8640809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test -n "$convenience"; then
8641809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test -n "$whole_archive_flag_spec"; then
8642809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
8643809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'`
8644809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	else
8645809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  gentop="$output_objdir/${obj}x"
8646809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_append generated " $gentop"
8647809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8648809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_extract_archives $gentop $convenience
8649809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  reload_conv_objs="$reload_objs $func_extract_archives_result"
8650809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
8651809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
8652809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8653809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # If we're not building shared, we need to use non_pic_objs
8654809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      test "$build_libtool_libs" != yes && libobjs="$non_pic_objects"
8655809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8656809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Create the old-style object.
8657809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
8658809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8659809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      output="$obj"
8660809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_execute_cmds "$reload_cmds" 'exit $?'
8661809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8662809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Exit if we aren't doing a library object file.
8663809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test -z "$libobj"; then
8664809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test -n "$gentop"; then
8665809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_show_eval '${RM}r "$gentop"'
8666809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
8667809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8668809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	exit $EXIT_SUCCESS
8669809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
8670809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8671809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test "$build_libtool_libs" != yes; then
8672809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test -n "$gentop"; then
8673809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_show_eval '${RM}r "$gentop"'
8674809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
8675809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8676809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Create an invalid libtool object if no PIC, so that we don't
8677809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# accidentally link it into a program.
8678809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# $show "echo timestamp > $libobj"
8679809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
8680809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	exit $EXIT_SUCCESS
8681809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
8682809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8683809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test -n "$pic_flag" || test "$pic_mode" != default; then
8684809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Only do commands if we really have different PIC objects.
8685809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	reload_objs="$libobjs $reload_conv_objs"
8686809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	output="$libobj"
8687809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_execute_cmds "$reload_cmds" 'exit $?'
8688809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
8689809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8690809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test -n "$gentop"; then
8691809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_show_eval '${RM}r "$gentop"'
8692809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
8693809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8694809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      exit $EXIT_SUCCESS
8695809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      ;;
8696809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8697809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    prog)
8698809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      case $host in
8699809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	*cygwin*) func_stripname '' '.exe' "$output"
8700809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	          output=$func_stripname_result.exe;;
8701809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      esac
8702809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      test -n "$vinfo" && \
8703809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_warning "\`-version-info' is ignored for programs"
8704809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8705809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      test -n "$release" && \
8706809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_warning "\`-release' is ignored for programs"
8707809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8708809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      test "$preload" = yes \
8709809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        && test "$dlopen_support" = unknown \
8710809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	&& test "$dlopen_self" = unknown \
8711809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	&& test "$dlopen_self_static" = unknown && \
8712809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
8713809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8714809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      case $host in
8715809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      *-*-rhapsody* | *-*-darwin1.[012])
8716809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# On Rhapsody replace the C library is the System framework
8717809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'`
8718809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'`
8719809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
8720809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      esac
8721809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8722809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      case $host in
8723809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      *-*-darwin*)
8724809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Don't allow lazy linking, it breaks C++ global constructors
8725809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# But is supposedly fixed on 10.4 or later (yay!).
8726809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test "$tagname" = CXX ; then
8727809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
8728809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    10.[0123])
8729809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      func_append compile_command " ${wl}-bind_at_load"
8730809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      func_append finalize_command " ${wl}-bind_at_load"
8731809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    ;;
8732809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  esac
8733809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
8734809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Time to change all our "foo.ltframework" stuff back to "-framework foo"
8735809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
8736809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
8737809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
8738809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      esac
8739809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8740809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8741809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # move library search paths that coincide with paths to not yet
8742809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # installed libraries to the beginning of the library search list
8743809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      new_libs=
8744809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      for path in $notinst_path; do
8745809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	case " $new_libs " in
8746809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	*" -L$path/$objdir "*) ;;
8747809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	*)
8748809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  case " $compile_deplibs " in
8749809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *" -L$path/$objdir "*)
8750809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_append new_libs " -L$path/$objdir" ;;
8751809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  esac
8752809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
8753809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	esac
8754809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      done
8755809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      for deplib in $compile_deplibs; do
8756809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	case $deplib in
8757809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	-L*)
8758809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  case " $new_libs " in
8759809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *" $deplib "*) ;;
8760809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *) func_append new_libs " $deplib" ;;
8761809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  esac
8762809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
8763809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	*) func_append new_libs " $deplib" ;;
8764809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	esac
8765809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      done
8766809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      compile_deplibs="$new_libs"
8767809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8768809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8769809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_append compile_command " $compile_deplibs"
8770809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_append finalize_command " $finalize_deplibs"
8771809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8772809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test -n "$rpath$xrpath"; then
8773809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# If the user specified any rpath flags, then add them.
8774809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	for libdir in $rpath $xrpath; do
8775809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # This is the magic to use -rpath.
8776809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  case "$finalize_rpath " in
8777809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *" $libdir "*) ;;
8778809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *) func_append finalize_rpath " $libdir" ;;
8779809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  esac
8780809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	done
8781809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
8782809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8783809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Now hardcode the library paths
8784809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      rpath=
8785809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      hardcode_libdirs=
8786809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      for libdir in $compile_rpath $finalize_rpath; do
8787809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test -n "$hardcode_libdir_flag_spec"; then
8788809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test -n "$hardcode_libdir_separator"; then
8789809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    if test -z "$hardcode_libdirs"; then
8790809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      hardcode_libdirs="$libdir"
8791809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    else
8792809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # Just accumulate the unique libdirs.
8793809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
8794809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
8795809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		;;
8796809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      *)
8797809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
8798809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		;;
8799809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      esac
8800809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    fi
8801809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  else
8802809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    eval flag=\"$hardcode_libdir_flag_spec\"
8803809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_append rpath " $flag"
8804809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
8805809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	elif test -n "$runpath_var"; then
8806809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  case "$perm_rpath " in
8807809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *" $libdir "*) ;;
8808809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *) func_append perm_rpath " $libdir" ;;
8809809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  esac
8810809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
8811809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	case $host in
8812809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
8813809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
8814809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  case :$dllsearchpath: in
8815809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *":$libdir:"*) ;;
8816809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ::) dllsearchpath=$libdir;;
8817809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *) func_append dllsearchpath ":$libdir";;
8818809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  esac
8819809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  case :$dllsearchpath: in
8820809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *":$testbindir:"*) ;;
8821809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ::) dllsearchpath=$testbindir;;
8822809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *) func_append dllsearchpath ":$testbindir";;
8823809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  esac
8824809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
8825809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	esac
8826809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      done
8827809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Substitute the hardcoded libdirs into the rpath.
8828809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test -n "$hardcode_libdir_separator" &&
8829809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	 test -n "$hardcode_libdirs"; then
8830809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	libdir="$hardcode_libdirs"
8831809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	eval rpath=\" $hardcode_libdir_flag_spec\"
8832809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
8833809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      compile_rpath="$rpath"
8834809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8835809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      rpath=
8836809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      hardcode_libdirs=
8837809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      for libdir in $finalize_rpath; do
8838809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test -n "$hardcode_libdir_flag_spec"; then
8839809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test -n "$hardcode_libdir_separator"; then
8840809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    if test -z "$hardcode_libdirs"; then
8841809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      hardcode_libdirs="$libdir"
8842809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    else
8843809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # Just accumulate the unique libdirs.
8844809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
8845809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
8846809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		;;
8847809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      *)
8848809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
8849809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		;;
8850809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      esac
8851809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    fi
8852809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  else
8853809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    eval flag=\"$hardcode_libdir_flag_spec\"
8854809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_append rpath " $flag"
8855809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
8856809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	elif test -n "$runpath_var"; then
8857809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  case "$finalize_perm_rpath " in
8858809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *" $libdir "*) ;;
8859809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *) func_append finalize_perm_rpath " $libdir" ;;
8860809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  esac
8861809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
8862809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      done
8863809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Substitute the hardcoded libdirs into the rpath.
8864809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test -n "$hardcode_libdir_separator" &&
8865809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	 test -n "$hardcode_libdirs"; then
8866809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	libdir="$hardcode_libdirs"
8867809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	eval rpath=\" $hardcode_libdir_flag_spec\"
8868809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
8869809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      finalize_rpath="$rpath"
8870809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8871809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test -n "$libobjs" && test "$build_old_libs" = yes; then
8872809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Transform all the library objects into standard objects.
8873809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
8874809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
8875809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
8876809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8877809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
8878809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8879809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # template prelinking step
8880809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test -n "$prelink_cmds"; then
8881809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_execute_cmds "$prelink_cmds" 'exit $?'
8882809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
8883809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8884809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      wrappers_required=yes
8885809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      case $host in
8886809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      *cegcc* | *mingw32ce*)
8887809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway.
8888809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        wrappers_required=no
8889809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        ;;
8890809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      *cygwin* | *mingw* )
8891809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        if test "$build_libtool_libs" != yes; then
8892809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats          wrappers_required=no
8893809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        fi
8894809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        ;;
8895809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      *)
8896809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
8897809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats          wrappers_required=no
8898809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        fi
8899809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats        ;;
8900809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      esac
8901809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test "$wrappers_required" = no; then
8902809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Replace the output file specification.
8903809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
8904809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	link_command="$compile_command$compile_rpath"
8905809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8906809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# We have no uninstalled library dependencies, so finalize right now.
8907809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	exit_status=0
8908809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_show_eval "$link_command" 'exit_status=$?'
8909809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8910809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test -n "$postlink_cmds"; then
8911809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_to_tool_file "$output"
8912809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
8913809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_execute_cmds "$postlink_cmds" 'exit $?'
8914809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
8915809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8916809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Delete the generated files.
8917809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test -f "$output_objdir/${outputname}S.${objext}"; then
8918809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
8919809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
8920809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8921809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	exit $exit_status
8922809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
8923809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8924809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test -n "$compile_shlibpath$finalize_shlibpath"; then
8925809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
8926809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
8927809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test -n "$finalize_shlibpath"; then
8928809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
8929809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
8930809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8931809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      compile_var=
8932809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      finalize_var=
8933809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test -n "$runpath_var"; then
8934809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test -n "$perm_rpath"; then
8935809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # We should set the runpath_var.
8936809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  rpath=
8937809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  for dir in $perm_rpath; do
8938809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_append rpath "$dir:"
8939809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  done
8940809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
8941809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
8942809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test -n "$finalize_perm_rpath"; then
8943809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # We should set the runpath_var.
8944809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  rpath=
8945809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  for dir in $finalize_perm_rpath; do
8946809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_append rpath "$dir:"
8947809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  done
8948809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
8949809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
8950809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
8951809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8952809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test "$no_install" = yes; then
8953809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# We don't need to create a wrapper script.
8954809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	link_command="$compile_var$compile_command$compile_rpath"
8955809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Replace the output file specification.
8956809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
8957809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Delete the old output file.
8958809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	$opt_dry_run || $RM $output
8959809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Link the executable and exit
8960809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_show_eval "$link_command" 'exit $?'
8961809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8962809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test -n "$postlink_cmds"; then
8963809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_to_tool_file "$output"
8964809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
8965809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_execute_cmds "$postlink_cmds" 'exit $?'
8966809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
8967809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8968809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	exit $EXIT_SUCCESS
8969809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
8970809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8971809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test "$hardcode_action" = relink; then
8972809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Fast installation is not supported
8973809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	link_command="$compile_var$compile_command$compile_rpath"
8974809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	relink_command="$finalize_var$finalize_command$finalize_rpath"
8975809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8976809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_warning "this platform does not like uninstalled shared libraries"
8977809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_warning "\`$output' will be relinked during installation"
8978809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      else
8979809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test "$fast_install" != no; then
8980809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  link_command="$finalize_var$compile_command$finalize_rpath"
8981809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test "$fast_install" = yes; then
8982809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'`
8983809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  else
8984809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # fast_install is set to needless
8985809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    relink_command=
8986809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
8987809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	else
8988809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  link_command="$compile_var$compile_command$compile_rpath"
8989809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  relink_command="$finalize_var$finalize_command$finalize_rpath"
8990809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
8991809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
8992809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8993809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Replace the output file specification.
8994809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
8995809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8996809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Delete the old output files.
8997809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
8998809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
8999809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_show_eval "$link_command" 'exit $?'
9000809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
9001809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test -n "$postlink_cmds"; then
9002809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_to_tool_file "$output_objdir/$outputname"
9003809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	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'`
9004809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_execute_cmds "$postlink_cmds" 'exit $?'
9005809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
9006809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
9007809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Now create the wrapper script.
9008809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_verbose "creating $output"
9009809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
9010809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Quote the relink command for shipping.
9011809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test -n "$relink_command"; then
9012809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Preserve any variables that may affect compiler behavior
9013809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	for var in $variables_saved_for_relink; do
9014809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if eval test -z \"\${$var+set}\"; then
9015809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
9016809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  elif eval var_value=\$$var; test -z "$var_value"; then
9017809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    relink_command="$var=; export $var; $relink_command"
9018809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  else
9019809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_quote_for_eval "$var_value"
9020809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
9021809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
9022809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	done
9023809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	relink_command="(cd `pwd`; $relink_command)"
9024809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
9025809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
9026809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
9027809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Only actually do things if not in dry run mode.
9028809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      $opt_dry_run || {
9029809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# win32 will think the script is a binary if it has
9030809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# a .exe suffix, so we strip it off here.
9031809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	case $output in
9032809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *.exe) func_stripname '' '.exe' "$output"
9033809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	         output=$func_stripname_result ;;
9034809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	esac
9035809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# test for cygwin because mv fails w/o .exe extensions
9036809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	case $host in
9037809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *cygwin*)
9038809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    exeext=.exe
9039809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_stripname '' '.exe' "$outputname"
9040809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    outputname=$func_stripname_result ;;
9041809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *) exeext= ;;
9042809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	esac
9043809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	case $host in
9044809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *cygwin* | *mingw* )
9045809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_dirname_and_basename "$output" "" "."
9046809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    output_name=$func_basename_result
9047809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    output_path=$func_dirname_result
9048809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    cwrappersource="$output_path/$objdir/lt-$output_name.c"
9049809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    cwrapper="$output_path/$output_name.exe"
9050809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    $RM $cwrappersource $cwrapper
9051809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
9052809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
9053809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_emit_cwrapperexe_src > $cwrappersource
9054809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
9055809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # The wrapper executable is built using the $host compiler,
9056809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # because it contains $host paths and files. If cross-
9057809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # compiling, it, like the target executable, must be
9058809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # executed on the $host or under an emulation environment.
9059809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    $opt_dry_run || {
9060809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
9061809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      $STRIP $cwrapper
9062809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    }
9063809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
9064809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # Now, create the wrapper script for func_source use:
9065809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_ltwrapper_scriptname $cwrapper
9066809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    $RM $func_ltwrapper_scriptname_result
9067809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
9068809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    $opt_dry_run || {
9069809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # note: this script will not be executed, so do not chmod.
9070809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      if test "x$build" = "x$host" ; then
9071809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		$cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
9072809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      else
9073809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		func_emit_wrapper no > $func_ltwrapper_scriptname_result
9074809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      fi
9075809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    }
9076809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
9077809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  * )
9078809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    $RM $output
9079809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
9080809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
9081809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_emit_wrapper no > $output
9082809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    chmod +x $output
9083809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  ;;
9084809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	esac
9085809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      }
9086809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      exit $EXIT_SUCCESS
9087809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      ;;
9088809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    esac
9089809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
9090809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # See if we need to build an old-fashioned archive.
9091809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    for oldlib in $oldlibs; do
9092809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
9093809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test "$build_libtool_libs" = convenience; then
9094809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	oldobjs="$libobjs_save $symfileobj"
9095809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	addlibs="$convenience"
9096809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	build_libtool_libs=no
9097809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      else
9098809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test "$build_libtool_libs" = module; then
9099809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  oldobjs="$libobjs_save"
9100809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  build_libtool_libs=no
9101809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	else
9102809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  oldobjs="$old_deplibs $non_pic_objects"
9103809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test "$preload" = yes && test -f "$symfileobj"; then
9104809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_append oldobjs " $symfileobj"
9105809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
9106809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
9107809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	addlibs="$old_convenience"
9108809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
9109809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
9110809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test -n "$addlibs"; then
9111809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	gentop="$output_objdir/${outputname}x"
9112809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_append generated " $gentop"
9113809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
9114809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_extract_archives $gentop $addlibs
9115809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_append oldobjs " $func_extract_archives_result"
9116809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
9117809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
9118809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Do each command in the archive commands.
9119809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
9120809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	cmds=$old_archive_from_new_cmds
9121809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      else
9122809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
9123809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Add any objects from preloaded convenience libraries
9124809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test -n "$dlprefiles"; then
9125809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  gentop="$output_objdir/${outputname}x"
9126809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_append generated " $gentop"
9127809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
9128809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_extract_archives $gentop $dlprefiles
9129809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_append oldobjs " $func_extract_archives_result"
9130809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
9131809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
9132809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# POSIX demands no paths to be encoded in archives.  We have
9133809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# to avoid creating archives with duplicate basenames if we
9134809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# might have to extract them afterwards, e.g., when creating a
9135809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# static archive out of a convenience library, or when linking
9136809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# the entirety of a libtool archive into another (currently
9137809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# not supported by libtool).
9138809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if (for obj in $oldobjs
9139809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    do
9140809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      func_basename "$obj"
9141809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      $ECHO "$func_basename_result"
9142809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    done | sort | sort -uc >/dev/null 2>&1); then
9143809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  :
9144809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	else
9145809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  echo "copying selected object files to avoid basename conflicts..."
9146809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  gentop="$output_objdir/${outputname}x"
9147809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_append generated " $gentop"
9148809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_mkdir_p "$gentop"
9149809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  save_oldobjs=$oldobjs
9150809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  oldobjs=
9151809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  counter=1
9152809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  for obj in $save_oldobjs
9153809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  do
9154809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_basename "$obj"
9155809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    objbase="$func_basename_result"
9156809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    case " $oldobjs " in
9157809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    " ") oldobjs=$obj ;;
9158809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    *[\ /]"$objbase "*)
9159809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      while :; do
9160809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		# Make sure we don't pick an alternate name that also
9161809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		# overlaps.
9162809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		newobj=lt$counter-$objbase
9163809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		func_arith $counter + 1
9164809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		counter=$func_arith_result
9165809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		case " $oldobjs " in
9166809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		*[\ /]"$newobj "*) ;;
9167809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		*) if test ! -f "$gentop/$newobj"; then break; fi ;;
9168809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		esac
9169809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      done
9170809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
9171809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      func_append oldobjs " $gentop/$newobj"
9172809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      ;;
9173809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    *) func_append oldobjs " $obj" ;;
9174809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    esac
9175809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  done
9176809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
9177809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
9178809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	tool_oldlib=$func_to_tool_file_result
9179809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	eval cmds=\"$old_archive_cmds\"
9180809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
9181809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_len " $cmds"
9182809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	len=$func_len_result
9183809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
9184809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  cmds=$old_archive_cmds
9185809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	elif test -n "$archiver_list_spec"; then
9186809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_verbose "using command file archive linking..."
9187809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  for obj in $oldobjs
9188809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  do
9189809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_to_tool_file "$obj"
9190809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    $ECHO "$func_to_tool_file_result"
9191809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  done > $output_objdir/$libname.libcmd
9192809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_to_tool_file "$output_objdir/$libname.libcmd"
9193809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  oldobjs=" $archiver_list_spec$func_to_tool_file_result"
9194809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  cmds=$old_archive_cmds
9195809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	else
9196809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # the command line is too long to link in one step, link in parts
9197809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_verbose "using piecewise archive linking..."
9198809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  save_RANLIB=$RANLIB
9199809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  RANLIB=:
9200809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  objlist=
9201809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  concat_cmds=
9202809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  save_oldobjs=$oldobjs
9203809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  oldobjs=
9204809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # Is there a better way of finding the last object in the list?
9205809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  for obj in $save_oldobjs
9206809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  do
9207809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    last_oldobj=$obj
9208809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  done
9209809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  eval test_cmds=\"$old_archive_cmds\"
9210809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_len " $test_cmds"
9211809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  len0=$func_len_result
9212809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  len=$len0
9213809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  for obj in $save_oldobjs
9214809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  do
9215809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_len " $obj"
9216809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_arith $len + $func_len_result
9217809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    len=$func_arith_result
9218809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_append objlist " $obj"
9219809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    if test "$len" -lt "$max_cmd_len"; then
9220809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      :
9221809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    else
9222809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # the above command should be used before it gets too long
9223809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      oldobjs=$objlist
9224809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      if test "$obj" = "$last_oldobj" ; then
9225809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		RANLIB=$save_RANLIB
9226809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      fi
9227809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
9228809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
9229809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      objlist=
9230809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      len=$len0
9231809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    fi
9232809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  done
9233809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  RANLIB=$save_RANLIB
9234809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  oldobjs=$objlist
9235809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test "X$oldobjs" = "X" ; then
9236809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    eval cmds=\"\$concat_cmds\"
9237809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  else
9238809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
9239809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
9240809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
9241809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
9242809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_execute_cmds "$cmds" 'exit $?'
9243809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    done
9244809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
9245809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    test -n "$generated" && \
9246809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_show_eval "${RM}r$generated"
9247809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
9248809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # Now create the libtool archive.
9249809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    case $output in
9250809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    *.la)
9251809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      old_library=
9252809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      test "$build_old_libs" = yes && old_library="$libname.$libext"
9253809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_verbose "creating $output"
9254809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
9255809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Preserve any variables that may affect compiler behavior
9256809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      for var in $variables_saved_for_relink; do
9257809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if eval test -z \"\${$var+set}\"; then
9258809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
9259809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	elif eval var_value=\$$var; test -z "$var_value"; then
9260809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  relink_command="$var=; export $var; $relink_command"
9261809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	else
9262809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_quote_for_eval "$var_value"
9263809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
9264809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
9265809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      done
9266809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Quote the link command for shipping.
9267809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
9268809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
9269809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test "$hardcode_automatic" = yes ; then
9270809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	relink_command=
9271809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
9272809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
9273809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Only create the output if not a dry run.
9274809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      $opt_dry_run || {
9275809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	for installed in no yes; do
9276809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test "$installed" = yes; then
9277809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    if test -z "$install_libdir"; then
9278809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      break
9279809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    fi
9280809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    output="$output_objdir/$outputname"i
9281809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # Replace all uninstalled libtool libraries with the installed ones
9282809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    newdependency_libs=
9283809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    for deplib in $dependency_libs; do
9284809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      case $deplib in
9285809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      *.la)
9286809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		func_basename "$deplib"
9287809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		name="$func_basename_result"
9288809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		func_resolve_sysroot "$deplib"
9289809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
9290809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		test -z "$libdir" && \
9291809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  func_fatal_error "\`$deplib' is not a valid libtool archive"
9292809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name"
9293809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		;;
9294809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      -L*)
9295809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		func_stripname -L '' "$deplib"
9296809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		func_replace_sysroot "$func_stripname_result"
9297809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		func_append newdependency_libs " -L$func_replace_sysroot_result"
9298809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		;;
9299809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      -R*)
9300809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		func_stripname -R '' "$deplib"
9301809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		func_replace_sysroot "$func_stripname_result"
9302809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		func_append newdependency_libs " -R$func_replace_sysroot_result"
9303809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		;;
9304809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      *) func_append newdependency_libs " $deplib" ;;
9305809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      esac
9306809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    done
9307809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    dependency_libs="$newdependency_libs"
9308809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    newdlfiles=
9309809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
9310809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    for lib in $dlfiles; do
9311809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      case $lib in
9312809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      *.la)
9313809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	        func_basename "$lib"
9314809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		name="$func_basename_result"
9315809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
9316809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		test -z "$libdir" && \
9317809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  func_fatal_error "\`$lib' is not a valid libtool archive"
9318809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name"
9319809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		;;
9320809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      *) func_append newdlfiles " $lib" ;;
9321809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      esac
9322809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    done
9323809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    dlfiles="$newdlfiles"
9324809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    newdlprefiles=
9325809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    for lib in $dlprefiles; do
9326809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      case $lib in
9327809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      *.la)
9328809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		# Only pass preopened files to the pseudo-archive (for
9329809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		# eventual linking with the app. that links it) if we
9330809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		# didn't already link the preopened objects directly into
9331809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		# the library:
9332809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		func_basename "$lib"
9333809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		name="$func_basename_result"
9334809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
9335809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		test -z "$libdir" && \
9336809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		  func_fatal_error "\`$lib' is not a valid libtool archive"
9337809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name"
9338809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		;;
9339809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      esac
9340809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    done
9341809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    dlprefiles="$newdlprefiles"
9342809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  else
9343809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    newdlfiles=
9344809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    for lib in $dlfiles; do
9345809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      case $lib in
9346809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
9347809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		*) abs=`pwd`"/$lib" ;;
9348809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      esac
9349809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      func_append newdlfiles " $abs"
9350809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    done
9351809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    dlfiles="$newdlfiles"
9352809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    newdlprefiles=
9353809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    for lib in $dlprefiles; do
9354809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      case $lib in
9355809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
9356809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		*) abs=`pwd`"/$lib" ;;
9357809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      esac
9358809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      func_append newdlprefiles " $abs"
9359809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    done
9360809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    dlprefiles="$newdlprefiles"
9361809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
9362809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  $RM $output
9363809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # place dlname in correct position for cygwin
9364809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # In fact, it would be nice if we could use this code for all target
9365809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # systems that can't hard-code library paths into their executables
9366809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # and that have no shared library path variable independent of PATH,
9367809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # but it turns out we can't easily determine that from inspecting
9368809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # libtool variables, so we have to hard-code the OSs to which it
9369809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # applies here; at the moment, that means platforms that use the PE
9370809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # object format with DLL files.  See the long comment at the top of
9371809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # tests/bindir.at for full details.
9372809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  tdlname=$dlname
9373809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  case $host,$output,$installed,$module,$dlname in
9374809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll)
9375809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # If a -bindir argument was supplied, place the dll there.
9376809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      if test "x$bindir" != x ;
9377809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      then
9378809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		func_relative_path "$install_libdir" "$bindir"
9379809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		tdlname=$func_relative_path_result$dlname
9380809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      else
9381809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		# Otherwise fall back on heuristic.
9382809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats		tdlname=../bin/$dlname
9383809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      fi
9384809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      ;;
9385809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  esac
9386809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  $ECHO > $output "\
9387809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# $outputname - a libtool library file
9388809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
9389809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#
9390809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Please DO NOT delete this file!
9391809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# It is necessary for linking the library.
9392809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
9393809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# The name that we can dlopen(3).
9394809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsdlname='$tdlname'
9395809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
9396809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Names of this library.
9397809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatslibrary_names='$library_names'
9398809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
9399809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# The name of the static archive.
9400809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsold_library='$old_library'
9401809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
9402809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Linker flags that can not go in dependency_libs.
9403809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsinherited_linker_flags='$new_inherited_linker_flags'
9404809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
9405809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Libraries that this one depends upon.
9406809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsdependency_libs='$dependency_libs'
9407809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
9408809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Names of additional weak libraries provided by this library
9409809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsweak_library_names='$weak_libs'
9410809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
9411809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Version information for $libname.
9412809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatscurrent=$current
9413809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsage=$age
9414809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsrevision=$revision
9415809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
9416809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Is this an already installed library?
9417809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsinstalled=$installed
9418809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
9419809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Should we warn about portability when linking against -modules?
9420809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsshouldnotlink=$module
9421809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
9422809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Files to dlopen/dlpreopen
9423809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsdlopen='$dlfiles'
9424809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsdlpreopen='$dlprefiles'
9425809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
9426809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Directory that this library needs to be installed in:
9427809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatslibdir='$install_libdir'"
9428809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test "$installed" = no && test "$need_relink" = yes; then
9429809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    $ECHO >> $output "\
9430809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsrelink_command=\"$relink_command\""
9431809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
9432809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	done
9433809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      }
9434809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
9435809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Do a symbolic link so that the libtool archive can be found in
9436809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # LD_LIBRARY_PATH before the program is installed.
9437809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
9438809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      ;;
9439809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    esac
9440809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    exit $EXIT_SUCCESS
9441809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
9442809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
9443809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ test "$opt_mode" = link || test "$opt_mode" = relink; } &&
9444809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_mode_link ${1+"$@"}
9445809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
9446809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
9447809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_mode_uninstall arg...
9448809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_mode_uninstall ()
9449809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{
9450809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    $opt_debug
9451809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    RM="$nonopt"
9452809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    files=
9453809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    rmforce=
9454809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    exit_status=0
9455809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
9456809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # This variable tells wrapper scripts just to set variables rather
9457809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # than running their programs.
9458809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    libtool_install_magic="$magic"
9459809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
9460809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    for arg
9461809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    do
9462809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      case $arg in
9463809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      -f) func_append RM " $arg"; rmforce=yes ;;
9464809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      -*) func_append RM " $arg" ;;
9465809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      *) func_append files " $arg" ;;
9466809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      esac
9467809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    done
9468809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
9469809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    test -z "$RM" && \
9470809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_fatal_help "you must specify an RM program"
9471809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
9472809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    rmdirs=
9473809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
9474809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    for file in $files; do
9475809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_dirname "$file" "" "."
9476809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      dir="$func_dirname_result"
9477809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test "X$dir" = X.; then
9478809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	odir="$objdir"
9479809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      else
9480809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	odir="$dir/$objdir"
9481809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
9482809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_basename "$file"
9483809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      name="$func_basename_result"
9484809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      test "$opt_mode" = uninstall && odir="$dir"
9485809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
9486809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Remember odir for removal later, being careful to avoid duplicates
9487809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test "$opt_mode" = clean; then
9488809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	case " $rmdirs " in
9489809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *" $odir "*) ;;
9490809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *) func_append rmdirs " $odir" ;;
9491809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	esac
9492809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
9493809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
9494809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      # Don't error if the file doesn't exist and rm -f was used.
9495809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if { test -L "$file"; } >/dev/null 2>&1 ||
9496809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	 { test -h "$file"; } >/dev/null 2>&1 ||
9497809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	 test -f "$file"; then
9498809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	:
9499809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      elif test -d "$file"; then
9500809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	exit_status=1
9501809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	continue
9502809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      elif test "$rmforce" = yes; then
9503809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	continue
9504809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
9505809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
9506809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      rmfiles="$file"
9507809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
9508809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      case $name in
9509809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      *.la)
9510809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Possibly a libtool archive, so verify it.
9511809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if func_lalib_p "$file"; then
9512809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_source $dir/$name
9513809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
9514809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # Delete the libtool libraries and symlinks.
9515809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  for n in $library_names; do
9516809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_append rmfiles " $odir/$n"
9517809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  done
9518809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  test -n "$old_library" && func_append rmfiles " $odir/$old_library"
9519809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
9520809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  case "$opt_mode" in
9521809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  clean)
9522809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    case " $library_names " in
9523809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    *" $dlname "*) ;;
9524809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;;
9525809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    esac
9526809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i"
9527809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    ;;
9528809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  uninstall)
9529809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    if test -n "$library_names"; then
9530809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # Do each command in the postuninstall commands.
9531809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
9532809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    fi
9533809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
9534809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    if test -n "$old_library"; then
9535809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      # Do each command in the old_postuninstall commands.
9536809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
9537809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    fi
9538809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # FIXME: should reinstall the best remaining shared library.
9539809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    ;;
9540809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  esac
9541809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
9542809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
9543809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
9544809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      *.lo)
9545809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	# Possibly a libtool object, so verify it.
9546809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if func_lalib_p "$file"; then
9547809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
9548809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # Read the .lo file
9549809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  func_source $dir/$name
9550809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
9551809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # Add PIC object to the list of files to remove.
9552809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test -n "$pic_object" &&
9553809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	     test "$pic_object" != none; then
9554809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_append rmfiles " $dir/$pic_object"
9555809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
9556809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
9557809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # Add non-PIC object to the list of files to remove.
9558809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if test -n "$non_pic_object" &&
9559809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	     test "$non_pic_object" != none; then
9560809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_append rmfiles " $dir/$non_pic_object"
9561809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
9562809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
9563809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
9564809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
9565809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      *)
9566809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	if test "$opt_mode" = clean ; then
9567809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  noexename=$name
9568809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  case $file in
9569809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  *.exe)
9570809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_stripname '' '.exe' "$file"
9571809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    file=$func_stripname_result
9572809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_stripname '' '.exe' "$name"
9573809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    noexename=$func_stripname_result
9574809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # $file with .exe has already been added to rmfiles,
9575809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # add $file without .exe
9576809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_append rmfiles " $file"
9577809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    ;;
9578809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  esac
9579809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  # Do a test to see if this is a libtool program.
9580809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  if func_ltwrapper_p "$file"; then
9581809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    if func_ltwrapper_executable_p "$file"; then
9582809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      func_ltwrapper_scriptname "$file"
9583809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      relink_command=
9584809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      func_source $func_ltwrapper_scriptname_result
9585809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      func_append rmfiles " $func_ltwrapper_scriptname_result"
9586809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    else
9587809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      relink_command=
9588809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      func_source $dir/$noexename
9589809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    fi
9590809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
9591809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # note $name still contains .exe if it was in $file originally
9592809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    # as does the version of $file that was added into $rmfiles
9593809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    func_append rmfiles " $odir/$name $odir/${name}S.${objext}"
9594809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    if test "$fast_install" = yes && test -n "$relink_command"; then
9595809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      func_append rmfiles " $odir/lt-$name"
9596809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    fi
9597809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    if test "X$noexename" != "X$name" ; then
9598809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	      func_append rmfiles " $odir/lt-${noexename}.c"
9599809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	    fi
9600809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	  fi
9601809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	fi
9602809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	;;
9603809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      esac
9604809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      func_show_eval "$RM $rmfiles" 'exit_status=1'
9605809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    done
9606809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
9607809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    # Try to remove the ${objdir}s in the directories where we deleted files
9608809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    for dir in $rmdirs; do
9609809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      if test -d "$dir"; then
9610809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats	func_show_eval "rmdir $dir >/dev/null 2>&1"
9611809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats      fi
9612809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    done
9613809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
9614809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    exit $exit_status
9615809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
9616809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
9617809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } &&
9618809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats    func_mode_uninstall ${1+"$@"}
9619809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
9620809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatstest -z "$opt_mode" && {
9621809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  help="$generic_help"
9622809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  func_fatal_help "you must specify a MODE"
9623809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}
9624809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
9625809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatstest -z "$exec_cmd" && \
9626809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  func_fatal_help "invalid operation mode \`$opt_mode'"
9627809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
9628809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsif test -n "$exec_cmd"; then
9629809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  eval exec "$exec_cmd"
9630809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats  exit $EXIT_FAILURE
9631809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfi
9632809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
9633809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsexit $exit_status
9634809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
9635809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
9636809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# The TAGs below are defined such that we never get into a situation
9637809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# in which we disable both kinds of libraries.  Given conflicting
9638809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# choices, we go for a static library, that is the most portable,
9639809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# since we can't tell whether shared libraries were disabled because
9640809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# the user asked for that or because the platform doesn't support
9641809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# them.  This is particularly important on AIX, because we don't
9642809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# support having both static and shared libraries enabled at the same
9643809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# time on that platform, so we default to a shared-only configuration.
9644809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# If a disable-shared tag is given, we'll fallback to a static-only
9645809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# configuration.  But we'll never go from static-only to shared-only.
9646809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
9647809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
9648809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsbuild_libtool_libs=no
9649809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsbuild_old_libs=yes
9650809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# ### END LIBTOOL TAG CONFIG: disable-shared
9651809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
9652809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# ### BEGIN LIBTOOL TAG CONFIG: disable-static
9653809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsbuild_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
9654809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# ### END LIBTOOL TAG CONFIG: disable-static
9655809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
9656809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Local Variables:
9657809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# mode:shell-script
9658809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# sh-indentation:2
9659809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# End:
9660809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# vi:sw=2
9661809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats
9662