1fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# libtool (GNU libtool) 2.4.2
3fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
4fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
7fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# This is free software; see the source for copying conditions.  There is NO
8fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
9fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
10fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# GNU Libtool is free software; you can redistribute it and/or modify
11fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# it under the terms of the GNU General Public License as published by
12fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# the Free Software Foundation; either version 2 of the License, or
13fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# (at your option) any later version.
14fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#
15fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# As a special exception to the GNU General Public License,
16fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# if you distribute this file as part of a program or library that
17fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# is built using GNU Libtool, you may include this file under the
18fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# same distribution terms that you use for the rest of that program.
19fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#
20fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# GNU Libtool is distributed in the hope that it will be useful, but
21fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# WITHOUT ANY WARRANTY; without even the implied warranty of
22fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
23fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# General Public License for more details.
24fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#
25fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# You should have received a copy of the GNU General Public License
26fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# along with GNU Libtool; see the file COPYING.  If not, a copy
27fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# can be downloaded from http://www.gnu.org/licenses/gpl.html,
28fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# or obtained by writing to the Free Software Foundation, Inc.,
29fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
30fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
31fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Usage: $progname [OPTION]... [MODE-ARG]...
32fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#
33fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Provide generalized library-building support services.
34fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#
3564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#       --config             show all configuration variables
3664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#       --debug              enable verbose shell tracing
3764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#   -n, --dry-run            display commands without modifying any files
3864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#       --features           display basic configuration information and exit
3964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#       --mode=MODE          use operation mode MODE
4064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#       --preserve-dup-deps  don't remove duplicate dependency libraries
4164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#       --quiet, --silent    don't print informational messages
4264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#       --no-quiet, --no-silent
4364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#                            print informational messages (default)
4464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#       --no-warn            don't display warning messages
4564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#       --tag=TAG            use configuration variables from tag TAG
4664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#   -v, --verbose            print more informational messages than default
4764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#       --no-verbose         don't print the extra informational messages
4864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#       --version            print version information
4964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#   -h, --help, --help-all   print short, long, or detailed help message
50fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#
51fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# MODE must be one of the following:
52fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#
5364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#         clean              remove files from the build directory
5464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#         compile            compile a source file into a libtool object
5564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#         execute            automatically set library path, then run a program
5664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#         finish             complete the installation of libtool libraries
5764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#         install            install libraries or executables
5864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#         link               create a library or an executable
5964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#         uninstall          remove libraries from an installed directory
60fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#
6164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# MODE-ARGS vary depending on the MODE.  When passed as first option,
6264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that.
63fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
64fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#
65fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# When reporting a bug, please describe a test case to reproduce it and
66fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# include the following information:
67fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#
6864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#         host-triplet:	$host
6964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#         shell:		$SHELL
7064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#         compiler:		$LTCC
7164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#         compiler flags:		$LTCFLAGS
7264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#         linker:		$LD (gnu? $with_gnu_ld)
730ddac1f3791efefb2cffdb425f0c600feb7a47e6Jeff Davidson#         $progname:	(GNU libtool) 2.4.2 Debian-2.4.2-1.7ubuntu1
7464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#         automake:	$automake_version
7564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#         autoconf:	$autoconf_version
76fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#
77fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Report bugs to <bug-libtool@gnu.org>.
7864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# GNU libtool home page: <http://www.gnu.org/software/libtool/>.
7964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# General help using GNU software: <http://www.gnu.org/gethelp/>.
80fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8164d8d8f89050c5ada85341f967af391f4716a7cbUlas KirazciPROGRAM=libtool
82fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavillePACKAGE=libtool
830ddac1f3791efefb2cffdb425f0c600feb7a47e6Jeff DavidsonVERSION="2.4.2 Debian-2.4.2-1.7ubuntu1"
84fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleTIMESTAMP=""
8564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcipackage_revision=1.3337
86fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
87fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Be Bourne compatible
88fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
89fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  emulate sh
90fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  NULLCMD=:
91fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
92fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  # is contrary to our usage.  Disable this feature.
93fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  alias -g '${1+"$@"}'='"$@"'
94fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  setopt NO_GLOB_SUBST
95fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleelse
96fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
97fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefi
98fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleBIN_SH=xpg4; export BIN_SH # for Tru64
99fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleDUALCASE=1; export DUALCASE # for MKS sh
100fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
10164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# A function that is used when there is no print builtin or printf.
10264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_fallback_echo ()
10364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{
10464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  eval 'cat <<_LTECHO_EOF
10564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci$1
10664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci_LTECHO_EOF'
10764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci}
10864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
109fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# NLS nuisances: We save the old values to restore during execute mode.
110fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillelt_user_locale=
111fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillelt_safe_locale=
112fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefor lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
113fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilledo
114fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  eval "if test \"\${$lt_var+set}\" = set; then
115fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville          save_$lt_var=\$$lt_var
116fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville          $lt_var=C
117fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  export $lt_var
118fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
119fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
120fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi"
121fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilledone
12264d8d8f89050c5ada85341f967af391f4716a7cbUlas KirazciLC_ALL=C
12364d8d8f89050c5ada85341f967af391f4716a7cbUlas KirazciLANGUAGE=C
12464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciexport LANGUAGE LC_ALL
125fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
126fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville$lt_unset CDPATH
127fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
128fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
12964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
13064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# is ksh but when the shell is invoked as "sh" and the current value of
13164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# the _XPG environment variable is not equal to 1 (one), the special
13264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# positional parameter $0, within a function call, is the name of the
13364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# function.
13464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciprogpath="$0"
135fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
136fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
137fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
138fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville: ${CP="cp -f"}
13964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcitest "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
140fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville: ${MAKE="make"}
141fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville: ${MKDIR="mkdir"}
142fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville: ${MV="mv -f"}
143fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville: ${RM="rm -f"}
144fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
145fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville: ${Xsed="$SED -e 1s/^X//"}
146fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
147fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Global variables:
148fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleEXIT_SUCCESS=0
149fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleEXIT_FAILURE=1
150fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleEXIT_MISMATCH=63  # $? = 63 is used to indicate version mismatch to missing.
151fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleEXIT_SKIP=77	  # $? = 77 is used to indicate a skipped test to automake.
152fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
153fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleexit_status=$EXIT_SUCCESS
154fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
155fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Make sure IFS has a sensible default
156fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillelt_nl='
157fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville'
158fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleIFS=" 	$lt_nl"
159fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
160fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilledirname="s,/[^/]*$,,"
161fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillebasename="s,^.*/,,"
162fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
16364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_dirname file append nondir_replacement
16464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
16564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# otherwise set result to NONDIR_REPLACEMENT.
16664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_dirname ()
16764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{
16864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
16964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    if test "X$func_dirname_result" = "X${1}"; then
17064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      func_dirname_result="${3}"
17164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    else
17264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      func_dirname_result="$func_dirname_result${2}"
17364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    fi
17464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} # func_dirname may be replaced by extended shell implementation
17564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
17664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
17764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_basename file
17864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_basename ()
17964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{
18064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_basename_result=`$ECHO "${1}" | $SED "$basename"`
18164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} # func_basename may be replaced by extended shell implementation
18264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
18364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
184fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_dirname_and_basename file append nondir_replacement
185fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# perform func_basename and func_dirname in a single function
186fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# call:
187fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#   dirname:  Compute the dirname of FILE.  If nonempty,
188fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#             add APPEND to the result, otherwise set result
189fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#             to NONDIR_REPLACEMENT.
190fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#             value returned in "$func_dirname_result"
191fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#   basename: Compute filename of FILE.
192fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#             value retuned in "$func_basename_result"
193fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Implementation must be kept synchronized with func_dirname
194fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# and func_basename. For efficiency, we do not delegate to
195fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# those functions but instead duplicate the functionality here.
196fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_dirname_and_basename ()
197fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{
19864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    # Extract subdirectory from the argument.
19964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"`
20064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    if test "X$func_dirname_result" = "X${1}"; then
20164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      func_dirname_result="${3}"
20264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    else
20364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      func_dirname_result="$func_dirname_result${2}"
20464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    fi
20564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_basename_result=`$ECHO "${1}" | $SED -e "$basename"`
20664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} # func_dirname_and_basename may be replaced by extended shell implementation
20764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
20864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
20964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_stripname prefix suffix name
21064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# strip PREFIX and SUFFIX off of NAME.
21164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# PREFIX and SUFFIX must not contain globbing or regex special
21264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# characters, hashes, percent signs, but SUFFIX may contain a leading
21364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# dot (in which case that matches only a dot).
21464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_strip_suffix prefix name
21564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_stripname ()
21664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{
21764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    case ${2} in
21864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
21964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      *)  func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
22064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    esac
22164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} # func_stripname may be replaced by extended shell implementation
22264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
22364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
22464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# These SED scripts presuppose an absolute path with a trailing slash.
22564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcipathcar='s,^/\([^/]*\).*$,\1,'
22664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcipathcdr='s,^/[^/]*,,'
22764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciremovedotparts=':dotsl
22864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		s@/\./@/@g
22964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		t dotsl
23064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		s,/\.$,/,'
23164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcicollapseslashes='s@/\{1,\}@/@g'
23264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifinalslash='s,/*$,/,'
23364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
23464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_normal_abspath PATH
23564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Remove doubled-up and trailing slashes, "." path components,
23664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# and cancel out any ".." path components in PATH after making
23764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# it an absolute path.
23864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#             value returned in "$func_normal_abspath_result"
23964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_normal_abspath ()
24064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{
24164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  # Start from root dir and reassemble the path.
24264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  func_normal_abspath_result=
24364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  func_normal_abspath_tpath=$1
24464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  func_normal_abspath_altnamespace=
24564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  case $func_normal_abspath_tpath in
24664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    "")
24764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      # Empty path, that just means $cwd.
24864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      func_stripname '' '/' "`pwd`"
24964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      func_normal_abspath_result=$func_stripname_result
25064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      return
25164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    ;;
25264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    # The next three entries are used to spot a run of precisely
25364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    # two leading slashes without using negated character classes;
25464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    # we take advantage of case's first-match behaviour.
25564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    ///*)
25664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      # Unusual form of absolute path, do nothing.
25764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    ;;
25864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    //*)
25964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      # Not necessarily an ordinary path; POSIX reserves leading '//'
26064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      # and for example Cygwin uses it to access remote file shares
26164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      # over CIFS/SMB, so we conserve a leading double slash if found.
26264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      func_normal_abspath_altnamespace=/
26364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    ;;
26464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    /*)
26564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      # Absolute path, do nothing.
26664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    ;;
26764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    *)
26864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      # Relative path, prepend $cwd.
26964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath
27064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    ;;
27164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  esac
27264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  # Cancel out all the simple stuff to save iterations.  We also want
27364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  # the path to end with a slash for ease of parsing, so make sure
27464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  # there is one (and only one) here.
27564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
27664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"`
27764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  while :; do
27864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    # Processed it all yet?
27964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    if test "$func_normal_abspath_tpath" = / ; then
28064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      # If we ascended to the root using ".." the result may be empty now.
28164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      if test -z "$func_normal_abspath_result" ; then
28264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        func_normal_abspath_result=/
28364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      fi
28464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      break
28564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    fi
28664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \
28764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        -e "$pathcar"`
28864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
28964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        -e "$pathcdr"`
29064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    # Figure out what to do with it
29164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    case $func_normal_abspath_tcomponent in
29264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      "")
29364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        # Trailing empty path component, ignore it.
29464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      ;;
29564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      ..)
29664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        # Parent dir; strip last assembled component from result.
29764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        func_dirname "$func_normal_abspath_result"
29864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        func_normal_abspath_result=$func_dirname_result
29964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      ;;
30064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      *)
30164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        # Actual path component, append it.
30264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent
30364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      ;;
30464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    esac
30564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  done
30664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  # Restore leading double-slash if one was found on entry.
30764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result
308fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
309fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
31064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_relative_path SRCDIR DSTDIR
31164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# generates a relative path from SRCDIR to DSTDIR, with a trailing
31264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# slash if non-empty, suitable for immediately appending a filename
31364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# without needing to append a separator.
31464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#             value returned in "$func_relative_path_result"
31564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_relative_path ()
31664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{
31764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  func_relative_path_result=
31864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  func_normal_abspath "$1"
31964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  func_relative_path_tlibdir=$func_normal_abspath_result
32064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  func_normal_abspath "$2"
32164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  func_relative_path_tbindir=$func_normal_abspath_result
32264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
32364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  # Ascend the tree starting from libdir
32464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  while :; do
32564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    # check if we have found a prefix of bindir
32664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    case $func_relative_path_tbindir in
32764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      $func_relative_path_tlibdir)
32864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        # found an exact match
32964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        func_relative_path_tcancelled=
33064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        break
33164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        ;;
33264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      $func_relative_path_tlibdir*)
33364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        # found a matching prefix
33464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir"
33564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        func_relative_path_tcancelled=$func_stripname_result
33664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        if test -z "$func_relative_path_result"; then
33764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci          func_relative_path_result=.
33864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        fi
33964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        break
34064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        ;;
34164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      *)
34264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        func_dirname $func_relative_path_tlibdir
34364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        func_relative_path_tlibdir=${func_dirname_result}
34464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        if test "x$func_relative_path_tlibdir" = x ; then
34564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci          # Have to descend all the way to the root!
34664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci          func_relative_path_result=../$func_relative_path_result
34764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci          func_relative_path_tcancelled=$func_relative_path_tbindir
34864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci          break
34964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        fi
35064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        func_relative_path_result=../$func_relative_path_result
35164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        ;;
35264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    esac
35364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  done
354fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
35564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  # Now calculate path; take care to avoid doubling-up slashes.
35664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  func_stripname '' '/' "$func_relative_path_result"
35764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  func_relative_path_result=$func_stripname_result
35864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  func_stripname '/' '/' "$func_relative_path_tcancelled"
35964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  if test "x$func_stripname_result" != x ; then
36064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_relative_path_result=${func_relative_path_result}/${func_stripname_result}
36164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  fi
36264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
36364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  # Normalisation. If bindir is libdir, return empty string,
36464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  # else relative path ending with a slash; either way, target
36564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  # file name can be directly appended.
36664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  if test ! -z "$func_relative_path_result"; then
36764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_stripname './' '' "$func_relative_path_result/"
36864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_relative_path_result=$func_stripname_result
36964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  fi
37064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci}
371fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
372fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# The name of this program:
373fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_dirname_and_basename "$progpath"
374fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleprogname=$func_basename_result
375fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
376fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Make sure we have an absolute path for reexecution:
377fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillecase $progpath in
378fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  [\\/]*|[A-Za-z]:\\*) ;;
379fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  *[\\/]*)
380fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville     progdir=$func_dirname_result
381fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville     progdir=`cd "$progdir" && pwd`
382fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville     progpath="$progdir/$progname"
383fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville     ;;
384fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  *)
385fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville     save_IFS="$IFS"
38664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci     IFS=${PATH_SEPARATOR-:}
387fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville     for progdir in $PATH; do
388fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville       IFS="$save_IFS"
389fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville       test -x "$progdir/$progname" && break
390fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville     done
391fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville     IFS="$save_IFS"
392fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville     test -n "$progdir" || progdir=`pwd`
393fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville     progpath="$progdir/$progname"
394fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville     ;;
395fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleesac
396fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
397fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Sed substitution that helps us do robust quoting.  It backslashifies
398fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# metacharacters that are still active within double-quoted strings.
399fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleXsed="${SED}"' -e 1s/^X//'
400fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillesed_quote_subst='s/\([`"$\\]\)/\\\1/g'
401fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
402fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Same as above, but do not quote variable references.
403fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilledouble_quote_subst='s/\(["`\\]\)/\\\1/g'
404fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
40564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Sed substitution that turns a string into a regex matching for the
40664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# string literally.
40764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcised_make_literal_regex='s,[].[^$\\*\/],\\&,g'
40864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
40964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Sed substitution that converts a w32 file name or path
41064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# which contains forward slashes, into one that contains
41164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# (escaped) backslashes.  A very naive implementation.
41264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcilt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
41364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
414fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Re-`\' parameter expansions in output of double_quote_subst that were
415fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# `\'-ed in input to the same.  If an odd number of `\' preceded a '$'
416fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# in input to double_quote_subst, that '$' was protected from expansion.
417fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Since each input `\' is now two `\'s, look for any number of runs of
418fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# four `\'s followed by two `\'s and then a '$'.  `\' that '$'.
419fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillebs='\\'
420fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillebs2='\\\\'
421fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillebs4='\\\\\\\\'
422fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilledollar='\$'
423fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillesed_double_backslash="\
424fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  s/$bs4/&\\
425fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville/g
426fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  s/^$bs2$dollar/$bs&/
427fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
428fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  s/\n//g"
429fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
430fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Standard options:
431fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleopt_dry_run=false
432fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleopt_help=false
433fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleopt_quiet=false
434fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleopt_verbose=false
435fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleopt_warning=:
436fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
437fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_echo arg...
438fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Echo program name prefixed message, along with the current mode
439fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# name if it has been set yet.
440fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_echo ()
441fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{
44264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    $ECHO "$progname: ${opt_mode+$opt_mode: }$*"
443fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
444fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
445fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_verbose arg...
446fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Echo program name prefixed message in verbose mode only.
447fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_verbose ()
448fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{
449fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    $opt_verbose && func_echo ${1+"$@"}
450fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
451fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    # A bug in bash halts the script if the last line of a function
452fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    # fails when set -e is in force, so we need another command to
453fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    # work around that:
454fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    :
455fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
456fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
45764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_echo_all arg...
45864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Invoke $ECHO with all args, space-separated.
45964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_echo_all ()
46064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{
46164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    $ECHO "$*"
46264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci}
46364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
464fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_error arg...
465fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Echo program name prefixed message to standard error.
466fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_error ()
467fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{
46864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2
469fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
470fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
471fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_warning arg...
472fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Echo program name prefixed warning message to standard error.
473fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_warning ()
474fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{
47564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2
476fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
477fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    # bash bug again:
478fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    :
479fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
480fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
481fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_fatal_error arg...
482fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Echo program name prefixed message to standard error, and exit.
483fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_fatal_error ()
484fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{
485fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    func_error ${1+"$@"}
486fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    exit $EXIT_FAILURE
487fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
488fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
489fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_fatal_help arg...
490fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Echo program name prefixed message to standard error, followed by
491fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# a help hint, and exit.
492fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_fatal_help ()
493fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{
494fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    func_error ${1+"$@"}
495fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    func_fatal_error "$help"
496fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
497fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillehelp="Try \`$progname --help' for more information."  ## default
498fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
499fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
500fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_grep expression filename
501fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Check whether EXPRESSION matches any line of FILENAME, without output.
502fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_grep ()
503fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{
504fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    $GREP "$1" "$2" >/dev/null 2>&1
505fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
506fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
507fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
508fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_mkdir_p directory-path
509fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Make sure the entire path to DIRECTORY-PATH is available.
510fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_mkdir_p ()
511fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{
512fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    my_directory_path="$1"
513fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    my_dir_list=
514fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
515fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
516fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
517fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # Protect directory names starting with `-'
518fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      case $my_directory_path in
519fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        -*) my_directory_path="./$my_directory_path" ;;
520fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      esac
521fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
522fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # While some portion of DIR does not yet exist...
523fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      while test ! -d "$my_directory_path"; do
524fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        # ...make a list in topmost first order.  Use a colon delimited
525fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# list incase some portion of path contains whitespace.
526fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        my_dir_list="$my_directory_path:$my_dir_list"
527fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
528fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        # If the last portion added has no slash in it, the list is done
529fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        case $my_directory_path in */*) ;; *) break ;; esac
530fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
531fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        # ...otherwise throw away the child directory and loop
53264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"`
533fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      done
53464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'`
535fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
536fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      save_mkdir_p_IFS="$IFS"; IFS=':'
537fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      for my_dir in $my_dir_list; do
538fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	IFS="$save_mkdir_p_IFS"
539fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        # mkdir can fail with a `File exist' error if two processes
540fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        # try to create one of the directories concurrently.  Don't
541fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        # stop in that case!
542fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        $MKDIR "$my_dir" 2>/dev/null || :
543fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      done
544fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      IFS="$save_mkdir_p_IFS"
545fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
546fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # Bail out if we (or some other process) failed to create a directory.
547fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      test -d "$my_directory_path" || \
548fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        func_fatal_error "Failed to create \`$1'"
549fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    fi
550fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
551fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
552fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
553fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_mktempdir [string]
554fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Make a temporary directory that won't clash with other running
555fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# libtool processes, and avoids race conditions if possible.  If
556fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# given, STRING is the basename for that directory.
557fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_mktempdir ()
558fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{
559fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    my_template="${TMPDIR-/tmp}/${1-$progname}"
560fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
561fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    if test "$opt_dry_run" = ":"; then
562fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # Return a directory name, but don't create it in dry-run mode
563fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      my_tmpdir="${my_template}-$$"
564fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    else
565fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
566fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # If mktemp works, use that first and foremost
567fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
568fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
569fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if test ! -d "$my_tmpdir"; then
570fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        # Failing that, at least try and use $RANDOM to avoid a race
571fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        my_tmpdir="${my_template}-${RANDOM-0}$$"
572fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
573fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        save_mktempdir_umask=`umask`
574fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        umask 0077
575fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        $MKDIR "$my_tmpdir"
576fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        umask $save_mktempdir_umask
577fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
578fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
579fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # If we're not in dry-run mode, bomb out on failure
580fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      test -d "$my_tmpdir" || \
581fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
582fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    fi
583fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
58464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    $ECHO "$my_tmpdir"
585fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
586fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
587fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
588fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_quote_for_eval arg
589fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Aesthetically quote ARG to be evaled later.
590fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
591fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# is double-quoted, suitable for a subsequent eval, whereas
592fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
593fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# which are still active within double quotes backslashified.
594fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_quote_for_eval ()
595fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{
596fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    case $1 in
597fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      *[\\\`\"\$]*)
59864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;;
599fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      *)
600fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        func_quote_for_eval_unquoted_result="$1" ;;
601fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    esac
602fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
603fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    case $func_quote_for_eval_unquoted_result in
604fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # Double-quote args containing shell metacharacters to delay
605fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # word splitting, command substitution and and variable
606fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # expansion for a subsequent eval.
607fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # Many Bourne shells cannot handle close brackets correctly
608fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # in scan sets, so we specify it separately.
609fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
610fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
611fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        ;;
612fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      *)
613fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
614fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    esac
615fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
616fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
617fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
618fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_quote_for_expand arg
619fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Aesthetically quote ARG to be evaled later; same as above,
620fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# but do not quote variable references.
621fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_quote_for_expand ()
622fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{
623fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    case $1 in
624fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      *[\\\`\"]*)
62564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	my_arg=`$ECHO "$1" | $SED \
626fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
627fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      *)
628fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        my_arg="$1" ;;
629fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    esac
630fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
631fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    case $my_arg in
632fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # Double-quote args containing shell metacharacters to delay
633fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # word splitting and command substitution for a subsequent eval.
634fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # Many Bourne shells cannot handle close brackets correctly
635fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # in scan sets, so we specify it separately.
636fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
637fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        my_arg="\"$my_arg\""
638fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        ;;
639fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    esac
640fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
641fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    func_quote_for_expand_result="$my_arg"
642fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
643fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
644fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
645fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_show_eval cmd [fail_exp]
646fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
647fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
648fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# is given, then evaluate it.
649fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_show_eval ()
650fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{
651fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    my_cmd="$1"
652fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    my_fail_exp="${2-:}"
653fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
654fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    ${opt_silent-false} || {
655fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      func_quote_for_expand "$my_cmd"
656fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      eval "func_echo $func_quote_for_expand_result"
657fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    }
658fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
659fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    if ${opt_dry_run-false}; then :; else
660fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      eval "$my_cmd"
661fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      my_status=$?
662fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if test "$my_status" -eq 0; then :; else
663fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	eval "(exit $my_status); $my_fail_exp"
664fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
665fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    fi
666fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
667fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
668fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
669fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_show_eval_locale cmd [fail_exp]
670fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
671fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
672fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# is given, then evaluate it.  Use the saved locale for evaluation.
673fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_show_eval_locale ()
674fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{
675fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    my_cmd="$1"
676fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    my_fail_exp="${2-:}"
677fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
678fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    ${opt_silent-false} || {
679fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      func_quote_for_expand "$my_cmd"
680fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      eval "func_echo $func_quote_for_expand_result"
681fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    }
682fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
683fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    if ${opt_dry_run-false}; then :; else
684fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      eval "$lt_user_locale
685fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    $my_cmd"
686fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      my_status=$?
687fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      eval "$lt_safe_locale"
688fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if test "$my_status" -eq 0; then :; else
689fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	eval "(exit $my_status); $my_fail_exp"
690fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
691fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    fi
692fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
693fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
69464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_tr_sh
69564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Turn $1 into a string suitable for a shell variable name.
69664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Result is stored in $func_tr_sh_result.  All characters
69764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# not in the set a-zA-Z0-9_ are replaced with '_'. Further,
69864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# if $1 begins with a digit, a '_' is prepended as well.
69964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_tr_sh ()
70064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{
70164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  case $1 in
70264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  [0-9]* | *[!a-zA-Z0-9_]*)
70364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'`
70464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    ;;
70564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  * )
70664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_tr_sh_result=$1
70764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    ;;
70864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  esac
70964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci}
710fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
711fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
712fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_version
713fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Echo version message to standard output and exit.
714fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_version ()
715fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{
71664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    $opt_debug
71764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
71864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    $SED -n '/(C)/!b go
71964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	:more
72064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	/\./!{
72164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  N
72264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  s/\n# / /
72364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  b more
72464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	}
72564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	:go
72664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	/^# '$PROGRAM' (GNU /,/# warranty; / {
727fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        s/^# //
728fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	s/^# *$//
729fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
730fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        p
731fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville     }' < "$progpath"
732fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville     exit $?
733fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
734fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
735fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_usage
736fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Echo short help message to standard output and exit.
737fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_usage ()
738fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{
73964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    $opt_debug
74064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
74164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    $SED -n '/^# Usage:/,/^#  *.*--help/ {
742fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        s/^# //
743fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	s/^# *$//
744fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	s/\$progname/'$progname'/
745fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	p
746fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    }' < "$progpath"
74764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    echo
748fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    $ECHO "run \`$progname --help | more' for full usage"
749fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    exit $?
750fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
751fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
75264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_help [NOEXIT]
75364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Echo long help message to standard output and exit,
75464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# unless 'noexit' is passed as argument.
755fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_help ()
756fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{
75764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    $opt_debug
75864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
759fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    $SED -n '/^# Usage:/,/# Report bugs to/ {
76064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	:print
761fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        s/^# //
762fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	s/^# *$//
763fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	s*\$progname*'$progname'*
764fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	s*\$host*'"$host"'*
765fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	s*\$SHELL*'"$SHELL"'*
766fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	s*\$LTCC*'"$LTCC"'*
767fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	s*\$LTCFLAGS*'"$LTCFLAGS"'*
768fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	s*\$LD*'"$LD"'*
769fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	s/\$with_gnu_ld/'"$with_gnu_ld"'/
77064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/
77164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/
772fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	p
77364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	d
77464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci     }
77564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci     /^# .* home page:/b print
77664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci     /^# General help using/b print
77764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci     ' < "$progpath"
77864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    ret=$?
77964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    if test -z "$1"; then
78064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      exit $ret
78164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    fi
782fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
783fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
784fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_missing_arg argname
785fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Echo program name prefixed message to standard error and set global
786fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# exit_cmd.
787fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_missing_arg ()
788fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{
78964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    $opt_debug
79064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
79164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_error "missing argument for $1."
792fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    exit_cmd=exit
793fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
794fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
795fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
79664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_split_short_opt shortopt
79764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Set func_split_short_opt_name and func_split_short_opt_arg shell
79864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# variables after splitting SHORTOPT after the 2nd character.
79964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_split_short_opt ()
80064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{
80164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    my_sed_short_opt='1s/^\(..\).*$/\1/;q'
80264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    my_sed_short_rest='1s/^..\(.*\)$/\1/;q'
803fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
80464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"`
80564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"`
80664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} # func_split_short_opt may be replaced by extended shell implementation
80764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
80864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
80964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_split_long_opt longopt
81064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Set func_split_long_opt_name and func_split_long_opt_arg shell
81164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# variables after splitting LONGOPT at the `=' sign.
81264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_split_long_opt ()
81364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{
81464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q'
81564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    my_sed_long_arg='1s/^--[^=]*=//'
81664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
81764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"`
81864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"`
81964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} # func_split_long_opt may be replaced by extended shell implementation
82064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
82164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciexit_cmd=:
822fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
823fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
824fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
825fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
826fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
827fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillemagic="%%%MAGIC variable%%%"
828fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillemagic_exe="%%%MAGIC EXE variable%%%"
829fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
830fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Global variables.
831fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillenonopt=
832fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillepreserve_args=
833fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillelo2o="s/\\.lo\$/.${objext}/"
834fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleo2lo="s/\\.${objext}\$/.lo/"
835fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleextracted_archives=
836fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleextracted_serial=0
837fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
838fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# If this variable is set in any of the actions, the command in it
839fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# will be execed at the end.  This prevents here-documents from being
840fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# left over by shells.
841fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleexec_cmd=
842fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
84364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_append var value
84464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Append VALUE to the end of shell variable VAR.
84564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_append ()
84664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{
84764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    eval "${1}=\$${1}\${2}"
84864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} # func_append may be replaced by extended shell implementation
84964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
85064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_append_quoted var value
85164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Quote VALUE and append to the end of shell variable VAR, separated
85264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# by a space.
85364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_append_quoted ()
85464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{
85564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_quote_for_eval "${2}"
85664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    eval "${1}=\$${1}\\ \$func_quote_for_eval_result"
85764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} # func_append_quoted may be replaced by extended shell implementation
85864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
85964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
86064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_arith arithmetic-term...
86164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_arith ()
86264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{
86364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_arith_result=`expr "${@}"`
86464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} # func_arith may be replaced by extended shell implementation
86564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
86664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
86764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_len string
86864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# STRING may not start with a hyphen.
86964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_len ()
87064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{
87164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len`
87264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} # func_len may be replaced by extended shell implementation
87364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
87464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
87564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_lo2o object
87664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_lo2o ()
87764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{
87864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
87964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} # func_lo2o may be replaced by extended shell implementation
88064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
88164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
88264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_xform libobj-or-source
88364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_xform ()
88464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{
88564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
88664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci} # func_xform may be replaced by extended shell implementation
88764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
88864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
889fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_fatal_configuration arg...
890fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Echo program name prefixed message to standard error, followed by
891fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# a configuration failure hint, and exit.
892fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_fatal_configuration ()
893fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{
894fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    func_error ${1+"$@"}
895fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    func_error "See the $PACKAGE documentation for more information."
896fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    func_fatal_error "Fatal configuration error."
897fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
898fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
899fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
900fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_config
901fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Display the configuration for all the tags in this script.
902fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_config ()
903fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{
904fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    re_begincf='^# ### BEGIN LIBTOOL'
905fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    re_endcf='^# ### END LIBTOOL'
906fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
907fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    # Default configuration.
908fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
909fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
910fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    # Now print the configurations for the tags.
911fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    for tagname in $taglist; do
912fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
913fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    done
914fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
915fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    exit $?
916fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
917fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
918fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_features
919fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Display the features supported by this script.
920fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_features ()
921fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{
92264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    echo "host: $host"
923fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    if test "$build_libtool_libs" = yes; then
92464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      echo "enable shared libraries"
925fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    else
92664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      echo "disable shared libraries"
927fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    fi
928fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    if test "$build_old_libs" = yes; then
92964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      echo "enable static libraries"
930fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    else
93164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      echo "disable static libraries"
932fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    fi
933fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
934fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    exit $?
935fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
936fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
937fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_enable_tag tagname
938fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Verify that TAGNAME is valid, and either flag an error and exit, or
939fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# enable the TAGNAME tag.  We also add TAGNAME to the global $taglist
940fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# variable here.
941fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_enable_tag ()
942fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{
943fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  # Global variable:
944fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  tagname="$1"
945fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
946fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
947fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
948fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  sed_extractcf="/$re_begincf/,/$re_endcf/p"
949fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
950fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  # Validate tagname.
951fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  case $tagname in
952fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    *[!-_A-Za-z0-9,/]*)
953fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      func_fatal_error "invalid tag name: $tagname"
954fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      ;;
955fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  esac
956fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
957fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  # Don't test for the "default" C tag, as we know it's
958fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  # there but not specially marked.
959fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  case $tagname in
960fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    CC) ;;
961fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    *)
962fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
963fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	taglist="$taglist $tagname"
964fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
965fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Evaluate the configuration.  Be careful to quote the path
966fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# and the sed script, to avoid splitting on whitespace, but
967fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# also don't use non-portable quotes within backquotes within
968fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# quotes we have to do it in 2 steps:
969fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
970fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	eval "$extractedcf"
971fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      else
972fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_error "ignoring unknown tag $tagname"
973fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
974fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      ;;
975fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  esac
976fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
977fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
978fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_check_version_match
979fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Ensure that we are using m4 macros, and libtool script from the same
980fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# release of libtool.
981fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_check_version_match ()
982fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{
983fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  if test "$package_revision" != "$macro_revision"; then
984fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    if test "$VERSION" != "$macro_version"; then
985fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if test -z "$macro_version"; then
986fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        cat >&2 <<_LT_EOF
987fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
988fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville$progname: definition of this LT_INIT comes from an older release.
989fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
990fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville$progname: and run autoconf again.
991fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville_LT_EOF
992fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      else
993fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        cat >&2 <<_LT_EOF
994fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
995fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
996fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
997fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville$progname: and run autoconf again.
998fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville_LT_EOF
999fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
1000fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    else
1001fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      cat >&2 <<_LT_EOF
1002fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville$progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision,
1003fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville$progname: but the definition of this LT_INIT comes from revision $macro_revision.
1004fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville$progname: You should recreate aclocal.m4 with macros from revision $package_revision
1005fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville$progname: of $PACKAGE $VERSION and run autoconf again.
1006fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville_LT_EOF
1007fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    fi
1008fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1009fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    exit $EXIT_MISMATCH
1010fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  fi
1011fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
1012fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1013fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
101464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Shorthand for --mode=foo, only valid as the first argument
101564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcicase $1 in
101664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciclean|clea|cle|cl)
101764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  shift; set dummy --mode clean ${1+"$@"}; shift
101864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  ;;
101964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcicompile|compil|compi|comp|com|co|c)
102064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  shift; set dummy --mode compile ${1+"$@"}; shift
102164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  ;;
102264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciexecute|execut|execu|exec|exe|ex|e)
102364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  shift; set dummy --mode execute ${1+"$@"}; shift
102464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  ;;
102564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifinish|finis|fini|fin|fi|f)
102664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  shift; set dummy --mode finish ${1+"$@"}; shift
102764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  ;;
102864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciinstall|instal|insta|inst|ins|in|i)
102964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  shift; set dummy --mode install ${1+"$@"}; shift
103064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  ;;
103164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcilink|lin|li|l)
103264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  shift; set dummy --mode link ${1+"$@"}; shift
103364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  ;;
103464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciuninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
103564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  shift; set dummy --mode uninstall ${1+"$@"}; shift
103664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  ;;
103764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciesac
1038fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1039fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1040fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
104164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Option defaults:
104264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciopt_debug=:
104364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciopt_dry_run=false
104464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciopt_config=false
104564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciopt_preserve_dup_deps=false
104664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciopt_features=false
104764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciopt_finish=false
104864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciopt_help=false
104964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciopt_help_all=false
105064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciopt_silent=:
105164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciopt_warning=:
105264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciopt_verbose=:
105364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciopt_silent=false
105464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciopt_verbose=false
105564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
105664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
105764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Parse options once, thoroughly.  This comes as soon as possible in the
105864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# script to make things like `--version' happen as quickly as we can.
105964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{
106064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  # this just eases exit handling
106164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  while test $# -gt 0; do
106264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    opt="$1"
106364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    shift
106464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    case $opt in
106564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      --debug|-x)	opt_debug='set -x'
106664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci			func_echo "enabling shell trace mode"
106764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci			$opt_debug
106864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci			;;
106964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      --dry-run|--dryrun|-n)
107064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci			opt_dry_run=:
107164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci			;;
107264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      --config)
107364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci			opt_config=:
107464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_config
107564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci			;;
107664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      --dlopen|-dlopen)
107764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci			optarg="$1"
107864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci			opt_dlopen="${opt_dlopen+$opt_dlopen
107964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci}$optarg"
108064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci			shift
108164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci			;;
108264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      --preserve-dup-deps)
108364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci			opt_preserve_dup_deps=:
108464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci			;;
108564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      --features)
108664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci			opt_features=:
108764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_features
108864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci			;;
108964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      --finish)
109064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci			opt_finish=:
109164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciset dummy --mode finish ${1+"$@"}; shift
109264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci			;;
109364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      --help)
109464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci			opt_help=:
109564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci			;;
109664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      --help-all)
109764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci			opt_help_all=:
109864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciopt_help=': help-all'
109964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci			;;
110064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      --mode)
110164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci			test $# = 0 && func_missing_arg $opt && break
110264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci			optarg="$1"
110364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci			opt_mode="$optarg"
110464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcicase $optarg in
110564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  # Valid mode arguments:
110664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  clean|compile|execute|finish|install|link|relink|uninstall) ;;
110764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
110864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  # Catch anything else as an error
110964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  *) func_error "invalid argument for $opt"
111064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci     exit_cmd=exit
111164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci     break
111264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci     ;;
111364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciesac
111464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci			shift
111564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci			;;
111664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      --no-silent|--no-quiet)
111764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci			opt_silent=false
111864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_append preserve_args " $opt"
111964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci			;;
112064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      --no-warning|--no-warn)
112164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci			opt_warning=false
112264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_append preserve_args " $opt"
112364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci			;;
112464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      --no-verbose)
112564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci			opt_verbose=false
112664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_append preserve_args " $opt"
112764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci			;;
112864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      --silent|--quiet)
112964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci			opt_silent=:
113064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_append preserve_args " $opt"
113164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        opt_verbose=false
113264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci			;;
113364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      --verbose|-v)
113464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci			opt_verbose=:
113564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_append preserve_args " $opt"
113664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciopt_silent=false
113764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci			;;
113864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      --tag)
113964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci			test $# = 0 && func_missing_arg $opt && break
114064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci			optarg="$1"
114164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci			opt_tag="$optarg"
114264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_append preserve_args " $opt $optarg"
114364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_enable_tag "$optarg"
114464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci			shift
114564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci			;;
114664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
114764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      -\?|-h)		func_usage				;;
114864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      --help)		func_help				;;
114964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      --version)	func_version				;;
1150fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
115164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      # Separate optargs to long options:
115264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      --*=*)
115364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci			func_split_long_opt "$opt"
115464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci			set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"}
115564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci			shift
115664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci			;;
1157fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
115864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      # Separate non-argument short options:
115964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      -\?*|-h*|-n*|-v*)
116064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci			func_split_short_opt "$opt"
116164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci			set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"}
116264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci			shift
116364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci			;;
1164fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
116564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      --)		break					;;
116664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      -*)		func_fatal_help "unrecognized option \`$opt'" ;;
116764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      *)		set dummy "$opt" ${1+"$@"};	shift; break  ;;
116864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    esac
116964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  done
1170fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
117164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  # Validate options:
117264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
117364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  # save first non-option argument
117464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  if test "$#" -gt 0; then
117564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    nonopt="$opt"
117664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    shift
1177fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  fi
1178fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
117964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  # preserve --debug
118064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  test "$opt_debug" = : || func_append preserve_args " --debug"
118164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
118264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  case $host in
118364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    *cygwin* | *mingw* | *pw32* | *cegcc*)
118464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      # don't eliminate duplications in $postdeps and $predeps
118564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      opt_duplicate_compiler_generated_deps=:
118664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      ;;
118764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    *)
118864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps
118964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      ;;
119064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  esac
119164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
119264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  $opt_help || {
119364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    # Sanity checks first:
119464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_check_version_match
119564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
119664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
119764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      func_fatal_configuration "not configured to build any kind of library"
119864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    fi
119964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
120064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    # Darwin sucks
120164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    eval std_shrext=\"$shrext_cmds\"
120264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
120364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    # Only execute mode is allowed to have -dlopen flags.
120464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    if test -n "$opt_dlopen" && test "$opt_mode" != execute; then
120564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      func_error "unrecognized option \`-dlopen'"
120664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      $ECHO "$help" 1>&2
120764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      exit $EXIT_FAILURE
120864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    fi
120964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
121064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    # Change the help message to a mode-specific one.
121164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    generic_help="$help"
121264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    help="Try \`$progname --help --mode=$opt_mode' for more information."
121364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  }
121464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
121564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
121664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  # Bail if the options were screwed
121764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  $exit_cmd $EXIT_FAILURE
1218fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
1219fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1220fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
122164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
122264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
122364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci## ----------- ##
122464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci##    Main.    ##
122564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci## ----------- ##
122664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
1227fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_lalib_p file
1228fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# True iff FILE is a libtool `.la' library or `.lo' object file.
1229fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# This function is only a basic sanity check; it will hardly flush out
1230fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# determined imposters.
1231fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_lalib_p ()
1232fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{
123364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    test -f "$1" &&
123464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      $SED -e 4q "$1" 2>/dev/null \
123564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
1236fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
1237fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1238fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_lalib_unsafe_p file
1239fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# True iff FILE is a libtool `.la' library or `.lo' object file.
1240fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# This function implements the same check as func_lalib_p without
1241fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# resorting to external programs.  To this end, it redirects stdin and
1242fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# closes it afterwards, without saving the original file descriptor.
1243fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# As a safety measure, use it only where a negative result would be
1244fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# fatal anyway.  Works if `file' does not exist.
1245fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_lalib_unsafe_p ()
1246fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{
1247fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    lalib_p=no
124864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
1249fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	for lalib_p_l in 1 2 3 4
1250fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	do
1251fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    read lalib_p_line
1252fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    case "$lalib_p_line" in
1253fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		\#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
1254fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    esac
1255fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	done
1256fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	exec 0<&5 5<&-
1257fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    fi
1258fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    test "$lalib_p" = yes
1259fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
1260fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1261fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_ltwrapper_script_p file
1262fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# True iff FILE is a libtool wrapper script
1263fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# This function is only a basic sanity check; it will hardly flush out
1264fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# determined imposters.
1265fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_ltwrapper_script_p ()
1266fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{
1267fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    func_lalib_p "$1"
1268fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
1269fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1270fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_ltwrapper_executable_p file
1271fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# True iff FILE is a libtool wrapper executable
1272fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# This function is only a basic sanity check; it will hardly flush out
1273fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# determined imposters.
1274fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_ltwrapper_executable_p ()
1275fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{
1276fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    func_ltwrapper_exec_suffix=
1277fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    case $1 in
1278fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    *.exe) ;;
1279fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    *) func_ltwrapper_exec_suffix=.exe ;;
1280fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    esac
1281fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
1282fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
1283fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1284fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_ltwrapper_scriptname file
1285fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Assumes file is an ltwrapper_executable
1286fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# uses $file to determine the appropriate filename for a
1287fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# temporary ltwrapper_script.
1288fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_ltwrapper_scriptname ()
1289fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{
129064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_dirname_and_basename "$1" "" "."
129164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_stripname '' '.exe' "$func_basename_result"
129264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
1293fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
1294fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1295fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_ltwrapper_p file
1296fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# True iff FILE is a libtool wrapper script or wrapper executable
1297fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# This function is only a basic sanity check; it will hardly flush out
1298fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# determined imposters.
1299fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_ltwrapper_p ()
1300fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{
1301fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
1302fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
1303fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1304fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1305fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_execute_cmds commands fail_cmd
1306fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Execute tilde-delimited COMMANDS.
1307fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# If FAIL_CMD is given, eval that upon failure.
1308fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# FAIL_CMD may read-access the current command in variable CMD!
1309fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_execute_cmds ()
1310fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{
1311fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    $opt_debug
1312fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    save_ifs=$IFS; IFS='~'
1313fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    for cmd in $1; do
1314fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      IFS=$save_ifs
1315fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      eval cmd=\"$cmd\"
1316fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      func_show_eval "$cmd" "${2-:}"
1317fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    done
1318fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    IFS=$save_ifs
1319fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
1320fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1321fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1322fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_source file
1323fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Source FILE, adding directory component if necessary.
1324fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Note that it is not necessary on cygwin/mingw to append a dot to
1325fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
1326fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# behavior happens only for exec(3), not for open(2)!  Also, sourcing
1327fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# `FILE.' does not work on cygwin managed mounts.
1328fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_source ()
1329fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{
1330fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    $opt_debug
1331fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    case $1 in
1332fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    */* | *\\*)	. "$1" ;;
1333fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    *)		. "./$1" ;;
1334fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    esac
1335fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
1336fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1337fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
133864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_resolve_sysroot PATH
133964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Replace a leading = in PATH with a sysroot.  Store the result into
134064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_resolve_sysroot_result
134164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_resolve_sysroot ()
134264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{
134364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  func_resolve_sysroot_result=$1
134464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  case $func_resolve_sysroot_result in
134564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  =*)
134664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_stripname '=' '' "$func_resolve_sysroot_result"
134764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_resolve_sysroot_result=$lt_sysroot$func_stripname_result
134864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    ;;
134964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  esac
135064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci}
135164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
135264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_replace_sysroot PATH
135364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# If PATH begins with the sysroot, replace it with = and
135464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# store the result into func_replace_sysroot_result.
135564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_replace_sysroot ()
135664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{
135764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  case "$lt_sysroot:$1" in
135864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  ?*:"$lt_sysroot"*)
135964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_stripname "$lt_sysroot" '' "$1"
136064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_replace_sysroot_result="=$func_stripname_result"
136164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    ;;
136264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  *)
136364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    # Including no sysroot.
136464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_replace_sysroot_result=$1
136564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    ;;
136664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  esac
136764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci}
136864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
1369fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_infer_tag arg
1370fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Infer tagged configuration to use if any are available and
1371fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# if one wasn't chosen via the "--tag" command line option.
1372fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Only attempt this if the compiler in the base compile
1373fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# command doesn't match the default compiler.
1374fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# arg is usually of the form 'gcc ...'
1375fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_infer_tag ()
1376fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{
1377fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    $opt_debug
1378fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    if test -n "$available_tags" && test -z "$tagname"; then
1379fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      CC_quoted=
1380fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      for arg in $CC; do
138164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	func_append_quoted CC_quoted "$arg"
1382fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      done
138364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      CC_expanded=`func_echo_all $CC`
138464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      CC_quoted_expanded=`func_echo_all $CC_quoted`
1385fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      case $@ in
1386fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # Blanks in the command may have been stripped by the calling shell,
1387fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # but not from the CC environment variable when configure was run.
138864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
138964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;;
1390fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # Blanks at the start of $base_compile will cause this to fail
1391fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # if we don't check for them as well.
1392fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      *)
1393fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	for z in $available_tags; do
1394fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
1395fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # Evaluate the configuration.
1396fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
1397fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    CC_quoted=
1398fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    for arg in $CC; do
1399fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      # Double-quote args containing other shell metacharacters.
140064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      func_append_quoted CC_quoted "$arg"
1401fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    done
140264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    CC_expanded=`func_echo_all $CC`
140364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    CC_quoted_expanded=`func_echo_all $CC_quoted`
1404fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    case "$@ " in
140564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
140664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*)
1407fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      # The compiler in the base compile command matches
1408fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      # the one in the tagged configuration.
1409fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      # Assume this is the tagged configuration we want.
1410fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      tagname=$z
1411fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      break
1412fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      ;;
1413fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    esac
1414fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
1415fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	done
1416fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# If $tagname still isn't set, then no tagged configuration
1417fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# was found and let the user know that the "--tag" command
1418fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# line option must be used.
1419fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test -z "$tagname"; then
1420fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_echo "unable to infer tagged configuration"
1421fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_fatal_error "specify a tag with \`--tag'"
1422fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#	else
1423fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#	  func_verbose "using $tagname tagged configuration"
1424fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
1425fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
1426fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      esac
1427fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    fi
1428fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
1429fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1430fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
143164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
143264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_write_libtool_object output_name pic_name nonpic_name
143364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Create a libtool object file (analogous to a ".la" file),
143464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# but don't create it if we're doing a dry run.
143564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_write_libtool_object ()
143664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{
143764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    write_libobj=${1}
143864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    if test "$build_libtool_libs" = yes; then
143964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      write_lobj=\'${2}\'
144064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    else
144164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      write_lobj=none
144264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    fi
144364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
144464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    if test "$build_old_libs" = yes; then
144564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      write_oldobj=\'${3}\'
144664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    else
144764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      write_oldobj=none
144864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    fi
144964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
145064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    $opt_dry_run || {
145164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      cat >${write_libobj}T <<EOF
145264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# $write_libobj - a libtool object file
145364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
145464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#
145564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Please DO NOT delete this file!
145664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# It is necessary for linking the library.
145764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
145864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Name of the PIC object.
145964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcipic_object=$write_lobj
146064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
146164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Name of the non-PIC object
146264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcinon_pic_object=$write_oldobj
146364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
146464d8d8f89050c5ada85341f967af391f4716a7cbUlas KirazciEOF
146564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      $MV "${write_libobj}T" "${write_libobj}"
146664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    }
146764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci}
146864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
146964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
147064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci##################################################
147164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS #
147264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci##################################################
147364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
147464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_convert_core_file_wine_to_w32 ARG
147564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Helper function used by file name conversion functions when $build is *nix,
147664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# and $host is mingw, cygwin, or some other w32 environment. Relies on a
147764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# correctly configured wine environment available, with the winepath program
147864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# in $build's $PATH.
147964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#
148064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# ARG is the $build file name to be converted to w32 format.
148164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Result is available in $func_convert_core_file_wine_to_w32_result, and will
148264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# be empty on error (or when ARG is empty)
148364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_convert_core_file_wine_to_w32 ()
148464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{
148564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  $opt_debug
148664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  func_convert_core_file_wine_to_w32_result="$1"
148764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  if test -n "$1"; then
148864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    # Unfortunately, winepath does not exit with a non-zero error code, so we
148964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    # are forced to check the contents of stdout. On the other hand, if the
149064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    # command is not found, the shell will set an exit code of 127 and print
149164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    # *an error message* to stdout. So we must check for both error code of
149264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    # zero AND non-empty stdout, which explains the odd construction:
149364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null`
149464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then
149564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" |
149664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        $SED -e "$lt_sed_naive_backslashify"`
149764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    else
149864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      func_convert_core_file_wine_to_w32_result=
149964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    fi
150064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  fi
150164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci}
150264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# end: func_convert_core_file_wine_to_w32
150364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
150464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
150564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_convert_core_path_wine_to_w32 ARG
150664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Helper function used by path conversion functions when $build is *nix, and
150764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly
150864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# configured wine environment available, with the winepath program in $build's
150964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# $PATH. Assumes ARG has no leading or trailing path separator characters.
151064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#
151164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# ARG is path to be converted from $build format to win32.
151264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Result is available in $func_convert_core_path_wine_to_w32_result.
151364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Unconvertible file (directory) names in ARG are skipped; if no directory names
151464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# are convertible, then the result may be empty.
151564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_convert_core_path_wine_to_w32 ()
151664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{
151764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  $opt_debug
151864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  # unfortunately, winepath doesn't convert paths, only file names
151964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  func_convert_core_path_wine_to_w32_result=""
152064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  if test -n "$1"; then
152164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    oldIFS=$IFS
152264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    IFS=:
152364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    for func_convert_core_path_wine_to_w32_f in $1; do
152464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      IFS=$oldIFS
152564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f"
152664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      if test -n "$func_convert_core_file_wine_to_w32_result" ; then
152764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        if test -z "$func_convert_core_path_wine_to_w32_result"; then
152864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci          func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result"
152964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        else
153064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci          func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result"
153164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        fi
153264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      fi
153364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    done
153464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    IFS=$oldIFS
153564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  fi
153664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci}
153764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# end: func_convert_core_path_wine_to_w32
153864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
153964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
154064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_cygpath ARGS...
154164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when
154264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2)
154364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or
154464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# (2), returns the Cygwin file name or path in func_cygpath_result (input
154564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# file name or path is assumed to be in w32 format, as previously converted
154664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# from $build's *nix or MSYS format). In case (3), returns the w32 file name
154764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# or path in func_cygpath_result (input file name or path is assumed to be in
154864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Cygwin format). Returns an empty string on error.
154964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#
155064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# ARGS are passed to cygpath, with the last one being the file name or path to
155164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# be converted.
155264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#
155364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH
155464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# environment variable; do not put it in $PATH.
155564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_cygpath ()
155664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{
155764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  $opt_debug
155864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then
155964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null`
156064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    if test "$?" -ne 0; then
156164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      # on failure, ensure result is empty
156264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      func_cygpath_result=
156364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    fi
156464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  else
156564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_cygpath_result=
156664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'"
156764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  fi
156864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci}
156964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#end: func_cygpath
157064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
157164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
157264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_convert_core_msys_to_w32 ARG
157364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Convert file name or path ARG from MSYS format to w32 format.  Return
157464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# result in func_convert_core_msys_to_w32_result.
157564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_convert_core_msys_to_w32 ()
157664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{
157764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  $opt_debug
157864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  # awkward: cmd appends spaces to result
157964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null |
158064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"`
158164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci}
158264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#end: func_convert_core_msys_to_w32
158364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
158464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
158564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_convert_file_check ARG1 ARG2
158664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Verify that ARG1 (a file name in $build format) was converted to $host
158764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# format in ARG2. Otherwise, emit an error message, but continue (resetting
158864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_to_host_file_result to ARG1).
158964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_convert_file_check ()
159064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{
159164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  $opt_debug
159264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  if test -z "$2" && test -n "$1" ; then
159364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_error "Could not determine host file name corresponding to"
159464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_error "  \`$1'"
159564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_error "Continuing, but uninstalled executables may not work."
159664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    # Fallback:
159764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_to_host_file_result="$1"
159864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  fi
159964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci}
160064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# end func_convert_file_check
160164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
160264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
160364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH
160464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Verify that FROM_PATH (a path in $build format) was converted to $host
160564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# format in TO_PATH. Otherwise, emit an error message, but continue, resetting
160664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_to_host_file_result to a simplistic fallback value (see below).
160764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_convert_path_check ()
160864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{
160964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  $opt_debug
161064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  if test -z "$4" && test -n "$3"; then
161164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_error "Could not determine the host path corresponding to"
161264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_error "  \`$3'"
161364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_error "Continuing, but uninstalled executables may not work."
161464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    # Fallback.  This is a deliberately simplistic "conversion" and
161564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    # should not be "improved".  See libtool.info.
161664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    if test "x$1" != "x$2"; then
161764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      lt_replace_pathsep_chars="s|$1|$2|g"
161864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      func_to_host_path_result=`echo "$3" |
161964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        $SED -e "$lt_replace_pathsep_chars"`
162064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    else
162164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      func_to_host_path_result="$3"
162264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    fi
162364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  fi
162464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci}
162564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# end func_convert_path_check
162664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
162764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
162864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG
162964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT
163064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# and appending REPL if ORIG matches BACKPAT.
163164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_convert_path_front_back_pathsep ()
163264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{
163364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  $opt_debug
163464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  case $4 in
163564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  $1 ) func_to_host_path_result="$3$func_to_host_path_result"
163664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    ;;
163764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  esac
163864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  case $4 in
163964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  $2 ) func_append func_to_host_path_result "$3"
164064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    ;;
164164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  esac
164264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci}
164364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# end func_convert_path_front_back_pathsep
164464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
164564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
164664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci##################################################
164764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# $build to $host FILE NAME CONVERSION FUNCTIONS #
164864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci##################################################
164964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# invoked via `$to_host_file_cmd ARG'
165064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#
165164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# In each case, ARG is the path to be converted from $build to $host format.
165264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Result will be available in $func_to_host_file_result.
165364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
165464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
165564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_to_host_file ARG
165664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Converts the file name ARG from $build format to $host format. Return result
165764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# in func_to_host_file_result.
165864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_to_host_file ()
165964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{
166064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  $opt_debug
166164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  $to_host_file_cmd "$1"
166264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci}
166364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# end func_to_host_file
166464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
166564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
166664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_to_tool_file ARG LAZY
166764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# converts the file name ARG from $build format to toolchain format. Return
166864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# result in func_to_tool_file_result.  If the conversion in use is listed
166964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# in (the comma separated) LAZY, no conversion takes place.
167064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_to_tool_file ()
167164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{
167264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  $opt_debug
167364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  case ,$2, in
167464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    *,"$to_tool_file_cmd",*)
167564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      func_to_tool_file_result=$1
167664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      ;;
167764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    *)
167864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      $to_tool_file_cmd "$1"
167964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      func_to_tool_file_result=$func_to_host_file_result
168064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      ;;
168164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  esac
168264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci}
168364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# end func_to_tool_file
168464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
168564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
168664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_convert_file_noop ARG
168764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Copy ARG to func_to_host_file_result.
168864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_convert_file_noop ()
168964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{
169064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  func_to_host_file_result="$1"
169164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci}
169264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# end func_convert_file_noop
169364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
169464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
169564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_convert_file_msys_to_w32 ARG
169664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic
169764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# conversion to w32 is not available inside the cwrapper.  Returns result in
169864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_to_host_file_result.
169964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_convert_file_msys_to_w32 ()
170064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{
170164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  $opt_debug
170264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  func_to_host_file_result="$1"
170364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  if test -n "$1"; then
170464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_convert_core_msys_to_w32 "$1"
170564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_to_host_file_result="$func_convert_core_msys_to_w32_result"
170664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  fi
170764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  func_convert_file_check "$1" "$func_to_host_file_result"
170864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci}
170964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# end func_convert_file_msys_to_w32
171064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
171164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
171264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_convert_file_cygwin_to_w32 ARG
171364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Convert file name ARG from Cygwin to w32 format.  Returns result in
171464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_to_host_file_result.
171564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_convert_file_cygwin_to_w32 ()
171664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{
171764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  $opt_debug
171864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  func_to_host_file_result="$1"
171964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  if test -n "$1"; then
172064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    # because $build is cygwin, we call "the" cygpath in $PATH; no need to use
172164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    # LT_CYGPATH in this case.
172264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_to_host_file_result=`cygpath -m "$1"`
172364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  fi
172464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  func_convert_file_check "$1" "$func_to_host_file_result"
172564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci}
172664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# end func_convert_file_cygwin_to_w32
172764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
172864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
172964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_convert_file_nix_to_w32 ARG
173064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Convert file name ARG from *nix to w32 format.  Requires a wine environment
173164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# and a working winepath. Returns result in func_to_host_file_result.
173264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_convert_file_nix_to_w32 ()
173364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{
173464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  $opt_debug
173564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  func_to_host_file_result="$1"
173664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  if test -n "$1"; then
173764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_convert_core_file_wine_to_w32 "$1"
173864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_to_host_file_result="$func_convert_core_file_wine_to_w32_result"
173964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  fi
174064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  func_convert_file_check "$1" "$func_to_host_file_result"
174164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci}
174264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# end func_convert_file_nix_to_w32
174364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
174464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
174564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_convert_file_msys_to_cygwin ARG
174664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Convert file name ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
174764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Returns result in func_to_host_file_result.
174864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_convert_file_msys_to_cygwin ()
174964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{
175064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  $opt_debug
175164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  func_to_host_file_result="$1"
175264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  if test -n "$1"; then
175364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_convert_core_msys_to_w32 "$1"
175464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_cygpath -u "$func_convert_core_msys_to_w32_result"
175564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_to_host_file_result="$func_cygpath_result"
175664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  fi
175764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  func_convert_file_check "$1" "$func_to_host_file_result"
175864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci}
175964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# end func_convert_file_msys_to_cygwin
176064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
176164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
176264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_convert_file_nix_to_cygwin ARG
176364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Convert file name ARG from *nix to Cygwin format.  Requires Cygwin installed
176464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# in a wine environment, working winepath, and LT_CYGPATH set.  Returns result
176564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# in func_to_host_file_result.
176664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_convert_file_nix_to_cygwin ()
176764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{
176864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  $opt_debug
176964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  func_to_host_file_result="$1"
177064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  if test -n "$1"; then
177164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    # convert from *nix to w32, then use cygpath to convert from w32 to cygwin.
177264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_convert_core_file_wine_to_w32 "$1"
177364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_cygpath -u "$func_convert_core_file_wine_to_w32_result"
177464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_to_host_file_result="$func_cygpath_result"
177564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  fi
177664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  func_convert_file_check "$1" "$func_to_host_file_result"
177764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci}
177864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# end func_convert_file_nix_to_cygwin
177964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
178064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
178164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#############################################
178264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# $build to $host PATH CONVERSION FUNCTIONS #
178364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#############################################
178464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# invoked via `$to_host_path_cmd ARG'
178564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#
178664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# In each case, ARG is the path to be converted from $build to $host format.
178764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# The result will be available in $func_to_host_path_result.
178864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#
178964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Path separators are also converted from $build format to $host format.  If
179064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# ARG begins or ends with a path separator character, it is preserved (but
179164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# converted to $host format) on output.
179264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#
179364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# All path conversion functions are named using the following convention:
179464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#   file name conversion function    : func_convert_file_X_to_Y ()
179564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#   path conversion function         : func_convert_path_X_to_Y ()
179664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# where, for any given $build/$host combination the 'X_to_Y' value is the
179764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# same.  If conversion functions are added for new $build/$host combinations,
179864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# the two new functions must follow this pattern, or func_init_to_host_path_cmd
179964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# will break.
180064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
180164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
180264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_init_to_host_path_cmd
180364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Ensures that function "pointer" variable $to_host_path_cmd is set to the
180464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# appropriate value, based on the value of $to_host_file_cmd.
180564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcito_host_path_cmd=
180664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_init_to_host_path_cmd ()
180764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{
180864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  $opt_debug
180964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  if test -z "$to_host_path_cmd"; then
181064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_stripname 'func_convert_file_' '' "$to_host_file_cmd"
181164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    to_host_path_cmd="func_convert_path_${func_stripname_result}"
181264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  fi
181364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci}
181464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
181564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
181664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_to_host_path ARG
181764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Converts the path ARG from $build format to $host format. Return result
181864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# in func_to_host_path_result.
181964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_to_host_path ()
182064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{
182164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  $opt_debug
182264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  func_init_to_host_path_cmd
182364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  $to_host_path_cmd "$1"
182464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci}
182564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# end func_to_host_path
182664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
182764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
182864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_convert_path_noop ARG
182964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Copy ARG to func_to_host_path_result.
183064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_convert_path_noop ()
183164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{
183264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  func_to_host_path_result="$1"
183364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci}
183464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# end func_convert_path_noop
183564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
183664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
183764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_convert_path_msys_to_w32 ARG
183864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic
183964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# conversion to w32 is not available inside the cwrapper.  Returns result in
184064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_to_host_path_result.
184164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_convert_path_msys_to_w32 ()
184264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{
184364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  $opt_debug
184464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  func_to_host_path_result="$1"
184564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  if test -n "$1"; then
184664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    # Remove leading and trailing path separator characters from ARG.  MSYS
184764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    # behavior is inconsistent here; cygpath turns them into '.;' and ';.';
184864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    # and winepath ignores them completely.
184964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_stripname : : "$1"
185064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_to_host_path_tmp1=$func_stripname_result
185164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
185264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_to_host_path_result="$func_convert_core_msys_to_w32_result"
185364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_convert_path_check : ";" \
185464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      "$func_to_host_path_tmp1" "$func_to_host_path_result"
185564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
185664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  fi
185764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci}
185864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# end func_convert_path_msys_to_w32
185964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
186064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
186164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_convert_path_cygwin_to_w32 ARG
186264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Convert path ARG from Cygwin to w32 format.  Returns result in
186364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_to_host_file_result.
186464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_convert_path_cygwin_to_w32 ()
186564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{
186664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  $opt_debug
186764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  func_to_host_path_result="$1"
186864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  if test -n "$1"; then
186964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    # See func_convert_path_msys_to_w32:
187064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_stripname : : "$1"
187164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_to_host_path_tmp1=$func_stripname_result
187264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"`
187364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_convert_path_check : ";" \
187464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      "$func_to_host_path_tmp1" "$func_to_host_path_result"
187564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
187664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  fi
187764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci}
187864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# end func_convert_path_cygwin_to_w32
187964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
188064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
188164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_convert_path_nix_to_w32 ARG
188264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Convert path ARG from *nix to w32 format.  Requires a wine environment and
188364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# a working winepath.  Returns result in func_to_host_file_result.
188464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_convert_path_nix_to_w32 ()
1885fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{
188664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  $opt_debug
188764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  func_to_host_path_result="$1"
188864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  if test -n "$1"; then
188964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    # See func_convert_path_msys_to_w32:
189064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_stripname : : "$1"
189164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_to_host_path_tmp1=$func_stripname_result
189264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
189364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_to_host_path_result="$func_convert_core_path_wine_to_w32_result"
189464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_convert_path_check : ";" \
189564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      "$func_to_host_path_tmp1" "$func_to_host_path_result"
189664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
189764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  fi
189864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci}
189964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# end func_convert_path_nix_to_w32
1900fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1901fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
190264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_convert_path_msys_to_cygwin ARG
190364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Convert path ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
190464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Returns result in func_to_host_file_result.
190564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_convert_path_msys_to_cygwin ()
190664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{
190764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  $opt_debug
190864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  func_to_host_path_result="$1"
190964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  if test -n "$1"; then
191064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    # See func_convert_path_msys_to_w32:
191164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_stripname : : "$1"
191264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_to_host_path_tmp1=$func_stripname_result
191364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
191464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_cygpath -u -p "$func_convert_core_msys_to_w32_result"
191564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_to_host_path_result="$func_cygpath_result"
191664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_convert_path_check : : \
191764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      "$func_to_host_path_tmp1" "$func_to_host_path_result"
191864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
191964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  fi
192064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci}
192164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# end func_convert_path_msys_to_cygwin
1922fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1923fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
192464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_convert_path_nix_to_cygwin ARG
192564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Convert path ARG from *nix to Cygwin format.  Requires Cygwin installed in a
192664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# a wine environment, working winepath, and LT_CYGPATH set.  Returns result in
192764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_to_host_file_result.
192864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_convert_path_nix_to_cygwin ()
192964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{
193064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  $opt_debug
193164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  func_to_host_path_result="$1"
193264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  if test -n "$1"; then
193364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    # Remove leading and trailing path separator characters from
193464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    # ARG. msys behavior is inconsistent here, cygpath turns them
193564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    # into '.;' and ';.', and winepath ignores them completely.
193664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_stripname : : "$1"
193764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_to_host_path_tmp1=$func_stripname_result
193864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
193964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result"
194064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_to_host_path_result="$func_cygpath_result"
194164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_convert_path_check : : \
194264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      "$func_to_host_path_tmp1" "$func_to_host_path_result"
194364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
194464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  fi
1945fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
194664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# end func_convert_path_nix_to_cygwin
194764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
1948fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1949fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_mode_compile arg...
1950fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_mode_compile ()
1951fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{
1952fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    $opt_debug
1953fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    # Get the compilation command and the source file.
1954fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    base_compile=
1955fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
1956fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    suppress_opt=yes
1957fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    suppress_output=
1958fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    arg_mode=normal
1959fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    libobj=
1960fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    later=
1961fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    pie_flag=
1962fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1963fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    for arg
1964fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    do
1965fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      case $arg_mode in
1966fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      arg  )
1967fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# do not "continue".  Instead, add this to base_compile
1968fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	lastarg="$arg"
1969fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	arg_mode=normal
1970fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
1971fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1972fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      target )
1973fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	libobj="$arg"
1974fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	arg_mode=normal
1975fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	continue
1976fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
1977fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1978fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      normal )
1979fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Accept any command-line options.
1980fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	case $arg in
1981fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	-o)
1982fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  test -n "$libobj" && \
1983fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    func_fatal_error "you cannot specify \`-o' more than once"
1984fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  arg_mode=target
1985fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  continue
1986fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
1987fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1988fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	-pie | -fpie | -fPIE)
198964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci          func_append pie_flag " $arg"
1990fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  continue
1991fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
1992fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1993fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	-shared | -static | -prefer-pic | -prefer-non-pic)
199464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  func_append later " $arg"
1995fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  continue
1996fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
1997fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
1998fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	-no-suppress)
1999fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  suppress_opt=no
2000fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  continue
2001fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
2002fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2003fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	-Xcompiler)
2004fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  arg_mode=arg  #  the next one goes into the "base_compile" arg list
2005fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  continue      #  The current "srcfile" will either be retained or
2006fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;            #  replaced later.  I would guess that would be a bug.
2007fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2008fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	-Wc,*)
2009fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_stripname '-Wc,' '' "$arg"
2010fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  args=$func_stripname_result
2011fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  lastarg=
2012fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  save_ifs="$IFS"; IFS=','
2013fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  for arg in $args; do
2014fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    IFS="$save_ifs"
201564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    func_append_quoted lastarg "$arg"
2016fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  done
2017fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  IFS="$save_ifs"
2018fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_stripname ' ' '' "$lastarg"
2019fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  lastarg=$func_stripname_result
2020fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2021fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # Add the arguments to base_compile.
202264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  func_append base_compile " $lastarg"
2023fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  continue
2024fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
2025fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2026fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	*)
2027fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # Accept the current argument as the source file.
2028fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # The previous "srcfile" becomes the current argument.
2029fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  #
2030fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  lastarg="$srcfile"
2031fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  srcfile="$arg"
2032fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
2033fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	esac  #  case $arg
2034fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
2035fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      esac    #  case $arg_mode
2036fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2037fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # Aesthetically quote the previous argument.
203864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      func_append_quoted base_compile "$lastarg"
2039fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    done # for arg
2040fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2041fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    case $arg_mode in
2042fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    arg)
2043fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      func_fatal_error "you must specify an argument for -Xcompile"
2044fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      ;;
2045fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    target)
2046fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      func_fatal_error "you must specify a target with \`-o'"
2047fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      ;;
2048fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    *)
2049fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # Get the name of the library object.
2050fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      test -z "$libobj" && {
2051fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_basename "$srcfile"
2052fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	libobj="$func_basename_result"
2053fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      }
2054fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      ;;
2055fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    esac
2056fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2057fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    # Recognize several different file suffixes.
2058fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    # If the user specifies -o file.o, it is replaced with file.lo
2059fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    case $libobj in
2060fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    *.[cCFSifmso] | \
2061fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    *.ada | *.adb | *.ads | *.asm | \
2062fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
206364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup)
2064fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      func_xform "$libobj"
2065fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      libobj=$func_xform_result
2066fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      ;;
2067fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    esac
2068fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2069fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    case $libobj in
2070fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
2071fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    *)
2072fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      func_fatal_error "cannot determine name of library object from \`$libobj'"
2073fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      ;;
2074fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    esac
2075fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2076fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    func_infer_tag $base_compile
2077fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2078fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    for arg in $later; do
2079fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      case $arg in
2080fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      -shared)
2081fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	test "$build_libtool_libs" != yes && \
2082fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_fatal_configuration "can not build a shared library"
2083fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	build_old_libs=no
2084fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	continue
2085fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
2086fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2087fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      -static)
2088fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	build_libtool_libs=no
2089fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	build_old_libs=yes
2090fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	continue
2091fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
2092fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2093fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      -prefer-pic)
2094fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	pic_mode=yes
2095fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	continue
2096fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
2097fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2098fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      -prefer-non-pic)
2099fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	pic_mode=no
2100fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	continue
2101fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
2102fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      esac
2103fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    done
2104fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2105fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    func_quote_for_eval "$libobj"
2106fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    test "X$libobj" != "X$func_quote_for_eval_result" \
2107fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"'	 &()|`$[]' \
2108fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      && func_warning "libobj name \`$libobj' may not contain shell special characters."
2109fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    func_dirname_and_basename "$obj" "/" ""
2110fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    objname="$func_basename_result"
2111fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    xdir="$func_dirname_result"
2112fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    lobj=${xdir}$objdir/$objname
2113fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2114fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    test -z "$base_compile" && \
2115fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      func_fatal_help "you must specify a compilation command"
2116fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2117fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    # Delete any leftover library objects.
2118fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    if test "$build_old_libs" = yes; then
2119fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      removelist="$obj $lobj $libobj ${libobj}T"
2120fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    else
2121fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      removelist="$lobj $libobj ${libobj}T"
2122fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    fi
2123fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2124fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    # On Cygwin there's no "real" PIC flag so we must build both object types
2125fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    case $host_os in
212664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    cygwin* | mingw* | pw32* | os2* | cegcc*)
2127fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      pic_mode=default
2128fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      ;;
2129fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    esac
2130fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
2131fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # non-PIC code in shared libraries is not supported
2132fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      pic_mode=default
2133fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    fi
2134fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2135fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    # Calculate the filename of the output object if compiler does
2136fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    # not support -o with -c
2137fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    if test "$compiler_c_o" = no; then
213864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext}
2139fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      lockfile="$output_obj.lock"
2140fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    else
2141fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      output_obj=
2142fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      need_locks=no
2143fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      lockfile=
2144fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    fi
2145fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2146fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    # Lock this critical section if it is needed
2147fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    # We use this script file to make the link, it avoids creating a new file
2148fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    if test "$need_locks" = yes; then
2149fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
2150fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_echo "Waiting for $lockfile to be removed"
2151fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	sleep 2
2152fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      done
2153fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    elif test "$need_locks" = warn; then
2154fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if test -f "$lockfile"; then
2155fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	$ECHO "\
2156fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville*** ERROR, $lockfile exists and contains:
2157fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville`cat $lockfile 2>/dev/null`
2158fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2159fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleThis indicates that another process is trying to use the same
2160fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemporary object file, and libtool could not work around it because
2161fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleyour compiler does not support \`-c' and \`-o' together.  If you
2162fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillerepeat this compilation, it may succeed, by chance, but you had better
2163fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleavoid parallel builds (make -j) in this platform, or get a better
2164fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillecompiler."
2165fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2166fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	$opt_dry_run || $RM $removelist
2167fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	exit $EXIT_FAILURE
2168fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
216964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      func_append removelist " $output_obj"
2170fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      $ECHO "$srcfile" > "$lockfile"
2171fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    fi
2172fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2173fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    $opt_dry_run || $RM $removelist
217464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_append removelist " $lockfile"
2175fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
2176fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
217764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_to_tool_file "$srcfile" func_convert_file_msys_to_w32
217864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    srcfile=$func_to_tool_file_result
2179fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    func_quote_for_eval "$srcfile"
2180fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    qsrcfile=$func_quote_for_eval_result
2181fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2182fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    # Only build a PIC object if we are building libtool libraries.
2183fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    if test "$build_libtool_libs" = yes; then
2184fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # Without this assignment, base_compile gets emptied.
2185fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fbsd_hideous_sh_bug=$base_compile
2186fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2187fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if test "$pic_mode" != no; then
2188fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	command="$base_compile $qsrcfile $pic_flag"
2189fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      else
2190fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Don't build PIC code
2191fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	command="$base_compile $qsrcfile"
2192fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
2193fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2194fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      func_mkdir_p "$xdir$objdir"
2195fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2196fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if test -z "$output_obj"; then
2197fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Place PIC objects in $objdir
219864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	func_append command " -o $lobj"
2199fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
2200fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2201fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      func_show_eval_locale "$command"	\
2202fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville          'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
2203fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2204fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if test "$need_locks" = warn &&
2205fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
2206fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	$ECHO "\
2207fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville*** ERROR, $lockfile contains:
2208fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville`cat $lockfile 2>/dev/null`
2209fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2210fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillebut it should contain:
2211fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville$srcfile
2212fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2213fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleThis indicates that another process is trying to use the same
2214fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemporary object file, and libtool could not work around it because
2215fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleyour compiler does not support \`-c' and \`-o' together.  If you
2216fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillerepeat this compilation, it may succeed, by chance, but you had better
2217fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleavoid parallel builds (make -j) in this platform, or get a better
2218fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillecompiler."
2219fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2220fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	$opt_dry_run || $RM $removelist
2221fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	exit $EXIT_FAILURE
2222fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
2223fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2224fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # Just move the object if needed, then go on to compile the next one
2225fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
2226fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_show_eval '$MV "$output_obj" "$lobj"' \
2227fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
2228fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
2229fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2230fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # Allow error messages only from the first compilation.
2231fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if test "$suppress_opt" = yes; then
2232fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	suppress_output=' >/dev/null 2>&1'
2233fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
2234fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    fi
2235fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2236fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    # Only build a position-dependent object if we build old libraries.
2237fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    if test "$build_old_libs" = yes; then
2238fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if test "$pic_mode" != yes; then
2239fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Don't build PIC code
2240fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	command="$base_compile $qsrcfile$pie_flag"
2241fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      else
2242fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	command="$base_compile $qsrcfile $pic_flag"
2243fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
2244fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if test "$compiler_c_o" = yes; then
224564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	func_append command " -o $obj"
2246fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
2247fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2248fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # Suppress compiler output if we already did a PIC compilation.
224964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      func_append command "$suppress_output"
2250fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      func_show_eval_locale "$command" \
2251fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
2252fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2253fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if test "$need_locks" = warn &&
2254fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
2255fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	$ECHO "\
2256fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville*** ERROR, $lockfile contains:
2257fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville`cat $lockfile 2>/dev/null`
2258fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2259fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillebut it should contain:
2260fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville$srcfile
2261fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2262fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleThis indicates that another process is trying to use the same
2263fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemporary object file, and libtool could not work around it because
2264fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleyour compiler does not support \`-c' and \`-o' together.  If you
2265fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillerepeat this compilation, it may succeed, by chance, but you had better
2266fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleavoid parallel builds (make -j) in this platform, or get a better
2267fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillecompiler."
2268fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2269fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	$opt_dry_run || $RM $removelist
2270fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	exit $EXIT_FAILURE
2271fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
2272fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2273fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # Just move the object if needed
2274fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
2275fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_show_eval '$MV "$output_obj" "$obj"' \
2276fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
2277fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
2278fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    fi
2279fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2280fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    $opt_dry_run || {
2281fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
2282fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2283fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # Unlock the critical section if it was locked
2284fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if test "$need_locks" != no; then
2285fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	removelist=$lockfile
2286fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        $RM "$lockfile"
2287fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
2288fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    }
2289fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2290fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    exit $EXIT_SUCCESS
2291fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
2292fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2293fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville$opt_help || {
229464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  test "$opt_mode" = compile && func_mode_compile ${1+"$@"}
2295fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
2296fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2297fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_mode_help ()
2298fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{
2299fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    # We need to display help for each of the modes.
230064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    case $opt_mode in
2301fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      "")
2302fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        # Generic help is extracted from the usage comments
2303fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        # at the start of this file.
2304fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        func_help
2305fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        ;;
2306fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2307fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      clean)
2308fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        $ECHO \
2309fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
2310fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2311fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleRemove files from the build directory.
2312fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2313fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleRM is the name of the program to use to delete files associated with each FILE
2314fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
2315fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleto RM.
2316fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2317fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleIf FILE is a libtool library, object or program, all the files associated
2318fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillewith it are deleted. Otherwise, only FILE itself is deleted using RM."
2319fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        ;;
2320fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2321fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      compile)
2322fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      $ECHO \
2323fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
2324fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2325fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleCompile a source file into a libtool library object.
2326fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2327fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleThis mode accepts the following additional options:
2328fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2329fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
2330fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  -no-suppress      do not suppress compiler output for multiple passes
233164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  -prefer-pic       try to build PIC objects only
233264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  -prefer-non-pic   try to build non-PIC objects only
2333fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  -shared           do not build a \`.o' file suitable for static linking
2334fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  -static           only build a \`.o' file suitable for static linking
233564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  -Wc,FLAG          pass FLAG directly to the compiler
2336fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2337fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleCOMPILE-COMMAND is a command to be used in creating a \`standard' object file
2338fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefrom the given SOURCEFILE.
2339fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2340fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleThe output file name is determined by removing the directory component from
2341fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleSOURCEFILE, then substituting the C source code suffix \`.c' with the
2342fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillelibrary object suffix, \`.lo'."
2343fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        ;;
2344fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2345fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      execute)
2346fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        $ECHO \
2347fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
2348fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2349fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleAutomatically set library path, then run a program.
2350fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2351fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleThis mode accepts the following additional options:
2352fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2353fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  -dlopen FILE      add the directory containing FILE to the library path
2354fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2355fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleThis mode sets the library path environment variable according to \`-dlopen'
2356fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleflags.
2357fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2358fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleIf any of the ARGS are libtool executable wrappers, then they are translated
2359fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleinto their corresponding uninstalled binary, and any of their required library
2360fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilledirectories are added to the library path.
2361fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2362fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleThen, COMMAND is executed, with ARGS as arguments."
2363fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        ;;
2364fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2365fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      finish)
2366fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        $ECHO \
2367fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
2368fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2369fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleComplete the installation of libtool libraries.
2370fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2371fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleEach LIBDIR is a directory that contains libtool libraries.
2372fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2373fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleThe commands that this mode executes may require superuser privileges.  Use
2374fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillethe \`--dry-run' option if you just want to see what would be executed."
2375fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        ;;
2376fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2377fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      install)
2378fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        $ECHO \
2379fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
2380fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2381fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleInstall executables or libraries.
2382fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2383fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleINSTALL-COMMAND is the installation command.  The first component should be
2384fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleeither the \`install' or \`cp' program.
2385fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2386fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleThe following components of INSTALL-COMMAND are treated specially:
2387fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
238864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  -inst-prefix-dir PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
2389fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2390fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleThe rest of the components are interpreted as arguments to that command (only
2391fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleBSD-compatible install options are recognized)."
2392fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        ;;
2393fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2394fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      link)
2395fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        $ECHO \
2396fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
2397fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2398fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleLink object files or libraries together to form another library, or to
2399fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillecreate an executable program.
2400fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2401fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleLINK-COMMAND is a command using the C compiler that you would use to create
2402fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillea program from several object files.
2403fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2404fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleThe following components of LINK-COMMAND are treated specially:
2405fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2406fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  -all-static       do not do any dynamic linking at all
2407fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  -avoid-version    do not add a version suffix if possible
240864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  -bindir BINDIR    specify path to binaries directory (for systems where
240964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci                    libraries must be found in the PATH setting at runtime)
2410fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
2411fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
2412fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
2413fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  -export-symbols SYMFILE
2414fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville                    try to export only the symbols listed in SYMFILE
2415fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  -export-symbols-regex REGEX
2416fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville                    try to export only the symbols matching REGEX
2417fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  -LLIBDIR          search LIBDIR for required installed libraries
2418fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  -lNAME            OUTPUT-FILE requires the installed library libNAME
2419fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  -module           build a library that can dlopened
2420fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  -no-fast-install  disable the fast-install mode
2421fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  -no-install       link a not-installable executable
2422fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  -no-undefined     declare that a library does not refer to external symbols
2423fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
2424fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  -objectlist FILE  Use a list of object files found in FILE to specify objects
2425fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  -precious-files-regex REGEX
2426fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville                    don't remove output files matching REGEX
2427fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  -release RELEASE  specify package release information
2428fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
2429fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
2430fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  -shared           only do dynamic linking of libtool libraries
2431fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  -shrext SUFFIX    override the standard shared library file extension
2432fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  -static           do not do any dynamic linking of uninstalled libtool libraries
2433fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  -static-libtool-libs
2434fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville                    do not do any dynamic linking of libtool libraries
2435fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  -version-info CURRENT[:REVISION[:AGE]]
2436fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville                    specify library version info [each variable defaults to 0]
2437fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  -weak LIBNAME     declare that the target provides the LIBNAME interface
243864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  -Wc,FLAG
243964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  -Xcompiler FLAG   pass linker-specific FLAG directly to the compiler
244064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  -Wl,FLAG
244164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  -Xlinker FLAG     pass linker-specific FLAG directly to the linker
244264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  -XCClinker FLAG   pass link-specific FLAG to the compiler driver (CC)
2443fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2444fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleAll other options (arguments beginning with \`-') are ignored.
2445fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2446fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleEvery other argument is treated as a filename.  Files ending in \`.la' are
2447fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletreated as uninstalled libtool libraries, other files are standard or library
2448fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleobject files.
2449fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2450fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleIf the OUTPUT-FILE ends in \`.la', then a libtool library is created,
2451fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleonly library objects (\`.lo' files) may be specified, and \`-rpath' is
2452fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillerequired, except when creating a convenience library.
2453fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2454fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
2455fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleusing \`ar' and \`ranlib', or on Windows using \`lib'.
2456fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2457fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
2458fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleis created, otherwise an executable program is created."
2459fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        ;;
2460fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2461fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      uninstall)
2462fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        $ECHO \
2463fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
2464fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2465fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleRemove libraries from an installation directory.
2466fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2467fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleRM is the name of the program to use to delete files associated with each FILE
2468fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
2469fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleto RM.
2470fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2471fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleIf FILE is a libtool library, all the files associated with it are deleted.
2472fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleOtherwise, only FILE itself is deleted using RM."
2473fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        ;;
2474fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2475fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      *)
247664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        func_fatal_help "invalid operation mode \`$opt_mode'"
2477fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        ;;
2478fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    esac
2479fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
248064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    echo
2481fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    $ECHO "Try \`$progname --help' for more information about other modes."
2482fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
2483fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
248464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Now that we've collected a possible --mode arg, show help if necessary
248564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciif $opt_help; then
248664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  if test "$opt_help" = :; then
248764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_mode_help
248864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  else
248964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    {
249064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      func_help noexit
249164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      for opt_mode in compile link execute install finish uninstall clean; do
249264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	func_mode_help
249364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      done
249464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    } | sed -n '1p; 2,$s/^Usage:/  or: /p'
249564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    {
249664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      func_help noexit
249764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      for opt_mode in compile link execute install finish uninstall clean; do
249864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	echo
249964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	func_mode_help
250064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      done
250164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    } |
250264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    sed '1d
250364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      /^When reporting/,/^Report/{
250464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	H
250564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	d
250664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      }
250764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      $x
250864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      /information about other modes/d
250964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      /more detailed .*MODE/d
251064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/'
251164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  fi
251264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  exit $?
251364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifi
2514fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2515fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2516fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_mode_execute arg...
2517fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_mode_execute ()
2518fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{
2519fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    $opt_debug
2520fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    # The first argument is the command name.
2521fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    cmd="$nonopt"
2522fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    test -z "$cmd" && \
2523fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      func_fatal_help "you must specify a COMMAND"
2524fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2525fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    # Handle -dlopen flags immediately.
252664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    for file in $opt_dlopen; do
2527fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      test -f "$file" \
2528fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	|| func_fatal_help "\`$file' is not a file"
2529fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2530fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      dir=
2531fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      case $file in
2532fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      *.la)
253364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	func_resolve_sysroot "$file"
253464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	file=$func_resolve_sysroot_result
253564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
2536fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Check to see that this really is a libtool archive.
2537fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_lalib_unsafe_p "$file" \
2538fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  || func_fatal_help "\`$lib' is not a valid libtool archive"
2539fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2540fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Read the libtool library.
2541fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	dlname=
2542fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	library_names=
2543fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_source "$file"
2544fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2545fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Skip this library if it cannot be dlopened.
2546fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test -z "$dlname"; then
2547fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # Warn if it was a shared library.
2548fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  test -n "$library_names" && \
2549fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    func_warning "\`$file' was not linked with \`-export-dynamic'"
2550fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  continue
2551fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
2552fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2553fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_dirname "$file" "" "."
2554fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	dir="$func_dirname_result"
2555fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2556fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test -f "$dir/$objdir/$dlname"; then
255764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  func_append dir "/$objdir"
2558fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	else
2559fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test ! -f "$dir/$dlname"; then
2560fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
2561fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
2562fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
2563fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
2564fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2565fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      *.lo)
2566fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Just add the directory containing the .lo file.
2567fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_dirname "$file" "" "."
2568fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	dir="$func_dirname_result"
2569fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
2570fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2571fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      *)
2572fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
2573fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	continue
2574fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
2575fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      esac
2576fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2577fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # Get the absolute pathname.
2578fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      absdir=`cd "$dir" && pwd`
2579fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      test -n "$absdir" && dir="$absdir"
2580fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2581fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # Now add the directory to shlibpath_var.
2582fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if eval "test -z \"\$$shlibpath_var\""; then
2583fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	eval "$shlibpath_var=\"\$dir\""
2584fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      else
2585fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
2586fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
2587fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    done
2588fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2589fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    # This variable tells wrapper scripts just to set shlibpath_var
2590fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    # rather than running their programs.
2591fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    libtool_execute_magic="$magic"
2592fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2593fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    # Check if any of the arguments is a wrapper script.
2594fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    args=
2595fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    for file
2596fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    do
2597fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      case $file in
259864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      -* | *.la | *.lo ) ;;
2599fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      *)
2600fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Do a test to see if this is really a libtool program.
2601fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if func_ltwrapper_script_p "$file"; then
2602fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_source "$file"
2603fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # Transform arg to wrapped name.
2604fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  file="$progdir/$program"
2605fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	elif func_ltwrapper_executable_p "$file"; then
2606fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_ltwrapper_scriptname "$file"
2607fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_source "$func_ltwrapper_scriptname_result"
2608fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # Transform arg to wrapped name.
2609fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  file="$progdir/$program"
2610fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
2611fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
2612fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      esac
2613fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # Quote arguments (to preserve shell metacharacters).
261464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      func_append_quoted args "$file"
2615fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    done
2616fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2617fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    if test "X$opt_dry_run" = Xfalse; then
2618fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if test -n "$shlibpath_var"; then
2619fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Export the shlibpath_var.
2620fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	eval "export $shlibpath_var"
2621fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
2622fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2623fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # Restore saved environment variables
2624fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
2625fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      do
2626fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	eval "if test \"\${save_$lt_var+set}\" = set; then
2627fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville                $lt_var=\$save_$lt_var; export $lt_var
2628fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      else
2629fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		$lt_unset $lt_var
2630fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      fi"
2631fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      done
2632fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2633fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # Now prepare to actually exec the command.
2634fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      exec_cmd="\$cmd$args"
2635fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    else
2636fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # Display what would be done.
2637fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if test -n "$shlibpath_var"; then
2638fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
263964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	echo "export $shlibpath_var"
2640fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
2641fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      $ECHO "$cmd$args"
2642fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      exit $EXIT_SUCCESS
2643fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    fi
2644fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
2645fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
264664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcitest "$opt_mode" = execute && func_mode_execute ${1+"$@"}
2647fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2648fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2649fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_mode_finish arg...
2650fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_mode_finish ()
2651fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{
2652fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    $opt_debug
265364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    libs=
265464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    libdirs=
2655fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    admincmds=
2656fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
265764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    for opt in "$nonopt" ${1+"$@"}
265864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    do
265964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      if test -d "$opt"; then
266064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	func_append libdirs " $opt"
266164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
266264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      elif test -f "$opt"; then
266364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	if func_lalib_unsafe_p "$opt"; then
266464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  func_append libs " $opt"
266564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	else
266664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  func_warning "\`$opt' is not a valid libtool archive"
266764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	fi
2668fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
266964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      else
267064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	func_fatal_error "invalid argument \`$opt'"
267164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      fi
267264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    done
267364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
267464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    if test -n "$libs"; then
267564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      if test -n "$lt_sysroot"; then
267664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"`
267764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;"
267864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      else
267964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        sysroot_cmd=
268064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      fi
268164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
268264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      # Remove sysroot references
268364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      if $opt_dry_run; then
268464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        for lib in $libs; do
268564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci          echo "removing references to $lt_sysroot and \`=' prefixes from $lib"
268664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        done
268764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      else
268864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        tmpdir=`func_mktempdir`
268964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        for lib in $libs; do
269064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \
269164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    > $tmpdir/tmp-la
269264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  mv -f $tmpdir/tmp-la $lib
269364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	done
269464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        ${RM}r "$tmpdir"
269564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      fi
269664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    fi
269764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
269864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
2699fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      for libdir in $libdirs; do
2700fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test -n "$finish_cmds"; then
2701fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # Do each command in the finish commands.
2702fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
2703fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville'"$cmd"'"'
2704fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
2705fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test -n "$finish_eval"; then
2706fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # Do the single finish_eval.
2707fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  eval cmds=\"$finish_eval\"
270864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  $opt_dry_run || eval "$cmds" || func_append admincmds "
2709fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville       $cmds"
2710fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
2711fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      done
2712fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    fi
2713fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2714fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    # Exit here if they wanted silent mode.
2715fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    $opt_silent && exit $EXIT_SUCCESS
2716fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
271764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
271864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      echo "----------------------------------------------------------------------"
271964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      echo "Libraries have been installed in:"
272064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      for libdir in $libdirs; do
272164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	$ECHO "   $libdir"
272264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      done
272364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      echo
272464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      echo "If you ever happen to want to link against installed libraries"
272564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      echo "in a given directory, LIBDIR, you must either use libtool, and"
272664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
272764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      echo "flag during linking and do at least one of the following:"
272864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      if test -n "$shlibpath_var"; then
272964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	echo "   - add LIBDIR to the \`$shlibpath_var' environment variable"
273064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	echo "     during execution"
273164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      fi
273264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      if test -n "$runpath_var"; then
273364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	echo "   - add LIBDIR to the \`$runpath_var' environment variable"
273464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	echo "     during linking"
273564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      fi
273664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      if test -n "$hardcode_libdir_flag_spec"; then
273764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	libdir=LIBDIR
273864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	eval flag=\"$hardcode_libdir_flag_spec\"
2739fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
274064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	$ECHO "   - use the \`$flag' linker flag"
274164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      fi
274264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      if test -n "$admincmds"; then
274364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	$ECHO "   - have your system administrator run these commands:$admincmds"
274464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      fi
274564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      if test -f /etc/ld.so.conf; then
274664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	echo "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
274764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      fi
274864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      echo
2749fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
275064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      echo "See any operating system documentation about shared libraries for"
275164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      case $host in
275264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	solaris2.[6789]|solaris2.1[0-9])
275364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  echo "more information, such as the ld(1), crle(1) and ld.so(8) manual"
275464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  echo "pages."
275564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  ;;
275664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	*)
275764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  echo "more information, such as the ld(1) and ld.so(8) manual pages."
275864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  ;;
275964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      esac
276064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      echo "----------------------------------------------------------------------"
276164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    fi
2762fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    exit $EXIT_SUCCESS
2763fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
2764fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
276564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcitest "$opt_mode" = finish && func_mode_finish ${1+"$@"}
2766fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2767fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2768fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_mode_install arg...
2769fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_mode_install ()
2770fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{
2771fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    $opt_debug
2772fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    # There may be an optional sh(1) argument at the beginning of
2773fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    # install_prog (especially on Windows NT).
2774fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
2775fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville       # Allow the use of GNU shtool's install command.
277664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci       case $nonopt in *shtool*) :;; *) false;; esac; then
2777fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # Aesthetically quote it.
2778fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      func_quote_for_eval "$nonopt"
2779fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      install_prog="$func_quote_for_eval_result "
2780fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      arg=$1
2781fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      shift
2782fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    else
2783fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      install_prog=
2784fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      arg=$nonopt
2785fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    fi
2786fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2787fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    # The real first argument should be the name of the installation program.
2788fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    # Aesthetically quote it.
2789fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    func_quote_for_eval "$arg"
279064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_append install_prog "$func_quote_for_eval_result"
279164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    install_shared_prog=$install_prog
279264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    case " $install_prog " in
279364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      *[\\\ /]cp\ *) install_cp=: ;;
279464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      *) install_cp=false ;;
279564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    esac
2796fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2797fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    # We need to accept at least all the BSD install flags.
2798fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    dest=
2799fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    files=
2800fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    opts=
2801fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    prev=
2802fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    install_type=
2803fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    isdir=no
2804fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    stripme=
280564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    no_mode=:
2806fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    for arg
2807fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    do
280864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      arg2=
2809fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if test -n "$dest"; then
281064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	func_append files " $dest"
2811fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	dest=$arg
2812fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	continue
2813fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
2814fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2815fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      case $arg in
2816fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      -d) isdir=yes ;;
2817fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      -f)
281864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	if $install_cp; then :; else
281964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  prev=$arg
282064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	fi
2821fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
2822fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      -g | -m | -o)
2823fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	prev=$arg
2824fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
2825fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      -s)
2826fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	stripme=" -s"
2827fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	continue
2828fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
2829fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      -*)
2830fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
2831fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      *)
2832fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# If the previous option needed an argument, then skip it.
2833fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test -n "$prev"; then
283464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  if test "x$prev" = x-m && test -n "$install_override_mode"; then
283564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    arg2=$install_override_mode
283664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    no_mode=false
283764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  fi
2838fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  prev=
2839fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	else
2840fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  dest=$arg
2841fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  continue
2842fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
2843fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
2844fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      esac
2845fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2846fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # Aesthetically quote the argument.
2847fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      func_quote_for_eval "$arg"
284864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      func_append install_prog " $func_quote_for_eval_result"
284964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      if test -n "$arg2"; then
285064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	func_quote_for_eval "$arg2"
285164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      fi
285264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      func_append install_shared_prog " $func_quote_for_eval_result"
2853fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    done
2854fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2855fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    test -z "$install_prog" && \
2856fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      func_fatal_help "you must specify an install program"
2857fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2858fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    test -n "$prev" && \
2859fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      func_fatal_help "the \`$prev' option requires an argument"
2860fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
286164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    if test -n "$install_override_mode" && $no_mode; then
286264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      if $install_cp; then :; else
286364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	func_quote_for_eval "$install_override_mode"
286464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	func_append install_shared_prog " -m $func_quote_for_eval_result"
286564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      fi
286664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    fi
286764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
2868fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    if test -z "$files"; then
2869fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if test -z "$dest"; then
2870fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_fatal_help "no file or destination specified"
2871fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      else
2872fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_fatal_help "you must specify a destination"
2873fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
2874fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    fi
2875fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2876fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    # Strip any trailing slash from the destination.
2877fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    func_stripname '' '/' "$dest"
2878fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    dest=$func_stripname_result
2879fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2880fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    # Check to see that the destination is a directory.
2881fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    test -d "$dest" && isdir=yes
2882fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    if test "$isdir" = yes; then
2883fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      destdir="$dest"
2884fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      destname=
2885fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    else
2886fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      func_dirname_and_basename "$dest" "" "."
2887fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      destdir="$func_dirname_result"
2888fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      destname="$func_basename_result"
2889fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2890fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # Not a directory, so check to see that there is only one file specified.
2891fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      set dummy $files; shift
2892fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      test "$#" -gt 1 && \
2893fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_fatal_help "\`$dest' is not a directory"
2894fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    fi
2895fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    case $destdir in
2896fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    [\\/]* | [A-Za-z]:[\\/]*) ;;
2897fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    *)
2898fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      for file in $files; do
2899fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	case $file in
2900fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	*.lo) ;;
2901fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	*)
2902fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_fatal_help "\`$destdir' must be an absolute directory name"
2903fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
2904fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	esac
2905fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      done
2906fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      ;;
2907fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    esac
2908fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2909fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    # This variable tells wrapper scripts just to set variables rather
2910fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    # than running their programs.
2911fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    libtool_install_magic="$magic"
2912fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2913fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    staticlibs=
2914fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    future_libdirs=
2915fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    current_libdirs=
2916fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    for file in $files; do
2917fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2918fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # Do each installation.
2919fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      case $file in
2920fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      *.$libext)
2921fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Do the static libraries later.
292264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	func_append staticlibs " $file"
2923fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
2924fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2925fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      *.la)
292664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	func_resolve_sysroot "$file"
292764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	file=$func_resolve_sysroot_result
292864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
2929fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Check to see that this really is a libtool archive.
2930fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_lalib_unsafe_p "$file" \
2931fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  || func_fatal_help "\`$file' is not a valid libtool archive"
2932fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2933fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	library_names=
2934fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	old_library=
2935fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	relink_command=
2936fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_source "$file"
2937fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2938fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Add the libdir to current_libdirs if it is the destination.
2939fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test "X$destdir" = "X$libdir"; then
2940fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  case "$current_libdirs " in
2941fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  *" $libdir "*) ;;
294264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  *) func_append current_libdirs " $libdir" ;;
2943fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  esac
2944fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	else
2945fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # Note the libdir as a future libdir.
2946fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  case "$future_libdirs " in
2947fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  *" $libdir "*) ;;
294864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  *) func_append future_libdirs " $libdir" ;;
2949fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  esac
2950fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
2951fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2952fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_dirname "$file" "/" ""
2953fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	dir="$func_dirname_result"
295464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	func_append dir "$objdir"
2955fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2956fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test -n "$relink_command"; then
2957fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # Determine the prefix the user has applied to our future dir.
295864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"`
2959fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2960fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # Don't allow the user to place us outside of our expected
2961fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # location b/c this prevents finding dependent libraries that
2962fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # are installed to the same prefix.
2963fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # At present, this check doesn't affect windows .dll's that
2964fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # are installed into $libdir/../bin (currently, that works fine)
2965fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # but it's something to keep an eye on.
2966fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  test "$inst_prefix_dir" = "$destdir" && \
2967fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
2968fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2969fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test -n "$inst_prefix_dir"; then
2970fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # Stick the inst_prefix_dir data into the link command.
297164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
2972fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  else
297364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
2974fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
2975fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2976fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_warning "relinking \`$file'"
2977fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_show_eval "$relink_command" \
2978fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
2979fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
2980fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2981fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# See the names of the shared library.
2982fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	set dummy $library_names; shift
2983fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test -n "$1"; then
2984fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  realname="$1"
2985fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  shift
2986fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2987fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  srcname="$realname"
2988fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  test -n "$relink_command" && srcname="$realname"T
2989fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
2990fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # Install the shared library and build the symlinks.
299164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \
2992fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      'exit $?'
2993fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  tstripme="$stripme"
2994fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  case $host_os in
299564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  cygwin* | mingw* | pw32* | cegcc*)
2996fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    case $realname in
2997fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    *.dll.a)
2998fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      tstripme=""
2999fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      ;;
3000fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    esac
3001fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    ;;
3002fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  esac
3003fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test -n "$tstripme" && test -n "$striplib"; then
3004fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    func_show_eval "$striplib $destdir/$realname" 'exit $?'
3005fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
3006fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3007fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test "$#" -gt 0; then
3008fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # Delete the old symlinks, and create new ones.
3009fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # Try `ln -sf' first, because the `ln' binary might depend on
3010fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # the symlink we replace!  Solaris /bin/ln does not understand -f,
3011fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # so we also need to try rm && ln -s.
3012fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    for linkname
3013fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    do
3014fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      test "$linkname" != "$realname" \
3015fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		&& func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
3016fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    done
3017fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
3018fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3019fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # Do each command in the postinstall commands.
3020fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  lib="$destdir/$realname"
3021fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_execute_cmds "$postinstall_cmds" 'exit $?'
3022fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
3023fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3024fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Install the pseudo-library for information purposes.
3025fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_basename "$file"
3026fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	name="$func_basename_result"
3027fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	instname="$dir/$name"i
3028fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
3029fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3030fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Maybe install the static library, too.
303164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	test -n "$old_library" && func_append staticlibs " $dir/$old_library"
3032fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
3033fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3034fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      *.lo)
3035fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Install (i.e. copy) a libtool object.
3036fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3037fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Figure out destination file name, if it wasn't already specified.
3038fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test -n "$destname"; then
3039fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  destfile="$destdir/$destname"
3040fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	else
3041fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_basename "$file"
3042fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  destfile="$func_basename_result"
3043fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  destfile="$destdir/$destfile"
3044fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
3045fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3046fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Deduce the name of the destination old-style object file.
3047fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	case $destfile in
3048fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	*.lo)
3049fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_lo2o "$destfile"
3050fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  staticdest=$func_lo2o_result
3051fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
3052fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	*.$objext)
3053fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  staticdest="$destfile"
3054fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  destfile=
3055fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
3056fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	*)
3057fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_fatal_help "cannot copy a libtool object to \`$destfile'"
3058fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
3059fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	esac
3060fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3061fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Install the libtool object if requested.
3062fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	test -n "$destfile" && \
3063fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_show_eval "$install_prog $file $destfile" 'exit $?'
3064fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3065fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Install the old object if enabled.
3066fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test "$build_old_libs" = yes; then
3067fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # Deduce the name of the old-style object file.
3068fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_lo2o "$file"
3069fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  staticobj=$func_lo2o_result
3070fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
3071fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
3072fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	exit $EXIT_SUCCESS
3073fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
3074fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3075fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      *)
3076fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Figure out destination file name, if it wasn't already specified.
3077fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test -n "$destname"; then
3078fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  destfile="$destdir/$destname"
3079fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	else
3080fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_basename "$file"
3081fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  destfile="$func_basename_result"
3082fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  destfile="$destdir/$destfile"
3083fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
3084fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3085fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# If the file is missing, and there is a .exe on the end, strip it
3086fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# because it is most likely a libtool script we actually want to
3087fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# install
3088fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	stripped_ext=""
3089fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	case $file in
3090fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  *.exe)
3091fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    if test ! -f "$file"; then
3092fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      func_stripname '' '.exe' "$file"
3093fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      file=$func_stripname_result
3094fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      stripped_ext=".exe"
3095fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    fi
3096fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    ;;
3097fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	esac
3098fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3099fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Do a test to see if this is really a libtool program.
3100fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	case $host in
310164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	*cygwin* | *mingw*)
3102fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    if func_ltwrapper_executable_p "$file"; then
3103fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      func_ltwrapper_scriptname "$file"
3104fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      wrapper=$func_ltwrapper_scriptname_result
3105fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    else
3106fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      func_stripname '' '.exe' "$file"
3107fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      wrapper=$func_stripname_result
3108fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    fi
3109fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    ;;
3110fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	*)
3111fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    wrapper=$file
3112fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    ;;
3113fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	esac
3114fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if func_ltwrapper_script_p "$wrapper"; then
3115fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  notinst_deplibs=
3116fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  relink_command=
3117fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3118fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_source "$wrapper"
3119fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3120fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # Check the variables that should have been set.
3121fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  test -z "$generated_by_libtool_version" && \
3122fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    func_fatal_error "invalid libtool wrapper script \`$wrapper'"
3123fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3124fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  finalize=yes
3125fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  for lib in $notinst_deplibs; do
3126fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # Check to see that each library is installed.
3127fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    libdir=
3128fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    if test -f "$lib"; then
3129fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      func_source "$lib"
3130fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    fi
313164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test
3132fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    if test -n "$libdir" && test ! -f "$libfile"; then
3133fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      func_warning "\`$lib' has not been installed in \`$libdir'"
3134fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      finalize=no
3135fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    fi
3136fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  done
3137fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3138fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  relink_command=
3139fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_source "$wrapper"
3140fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3141fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  outputname=
3142fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test "$fast_install" = no && test -n "$relink_command"; then
3143fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    $opt_dry_run || {
3144fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      if test "$finalize" = yes; then
3145fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	        tmpdir=`func_mktempdir`
3146fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		func_basename "$file$stripped_ext"
3147fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		file="$func_basename_result"
3148fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	        outputname="$tmpdir/$file"
3149fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	        # Replace the output file specification.
315064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	        relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'`
3151fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3152fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	        $opt_silent || {
3153fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	          func_quote_for_expand "$relink_command"
3154fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  eval "func_echo $func_quote_for_expand_result"
3155fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	        }
3156fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	        if eval "$relink_command"; then :
3157fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	          else
3158fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  func_error "error: relink \`$file' with the above command before installing it"
3159fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  $opt_dry_run || ${RM}r "$tmpdir"
3160fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  continue
3161fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	        fi
3162fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	        file="$outputname"
3163fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      else
3164fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	        func_warning "cannot relink \`$file'"
3165fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      fi
3166fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    }
3167fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  else
3168fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # Install the binary that we compiled earlier.
316964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"`
3170fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
3171fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
3172fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3173fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# remove .exe since cygwin /usr/bin/install will append another
3174fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# one anyway
3175fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	case $install_prog,$host in
3176fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	*/usr/bin/install*,*cygwin*)
3177fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  case $file:$destfile in
3178fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  *.exe:*.exe)
3179fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # this is ok
3180fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    ;;
3181fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  *.exe:*)
3182fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    destfile=$destfile.exe
3183fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    ;;
3184fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  *:*.exe)
3185fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    func_stripname '' '.exe' "$destfile"
3186fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    destfile=$func_stripname_result
3187fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    ;;
3188fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  esac
3189fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
3190fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	esac
3191fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
3192fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	$opt_dry_run || if test -n "$outputname"; then
3193fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ${RM}r "$tmpdir"
3194fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
3195fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
3196fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      esac
3197fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    done
3198fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3199fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    for file in $staticlibs; do
3200fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      func_basename "$file"
3201fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      name="$func_basename_result"
3202fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3203fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # Set up the ranlib parameters.
3204fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      oldlib="$destdir/$name"
320564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
320664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      tool_oldlib=$func_to_tool_file_result
3207fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3208fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
3209fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3210fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if test -n "$stripme" && test -n "$old_striplib"; then
321164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	func_show_eval "$old_striplib $tool_oldlib" 'exit $?'
3212fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
3213fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3214fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # Do each command in the postinstall commands.
3215fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      func_execute_cmds "$old_postinstall_cmds" 'exit $?'
3216fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    done
3217fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3218fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    test -n "$future_libdirs" && \
3219fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      func_warning "remember to run \`$progname --finish$future_libdirs'"
3220fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3221fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    if test -n "$current_libdirs"; then
3222fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # Maybe just do a dry run.
3223fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      $opt_dry_run && current_libdirs=" -n$current_libdirs"
3224fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
3225fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    else
3226fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      exit $EXIT_SUCCESS
3227fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    fi
3228fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
3229fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
323064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcitest "$opt_mode" = install && func_mode_install ${1+"$@"}
3231fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3232fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3233fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_generate_dlsyms outputname originator pic_p
3234fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Extract symbols from dlprefiles and create ${outputname}S.o with
3235fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# a dlpreopen symbol table.
3236fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_generate_dlsyms ()
3237fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{
3238fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    $opt_debug
3239fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    my_outputname="$1"
3240fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    my_originator="$2"
3241fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    my_pic_p="${3-no}"
3242fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
3243fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    my_dlsyms=
3244fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3245fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
3246fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if test -n "$NM" && test -n "$global_symbol_pipe"; then
3247fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	my_dlsyms="${my_outputname}S.c"
3248fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      else
3249fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_error "not configured to extract global symbols from dlpreopened files"
3250fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
3251fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    fi
3252fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3253fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    if test -n "$my_dlsyms"; then
3254fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      case $my_dlsyms in
3255fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      "") ;;
3256fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      *.c)
3257fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Discover the nlist of each of the dlfiles.
3258fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	nlist="$output_objdir/${my_outputname}.nm"
3259fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3260fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
3261fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3262fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Parse the name list into a source file.
3263fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_verbose "creating $output_objdir/$my_dlsyms"
3264fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3265fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	$opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
3266fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
3267fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
3268fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3269fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#ifdef __cplusplus
3270fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleextern \"C\" {
3271fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif
3272fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
327364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4))
327464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
327564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#endif
327664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
327764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
327864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
327964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci/* DATA imports from DLLs on WIN32 con't be const, because runtime
328064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci   relocations are performed -- see ld's documentation on pseudo-relocs.  */
328164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# define LT_DLSYM_CONST
328264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#elif defined(__osf__)
328364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci/* This system does not cope well with relocations in const data.  */
328464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# define LT_DLSYM_CONST
328564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#else
328664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# define LT_DLSYM_CONST const
328764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#endif
328864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
3289fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville/* External symbol declarations for the compiler. */\
3290fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville"
3291fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3292fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test "$dlself" = yes; then
3293fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_verbose "generating symbol list for \`$output'"
3294fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3295fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
3296fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3297fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # Add our own program objects to the symbol list.
329864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP`
3299fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  for progfile in $progfiles; do
330064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    func_to_tool_file "$progfile" func_convert_file_msys_to_w32
330164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    func_verbose "extracting global C symbols from \`$func_to_tool_file_result'"
330264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'"
3303fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  done
3304fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3305fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test -n "$exclude_expsyms"; then
3306fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    $opt_dry_run || {
3307fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
3308fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      eval '$MV "$nlist"T "$nlist"'
3309fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    }
3310fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
3311fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3312fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test -n "$export_symbols_regex"; then
3313fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    $opt_dry_run || {
3314fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
3315fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      eval '$MV "$nlist"T "$nlist"'
3316fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    }
3317fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
3318fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3319fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # Prepare the list of exported symbols
3320fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test -z "$export_symbols"; then
3321fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    export_symbols="$output_objdir/$outputname.exp"
3322fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    $opt_dry_run || {
3323fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      $RM $export_symbols
3324fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
3325fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      case $host in
332664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      *cygwin* | *mingw* | *cegcc* )
3327fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville                eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
3328fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville                eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
3329fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	        ;;
3330fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      esac
3331fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    }
3332fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  else
3333fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    $opt_dry_run || {
3334fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
3335fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
3336fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      eval '$MV "$nlist"T "$nlist"'
3337fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      case $host in
333864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	        *cygwin* | *mingw* | *cegcc* )
3339fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	          eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
3340fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	          eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
3341fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	          ;;
3342fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      esac
3343fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    }
3344fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
3345fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
3346fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3347fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	for dlprefile in $dlprefiles; do
3348fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_verbose "extracting global C symbols from \`$dlprefile'"
3349fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_basename "$dlprefile"
3350fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  name="$func_basename_result"
335164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci          case $host in
335264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    *cygwin* | *mingw* | *cegcc* )
335364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      # if an import library, we need to obtain dlname
335464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      if func_win32_import_lib_p "$dlprefile"; then
335564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	        func_tr_sh "$dlprefile"
335664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	        eval "curr_lafile=\$libfile_$func_tr_sh_result"
335764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	        dlprefile_dlbasename=""
335864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	        if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then
335964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	          # Use subshell, to avoid clobbering current variable values
336064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	          dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"`
336164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	          if test -n "$dlprefile_dlname" ; then
336264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	            func_basename "$dlprefile_dlname"
336364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	            dlprefile_dlbasename="$func_basename_result"
336464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	          else
336564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	            # no lafile. user explicitly requested -dlpreopen <import library>.
336664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	            $sharedlib_from_linklib_cmd "$dlprefile"
336764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	            dlprefile_dlbasename=$sharedlib_from_linklib_result
336864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	          fi
336964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	        fi
337064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	        $opt_dry_run || {
337164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	          if test -n "$dlprefile_dlbasename" ; then
337264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	            eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"'
337364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	          else
337464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	            func_warning "Could not compute DLL name from $name"
337564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	            eval '$ECHO ": $name " >> "$nlist"'
337664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	          fi
337764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	          func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
337864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	          eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe |
337964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	            $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'"
338064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	        }
338164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      else # not an import lib
338264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	        $opt_dry_run || {
338364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	          eval '$ECHO ": $name " >> "$nlist"'
338464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	          func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
338564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	          eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
338664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	        }
338764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      fi
338864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    ;;
338964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    *)
339064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      $opt_dry_run || {
339164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	        eval '$ECHO ": $name " >> "$nlist"'
339264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	        func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
339364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	        eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
339464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      }
339564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    ;;
339664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci          esac
3397fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	done
3398fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3399fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	$opt_dry_run || {
3400fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # Make sure we have at least an empty file.
3401fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  test -f "$nlist" || : > "$nlist"
3402fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3403fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test -n "$exclude_expsyms"; then
3404fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
3405fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    $MV "$nlist"T "$nlist"
3406fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
3407fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3408fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # Try sorting and uniquifying the output.
3409fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if $GREP -v "^: " < "$nlist" |
3410fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      if sort -k 3 </dev/null >/dev/null 2>&1; then
3411fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		sort -k 3
3412fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      else
3413fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		sort +2
3414fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      fi |
3415fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      uniq > "$nlist"S; then
3416fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    :
3417fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  else
3418fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    $GREP -v "^: " < "$nlist" > "$nlist"S
3419fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
3420fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3421fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test -f "$nlist"S; then
3422fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
3423fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  else
342464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    echo '/* NONE */' >> "$output_objdir/$my_dlsyms"
3425fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
3426fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
342764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  echo >> "$output_objdir/$my_dlsyms" "\
3428fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3429fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville/* The mapping between symbol names and symbols.  */
3430fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletypedef struct {
3431fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  const char *name;
3432fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  void *address;
3433fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} lt_dlsymlist;
343464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciextern LT_DLSYM_CONST lt_dlsymlist
3435fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillelt_${my_prefix}_LTX_preloaded_symbols[];
343664d8d8f89050c5ada85341f967af391f4716a7cbUlas KirazciLT_DLSYM_CONST lt_dlsymlist
3437fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillelt_${my_prefix}_LTX_preloaded_symbols[] =
3438fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{\
3439fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  { \"$my_originator\", (void *) 0 },"
3440fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3441fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  case $need_lib_prefix in
3442fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  no)
3443fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
3444fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    ;;
3445fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  *)
3446fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
3447fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    ;;
3448fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  esac
344964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  echo >> "$output_objdir/$my_dlsyms" "\
3450fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  {0, (void *) 0}
3451fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville};
3452fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3453fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville/* This works around a problem in FreeBSD linker */
3454fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#ifdef FREEBSD_WORKAROUND
3455fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillestatic const void *lt_preloaded_setup() {
3456fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  return lt_${my_prefix}_LTX_preloaded_symbols;
3457fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
3458fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif
3459fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3460fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#ifdef __cplusplus
3461fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
3462fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif\
3463fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville"
3464fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	} # !$opt_dry_run
3465fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3466fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	pic_flag_for_symtable=
3467fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	case "$compile_command " in
3468fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	*" -static "*) ;;
3469fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	*)
3470fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  case $host in
3471fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # compiling the symbol table file with pic_flag works around
3472fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # a FreeBSD bug that causes programs to crash when -lm is
3473fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # linked before any other PIC object.  But we must not use
3474fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # pic_flag when linking with -static.  The problem exists in
3475fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
347664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
3477fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
3478fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  *-*-hpux*)
3479fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    pic_flag_for_symtable=" $pic_flag"  ;;
3480fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  *)
3481fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    if test "X$my_pic_p" != Xno; then
3482fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      pic_flag_for_symtable=" $pic_flag"
3483fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    fi
3484fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    ;;
3485fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  esac
3486fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
3487fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	esac
3488fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	symtab_cflags=
3489fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	for arg in $LTCFLAGS; do
3490fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  case $arg in
3491fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  -pie | -fpie | -fPIE) ;;
349264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  *) func_append symtab_cflags " $arg" ;;
3493fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  esac
3494fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	done
3495fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3496fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Now compile the dynamic symbol file.
3497fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
3498fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3499fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Clean up the generated files.
3500fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
3501fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3502fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Transform the symbol file into the correct name.
3503fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	symfileobj="$output_objdir/${my_outputname}S.$objext"
3504fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	case $host in
350564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	*cygwin* | *mingw* | *cegcc* )
3506fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test -f "$output_objdir/$my_outputname.def"; then
350764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
350864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
3509fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  else
351064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
351164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
3512fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
3513fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
3514fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	*)
351564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
351664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
3517fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
3518fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	esac
3519fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
3520fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      *)
3521fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_fatal_error "unknown suffix for \`$my_dlsyms'"
3522fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
3523fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      esac
3524fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    else
3525fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # We keep going just in case the user didn't refer to
3526fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
3527fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # really was required.
3528fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3529fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # Nullify the symbol file.
353064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"`
353164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"`
3532fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    fi
3533fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
3534fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3535fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_win32_libid arg
3536fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# return the library type of file 'arg'
3537fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#
3538fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Need a lot of goo to handle *both* DLLs and import libs
3539fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Has to be a shell function in order to 'eat' the argument
3540fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# that is supplied when $file_magic_command is called.
354164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Despite the name, also deal with 64 bit binaries.
3542fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_win32_libid ()
3543fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{
3544fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  $opt_debug
3545fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  win32_libid_type="unknown"
3546fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  win32_fileres=`file -L $1 2>/dev/null`
3547fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  case $win32_fileres in
3548fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  *ar\ archive\ import\ library*) # definitely import
3549fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    win32_libid_type="x86 archive import"
3550fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    ;;
3551fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  *ar\ archive*) # could be an import, or static
355264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD.
3553fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
355464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci       $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then
355564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      func_to_tool_file "$1" func_convert_file_msys_to_w32
355664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" |
3557fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	$SED -n -e '
3558fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    1,100{
3559fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		/ I /{
3560fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		    s,.*,import,
3561fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		    p
3562fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		    q
3563fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		}
3564fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    }'`
3565fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      case $win32_nmres in
3566fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      import*)  win32_libid_type="x86 archive import";;
3567fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      *)        win32_libid_type="x86 archive static";;
3568fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      esac
3569fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    fi
3570fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    ;;
3571fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  *DLL*)
3572fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    win32_libid_type="x86 DLL"
3573fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    ;;
3574fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  *executable*) # but shell scripts are "executable" too...
3575fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    case $win32_fileres in
3576fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    *MS\ Windows\ PE\ Intel*)
3577fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      win32_libid_type="x86 DLL"
3578fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      ;;
3579fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    esac
3580fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    ;;
3581fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  esac
3582fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  $ECHO "$win32_libid_type"
3583fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
3584fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
358564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_cygming_dll_for_implib ARG
358664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#
358764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Platform-specific function to extract the
358864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# name of the DLL associated with the specified
358964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# import library ARG.
359064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Invoked by eval'ing the libtool variable
359164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#    $sharedlib_from_linklib_cmd
359264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Result is available in the variable
359364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#    $sharedlib_from_linklib_result
359464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_cygming_dll_for_implib ()
359564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{
359664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  $opt_debug
359764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"`
359864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci}
359964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
360064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs
360164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#
360264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# The is the core of a fallback implementation of a
360364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# platform-specific function to extract the name of the
360464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# DLL associated with the specified import library LIBNAME.
360564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#
360664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# SECTION_NAME is either .idata$6 or .idata$7, depending
360764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# on the platform and compiler that created the implib.
360864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#
360964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Echos the name of the DLL associated with the
361064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# specified import library.
361164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_cygming_dll_for_implib_fallback_core ()
361264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{
361364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  $opt_debug
361464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"`
361564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  $OBJDUMP -s --section "$1" "$2" 2>/dev/null |
361664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    $SED '/^Contents of section '"$match_literal"':/{
361764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      # Place marker at beginning of archive member dllname section
361864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      s/.*/====MARK====/
361964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      p
362064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      d
362164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    }
362264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    # These lines can sometimes be longer than 43 characters, but
362364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    # are always uninteresting
362464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    /:[	 ]*file format pe[i]\{,1\}-/d
362564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    /^In archive [^:]*:/d
362664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    # Ensure marker is printed
362764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    /^====MARK====/p
362864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    # Remove all lines with less than 43 characters
362964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    /^.\{43\}/!d
363064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    # From remaining lines, remove first 43 characters
363164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    s/^.\{43\}//' |
363264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    $SED -n '
363364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      # Join marker and all lines until next marker into a single line
363464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      /^====MARK====/ b para
363564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      H
363664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      $ b para
363764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      b
363864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      :para
363964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      x
364064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      s/\n//g
364164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      # Remove the marker
364264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      s/^====MARK====//
364364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      # Remove trailing dots and whitespace
364464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      s/[\. \t]*$//
364564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      # Print
364664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      /./p' |
364764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    # we now have a list, one entry per line, of the stringified
364864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    # contents of the appropriate section of all members of the
364964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    # archive which possess that section. Heuristic: eliminate
365064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    # all those which have a first or second character that is
365164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    # a '.' (that is, objdump's representation of an unprintable
365264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    # character.) This should work for all archives with less than
365364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    # 0x302f exports -- but will fail for DLLs whose name actually
365464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    # begins with a literal '.' or a single character followed by
365564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    # a '.'.
365664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    #
365764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    # Of those that remain, print the first one.
365864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    $SED -e '/^\./d;/^.\./d;q'
365964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci}
366064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
366164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_cygming_gnu_implib_p ARG
366264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# This predicate returns with zero status (TRUE) if
366364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# ARG is a GNU/binutils-style import library. Returns
366464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# with nonzero status (FALSE) otherwise.
366564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_cygming_gnu_implib_p ()
366664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{
366764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  $opt_debug
366864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  func_to_tool_file "$1" func_convert_file_msys_to_w32
366964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'`
367064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  test -n "$func_cygming_gnu_implib_tmp"
367164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci}
367264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
367364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_cygming_ms_implib_p ARG
367464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# This predicate returns with zero status (TRUE) if
367564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# ARG is an MS-style import library. Returns
367664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# with nonzero status (FALSE) otherwise.
367764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_cygming_ms_implib_p ()
367864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{
367964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  $opt_debug
368064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  func_to_tool_file "$1" func_convert_file_msys_to_w32
368164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'`
368264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  test -n "$func_cygming_ms_implib_tmp"
368364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci}
368464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
368564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_cygming_dll_for_implib_fallback ARG
368664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Platform-specific function to extract the
368764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# name of the DLL associated with the specified
368864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# import library ARG.
368964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#
369064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# This fallback implementation is for use when $DLLTOOL
369164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# does not support the --identify-strict option.
369264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Invoked by eval'ing the libtool variable
369364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#    $sharedlib_from_linklib_cmd
369464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Result is available in the variable
369564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#    $sharedlib_from_linklib_result
369664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_cygming_dll_for_implib_fallback ()
369764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{
369864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  $opt_debug
369964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  if func_cygming_gnu_implib_p "$1" ; then
370064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    # binutils import library
370164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"`
370264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  elif func_cygming_ms_implib_p "$1" ; then
370364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    # ms-generated import library
370464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"`
370564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  else
370664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    # unknown
370764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    sharedlib_from_linklib_result=""
370864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  fi
370964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci}
3710fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3711fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3712fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_extract_an_archive dir oldlib
3713fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_extract_an_archive ()
3714fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{
3715fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    $opt_debug
3716fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    f_ex_an_ar_dir="$1"; shift
3717fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    f_ex_an_ar_oldlib="$1"
371864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    if test "$lock_old_archive_extraction" = yes; then
371964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      lockfile=$f_ex_an_ar_oldlib.lock
372064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
372164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	func_echo "Waiting for $lockfile to be removed"
372264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	sleep 2
372364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      done
372464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    fi
372564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \
372664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		   'stat=$?; rm -f "$lockfile"; exit $stat'
372764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    if test "$lock_old_archive_extraction" = yes; then
372864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      $opt_dry_run || rm -f "$lockfile"
372964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    fi
3730fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
3731fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville     :
3732fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    else
3733fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
3734fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    fi
3735fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
3736fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3737fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3738fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_extract_archives gentop oldlib ...
3739fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_extract_archives ()
3740fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{
3741fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    $opt_debug
3742fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    my_gentop="$1"; shift
3743fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    my_oldlibs=${1+"$@"}
3744fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    my_oldobjs=""
3745fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    my_xlib=""
3746fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    my_xabs=""
3747fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    my_xdir=""
3748fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3749fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    for my_xlib in $my_oldlibs; do
3750fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # Extract the objects.
3751fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      case $my_xlib in
3752fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	[\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
3753fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	*) my_xabs=`pwd`"/$my_xlib" ;;
3754fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      esac
3755fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      func_basename "$my_xlib"
3756fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      my_xlib="$func_basename_result"
3757fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      my_xlib_u=$my_xlib
3758fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      while :; do
3759fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        case " $extracted_archives " in
3760fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	*" $my_xlib_u "*)
3761fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_arith $extracted_serial + 1
3762fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  extracted_serial=$func_arith_result
3763fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  my_xlib_u=lt$extracted_serial-$my_xlib ;;
3764fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	*) break ;;
3765fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	esac
3766fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      done
3767fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      extracted_archives="$extracted_archives $my_xlib_u"
3768fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      my_xdir="$my_gentop/$my_xlib_u"
3769fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3770fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      func_mkdir_p "$my_xdir"
3771fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3772fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      case $host in
3773fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      *-darwin*)
3774fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_verbose "Extracting $my_xabs"
3775fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Do not bother doing anything if just a dry run
3776fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	$opt_dry_run || {
3777fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  darwin_orig_dir=`pwd`
3778fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  cd $my_xdir || exit $?
3779fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  darwin_archive=$my_xabs
3780fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  darwin_curdir=`pwd`
3781fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  darwin_base_archive=`basename "$darwin_archive"`
3782fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
3783fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test -n "$darwin_arches"; then
3784fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
3785fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    darwin_arch=
3786fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
3787fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    for darwin_arch in  $darwin_arches ; do
3788fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
3789fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
3790fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
3791fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      func_extract_an_archive "`pwd`" "${darwin_base_archive}"
3792fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      cd "$darwin_curdir"
3793fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
3794fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    done # $darwin_arches
3795fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville            ## Okay now we've a bunch of thin objects, gotta fatten them up :)
3796fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
3797fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    darwin_file=
3798fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    darwin_files=
3799fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    for darwin_file in $darwin_filelist; do
380064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP`
3801fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      $LIPO -create -output "$darwin_file" $darwin_files
3802fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    done # $darwin_filelist
3803fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    $RM -rf unfat-$$
3804fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    cd "$darwin_orig_dir"
3805fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  else
3806fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    cd $darwin_orig_dir
3807fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    func_extract_an_archive "$my_xdir" "$my_xabs"
3808fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi # $darwin_arches
3809fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	} # !$opt_dry_run
3810fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
3811fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      *)
3812fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        func_extract_an_archive "$my_xdir" "$my_xabs"
3813fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
3814fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      esac
381564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP`
3816fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    done
3817fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3818fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    func_extract_archives_result="$my_oldobjs"
3819fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
3820fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3821fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
382264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_emit_wrapper [arg=no]
3823fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#
382464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Emit a libtool wrapper script on stdout.
382564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Don't directly open a file because we may want to
3826fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# incorporate the script contents within a cygwin/mingw
3827fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# wrapper executable.  Must ONLY be called from within
382864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_mode_link because it depends on a number of variables
3829fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# set therein.
3830fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#
383164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
3832fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# variable will take.  If 'yes', then the emitted script
3833fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# will assume that the directory in which it is stored is
383464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# the $objdir directory.  This is a cygwin/mingw-specific
3835fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# behavior.
3836fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_emit_wrapper ()
3837fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{
383864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	func_emit_wrapper_arg1=${1-no}
3839fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3840fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	$ECHO "\
3841fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#! $SHELL
3842fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3843fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# $output - temporary wrapper script for $objdir/$outputname
3844fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
3845fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#
3846fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# The $output program cannot be directly executed until all the libtool
3847fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# libraries that it depends on are installed.
3848fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#
3849fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# This wrapper script should never be moved out of the build directory.
3850fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# If it is, it will not operate correctly.
3851fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3852fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Sed substitution that helps us do robust quoting.  It backslashifies
3853fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# metacharacters that are still active within double-quoted strings.
3854fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillesed_quote_subst='$sed_quote_subst'
3855fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3856fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Be Bourne compatible
3857fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleif test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
3858fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  emulate sh
3859fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  NULLCMD=:
3860fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
3861fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  # is contrary to our usage.  Disable this feature.
3862fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  alias -g '\${1+\"\$@\"}'='\"\$@\"'
3863fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  setopt NO_GLOB_SUBST
3864fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleelse
3865fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
3866fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefi
3867fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleBIN_SH=xpg4; export BIN_SH # for Tru64
3868fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleDUALCASE=1; export DUALCASE # for MKS sh
3869fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3870fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# The HP-UX ksh and POSIX shell print the target directory to stdout
3871fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# if CDPATH is set.
3872fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
3873fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3874fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillerelink_command=\"$relink_command\"
3875fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3876fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# This environment variable determines our operation mode.
3877fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleif test \"\$libtool_install_magic\" = \"$magic\"; then
3878fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  # install mode needs the following variables:
3879fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  generated_by_libtool_version='$macro_version'
3880fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  notinst_deplibs='$notinst_deplibs'
3881fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleelse
3882fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  # When we are sourced in execute mode, \$file and \$ECHO are already set.
3883fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  if test \"\$libtool_execute_magic\" != \"$magic\"; then
388464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    file=\"\$0\""
388564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
388664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"`
388764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    $ECHO "\
388864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
388964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# A function that is used when there is no print builtin or printf.
389064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_fallback_echo ()
389164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{
389264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  eval 'cat <<_LTECHO_EOF
389364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci\$1
389464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci_LTECHO_EOF'
389564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci}
389664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    ECHO=\"$qECHO\"
389764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  fi
389864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
389964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Very basic option parsing. These options are (a) specific to
390064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# the libtool wrapper, (b) are identical between the wrapper
390164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# /script/ and the wrapper /executable/ which is used only on
390264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# windows platforms, and (c) all begin with the string "--lt-"
390364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# (application programs are unlikely to have options which match
390464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# this pattern).
390564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#
390664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# There are only two supported options: --lt-debug and
390764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# --lt-dump-script. There is, deliberately, no --lt-help.
390864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#
390964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# The first argument to this parsing function should be the
391064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# script's $0 value, followed by "$@".
391164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcilt_option_debug=
391264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_parse_lt_options ()
391364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{
391464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  lt_script_arg0=\$0
391564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  shift
391664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  for lt_opt
391764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  do
391864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    case \"\$lt_opt\" in
391964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    --lt-debug) lt_option_debug=1 ;;
392064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    --lt-dump-script)
392164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\`
392264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=.
392364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\`
392464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        cat \"\$lt_dump_D/\$lt_dump_F\"
392564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        exit 0
392664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      ;;
392764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    --lt-*)
392864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2
392964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        exit 1
393064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      ;;
393164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    esac
393264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  done
393364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
393464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  # Print the debug banner immediately:
393564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  if test -n \"\$lt_option_debug\"; then
393664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2
393764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  fi
393864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci}
393964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
394064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Used when --lt-debug. Prints its arguments to stdout
394164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# (redirection is the responsibility of the caller)
394264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_lt_dump_args ()
394364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{
394464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  lt_dump_args_N=1;
394564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  for lt_arg
394664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  do
394764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\"
394864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    lt_dump_args_N=\`expr \$lt_dump_args_N + 1\`
394964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  done
395064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci}
395164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
395264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Core function for launching the target application
395364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_exec_program_core ()
395464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{
3955fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville"
395664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  case $host in
395764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  # Backslashes separate directories on plain windows
395864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  *-*-mingw | *-*-os2* | *-cegcc*)
395964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    $ECHO "\
396064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      if test -n \"\$lt_option_debug\"; then
396164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2
396264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        func_lt_dump_args \${1+\"\$@\"} 1>&2
396364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      fi
396464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
396564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci"
396664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    ;;
396764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
396864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  *)
396964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    $ECHO "\
397064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      if test -n \"\$lt_option_debug\"; then
397164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2
397264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        func_lt_dump_args \${1+\"\$@\"} 1>&2
397364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      fi
397464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      exec \"\$progdir/\$program\" \${1+\"\$@\"}
397564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci"
397664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    ;;
397764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  esac
397864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  $ECHO "\
397964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
398064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      exit 1
398164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci}
398264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
398364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# A function to encapsulate launching the target application
398464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# Strips options in the --lt-* namespace from \$@ and
398564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# launches target application with the remaining arguments.
398664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_exec_program ()
398764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{
398864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  case \" \$* \" in
398964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  *\\ --lt-*)
399064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    for lt_wr_arg
399164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    do
399264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      case \$lt_wr_arg in
399364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      --lt-*) ;;
399464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
399564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      esac
399664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      shift
399764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    done ;;
399864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  esac
399964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  func_exec_program_core \${1+\"\$@\"}
400064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci}
400164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
400264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  # Parse options
400364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  func_parse_lt_options \"\$0\" \${1+\"\$@\"}
4004fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
4005fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  # Find the directory that this script lives in.
400664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\`
4007fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
4008fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
4009fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  # Follow symbolic links until we get to the real thisdir.
401064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\`
4011fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  while test -n \"\$file\"; do
401264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\`
4013fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
4014fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    # If there was a directory component, then change thisdir.
4015fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    if test \"x\$destdir\" != \"x\$file\"; then
4016fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      case \"\$destdir\" in
4017fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
4018fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      *) thisdir=\"\$thisdir/\$destdir\" ;;
4019fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      esac
4020fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    fi
4021fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
402264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\`
402364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\`
4024fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  done
4025fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
4026fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  # Usually 'no', except on cygwin/mingw when embedded into
4027fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  # the cwrapper.
4028fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1
4029fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
4030fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    # special case for '.'
4031fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    if test \"\$thisdir\" = \".\"; then
4032fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      thisdir=\`pwd\`
4033fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    fi
4034fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    # remove .libs from thisdir
4035fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    case \"\$thisdir\" in
403664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;;
4037fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    $objdir )   thisdir=. ;;
4038fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    esac
4039fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  fi
4040fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
4041fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  # Try to get the absolute directory name.
4042fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  absdir=\`cd \"\$thisdir\" && pwd\`
4043fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  test -n \"\$absdir\" && thisdir=\"\$absdir\"
4044fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville"
4045fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
4046fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test "$fast_install" = yes; then
4047fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  $ECHO "\
4048fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  program=lt-'$outputname'$exeext
4049fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  progdir=\"\$thisdir/$objdir\"
4050fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
4051fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  if test ! -f \"\$progdir/\$program\" ||
4052fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
4053fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
4054fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
4055fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    file=\"\$\$-\$program\"
4056fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
4057fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    if test ! -d \"\$progdir\"; then
4058fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      $MKDIR \"\$progdir\"
4059fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    else
4060fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      $RM \"\$progdir/\$file\"
4061fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    fi"
4062fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
4063fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  $ECHO "\
4064fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
4065fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    # relink executable if necessary
4066fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    if test -n \"\$relink_command\"; then
4067fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
4068fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      else
4069fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	$ECHO \"\$relink_command_output\" >&2
4070fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	$RM \"\$progdir/\$file\"
4071fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	exit 1
4072fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
4073fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    fi
4074fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
4075fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
4076fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    { $RM \"\$progdir/\$program\";
4077fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
4078fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    $RM \"\$progdir/\$file\"
4079fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  fi"
4080fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	else
4081fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  $ECHO "\
4082fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  program='$outputname'
4083fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  progdir=\"\$thisdir/$objdir\"
4084fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville"
4085fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
4086fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
4087fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	$ECHO "\
4088fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
4089fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  if test -f \"\$progdir/\$program\"; then"
4090fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
409164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	# fixup the dll searchpath if we need to.
409264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	#
409364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	# Fix the DLL searchpath if we need to.  Do this before prepending
409464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	# to shlibpath, because on Windows, both are PATH and uninstalled
409564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	# libraries must come first.
409664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	if test -n "$dllsearchpath"; then
409764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  $ECHO "\
409864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    # Add the dll search path components to the executable PATH
409964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    PATH=$dllsearchpath:\$PATH
410064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci"
410164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	fi
410264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
4103fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Export our shlibpath_var if we have one.
4104fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
4105fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  $ECHO "\
4106fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    # Add our own library path to $shlibpath_var
4107fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
4108fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
4109fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    # Some systems cannot cope with colon-terminated $shlibpath_var
4110fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    # The second colon is a workaround for a bug in BeOS R4 sed
411164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\`
4112fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
4113fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    export $shlibpath_var
4114fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville"
4115fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
4116fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
4117fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	$ECHO "\
4118fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    if test \"\$libtool_execute_magic\" != \"$magic\"; then
4119fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # Run the actual program with our arguments.
412064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      func_exec_program \${1+\"\$@\"}
4121fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    fi
4122fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  else
4123fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    # The program doesn't exist.
4124fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
4125fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
412664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
4127fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    exit 1
4128fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  fi
4129fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefi\
4130fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville"
4131fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
413264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
4133fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
4134fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_emit_cwrapperexe_src
4135fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# emit the source code for a wrapper executable on stdout
4136fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Must ONLY be called from within func_mode_link because
4137fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# it depends on a number of variable set therein.
4138fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_emit_cwrapperexe_src ()
4139fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{
4140fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	cat <<EOF
4141fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
4142fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
4143fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville   Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
4144fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
4145fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville   The $output program cannot be directly executed until all the libtool
4146fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville   libraries that it depends on are installed.
4147fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
4148fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville   This wrapper executable should never be moved out of the build directory.
4149fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville   If it is, it will not operate correctly.
4150fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville*/
4151fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleEOF
4152fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    cat <<"EOF"
415364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#ifdef _MSC_VER
415464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# define _CRT_SECURE_NO_DEPRECATE 1
415564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#endif
4156fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#include <stdio.h>
4157fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#include <stdlib.h>
4158fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#ifdef _MSC_VER
4159fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# include <direct.h>
4160fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# include <process.h>
4161fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# include <io.h>
4162fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#else
4163fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# include <unistd.h>
4164fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# include <stdint.h>
4165fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# ifdef __CYGWIN__
4166fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#  include <io.h>
4167fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# endif
4168fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif
4169fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#include <malloc.h>
4170fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#include <stdarg.h>
4171fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#include <assert.h>
4172fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#include <string.h>
4173fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#include <ctype.h>
4174fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#include <errno.h>
4175fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#include <fcntl.h>
4176fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#include <sys/stat.h>
4177fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
417864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci/* declarations of non-ANSI functions */
417964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#if defined(__MINGW32__)
418064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# ifdef __STRICT_ANSI__
418164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciint _putenv (const char *);
418264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# endif
418364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#elif defined(__CYGWIN__)
418464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# ifdef __STRICT_ANSI__
418564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcichar *realpath (const char *, char *);
418664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciint putenv (char *);
418764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciint setenv (const char *, const char *, int);
418864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# endif
418964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci/* #elif defined (other platforms) ... */
419064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#endif
419164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
419264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci/* portability defines, excluding path handling macros */
419364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#if defined(_MSC_VER)
419464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# define setmode _setmode
419564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# define stat    _stat
419664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# define chmod   _chmod
419764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# define getcwd  _getcwd
419864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# define putenv  _putenv
419964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# define S_IXUSR _S_IEXEC
420064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# ifndef _INTPTR_T_DEFINED
420164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#  define _INTPTR_T_DEFINED
420264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#  define intptr_t int
420364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# endif
420464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#elif defined(__MINGW32__)
420564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# define setmode _setmode
420664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# define stat    _stat
420764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# define chmod   _chmod
420864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# define getcwd  _getcwd
420964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# define putenv  _putenv
421064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#elif defined(__CYGWIN__)
421164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# define HAVE_SETENV
421264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# define FOPEN_WB "wb"
421364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci/* #elif defined (other platforms) ... */
421464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#endif
421564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
4216fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#if defined(PATH_MAX)
4217fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# define LT_PATHMAX PATH_MAX
4218fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#elif defined(MAXPATHLEN)
4219fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# define LT_PATHMAX MAXPATHLEN
4220fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#else
4221fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# define LT_PATHMAX 1024
4222fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif
4223fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
4224fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#ifndef S_IXOTH
4225fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# define S_IXOTH 0
4226fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif
4227fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#ifndef S_IXGRP
4228fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# define S_IXGRP 0
4229fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif
4230fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
423164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci/* path handling portability macros */
4232fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#ifndef DIR_SEPARATOR
4233fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# define DIR_SEPARATOR '/'
4234fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# define PATH_SEPARATOR ':'
4235fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif
4236fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
4237fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
4238fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  defined (__OS2__)
4239fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# define HAVE_DOS_BASED_FILE_SYSTEM
4240fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# define FOPEN_WB "wb"
4241fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# ifndef DIR_SEPARATOR_2
4242fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#  define DIR_SEPARATOR_2 '\\'
4243fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# endif
4244fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# ifndef PATH_SEPARATOR_2
4245fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#  define PATH_SEPARATOR_2 ';'
4246fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# endif
4247fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif
4248fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
4249fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#ifndef DIR_SEPARATOR_2
4250fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
4251fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#else /* DIR_SEPARATOR_2 */
4252fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# define IS_DIR_SEPARATOR(ch) \
4253fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	(((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
4254fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif /* DIR_SEPARATOR_2 */
4255fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
4256fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#ifndef PATH_SEPARATOR_2
4257fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
4258fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#else /* PATH_SEPARATOR_2 */
4259fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
4260fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif /* PATH_SEPARATOR_2 */
4261fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
4262fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#ifndef FOPEN_WB
4263fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# define FOPEN_WB "w"
4264fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif
4265fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#ifndef _O_BINARY
4266fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# define _O_BINARY 0
4267fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif
4268fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
4269fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
4270fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#define XFREE(stale) do { \
4271fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  if (stale) { free ((void *) stale); stale = 0; } \
4272fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} while (0)
4273fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
427464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#if defined(LT_DEBUGWRAPPER)
427564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcistatic int lt_debug = 1;
4276fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#else
427764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcistatic int lt_debug = 0;
4278fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif
4279fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
428064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciconst char *program_name = "libtool-wrapper"; /* in case xstrdup fails */
4281fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
4282fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillevoid *xmalloc (size_t num);
4283fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillechar *xstrdup (const char *string);
4284fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleconst char *base_name (const char *name);
4285fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillechar *find_executable (const char *wrapper);
4286fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillechar *chase_symlinks (const char *pathspec);
4287fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleint make_executable (const char *path);
4288fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleint check_executable (const char *path);
4289fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillechar *strendzap (char *str, const char *pat);
429064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcivoid lt_debugprintf (const char *file, int line, const char *fmt, ...);
429164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcivoid lt_fatal (const char *file, int line, const char *message, ...);
429264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcistatic const char *nonnull (const char *s);
429364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcistatic const char *nonempty (const char *s);
429464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcivoid lt_setenv (const char *name, const char *value);
429564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcichar *lt_extend_str (const char *orig_value, const char *add, int to_end);
429664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcivoid lt_update_exe_path (const char *name, const char *value);
429764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcivoid lt_update_lib_path (const char *name, const char *value);
429864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcichar **prepare_spawn (char **argv);
429964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcivoid lt_dump_script (FILE *f);
430064d8d8f89050c5ada85341f967af391f4716a7cbUlas KirazciEOF
4301fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
430264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    cat <<EOF
430364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcivolatile const char * MAGIC_EXE = "$magic_exe";
430464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciconst char * LIB_PATH_VARNAME = "$shlibpath_var";
4305fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleEOF
4306fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
430764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
430864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci              func_to_host_path "$temp_rpath"
430964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      cat <<EOF
431064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciconst char * LIB_PATH_VALUE   = "$func_to_host_path_result";
431164d8d8f89050c5ada85341f967af391f4716a7cbUlas KirazciEOF
431264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    else
431364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      cat <<"EOF"
431464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciconst char * LIB_PATH_VALUE   = "";
431564d8d8f89050c5ada85341f967af391f4716a7cbUlas KirazciEOF
431664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    fi
4317fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
431864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    if test -n "$dllsearchpath"; then
431964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci              func_to_host_path "$dllsearchpath:"
432064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      cat <<EOF
432164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciconst char * EXE_PATH_VARNAME = "PATH";
432264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciconst char * EXE_PATH_VALUE   = "$func_to_host_path_result";
432364d8d8f89050c5ada85341f967af391f4716a7cbUlas KirazciEOF
432464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    else
432564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      cat <<"EOF"
432664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciconst char * EXE_PATH_VARNAME = "";
432764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciconst char * EXE_PATH_VALUE   = "";
432864d8d8f89050c5ada85341f967af391f4716a7cbUlas KirazciEOF
432964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    fi
433064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
433164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    if test "$fast_install" = yes; then
433264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      cat <<EOF
433364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciconst char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
433464d8d8f89050c5ada85341f967af391f4716a7cbUlas KirazciEOF
433564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    else
433664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      cat <<EOF
433764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciconst char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
433864d8d8f89050c5ada85341f967af391f4716a7cbUlas KirazciEOF
433964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    fi
434064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
434164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
434264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    cat <<"EOF"
434364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
434464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#define LTWRAPPER_OPTION_PREFIX         "--lt-"
434564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
434664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcistatic const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
434764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcistatic const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX "dump-script";
434864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcistatic const char *debug_opt            = LTWRAPPER_OPTION_PREFIX "debug";
4349fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
4350fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleint
4351fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillemain (int argc, char *argv[])
4352fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{
4353fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  char **newargz;
435464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  int  newargc;
4355fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  char *tmp_pathspec;
4356fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  char *actual_cwrapper_path;
435764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  char *actual_cwrapper_name;
435864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  char *target_name;
435964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  char *lt_argv_zero;
4360fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  intptr_t rval = 127;
4361fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
4362fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  int i;
4363fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
4364fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  program_name = (char *) xstrdup (base_name (argv[0]));
436564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  newargz = XMALLOC (char *, argc + 1);
4366fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
436764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  /* very simple arg parsing; don't want to rely on getopt
436864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci   * also, copy all non cwrapper options to newargz, except
436964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci   * argz[0], which is handled differently
437064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci   */
437164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  newargc=0;
4372fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  for (i = 1; i < argc; i++)
4373fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    {
4374fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if (strcmp (argv[i], dumpscript_opt) == 0)
4375fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	{
4376fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleEOF
4377fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    case "$host" in
4378fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      *mingw* | *cygwin* )
4379fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		# make stdout use "unix" line endings
4380fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		echo "          setmode(1,_O_BINARY);"
4381fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		;;
4382fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      esac
4383fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
438464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    cat <<"EOF"
438564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  lt_dump_script (stdout);
4386fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  return 0;
4387fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	}
438864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      if (strcmp (argv[i], debug_opt) == 0)
438964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	{
439064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci          lt_debug = 1;
439164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci          continue;
439264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	}
439364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      if (strcmp (argv[i], ltwrapper_option_prefix) == 0)
439464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        {
439564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci          /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
439664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci             namespace, but it is not one of the ones we know about and
439764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci             have already dealt with, above (inluding dump-script), then
439864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci             report an error. Otherwise, targets might begin to believe
439964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci             they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
440064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci             namespace. The first time any user complains about this, we'll
440164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci             need to make LTWRAPPER_OPTION_PREFIX a configure-time option
440264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci             or a configure.ac-settable value.
440364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci           */
440464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci          lt_fatal (__FILE__, __LINE__,
440564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		    "unrecognized %s option: '%s'",
440664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci                    ltwrapper_option_prefix, argv[i]);
440764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        }
440864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      /* otherwise ... */
440964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      newargz[++newargc] = xstrdup (argv[i]);
4410fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    }
441164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  newargz[++newargc] = NULL;
4412fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
4413fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleEOF
441464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    cat <<EOF
441564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  /* The GNU banner must be the first non-error debug message */
441664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n");
4417fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleEOF
4418fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    cat <<"EOF"
441964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]);
442064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name);
442164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
4422fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  tmp_pathspec = find_executable (argv[0]);
4423fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  if (tmp_pathspec == NULL)
442464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]);
442564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  lt_debugprintf (__FILE__, __LINE__,
442664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci                  "(main) found exe (before symlink chase) at: %s\n",
442764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		  tmp_pathspec);
4428fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
4429fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  actual_cwrapper_path = chase_symlinks (tmp_pathspec);
443064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  lt_debugprintf (__FILE__, __LINE__,
443164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci                  "(main) found exe (after symlink chase) at: %s\n",
443264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		  actual_cwrapper_path);
4433fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  XFREE (tmp_pathspec);
4434fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
443564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path));
443664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  strendzap (actual_cwrapper_path, actual_cwrapper_name);
443764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
443864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  /* wrapper name transforms */
443964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  strendzap (actual_cwrapper_name, ".exe");
444064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
444164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  XFREE (actual_cwrapper_name);
444264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  actual_cwrapper_name = tmp_pathspec;
444364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  tmp_pathspec = 0;
444464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
444564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  /* target_name transforms -- use actual target program name; might have lt- prefix */
444664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
444764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  strendzap (target_name, ".exe");
444864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
444964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  XFREE (target_name);
445064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  target_name = tmp_pathspec;
4451fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  tmp_pathspec = 0;
445264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
445364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  lt_debugprintf (__FILE__, __LINE__,
445464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		  "(main) libtool target name: %s\n",
445564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		  target_name);
4456fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleEOF
4457fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
4458fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    cat <<EOF
445964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  newargz[0] =
4460fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    XMALLOC (char, (strlen (actual_cwrapper_path) +
446164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		    strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
446264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  strcpy (newargz[0], actual_cwrapper_path);
446364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  strcat (newargz[0], "$objdir");
446464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  strcat (newargz[0], "/");
4465fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleEOF
4466fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
446764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    cat <<"EOF"
446864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  /* stop here, and copy so we don't have to do this twice */
446964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  tmp_pathspec = xstrdup (newargz[0]);
447064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
447164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
447264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  strcat (newargz[0], actual_cwrapper_name);
447364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
447464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  /* DO want the lt- prefix here if it exists, so use target_name */
447564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
447664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  XFREE (tmp_pathspec);
447764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  tmp_pathspec = NULL;
447864d8d8f89050c5ada85341f967af391f4716a7cbUlas KirazciEOF
4479fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
4480fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    case $host_os in
4481fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      mingw*)
4482fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    cat <<"EOF"
4483fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  {
4484fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    char* p;
448564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    while ((p = strchr (newargz[0], '\\')) != NULL)
448664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      {
448764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	*p = '/';
448864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      }
448964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    while ((p = strchr (lt_argv_zero, '\\')) != NULL)
4490fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      {
4491fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	*p = '/';
4492fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      }
4493fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  }
4494fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleEOF
4495fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    ;;
4496fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    esac
4497fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
4498fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    cat <<"EOF"
449964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  XFREE (target_name);
4500fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  XFREE (actual_cwrapper_path);
450164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  XFREE (actual_cwrapper_name);
450264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
450364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
450464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  lt_setenv ("DUALCASE", "1");  /* for MSK sh */
450564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  /* Update the DLL searchpath.  EXE_PATH_VALUE ($dllsearchpath) must
450664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci     be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath)
450764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci     because on Windows, both *_VARNAMEs are PATH but uninstalled
450864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci     libraries must come first. */
450964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
451064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
451164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
451264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n",
451364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		  nonnull (lt_argv_zero));
451464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  for (i = 0; i < newargc; i++)
4515fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    {
451664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n",
451764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		      i, nonnull (newargz[i]));
4518fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    }
4519fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
4520fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleEOF
4521fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
4522fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    case $host_os in
4523fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      mingw*)
452464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		cat <<"EOF"
4525fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  /* execv doesn't actually work on mingw as expected on unix */
452664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  newargz = prepare_spawn (newargz);
452764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
4528fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  if (rval == -1)
4529fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    {
4530fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      /* failed to start process */
453164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      lt_debugprintf (__FILE__, __LINE__,
453264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		      "(main) failed to launch target \"%s\": %s\n",
453364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		      lt_argv_zero, nonnull (strerror (errno)));
4534fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      return 127;
4535fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    }
4536fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  return rval;
4537fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleEOF
4538fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		;;
4539fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      *)
454064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		cat <<"EOF"
454164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  execv (lt_argv_zero, newargz);
4542fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  return rval; /* =127, but avoids unused variable warning */
4543fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleEOF
4544fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		;;
4545fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    esac
4546fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
4547fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    cat <<"EOF"
454864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci}
4549fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
4550fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillevoid *
4551fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillexmalloc (size_t num)
4552fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{
4553fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  void *p = (void *) malloc (num);
4554fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  if (!p)
455564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    lt_fatal (__FILE__, __LINE__, "memory exhausted");
4556fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
4557fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  return p;
4558fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
4559fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
4560fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillechar *
4561fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillexstrdup (const char *string)
4562fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{
4563fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
4564fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville			  string) : NULL;
4565fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
4566fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
4567fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleconst char *
4568fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillebase_name (const char *name)
4569fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{
4570fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  const char *base;
4571fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
4572fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
4573fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  /* Skip over the disk name in MSDOS pathnames. */
4574fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  if (isalpha ((unsigned char) name[0]) && name[1] == ':')
4575fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    name += 2;
4576fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif
4577fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
4578fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  for (base = name; *name; name++)
4579fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    if (IS_DIR_SEPARATOR (*name))
4580fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      base = name + 1;
4581fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  return base;
4582fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
4583fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
4584fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleint
4585fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillecheck_executable (const char *path)
4586fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{
4587fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  struct stat st;
4588fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
458964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n",
459064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci                  nonempty (path));
4591fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  if ((!path) || (!*path))
4592fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    return 0;
4593fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
4594fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  if ((stat (path, &st) >= 0)
4595fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
4596fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    return 1;
4597fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  else
4598fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    return 0;
4599fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
4600fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
4601fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleint
4602fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillemake_executable (const char *path)
4603fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{
4604fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  int rval = 0;
4605fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  struct stat st;
4606fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
460764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n",
460864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci                  nonempty (path));
4609fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  if ((!path) || (!*path))
4610fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    return 0;
4611fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
4612fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  if (stat (path, &st) >= 0)
4613fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    {
4614fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
4615fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    }
4616fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  return rval;
4617fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
4618fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
4619fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville/* Searches for the full path of the wrapper.  Returns
4620fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville   newly allocated full path name if found, NULL otherwise
4621fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville   Does not chase symlinks, even on platforms that support them.
4622fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville*/
4623fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillechar *
4624fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefind_executable (const char *wrapper)
4625fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{
4626fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  int has_slash = 0;
4627fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  const char *p;
4628fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  const char *p_next;
4629fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  /* static buffer for getcwd */
4630fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  char tmp[LT_PATHMAX + 1];
4631fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  int tmp_len;
4632fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  char *concat_name;
4633fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
463464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n",
463564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci                  nonempty (wrapper));
4636fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
4637fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  if ((wrapper == NULL) || (*wrapper == '\0'))
4638fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    return NULL;
4639fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
4640fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  /* Absolute path? */
4641fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
4642fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
4643fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    {
4644fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      concat_name = xstrdup (wrapper);
4645fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if (check_executable (concat_name))
4646fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	return concat_name;
4647fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      XFREE (concat_name);
4648fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    }
4649fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  else
4650fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    {
4651fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif
4652fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if (IS_DIR_SEPARATOR (wrapper[0]))
4653fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	{
4654fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  concat_name = xstrdup (wrapper);
4655fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if (check_executable (concat_name))
4656fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    return concat_name;
4657fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  XFREE (concat_name);
4658fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	}
4659fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
4660fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    }
4661fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif
4662fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
4663fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  for (p = wrapper; *p; p++)
4664fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    if (*p == '/')
4665fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      {
4666fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	has_slash = 1;
4667fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	break;
4668fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      }
4669fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  if (!has_slash)
4670fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    {
4671fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      /* no slashes; search PATH */
4672fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      const char *path = getenv ("PATH");
4673fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if (path != NULL)
4674fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	{
4675fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  for (p = path; *p; p = p_next)
4676fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    {
4677fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      const char *q;
4678fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      size_t p_len;
4679fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      for (q = p; *q; q++)
4680fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		if (IS_PATH_SEPARATOR (*q))
4681fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  break;
4682fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      p_len = q - p;
4683fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      p_next = (*q == '\0' ? q : q + 1);
4684fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      if (p_len == 0)
4685fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		{
4686fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  /* empty path: current directory */
4687fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  if (getcwd (tmp, LT_PATHMAX) == NULL)
468864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
468964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci                              nonnull (strerror (errno)));
4690fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  tmp_len = strlen (tmp);
4691fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  concat_name =
4692fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		    XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
4693fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  memcpy (concat_name, tmp, tmp_len);
4694fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  concat_name[tmp_len] = '/';
4695fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  strcpy (concat_name + tmp_len + 1, wrapper);
4696fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		}
4697fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      else
4698fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		{
4699fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  concat_name =
4700fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		    XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
4701fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  memcpy (concat_name, p, p_len);
4702fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  concat_name[p_len] = '/';
4703fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  strcpy (concat_name + p_len + 1, wrapper);
4704fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		}
4705fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      if (check_executable (concat_name))
4706fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		return concat_name;
4707fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      XFREE (concat_name);
4708fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    }
4709fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	}
4710fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      /* not found in PATH; assume curdir */
4711fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    }
4712fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  /* Relative path | not found in path: prepend cwd */
4713fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  if (getcwd (tmp, LT_PATHMAX) == NULL)
471464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
471564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci              nonnull (strerror (errno)));
4716fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  tmp_len = strlen (tmp);
4717fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
4718fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  memcpy (concat_name, tmp, tmp_len);
4719fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  concat_name[tmp_len] = '/';
4720fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  strcpy (concat_name + tmp_len + 1, wrapper);
4721fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
4722fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  if (check_executable (concat_name))
4723fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    return concat_name;
4724fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  XFREE (concat_name);
4725fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  return NULL;
4726fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
4727fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
4728fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillechar *
4729fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillechase_symlinks (const char *pathspec)
4730fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{
4731fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#ifndef S_ISLNK
4732fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  return xstrdup (pathspec);
4733fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#else
4734fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  char buf[LT_PATHMAX];
4735fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  struct stat s;
4736fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  char *tmp_pathspec = xstrdup (pathspec);
4737fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  char *p;
4738fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  int has_symlinks = 0;
4739fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  while (strlen (tmp_pathspec) && !has_symlinks)
4740fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    {
474164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      lt_debugprintf (__FILE__, __LINE__,
474264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		      "checking path component for symlinks: %s\n",
474364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		      tmp_pathspec);
4744fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if (lstat (tmp_pathspec, &s) == 0)
4745fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	{
4746fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if (S_ISLNK (s.st_mode) != 0)
4747fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    {
4748fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      has_symlinks = 1;
4749fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      break;
4750fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    }
4751fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
4752fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  /* search backwards for last DIR_SEPARATOR */
4753fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  p = tmp_pathspec + strlen (tmp_pathspec) - 1;
4754fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
4755fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    p--;
4756fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
4757fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    {
4758fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      /* no more DIR_SEPARATORS left */
4759fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      break;
4760fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    }
4761fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  *p = '\0';
4762fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	}
4763fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      else
4764fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	{
476564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  lt_fatal (__FILE__, __LINE__,
476664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		    "error accessing file \"%s\": %s",
476764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		    tmp_pathspec, nonnull (strerror (errno)));
4768fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	}
4769fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    }
4770fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  XFREE (tmp_pathspec);
4771fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
4772fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  if (!has_symlinks)
4773fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    {
4774fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      return xstrdup (pathspec);
4775fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    }
4776fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
4777fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  tmp_pathspec = realpath (pathspec, buf);
4778fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  if (tmp_pathspec == 0)
4779fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    {
478064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      lt_fatal (__FILE__, __LINE__,
478164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		"could not follow symlinks for %s", pathspec);
4782fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    }
4783fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  return xstrdup (tmp_pathspec);
4784fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif
4785fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
4786fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
4787fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillechar *
4788fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillestrendzap (char *str, const char *pat)
4789fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{
4790fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  size_t len, patlen;
4791fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
4792fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  assert (str != NULL);
4793fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  assert (pat != NULL);
4794fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
4795fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  len = strlen (str);
4796fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  patlen = strlen (pat);
4797fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
4798fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  if (patlen <= len)
4799fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    {
4800fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      str += len - patlen;
4801fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if (strcmp (str, pat) == 0)
4802fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	*str = '\0';
4803fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    }
4804fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  return str;
4805fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
4806fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
480764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcivoid
480864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcilt_debugprintf (const char *file, int line, const char *fmt, ...)
480964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{
481064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  va_list args;
481164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  if (lt_debug)
481264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    {
481364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line);
481464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      va_start (args, fmt);
481564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      (void) vfprintf (stderr, fmt, args);
481664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      va_end (args);
481764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    }
481864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci}
481964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
4820fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillestatic void
482164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcilt_error_core (int exit_status, const char *file,
482264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	       int line, const char *mode,
4823fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	       const char *message, va_list ap)
4824fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{
482564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode);
4826fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  vfprintf (stderr, message, ap);
4827fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  fprintf (stderr, ".\n");
4828fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
4829fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  if (exit_status >= 0)
4830fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    exit (exit_status);
4831fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
4832fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
4833fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillevoid
483464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcilt_fatal (const char *file, int line, const char *message, ...)
4835fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{
4836fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  va_list ap;
4837fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  va_start (ap, message);
483864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap);
4839fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  va_end (ap);
4840fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
484164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
484264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcistatic const char *
484364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcinonnull (const char *s)
484464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{
484564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  return s ? s : "(null)";
484664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci}
484764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
484864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcistatic const char *
484964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcinonempty (const char *s)
485064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{
485164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  return (s && !*s) ? "(empty)" : nonnull (s);
485264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci}
485364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
485464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcivoid
485564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcilt_setenv (const char *name, const char *value)
485664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{
485764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  lt_debugprintf (__FILE__, __LINE__,
485864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		  "(lt_setenv) setting '%s' to '%s'\n",
485964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci                  nonnull (name), nonnull (value));
486064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  {
486164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#ifdef HAVE_SETENV
486264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    /* always make a copy, for consistency with !HAVE_SETENV */
486364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    char *str = xstrdup (value);
486464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    setenv (name, str, 1);
486564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#else
486664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    int len = strlen (name) + 1 + strlen (value) + 1;
486764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    char *str = XMALLOC (char, len);
486864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    sprintf (str, "%s=%s", name, value);
486964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    if (putenv (str) != EXIT_SUCCESS)
487064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      {
487164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        XFREE (str);
487264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      }
487364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#endif
487464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  }
487564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci}
487664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
487764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcichar *
487864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcilt_extend_str (const char *orig_value, const char *add, int to_end)
487964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{
488064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  char *new_value;
488164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  if (orig_value && *orig_value)
488264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    {
488364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      int orig_value_len = strlen (orig_value);
488464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      int add_len = strlen (add);
488564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      new_value = XMALLOC (char, add_len + orig_value_len + 1);
488664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      if (to_end)
488764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        {
488864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci          strcpy (new_value, orig_value);
488964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci          strcpy (new_value + orig_value_len, add);
489064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        }
489164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      else
489264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        {
489364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci          strcpy (new_value, add);
489464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci          strcpy (new_value + add_len, orig_value);
489564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        }
489664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    }
489764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  else
489864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    {
489964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      new_value = xstrdup (add);
490064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    }
490164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  return new_value;
490264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci}
490364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
490464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcivoid
490564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcilt_update_exe_path (const char *name, const char *value)
490664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{
490764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  lt_debugprintf (__FILE__, __LINE__,
490864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		  "(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
490964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci                  nonnull (name), nonnull (value));
491064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
491164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  if (name && *name && value && *value)
491264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    {
491364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      char *new_value = lt_extend_str (getenv (name), value, 0);
491464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      /* some systems can't cope with a ':'-terminated path #' */
491564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      int len = strlen (new_value);
491664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
491764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        {
491864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci          new_value[len-1] = '\0';
491964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        }
492064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      lt_setenv (name, new_value);
492164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      XFREE (new_value);
492264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    }
492364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci}
492464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
492564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcivoid
492664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcilt_update_lib_path (const char *name, const char *value)
492764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{
492864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  lt_debugprintf (__FILE__, __LINE__,
492964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		  "(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
493064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci                  nonnull (name), nonnull (value));
493164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
493264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  if (name && *name && value && *value)
493364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    {
493464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      char *new_value = lt_extend_str (getenv (name), value, 0);
493564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      lt_setenv (name, new_value);
493664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      XFREE (new_value);
493764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    }
493864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci}
493964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
494064d8d8f89050c5ada85341f967af391f4716a7cbUlas KirazciEOF
494164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    case $host_os in
494264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      mingw*)
494364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		cat <<"EOF"
494464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
494564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci/* Prepares an argument vector before calling spawn().
494664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci   Note that spawn() does not by itself call the command interpreter
494764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci     (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") :
494864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
494964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci         GetVersionEx(&v);
495064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci         v.dwPlatformId == VER_PLATFORM_WIN32_NT;
495164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      }) ? "cmd.exe" : "command.com").
495264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci   Instead it simply concatenates the arguments, separated by ' ', and calls
495364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci   CreateProcess().  We must quote the arguments since Win32 CreateProcess()
495464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci   interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a
495564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci   special way:
495664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci   - Space and tab are interpreted as delimiters. They are not treated as
495764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci     delimiters if they are surrounded by double quotes: "...".
495864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci   - Unescaped double quotes are removed from the input. Their only effect is
495964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci     that within double quotes, space and tab are treated like normal
496064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci     characters.
496164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci   - Backslashes not followed by double quotes are not special.
496264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci   - But 2*n+1 backslashes followed by a double quote become
496364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci     n backslashes followed by a double quote (n >= 0):
496464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci       \" -> "
496564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci       \\\" -> \"
496664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci       \\\\\" -> \\"
496764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci */
496864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
496964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
497064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcichar **
497164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazciprepare_spawn (char **argv)
497264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{
497364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  size_t argc;
497464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  char **new_argv;
497564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  size_t i;
497664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
497764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  /* Count number of arguments.  */
497864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  for (argc = 0; argv[argc] != NULL; argc++)
497964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    ;
498064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
498164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  /* Allocate new argument vector.  */
498264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  new_argv = XMALLOC (char *, argc + 1);
498364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
498464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  /* Put quoted arguments into the new argument vector.  */
498564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  for (i = 0; i < argc; i++)
498664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    {
498764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      const char *string = argv[i];
498864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
498964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      if (string[0] == '\0')
499064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	new_argv[i] = xstrdup ("\"\"");
499164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL)
499264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	{
499364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL);
499464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  size_t length;
499564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  unsigned int backslashes;
499664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  const char *s;
499764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  char *quoted_string;
499864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  char *p;
499964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
500064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  length = 0;
500164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  backslashes = 0;
500264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  if (quote_around)
500364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    length++;
500464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  for (s = string; *s != '\0'; s++)
500564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    {
500664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      char c = *s;
500764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      if (c == '"')
500864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		length += backslashes + 1;
500964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      length++;
501064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      if (c == '\\')
501164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		backslashes++;
501264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      else
501364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		backslashes = 0;
501464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    }
501564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  if (quote_around)
501664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    length += backslashes + 1;
501764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
501864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  quoted_string = XMALLOC (char, length + 1);
501964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
502064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  p = quoted_string;
502164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  backslashes = 0;
502264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  if (quote_around)
502364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    *p++ = '"';
502464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  for (s = string; *s != '\0'; s++)
502564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    {
502664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      char c = *s;
502764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      if (c == '"')
502864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		{
502964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		  unsigned int j;
503064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		  for (j = backslashes + 1; j > 0; j--)
503164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		    *p++ = '\\';
503264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		}
503364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      *p++ = c;
503464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      if (c == '\\')
503564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		backslashes++;
503664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      else
503764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		backslashes = 0;
503864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    }
503964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  if (quote_around)
504064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    {
504164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      unsigned int j;
504264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      for (j = backslashes; j > 0; j--)
504364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		*p++ = '\\';
504464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      *p++ = '"';
504564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    }
504664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  *p = '\0';
504764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
504864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  new_argv[i] = quoted_string;
504964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	}
505064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      else
505164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	new_argv[i] = (char *) string;
505264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    }
505364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  new_argv[argc] = NULL;
505464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
505564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  return new_argv;
505664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci}
505764d8d8f89050c5ada85341f967af391f4716a7cbUlas KirazciEOF
505864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		;;
505964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    esac
506064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
506164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci            cat <<"EOF"
506264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcivoid lt_dump_script (FILE* f)
506364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{
506464d8d8f89050c5ada85341f967af391f4716a7cbUlas KirazciEOF
506564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    func_emit_wrapper yes |
506664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      $SED -n -e '
506764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcis/^\(.\{79\}\)\(..*\)/\1\
506864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci\2/
506964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcih
507064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcis/\([\\"]\)/\\\1/g
507164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcis/$/\\n/
507264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcis/\([^\n]*\).*/  fputs ("\1", f);/p
507364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcig
507464d8d8f89050c5ada85341f967af391f4716a7cbUlas KirazciD'
507564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci            cat <<"EOF"
507664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci}
5077fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleEOF
5078fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
5079fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# end: func_emit_cwrapperexe_src
5080fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
508164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# func_win32_import_lib_p ARG
508264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci# True if ARG is an import lib, as indicated by $file_magic_cmd
508364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcifunc_win32_import_lib_p ()
508464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{
508564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    $opt_debug
508664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in
508764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    *import*) : ;;
508864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    *) false ;;
508964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    esac
509064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci}
509164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
5092fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_mode_link arg...
5093fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_mode_link ()
5094fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{
5095fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    $opt_debug
5096fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    case $host in
509764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
5098fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # It is impossible to link a dll without this setting, and
5099fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # we shouldn't force the makefile maintainer to figure out
5100fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # which system we are compiling for in order to pass an extra
5101fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # flag for every libtool invocation.
5102fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # allow_undefined=no
5103fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5104fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # FIXME: Unfortunately, there are problems with the above when trying
5105fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # to make a dll which has undefined symbols, in which case not
5106fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # even a static library is built.  For now, we need to specify
5107fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # -no-undefined on the libtool link line when we can be certain
5108fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # that all symbols are satisfied, otherwise we get a static library.
5109fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      allow_undefined=yes
5110fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      ;;
5111fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    *)
5112fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      allow_undefined=yes
5113fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      ;;
5114fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    esac
5115fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    libtool_args=$nonopt
5116fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    base_compile="$nonopt $@"
5117fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    compile_command=$nonopt
5118fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    finalize_command=$nonopt
5119fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5120fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    compile_rpath=
5121fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    finalize_rpath=
5122fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    compile_shlibpath=
5123fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    finalize_shlibpath=
5124fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    convenience=
5125fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    old_convenience=
5126fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    deplibs=
5127fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    old_deplibs=
5128fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    compiler_flags=
5129fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    linker_flags=
5130fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    dllsearchpath=
5131fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    lib_search_path=`pwd`
5132fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    inst_prefix_dir=
5133fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    new_inherited_linker_flags=
5134fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5135fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    avoid_version=no
513664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    bindir=
5137fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    dlfiles=
5138fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    dlprefiles=
5139fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    dlself=no
5140fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    export_dynamic=no
5141fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    export_symbols=
5142fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    export_symbols_regex=
5143fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    generated=
5144fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    libobjs=
5145fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    ltlibs=
5146fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    module=no
5147fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    no_install=no
5148fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    objs=
5149fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    non_pic_objects=
5150fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    precious_files_regex=
5151fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    prefer_static_libs=no
5152fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    preload=no
5153fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    prev=
5154fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    prevarg=
5155fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    release=
5156fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    rpath=
5157fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    xrpath=
5158fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    perm_rpath=
5159fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    temp_rpath=
5160fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    thread_safe=no
5161fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    vinfo=
5162fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    vinfo_number=no
5163fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    weak_libs=
5164fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    single_module="${wl}-single_module"
5165fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    func_infer_tag $base_compile
5166fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5167fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    # We need to know -static, to get the right output filenames.
5168fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    for arg
5169fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    do
5170fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      case $arg in
5171fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      -shared)
5172fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	test "$build_libtool_libs" != yes && \
5173fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_fatal_configuration "can not build a shared library"
5174fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	build_old_libs=no
5175fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	break
5176fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
5177fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      -all-static | -static | -static-libtool-libs)
5178fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	case $arg in
5179fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	-all-static)
5180fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
5181fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    func_warning "complete static linking is impossible in this configuration"
5182fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
5183fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test -n "$link_static_flag"; then
5184fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    dlopen_self=$dlopen_self_static
5185fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
5186fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  prefer_static_libs=yes
5187fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
5188fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	-static)
5189fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
5190fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    dlopen_self=$dlopen_self_static
5191fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
5192fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  prefer_static_libs=built
5193fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
5194fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	-static-libtool-libs)
5195fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
5196fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    dlopen_self=$dlopen_self_static
5197fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
5198fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  prefer_static_libs=yes
5199fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
5200fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	esac
5201fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	build_libtool_libs=no
5202fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	build_old_libs=yes
5203fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	break
5204fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
5205fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      esac
5206fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    done
5207fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5208fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    # See if our shared archives depend on static archives.
5209fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
5210fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5211fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    # Go through the arguments, transforming them on the way.
5212fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    while test "$#" -gt 0; do
5213fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      arg="$1"
5214fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      shift
5215fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      func_quote_for_eval "$arg"
5216fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      qarg=$func_quote_for_eval_unquoted_result
5217fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      func_append libtool_args " $func_quote_for_eval_result"
5218fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5219fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # If the previous option needs an argument, assign it.
5220fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if test -n "$prev"; then
5221fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	case $prev in
5222fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	output)
5223fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_append compile_command " @OUTPUT@"
5224fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_append finalize_command " @OUTPUT@"
5225fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
5226fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	esac
5227fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5228fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	case $prev in
522964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	bindir)
523064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  bindir="$arg"
523164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  prev=
523264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  continue
523364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  ;;
5234fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	dlfiles|dlprefiles)
5235fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test "$preload" = no; then
5236fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # Add the symbol object into the linking commands.
5237fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    func_append compile_command " @SYMFILE@"
5238fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    func_append finalize_command " @SYMFILE@"
5239fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    preload=yes
5240fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
5241fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  case $arg in
5242fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  *.la | *.lo) ;;  # We handle these cases below.
5243fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  force)
5244fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    if test "$dlself" = no; then
5245fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      dlself=needless
5246fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      export_dynamic=yes
5247fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    fi
5248fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    prev=
5249fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    continue
5250fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    ;;
5251fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  self)
5252fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    if test "$prev" = dlprefiles; then
5253fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      dlself=yes
5254fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
5255fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      dlself=yes
5256fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    else
5257fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      dlself=needless
5258fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      export_dynamic=yes
5259fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    fi
5260fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    prev=
5261fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    continue
5262fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    ;;
5263fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  *)
5264fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    if test "$prev" = dlfiles; then
526564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      func_append dlfiles " $arg"
5266fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    else
526764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      func_append dlprefiles " $arg"
5268fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    fi
5269fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    prev=
5270fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    continue
5271fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    ;;
5272fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  esac
5273fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
5274fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	expsyms)
5275fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  export_symbols="$arg"
5276fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  test -f "$arg" \
5277fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    || func_fatal_error "symbol file \`$arg' does not exist"
5278fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  prev=
5279fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  continue
5280fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
5281fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	expsyms_regex)
5282fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  export_symbols_regex="$arg"
5283fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  prev=
5284fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  continue
5285fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
5286fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	framework)
5287fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  case $host in
5288fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    *-*-darwin*)
5289fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      case "$deplibs " in
5290fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		*" $qarg.ltframework "*) ;;
529164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		*) func_append deplibs " $qarg.ltframework" # this is fixed later
5292fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		   ;;
5293fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      esac
5294fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      ;;
5295fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  esac
5296fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  prev=
5297fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  continue
5298fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
5299fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	inst_prefix)
5300fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  inst_prefix_dir="$arg"
5301fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  prev=
5302fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  continue
5303fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
5304fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	objectlist)
5305fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test -f "$arg"; then
5306fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    save_arg=$arg
5307fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    moreargs=
5308fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    for fil in `cat "$save_arg"`
5309fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    do
531064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#	      func_append moreargs " $fil"
5311fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      arg=$fil
5312fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      # A libtool-controlled object.
5313fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5314fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      # Check to see that this really is a libtool object.
5315fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      if func_lalib_unsafe_p "$arg"; then
5316fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		pic_object=
5317fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		non_pic_object=
5318fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5319fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		# Read the .lo file
5320fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		func_source "$arg"
5321fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5322fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		if test -z "$pic_object" ||
5323fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		   test -z "$non_pic_object" ||
5324fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		   test "$pic_object" = none &&
5325fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		   test "$non_pic_object" = none; then
5326fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  func_fatal_error "cannot find name of object for \`$arg'"
5327fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		fi
5328fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5329fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		# Extract subdirectory from the argument.
5330fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		func_dirname "$arg" "/" ""
5331fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		xdir="$func_dirname_result"
5332fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5333fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		if test "$pic_object" != none; then
5334fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  # Prepend the subdirectory the object is found in.
5335fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  pic_object="$xdir$pic_object"
5336fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5337fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  if test "$prev" = dlfiles; then
5338fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		    if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
533964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		      func_append dlfiles " $pic_object"
5340fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		      prev=
5341fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		      continue
5342fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		    else
5343fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		      # If libtool objects are unsupported, then we need to preload.
5344fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		      prev=dlprefiles
5345fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		    fi
5346fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  fi
5347fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5348fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  # CHECK ME:  I think I busted this.  -Ossama
5349fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  if test "$prev" = dlprefiles; then
5350fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		    # Preload the old-style object.
535164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		    func_append dlprefiles " $pic_object"
5352fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		    prev=
5353fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  fi
5354fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5355fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  # A PIC object.
5356fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  func_append libobjs " $pic_object"
5357fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  arg="$pic_object"
5358fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		fi
5359fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5360fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		# Non-PIC object.
5361fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		if test "$non_pic_object" != none; then
5362fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  # Prepend the subdirectory the object is found in.
5363fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  non_pic_object="$xdir$non_pic_object"
5364fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5365fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  # A standard non-PIC object
5366fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  func_append non_pic_objects " $non_pic_object"
5367fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  if test -z "$pic_object" || test "$pic_object" = none ; then
5368fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		    arg="$non_pic_object"
5369fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  fi
5370fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		else
5371fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  # If the PIC object exists, use it instead.
5372fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  # $xdir was prepended to $pic_object above.
5373fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  non_pic_object="$pic_object"
5374fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  func_append non_pic_objects " $non_pic_object"
5375fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		fi
5376fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      else
5377fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		# Only an error if not doing a dry-run.
5378fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		if $opt_dry_run; then
5379fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  # Extract subdirectory from the argument.
5380fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  func_dirname "$arg" "/" ""
5381fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  xdir="$func_dirname_result"
5382fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5383fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  func_lo2o "$arg"
5384fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  pic_object=$xdir$objdir/$func_lo2o_result
5385fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  non_pic_object=$xdir$func_lo2o_result
5386fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  func_append libobjs " $pic_object"
5387fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  func_append non_pic_objects " $non_pic_object"
5388fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	        else
5389fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  func_fatal_error "\`$arg' is not a valid libtool object"
5390fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		fi
5391fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      fi
5392fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    done
5393fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  else
5394fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    func_fatal_error "link input file \`$arg' does not exist"
5395fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
5396fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  arg=$save_arg
5397fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  prev=
5398fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  continue
5399fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
5400fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	precious_regex)
5401fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  precious_files_regex="$arg"
5402fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  prev=
5403fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  continue
5404fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
5405fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	release)
5406fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  release="-$arg"
5407fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  prev=
5408fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  continue
5409fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
5410fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	rpath | xrpath)
5411fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # We need an absolute path.
5412fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  case $arg in
5413fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  [\\/]* | [A-Za-z]:[\\/]*) ;;
5414fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  *)
5415fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    func_fatal_error "only absolute run-paths are allowed"
5416fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    ;;
5417fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  esac
5418fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test "$prev" = rpath; then
5419fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    case "$rpath " in
5420fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    *" $arg "*) ;;
542164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    *) func_append rpath " $arg" ;;
5422fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    esac
5423fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  else
5424fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    case "$xrpath " in
5425fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    *" $arg "*) ;;
542664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    *) func_append xrpath " $arg" ;;
5427fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    esac
5428fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
5429fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  prev=
5430fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  continue
5431fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
5432fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	shrext)
5433fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  shrext_cmds="$arg"
5434fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  prev=
5435fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  continue
5436fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
5437fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	weak)
543864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  func_append weak_libs " $arg"
5439fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  prev=
5440fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  continue
5441fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
5442fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	xcclinker)
544364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  func_append linker_flags " $qarg"
544464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  func_append compiler_flags " $qarg"
5445fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  prev=
5446fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_append compile_command " $qarg"
5447fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_append finalize_command " $qarg"
5448fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  continue
5449fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
5450fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	xcompiler)
545164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  func_append compiler_flags " $qarg"
5452fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  prev=
5453fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_append compile_command " $qarg"
5454fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_append finalize_command " $qarg"
5455fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  continue
5456fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
5457fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	xlinker)
545864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  func_append linker_flags " $qarg"
545964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  func_append compiler_flags " $wl$qarg"
5460fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  prev=
5461fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_append compile_command " $wl$qarg"
5462fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_append finalize_command " $wl$qarg"
5463fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  continue
5464fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
5465fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	*)
5466fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  eval "$prev=\"\$arg\""
5467fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  prev=
5468fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  continue
5469fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
5470fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	esac
5471fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi # test -n "$prev"
5472fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5473fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      prevarg="$arg"
5474fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5475fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      case $arg in
5476fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      -all-static)
5477fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test -n "$link_static_flag"; then
5478fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # See comment for -static flag below, for more details.
5479fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_append compile_command " $link_static_flag"
5480fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_append finalize_command " $link_static_flag"
5481fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
5482fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	continue
5483fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
5484fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5485fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      -allow-undefined)
5486fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# FIXME: remove this flag sometime in the future.
5487fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_fatal_error "\`-allow-undefined' must not be used because it is the default"
5488fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
5489fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5490fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      -avoid-version)
5491fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	avoid_version=yes
5492fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	continue
5493fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
5494fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
549564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      -bindir)
549664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	prev=bindir
549764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	continue
549864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	;;
549964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
5500fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      -dlopen)
5501fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	prev=dlfiles
5502fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	continue
5503fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
5504fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5505fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      -dlpreopen)
5506fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	prev=dlprefiles
5507fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	continue
5508fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
5509fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5510fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      -export-dynamic)
5511fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	export_dynamic=yes
5512fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	continue
5513fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
5514fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5515fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      -export-symbols | -export-symbols-regex)
5516fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
5517fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_fatal_error "more than one -exported-symbols argument is not allowed"
5518fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
5519fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test "X$arg" = "X-export-symbols"; then
5520fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  prev=expsyms
5521fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	else
5522fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  prev=expsyms_regex
5523fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
5524fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	continue
5525fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
5526fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5527fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      -framework)
5528fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	prev=framework
5529fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	continue
5530fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
5531fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5532fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      -inst-prefix-dir)
5533fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	prev=inst_prefix
5534fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	continue
5535fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
5536fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5537fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
5538fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # so, if we see these flags be careful not to treat them like -L
5539fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      -L[A-Z][A-Z]*:*)
5540fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	case $with_gcc/$host in
5541fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	no/*-*-irix* | /*-*-irix*)
5542fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_append compile_command " $arg"
5543fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_append finalize_command " $arg"
5544fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
5545fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	esac
5546fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	continue
5547fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
5548fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5549fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      -L*)
555064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	func_stripname "-L" '' "$arg"
555164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	if test -z "$func_stripname_result"; then
555264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  if test "$#" -gt 0; then
555364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    func_fatal_error "require no space between \`-L' and \`$1'"
555464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  else
555564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    func_fatal_error "need path for \`-L' option"
555664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  fi
555764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	fi
555864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	func_resolve_sysroot "$func_stripname_result"
555964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	dir=$func_resolve_sysroot_result
5560fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# We need an absolute path.
5561fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	case $dir in
5562fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	[\\/]* | [A-Za-z]:[\\/]*) ;;
5563fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	*)
5564fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  absdir=`cd "$dir" && pwd`
5565fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  test -z "$absdir" && \
5566fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    func_fatal_error "cannot determine absolute directory name of \`$dir'"
5567fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  dir="$absdir"
5568fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
5569fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	esac
5570fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	case "$deplibs " in
557164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	*" -L$dir "* | *" $arg "*)
557264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  # Will only happen for absolute or sysroot arguments
557364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  ;;
5574fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	*)
557564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  # Preserve sysroot, but never include relative directories
557664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  case $dir in
557764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;;
557864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    *) func_append deplibs " -L$dir" ;;
557964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  esac
558064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  func_append lib_search_path " $dir"
5581fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
5582fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	esac
5583fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	case $host in
558464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
558564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'`
5586fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  case :$dllsearchpath: in
5587fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  *":$dir:"*) ;;
558864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  ::) dllsearchpath=$dir;;
558964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  *) func_append dllsearchpath ":$dir";;
5590fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  esac
5591fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  case :$dllsearchpath: in
5592fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  *":$testbindir:"*) ;;
559364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  ::) dllsearchpath=$testbindir;;
559464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  *) func_append dllsearchpath ":$testbindir";;
5595fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  esac
5596fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
5597fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	esac
5598fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	continue
5599fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
5600fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5601fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      -l*)
5602fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
5603fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  case $host in
560464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*)
5605fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # These systems don't actually have a C or math library (as such)
5606fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    continue
5607fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    ;;
5608fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  *-*-os2*)
5609fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # These systems don't actually have a C library (as such)
5610fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    test "X$arg" = "X-lc" && continue
5611fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    ;;
5612fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
5613fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # Do not include libc due to us having libc/libc_r.
5614fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    test "X$arg" = "X-lc" && continue
5615fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    ;;
5616fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  *-*-rhapsody* | *-*-darwin1.[012])
5617fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # Rhapsody C and math libraries are in the System framework
561864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    func_append deplibs " System.ltframework"
5619fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    continue
5620fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    ;;
5621fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  *-*-sco3.2v5* | *-*-sco5v6*)
5622fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # Causes problems with __ctype
5623fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    test "X$arg" = "X-lc" && continue
5624fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    ;;
5625fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
5626fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # Compiler inserts libc in the correct place for threads to work
5627fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    test "X$arg" = "X-lc" && continue
5628fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    ;;
5629fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  esac
5630fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	elif test "X$arg" = "X-lc_r"; then
5631fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	 case $host in
5632fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
5633fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	   # Do not include libc_r directly, use -pthread flag.
5634fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	   continue
5635fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	   ;;
5636fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	 esac
5637fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
563864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	func_append deplibs " $arg"
5639fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	continue
5640fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
5641fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5642fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      -module)
5643fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	module=yes
5644fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	continue
5645fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
5646fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5647fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # Tru64 UNIX uses -model [arg] to determine the layout of C++
5648fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # classes, name mangling, and exception handling.
5649fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # Darwin uses the -arch flag to determine output architecture.
565064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      -model|-arch|-isysroot|--sysroot)
565164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	func_append compiler_flags " $arg"
5652fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_append compile_command " $arg"
5653fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_append finalize_command " $arg"
5654fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	prev=xcompiler
5655fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	continue
5656fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
5657fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
565864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
565964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
566064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	func_append compiler_flags " $arg"
5661fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_append compile_command " $arg"
5662fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_append finalize_command " $arg"
5663fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	case "$new_inherited_linker_flags " in
5664fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    *" $arg "*) ;;
566564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    * ) func_append new_inherited_linker_flags " $arg" ;;
5666fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	esac
5667fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	continue
5668fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
5669fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5670fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      -multi_module)
5671fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	single_module="${wl}-multi_module"
5672fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	continue
5673fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
5674fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5675fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      -no-fast-install)
5676fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fast_install=no
5677fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	continue
5678fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
5679fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5680fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      -no-install)
5681fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	case $host in
568264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
5683fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # The PATH hackery in wrapper scripts is required on Windows
5684fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # and Darwin in order for the loader to find any dlls it needs.
5685fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_warning "\`-no-install' is ignored for $host"
5686fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_warning "assuming \`-no-fast-install' instead"
5687fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fast_install=no
5688fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
5689fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	*) no_install=yes ;;
5690fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	esac
5691fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	continue
5692fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
5693fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5694fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      -no-undefined)
5695fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	allow_undefined=no
5696fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	continue
5697fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
5698fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5699fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      -objectlist)
5700fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	prev=objectlist
5701fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	continue
5702fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
5703fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5704fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      -o) prev=output ;;
5705fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5706fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      -precious-files-regex)
5707fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	prev=precious_regex
5708fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	continue
5709fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
5710fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5711fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      -release)
5712fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	prev=release
5713fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	continue
5714fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
5715fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5716fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      -rpath)
5717fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	prev=rpath
5718fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	continue
5719fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
5720fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5721fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      -R)
5722fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	prev=xrpath
5723fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	continue
5724fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
5725fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5726fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      -R*)
5727fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_stripname '-R' '' "$arg"
5728fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	dir=$func_stripname_result
5729fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# We need an absolute path.
5730fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	case $dir in
5731fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	[\\/]* | [A-Za-z]:[\\/]*) ;;
573264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	=*)
573364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  func_stripname '=' '' "$dir"
573464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  dir=$lt_sysroot$func_stripname_result
573564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  ;;
5736fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	*)
5737fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_fatal_error "only absolute run-paths are allowed"
5738fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
5739fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	esac
5740fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	case "$xrpath " in
5741fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	*" $dir "*) ;;
574264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	*) func_append xrpath " $dir" ;;
5743fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	esac
5744fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	continue
5745fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
5746fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5747fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      -shared)
5748fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# The effects of -shared are defined in a previous loop.
5749fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	continue
5750fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
5751fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5752fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      -shrext)
5753fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	prev=shrext
5754fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	continue
5755fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
5756fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5757fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      -static | -static-libtool-libs)
5758fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# The effects of -static are defined in a previous loop.
5759fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# We used to do the same as -all-static on platforms that
5760fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# didn't have a PIC flag, but the assumption that the effects
5761fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# would be equivalent was wrong.  It would break on at least
5762fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Digital Unix and AIX.
5763fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	continue
5764fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
5765fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5766fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      -thread-safe)
5767fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	thread_safe=yes
5768fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	continue
5769fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
5770fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5771fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      -version-info)
5772fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	prev=vinfo
5773fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	continue
5774fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
5775fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5776fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      -version-number)
5777fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	prev=vinfo
5778fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	vinfo_number=yes
5779fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	continue
5780fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
5781fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5782fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      -weak)
5783fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        prev=weak
5784fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	continue
5785fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
5786fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5787fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      -Wc,*)
5788fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_stripname '-Wc,' '' "$arg"
5789fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	args=$func_stripname_result
5790fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	arg=
5791fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	save_ifs="$IFS"; IFS=','
5792fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	for flag in $args; do
5793fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  IFS="$save_ifs"
5794fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville          func_quote_for_eval "$flag"
579564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  func_append arg " $func_quote_for_eval_result"
579664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  func_append compiler_flags " $func_quote_for_eval_result"
5797fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	done
5798fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	IFS="$save_ifs"
5799fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_stripname ' ' '' "$arg"
5800fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	arg=$func_stripname_result
5801fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
5802fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5803fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      -Wl,*)
5804fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_stripname '-Wl,' '' "$arg"
5805fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	args=$func_stripname_result
5806fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	arg=
5807fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	save_ifs="$IFS"; IFS=','
5808fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	for flag in $args; do
5809fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  IFS="$save_ifs"
5810fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville          func_quote_for_eval "$flag"
581164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  func_append arg " $wl$func_quote_for_eval_result"
581264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  func_append compiler_flags " $wl$func_quote_for_eval_result"
581364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  func_append linker_flags " $func_quote_for_eval_result"
5814fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	done
5815fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	IFS="$save_ifs"
5816fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_stripname ' ' '' "$arg"
5817fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	arg=$func_stripname_result
5818fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
5819fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5820fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      -Xcompiler)
5821fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	prev=xcompiler
5822fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	continue
5823fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
5824fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5825fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      -Xlinker)
5826fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	prev=xlinker
5827fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	continue
5828fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
5829fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5830fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      -XCClinker)
5831fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	prev=xcclinker
5832fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	continue
5833fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
5834fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5835fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # -msg_* for osf cc
5836fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      -msg_*)
5837fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_quote_for_eval "$arg"
5838fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	arg="$func_quote_for_eval_result"
5839fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
5840fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
584164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      # Flags to be passed through unchanged, with rationale:
584264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      # -64, -mips[0-9]      enable 64-bit mode for the SGI compiler
584364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      # -r[0-9][0-9]*        specify processor for the SGI compiler
584464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler
584564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      # +DA*, +DD*           enable 64-bit mode for the HP compiler
584664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      # -q*                  compiler args for the IBM compiler
584764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      # -m*, -t[45]*, -txscale* architecture-specific flags for GCC
584864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      # -F/path              path to uninstalled frameworks, gcc on darwin
584964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      # -p, -pg, --coverage, -fprofile-*  profiling flags for GCC
585064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      # @file                GCC response files
585164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      # -tp=*                Portland pgcc target processor selection
585264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      # --sysroot=*          for sysroot support
585364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
5854fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
585564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
585664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      -O*|-flto*|-fwhopr*|-fuse-linker-plugin)
5857fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        func_quote_for_eval "$arg"
5858fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	arg="$func_quote_for_eval_result"
5859fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        func_append compile_command " $arg"
5860fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        func_append finalize_command " $arg"
586164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        func_append compiler_flags " $arg"
5862fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        continue
5863fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        ;;
5864fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5865fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # Some other compiler flag.
5866fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      -* | +*)
5867fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        func_quote_for_eval "$arg"
5868fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	arg="$func_quote_for_eval_result"
5869fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
5870fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5871fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      *.$objext)
5872fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# A standard object.
587364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	func_append objs " $arg"
5874fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
5875fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5876fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      *.lo)
5877fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# A libtool-controlled object.
5878fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5879fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Check to see that this really is a libtool object.
5880fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if func_lalib_unsafe_p "$arg"; then
5881fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  pic_object=
5882fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  non_pic_object=
5883fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5884fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # Read the .lo file
5885fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_source "$arg"
5886fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5887fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test -z "$pic_object" ||
5888fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	     test -z "$non_pic_object" ||
5889fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	     test "$pic_object" = none &&
5890fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	     test "$non_pic_object" = none; then
5891fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    func_fatal_error "cannot find name of object for \`$arg'"
5892fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
5893fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5894fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # Extract subdirectory from the argument.
5895fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_dirname "$arg" "/" ""
5896fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  xdir="$func_dirname_result"
5897fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5898fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test "$pic_object" != none; then
5899fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # Prepend the subdirectory the object is found in.
5900fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    pic_object="$xdir$pic_object"
5901fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5902fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    if test "$prev" = dlfiles; then
5903fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
590464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		func_append dlfiles " $pic_object"
5905fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		prev=
5906fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		continue
5907fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      else
5908fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		# If libtool objects are unsupported, then we need to preload.
5909fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		prev=dlprefiles
5910fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      fi
5911fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    fi
5912fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5913fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # CHECK ME:  I think I busted this.  -Ossama
5914fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    if test "$prev" = dlprefiles; then
5915fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      # Preload the old-style object.
591664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      func_append dlprefiles " $pic_object"
5917fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      prev=
5918fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    fi
5919fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5920fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # A PIC object.
5921fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    func_append libobjs " $pic_object"
5922fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    arg="$pic_object"
5923fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
5924fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5925fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # Non-PIC object.
5926fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test "$non_pic_object" != none; then
5927fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # Prepend the subdirectory the object is found in.
5928fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    non_pic_object="$xdir$non_pic_object"
5929fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5930fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # A standard non-PIC object
5931fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    func_append non_pic_objects " $non_pic_object"
5932fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    if test -z "$pic_object" || test "$pic_object" = none ; then
5933fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      arg="$non_pic_object"
5934fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    fi
5935fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  else
5936fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # If the PIC object exists, use it instead.
5937fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # $xdir was prepended to $pic_object above.
5938fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    non_pic_object="$pic_object"
5939fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    func_append non_pic_objects " $non_pic_object"
5940fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
5941fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	else
5942fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # Only an error if not doing a dry-run.
5943fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if $opt_dry_run; then
5944fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # Extract subdirectory from the argument.
5945fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    func_dirname "$arg" "/" ""
5946fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    xdir="$func_dirname_result"
5947fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5948fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    func_lo2o "$arg"
5949fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    pic_object=$xdir$objdir/$func_lo2o_result
5950fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    non_pic_object=$xdir$func_lo2o_result
5951fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    func_append libobjs " $pic_object"
5952fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    func_append non_pic_objects " $non_pic_object"
5953fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  else
5954fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    func_fatal_error "\`$arg' is not a valid libtool object"
5955fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
5956fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
5957fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
5958fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5959fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      *.$libext)
5960fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# An archive.
596164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	func_append deplibs " $arg"
596264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	func_append old_deplibs " $arg"
5963fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	continue
5964fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
5965fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5966fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      *.la)
5967fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# A libtool-controlled library.
5968fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
596964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	func_resolve_sysroot "$arg"
5970fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test "$prev" = dlfiles; then
5971fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # This library was specified with -dlopen.
597264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  func_append dlfiles " $func_resolve_sysroot_result"
5973fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  prev=
5974fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	elif test "$prev" = dlprefiles; then
5975fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # The library was specified with -dlpreopen.
597664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  func_append dlprefiles " $func_resolve_sysroot_result"
5977fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  prev=
5978fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	else
597964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  func_append deplibs " $func_resolve_sysroot_result"
5980fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
5981fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	continue
5982fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
5983fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5984fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # Some other compiler argument.
5985fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      *)
5986fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Unknown arguments in both finalize_command and compile_command need
5987fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# to be aesthetically quoted because they are evaled later.
5988fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_quote_for_eval "$arg"
5989fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	arg="$func_quote_for_eval_result"
5990fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
5991fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      esac # arg
5992fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
5993fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # Now actually substitute the argument into the commands.
5994fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if test -n "$arg"; then
5995fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_append compile_command " $arg"
5996fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_append finalize_command " $arg"
5997fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
5998fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    done # argument parsing loop
5999fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
6000fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    test -n "$prev" && \
6001fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      func_fatal_help "the \`$prevarg' option requires an argument"
6002fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
6003fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
6004fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      eval arg=\"$export_dynamic_flag_spec\"
6005fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      func_append compile_command " $arg"
6006fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      func_append finalize_command " $arg"
6007fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    fi
6008fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
6009fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    oldlibs=
6010fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    # calculate the name of the file, without its directory
6011fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    func_basename "$output"
6012fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    outputname="$func_basename_result"
6013fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    libobjs_save="$libobjs"
6014fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
6015fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    if test -n "$shlibpath_var"; then
6016fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # get the directories listed in $shlibpath_var
601764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\`
6018fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    else
6019fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      shlib_search_path=
6020fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    fi
6021fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
6022fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
6023fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
6024fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    func_dirname "$output" "/" ""
6025fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    output_objdir="$func_dirname_result$objdir"
602664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    func_to_tool_file "$output_objdir/"
602764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci    tool_output_objdir=$func_to_tool_file_result
6028fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    # Create the object directory.
6029fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    func_mkdir_p "$output_objdir"
6030fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
6031fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    # Determine the type of output
6032fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    case $output in
6033fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    "")
6034fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      func_fatal_help "you must specify an output file"
6035fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      ;;
6036fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    *.$libext) linkmode=oldlib ;;
6037fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    *.lo | *.$objext) linkmode=obj ;;
6038fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    *.la) linkmode=lib ;;
6039fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    *) linkmode=prog ;; # Anything else should be a program.
6040fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    esac
6041fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
6042fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    specialdeplibs=
6043fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
6044fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    libs=
6045fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    # Find all interdependent deplibs by searching for libraries
6046fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    # that are linked more than once (e.g. -la -lb -la)
6047fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    for deplib in $deplibs; do
604864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      if $opt_preserve_dup_deps ; then
6049fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	case "$libs " in
605064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	*" $deplib "*) func_append specialdeplibs " $deplib" ;;
6051fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	esac
6052fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
605364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      func_append libs " $deplib"
6054fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    done
6055fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
6056fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    if test "$linkmode" = lib; then
6057fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      libs="$predeps $libs $compiler_lib_search_path $postdeps"
6058fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
6059fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # Compute libraries that are listed more than once in $predeps
6060fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # $postdeps and mark them as special (i.e., whose duplicates are
6061fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # not to be eliminated).
6062fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      pre_post_deps=
6063fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if $opt_duplicate_compiler_generated_deps; then
6064fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	for pre_post_dep in $predeps $postdeps; do
6065fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  case "$pre_post_deps " in
606664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;;
6067fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  esac
606864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  func_append pre_post_deps " $pre_post_dep"
6069fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	done
6070fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
6071fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      pre_post_deps=
6072fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    fi
6073fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
6074fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    deplibs=
6075fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    newdependency_libs=
6076fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    newlib_search_path=
6077fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    need_relink=no # whether we're linking any uninstalled libtool libraries
6078fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    notinst_deplibs= # not-installed libtool libraries
6079fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    notinst_path= # paths that contain not-installed libtool libraries
6080fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
6081fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    case $linkmode in
6082fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    lib)
6083fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	passes="conv dlpreopen link"
6084fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	for file in $dlfiles $dlprefiles; do
6085fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  case $file in
6086fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  *.la) ;;
6087fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  *)
6088fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
6089fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    ;;
6090fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  esac
6091fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	done
6092fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
6093fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    prog)
6094fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	compile_deplibs=
6095fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	finalize_deplibs=
6096fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	alldeplibs=no
6097fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	newdlfiles=
6098fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	newdlprefiles=
6099fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	passes="conv scan dlopen dlpreopen link"
6100fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
6101fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    *)  passes="conv"
6102fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
6103fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    esac
6104fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
6105fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    for pass in $passes; do
6106fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # The preopen pass in lib mode reverses $deplibs; put it back here
6107fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # so that -L comes before libs that need it for instance...
6108fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if test "$linkmode,$pass" = "lib,link"; then
6109fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	## FIXME: Find the place where the list is rebuilt in the wrong
6110fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	##        order, and fix it there properly
6111fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        tmp_deplibs=
6112fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	for deplib in $deplibs; do
6113fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  tmp_deplibs="$deplib $tmp_deplibs"
6114fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	done
6115fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	deplibs="$tmp_deplibs"
6116fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
6117fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
6118fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if test "$linkmode,$pass" = "lib,link" ||
6119fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	 test "$linkmode,$pass" = "prog,scan"; then
6120fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	libs="$deplibs"
6121fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	deplibs=
6122fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
6123fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if test "$linkmode" = prog; then
6124fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	case $pass in
6125fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	dlopen) libs="$dlfiles" ;;
6126fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	dlpreopen) libs="$dlprefiles" ;;
612764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	link)
612864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  libs="$deplibs %DEPLIBS%"
612964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs"
613064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  ;;
6131fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	esac
6132fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
6133fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if test "$linkmode,$pass" = "lib,dlpreopen"; then
6134fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Collect and forward deplibs of preopened libtool libs
6135fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	for lib in $dlprefiles; do
6136fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # Ignore non-libtool-libs
6137fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  dependency_libs=
613864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  func_resolve_sysroot "$lib"
6139fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  case $lib in
614064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  *.la)	func_source "$func_resolve_sysroot_result" ;;
6141fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  esac
6142fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
6143fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # Collect preopened libtool deplibs, except any this library
6144fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # has declared as weak libs
6145fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  for deplib in $dependency_libs; do
614664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    func_basename "$deplib"
614764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci            deplib_base=$func_basename_result
6148fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    case " $weak_libs " in
6149fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    *" $deplib_base "*) ;;
615064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    *) func_append deplibs " $deplib" ;;
6151fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    esac
6152fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  done
6153fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	done
6154fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	libs="$dlprefiles"
6155fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
6156fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if test "$pass" = dlopen; then
6157fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Collect dlpreopened libraries
6158fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	save_deplibs="$deplibs"
6159fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	deplibs=
6160fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
6161fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
6162fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      for deplib in $libs; do
6163fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	lib=
6164fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	found=no
6165fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	case $deplib in
616664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
616764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
6168fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test "$linkmode,$pass" = "prog,link"; then
6169fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    compile_deplibs="$deplib $compile_deplibs"
6170fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    finalize_deplibs="$deplib $finalize_deplibs"
6171fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  else
617264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    func_append compiler_flags " $deplib"
6173fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    if test "$linkmode" = lib ; then
6174fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		case "$new_inherited_linker_flags " in
6175fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		    *" $deplib "*) ;;
617664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		    * ) func_append new_inherited_linker_flags " $deplib" ;;
6177fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		esac
6178fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    fi
6179fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
6180fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  continue
6181fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
6182fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	-l*)
6183fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test "$linkmode" != lib && test "$linkmode" != prog; then
6184fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    func_warning "\`-l' is ignored for archives/objects"
6185fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    continue
6186fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
6187fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_stripname '-l' '' "$deplib"
6188fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  name=$func_stripname_result
6189fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test "$linkmode" = lib; then
6190fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
6191fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  else
6192fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
6193fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
6194fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  for searchdir in $searchdirs; do
6195fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    for search_ext in .la $std_shrext .so .a; do
6196fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      # Search the libtool library
6197fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      lib="$searchdir/lib${name}${search_ext}"
6198fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      if test -f "$lib"; then
6199fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		if test "$search_ext" = ".la"; then
6200fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  found=yes
6201fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		else
6202fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  found=no
6203fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		fi
6204fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		break 2
6205fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      fi
6206fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    done
6207fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  done
6208fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test "$found" != yes; then
6209fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # deplib doesn't seem to be a libtool library
6210fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    if test "$linkmode,$pass" = "prog,link"; then
6211fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      compile_deplibs="$deplib $compile_deplibs"
6212fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      finalize_deplibs="$deplib $finalize_deplibs"
6213fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    else
6214fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      deplibs="$deplib $deplibs"
6215fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
6216fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    fi
6217fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    continue
6218fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  else # deplib is a libtool library
6219fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
6220fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # We need to do some special things here, and not later.
6221fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
6222fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      case " $predeps $postdeps " in
6223fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      *" $deplib "*)
6224fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		if func_lalib_p "$lib"; then
6225fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  library_names=
6226fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  old_library=
6227fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  func_source "$lib"
6228fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  for l in $old_library $library_names; do
6229fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		    ll="$l"
6230fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  done
6231fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  if test "X$ll" = "X$old_library" ; then # only static version available
6232fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		    found=no
6233fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		    func_dirname "$lib" "" "."
6234fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		    ladir="$func_dirname_result"
6235fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		    lib=$ladir/$old_library
6236fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		    if test "$linkmode,$pass" = "prog,link"; then
6237fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		      compile_deplibs="$deplib $compile_deplibs"
6238fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		      finalize_deplibs="$deplib $finalize_deplibs"
6239fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		    else
6240fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		      deplibs="$deplib $deplibs"
6241fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
6242fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		    fi
6243fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		    continue
6244fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  fi
6245fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		fi
6246fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		;;
6247fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      *) ;;
6248fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      esac
6249fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    fi
6250fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
6251fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;; # -l
6252fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	*.ltframework)
6253fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test "$linkmode,$pass" = "prog,link"; then
6254fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    compile_deplibs="$deplib $compile_deplibs"
6255fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    finalize_deplibs="$deplib $finalize_deplibs"
6256fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  else
6257fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    deplibs="$deplib $deplibs"
6258fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    if test "$linkmode" = lib ; then
6259fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		case "$new_inherited_linker_flags " in
6260fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		    *" $deplib "*) ;;
626164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		    * ) func_append new_inherited_linker_flags " $deplib" ;;
6262fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		esac
6263fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    fi
6264fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
6265fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  continue
6266fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
6267fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	-L*)
6268fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  case $linkmode in
6269fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  lib)
6270fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    deplibs="$deplib $deplibs"
6271fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    test "$pass" = conv && continue
6272fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    newdependency_libs="$deplib $newdependency_libs"
6273fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    func_stripname '-L' '' "$deplib"
627464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    func_resolve_sysroot "$func_stripname_result"
627564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    func_append newlib_search_path " $func_resolve_sysroot_result"
6276fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    ;;
6277fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  prog)
6278fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    if test "$pass" = conv; then
6279fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      deplibs="$deplib $deplibs"
6280fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      continue
6281fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    fi
6282fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    if test "$pass" = scan; then
6283fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      deplibs="$deplib $deplibs"
6284fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    else
6285fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      compile_deplibs="$deplib $compile_deplibs"
6286fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      finalize_deplibs="$deplib $finalize_deplibs"
6287fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    fi
6288fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    func_stripname '-L' '' "$deplib"
628964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    func_resolve_sysroot "$func_stripname_result"
629064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    func_append newlib_search_path " $func_resolve_sysroot_result"
6291fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    ;;
6292fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  *)
6293fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    func_warning "\`-L' is ignored for archives/objects"
6294fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    ;;
6295fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  esac # linkmode
6296fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  continue
6297fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;; # -L
6298fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	-R*)
6299fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test "$pass" = link; then
6300fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    func_stripname '-R' '' "$deplib"
630164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    func_resolve_sysroot "$func_stripname_result"
630264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    dir=$func_resolve_sysroot_result
6303fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # Make sure the xrpath contains only unique directories.
6304fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    case "$xrpath " in
6305fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    *" $dir "*) ;;
630664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    *) func_append xrpath " $dir" ;;
6307fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    esac
6308fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
6309fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  deplibs="$deplib $deplibs"
6310fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  continue
6311fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
631264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	*.la)
631364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  func_resolve_sysroot "$deplib"
631464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  lib=$func_resolve_sysroot_result
631564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  ;;
6316fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	*.$libext)
6317fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test "$pass" = conv; then
6318fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    deplibs="$deplib $deplibs"
6319fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    continue
6320fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
6321fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  case $linkmode in
6322fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  lib)
6323fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # Linking convenience modules into shared libraries is allowed,
6324fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # but linking other static libraries is non-portable.
6325fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    case " $dlpreconveniencelibs " in
6326fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    *" $deplib "*) ;;
6327fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    *)
6328fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      valid_a_lib=no
6329fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      case $deplibs_check_method in
6330fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		match_pattern*)
6331fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  set dummy $deplibs_check_method; shift
6332fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
633364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		  if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \
6334fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		    | $EGREP "$match_pattern_regex" > /dev/null; then
6335fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		    valid_a_lib=yes
6336fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  fi
6337fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		;;
6338fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		pass_all)
6339fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  valid_a_lib=yes
6340fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		;;
6341fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      esac
6342fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      if test "$valid_a_lib" != yes; then
634364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		echo
6344fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		$ECHO "*** Warning: Trying to link with static lib archive $deplib."
634564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		echo "*** I have the capability to make that library automatically link in when"
634664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		echo "*** you link to this library.  But I can only do this if you have a"
634764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		echo "*** shared version of the library, which you do not appear to have"
634864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		echo "*** because the file extensions .$libext of this argument makes me believe"
634964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		echo "*** that it is just a static archive that I should not use here."
6350fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      else
635164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		echo
6352fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		$ECHO "*** Warning: Linking the shared library $output against the"
6353fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		$ECHO "*** static library $deplib is not portable!"
6354fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		deplibs="$deplib $deplibs"
6355fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      fi
6356fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      ;;
6357fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    esac
6358fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    continue
6359fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    ;;
6360fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  prog)
6361fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    if test "$pass" != link; then
6362fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      deplibs="$deplib $deplibs"
6363fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    else
6364fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      compile_deplibs="$deplib $compile_deplibs"
6365fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      finalize_deplibs="$deplib $finalize_deplibs"
6366fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    fi
6367fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    continue
6368fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    ;;
6369fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  esac # linkmode
6370fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;; # *.$libext
6371fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	*.lo | *.$objext)
6372fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test "$pass" = conv; then
6373fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    deplibs="$deplib $deplibs"
6374fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  elif test "$linkmode" = prog; then
6375fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
6376fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      # If there is no dlopen support or we're linking statically,
6377fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      # we need to preload.
637864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      func_append newdlprefiles " $deplib"
6379fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      compile_deplibs="$deplib $compile_deplibs"
6380fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      finalize_deplibs="$deplib $finalize_deplibs"
6381fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    else
638264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      func_append newdlfiles " $deplib"
6383fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    fi
6384fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
6385fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  continue
6386fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
6387fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	%DEPLIBS%)
6388fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  alldeplibs=yes
6389fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  continue
6390fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
6391fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	esac # case $deplib
6392fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
6393fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test "$found" = yes || test -f "$lib"; then :
6394fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	else
6395fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
6396fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
6397fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
6398fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Check to see that this really is a libtool archive.
6399fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_lalib_unsafe_p "$lib" \
6400fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  || func_fatal_error "\`$lib' is not a valid libtool archive"
6401fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
6402fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_dirname "$lib" "" "."
6403fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	ladir="$func_dirname_result"
6404fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
6405fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	dlname=
6406fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	dlopen=
6407fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	dlpreopen=
6408fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	libdir=
6409fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	library_names=
6410fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	old_library=
6411fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	inherited_linker_flags=
6412fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# If the library was installed with an old release of libtool,
6413fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# it will not redefine variables installed, or shouldnotlink
6414fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	installed=yes
6415fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	shouldnotlink=no
6416fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	avoidtemprpath=
6417fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
6418fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
6419fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Read the .la file
6420fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_source "$lib"
6421fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
6422fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Convert "-framework foo" to "foo.ltframework"
6423fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test -n "$inherited_linker_flags"; then
642464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`
6425fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
6426fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    case " $new_inherited_linker_flags " in
6427fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      *" $tmp_inherited_linker_flag "*) ;;
642864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";;
6429fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    esac
6430fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  done
6431fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
643264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
6433fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test "$linkmode,$pass" = "lib,link" ||
6434fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	   test "$linkmode,$pass" = "prog,scan" ||
6435fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then
643664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  test -n "$dlopen" && func_append dlfiles " $dlopen"
643764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen"
6438fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
6439fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
6440fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test "$pass" = conv; then
6441fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # Only check for convenience libraries
6442fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  deplibs="$lib $deplibs"
6443fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test -z "$libdir"; then
6444fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    if test -z "$old_library"; then
6445fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      func_fatal_error "cannot find name of link library for \`$lib'"
6446fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    fi
6447fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # It is a libtool convenience library, so add in its objects.
644864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    func_append convenience " $ladir/$objdir/$old_library"
644964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    func_append old_convenience " $ladir/$objdir/$old_library"
645064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    tmp_libs=
645164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    for deplib in $dependency_libs; do
645264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      deplibs="$deplib $deplibs"
645364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      if $opt_preserve_dup_deps ; then
645464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		case "$tmp_libs " in
645564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		*" $deplib "*) func_append specialdeplibs " $deplib" ;;
645664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		esac
645764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      fi
645864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      func_append tmp_libs " $deplib"
645964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    done
6460fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
6461fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    func_fatal_error "\`$lib' is not a convenience library"
6462fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
6463fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  continue
6464fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi # $pass = conv
6465fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
6466fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
6467fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Get the name of the library we link against.
6468fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	linklib=
646964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	if test -n "$old_library" &&
647064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	   { test "$prefer_static_libs" = yes ||
647164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	     test "$prefer_static_libs,$installed" = "built,no"; }; then
647264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  linklib=$old_library
647364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	else
647464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  for l in $old_library $library_names; do
647564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    linklib="$l"
647664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  done
647764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	fi
6478fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test -z "$linklib"; then
6479fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_fatal_error "cannot find name of link library for \`$lib'"
6480fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
6481fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
6482fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# This library was specified with -dlopen.
6483fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test "$pass" = dlopen; then
6484fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test -z "$libdir"; then
6485fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
6486fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
6487fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test -z "$dlname" ||
6488fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	     test "$dlopen_support" != yes ||
6489fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	     test "$build_libtool_libs" = no; then
6490fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # If there is no dlname, no dlopen support or we're linking
6491fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # statically, we need to preload.  We also need to preload any
6492fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # dependent libraries so libltdl's deplib preloader doesn't
6493fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # bomb out in the load deplibs phase.
649464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    func_append dlprefiles " $lib $dependency_libs"
6495fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  else
649664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    func_append newdlfiles " $lib"
6497fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
6498fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  continue
6499fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi # $pass = dlopen
6500fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
6501fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# We need an absolute path.
6502fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	case $ladir in
6503fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
6504fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	*)
6505fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  abs_ladir=`cd "$ladir" && pwd`
6506fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test -z "$abs_ladir"; then
6507fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    func_warning "cannot determine absolute directory name of \`$ladir'"
6508fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    func_warning "passing it literally to the linker, although it might fail"
6509fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    abs_ladir="$ladir"
6510fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
6511fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
6512fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	esac
6513fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_basename "$lib"
6514fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	laname="$func_basename_result"
6515fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
6516fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Find the relevant object directory and library name.
6517fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test "X$installed" = Xyes; then
651864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
6519fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    func_warning "library \`$lib' was moved."
6520fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    dir="$ladir"
6521fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    absdir="$abs_ladir"
6522fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    libdir="$abs_ladir"
6523fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  else
652464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    dir="$lt_sysroot$libdir"
652564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    absdir="$lt_sysroot$libdir"
6526fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
6527fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
6528fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	else
6529fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
6530fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    dir="$ladir"
6531fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    absdir="$abs_ladir"
6532fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # Remove this search path later
653364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    func_append notinst_path " $abs_ladir"
6534fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  else
6535fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    dir="$ladir/$objdir"
6536fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    absdir="$abs_ladir/$objdir"
6537fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # Remove this search path later
653864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    func_append notinst_path " $abs_ladir"
6539fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
6540fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi # $installed = yes
6541fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_stripname 'lib' '.la' "$laname"
6542fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	name=$func_stripname_result
6543fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
6544fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# This library was specified with -dlpreopen.
6545fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test "$pass" = dlpreopen; then
6546fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test -z "$libdir" && test "$linkmode" = prog; then
6547fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
6548fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
654964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  case "$host" in
655064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    # special handling for platforms with PE-DLLs.
655164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    *cygwin* | *mingw* | *cegcc* )
655264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      # Linker will automatically link against shared library if both
655364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      # static and shared are present.  Therefore, ensure we extract
655464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      # symbols from the import library if a shared library is present
655564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      # (otherwise, the dlopen module name will be incorrect).  We do
655664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      # this by putting the import library name into $newdlprefiles.
655764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      # We recover the dlopen module name by 'saving' the la file
655864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      # name in a special purpose variable, and (later) extracting the
655964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      # dlname from the la file.
656064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      if test -n "$dlname"; then
656164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	        func_tr_sh "$dir/$linklib"
656264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	        eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname"
656364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	        func_append newdlprefiles " $dir/$linklib"
656464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      else
656564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	        func_append newdlprefiles " $dir/$old_library"
656664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	        # Keep a list of preopened convenience libraries to check
656764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	        # that they are being used correctly in the link pass.
656864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	        test -z "$libdir" && \
656964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	          func_append dlpreconveniencelibs " $dir/$old_library"
657064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      fi
657164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    ;;
657264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    * )
657364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      # Prefer using a static library (so that no silly _DYNAMIC symbols
657464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      # are required to link).
657564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      if test -n "$old_library"; then
657664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	        func_append newdlprefiles " $dir/$old_library"
657764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	        # Keep a list of preopened convenience libraries to check
657864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	        # that they are being used correctly in the link pass.
657964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	        test -z "$libdir" && \
658064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	          func_append dlpreconveniencelibs " $dir/$old_library"
658164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      # Otherwise, use the dlname, so that lt_dlopen finds it.
658264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      elif test -n "$dlname"; then
658364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	        func_append newdlprefiles " $dir/$dlname"
658464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      else
658564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	        func_append newdlprefiles " $dir/$linklib"
658664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      fi
658764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    ;;
658864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  esac
6589fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi # $pass = dlpreopen
6590fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
6591fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test -z "$libdir"; then
6592fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # Link the convenience library
6593fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test "$linkmode" = lib; then
6594fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    deplibs="$dir/$old_library $deplibs"
6595fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  elif test "$linkmode,$pass" = "prog,link"; then
6596fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    compile_deplibs="$dir/$old_library $compile_deplibs"
6597fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
6598fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  else
6599fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    deplibs="$lib $deplibs" # used for prog,scan pass
6600fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
6601fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  continue
6602fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
6603fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
6604fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
6605fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test "$linkmode" = prog && test "$pass" != link; then
660664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  func_append newlib_search_path " $ladir"
6607fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  deplibs="$lib $deplibs"
6608fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
6609fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  linkalldeplibs=no
6610fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
6611fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	     test "$build_libtool_libs" = no; then
6612fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    linkalldeplibs=yes
6613fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
6614fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
6615fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  tmp_libs=
6616fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  for deplib in $dependency_libs; do
6617fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    case $deplib in
6618fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    -L*) func_stripname '-L' '' "$deplib"
661964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	         func_resolve_sysroot "$func_stripname_result"
662064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	         func_append newlib_search_path " $func_resolve_sysroot_result"
6621fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		 ;;
6622fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    esac
6623fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # Need to link against all dependency_libs?
6624fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    if test "$linkalldeplibs" = yes; then
6625fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      deplibs="$deplib $deplibs"
6626fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    else
6627fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      # Need to hardcode shared library paths
6628fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      # or/and link against static libraries
6629fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      newdependency_libs="$deplib $newdependency_libs"
6630fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    fi
663164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    if $opt_preserve_dup_deps ; then
6632fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      case "$tmp_libs " in
663364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      *" $deplib "*) func_append specialdeplibs " $deplib" ;;
6634fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      esac
6635fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    fi
663664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    func_append tmp_libs " $deplib"
6637fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  done # for deplib
6638fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  continue
6639fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi # $linkmode = prog...
6640fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
6641fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test "$linkmode,$pass" = "prog,link"; then
6642fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test -n "$library_names" &&
6643fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	     { { test "$prefer_static_libs" = no ||
6644fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	         test "$prefer_static_libs,$installed" = "built,yes"; } ||
6645fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	       test -z "$old_library"; }; then
6646fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # We need to hardcode the library path
6647fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
6648fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      # Make sure the rpath contains only unique directories.
6649fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      case "$temp_rpath:" in
6650fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      *"$absdir:"*) ;;
665164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      *) func_append temp_rpath "$absdir:" ;;
6652fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      esac
6653fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    fi
6654fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
6655fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # Hardcode the library path.
6656fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # Skip directories that are in the system default run-time
6657fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # search path.
6658fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    case " $sys_lib_dlsearch_path " in
6659fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    *" $absdir "*) ;;
6660fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    *)
6661fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      case "$compile_rpath " in
6662fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      *" $absdir "*) ;;
666364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      *) func_append compile_rpath " $absdir" ;;
6664fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      esac
6665fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      ;;
6666fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    esac
6667fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    case " $sys_lib_dlsearch_path " in
6668fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    *" $libdir "*) ;;
6669fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    *)
6670fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      case "$finalize_rpath " in
6671fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      *" $libdir "*) ;;
667264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      *) func_append finalize_rpath " $libdir" ;;
6673fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      esac
6674fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      ;;
6675fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    esac
6676fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi # $linkmode,$pass = prog,link...
6677fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
6678fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test "$alldeplibs" = yes &&
6679fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	     { test "$deplibs_check_method" = pass_all ||
6680fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	       { test "$build_libtool_libs" = yes &&
6681fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		 test -n "$library_names"; }; }; then
6682fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # We only need to search for static libraries
6683fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    continue
6684fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
6685fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
6686fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
6687fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	link_static=no # Whether the deplib will be linked statically
6688fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	use_static_libs=$prefer_static_libs
6689fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test "$use_static_libs" = built && test "$installed" = yes; then
6690fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  use_static_libs=no
6691fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
6692fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test -n "$library_names" &&
6693fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	   { test "$use_static_libs" = no || test -z "$old_library"; }; then
6694fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  case $host in
669564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  *cygwin* | *mingw* | *cegcc*)
6696fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      # No point in relinking DLLs because paths are not encoded
669764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      func_append notinst_deplibs " $lib"
6698fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      need_relink=no
6699fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    ;;
6700fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  *)
6701fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    if test "$installed" = no; then
670264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      func_append notinst_deplibs " $lib"
6703fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      need_relink=yes
6704fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    fi
6705fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    ;;
6706fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  esac
6707fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # This is a shared library
6708fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
6709fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # Warn about portability, can't link against -module's on some
6710fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # systems (darwin).  Don't bleat about dlopened modules though!
6711fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  dlopenmodule=""
6712fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  for dlpremoduletest in $dlprefiles; do
6713fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    if test "X$dlpremoduletest" = "X$lib"; then
6714fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      dlopenmodule="$dlpremoduletest"
6715fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      break
6716fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    fi
6717fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  done
6718fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
671964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    echo
6720fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    if test "$linkmode" = prog; then
6721fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      $ECHO "*** Warning: Linking the executable $output against the loadable module"
6722fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    else
6723fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      $ECHO "*** Warning: Linking the shared library $output against the loadable module"
6724fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    fi
6725fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    $ECHO "*** $linklib is not portable!"
6726fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
6727fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test "$linkmode" = lib &&
6728fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	     test "$hardcode_into_libs" = yes; then
6729fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # Hardcode the library path.
6730fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # Skip directories that are in the system default run-time
6731fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # search path.
6732fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    case " $sys_lib_dlsearch_path " in
6733fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    *" $absdir "*) ;;
6734fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    *)
6735fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      case "$compile_rpath " in
6736fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      *" $absdir "*) ;;
673764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      *) func_append compile_rpath " $absdir" ;;
6738fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      esac
6739fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      ;;
6740fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    esac
6741fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    case " $sys_lib_dlsearch_path " in
6742fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    *" $libdir "*) ;;
6743fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    *)
6744fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      case "$finalize_rpath " in
6745fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      *" $libdir "*) ;;
674664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      *) func_append finalize_rpath " $libdir" ;;
6747fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      esac
6748fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      ;;
6749fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    esac
6750fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
6751fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
6752fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test -n "$old_archive_from_expsyms_cmds"; then
6753fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # figure out the soname
6754fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    set dummy $library_names
6755fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    shift
6756fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    realname="$1"
6757fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    shift
6758fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    libname=`eval "\\$ECHO \"$libname_spec\""`
6759fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # use dlname if we got it. it's perfectly good, no?
6760fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    if test -n "$dlname"; then
6761fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      soname="$dlname"
6762fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    elif test -n "$soname_spec"; then
6763fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      # bleh windows
6764fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      case $host in
676564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      *cygwin* | mingw* | *cegcc*)
6766fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	        func_arith $current - $age
6767fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		major=$func_arith_result
6768fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		versuffix="-$major"
6769fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		;;
6770fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      esac
6771fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      eval soname=\"$soname_spec\"
6772fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    else
6773fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      soname="$realname"
6774fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    fi
6775fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
6776fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # Make a new name for the extract_expsyms_cmds to use
6777fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    soroot="$soname"
6778fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    func_basename "$soroot"
6779fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    soname="$func_basename_result"
6780fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    func_stripname 'lib' '.dll' "$soname"
6781fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    newlib=libimp-$func_stripname_result.a
6782fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
6783fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # If the library has no export list, then create one now
6784fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    if test -f "$output_objdir/$soname-def"; then :
6785fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    else
6786fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      func_verbose "extracting exported symbol list from \`$soname'"
6787fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
6788fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    fi
6789fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
6790fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # Create $newlib
6791fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    if test -f "$output_objdir/$newlib"; then :; else
6792fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      func_verbose "generating import library for \`$soname'"
6793fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
6794fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    fi
6795fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # make sure the library variables are pointing to the new library
6796fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    dir=$output_objdir
6797fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    linklib=$newlib
6798fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi # test -n "$old_archive_from_expsyms_cmds"
6799fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
680064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  if test "$linkmode" = prog || test "$opt_mode" != relink; then
6801fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    add_shlibpath=
6802fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    add_dir=
6803fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    add=
6804fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    lib_linked=yes
6805fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    case $hardcode_action in
6806fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    immediate | unsupported)
6807fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      if test "$hardcode_direct" = no; then
6808fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		add="$dir/$linklib"
6809fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		case $host in
6810fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
6811fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  *-*-sysv4*uw2*) add_dir="-L$dir" ;;
6812fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
6813fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		    *-*-unixware7*) add_dir="-L$dir" ;;
6814fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  *-*-darwin* )
6815fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		    # if the lib is a (non-dlopened) module then we can not
6816fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		    # link against it, someone is ignoring the earlier warnings
6817fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		    if /usr/bin/file -L $add 2> /dev/null |
6818fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville			 $GREP ": [^:]* bundle" >/dev/null ; then
6819fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		      if test "X$dlopenmodule" != "X$lib"; then
6820fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville			$ECHO "*** Warning: lib $linklib is a module, not a shared library"
6821fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville			if test -z "$old_library" ; then
682264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci			  echo
682364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci			  echo "*** And there doesn't seem to be a static archive available"
682464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci			  echo "*** The link will probably fail, sorry"
6825fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville			else
6826fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville			  add="$dir/$old_library"
6827fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville			fi
6828fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		      elif test -n "$old_library"; then
6829fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville			add="$dir/$old_library"
6830fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		      fi
6831fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		    fi
6832fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		esac
6833fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      elif test "$hardcode_minus_L" = no; then
6834fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		case $host in
6835fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		*-*-sunos*) add_shlibpath="$dir" ;;
6836fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		esac
6837fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		add_dir="-L$dir"
6838fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		add="-l$name"
6839fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      elif test "$hardcode_shlibpath_var" = no; then
6840fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		add_shlibpath="$dir"
6841fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		add="-l$name"
6842fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      else
6843fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		lib_linked=no
6844fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      fi
6845fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      ;;
6846fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    relink)
6847fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      if test "$hardcode_direct" = yes &&
6848fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	         test "$hardcode_direct_absolute" = no; then
6849fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		add="$dir/$linklib"
6850fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      elif test "$hardcode_minus_L" = yes; then
685164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		add_dir="-L$absdir"
6852fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		# Try looking first in the location we're being installed to.
6853fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		if test -n "$inst_prefix_dir"; then
6854fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  case $libdir in
6855fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		    [\\/]*)
685664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		      func_append add_dir " -L$inst_prefix_dir$libdir"
6857fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		      ;;
6858fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  esac
6859fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		fi
6860fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		add="-l$name"
6861fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      elif test "$hardcode_shlibpath_var" = yes; then
6862fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		add_shlibpath="$dir"
6863fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		add="-l$name"
6864fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      else
6865fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		lib_linked=no
6866fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      fi
6867fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      ;;
6868fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    *) lib_linked=no ;;
6869fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    esac
6870fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
6871fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    if test "$lib_linked" != yes; then
6872fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      func_fatal_configuration "unsupported hardcode properties"
6873fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    fi
6874fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
6875fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    if test -n "$add_shlibpath"; then
6876fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      case :$compile_shlibpath: in
6877fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      *":$add_shlibpath:"*) ;;
687864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      *) func_append compile_shlibpath "$add_shlibpath:" ;;
6879fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      esac
6880fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    fi
6881fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    if test "$linkmode" = prog; then
6882fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
6883fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
6884fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    else
6885fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
6886fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      test -n "$add" && deplibs="$add $deplibs"
6887fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      if test "$hardcode_direct" != yes &&
6888fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		 test "$hardcode_minus_L" != yes &&
6889fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		 test "$hardcode_shlibpath_var" = yes; then
6890fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		case :$finalize_shlibpath: in
6891fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		*":$libdir:"*) ;;
689264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		*) func_append finalize_shlibpath "$libdir:" ;;
6893fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		esac
6894fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      fi
6895fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    fi
6896fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
6897fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
689864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  if test "$linkmode" = prog || test "$opt_mode" = relink; then
6899fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    add_shlibpath=
6900fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    add_dir=
6901fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    add=
6902fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # Finalize command for both is simple: just hardcode it.
6903fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    if test "$hardcode_direct" = yes &&
6904fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	       test "$hardcode_direct_absolute" = no; then
6905fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      add="$libdir/$linklib"
6906fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    elif test "$hardcode_minus_L" = yes; then
6907fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      add_dir="-L$libdir"
6908fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      add="-l$name"
6909fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    elif test "$hardcode_shlibpath_var" = yes; then
6910fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      case :$finalize_shlibpath: in
6911fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      *":$libdir:"*) ;;
691264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      *) func_append finalize_shlibpath "$libdir:" ;;
6913fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      esac
6914fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      add="-l$name"
6915fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    elif test "$hardcode_automatic" = yes; then
6916fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      if test -n "$inst_prefix_dir" &&
6917fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		 test -f "$inst_prefix_dir$libdir/$linklib" ; then
6918fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		add="$inst_prefix_dir$libdir/$linklib"
6919fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      else
6920fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		add="$libdir/$linklib"
6921fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      fi
6922fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    else
6923fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      # We cannot seem to hardcode it, guess we'll fake it.
6924fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      add_dir="-L$libdir"
6925fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      # Try looking first in the location we're being installed to.
6926fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      if test -n "$inst_prefix_dir"; then
6927fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		case $libdir in
6928fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  [\\/]*)
692964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		    func_append add_dir " -L$inst_prefix_dir$libdir"
6930fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		    ;;
6931fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		esac
6932fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      fi
6933fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      add="-l$name"
6934fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    fi
6935fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
6936fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    if test "$linkmode" = prog; then
6937fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
6938fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
6939fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    else
6940fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
6941fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      test -n "$add" && deplibs="$add $deplibs"
6942fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    fi
6943fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
6944fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	elif test "$linkmode" = prog; then
6945fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # Here we assume that one of hardcode_direct or hardcode_minus_L
6946fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # is not unsupported.  This is valid on all known static and
6947fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # shared platforms.
6948fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test "$hardcode_direct" != unsupported; then
6949fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    test -n "$old_library" && linklib="$old_library"
6950fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    compile_deplibs="$dir/$linklib $compile_deplibs"
6951fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
6952fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  else
6953fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    compile_deplibs="-l$name -L$dir $compile_deplibs"
6954fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
6955fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
6956fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	elif test "$build_libtool_libs" = yes; then
6957fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # Not a shared library
6958fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test "$deplibs_check_method" != pass_all; then
6959fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # We're trying link a shared library against a static one
6960fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # but the system doesn't support it.
6961fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
6962fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # Just print a warning and add the library to dependency_libs so
6963fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # that the program can be linked against the static library.
696464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    echo
6965fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    $ECHO "*** Warning: This system can not link to static lib archive $lib."
696664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    echo "*** I have the capability to make that library automatically link in when"
696764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    echo "*** you link to this library.  But I can only do this if you have a"
696864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    echo "*** shared version of the library, which you do not appear to have."
6969fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    if test "$module" = yes; then
697064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      echo "*** But as you try to build a module library, libtool will still create "
697164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      echo "*** a static module, that should work as long as the dlopening application"
697264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
6973fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      if test -z "$global_symbol_pipe"; then
697464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		echo
697564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		echo "*** However, this would only work if libtool was able to extract symbol"
697664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
697764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		echo "*** not find such a program.  So, this module is probably useless."
697864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		echo "*** \`nm' from GNU binutils and a full rebuild may help."
6979fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      fi
6980fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      if test "$build_old_libs" = no; then
6981fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		build_libtool_libs=module
6982fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		build_old_libs=yes
6983fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      else
6984fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		build_libtool_libs=no
6985fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      fi
6986fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    fi
6987fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  else
6988fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    deplibs="$dir/$old_library $deplibs"
6989fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    link_static=yes
6990fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
6991fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi # link shared/static library?
6992fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
6993fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test "$linkmode" = lib; then
6994fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test -n "$dependency_libs" &&
6995fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	     { test "$hardcode_into_libs" != yes ||
6996fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	       test "$build_old_libs" = yes ||
6997fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	       test "$link_static" = yes; }; then
6998fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # Extract -R from dependency_libs
6999fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    temp_deplibs=
7000fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    for libdir in $dependency_libs; do
7001fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      case $libdir in
7002fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      -R*) func_stripname '-R' '' "$libdir"
7003fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	           temp_xrpath=$func_stripname_result
7004fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		   case " $xrpath " in
7005fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		   *" $temp_xrpath "*) ;;
700664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		   *) func_append xrpath " $temp_xrpath";;
7007fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		   esac;;
700864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      *) func_append temp_deplibs " $libdir";;
7009fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      esac
7010fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    done
7011fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    dependency_libs="$temp_deplibs"
7012fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
7013fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
701464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  func_append newlib_search_path " $absdir"
7015fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # Link against this library
7016fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
7017fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # ... and its dependency_libs
7018fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  tmp_libs=
7019fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  for deplib in $dependency_libs; do
7020fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    newdependency_libs="$deplib $newdependency_libs"
702164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    case $deplib in
702264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci              -L*) func_stripname '-L' '' "$deplib"
702364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci                   func_resolve_sysroot "$func_stripname_result";;
702464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci              *) func_resolve_sysroot "$deplib" ;;
702564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci            esac
702664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    if $opt_preserve_dup_deps ; then
7027fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      case "$tmp_libs " in
702864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      *" $func_resolve_sysroot_result "*)
702964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci                func_append specialdeplibs " $func_resolve_sysroot_result" ;;
7030fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      esac
7031fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    fi
703264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    func_append tmp_libs " $func_resolve_sysroot_result"
7033fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  done
7034fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
7035fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test "$link_all_deplibs" != no; then
7036fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # Add the search paths of all dependency libraries
7037fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    for deplib in $dependency_libs; do
703864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      path=
7039fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      case $deplib in
7040fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      -L*) path="$deplib" ;;
7041fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      *.la)
704264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	        func_resolve_sysroot "$deplib"
704364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	        deplib=$func_resolve_sysroot_result
7044fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	        func_dirname "$deplib" "" "."
704564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		dir=$func_dirname_result
7046fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		# We need an absolute path.
7047fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		case $dir in
7048fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
7049fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		*)
7050fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  absdir=`cd "$dir" && pwd`
7051fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  if test -z "$absdir"; then
7052fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		    func_warning "cannot determine absolute directory name of \`$dir'"
7053fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		    absdir="$dir"
7054fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  fi
7055fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  ;;
7056fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		esac
7057fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		if $GREP "^installed=no" $deplib > /dev/null; then
7058fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		case $host in
7059fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		*-*-darwin*)
7060fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  depdepl=
7061fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
7062fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  if test -n "$deplibrary_names" ; then
7063fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		    for tmp in $deplibrary_names ; do
7064fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		      depdepl=$tmp
7065fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		    done
7066fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		    if test -f "$absdir/$objdir/$depdepl" ; then
7067fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		      depdepl="$absdir/$objdir/$depdepl"
7068fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		      darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
7069fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville                      if test -z "$darwin_install_name"; then
7070fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville                          darwin_install_name=`${OTOOL64} -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
7071fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville                      fi
707264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		      func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
707364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		      func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}"
7074fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		      path=
7075fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		    fi
7076fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  fi
7077fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  ;;
7078fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		*)
7079fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  path="-L$absdir/$objdir"
7080fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  ;;
7081fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		esac
7082fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		else
7083fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
7084fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  test -z "$libdir" && \
7085fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		    func_fatal_error "\`$deplib' is not a valid libtool archive"
7086fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  test "$absdir" != "$libdir" && \
7087fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		    func_warning "\`$deplib' seems to be moved"
7088fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
7089fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  path="-L$absdir"
7090fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		fi
7091fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		;;
7092fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      esac
7093fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      case " $deplibs " in
7094fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      *" $path "*) ;;
7095fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      *) deplibs="$path $deplibs" ;;
7096fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      esac
7097fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    done
7098fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi # link_all_deplibs != no
7099fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi # linkmode = lib
7100fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      done # for deplib in $libs
7101fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if test "$pass" = link; then
7102fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test "$linkmode" = "prog"; then
7103fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
7104fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
7105fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	else
710664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
7107fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
7108fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
7109fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      dependency_libs="$newdependency_libs"
7110fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if test "$pass" = dlpreopen; then
7111fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Link the dlpreopened libraries before other libraries
7112fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	for deplib in $save_deplibs; do
7113fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  deplibs="$deplib $deplibs"
7114fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	done
7115fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
7116fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if test "$pass" != dlopen; then
7117fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test "$pass" != conv; then
7118fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # Make sure lib_search_path contains only unique directories.
7119fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  lib_search_path=
7120fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  for dir in $newlib_search_path; do
7121fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    case "$lib_search_path " in
7122fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    *" $dir "*) ;;
712364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    *) func_append lib_search_path " $dir" ;;
7124fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    esac
7125fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  done
7126fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  newlib_search_path=
7127fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
7128fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
7129fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test "$linkmode,$pass" != "prog,link"; then
7130fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  vars="deplibs"
7131fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	else
7132fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  vars="compile_deplibs finalize_deplibs"
7133fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
7134fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	for var in $vars dependency_libs; do
7135fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # Add libraries to $var in reverse order
7136fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  eval tmp_libs=\"\$$var\"
7137fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  new_libs=
7138fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  for deplib in $tmp_libs; do
7139fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # FIXME: Pedantically, this is the right thing to do, so
7140fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    #        that some nasty dependency loop isn't accidentally
7141fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    #        broken:
7142fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    #new_libs="$deplib $new_libs"
7143fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # Pragmatically, this seems to cause very few problems in
7144fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # practice:
7145fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    case $deplib in
7146fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    -L*) new_libs="$deplib $new_libs" ;;
7147fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    -R*) ;;
7148fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    *)
7149fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      # And here is the reason: when a library appears more
7150fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      # than once as an explicit dependence of a library, or
7151fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      # is implicitly linked in more than once by the
7152fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      # compiler, it is considered special, and multiple
7153fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      # occurrences thereof are not removed.  Compare this
7154fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      # with having the same library being listed as a
7155fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      # dependency of multiple other libraries: in this case,
7156fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      # we know (pedantically, we assume) the library does not
7157fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      # need to be listed more than once, so we keep only the
7158fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      # last copy.  This is not always right, but it is rare
7159fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      # enough that we require users that really mean to play
7160fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      # such unportable linking tricks to link the library
7161fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      # using -Wl,-lname, so that libtool does not consider it
7162fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      # for duplicate removal.
7163fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      case " $specialdeplibs " in
7164fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
7165fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      *)
7166fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		case " $new_libs " in
7167fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		*" $deplib "*) ;;
7168fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		*) new_libs="$deplib $new_libs" ;;
7169fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		esac
7170fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		;;
7171fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      esac
7172fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      ;;
7173fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    esac
7174fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  done
7175fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  tmp_libs=
7176fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  for deplib in $new_libs; do
7177fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    case $deplib in
7178fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    -L*)
7179fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      case " $tmp_libs " in
7180fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      *" $deplib "*) ;;
718164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      *) func_append tmp_libs " $deplib" ;;
7182fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      esac
7183fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      ;;
718464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    *) func_append tmp_libs " $deplib" ;;
7185fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    esac
7186fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  done
7187fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  eval $var=\"$tmp_libs\"
7188fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	done # for var
7189fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
7190fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # Last step: remove runtime libs from dependency_libs
7191fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # (they stay in deplibs)
7192fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      tmp_libs=
7193fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      for i in $dependency_libs ; do
7194fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	case " $predeps $postdeps $compiler_lib_search_path " in
7195fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	*" $i "*)
7196fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  i=""
7197fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
7198fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	esac
7199fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test -n "$i" ; then
720064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  func_append tmp_libs " $i"
7201fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
7202fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      done
7203fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      dependency_libs=$tmp_libs
7204fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    done # for pass
7205fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    if test "$linkmode" = prog; then
7206fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      dlfiles="$newdlfiles"
7207fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    fi
7208fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    if test "$linkmode" = prog || test "$linkmode" = lib; then
7209fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      dlprefiles="$newdlprefiles"
7210fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    fi
7211fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
7212fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    case $linkmode in
7213fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    oldlib)
7214fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
7215fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_warning "\`-dlopen' is ignored for archives"
7216fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
7217fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
7218fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      case " $deplibs" in
7219fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      *\ -l* | *\ -L*)
7220fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_warning "\`-l' and \`-L' are ignored for archives" ;;
7221fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      esac
7222fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
7223fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      test -n "$rpath" && \
7224fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_warning "\`-rpath' is ignored for archives"
7225fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
7226fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      test -n "$xrpath" && \
7227fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_warning "\`-R' is ignored for archives"
7228fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
7229fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      test -n "$vinfo" && \
7230fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_warning "\`-version-info/-version-number' is ignored for archives"
7231fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
7232fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      test -n "$release" && \
7233fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_warning "\`-release' is ignored for archives"
7234fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
7235fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      test -n "$export_symbols$export_symbols_regex" && \
7236fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_warning "\`-export-symbols' is ignored for archives"
7237fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
7238fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # Now set the variables for building old libraries.
7239fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      build_libtool_libs=no
7240fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      oldlibs="$output"
724164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      func_append objs "$old_deplibs"
7242fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      ;;
7243fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
7244fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    lib)
7245fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # Make sure we only generate libraries of the form `libNAME.la'.
7246fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      case $outputname in
7247fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      lib*)
7248fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_stripname 'lib' '.la' "$outputname"
7249fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	name=$func_stripname_result
7250fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	eval shared_ext=\"$shrext_cmds\"
7251fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	eval libname=\"$libname_spec\"
7252fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
7253fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      *)
7254fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	test "$module" = no && \
7255fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_fatal_help "libtool library \`$output' must begin with \`lib'"
7256fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
7257fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test "$need_lib_prefix" != no; then
7258fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # Add the "lib" prefix for modules if required
7259fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_stripname '' '.la' "$outputname"
7260fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  name=$func_stripname_result
7261fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  eval shared_ext=\"$shrext_cmds\"
7262fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  eval libname=\"$libname_spec\"
7263fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	else
7264fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_stripname '' '.la' "$outputname"
7265fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  libname=$func_stripname_result
7266fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
7267fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
7268fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      esac
7269fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
7270fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if test -n "$objs"; then
7271fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test "$deplibs_check_method" != pass_all; then
7272fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
7273fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	else
727464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  echo
7275fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
7276fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  $ECHO "*** objects $objs is not portable!"
727764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  func_append libobjs " $objs"
7278fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
7279fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
7280fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
7281fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      test "$dlself" != no && \
7282fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_warning "\`-dlopen self' is ignored for libtool libraries"
7283fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
7284fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      set dummy $rpath
7285fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      shift
7286fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      test "$#" -gt 1 && \
7287fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_warning "ignoring multiple \`-rpath's for a libtool library"
7288fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
7289fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      install_libdir="$1"
7290fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
7291fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      oldlibs=
7292fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if test -z "$rpath"; then
7293fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test "$build_libtool_libs" = yes; then
7294fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # Building a libtool convenience library.
7295fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # Some compilers have problems with a `.al' extension so
7296fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # convenience libraries should have the same extension an
7297fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # archive normally would.
7298fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
7299fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  build_libtool_libs=convenience
7300fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  build_old_libs=yes
7301fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
7302fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
7303fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	test -n "$vinfo" && \
7304fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
7305fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
7306fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	test -n "$release" && \
7307fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_warning "\`-release' is ignored for convenience libraries"
7308fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      else
7309fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
7310fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Parse the version information argument.
7311fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	save_ifs="$IFS"; IFS=':'
7312fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	set dummy $vinfo 0 0 0
7313fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	shift
7314fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	IFS="$save_ifs"
7315fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
7316fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	test -n "$7" && \
7317fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_fatal_help "too many parameters to \`-version-info'"
7318fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
7319fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# convert absolute version numbers to libtool ages
7320fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# this retains compatibility with .la files and attempts
7321fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# to make the code below a bit more comprehensible
7322fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
7323fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	case $vinfo_number in
7324fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	yes)
7325fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  number_major="$1"
7326fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  number_minor="$2"
7327fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  number_revision="$3"
7328fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  #
7329fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # There are really only two kinds -- those that
7330fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # use the current revision as the major version
7331fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # and those that subtract age and use age as
7332fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # a minor version.  But, then there is irix
7333fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # which has an extra 1 added just for fun
7334fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  #
7335fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  case $version_type in
733664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  # correct linux to gnu/linux during the next big refactor
7337fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  darwin|linux|osf|windows|none)
7338fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    func_arith $number_major + $number_minor
7339fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    current=$func_arith_result
7340fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    age="$number_minor"
7341fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    revision="$number_revision"
7342fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    ;;
734364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  freebsd-aout|freebsd-elf|qnx|sunos)
7344fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    current="$number_major"
7345fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    revision="$number_minor"
7346fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    age="0"
7347fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    ;;
7348fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  irix|nonstopux)
7349fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    func_arith $number_major + $number_minor
7350fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    current=$func_arith_result
7351fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    age="$number_minor"
7352fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    revision="$number_minor"
7353fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    lt_irix_increment=no
7354fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    ;;
735564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  *)
735664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    func_fatal_configuration "$modename: unknown library version type \`$version_type'"
735764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    ;;
7358fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  esac
7359fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
7360fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	no)
7361fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  current="$1"
7362fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  revision="$2"
7363fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  age="$3"
7364fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
7365fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	esac
7366fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
7367fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Check that each of the things are valid numbers.
7368fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	case $current in
7369fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
7370fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	*)
7371fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_error "CURRENT \`$current' must be a nonnegative integer"
7372fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_fatal_error "\`$vinfo' is not valid version information"
7373fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
7374fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	esac
7375fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
7376fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	case $revision in
7377fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
7378fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	*)
7379fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_error "REVISION \`$revision' must be a nonnegative integer"
7380fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_fatal_error "\`$vinfo' is not valid version information"
7381fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
7382fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	esac
7383fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
7384fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	case $age in
7385fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
7386fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	*)
7387fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_error "AGE \`$age' must be a nonnegative integer"
7388fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_fatal_error "\`$vinfo' is not valid version information"
7389fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
7390fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	esac
7391fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
7392fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test "$age" -gt "$current"; then
7393fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_error "AGE \`$age' is greater than the current interface number \`$current'"
7394fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_fatal_error "\`$vinfo' is not valid version information"
7395fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
7396fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
7397fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Calculate the version variables.
7398fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	major=
7399fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	versuffix=
7400fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	verstring=
7401fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	case $version_type in
7402fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	none) ;;
7403fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
7404fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	darwin)
7405fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # Like Linux, but with the current version available in
7406fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # verstring for coding it into the library header
7407fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_arith $current - $age
7408fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  major=.$func_arith_result
7409fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  versuffix="$major.$age.$revision"
7410fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # Darwin ld doesn't like 0 for these options...
7411fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_arith $current + 1
7412fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  minor_current=$func_arith_result
7413fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
7414fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
7415fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
7416fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
7417fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	freebsd-aout)
7418fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  major=".$current"
7419fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  versuffix=".$current.$revision";
7420fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
7421fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
7422fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	freebsd-elf)
7423fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  major=".$current"
7424fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  versuffix=".$current"
7425fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
7426fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
7427fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	irix | nonstopux)
7428fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test "X$lt_irix_increment" = "Xno"; then
7429fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    func_arith $current - $age
7430fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  else
7431fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    func_arith $current - $age + 1
7432fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
7433fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  major=$func_arith_result
7434fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
7435fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  case $version_type in
7436fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    nonstopux) verstring_prefix=nonstopux ;;
7437fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    *)         verstring_prefix=sgi ;;
7438fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  esac
7439fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  verstring="$verstring_prefix$major.$revision"
7440fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
7441fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # Add in all the interfaces that we are compatible with.
7442fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  loop=$revision
7443fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  while test "$loop" -ne 0; do
7444fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    func_arith $revision - $loop
7445fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    iface=$func_arith_result
7446fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    func_arith $loop - 1
7447fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    loop=$func_arith_result
7448fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    verstring="$verstring_prefix$major.$iface:$verstring"
7449fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  done
7450fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
7451fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # Before this point, $major must not contain `.'.
7452fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  major=.$major
7453fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  versuffix="$major.$revision"
7454fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
7455fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
745664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	linux) # correct to gnu/linux during the next big refactor
7457fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_arith $current - $age
7458fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  major=.$func_arith_result
7459fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  versuffix="$major.$age.$revision"
7460fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
7461fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
7462fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	osf)
7463fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_arith $current - $age
7464fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  major=.$func_arith_result
7465fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  versuffix=".$current.$age.$revision"
7466fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  verstring="$current.$age.$revision"
7467fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
7468fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # Add in all the interfaces that we are compatible with.
7469fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  loop=$age
7470fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  while test "$loop" -ne 0; do
7471fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    func_arith $current - $loop
7472fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    iface=$func_arith_result
7473fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    func_arith $loop - 1
7474fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    loop=$func_arith_result
7475fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    verstring="$verstring:${iface}.0"
7476fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  done
7477fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
7478fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # Make executables depend on our current version.
747964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  func_append verstring ":${current}.0"
7480fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
7481fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
7482fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	qnx)
7483fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  major=".$current"
7484fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  versuffix=".$current"
7485fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
7486fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
7487fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	sunos)
7488fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  major=".$current"
7489fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  versuffix=".$current.$revision"
7490fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
7491fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
7492fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	windows)
7493fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # Use '-' rather than '.', since we only want one
7494fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # extension on DOS 8.3 filesystems.
7495fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_arith $current - $age
7496fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  major=$func_arith_result
7497fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  versuffix="-$major"
7498fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
7499fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
7500fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	*)
7501fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_fatal_configuration "unknown library version type \`$version_type'"
7502fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
7503fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	esac
7504fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
7505fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Clear the version info if we defaulted, and they specified a release.
7506fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test -z "$vinfo" && test -n "$release"; then
7507fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  major=
7508fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  case $version_type in
7509fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  darwin)
7510fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # we can't check for "0.0" in archive_cmds due to quoting
7511fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # problems, so we reset it completely
7512fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    verstring=
7513fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    ;;
7514fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  *)
7515fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    verstring="0.0"
7516fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    ;;
7517fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  esac
7518fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test "$need_version" = no; then
7519fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    versuffix=
7520fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  else
7521fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    versuffix=".0.0"
7522fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
7523fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
7524fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
7525fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Remove version info from name if versioning should be avoided
7526fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test "$avoid_version" = yes && test "$need_version" = no; then
7527fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  major=
7528fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  versuffix=
7529fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  verstring=""
7530fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
7531fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
7532fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Check to see if the archive will have undefined symbols.
7533fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test "$allow_undefined" = yes; then
7534fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test "$allow_undefined_flag" = unsupported; then
7535fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    func_warning "undefined symbols not allowed in $host shared libraries"
7536fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    build_libtool_libs=no
7537fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    build_old_libs=yes
7538fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
7539fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	else
7540fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # Don't allow undefined symbols.
7541fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  allow_undefined_flag="$no_undefined_flag"
7542fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
7543fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
7544fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
7545fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
7546fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      func_generate_dlsyms "$libname" "$libname" "yes"
754764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      func_append libobjs " $symfileobj"
7548fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      test "X$libobjs" = "X " && libobjs=
7549fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
755064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      if test "$opt_mode" != relink; then
7551fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Remove our outputs, but don't remove object files since they
7552fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# may have been created when compiling PIC objects.
7553fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	removelist=
7554fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	tempremovelist=`$ECHO "$output_objdir/*"`
7555fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	for p in $tempremovelist; do
7556fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  case $p in
755764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    *.$objext | *.gcno)
7558fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	       ;;
7559fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
7560fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	       if test "X$precious_files_regex" != "X"; then
7561fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		 if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
7562fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		 then
7563fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		   continue
7564fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		 fi
7565fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	       fi
756664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	       func_append removelist " $p"
7567fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	       ;;
7568fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    *) ;;
7569fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  esac
7570fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	done
7571fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	test -n "$removelist" && \
7572fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_show_eval "${RM}r \$removelist"
7573fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
7574fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
7575fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # Now set the variables for building old libraries.
7576fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
757764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	func_append oldlibs " $output_objdir/$libname.$libext"
7578fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
7579fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Transform .lo files to .o files.
758064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP`
7581fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
7582fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
7583fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # Eliminate all temporary directories.
7584fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      #for path in $notinst_path; do
758564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      #	lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"`
758664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      #	deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"`
758764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      #	dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"`
7588fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      #done
7589fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
7590fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if test -n "$xrpath"; then
7591fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# If the user specified any rpath flags, then add them.
7592fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	temp_xrpath=
7593fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	for libdir in $xrpath; do
759464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  func_replace_sysroot "$libdir"
759564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  func_append temp_xrpath " -R$func_replace_sysroot_result"
7596fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  case "$finalize_rpath " in
7597fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  *" $libdir "*) ;;
759864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  *) func_append finalize_rpath " $libdir" ;;
7599fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  esac
7600fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	done
7601fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
7602fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  dependency_libs="$temp_xrpath $dependency_libs"
7603fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
7604fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
7605fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
7606fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # Make sure dlfiles contains only unique files that won't be dlpreopened
7607fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      old_dlfiles="$dlfiles"
7608fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      dlfiles=
7609fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      for lib in $old_dlfiles; do
7610fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	case " $dlprefiles $dlfiles " in
7611fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	*" $lib "*) ;;
761264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	*) func_append dlfiles " $lib" ;;
7613fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	esac
7614fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      done
7615fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
7616fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # Make sure dlprefiles contains only unique files
7617fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      old_dlprefiles="$dlprefiles"
7618fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      dlprefiles=
7619fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      for lib in $old_dlprefiles; do
7620fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	case "$dlprefiles " in
7621fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	*" $lib "*) ;;
762264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	*) func_append dlprefiles " $lib" ;;
7623fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	esac
7624fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      done
7625fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
7626fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if test "$build_libtool_libs" = yes; then
7627fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test -n "$rpath"; then
7628fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  case $host in
762964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*)
7630fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # these systems don't actually have a c library (as such)!
7631fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    ;;
7632fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  *-*-rhapsody* | *-*-darwin1.[012])
7633fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # Rhapsody C library is in the System framework
763464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    func_append deplibs " System.ltframework"
7635fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    ;;
7636fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  *-*-netbsd*)
7637fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # Don't link with libc until the a.out ld.so is fixed.
7638fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    ;;
7639fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
7640fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # Do not include libc due to us having libc/libc_r.
7641fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    ;;
7642fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  *-*-sco3.2v5* | *-*-sco5v6*)
7643fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # Causes problems with __ctype
7644fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    ;;
7645fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
7646fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # Compiler inserts libc in the correct place for threads to work
7647fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    ;;
7648fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  *)
7649fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # Add libc to deplibs on all other systems if necessary.
7650fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    if test "$build_libtool_need_lc" = "yes"; then
765164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      func_append deplibs " -lc"
7652fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    fi
7653fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    ;;
7654fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  esac
7655fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
7656fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
7657fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Transform deplibs into only deplibs that can be linked in shared.
7658fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	name_save=$name
7659fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	libname_save=$libname
7660fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	release_save=$release
7661fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	versuffix_save=$versuffix
7662fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	major_save=$major
7663fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# I'm not sure if I'm treating the release correctly.  I think
7664fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# release should show up in the -l (ie -lgmp5) so we don't want to
7665fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# add it in twice.  Is that correct?
7666fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	release=""
7667fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	versuffix=""
7668fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	major=""
7669fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	newdeplibs=
7670fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	droppeddeps=no
7671fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	case $deplibs_check_method in
7672fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	pass_all)
7673fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # Don't check for shared/static.  Everything works.
7674fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # This might be a little naive.  We might want to check
7675fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # whether the library exists or not.  But this is on
7676fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # osf3 & osf4 and I'm not really sure... Just
7677fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # implementing what was already the behavior.
7678fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  newdeplibs=$deplibs
7679fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
7680fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	test_compile)
7681fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # This code stresses the "libraries are programs" paradigm to its
7682fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # limits. Maybe even breaks it.  We compile a program, linking it
7683fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # against the deplibs as a proxy for the library.  Then we can check
7684fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # whether they linked in statically or dynamically with ldd.
7685fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  $opt_dry_run || $RM conftest.c
7686fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  cat > conftest.c <<EOF
7687fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  int main() { return 0; }
7688fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleEOF
7689fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  $opt_dry_run || $RM conftest
7690fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
7691fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    ldd_output=`ldd conftest`
7692fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    for i in $deplibs; do
7693fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      case $i in
7694fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      -l*)
7695fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		func_stripname -l '' "$i"
7696fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		name=$func_stripname_result
7697fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
7698fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  case " $predeps $postdeps " in
7699fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  *" $i "*)
770064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		    func_append newdeplibs " $i"
7701fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		    i=""
7702fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		    ;;
7703fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  esac
7704fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		fi
7705fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		if test -n "$i" ; then
7706fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  libname=`eval "\\$ECHO \"$libname_spec\""`
7707fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
7708fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  set dummy $deplib_matches; shift
7709fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  deplib_match=$1
7710fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
771164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		    func_append newdeplibs " $i"
7712fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  else
7713fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		    droppeddeps=yes
771464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		    echo
7715fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		    $ECHO "*** Warning: dynamic linker does not accept needed library $i."
771664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		    echo "*** I have the capability to make that library automatically link in when"
771764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		    echo "*** you link to this library.  But I can only do this if you have a"
771864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		    echo "*** shared version of the library, which I believe you do not have"
771964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		    echo "*** because a test_compile did reveal that the linker did not use it for"
772064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		    echo "*** its dynamic dependency list that programs get resolved with at runtime."
7721fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  fi
7722fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		fi
7723fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		;;
7724fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      *)
772564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		func_append newdeplibs " $i"
7726fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		;;
7727fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      esac
7728fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    done
7729fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  else
7730fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # Error occurred in the first compile.  Let's try to salvage
7731fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # the situation: Compile a separate program for each library.
7732fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    for i in $deplibs; do
7733fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      case $i in
7734fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      -l*)
7735fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		func_stripname -l '' "$i"
7736fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		name=$func_stripname_result
7737fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		$opt_dry_run || $RM conftest
7738fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
7739fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  ldd_output=`ldd conftest`
7740fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
7741fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		    case " $predeps $postdeps " in
7742fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		    *" $i "*)
774364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		      func_append newdeplibs " $i"
7744fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		      i=""
7745fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		      ;;
7746fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		    esac
7747fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  fi
7748fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  if test -n "$i" ; then
7749fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		    libname=`eval "\\$ECHO \"$libname_spec\""`
7750fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		    deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
7751fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		    set dummy $deplib_matches; shift
7752fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		    deplib_match=$1
7753fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
775464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		      func_append newdeplibs " $i"
7755fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		    else
7756fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		      droppeddeps=yes
775764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		      echo
7758fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		      $ECHO "*** Warning: dynamic linker does not accept needed library $i."
775964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		      echo "*** I have the capability to make that library automatically link in when"
776064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		      echo "*** you link to this library.  But I can only do this if you have a"
776164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		      echo "*** shared version of the library, which you do not appear to have"
776264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		      echo "*** because a test_compile did reveal that the linker did not use this one"
776364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		      echo "*** as a dynamic dependency that programs can get resolved with at runtime."
7764fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		    fi
7765fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  fi
7766fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		else
7767fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  droppeddeps=yes
776864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		  echo
7769fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  $ECHO "*** Warning!  Library $i is needed by this library but I was not able to"
777064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		  echo "*** make it link in!  You will probably need to install it or some"
777164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		  echo "*** library that it depends on before this library will be fully"
777264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		  echo "*** functional.  Installing it before continuing would be even better."
7773fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		fi
7774fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		;;
7775fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      *)
777664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		func_append newdeplibs " $i"
7777fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		;;
7778fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      esac
7779fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    done
7780fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
7781fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
7782fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	file_magic*)
7783fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  set dummy $deplibs_check_method; shift
7784fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
7785fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  for a_deplib in $deplibs; do
7786fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    case $a_deplib in
7787fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    -l*)
7788fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      func_stripname -l '' "$a_deplib"
7789fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      name=$func_stripname_result
7790fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
7791fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		case " $predeps $postdeps " in
7792fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		*" $a_deplib "*)
779364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		  func_append newdeplibs " $a_deplib"
7794fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  a_deplib=""
7795fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  ;;
7796fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		esac
7797fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      fi
7798fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      if test -n "$a_deplib" ; then
7799fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		libname=`eval "\\$ECHO \"$libname_spec\""`
780064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		if test -n "$file_magic_glob"; then
780164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		  libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob`
780264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		else
780364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		  libnameglob=$libname
780464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		fi
780564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob`
7806fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
780764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		  if test "$want_nocaseglob" = yes; then
780864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		    shopt -s nocaseglob
780964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		    potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
781064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		    $nocaseglob
781164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		  else
781264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		    potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
781364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		  fi
7814fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  for potent_lib in $potential_libs; do
7815fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		      # Follow soft links.
7816fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		      if ls -lLd "$potent_lib" 2>/dev/null |
7817fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville			 $GREP " -> " >/dev/null; then
7818fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville			continue
7819fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		      fi
7820fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		      # The statement above tries to avoid entering an
7821fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		      # endless loop below, in case of cyclic links.
7822fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		      # We might still enter an endless loop, since a link
7823fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		      # loop can be closed while we follow links,
7824fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		      # but so what?
7825fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		      potlib="$potent_lib"
7826fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		      while test -h "$potlib" 2>/dev/null; do
7827fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville			potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
7828fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville			case $potliblink in
7829fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
783064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci			*) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";;
7831fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville			esac
7832fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		      done
7833fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
7834fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville			 $SED -e 10q |
7835fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville			 $EGREP "$file_magic_regex" > /dev/null; then
783664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci			func_append newdeplibs " $a_deplib"
7837fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville			a_deplib=""
7838fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville			break 2
7839fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		      fi
7840fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  done
7841fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		done
7842fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      fi
7843fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      if test -n "$a_deplib" ; then
7844fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		droppeddeps=yes
784564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		echo
7846fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
784764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		echo "*** I have the capability to make that library automatically link in when"
784864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		echo "*** you link to this library.  But I can only do this if you have a"
784964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		echo "*** shared version of the library, which you do not appear to have"
785064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		echo "*** because I did check the linker path looking for a file starting"
7851fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		if test -z "$potlib" ; then
7852fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
7853fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		else
7854fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  $ECHO "*** with $libname and none of the candidates passed a file format test"
7855fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  $ECHO "*** using a file magic. Last file checked: $potlib"
7856fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		fi
7857fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      fi
7858fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      ;;
7859fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    *)
7860fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      # Add a -L argument.
786164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      func_append newdeplibs " $a_deplib"
7862fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      ;;
7863fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    esac
7864fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  done # Gone through all deplibs.
7865fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
7866fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	match_pattern*)
7867fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  set dummy $deplibs_check_method; shift
7868fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
7869fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  for a_deplib in $deplibs; do
7870fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    case $a_deplib in
7871fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    -l*)
7872fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      func_stripname -l '' "$a_deplib"
7873fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      name=$func_stripname_result
7874fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
7875fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		case " $predeps $postdeps " in
7876fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		*" $a_deplib "*)
787764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		  func_append newdeplibs " $a_deplib"
7878fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  a_deplib=""
7879fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  ;;
7880fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		esac
7881fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      fi
7882fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      if test -n "$a_deplib" ; then
7883fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		libname=`eval "\\$ECHO \"$libname_spec\""`
7884fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
7885fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
7886fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  for potent_lib in $potential_libs; do
7887fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		    potlib="$potent_lib" # see symlink-check above in file_magic test
788864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		    if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \
7889fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		       $EGREP "$match_pattern_regex" > /dev/null; then
789064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		      func_append newdeplibs " $a_deplib"
7891fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		      a_deplib=""
7892fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		      break 2
7893fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		    fi
7894fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  done
7895fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		done
7896fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      fi
7897fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      if test -n "$a_deplib" ; then
7898fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		droppeddeps=yes
789964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		echo
7900fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
790164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		echo "*** I have the capability to make that library automatically link in when"
790264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		echo "*** you link to this library.  But I can only do this if you have a"
790364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		echo "*** shared version of the library, which you do not appear to have"
790464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		echo "*** because I did check the linker path looking for a file starting"
7905fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		if test -z "$potlib" ; then
7906fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
7907fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		else
7908fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  $ECHO "*** with $libname and none of the candidates passed a file format test"
7909fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  $ECHO "*** using a regex pattern. Last file checked: $potlib"
7910fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		fi
7911fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      fi
7912fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      ;;
7913fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    *)
7914fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      # Add a -L argument.
791564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      func_append newdeplibs " $a_deplib"
7916fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      ;;
7917fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    esac
7918fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  done # Gone through all deplibs.
7919fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
7920fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	none | unknown | *)
7921fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  newdeplibs=""
792264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'`
7923fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
7924fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    for i in $predeps $postdeps ; do
7925fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      # can't use Xsed below, because $i might contain '/'
792664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"`
7927fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    done
7928fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
792964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  case $tmp_deplibs in
793064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  *[!\	\ ]*)
793164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    echo
7932fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    if test "X$deplibs_check_method" = "Xnone"; then
793364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      echo "*** Warning: inter-library dependencies are not supported in this platform."
7934fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    else
793564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      echo "*** Warning: inter-library dependencies are not known to be supported."
7936fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    fi
793764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    echo "*** All declared inter-library dependencies are being dropped."
7938fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    droppeddeps=yes
793964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    ;;
794064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  esac
7941fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
7942fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	esac
7943fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	versuffix=$versuffix_save
7944fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	major=$major_save
7945fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	release=$release_save
7946fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	libname=$libname_save
7947fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	name=$name_save
7948fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
7949fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	case $host in
7950fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	*-*-rhapsody* | *-*-darwin1.[012])
7951fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # On Rhapsody replace the C library with the System framework
795264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'`
7953fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
7954fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	esac
7955fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
7956fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test "$droppeddeps" = yes; then
7957fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test "$module" = yes; then
795864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    echo
795964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    echo "*** Warning: libtool could not satisfy all declared inter-library"
7960fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    $ECHO "*** dependencies of module $libname.  Therefore, libtool will create"
796164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    echo "*** a static module, that should work as long as the dlopening"
796264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    echo "*** application is linked with the -dlopen flag."
7963fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    if test -z "$global_symbol_pipe"; then
796464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      echo
796564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      echo "*** However, this would only work if libtool was able to extract symbol"
796664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
796764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      echo "*** not find such a program.  So, this module is probably useless."
796864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      echo "*** \`nm' from GNU binutils and a full rebuild may help."
7969fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    fi
7970fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    if test "$build_old_libs" = no; then
7971fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      oldlibs="$output_objdir/$libname.$libext"
7972fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      build_libtool_libs=module
7973fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      build_old_libs=yes
7974fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    else
7975fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      build_libtool_libs=no
7976fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    fi
7977fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  else
797864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    echo "*** The inter-library dependencies that have been dropped here will be"
797964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    echo "*** automatically added whenever a program is linked with this library"
798064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    echo "*** or is declared to -dlopen it."
7981fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
7982fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    if test "$allow_undefined" = no; then
798364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      echo
798464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      echo "*** Since this library must not contain undefined symbols,"
798564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      echo "*** because either the platform does not support them or"
798664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      echo "*** it was explicitly requested with -no-undefined,"
798764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      echo "*** libtool will only create a static version of it."
7988fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      if test "$build_old_libs" = no; then
7989fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		oldlibs="$output_objdir/$libname.$libext"
7990fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		build_libtool_libs=module
7991fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		build_old_libs=yes
7992fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      else
7993fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		build_libtool_libs=no
7994fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      fi
7995fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    fi
7996fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
7997fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
7998fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Done checking deplibs!
7999fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	deplibs=$newdeplibs
8000fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
8001fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # Time to change all our "foo.ltframework" stuff back to "-framework foo"
8002fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      case $host in
8003fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	*-*-darwin*)
800464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
800564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
800664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
8007fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
8008fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      esac
8009fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8010fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # move library search paths that coincide with paths to not yet
8011fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # installed libraries to the beginning of the library search list
8012fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      new_libs=
8013fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      for path in $notinst_path; do
8014fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	case " $new_libs " in
8015fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	*" -L$path/$objdir "*) ;;
8016fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	*)
8017fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  case " $deplibs " in
8018fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  *" -L$path/$objdir "*)
801964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    func_append new_libs " -L$path/$objdir" ;;
8020fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  esac
8021fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
8022fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	esac
8023fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      done
8024fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      for deplib in $deplibs; do
8025fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	case $deplib in
8026fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	-L*)
8027fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  case " $new_libs " in
8028fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  *" $deplib "*) ;;
802964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  *) func_append new_libs " $deplib" ;;
8030fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  esac
8031fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
803264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	*) func_append new_libs " $deplib" ;;
8033fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	esac
8034fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      done
8035fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      deplibs="$new_libs"
8036fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8037fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # All the library-specific variables (install_libdir is set above).
8038fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      library_names=
8039fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      old_library=
8040fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      dlname=
8041fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8042fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # Test again, we may have decided not to build it any more
8043fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if test "$build_libtool_libs" = yes; then
804464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	# Remove ${wl} instances when linking with ld.
804564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	# FIXME: should test the right _cmds variable.
804664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	case $archive_cmds in
804764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  *\$LD\ *) wl= ;;
804864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        esac
8049fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test "$hardcode_into_libs" = yes; then
8050fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # Hardcode the library paths
8051fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  hardcode_libdirs=
8052fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  dep_rpath=
8053fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  rpath="$finalize_rpath"
805464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  test "$opt_mode" != relink && rpath="$compile_rpath$rpath"
8055fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  for libdir in $rpath; do
8056fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    if test -n "$hardcode_libdir_flag_spec"; then
8057fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      if test -n "$hardcode_libdir_separator"; then
805864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		func_replace_sysroot "$libdir"
805964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		libdir=$func_replace_sysroot_result
8060fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		if test -z "$hardcode_libdirs"; then
8061fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  hardcode_libdirs="$libdir"
8062fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		else
8063fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  # Just accumulate the unique libdirs.
8064fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
8065fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
8066fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		    ;;
8067fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  *)
806864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		    func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
8069fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		    ;;
8070fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  esac
8071fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		fi
8072fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      else
8073fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		eval flag=\"$hardcode_libdir_flag_spec\"
807464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		func_append dep_rpath " $flag"
8075fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      fi
8076fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    elif test -n "$runpath_var"; then
8077fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      case "$perm_rpath " in
8078fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      *" $libdir "*) ;;
807964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      *) func_append perm_rpath " $libdir" ;;
8080fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      esac
8081fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    fi
8082fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  done
8083fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # Substitute the hardcoded libdirs into the rpath.
8084fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test -n "$hardcode_libdir_separator" &&
8085fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	     test -n "$hardcode_libdirs"; then
8086fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    libdir="$hardcode_libdirs"
808764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    eval "dep_rpath=\"$hardcode_libdir_flag_spec\""
8088fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
8089fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
8090fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # We should set the runpath_var.
8091fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    rpath=
8092fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    for dir in $perm_rpath; do
809364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      func_append rpath "$dir:"
8094fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    done
8095fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
8096fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
8097fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
8098fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
8099fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8100fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	shlibpath="$finalize_shlibpath"
810164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
8102fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test -n "$shlibpath"; then
8103fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
8104fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
8105fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8106fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Get the real and link names of the library.
8107fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	eval shared_ext=\"$shrext_cmds\"
8108fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	eval library_names=\"$library_names_spec\"
8109fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	set dummy $library_names
8110fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	shift
8111fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	realname="$1"
8112fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	shift
8113fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8114fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test -n "$soname_spec"; then
8115fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  eval soname=\"$soname_spec\"
8116fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	else
8117fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  soname="$realname"
8118fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
8119fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test -z "$dlname"; then
8120fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  dlname=$soname
8121fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
8122fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8123fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	lib="$output_objdir/$realname"
8124fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	linknames=
8125fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	for link
8126fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	do
812764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  func_append linknames " $link"
8128fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	done
8129fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8130fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Use standard objects if they are pic
813164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP`
8132fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	test "X$libobjs" = "X " && libobjs=
8133fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8134fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	delfiles=
8135fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test -n "$export_symbols" && test -n "$include_expsyms"; then
8136fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
8137fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  export_symbols="$output_objdir/$libname.uexp"
813864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  func_append delfiles " $export_symbols"
8139fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
8140fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8141fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	orig_export_symbols=
8142fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	case $host_os in
814364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	cygwin* | mingw* | cegcc*)
8144fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
8145fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # exporting using user supplied symfile
8146fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
8147fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      # and it's NOT already a .def file. Must figure out
8148fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      # which of the given symbols are data symbols and tag
8149fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      # them as such. So, trigger use of export_symbols_cmds.
8150fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      # export_symbols gets reassigned inside the "prepare
8151fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      # the list of exported symbols" if statement, so the
8152fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      # include_expsyms logic still works.
8153fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      orig_export_symbols="$export_symbols"
8154fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      export_symbols=
8155fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      always_export_symbols=yes
8156fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    fi
8157fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
8158fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
8159fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	esac
8160fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8161fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Prepare the list of exported symbols
8162fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test -z "$export_symbols"; then
8163fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
8164fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    func_verbose "generating symbol list for \`$libname.la'"
8165fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    export_symbols="$output_objdir/$libname.exp"
8166fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    $opt_dry_run || $RM $export_symbols
8167fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    cmds=$export_symbols_cmds
8168fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    save_ifs="$IFS"; IFS='~'
816964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    for cmd1 in $cmds; do
8170fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      IFS="$save_ifs"
817164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      # Take the normal branch if the nm_file_list_spec branch
817264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      # doesn't work or if tool conversion is not needed.
817364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      case $nm_file_list_spec~$to_tool_file_cmd in
817464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		*~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*)
817564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		  try_normal_branch=yes
817664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		  eval cmd=\"$cmd1\"
817764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		  func_len " $cmd"
817864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		  len=$func_len_result
817964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		  ;;
818064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		*)
818164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		  try_normal_branch=no
818264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		  ;;
818364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      esac
818464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      if test "$try_normal_branch" = yes \
818564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		 && { test "$len" -lt "$max_cmd_len" \
818664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		      || test "$max_cmd_len" -le -1; }
818764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      then
818864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		func_show_eval "$cmd" 'exit $?'
818964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		skipped_export=false
819064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      elif test -n "$nm_file_list_spec"; then
819164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		func_basename "$output"
819264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		output_la=$func_basename_result
819364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		save_libobjs=$libobjs
819464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		save_output=$output
819564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		output=${output_objdir}/${output_la}.nm
819664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		func_to_tool_file "$output"
819764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		libobjs=$nm_file_list_spec$func_to_tool_file_result
819864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		func_append delfiles " $output"
819964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		func_verbose "creating $NM input file list: $output"
820064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		for obj in $save_libobjs; do
820164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		  func_to_tool_file "$obj"
820264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		  $ECHO "$func_to_tool_file_result"
820364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		done > "$output"
820464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		eval cmd=\"$cmd1\"
8205fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		func_show_eval "$cmd" 'exit $?'
820664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		output=$save_output
820764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		libobjs=$save_libobjs
8208fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		skipped_export=false
8209fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      else
8210fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		# The command line is too long to execute in one step.
8211fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		func_verbose "using reloadable object file for export list..."
8212fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		skipped_export=:
8213fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		# Break out early, otherwise skipped_export may be
8214fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		# set to false by a later but shorter cmd.
8215fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		break
8216fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      fi
8217fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    done
8218fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    IFS="$save_ifs"
8219fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
8220fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
8221fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
8222fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    fi
8223fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
8224fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
8225fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8226fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test -n "$export_symbols" && test -n "$include_expsyms"; then
8227fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  tmp_export_symbols="$export_symbols"
8228fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
822964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
8230fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
8231fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8232fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
8233fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # The given exports_symbols file has to be filtered, so filter it.
8234fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
8235fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # FIXME: $output_objdir/$libname.filter potentially contains lots of
8236fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # 's' commands which not all seds can handle. GNU sed should be fine
8237fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # though. Also, the filter scales superlinearly with the number of
8238fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # global variables. join(1) would be nice here, but unfortunately
8239fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # isn't a blessed tool.
8240fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
824164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  func_append delfiles " $export_symbols $output_objdir/$libname.filter"
8242fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  export_symbols=$output_objdir/$libname.def
8243fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
8244fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
8245fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8246fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	tmp_deplibs=
8247fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	for test_deplib in $deplibs; do
8248fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  case " $convenience " in
8249fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  *" $test_deplib "*) ;;
8250fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  *)
825164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    func_append tmp_deplibs " $test_deplib"
8252fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    ;;
8253fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  esac
8254fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	done
8255fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	deplibs="$tmp_deplibs"
8256fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8257fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test -n "$convenience"; then
8258fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test -n "$whole_archive_flag_spec" &&
8259fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    test "$compiler_needs_object" = yes &&
8260fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    test -z "$libobjs"; then
8261fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # extract the archives, so we have objects to list.
8262fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # TODO: could optimize this to just extract one archive.
8263fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    whole_archive_flag_spec=
8264fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
8265fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test -n "$whole_archive_flag_spec"; then
8266fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    save_libobjs=$libobjs
8267fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
8268fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    test "X$libobjs" = "X " && libobjs=
8269fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  else
8270fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    gentop="$output_objdir/${outputname}x"
827164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    func_append generated " $gentop"
8272fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8273fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    func_extract_archives $gentop $convenience
827464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    func_append libobjs " $func_extract_archives_result"
8275fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    test "X$libobjs" = "X " && libobjs=
8276fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
8277fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
8278fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8279fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
8280fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  eval flag=\"$thread_safe_flag_spec\"
828164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  func_append linker_flags " $flag"
8282fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
8283fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8284fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Make a backup of the uninstalled library when relinking
828564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	if test "$opt_mode" = relink; then
8286fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
8287fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
8288fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8289fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Do each of the archive commands.
8290fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test "$module" = yes && test -n "$module_cmds" ; then
8291fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
8292fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    eval test_cmds=\"$module_expsym_cmds\"
8293fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    cmds=$module_expsym_cmds
8294fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  else
8295fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    eval test_cmds=\"$module_cmds\"
8296fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    cmds=$module_cmds
8297fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
8298fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	else
8299fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
8300fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    eval test_cmds=\"$archive_expsym_cmds\"
8301fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    cmds=$archive_expsym_cmds
8302fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  else
8303fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    eval test_cmds=\"$archive_cmds\"
8304fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    cmds=$archive_cmds
8305fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
8306fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
8307fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8308fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test "X$skipped_export" != "X:" &&
8309fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	   func_len " $test_cmds" &&
8310fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	   len=$func_len_result &&
8311fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	   test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
8312fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  :
8313fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	else
8314fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # The command line is too long to link in one step, link piecewise
8315fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # or, if using GNU ld and skipped_export is not :, use a linker
8316fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # script.
8317fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8318fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # Save the value of $output and $libobjs because we want to
8319fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # use them later.  If we have whole_archive_flag_spec, we
8320fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # want to use save_libobjs as it was before
8321fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # whole_archive_flag_spec was expanded, because we can't
8322fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # assume the linker understands whole_archive_flag_spec.
8323fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # This may have to be revisited, in case too many
8324fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # convenience libraries get linked in and end up exceeding
8325fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # the spec.
8326fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
8327fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    save_libobjs=$libobjs
8328fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
8329fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  save_output=$output
833064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  func_basename "$output"
833164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  output_la=$func_basename_result
8332fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8333fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # Clear the reloadable object creation command queue and
8334fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # initialize k to one.
8335fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  test_cmds=
8336fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  concat_cmds=
8337fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  objlist=
8338fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  last_robj=
8339fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  k=1
8340fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8341fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
8342fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    output=${output_objdir}/${output_la}.lnkscript
8343fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    func_verbose "creating GNU ld script: $output"
834464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    echo 'INPUT (' > $output
8345fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    for obj in $save_libobjs
8346fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    do
834764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      func_to_tool_file "$obj"
834864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      $ECHO "$func_to_tool_file_result" >> $output
8349fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    done
835064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    echo ')' >> $output
835164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    func_append delfiles " $output"
835264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    func_to_tool_file "$output"
835364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    output=$func_to_tool_file_result
8354fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
8355fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    output=${output_objdir}/${output_la}.lnk
8356fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    func_verbose "creating linker input file list: $output"
8357fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    : > $output
8358fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    set x $save_libobjs
8359fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    shift
8360fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    firstobj=
8361fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    if test "$compiler_needs_object" = yes; then
8362fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      firstobj="$1 "
8363fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      shift
8364fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    fi
8365fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    for obj
8366fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    do
836764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      func_to_tool_file "$obj"
836864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      $ECHO "$func_to_tool_file_result" >> $output
8369fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    done
837064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    func_append delfiles " $output"
837164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    func_to_tool_file "$output"
837264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    output=$firstobj\"$file_list_spec$func_to_tool_file_result\"
8373fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  else
8374fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    if test -n "$save_libobjs"; then
8375fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      func_verbose "creating reloadable object files..."
8376fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      output=$output_objdir/$output_la-${k}.$objext
8377fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      eval test_cmds=\"$reload_cmds\"
8378fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      func_len " $test_cmds"
8379fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      len0=$func_len_result
8380fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      len=$len0
8381fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8382fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      # Loop over the list of objects to be linked.
8383fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      for obj in $save_libobjs
8384fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      do
8385fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		func_len " $obj"
8386fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		func_arith $len + $func_len_result
8387fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		len=$func_arith_result
8388fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		if test "X$objlist" = X ||
8389fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		   test "$len" -lt "$max_cmd_len"; then
8390fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  func_append objlist " $obj"
8391fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		else
8392fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  # The command $test_cmds is almost too long, add a
8393fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  # command to the queue.
8394fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  if test "$k" -eq 1 ; then
8395fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		    # The first file doesn't have a previous command to add.
839664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		    reload_objs=$objlist
839764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		    eval concat_cmds=\"$reload_cmds\"
8398fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  else
8399fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		    # All subsequent reloadable object files will link in
8400fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		    # the last one created.
840164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		    reload_objs="$objlist $last_robj"
840264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		    eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\"
8403fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  fi
8404fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  last_robj=$output_objdir/$output_la-${k}.$objext
8405fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  func_arith $k + 1
8406fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  k=$func_arith_result
8407fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  output=$output_objdir/$output_la-${k}.$objext
840864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		  objlist=" $obj"
8409fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  func_len " $last_robj"
8410fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  func_arith $len0 + $func_len_result
8411fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  len=$func_arith_result
8412fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		fi
8413fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      done
8414fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      # Handle the remaining objects by creating one last
8415fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      # reloadable object file.  All subsequent reloadable object
8416fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      # files will link in the last one created.
8417fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
841864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      reload_objs="$objlist $last_robj"
841964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      eval concat_cmds=\"\${concat_cmds}$reload_cmds\"
8420fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      if test -n "$last_robj"; then
8421fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	        eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
8422fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      fi
842364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      func_append delfiles " $output"
8424fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8425fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    else
8426fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      output=
8427fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    fi
8428fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8429fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    if ${skipped_export-false}; then
8430fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      func_verbose "generating symbol list for \`$libname.la'"
8431fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      export_symbols="$output_objdir/$libname.exp"
8432fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      $opt_dry_run || $RM $export_symbols
8433fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      libobjs=$output
8434fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      # Append the command to create the export file.
8435fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
8436fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
8437fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      if test -n "$last_robj"; then
8438fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
8439fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      fi
8440fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    fi
8441fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8442fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    test -n "$save_libobjs" &&
8443fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      func_verbose "creating a temporary reloadable object file: $output"
8444fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8445fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # Loop through the commands generated above and execute them.
8446fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    save_ifs="$IFS"; IFS='~'
8447fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    for cmd in $concat_cmds; do
8448fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      IFS="$save_ifs"
8449fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      $opt_silent || {
8450fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  func_quote_for_expand "$cmd"
8451fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  eval "func_echo $func_quote_for_expand_result"
8452fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      }
8453fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      $opt_dry_run || eval "$cmd" || {
8454fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		lt_exit=$?
8455fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8456fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		# Restore the uninstalled library and exit
845764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		if test "$opt_mode" = relink; then
8458fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  ( cd "$output_objdir" && \
8459fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		    $RM "${realname}T" && \
8460fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		    $MV "${realname}U" "$realname" )
8461fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		fi
8462fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8463fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		exit $lt_exit
8464fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      }
8465fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    done
8466fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    IFS="$save_ifs"
8467fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8468fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    if test -n "$export_symbols_regex" && ${skipped_export-false}; then
8469fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
8470fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
8471fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    fi
8472fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
8473fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8474fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville          if ${skipped_export-false}; then
8475fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    if test -n "$export_symbols" && test -n "$include_expsyms"; then
8476fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      tmp_export_symbols="$export_symbols"
8477fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
847864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
8479fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    fi
8480fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8481fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    if test -n "$orig_export_symbols"; then
8482fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      # The given exports_symbols file has to be filtered, so filter it.
8483fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
8484fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      # FIXME: $output_objdir/$libname.filter potentially contains lots of
8485fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      # 's' commands which not all seds can handle. GNU sed should be fine
8486fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      # though. Also, the filter scales superlinearly with the number of
8487fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      # global variables. join(1) would be nice here, but unfortunately
8488fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      # isn't a blessed tool.
8489fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
849064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      func_append delfiles " $export_symbols $output_objdir/$libname.filter"
8491fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      export_symbols=$output_objdir/$libname.def
8492fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
8493fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    fi
8494fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
8495fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8496fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  libobjs=$output
8497fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # Restore the value of output.
8498fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  output=$save_output
8499fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8500fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
8501fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
8502fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    test "X$libobjs" = "X " && libobjs=
8503fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
8504fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # Expand the library linking commands again to reset the
8505fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # value of $libobjs for piecewise linking.
8506fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8507fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # Do each of the archive commands.
8508fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test "$module" = yes && test -n "$module_cmds" ; then
8509fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
8510fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      cmds=$module_expsym_cmds
8511fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    else
8512fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      cmds=$module_cmds
8513fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    fi
8514fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  else
8515fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
8516fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      cmds=$archive_expsym_cmds
8517fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    else
8518fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      cmds=$archive_cmds
8519fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    fi
8520fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
8521fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
8522fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8523fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test -n "$delfiles"; then
8524fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # Append the command to remove temporary files to $cmds.
8525fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  eval cmds=\"\$cmds~\$RM $delfiles\"
8526fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
8527fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8528fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Add any objects from preloaded convenience libraries
8529fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test -n "$dlprefiles"; then
8530fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  gentop="$output_objdir/${outputname}x"
853164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  func_append generated " $gentop"
8532fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8533fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_extract_archives $gentop $dlprefiles
853464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  func_append libobjs " $func_extract_archives_result"
8535fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  test "X$libobjs" = "X " && libobjs=
8536fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
8537fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8538fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	save_ifs="$IFS"; IFS='~'
8539fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	for cmd in $cmds; do
8540fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  IFS="$save_ifs"
8541fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  eval cmd=\"$cmd\"
8542fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  $opt_silent || {
8543fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    func_quote_for_expand "$cmd"
8544fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    eval "func_echo $func_quote_for_expand_result"
8545fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  }
8546fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  $opt_dry_run || eval "$cmd" || {
8547fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    lt_exit=$?
8548fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8549fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # Restore the uninstalled library and exit
855064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    if test "$opt_mode" = relink; then
8551fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      ( cd "$output_objdir" && \
8552fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	        $RM "${realname}T" && \
8553fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		$MV "${realname}U" "$realname" )
8554fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    fi
8555fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8556fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    exit $lt_exit
8557fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  }
8558fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	done
8559fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	IFS="$save_ifs"
8560fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8561fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Restore the uninstalled library and exit
856264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	if test "$opt_mode" = relink; then
8563fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
8564fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8565fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test -n "$convenience"; then
8566fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    if test -z "$whole_archive_flag_spec"; then
8567fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      func_show_eval '${RM}r "$gentop"'
8568fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    fi
8569fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
8570fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8571fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  exit $EXIT_SUCCESS
8572fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
8573fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8574fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Create links to the real library.
8575fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	for linkname in $linknames; do
8576fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test "$realname" != "$linkname"; then
8577fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
8578fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
8579fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	done
8580fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8581fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# If -module or -export-dynamic was specified, set the dlname.
8582fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test "$module" = yes || test "$export_dynamic" = yes; then
8583fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # On all known operating systems, these are identical.
8584fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  dlname="$soname"
8585fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
8586fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
8587fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      ;;
8588fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8589fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    obj)
8590fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
8591fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_warning "\`-dlopen' is ignored for objects"
8592fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
8593fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8594fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      case " $deplibs" in
8595fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      *\ -l* | *\ -L*)
8596fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_warning "\`-l' and \`-L' are ignored for objects" ;;
8597fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      esac
8598fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8599fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      test -n "$rpath" && \
8600fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_warning "\`-rpath' is ignored for objects"
8601fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8602fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      test -n "$xrpath" && \
8603fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_warning "\`-R' is ignored for objects"
8604fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8605fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      test -n "$vinfo" && \
8606fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_warning "\`-version-info' is ignored for objects"
8607fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8608fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      test -n "$release" && \
8609fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_warning "\`-release' is ignored for objects"
8610fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8611fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      case $output in
8612fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      *.lo)
8613fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	test -n "$objs$old_deplibs" && \
8614fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_fatal_error "cannot build library object \`$output' from non-libtool objects"
8615fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8616fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	libobj=$output
8617fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_lo2o "$libobj"
8618fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	obj=$func_lo2o_result
8619fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
8620fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      *)
8621fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	libobj=
8622fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	obj="$output"
8623fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
8624fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      esac
8625fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8626fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # Delete the old objects.
8627fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      $opt_dry_run || $RM $obj $libobj
8628fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8629fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # Objects from convenience libraries.  This assumes
8630fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # single-version convenience libraries.  Whenever we create
8631fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # different ones for PIC/non-PIC, this we'll have to duplicate
8632fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # the extraction.
8633fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      reload_conv_objs=
8634fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      gentop=
8635fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # reload_cmds runs $LD directly, so let us get rid of
8636fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # -Wl from whole_archive_flag_spec and hope we can get by with
8637fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # turning comma into space..
8638fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      wl=
8639fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8640fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if test -n "$convenience"; then
8641fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test -n "$whole_archive_flag_spec"; then
8642fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
864364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'`
8644fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	else
8645fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  gentop="$output_objdir/${obj}x"
864664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  func_append generated " $gentop"
8647fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8648fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_extract_archives $gentop $convenience
8649fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  reload_conv_objs="$reload_objs $func_extract_archives_result"
8650fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
8651fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
8652fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
865364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      # If we're not building shared, we need to use non_pic_objs
865464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      test "$build_libtool_libs" != yes && libobjs="$non_pic_objects"
865564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
8656fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # Create the old-style object.
865764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
8658fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8659fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      output="$obj"
8660fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      func_execute_cmds "$reload_cmds" 'exit $?'
8661fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8662fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # Exit if we aren't doing a library object file.
8663fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if test -z "$libobj"; then
8664fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test -n "$gentop"; then
8665fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_show_eval '${RM}r "$gentop"'
8666fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
8667fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8668fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	exit $EXIT_SUCCESS
8669fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
8670fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8671fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if test "$build_libtool_libs" != yes; then
8672fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test -n "$gentop"; then
8673fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_show_eval '${RM}r "$gentop"'
8674fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
8675fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8676fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Create an invalid libtool object if no PIC, so that we don't
8677fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# accidentally link it into a program.
8678fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# $show "echo timestamp > $libobj"
8679fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
8680fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	exit $EXIT_SUCCESS
8681fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
8682fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8683fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if test -n "$pic_flag" || test "$pic_mode" != default; then
8684fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Only do commands if we really have different PIC objects.
8685fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	reload_objs="$libobjs $reload_conv_objs"
8686fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	output="$libobj"
8687fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_execute_cmds "$reload_cmds" 'exit $?'
8688fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
8689fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8690fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if test -n "$gentop"; then
8691fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_show_eval '${RM}r "$gentop"'
8692fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
8693fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8694fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      exit $EXIT_SUCCESS
8695fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      ;;
8696fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8697fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    prog)
8698fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      case $host in
8699fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	*cygwin*) func_stripname '' '.exe' "$output"
8700fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	          output=$func_stripname_result.exe;;
8701fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      esac
8702fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      test -n "$vinfo" && \
8703fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_warning "\`-version-info' is ignored for programs"
8704fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8705fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      test -n "$release" && \
8706fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_warning "\`-release' is ignored for programs"
8707fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8708fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      test "$preload" = yes \
8709fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        && test "$dlopen_support" = unknown \
8710fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	&& test "$dlopen_self" = unknown \
8711fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	&& test "$dlopen_self_static" = unknown && \
8712fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
8713fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8714fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      case $host in
8715fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      *-*-rhapsody* | *-*-darwin1.[012])
8716fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# On Rhapsody replace the C library is the System framework
871764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'`
871864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'`
8719fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
8720fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      esac
8721fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8722fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      case $host in
8723fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      *-*-darwin*)
8724fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Don't allow lazy linking, it breaks C++ global constructors
8725fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# But is supposedly fixed on 10.4 or later (yay!).
8726fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test "$tagname" = CXX ; then
8727fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
8728fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    10.[0123])
872964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      func_append compile_command " ${wl}-bind_at_load"
873064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      func_append finalize_command " ${wl}-bind_at_load"
8731fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    ;;
8732fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  esac
8733fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
8734fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Time to change all our "foo.ltframework" stuff back to "-framework foo"
873564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
873664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
8737fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
8738fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      esac
8739fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8740fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8741fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # move library search paths that coincide with paths to not yet
8742fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # installed libraries to the beginning of the library search list
8743fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      new_libs=
8744fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      for path in $notinst_path; do
8745fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	case " $new_libs " in
8746fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	*" -L$path/$objdir "*) ;;
8747fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	*)
8748fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  case " $compile_deplibs " in
8749fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  *" -L$path/$objdir "*)
875064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    func_append new_libs " -L$path/$objdir" ;;
8751fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  esac
8752fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
8753fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	esac
8754fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      done
8755fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      for deplib in $compile_deplibs; do
8756fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	case $deplib in
8757fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	-L*)
8758fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  case " $new_libs " in
8759fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  *" $deplib "*) ;;
876064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  *) func_append new_libs " $deplib" ;;
8761fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  esac
8762fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
876364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	*) func_append new_libs " $deplib" ;;
8764fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	esac
8765fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      done
8766fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      compile_deplibs="$new_libs"
8767fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8768fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
876964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      func_append compile_command " $compile_deplibs"
877064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      func_append finalize_command " $finalize_deplibs"
8771fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8772fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if test -n "$rpath$xrpath"; then
8773fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# If the user specified any rpath flags, then add them.
8774fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	for libdir in $rpath $xrpath; do
8775fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # This is the magic to use -rpath.
8776fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  case "$finalize_rpath " in
8777fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  *" $libdir "*) ;;
877864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  *) func_append finalize_rpath " $libdir" ;;
8779fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  esac
8780fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	done
8781fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
8782fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8783fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # Now hardcode the library paths
8784fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      rpath=
8785fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      hardcode_libdirs=
8786fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      for libdir in $compile_rpath $finalize_rpath; do
8787fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test -n "$hardcode_libdir_flag_spec"; then
8788fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test -n "$hardcode_libdir_separator"; then
8789fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    if test -z "$hardcode_libdirs"; then
8790fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      hardcode_libdirs="$libdir"
8791fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    else
8792fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      # Just accumulate the unique libdirs.
8793fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
8794fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
8795fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		;;
8796fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      *)
879764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
8798fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		;;
8799fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      esac
8800fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    fi
8801fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  else
8802fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    eval flag=\"$hardcode_libdir_flag_spec\"
880364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    func_append rpath " $flag"
8804fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
8805fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	elif test -n "$runpath_var"; then
8806fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  case "$perm_rpath " in
8807fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  *" $libdir "*) ;;
880864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  *) func_append perm_rpath " $libdir" ;;
8809fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  esac
8810fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
8811fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	case $host in
881264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
8813fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
8814fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  case :$dllsearchpath: in
8815fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  *":$libdir:"*) ;;
881664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  ::) dllsearchpath=$libdir;;
881764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  *) func_append dllsearchpath ":$libdir";;
8818fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  esac
8819fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  case :$dllsearchpath: in
8820fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  *":$testbindir:"*) ;;
882164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  ::) dllsearchpath=$testbindir;;
882264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  *) func_append dllsearchpath ":$testbindir";;
8823fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  esac
8824fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
8825fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	esac
8826fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      done
8827fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # Substitute the hardcoded libdirs into the rpath.
8828fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if test -n "$hardcode_libdir_separator" &&
8829fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	 test -n "$hardcode_libdirs"; then
8830fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	libdir="$hardcode_libdirs"
8831fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	eval rpath=\" $hardcode_libdir_flag_spec\"
8832fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
8833fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      compile_rpath="$rpath"
8834fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8835fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      rpath=
8836fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      hardcode_libdirs=
8837fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      for libdir in $finalize_rpath; do
8838fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test -n "$hardcode_libdir_flag_spec"; then
8839fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test -n "$hardcode_libdir_separator"; then
8840fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    if test -z "$hardcode_libdirs"; then
8841fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      hardcode_libdirs="$libdir"
8842fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    else
8843fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      # Just accumulate the unique libdirs.
8844fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
8845fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
8846fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		;;
8847fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      *)
884864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
8849fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		;;
8850fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      esac
8851fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    fi
8852fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  else
8853fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    eval flag=\"$hardcode_libdir_flag_spec\"
885464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    func_append rpath " $flag"
8855fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
8856fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	elif test -n "$runpath_var"; then
8857fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  case "$finalize_perm_rpath " in
8858fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  *" $libdir "*) ;;
885964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  *) func_append finalize_perm_rpath " $libdir" ;;
8860fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  esac
8861fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
8862fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      done
8863fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # Substitute the hardcoded libdirs into the rpath.
8864fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if test -n "$hardcode_libdir_separator" &&
8865fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	 test -n "$hardcode_libdirs"; then
8866fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	libdir="$hardcode_libdirs"
8867fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	eval rpath=\" $hardcode_libdir_flag_spec\"
8868fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
8869fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      finalize_rpath="$rpath"
8870fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8871fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if test -n "$libobjs" && test "$build_old_libs" = yes; then
8872fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Transform all the library objects into standard objects.
887364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
887464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
8875fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
8876fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8877fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
8878fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8879fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # template prelinking step
8880fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if test -n "$prelink_cmds"; then
8881fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_execute_cmds "$prelink_cmds" 'exit $?'
8882fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
8883fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8884fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      wrappers_required=yes
8885fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      case $host in
888664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      *cegcc* | *mingw32ce*)
888764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway.
888864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        wrappers_required=no
888964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci        ;;
8890fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      *cygwin* | *mingw* )
8891fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        if test "$build_libtool_libs" != yes; then
8892fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville          wrappers_required=no
8893fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        fi
8894fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        ;;
8895fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      *)
8896fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
8897fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville          wrappers_required=no
8898fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        fi
8899fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        ;;
8900fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      esac
8901fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if test "$wrappers_required" = no; then
8902fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Replace the output file specification.
890364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
8904fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	link_command="$compile_command$compile_rpath"
8905fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8906fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# We have no uninstalled library dependencies, so finalize right now.
8907fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	exit_status=0
8908fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_show_eval "$link_command" 'exit_status=$?'
8909fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
891064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	if test -n "$postlink_cmds"; then
891164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  func_to_tool_file "$output"
891264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
891364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  func_execute_cmds "$postlink_cmds" 'exit $?'
891464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	fi
891564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
8916fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Delete the generated files.
8917fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test -f "$output_objdir/${outputname}S.${objext}"; then
8918fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
8919fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
8920fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8921fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	exit $exit_status
8922fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
8923fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8924fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if test -n "$compile_shlibpath$finalize_shlibpath"; then
8925fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
8926fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
8927fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if test -n "$finalize_shlibpath"; then
8928fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
8929fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
8930fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8931fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      compile_var=
8932fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      finalize_var=
8933fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if test -n "$runpath_var"; then
8934fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test -n "$perm_rpath"; then
8935fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # We should set the runpath_var.
8936fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  rpath=
8937fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  for dir in $perm_rpath; do
893864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    func_append rpath "$dir:"
8939fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  done
8940fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
8941fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
8942fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test -n "$finalize_perm_rpath"; then
8943fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # We should set the runpath_var.
8944fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  rpath=
8945fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  for dir in $finalize_perm_rpath; do
894664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    func_append rpath "$dir:"
8947fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  done
8948fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
8949fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
8950fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
8951fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8952fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if test "$no_install" = yes; then
8953fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# We don't need to create a wrapper script.
8954fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	link_command="$compile_var$compile_command$compile_rpath"
8955fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Replace the output file specification.
895664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
8957fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Delete the old output file.
8958fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	$opt_dry_run || $RM $output
8959fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Link the executable and exit
8960fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_show_eval "$link_command" 'exit $?'
896164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
896264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	if test -n "$postlink_cmds"; then
896364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  func_to_tool_file "$output"
896464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
896564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  func_execute_cmds "$postlink_cmds" 'exit $?'
896664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	fi
896764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
8968fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	exit $EXIT_SUCCESS
8969fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
8970fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8971fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if test "$hardcode_action" = relink; then
8972fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Fast installation is not supported
8973fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	link_command="$compile_var$compile_command$compile_rpath"
8974fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	relink_command="$finalize_var$finalize_command$finalize_rpath"
8975fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8976fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_warning "this platform does not like uninstalled shared libraries"
8977fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_warning "\`$output' will be relinked during installation"
8978fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      else
8979fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test "$fast_install" != no; then
8980fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  link_command="$finalize_var$compile_command$finalize_rpath"
8981fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test "$fast_install" = yes; then
898264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'`
8983fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  else
8984fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # fast_install is set to needless
8985fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    relink_command=
8986fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
8987fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	else
8988fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  link_command="$compile_var$compile_command$compile_rpath"
8989fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  relink_command="$finalize_var$finalize_command$finalize_rpath"
8990fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
8991fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
8992fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8993fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # Replace the output file specification.
899464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
8995fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8996fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # Delete the old output files.
8997fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
8998fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8999fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      func_show_eval "$link_command" 'exit $?'
9000fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
900164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      if test -n "$postlink_cmds"; then
900264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	func_to_tool_file "$output_objdir/$outputname"
900364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
900464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	func_execute_cmds "$postlink_cmds" 'exit $?'
900564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      fi
900664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
9007fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # Now create the wrapper script.
9008fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      func_verbose "creating $output"
9009fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
9010fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # Quote the relink command for shipping.
9011fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if test -n "$relink_command"; then
9012fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Preserve any variables that may affect compiler behavior
9013fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	for var in $variables_saved_for_relink; do
9014fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if eval test -z \"\${$var+set}\"; then
9015fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
9016fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  elif eval var_value=\$$var; test -z "$var_value"; then
9017fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    relink_command="$var=; export $var; $relink_command"
9018fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  else
9019fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    func_quote_for_eval "$var_value"
9020fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
9021fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
9022fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	done
9023fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	relink_command="(cd `pwd`; $relink_command)"
902464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
9025fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
9026fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
9027fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # Only actually do things if not in dry run mode.
9028fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      $opt_dry_run || {
9029fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# win32 will think the script is a binary if it has
9030fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# a .exe suffix, so we strip it off here.
9031fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	case $output in
9032fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  *.exe) func_stripname '' '.exe' "$output"
9033fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	         output=$func_stripname_result ;;
9034fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	esac
9035fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# test for cygwin because mv fails w/o .exe extensions
9036fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	case $host in
9037fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  *cygwin*)
9038fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    exeext=.exe
9039fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    func_stripname '' '.exe' "$outputname"
9040fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    outputname=$func_stripname_result ;;
9041fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  *) exeext= ;;
9042fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	esac
9043fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	case $host in
9044fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  *cygwin* | *mingw* )
9045fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    func_dirname_and_basename "$output" "" "."
9046fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    output_name=$func_basename_result
9047fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    output_path=$func_dirname_result
9048fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    cwrappersource="$output_path/$objdir/lt-$output_name.c"
9049fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    cwrapper="$output_path/$output_name.exe"
9050fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    $RM $cwrappersource $cwrapper
9051fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
9052fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
9053fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    func_emit_cwrapperexe_src > $cwrappersource
9054fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
905564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    # The wrapper executable is built using the $host compiler,
905664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    # because it contains $host paths and files. If cross-
905764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    # compiling, it, like the target executable, must be
905864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    # executed on the $host or under an emulation environment.
9059fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    $opt_dry_run || {
9060fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
9061fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      $STRIP $cwrapper
9062fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    }
9063fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
9064fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # Now, create the wrapper script for func_source use:
9065fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    func_ltwrapper_scriptname $cwrapper
9066fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    $RM $func_ltwrapper_scriptname_result
9067fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
9068fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    $opt_dry_run || {
9069fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      # note: this script will not be executed, so do not chmod.
9070fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      if test "x$build" = "x$host" ; then
9071fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		$cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
9072fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      else
9073fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		func_emit_wrapper no > $func_ltwrapper_scriptname_result
9074fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      fi
9075fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    }
9076fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
9077fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  * )
9078fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    $RM $output
9079fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
9080fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
9081fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    func_emit_wrapper no > $output
9082fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    chmod +x $output
9083fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  ;;
9084fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	esac
9085fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      }
9086fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      exit $EXIT_SUCCESS
9087fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      ;;
9088fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    esac
9089fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
9090fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    # See if we need to build an old-fashioned archive.
9091fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    for oldlib in $oldlibs; do
9092fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
9093fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if test "$build_libtool_libs" = convenience; then
9094fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	oldobjs="$libobjs_save $symfileobj"
9095fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	addlibs="$convenience"
9096fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	build_libtool_libs=no
9097fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      else
9098fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test "$build_libtool_libs" = module; then
9099fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  oldobjs="$libobjs_save"
9100fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  build_libtool_libs=no
9101fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	else
9102fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  oldobjs="$old_deplibs $non_pic_objects"
9103fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test "$preload" = yes && test -f "$symfileobj"; then
910464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    func_append oldobjs " $symfileobj"
9105fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
9106fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
9107fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	addlibs="$old_convenience"
9108fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
9109fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
9110fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if test -n "$addlibs"; then
9111fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	gentop="$output_objdir/${outputname}x"
911264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	func_append generated " $gentop"
9113fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
9114fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_extract_archives $gentop $addlibs
911564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	func_append oldobjs " $func_extract_archives_result"
9116fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
9117fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
9118fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # Do each command in the archive commands.
9119fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
9120fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	cmds=$old_archive_from_new_cmds
9121fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      else
9122fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
9123fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Add any objects from preloaded convenience libraries
9124fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test -n "$dlprefiles"; then
9125fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  gentop="$output_objdir/${outputname}x"
912664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  func_append generated " $gentop"
9127fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
9128fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_extract_archives $gentop $dlprefiles
912964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  func_append oldobjs " $func_extract_archives_result"
9130fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
9131fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
9132fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# POSIX demands no paths to be encoded in archives.  We have
9133fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# to avoid creating archives with duplicate basenames if we
9134fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# might have to extract them afterwards, e.g., when creating a
9135fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# static archive out of a convenience library, or when linking
9136fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# the entirety of a libtool archive into another (currently
9137fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# not supported by libtool).
9138fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if (for obj in $oldobjs
9139fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    do
9140fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      func_basename "$obj"
9141fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      $ECHO "$func_basename_result"
9142fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    done | sort | sort -uc >/dev/null 2>&1); then
9143fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  :
9144fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	else
914564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  echo "copying selected object files to avoid basename conflicts..."
9146fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  gentop="$output_objdir/${outputname}x"
914764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  func_append generated " $gentop"
9148fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_mkdir_p "$gentop"
9149fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  save_oldobjs=$oldobjs
9150fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  oldobjs=
9151fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  counter=1
9152fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  for obj in $save_oldobjs
9153fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  do
9154fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    func_basename "$obj"
9155fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    objbase="$func_basename_result"
9156fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    case " $oldobjs " in
9157fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    " ") oldobjs=$obj ;;
9158fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    *[\ /]"$objbase "*)
9159fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      while :; do
9160fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		# Make sure we don't pick an alternate name that also
9161fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		# overlaps.
9162fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		newobj=lt$counter-$objbase
9163fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		func_arith $counter + 1
9164fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		counter=$func_arith_result
9165fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		case " $oldobjs " in
9166fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		*[\ /]"$newobj "*) ;;
9167fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		*) if test ! -f "$gentop/$newobj"; then break; fi ;;
9168fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		esac
9169fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      done
9170fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
917164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      func_append oldobjs " $gentop/$newobj"
9172fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      ;;
917364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    *) func_append oldobjs " $obj" ;;
9174fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    esac
9175fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  done
9176fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
917764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
917864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	tool_oldlib=$func_to_tool_file_result
9179fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	eval cmds=\"$old_archive_cmds\"
9180fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
9181fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_len " $cmds"
9182fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	len=$func_len_result
9183fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
9184fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  cmds=$old_archive_cmds
918564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	elif test -n "$archiver_list_spec"; then
918664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  func_verbose "using command file archive linking..."
918764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  for obj in $oldobjs
918864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  do
918964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    func_to_tool_file "$obj"
919064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    $ECHO "$func_to_tool_file_result"
919164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  done > $output_objdir/$libname.libcmd
919264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  func_to_tool_file "$output_objdir/$libname.libcmd"
919364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  oldobjs=" $archiver_list_spec$func_to_tool_file_result"
919464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  cmds=$old_archive_cmds
9195fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	else
9196fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # the command line is too long to link in one step, link in parts
9197fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_verbose "using piecewise archive linking..."
9198fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  save_RANLIB=$RANLIB
9199fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  RANLIB=:
9200fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  objlist=
9201fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  concat_cmds=
9202fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  save_oldobjs=$oldobjs
9203fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  oldobjs=
9204fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # Is there a better way of finding the last object in the list?
9205fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  for obj in $save_oldobjs
9206fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  do
9207fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    last_oldobj=$obj
9208fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  done
9209fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  eval test_cmds=\"$old_archive_cmds\"
9210fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_len " $test_cmds"
9211fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  len0=$func_len_result
9212fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  len=$len0
9213fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  for obj in $save_oldobjs
9214fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  do
9215fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    func_len " $obj"
9216fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    func_arith $len + $func_len_result
9217fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    len=$func_arith_result
9218fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    func_append objlist " $obj"
9219fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    if test "$len" -lt "$max_cmd_len"; then
9220fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      :
9221fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    else
9222fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      # the above command should be used before it gets too long
9223fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      oldobjs=$objlist
9224fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      if test "$obj" = "$last_oldobj" ; then
9225fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		RANLIB=$save_RANLIB
9226fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      fi
9227fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
9228fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
9229fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      objlist=
9230fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      len=$len0
9231fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    fi
9232fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  done
9233fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  RANLIB=$save_RANLIB
9234fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  oldobjs=$objlist
9235fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test "X$oldobjs" = "X" ; then
9236fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    eval cmds=\"\$concat_cmds\"
9237fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  else
9238fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
9239fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
9240fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
9241fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
9242fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      func_execute_cmds "$cmds" 'exit $?'
9243fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    done
9244fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
9245fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    test -n "$generated" && \
9246fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      func_show_eval "${RM}r$generated"
9247fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
9248fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    # Now create the libtool archive.
9249fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    case $output in
9250fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    *.la)
9251fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      old_library=
9252fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      test "$build_old_libs" = yes && old_library="$libname.$libext"
9253fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      func_verbose "creating $output"
9254fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
9255fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # Preserve any variables that may affect compiler behavior
9256fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      for var in $variables_saved_for_relink; do
9257fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if eval test -z \"\${$var+set}\"; then
9258fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
9259fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	elif eval var_value=\$$var; test -z "$var_value"; then
9260fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  relink_command="$var=; export $var; $relink_command"
9261fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	else
9262fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_quote_for_eval "$var_value"
9263fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
9264fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
9265fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      done
9266fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # Quote the link command for shipping.
9267fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
926864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
9269fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if test "$hardcode_automatic" = yes ; then
9270fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	relink_command=
9271fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
9272fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
9273fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # Only create the output if not a dry run.
9274fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      $opt_dry_run || {
9275fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	for installed in no yes; do
9276fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test "$installed" = yes; then
9277fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    if test -z "$install_libdir"; then
9278fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      break
9279fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    fi
9280fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    output="$output_objdir/$outputname"i
9281fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # Replace all uninstalled libtool libraries with the installed ones
9282fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    newdependency_libs=
9283fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    for deplib in $dependency_libs; do
9284fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      case $deplib in
9285fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      *.la)
9286fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		func_basename "$deplib"
9287fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		name="$func_basename_result"
928864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		func_resolve_sysroot "$deplib"
928964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
9290fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		test -z "$libdir" && \
9291fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  func_fatal_error "\`$deplib' is not a valid libtool archive"
929264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name"
929364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		;;
929464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      -L*)
929564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		func_stripname -L '' "$deplib"
929664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		func_replace_sysroot "$func_stripname_result"
929764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		func_append newdependency_libs " -L$func_replace_sysroot_result"
9298fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		;;
929964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      -R*)
930064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		func_stripname -R '' "$deplib"
930164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		func_replace_sysroot "$func_stripname_result"
930264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		func_append newdependency_libs " -R$func_replace_sysroot_result"
930364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		;;
930464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      *) func_append newdependency_libs " $deplib" ;;
9305fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      esac
9306fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    done
9307fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    dependency_libs="$newdependency_libs"
9308fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    newdlfiles=
9309fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
9310fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    for lib in $dlfiles; do
9311fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      case $lib in
9312fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      *.la)
9313fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	        func_basename "$lib"
9314fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		name="$func_basename_result"
9315fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
9316fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		test -z "$libdir" && \
9317fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  func_fatal_error "\`$lib' is not a valid libtool archive"
931864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name"
9319fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		;;
932064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      *) func_append newdlfiles " $lib" ;;
9321fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      esac
9322fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    done
9323fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    dlfiles="$newdlfiles"
9324fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    newdlprefiles=
9325fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    for lib in $dlprefiles; do
9326fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      case $lib in
9327fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      *.la)
9328fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		# Only pass preopened files to the pseudo-archive (for
9329fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		# eventual linking with the app. that links it) if we
9330fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		# didn't already link the preopened objects directly into
9331fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		# the library:
9332fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		func_basename "$lib"
9333fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		name="$func_basename_result"
9334fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
9335fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		test -z "$libdir" && \
9336fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		  func_fatal_error "\`$lib' is not a valid libtool archive"
933764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name"
9338fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		;;
9339fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      esac
9340fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    done
9341fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    dlprefiles="$newdlprefiles"
9342fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  else
9343fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    newdlfiles=
9344fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    for lib in $dlfiles; do
9345fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      case $lib in
9346fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
9347fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		*) abs=`pwd`"/$lib" ;;
9348fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      esac
934964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      func_append newdlfiles " $abs"
9350fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    done
9351fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    dlfiles="$newdlfiles"
9352fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    newdlprefiles=
9353fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    for lib in $dlprefiles; do
9354fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      case $lib in
9355fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
9356fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville		*) abs=`pwd`"/$lib" ;;
9357fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      esac
935864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      func_append newdlprefiles " $abs"
9359fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    done
9360fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    dlprefiles="$newdlprefiles"
9361fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
9362fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  $RM $output
9363fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # place dlname in correct position for cygwin
936464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  # In fact, it would be nice if we could use this code for all target
936564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  # systems that can't hard-code library paths into their executables
936664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  # and that have no shared library path variable independent of PATH,
936764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  # but it turns out we can't easily determine that from inspecting
936864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  # libtool variables, so we have to hard-code the OSs to which it
936964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  # applies here; at the moment, that means platforms that use the PE
937064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  # object format with DLL files.  See the long comment at the top of
937164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  # tests/bindir.at for full details.
9372fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  tdlname=$dlname
9373fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  case $host,$output,$installed,$module,$dlname in
937464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll)
937564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      # If a -bindir argument was supplied, place the dll there.
937664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      if test "x$bindir" != x ;
937764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      then
937864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		func_relative_path "$install_libdir" "$bindir"
937964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		tdlname=$func_relative_path_result$dlname
938064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      else
938164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		# Otherwise fall back on heuristic.
938264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		tdlname=../bin/$dlname
938364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      fi
938464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      ;;
9385fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  esac
9386fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  $ECHO > $output "\
9387fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# $outputname - a libtool library file
9388fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
9389fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#
9390fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Please DO NOT delete this file!
9391fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# It is necessary for linking the library.
9392fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
9393fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# The name that we can dlopen(3).
9394fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilledlname='$tdlname'
9395fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
9396fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Names of this library.
9397fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillelibrary_names='$library_names'
9398fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
9399fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# The name of the static archive.
9400fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleold_library='$old_library'
9401fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
9402fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Linker flags that can not go in dependency_libs.
9403fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleinherited_linker_flags='$new_inherited_linker_flags'
9404fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
9405fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Libraries that this one depends upon.
9406fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilledependency_libs='$dependency_libs'
9407fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
9408fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Names of additional weak libraries provided by this library
9409fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleweak_library_names='$weak_libs'
9410fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
9411fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Version information for $libname.
9412fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillecurrent=$current
9413fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleage=$age
9414fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillerevision=$revision
9415fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
9416fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Is this an already installed library?
9417fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleinstalled=$installed
9418fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
9419fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Should we warn about portability when linking against -modules?
9420fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleshouldnotlink=$module
9421fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
9422fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Files to dlopen/dlpreopen
9423fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilledlopen='$dlfiles'
9424fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilledlpreopen='$dlprefiles'
9425fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
9426fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Directory that this library needs to be installed in:
9427fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillelibdir='$install_libdir'"
9428fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test "$installed" = no && test "$need_relink" = yes; then
9429fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    $ECHO >> $output "\
9430fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillerelink_command=\"$relink_command\""
9431fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
9432fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	done
9433fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      }
9434fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
9435fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # Do a symbolic link so that the libtool archive can be found in
9436fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # LD_LIBRARY_PATH before the program is installed.
9437fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
9438fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      ;;
9439fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    esac
9440fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    exit $EXIT_SUCCESS
9441fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
9442fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
944364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{ test "$opt_mode" = link || test "$opt_mode" = relink; } &&
9444fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    func_mode_link ${1+"$@"}
9445fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
9446fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
9447fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# func_mode_uninstall arg...
9448fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefunc_mode_uninstall ()
9449fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{
9450fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    $opt_debug
9451fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    RM="$nonopt"
9452fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    files=
9453fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    rmforce=
9454fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    exit_status=0
9455fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
9456fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    # This variable tells wrapper scripts just to set variables rather
9457fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    # than running their programs.
9458fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    libtool_install_magic="$magic"
9459fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
9460fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    for arg
9461fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    do
9462fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      case $arg in
946364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      -f) func_append RM " $arg"; rmforce=yes ;;
946464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      -*) func_append RM " $arg" ;;
946564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      *) func_append files " $arg" ;;
9466fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      esac
9467fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    done
9468fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
9469fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    test -z "$RM" && \
9470fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      func_fatal_help "you must specify an RM program"
9471fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
9472fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    rmdirs=
9473fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
9474fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    for file in $files; do
9475fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      func_dirname "$file" "" "."
9476fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      dir="$func_dirname_result"
9477fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if test "X$dir" = X.; then
947864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	odir="$objdir"
9479fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      else
948064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	odir="$dir/$objdir"
9481fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
9482fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      func_basename "$file"
9483fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      name="$func_basename_result"
948464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      test "$opt_mode" = uninstall && odir="$dir"
9485fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
948664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      # Remember odir for removal later, being careful to avoid duplicates
948764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci      if test "$opt_mode" = clean; then
9488fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	case " $rmdirs " in
948964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  *" $odir "*) ;;
949064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  *) func_append rmdirs " $odir" ;;
9491fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	esac
9492fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
9493fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
9494fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      # Don't error if the file doesn't exist and rm -f was used.
9495fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if { test -L "$file"; } >/dev/null 2>&1 ||
9496fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	 { test -h "$file"; } >/dev/null 2>&1 ||
9497fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	 test -f "$file"; then
9498fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	:
9499fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      elif test -d "$file"; then
9500fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	exit_status=1
9501fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	continue
9502fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      elif test "$rmforce" = yes; then
9503fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	continue
9504fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
9505fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
9506fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      rmfiles="$file"
9507fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
9508fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      case $name in
9509fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      *.la)
9510fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Possibly a libtool archive, so verify it.
9511fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if func_lalib_p "$file"; then
9512fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_source $dir/$name
9513fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
9514fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # Delete the libtool libraries and symlinks.
9515fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  for n in $library_names; do
951664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    func_append rmfiles " $odir/$n"
9517fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  done
951864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  test -n "$old_library" && func_append rmfiles " $odir/$old_library"
9519fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
952064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	  case "$opt_mode" in
9521fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  clean)
952264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    case " $library_names " in
9523fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    *" $dlname "*) ;;
952464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;;
9525fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    esac
952664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i"
9527fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    ;;
9528fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  uninstall)
9529fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    if test -n "$library_names"; then
9530fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      # Do each command in the postuninstall commands.
9531fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
9532fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    fi
9533fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
9534fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    if test -n "$old_library"; then
9535fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      # Do each command in the old_postuninstall commands.
9536fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
9537fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    fi
9538fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # FIXME: should reinstall the best remaining shared library.
9539fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    ;;
9540fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  esac
9541fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
9542fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
9543fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
9544fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      *.lo)
9545fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	# Possibly a libtool object, so verify it.
9546fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	if func_lalib_p "$file"; then
9547fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
9548fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # Read the .lo file
9549fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  func_source $dir/$name
9550fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
9551fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # Add PIC object to the list of files to remove.
9552fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test -n "$pic_object" &&
9553fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	     test "$pic_object" != none; then
955464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    func_append rmfiles " $dir/$pic_object"
9555fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
9556fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
9557fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # Add non-PIC object to the list of files to remove.
9558fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if test -n "$non_pic_object" &&
9559fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	     test "$non_pic_object" != none; then
956064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    func_append rmfiles " $dir/$non_pic_object"
9561fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
9562fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
9563fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
9564fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
9565fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      *)
956664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	if test "$opt_mode" = clean ; then
9567fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  noexename=$name
9568fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  case $file in
9569fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  *.exe)
9570fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    func_stripname '' '.exe' "$file"
9571fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    file=$func_stripname_result
9572fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    func_stripname '' '.exe' "$name"
9573fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    noexename=$func_stripname_result
9574fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # $file with .exe has already been added to rmfiles,
9575fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # add $file without .exe
957664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    func_append rmfiles " $file"
9577fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    ;;
9578fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  esac
9579fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  # Do a test to see if this is a libtool program.
9580fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  if func_ltwrapper_p "$file"; then
9581fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    if func_ltwrapper_executable_p "$file"; then
9582fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      func_ltwrapper_scriptname "$file"
9583fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      relink_command=
9584fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      func_source $func_ltwrapper_scriptname_result
958564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      func_append rmfiles " $func_ltwrapper_scriptname_result"
9586fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    else
9587fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      relink_command=
9588fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	      func_source $dir/$noexename
9589fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    fi
9590fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
9591fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # note $name still contains .exe if it was in $file originally
9592fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    # as does the version of $file that was added into $rmfiles
959364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	    func_append rmfiles " $odir/$name $odir/${name}S.${objext}"
9594fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    if test "$fast_install" = yes && test -n "$relink_command"; then
959564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      func_append rmfiles " $odir/lt-$name"
9596fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    fi
9597fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    if test "X$noexename" != "X$name" ; then
959864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	      func_append rmfiles " $odir/lt-${noexename}.c"
9599fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	    fi
9600fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	  fi
9601fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	fi
9602fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	;;
9603fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      esac
9604fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      func_show_eval "$RM $rmfiles" 'exit_status=1'
9605fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    done
9606fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
9607fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    # Try to remove the ${objdir}s in the directories where we deleted files
9608fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    for dir in $rmdirs; do
9609fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if test -d "$dir"; then
9610fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville	func_show_eval "rmdir $dir >/dev/null 2>&1"
9611fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
9612fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    done
9613fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
9614fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    exit $exit_status
9615fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
9616fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
961764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } &&
9618fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    func_mode_uninstall ${1+"$@"}
9619fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
962064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcitest -z "$opt_mode" && {
9621fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  help="$generic_help"
9622fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  func_fatal_help "you must specify a MODE"
9623fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
9624fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
9625fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletest -z "$exec_cmd" && \
962664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci  func_fatal_help "invalid operation mode \`$opt_mode'"
9627fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
9628fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleif test -n "$exec_cmd"; then
9629fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  eval exec "$exec_cmd"
9630fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  exit $EXIT_FAILURE
9631fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefi
9632fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
9633fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleexit $exit_status
9634fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
9635fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
9636fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# The TAGs below are defined such that we never get into a situation
9637fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# in which we disable both kinds of libraries.  Given conflicting
9638fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# choices, we go for a static library, that is the most portable,
9639fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# since we can't tell whether shared libraries were disabled because
9640fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# the user asked for that or because the platform doesn't support
9641fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# them.  This is particularly important on AIX, because we don't
9642fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# support having both static and shared libraries enabled at the same
9643fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# time on that platform, so we default to a shared-only configuration.
9644fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# If a disable-shared tag is given, we'll fallback to a static-only
9645fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# configuration.  But we'll never go from static-only to shared-only.
9646fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
9647fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
9648fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillebuild_libtool_libs=no
9649fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillebuild_old_libs=yes
9650fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# ### END LIBTOOL TAG CONFIG: disable-shared
9651fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
9652fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# ### BEGIN LIBTOOL TAG CONFIG: disable-static
9653fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillebuild_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
9654fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# ### END LIBTOOL TAG CONFIG: disable-static
9655fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
9656fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Local Variables:
9657fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# mode:shell-script
9658fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# sh-indentation:2
9659fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# End:
9660fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# vi:sw=2
9661fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
9662