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