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