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