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