165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# libtool (GNU libtool) 2.4.2
365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# This is free software; see the source for copying conditions.  There is NO
865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
1065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# GNU Libtool is free software; you can redistribute it and/or modify
1165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# it under the terms of the GNU General Public License as published by
1265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# the Free Software Foundation; either version 2 of the License, or
1365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# (at your option) any later version.
1465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#
1565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# As a special exception to the GNU General Public License,
1665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# if you distribute this file as part of a program or library that
1765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# is built using GNU Libtool, you may include this file under the
1865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# same distribution terms that you use for the rest of that program.
1965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#
2065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# GNU Libtool is distributed in the hope that it will be useful, but
2165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# WITHOUT ANY WARRANTY; without even the implied warranty of
2265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
2365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# General Public License for more details.
2465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#
2565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# You should have received a copy of the GNU General Public License
2665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# along with GNU Libtool; see the file COPYING.  If not, a copy
2765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# can be downloaded from http://www.gnu.org/licenses/gpl.html,
2865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# or obtained by writing to the Free Software Foundation, Inc.,
2965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
3065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
3165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Usage: $progname [OPTION]... [MODE-ARG]...
3265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#
3365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Provide generalized library-building support services.
3465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#
3565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#       --config             show all configuration variables
3665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#       --debug              enable verbose shell tracing
3765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#   -n, --dry-run            display commands without modifying any files
3865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#       --features           display basic configuration information and exit
3965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#       --mode=MODE          use operation mode MODE
4065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#       --preserve-dup-deps  don't remove duplicate dependency libraries
4165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#       --quiet, --silent    don't print informational messages
4265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#       --no-quiet, --no-silent
4365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#                            print informational messages (default)
4465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#       --no-warn            don't display warning messages
4565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#       --tag=TAG            use configuration variables from tag TAG
4665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#   -v, --verbose            print more informational messages than default
4765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#       --no-verbose         don't print the extra informational messages
4865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#       --version            print version information
4965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#   -h, --help, --help-all   print short, long, or detailed help message
5065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#
5165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# MODE must be one of the following:
5265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#
5365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#         clean              remove files from the build directory
5465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#         compile            compile a source file into a libtool object
5565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#         execute            automatically set library path, then run a program
5665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#         finish             complete the installation of libtool libraries
5765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#         install            install libraries or executables
5865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#         link               create a library or an executable
5965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#         uninstall          remove libraries from an installed directory
6065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#
6165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# MODE-ARGS vary depending on the MODE.  When passed as first option,
6265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that.
6365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
6465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#
6565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# When reporting a bug, please describe a test case to reproduce it and
6665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# include the following information:
6765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#
6865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#         host-triplet:	$host
6965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#         shell:		$SHELL
7065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#         compiler:		$LTCC
7165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#         compiler flags:		$LTCFLAGS
7265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#         linker:		$LD (gnu? $with_gnu_ld)
7365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#         $progname:	(GNU libtool) 2.4.2
7465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#         automake:	$automake_version
7565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#         autoconf:	$autoconf_version
7665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#
7765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Report bugs to <bug-libtool@gnu.org>.
7865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# GNU libtool home page: <http://www.gnu.org/software/libtool/>.
7965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# General help using GNU software: <http://www.gnu.org/gethelp/>.
8065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
8165de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichPROGRAM=libtool
8265de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichPACKAGE=libtool
8365de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichVERSION=2.4.2
8465de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichTIMESTAMP=""
8565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichpackage_revision=1.3337
8665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
8765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Be Bourne compatible
8865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
8965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  emulate sh
9065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  NULLCMD=:
9165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
9265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  # is contrary to our usage.  Disable this feature.
9365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  alias -g '${1+"$@"}'='"$@"'
9465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  setopt NO_GLOB_SUBST
9565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichelse
9665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
9765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfi
9865de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichBIN_SH=xpg4; export BIN_SH # for Tru64
9965de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichDUALCASE=1; export DUALCASE # for MKS sh
10065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
10165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# A function that is used when there is no print builtin or printf.
10265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_fallback_echo ()
10365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
10465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  eval 'cat <<_LTECHO_EOF
10565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich$1
10665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich_LTECHO_EOF'
10765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
10865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
10965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# NLS nuisances: We save the old values to restore during execute mode.
11065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichlt_user_locale=
11165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichlt_safe_locale=
11265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfor lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
11365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichdo
11465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  eval "if test \"\${$lt_var+set}\" = set; then
11565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich          save_$lt_var=\$$lt_var
11665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich          $lt_var=C
11765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  export $lt_var
11865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
11965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
12065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi"
12165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichdone
12265de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichLC_ALL=C
12365de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichLANGUAGE=C
12465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichexport LANGUAGE LC_ALL
12565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
12665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich$lt_unset CDPATH
12765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
12865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
12965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
13065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# is ksh but when the shell is invoked as "sh" and the current value of
13165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# the _XPG environment variable is not equal to 1 (one), the special
13265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# positional parameter $0, within a function call, is the name of the
13365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# function.
13465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichprogpath="$0"
13565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
13665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
13765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
13865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich: ${CP="cp -f"}
13965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichtest "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
14065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich: ${MAKE="make"}
14165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich: ${MKDIR="mkdir"}
14265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich: ${MV="mv -f"}
14365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich: ${RM="rm -f"}
14465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
14565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich: ${Xsed="$SED -e 1s/^X//"}
14665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
14765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Global variables:
14865de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEXIT_SUCCESS=0
14965de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEXIT_FAILURE=1
15065de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEXIT_MISMATCH=63  # $? = 63 is used to indicate version mismatch to missing.
15165de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEXIT_SKIP=77	  # $? = 77 is used to indicate a skipped test to automake.
15265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
15365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichexit_status=$EXIT_SUCCESS
15465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
15565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Make sure IFS has a sensible default
15665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichlt_nl='
15765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich'
15865de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichIFS=" 	$lt_nl"
15965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
16065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichdirname="s,/[^/]*$,,"
16165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichbasename="s,^.*/,,"
16265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
16365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_dirname file append nondir_replacement
16465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
16565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# otherwise set result to NONDIR_REPLACEMENT.
16665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_dirname ()
16765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
16865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
16965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    if test "X$func_dirname_result" = "X${1}"; then
17065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_dirname_result="${3}"
17165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    else
17265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_dirname_result="$func_dirname_result${2}"
17365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    fi
17465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} # func_dirname may be replaced by extended shell implementation
17565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
17665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
17765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_basename file
17865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_basename ()
17965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
18065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_basename_result=`$ECHO "${1}" | $SED "$basename"`
18165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} # func_basename may be replaced by extended shell implementation
18265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
18365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
18465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_dirname_and_basename file append nondir_replacement
18565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# perform func_basename and func_dirname in a single function
18665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# call:
18765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#   dirname:  Compute the dirname of FILE.  If nonempty,
18865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#             add APPEND to the result, otherwise set result
18965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#             to NONDIR_REPLACEMENT.
19065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#             value returned in "$func_dirname_result"
19165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#   basename: Compute filename of FILE.
19265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#             value retuned in "$func_basename_result"
19365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Implementation must be kept synchronized with func_dirname
19465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# and func_basename. For efficiency, we do not delegate to
19565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# those functions but instead duplicate the functionality here.
19665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_dirname_and_basename ()
19765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
19865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # Extract subdirectory from the argument.
19965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"`
20065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    if test "X$func_dirname_result" = "X${1}"; then
20165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_dirname_result="${3}"
20265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    else
20365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_dirname_result="$func_dirname_result${2}"
20465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    fi
20565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_basename_result=`$ECHO "${1}" | $SED -e "$basename"`
20665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} # func_dirname_and_basename may be replaced by extended shell implementation
20765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
20865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
20965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_stripname prefix suffix name
21065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# strip PREFIX and SUFFIX off of NAME.
21165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# PREFIX and SUFFIX must not contain globbing or regex special
21265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# characters, hashes, percent signs, but SUFFIX may contain a leading
21365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# dot (in which case that matches only a dot).
21465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_strip_suffix prefix name
21565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_stripname ()
21665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
21765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    case ${2} in
21865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
21965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      *)  func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
22065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    esac
22165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} # func_stripname may be replaced by extended shell implementation
22265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
22365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
22465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# These SED scripts presuppose an absolute path with a trailing slash.
22565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichpathcar='s,^/\([^/]*\).*$,\1,'
22665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichpathcdr='s,^/[^/]*,,'
22765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichremovedotparts=':dotsl
22865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		s@/\./@/@g
22965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		t dotsl
23065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		s,/\.$,/,'
23165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichcollapseslashes='s@/\{1,\}@/@g'
23265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfinalslash='s,/*$,/,'
23365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
23465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_normal_abspath PATH
23565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Remove doubled-up and trailing slashes, "." path components,
23665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# and cancel out any ".." path components in PATH after making
23765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# it an absolute path.
23865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#             value returned in "$func_normal_abspath_result"
23965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_normal_abspath ()
24065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
24165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  # Start from root dir and reassemble the path.
24265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  func_normal_abspath_result=
24365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  func_normal_abspath_tpath=$1
24465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  func_normal_abspath_altnamespace=
24565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  case $func_normal_abspath_tpath in
24665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    "")
24765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Empty path, that just means $cwd.
24865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_stripname '' '/' "`pwd`"
24965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_normal_abspath_result=$func_stripname_result
25065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      return
25165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    ;;
25265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # The next three entries are used to spot a run of precisely
25365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # two leading slashes without using negated character classes;
25465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # we take advantage of case's first-match behaviour.
25565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    ///*)
25665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Unusual form of absolute path, do nothing.
25765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    ;;
25865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    //*)
25965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Not necessarily an ordinary path; POSIX reserves leading '//'
26065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # and for example Cygwin uses it to access remote file shares
26165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # over CIFS/SMB, so we conserve a leading double slash if found.
26265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_normal_abspath_altnamespace=/
26365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    ;;
26465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    /*)
26565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Absolute path, do nothing.
26665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    ;;
26765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    *)
26865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Relative path, prepend $cwd.
26965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath
27065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    ;;
27165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  esac
27265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  # Cancel out all the simple stuff to save iterations.  We also want
27365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  # the path to end with a slash for ease of parsing, so make sure
27465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  # there is one (and only one) here.
27565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
27665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"`
27765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  while :; do
27865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # Processed it all yet?
27965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    if test "$func_normal_abspath_tpath" = / ; then
28065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # If we ascended to the root using ".." the result may be empty now.
28165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test -z "$func_normal_abspath_result" ; then
28265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        func_normal_abspath_result=/
28365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
28465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      break
28565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    fi
28665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \
28765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        -e "$pathcar"`
28865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
28965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        -e "$pathcdr"`
29065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # Figure out what to do with it
29165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    case $func_normal_abspath_tcomponent in
29265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      "")
29365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        # Trailing empty path component, ignore it.
29465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      ;;
29565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      ..)
29665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        # Parent dir; strip last assembled component from result.
29765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        func_dirname "$func_normal_abspath_result"
29865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        func_normal_abspath_result=$func_dirname_result
29965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      ;;
30065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      *)
30165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        # Actual path component, append it.
30265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent
30365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      ;;
30465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    esac
30565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  done
30665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  # Restore leading double-slash if one was found on entry.
30765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result
30865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
30965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
31065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_relative_path SRCDIR DSTDIR
31165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# generates a relative path from SRCDIR to DSTDIR, with a trailing
31265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# slash if non-empty, suitable for immediately appending a filename
31365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# without needing to append a separator.
31465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#             value returned in "$func_relative_path_result"
31565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_relative_path ()
31665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
31765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  func_relative_path_result=
31865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  func_normal_abspath "$1"
31965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  func_relative_path_tlibdir=$func_normal_abspath_result
32065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  func_normal_abspath "$2"
32165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  func_relative_path_tbindir=$func_normal_abspath_result
32265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
32365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  # Ascend the tree starting from libdir
32465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  while :; do
32565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # check if we have found a prefix of bindir
32665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    case $func_relative_path_tbindir in
32765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      $func_relative_path_tlibdir)
32865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        # found an exact match
32965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        func_relative_path_tcancelled=
33065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        break
33165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        ;;
33265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      $func_relative_path_tlibdir*)
33365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        # found a matching prefix
33465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir"
33565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        func_relative_path_tcancelled=$func_stripname_result
33665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        if test -z "$func_relative_path_result"; then
33765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich          func_relative_path_result=.
33865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        fi
33965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        break
34065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        ;;
34165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      *)
34265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        func_dirname $func_relative_path_tlibdir
34365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        func_relative_path_tlibdir=${func_dirname_result}
34465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        if test "x$func_relative_path_tlibdir" = x ; then
34565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich          # Have to descend all the way to the root!
34665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich          func_relative_path_result=../$func_relative_path_result
34765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich          func_relative_path_tcancelled=$func_relative_path_tbindir
34865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich          break
34965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        fi
35065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        func_relative_path_result=../$func_relative_path_result
35165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        ;;
35265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    esac
35365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  done
35465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
35565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  # Now calculate path; take care to avoid doubling-up slashes.
35665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  func_stripname '' '/' "$func_relative_path_result"
35765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  func_relative_path_result=$func_stripname_result
35865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  func_stripname '/' '/' "$func_relative_path_tcancelled"
35965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if test "x$func_stripname_result" != x ; then
36065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_relative_path_result=${func_relative_path_result}/${func_stripname_result}
36165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  fi
36265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
36365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  # Normalisation. If bindir is libdir, return empty string,
36465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  # else relative path ending with a slash; either way, target
36565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  # file name can be directly appended.
36665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if test ! -z "$func_relative_path_result"; then
36765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_stripname './' '' "$func_relative_path_result/"
36865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_relative_path_result=$func_stripname_result
36965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  fi
37065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
37165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
37265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# The name of this program:
37365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_dirname_and_basename "$progpath"
37465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichprogname=$func_basename_result
37565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
37665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Make sure we have an absolute path for reexecution:
37765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichcase $progpath in
37865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  [\\/]*|[A-Za-z]:\\*) ;;
37965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  *[\\/]*)
38065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich     progdir=$func_dirname_result
38165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich     progdir=`cd "$progdir" && pwd`
38265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich     progpath="$progdir/$progname"
38365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich     ;;
38465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  *)
38565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich     save_IFS="$IFS"
38665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich     IFS=${PATH_SEPARATOR-:}
38765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich     for progdir in $PATH; do
38865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich       IFS="$save_IFS"
38965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich       test -x "$progdir/$progname" && break
39065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich     done
39165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich     IFS="$save_IFS"
39265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich     test -n "$progdir" || progdir=`pwd`
39365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich     progpath="$progdir/$progname"
39465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich     ;;
39565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichesac
39665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
39765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Sed substitution that helps us do robust quoting.  It backslashifies
39865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# metacharacters that are still active within double-quoted strings.
39965de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichXsed="${SED}"' -e 1s/^X//'
40065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichsed_quote_subst='s/\([`"$\\]\)/\\\1/g'
40165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
40265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Same as above, but do not quote variable references.
40365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichdouble_quote_subst='s/\(["`\\]\)/\\\1/g'
40465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
40565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Sed substitution that turns a string into a regex matching for the
40665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# string literally.
40765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichsed_make_literal_regex='s,[].[^$\\*\/],\\&,g'
40865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
40965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Sed substitution that converts a w32 file name or path
41065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# which contains forward slashes, into one that contains
41165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# (escaped) backslashes.  A very naive implementation.
41265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichlt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
41365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
41465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Re-`\' parameter expansions in output of double_quote_subst that were
41565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# `\'-ed in input to the same.  If an odd number of `\' preceded a '$'
41665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# in input to double_quote_subst, that '$' was protected from expansion.
41765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Since each input `\' is now two `\'s, look for any number of runs of
41865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# four `\'s followed by two `\'s and then a '$'.  `\' that '$'.
41965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichbs='\\'
42065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichbs2='\\\\'
42165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichbs4='\\\\\\\\'
42265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichdollar='\$'
42365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichsed_double_backslash="\
42465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  s/$bs4/&\\
42565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich/g
42665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  s/^$bs2$dollar/$bs&/
42765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
42865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  s/\n//g"
42965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
43065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Standard options:
43165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichopt_dry_run=false
43265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichopt_help=false
43365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichopt_quiet=false
43465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichopt_verbose=false
43565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichopt_warning=:
43665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
43765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_echo arg...
43865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Echo program name prefixed message, along with the current mode
43965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# name if it has been set yet.
44065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_echo ()
44165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
44265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    $ECHO "$progname: ${opt_mode+$opt_mode: }$*"
44365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
44465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
44565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_verbose arg...
44665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Echo program name prefixed message in verbose mode only.
44765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_verbose ()
44865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
44965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    $opt_verbose && func_echo ${1+"$@"}
45065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
45165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # A bug in bash halts the script if the last line of a function
45265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # fails when set -e is in force, so we need another command to
45365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # work around that:
45465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    :
45565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
45665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
45765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_echo_all arg...
45865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Invoke $ECHO with all args, space-separated.
45965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_echo_all ()
46065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
46165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    $ECHO "$*"
46265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
46365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
46465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_error arg...
46565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Echo program name prefixed message to standard error.
46665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_error ()
46765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
46865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2
46965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
47065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
47165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_warning arg...
47265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Echo program name prefixed warning message to standard error.
47365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_warning ()
47465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
47565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2
47665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
47765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # bash bug again:
47865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    :
47965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
48065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
48165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_fatal_error arg...
48265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Echo program name prefixed message to standard error, and exit.
48365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_fatal_error ()
48465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
48565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_error ${1+"$@"}
48665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    exit $EXIT_FAILURE
48765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
48865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
48965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_fatal_help arg...
49065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Echo program name prefixed message to standard error, followed by
49165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# a help hint, and exit.
49265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_fatal_help ()
49365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
49465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_error ${1+"$@"}
49565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_fatal_error "$help"
49665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
49765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichhelp="Try \`$progname --help' for more information."  ## default
49865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
49965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
50065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_grep expression filename
50165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Check whether EXPRESSION matches any line of FILENAME, without output.
50265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_grep ()
50365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
50465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    $GREP "$1" "$2" >/dev/null 2>&1
50565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
50665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
50765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
50865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_mkdir_p directory-path
50965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Make sure the entire path to DIRECTORY-PATH is available.
51065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_mkdir_p ()
51165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
51265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    my_directory_path="$1"
51365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    my_dir_list=
51465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
51565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
51665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
51765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Protect directory names starting with `-'
51865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      case $my_directory_path in
51965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        -*) my_directory_path="./$my_directory_path" ;;
52065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      esac
52165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
52265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # While some portion of DIR does not yet exist...
52365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      while test ! -d "$my_directory_path"; do
52465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        # ...make a list in topmost first order.  Use a colon delimited
52565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# list incase some portion of path contains whitespace.
52665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        my_dir_list="$my_directory_path:$my_dir_list"
52765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
52865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        # If the last portion added has no slash in it, the list is done
52965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        case $my_directory_path in */*) ;; *) break ;; esac
53065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
53165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        # ...otherwise throw away the child directory and loop
53265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"`
53365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      done
53465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'`
53565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
53665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      save_mkdir_p_IFS="$IFS"; IFS=':'
53765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      for my_dir in $my_dir_list; do
53865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	IFS="$save_mkdir_p_IFS"
53965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        # mkdir can fail with a `File exist' error if two processes
54065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        # try to create one of the directories concurrently.  Don't
54165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        # stop in that case!
54265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        $MKDIR "$my_dir" 2>/dev/null || :
54365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      done
54465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      IFS="$save_mkdir_p_IFS"
54565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
54665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Bail out if we (or some other process) failed to create a directory.
54765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      test -d "$my_directory_path" || \
54865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        func_fatal_error "Failed to create \`$1'"
54965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    fi
55065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
55165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
55265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
55365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_mktempdir [string]
55465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Make a temporary directory that won't clash with other running
55565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# libtool processes, and avoids race conditions if possible.  If
55665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# given, STRING is the basename for that directory.
55765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_mktempdir ()
55865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
55965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    my_template="${TMPDIR-/tmp}/${1-$progname}"
56065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
56165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    if test "$opt_dry_run" = ":"; then
56265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Return a directory name, but don't create it in dry-run mode
56365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      my_tmpdir="${my_template}-$$"
56465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    else
56565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
56665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # If mktemp works, use that first and foremost
56765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
56865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
56965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test ! -d "$my_tmpdir"; then
57065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        # Failing that, at least try and use $RANDOM to avoid a race
57165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        my_tmpdir="${my_template}-${RANDOM-0}$$"
57265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
57365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        save_mktempdir_umask=`umask`
57465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        umask 0077
57565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        $MKDIR "$my_tmpdir"
57665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        umask $save_mktempdir_umask
57765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
57865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
57965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # If we're not in dry-run mode, bomb out on failure
58065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      test -d "$my_tmpdir" || \
58165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
58265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    fi
58365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
58465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    $ECHO "$my_tmpdir"
58565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
58665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
58765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
58865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_quote_for_eval arg
58965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Aesthetically quote ARG to be evaled later.
59065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
59165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# is double-quoted, suitable for a subsequent eval, whereas
59265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
59365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# which are still active within double quotes backslashified.
59465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_quote_for_eval ()
59565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
59665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    case $1 in
59765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      *[\\\`\"\$]*)
59865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;;
59965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      *)
60065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        func_quote_for_eval_unquoted_result="$1" ;;
60165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    esac
60265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
60365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    case $func_quote_for_eval_unquoted_result in
60465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Double-quote args containing shell metacharacters to delay
60565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # word splitting, command substitution and and variable
60665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # expansion for a subsequent eval.
60765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Many Bourne shells cannot handle close brackets correctly
60865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # in scan sets, so we specify it separately.
60965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
61065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
61165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        ;;
61265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      *)
61365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
61465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    esac
61565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
61665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
61765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
61865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_quote_for_expand arg
61965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Aesthetically quote ARG to be evaled later; same as above,
62065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# but do not quote variable references.
62165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_quote_for_expand ()
62265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
62365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    case $1 in
62465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      *[\\\`\"]*)
62565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	my_arg=`$ECHO "$1" | $SED \
62665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
62765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      *)
62865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        my_arg="$1" ;;
62965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    esac
63065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
63165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    case $my_arg in
63265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Double-quote args containing shell metacharacters to delay
63365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # word splitting and command substitution for a subsequent eval.
63465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Many Bourne shells cannot handle close brackets correctly
63565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # in scan sets, so we specify it separately.
63665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
63765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        my_arg="\"$my_arg\""
63865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        ;;
63965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    esac
64065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
64165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_quote_for_expand_result="$my_arg"
64265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
64365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
64465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
64565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_show_eval cmd [fail_exp]
64665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
64765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
64865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# is given, then evaluate it.
64965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_show_eval ()
65065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
65165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    my_cmd="$1"
65265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    my_fail_exp="${2-:}"
65365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
65465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    ${opt_silent-false} || {
65565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_quote_for_expand "$my_cmd"
65665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      eval "func_echo $func_quote_for_expand_result"
65765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    }
65865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
65965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    if ${opt_dry_run-false}; then :; else
66065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      eval "$my_cmd"
66165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      my_status=$?
66265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test "$my_status" -eq 0; then :; else
66365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	eval "(exit $my_status); $my_fail_exp"
66465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
66565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    fi
66665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
66765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
66865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
66965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_show_eval_locale cmd [fail_exp]
67065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
67165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
67265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# is given, then evaluate it.  Use the saved locale for evaluation.
67365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_show_eval_locale ()
67465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
67565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    my_cmd="$1"
67665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    my_fail_exp="${2-:}"
67765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
67865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    ${opt_silent-false} || {
67965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_quote_for_expand "$my_cmd"
68065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      eval "func_echo $func_quote_for_expand_result"
68165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    }
68265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
68365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    if ${opt_dry_run-false}; then :; else
68465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      eval "$lt_user_locale
68565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    $my_cmd"
68665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      my_status=$?
68765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      eval "$lt_safe_locale"
68865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test "$my_status" -eq 0; then :; else
68965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	eval "(exit $my_status); $my_fail_exp"
69065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
69165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    fi
69265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
69365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
69465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_tr_sh
69565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Turn $1 into a string suitable for a shell variable name.
69665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Result is stored in $func_tr_sh_result.  All characters
69765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# not in the set a-zA-Z0-9_ are replaced with '_'. Further,
69865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# if $1 begins with a digit, a '_' is prepended as well.
69965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_tr_sh ()
70065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
70165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  case $1 in
70265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  [0-9]* | *[!a-zA-Z0-9_]*)
70365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'`
70465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    ;;
70565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  * )
70665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_tr_sh_result=$1
70765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    ;;
70865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  esac
70965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
71065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
71165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
71265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_version
71365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Echo version message to standard output and exit.
71465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_version ()
71565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
71665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    $opt_debug
71765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
71865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    $SED -n '/(C)/!b go
71965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	:more
72065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	/\./!{
72165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  N
72265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  s/\n# / /
72365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  b more
72465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	}
72565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	:go
72665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	/^# '$PROGRAM' (GNU /,/# warranty; / {
72765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        s/^# //
72865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	s/^# *$//
72965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
73065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        p
73165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich     }' < "$progpath"
73265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich     exit $?
73365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
73465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
73565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_usage
73665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Echo short help message to standard output and exit.
73765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_usage ()
73865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
73965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    $opt_debug
74065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
74165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    $SED -n '/^# Usage:/,/^#  *.*--help/ {
74265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        s/^# //
74365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	s/^# *$//
74465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	s/\$progname/'$progname'/
74565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	p
74665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    }' < "$progpath"
74765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    echo
74865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    $ECHO "run \`$progname --help | more' for full usage"
74965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    exit $?
75065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
75165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
75265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_help [NOEXIT]
75365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Echo long help message to standard output and exit,
75465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# unless 'noexit' is passed as argument.
75565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_help ()
75665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
75765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    $opt_debug
75865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
75965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    $SED -n '/^# Usage:/,/# Report bugs to/ {
76065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	:print
76165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        s/^# //
76265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	s/^# *$//
76365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	s*\$progname*'$progname'*
76465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	s*\$host*'"$host"'*
76565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	s*\$SHELL*'"$SHELL"'*
76665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	s*\$LTCC*'"$LTCC"'*
76765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	s*\$LTCFLAGS*'"$LTCFLAGS"'*
76865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	s*\$LD*'"$LD"'*
76965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	s/\$with_gnu_ld/'"$with_gnu_ld"'/
77065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/
77165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/
77265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	p
77365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	d
77465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich     }
77565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich     /^# .* home page:/b print
77665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich     /^# General help using/b print
77765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich     ' < "$progpath"
77865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    ret=$?
77965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    if test -z "$1"; then
78065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      exit $ret
78165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    fi
78265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
78365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
78465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_missing_arg argname
78565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Echo program name prefixed message to standard error and set global
78665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# exit_cmd.
78765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_missing_arg ()
78865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
78965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    $opt_debug
79065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
79165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_error "missing argument for $1."
79265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    exit_cmd=exit
79365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
79465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
79565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
79665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_split_short_opt shortopt
79765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Set func_split_short_opt_name and func_split_short_opt_arg shell
79865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# variables after splitting SHORTOPT after the 2nd character.
79965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_split_short_opt ()
80065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
80165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    my_sed_short_opt='1s/^\(..\).*$/\1/;q'
80265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    my_sed_short_rest='1s/^..\(.*\)$/\1/;q'
80365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
80465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"`
80565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"`
80665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} # func_split_short_opt may be replaced by extended shell implementation
80765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
80865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
80965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_split_long_opt longopt
81065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Set func_split_long_opt_name and func_split_long_opt_arg shell
81165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# variables after splitting LONGOPT at the `=' sign.
81265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_split_long_opt ()
81365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
81465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q'
81565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    my_sed_long_arg='1s/^--[^=]*=//'
81665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
81765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"`
81865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"`
81965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} # func_split_long_opt may be replaced by extended shell implementation
82065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
82165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichexit_cmd=:
82265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
82365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
82465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
82565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
82665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
82765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichmagic="%%%MAGIC variable%%%"
82865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichmagic_exe="%%%MAGIC EXE variable%%%"
82965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
83065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Global variables.
83165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichnonopt=
83265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichpreserve_args=
83365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichlo2o="s/\\.lo\$/.${objext}/"
83465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevicho2lo="s/\\.${objext}\$/.lo/"
83565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichextracted_archives=
83665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichextracted_serial=0
83765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
83865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# If this variable is set in any of the actions, the command in it
83965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# will be execed at the end.  This prevents here-documents from being
84065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# left over by shells.
84165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichexec_cmd=
84265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
84365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_append var value
84465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Append VALUE to the end of shell variable VAR.
84565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_append ()
84665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
84765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    eval "${1}=\$${1}\${2}"
84865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} # func_append may be replaced by extended shell implementation
84965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
85065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_append_quoted var value
85165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Quote VALUE and append to the end of shell variable VAR, separated
85265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# by a space.
85365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_append_quoted ()
85465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
85565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_quote_for_eval "${2}"
85665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    eval "${1}=\$${1}\\ \$func_quote_for_eval_result"
85765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} # func_append_quoted may be replaced by extended shell implementation
85865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
85965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
86065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_arith arithmetic-term...
86165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_arith ()
86265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
86365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_arith_result=`expr "${@}"`
86465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} # func_arith may be replaced by extended shell implementation
86565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
86665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
86765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_len string
86865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# STRING may not start with a hyphen.
86965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_len ()
87065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
87165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len`
87265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} # func_len may be replaced by extended shell implementation
87365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
87465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
87565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_lo2o object
87665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_lo2o ()
87765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
87865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
87965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} # func_lo2o may be replaced by extended shell implementation
88065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
88165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
88265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_xform libobj-or-source
88365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_xform ()
88465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
88565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
88665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} # func_xform may be replaced by extended shell implementation
88765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
88865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
88965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_fatal_configuration arg...
89065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Echo program name prefixed message to standard error, followed by
89165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# a configuration failure hint, and exit.
89265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_fatal_configuration ()
89365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
89465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_error ${1+"$@"}
89565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_error "See the $PACKAGE documentation for more information."
89665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_fatal_error "Fatal configuration error."
89765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
89865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
89965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
90065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_config
90165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Display the configuration for all the tags in this script.
90265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_config ()
90365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
90465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    re_begincf='^# ### BEGIN LIBTOOL'
90565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    re_endcf='^# ### END LIBTOOL'
90665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
90765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # Default configuration.
90865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
90965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
91065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # Now print the configurations for the tags.
91165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    for tagname in $taglist; do
91265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
91365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    done
91465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
91565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    exit $?
91665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
91765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
91865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_features
91965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Display the features supported by this script.
92065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_features ()
92165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
92265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    echo "host: $host"
92365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    if test "$build_libtool_libs" = yes; then
92465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      echo "enable shared libraries"
92565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    else
92665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      echo "disable shared libraries"
92765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    fi
92865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    if test "$build_old_libs" = yes; then
92965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      echo "enable static libraries"
93065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    else
93165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      echo "disable static libraries"
93265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    fi
93365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
93465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    exit $?
93565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
93665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
93765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_enable_tag tagname
93865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Verify that TAGNAME is valid, and either flag an error and exit, or
93965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# enable the TAGNAME tag.  We also add TAGNAME to the global $taglist
94065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# variable here.
94165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_enable_tag ()
94265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
94365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  # Global variable:
94465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  tagname="$1"
94565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
94665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
94765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
94865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  sed_extractcf="/$re_begincf/,/$re_endcf/p"
94965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
95065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  # Validate tagname.
95165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  case $tagname in
95265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    *[!-_A-Za-z0-9,/]*)
95365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_fatal_error "invalid tag name: $tagname"
95465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      ;;
95565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  esac
95665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
95765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  # Don't test for the "default" C tag, as we know it's
95865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  # there but not specially marked.
95965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  case $tagname in
96065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    CC) ;;
96165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    *)
96265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
96365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	taglist="$taglist $tagname"
96465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
96565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Evaluate the configuration.  Be careful to quote the path
96665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# and the sed script, to avoid splitting on whitespace, but
96765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# also don't use non-portable quotes within backquotes within
96865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# quotes we have to do it in 2 steps:
96965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
97065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	eval "$extractedcf"
97165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      else
97265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_error "ignoring unknown tag $tagname"
97365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
97465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      ;;
97565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  esac
97665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
97765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
97865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_check_version_match
97965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Ensure that we are using m4 macros, and libtool script from the same
98065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# release of libtool.
98165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_check_version_match ()
98265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
98365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if test "$package_revision" != "$macro_revision"; then
98465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    if test "$VERSION" != "$macro_version"; then
98565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test -z "$macro_version"; then
98665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        cat >&2 <<_LT_EOF
98765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
98865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich$progname: definition of this LT_INIT comes from an older release.
98965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
99065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich$progname: and run autoconf again.
99165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich_LT_EOF
99265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      else
99365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        cat >&2 <<_LT_EOF
99465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
99565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
99665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
99765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich$progname: and run autoconf again.
99865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich_LT_EOF
99965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
100065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    else
100165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      cat >&2 <<_LT_EOF
100265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich$progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision,
100365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich$progname: but the definition of this LT_INIT comes from revision $macro_revision.
100465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich$progname: You should recreate aclocal.m4 with macros from revision $package_revision
100565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich$progname: of $PACKAGE $VERSION and run autoconf again.
100665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich_LT_EOF
100765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    fi
100865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
100965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    exit $EXIT_MISMATCH
101065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  fi
101165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
101265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
101365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
101465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Shorthand for --mode=foo, only valid as the first argument
101565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichcase $1 in
101665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichclean|clea|cle|cl)
101765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  shift; set dummy --mode clean ${1+"$@"}; shift
101865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  ;;
101965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichcompile|compil|compi|comp|com|co|c)
102065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  shift; set dummy --mode compile ${1+"$@"}; shift
102165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  ;;
102265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichexecute|execut|execu|exec|exe|ex|e)
102365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  shift; set dummy --mode execute ${1+"$@"}; shift
102465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  ;;
102565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfinish|finis|fini|fin|fi|f)
102665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  shift; set dummy --mode finish ${1+"$@"}; shift
102765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  ;;
102865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichinstall|instal|insta|inst|ins|in|i)
102965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  shift; set dummy --mode install ${1+"$@"}; shift
103065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  ;;
103165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichlink|lin|li|l)
103265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  shift; set dummy --mode link ${1+"$@"}; shift
103365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  ;;
103465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichuninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
103565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  shift; set dummy --mode uninstall ${1+"$@"}; shift
103665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  ;;
103765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichesac
103865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
103965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
104065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
104165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Option defaults:
104265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichopt_debug=:
104365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichopt_dry_run=false
104465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichopt_config=false
104565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichopt_preserve_dup_deps=false
104665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichopt_features=false
104765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichopt_finish=false
104865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichopt_help=false
104965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichopt_help_all=false
105065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichopt_silent=:
105165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichopt_warning=:
105265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichopt_verbose=:
105365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichopt_silent=false
105465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichopt_verbose=false
105565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
105665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
105765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Parse options once, thoroughly.  This comes as soon as possible in the
105865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# script to make things like `--version' happen as quickly as we can.
105965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
106065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  # this just eases exit handling
106165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  while test $# -gt 0; do
106265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    opt="$1"
106365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    shift
106465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    case $opt in
106565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      --debug|-x)	opt_debug='set -x'
106665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			func_echo "enabling shell trace mode"
106765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			$opt_debug
106865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			;;
106965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      --dry-run|--dryrun|-n)
107065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			opt_dry_run=:
107165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			;;
107265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      --config)
107365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			opt_config=:
107465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_config
107565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			;;
107665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      --dlopen|-dlopen)
107765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			optarg="$1"
107865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			opt_dlopen="${opt_dlopen+$opt_dlopen
107965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}$optarg"
108065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			shift
108165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			;;
108265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      --preserve-dup-deps)
108365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			opt_preserve_dup_deps=:
108465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			;;
108565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      --features)
108665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			opt_features=:
108765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_features
108865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			;;
108965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      --finish)
109065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			opt_finish=:
109165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichset dummy --mode finish ${1+"$@"}; shift
109265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			;;
109365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      --help)
109465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			opt_help=:
109565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			;;
109665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      --help-all)
109765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			opt_help_all=:
109865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichopt_help=': help-all'
109965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			;;
110065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      --mode)
110165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			test $# = 0 && func_missing_arg $opt && break
110265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			optarg="$1"
110365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			opt_mode="$optarg"
110465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichcase $optarg in
110565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  # Valid mode arguments:
110665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  clean|compile|execute|finish|install|link|relink|uninstall) ;;
110765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
110865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  # Catch anything else as an error
110965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  *) func_error "invalid argument for $opt"
111065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich     exit_cmd=exit
111165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich     break
111265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich     ;;
111365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichesac
111465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			shift
111565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			;;
111665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      --no-silent|--no-quiet)
111765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			opt_silent=false
111865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_append preserve_args " $opt"
111965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			;;
112065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      --no-warning|--no-warn)
112165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			opt_warning=false
112265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_append preserve_args " $opt"
112365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			;;
112465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      --no-verbose)
112565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			opt_verbose=false
112665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_append preserve_args " $opt"
112765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			;;
112865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      --silent|--quiet)
112965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			opt_silent=:
113065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_append preserve_args " $opt"
113165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        opt_verbose=false
113265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			;;
113365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      --verbose|-v)
113465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			opt_verbose=:
113565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_append preserve_args " $opt"
113665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichopt_silent=false
113765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			;;
113865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      --tag)
113965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			test $# = 0 && func_missing_arg $opt && break
114065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			optarg="$1"
114165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			opt_tag="$optarg"
114265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_append preserve_args " $opt $optarg"
114365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_enable_tag "$optarg"
114465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			shift
114565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			;;
114665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
114765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      -\?|-h)		func_usage				;;
114865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      --help)		func_help				;;
114965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      --version)	func_version				;;
115065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
115165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Separate optargs to long options:
115265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      --*=*)
115365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			func_split_long_opt "$opt"
115465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"}
115565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			shift
115665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			;;
115765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
115865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Separate non-argument short options:
115965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      -\?*|-h*|-n*|-v*)
116065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			func_split_short_opt "$opt"
116165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"}
116265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			shift
116365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			;;
116465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
116565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      --)		break					;;
116665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      -*)		func_fatal_help "unrecognized option \`$opt'" ;;
116765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      *)		set dummy "$opt" ${1+"$@"};	shift; break  ;;
116865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    esac
116965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  done
117065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
117165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  # Validate options:
117265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
117365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  # save first non-option argument
117465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if test "$#" -gt 0; then
117565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    nonopt="$opt"
117665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    shift
117765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  fi
117865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
117965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  # preserve --debug
118065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  test "$opt_debug" = : || func_append preserve_args " --debug"
118165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
118265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  case $host in
118365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    *cygwin* | *mingw* | *pw32* | *cegcc*)
118465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # don't eliminate duplications in $postdeps and $predeps
118565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      opt_duplicate_compiler_generated_deps=:
118665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      ;;
118765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    *)
118865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps
118965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      ;;
119065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  esac
119165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
119265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  $opt_help || {
119365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # Sanity checks first:
119465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_check_version_match
119565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
119665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
119765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_fatal_configuration "not configured to build any kind of library"
119865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    fi
119965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
120065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # Darwin sucks
120165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    eval std_shrext=\"$shrext_cmds\"
120265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
120365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # Only execute mode is allowed to have -dlopen flags.
120465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    if test -n "$opt_dlopen" && test "$opt_mode" != execute; then
120565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_error "unrecognized option \`-dlopen'"
120665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      $ECHO "$help" 1>&2
120765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      exit $EXIT_FAILURE
120865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    fi
120965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
121065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # Change the help message to a mode-specific one.
121165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    generic_help="$help"
121265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    help="Try \`$progname --help --mode=$opt_mode' for more information."
121365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  }
121465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
121565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
121665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  # Bail if the options were screwed
121765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  $exit_cmd $EXIT_FAILURE
121865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
121965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
122065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
122165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
122265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
122365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich## ----------- ##
122465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich##    Main.    ##
122565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich## ----------- ##
122665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
122765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_lalib_p file
122865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# True iff FILE is a libtool `.la' library or `.lo' object file.
122965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# This function is only a basic sanity check; it will hardly flush out
123065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# determined imposters.
123165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_lalib_p ()
123265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
123365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    test -f "$1" &&
123465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      $SED -e 4q "$1" 2>/dev/null \
123565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
123665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
123765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
123865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_lalib_unsafe_p file
123965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# True iff FILE is a libtool `.la' library or `.lo' object file.
124065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# This function implements the same check as func_lalib_p without
124165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# resorting to external programs.  To this end, it redirects stdin and
124265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# closes it afterwards, without saving the original file descriptor.
124365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# As a safety measure, use it only where a negative result would be
124465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# fatal anyway.  Works if `file' does not exist.
124565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_lalib_unsafe_p ()
124665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
124765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    lalib_p=no
124865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
124965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	for lalib_p_l in 1 2 3 4
125065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	do
125165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    read lalib_p_line
125265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    case "$lalib_p_line" in
125365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		\#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
125465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    esac
125565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	done
125665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	exec 0<&5 5<&-
125765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    fi
125865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    test "$lalib_p" = yes
125965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
126065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
126165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_ltwrapper_script_p file
126265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# True iff FILE is a libtool wrapper script
126365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# This function is only a basic sanity check; it will hardly flush out
126465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# determined imposters.
126565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_ltwrapper_script_p ()
126665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
126765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_lalib_p "$1"
126865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
126965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
127065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_ltwrapper_executable_p file
127165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# True iff FILE is a libtool wrapper executable
127265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# This function is only a basic sanity check; it will hardly flush out
127365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# determined imposters.
127465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_ltwrapper_executable_p ()
127565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
127665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_ltwrapper_exec_suffix=
127765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    case $1 in
127865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    *.exe) ;;
127965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    *) func_ltwrapper_exec_suffix=.exe ;;
128065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    esac
128165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
128265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
128365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
128465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_ltwrapper_scriptname file
128565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Assumes file is an ltwrapper_executable
128665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# uses $file to determine the appropriate filename for a
128765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# temporary ltwrapper_script.
128865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_ltwrapper_scriptname ()
128965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
129065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_dirname_and_basename "$1" "" "."
129165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_stripname '' '.exe' "$func_basename_result"
129265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
129365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
129465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
129565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_ltwrapper_p file
129665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# True iff FILE is a libtool wrapper script or wrapper executable
129765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# This function is only a basic sanity check; it will hardly flush out
129865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# determined imposters.
129965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_ltwrapper_p ()
130065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
130165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
130265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
130365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
130465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
130565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_execute_cmds commands fail_cmd
130665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Execute tilde-delimited COMMANDS.
130765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# If FAIL_CMD is given, eval that upon failure.
130865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# FAIL_CMD may read-access the current command in variable CMD!
130965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_execute_cmds ()
131065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
131165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    $opt_debug
131265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    save_ifs=$IFS; IFS='~'
131365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    for cmd in $1; do
131465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      IFS=$save_ifs
131565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      eval cmd=\"$cmd\"
131665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_show_eval "$cmd" "${2-:}"
131765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    done
131865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    IFS=$save_ifs
131965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
132065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
132165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
132265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_source file
132365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Source FILE, adding directory component if necessary.
132465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Note that it is not necessary on cygwin/mingw to append a dot to
132565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
132665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# behavior happens only for exec(3), not for open(2)!  Also, sourcing
132765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# `FILE.' does not work on cygwin managed mounts.
132865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_source ()
132965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
133065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    $opt_debug
133165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    case $1 in
133265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    */* | *\\*)	. "$1" ;;
133365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    *)		. "./$1" ;;
133465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    esac
133565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
133665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
133765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
133865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_resolve_sysroot PATH
133965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Replace a leading = in PATH with a sysroot.  Store the result into
134065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_resolve_sysroot_result
134165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_resolve_sysroot ()
134265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
134365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  func_resolve_sysroot_result=$1
134465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  case $func_resolve_sysroot_result in
134565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  =*)
134665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_stripname '=' '' "$func_resolve_sysroot_result"
134765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_resolve_sysroot_result=$lt_sysroot$func_stripname_result
134865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    ;;
134965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  esac
135065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
135165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
135265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_replace_sysroot PATH
135365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# If PATH begins with the sysroot, replace it with = and
135465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# store the result into func_replace_sysroot_result.
135565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_replace_sysroot ()
135665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
135765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  case "$lt_sysroot:$1" in
135865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  ?*:"$lt_sysroot"*)
135965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_stripname "$lt_sysroot" '' "$1"
136065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_replace_sysroot_result="=$func_stripname_result"
136165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    ;;
136265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  *)
136365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # Including no sysroot.
136465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_replace_sysroot_result=$1
136565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    ;;
136665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  esac
136765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
136865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
136965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_infer_tag arg
137065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Infer tagged configuration to use if any are available and
137165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# if one wasn't chosen via the "--tag" command line option.
137265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Only attempt this if the compiler in the base compile
137365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# command doesn't match the default compiler.
137465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# arg is usually of the form 'gcc ...'
137565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_infer_tag ()
137665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
137765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    $opt_debug
137865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    if test -n "$available_tags" && test -z "$tagname"; then
137965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      CC_quoted=
138065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      for arg in $CC; do
138165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_append_quoted CC_quoted "$arg"
138265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      done
138365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      CC_expanded=`func_echo_all $CC`
138465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      CC_quoted_expanded=`func_echo_all $CC_quoted`
138565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      case $@ in
138665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Blanks in the command may have been stripped by the calling shell,
138765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # but not from the CC environment variable when configure was run.
138865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
138965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;;
139065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Blanks at the start of $base_compile will cause this to fail
139165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # if we don't check for them as well.
139265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      *)
139365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	for z in $available_tags; do
139465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
139565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # Evaluate the configuration.
139665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
139765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    CC_quoted=
139865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    for arg in $CC; do
139965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # Double-quote args containing other shell metacharacters.
140065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      func_append_quoted CC_quoted "$arg"
140165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    done
140265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    CC_expanded=`func_echo_all $CC`
140365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    CC_quoted_expanded=`func_echo_all $CC_quoted`
140465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    case "$@ " in
140565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
140665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*)
140765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # The compiler in the base compile command matches
140865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # the one in the tagged configuration.
140965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # Assume this is the tagged configuration we want.
141065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      tagname=$z
141165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      break
141265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      ;;
141365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    esac
141465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
141565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	done
141665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# If $tagname still isn't set, then no tagged configuration
141765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# was found and let the user know that the "--tag" command
141865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# line option must be used.
141965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test -z "$tagname"; then
142065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_echo "unable to infer tagged configuration"
142165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_fatal_error "specify a tag with \`--tag'"
142265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#	else
142365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#	  func_verbose "using $tagname tagged configuration"
142465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
142565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
142665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      esac
142765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    fi
142865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
142965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
143065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
143165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
143265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_write_libtool_object output_name pic_name nonpic_name
143365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Create a libtool object file (analogous to a ".la" file),
143465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# but don't create it if we're doing a dry run.
143565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_write_libtool_object ()
143665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
143765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    write_libobj=${1}
143865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    if test "$build_libtool_libs" = yes; then
143965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      write_lobj=\'${2}\'
144065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    else
144165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      write_lobj=none
144265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    fi
144365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
144465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    if test "$build_old_libs" = yes; then
144565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      write_oldobj=\'${3}\'
144665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    else
144765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      write_oldobj=none
144865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    fi
144965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
145065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    $opt_dry_run || {
145165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      cat >${write_libobj}T <<EOF
145265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# $write_libobj - a libtool object file
145365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
145465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#
145565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Please DO NOT delete this file!
145665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# It is necessary for linking the library.
145765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
145865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Name of the PIC object.
145965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichpic_object=$write_lobj
146065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
146165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Name of the non-PIC object
146265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichnon_pic_object=$write_oldobj
146365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
146465de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEOF
146565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      $MV "${write_libobj}T" "${write_libobj}"
146665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    }
146765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
146865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
146965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
147065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich##################################################
147165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS #
147265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich##################################################
147365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
147465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_convert_core_file_wine_to_w32 ARG
147565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Helper function used by file name conversion functions when $build is *nix,
147665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# and $host is mingw, cygwin, or some other w32 environment. Relies on a
147765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# correctly configured wine environment available, with the winepath program
147865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# in $build's $PATH.
147965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#
148065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# ARG is the $build file name to be converted to w32 format.
148165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Result is available in $func_convert_core_file_wine_to_w32_result, and will
148265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# be empty on error (or when ARG is empty)
148365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_convert_core_file_wine_to_w32 ()
148465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
148565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  $opt_debug
148665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  func_convert_core_file_wine_to_w32_result="$1"
148765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if test -n "$1"; then
148865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # Unfortunately, winepath does not exit with a non-zero error code, so we
148965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # are forced to check the contents of stdout. On the other hand, if the
149065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # command is not found, the shell will set an exit code of 127 and print
149165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # *an error message* to stdout. So we must check for both error code of
149265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # zero AND non-empty stdout, which explains the odd construction:
149365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null`
149465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then
149565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" |
149665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        $SED -e "$lt_sed_naive_backslashify"`
149765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    else
149865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_convert_core_file_wine_to_w32_result=
149965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    fi
150065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  fi
150165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
150265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# end: func_convert_core_file_wine_to_w32
150365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
150465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
150565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_convert_core_path_wine_to_w32 ARG
150665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Helper function used by path conversion functions when $build is *nix, and
150765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly
150865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# configured wine environment available, with the winepath program in $build's
150965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# $PATH. Assumes ARG has no leading or trailing path separator characters.
151065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#
151165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# ARG is path to be converted from $build format to win32.
151265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Result is available in $func_convert_core_path_wine_to_w32_result.
151365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Unconvertible file (directory) names in ARG are skipped; if no directory names
151465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# are convertible, then the result may be empty.
151565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_convert_core_path_wine_to_w32 ()
151665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
151765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  $opt_debug
151865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  # unfortunately, winepath doesn't convert paths, only file names
151965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  func_convert_core_path_wine_to_w32_result=""
152065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if test -n "$1"; then
152165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    oldIFS=$IFS
152265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    IFS=:
152365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    for func_convert_core_path_wine_to_w32_f in $1; do
152465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      IFS=$oldIFS
152565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f"
152665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test -n "$func_convert_core_file_wine_to_w32_result" ; then
152765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        if test -z "$func_convert_core_path_wine_to_w32_result"; then
152865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich          func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result"
152965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        else
153065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich          func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result"
153165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        fi
153265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
153365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    done
153465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    IFS=$oldIFS
153565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  fi
153665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
153765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# end: func_convert_core_path_wine_to_w32
153865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
153965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
154065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_cygpath ARGS...
154165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when
154265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2)
154365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or
154465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# (2), returns the Cygwin file name or path in func_cygpath_result (input
154565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# file name or path is assumed to be in w32 format, as previously converted
154665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# from $build's *nix or MSYS format). In case (3), returns the w32 file name
154765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# or path in func_cygpath_result (input file name or path is assumed to be in
154865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Cygwin format). Returns an empty string on error.
154965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#
155065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# ARGS are passed to cygpath, with the last one being the file name or path to
155165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# be converted.
155265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#
155365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH
155465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# environment variable; do not put it in $PATH.
155565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_cygpath ()
155665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
155765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  $opt_debug
155865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then
155965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null`
156065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    if test "$?" -ne 0; then
156165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # on failure, ensure result is empty
156265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_cygpath_result=
156365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    fi
156465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  else
156565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_cygpath_result=
156665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'"
156765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  fi
156865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
156965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#end: func_cygpath
157065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
157165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
157265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_convert_core_msys_to_w32 ARG
157365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Convert file name or path ARG from MSYS format to w32 format.  Return
157465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# result in func_convert_core_msys_to_w32_result.
157565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_convert_core_msys_to_w32 ()
157665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
157765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  $opt_debug
157865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  # awkward: cmd appends spaces to result
157965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null |
158065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"`
158165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
158265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#end: func_convert_core_msys_to_w32
158365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
158465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
158565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_convert_file_check ARG1 ARG2
158665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Verify that ARG1 (a file name in $build format) was converted to $host
158765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# format in ARG2. Otherwise, emit an error message, but continue (resetting
158865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_to_host_file_result to ARG1).
158965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_convert_file_check ()
159065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
159165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  $opt_debug
159265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if test -z "$2" && test -n "$1" ; then
159365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_error "Could not determine host file name corresponding to"
159465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_error "  \`$1'"
159565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_error "Continuing, but uninstalled executables may not work."
159665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # Fallback:
159765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_to_host_file_result="$1"
159865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  fi
159965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
160065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# end func_convert_file_check
160165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
160265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
160365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH
160465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Verify that FROM_PATH (a path in $build format) was converted to $host
160565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# format in TO_PATH. Otherwise, emit an error message, but continue, resetting
160665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_to_host_file_result to a simplistic fallback value (see below).
160765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_convert_path_check ()
160865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
160965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  $opt_debug
161065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if test -z "$4" && test -n "$3"; then
161165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_error "Could not determine the host path corresponding to"
161265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_error "  \`$3'"
161365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_error "Continuing, but uninstalled executables may not work."
161465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # Fallback.  This is a deliberately simplistic "conversion" and
161565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # should not be "improved".  See libtool.info.
161665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    if test "x$1" != "x$2"; then
161765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      lt_replace_pathsep_chars="s|$1|$2|g"
161865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_to_host_path_result=`echo "$3" |
161965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        $SED -e "$lt_replace_pathsep_chars"`
162065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    else
162165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_to_host_path_result="$3"
162265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    fi
162365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  fi
162465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
162565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# end func_convert_path_check
162665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
162765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
162865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG
162965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT
163065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# and appending REPL if ORIG matches BACKPAT.
163165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_convert_path_front_back_pathsep ()
163265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
163365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  $opt_debug
163465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  case $4 in
163565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  $1 ) func_to_host_path_result="$3$func_to_host_path_result"
163665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    ;;
163765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  esac
163865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  case $4 in
163965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  $2 ) func_append func_to_host_path_result "$3"
164065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    ;;
164165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  esac
164265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
164365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# end func_convert_path_front_back_pathsep
164465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
164565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
164665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich##################################################
164765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# $build to $host FILE NAME CONVERSION FUNCTIONS #
164865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich##################################################
164965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# invoked via `$to_host_file_cmd ARG'
165065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#
165165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# In each case, ARG is the path to be converted from $build to $host format.
165265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Result will be available in $func_to_host_file_result.
165365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
165465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
165565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_to_host_file ARG
165665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Converts the file name ARG from $build format to $host format. Return result
165765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# in func_to_host_file_result.
165865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_to_host_file ()
165965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
166065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  $opt_debug
166165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  $to_host_file_cmd "$1"
166265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
166365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# end func_to_host_file
166465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
166565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
166665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_to_tool_file ARG LAZY
166765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# converts the file name ARG from $build format to toolchain format. Return
166865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# result in func_to_tool_file_result.  If the conversion in use is listed
166965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# in (the comma separated) LAZY, no conversion takes place.
167065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_to_tool_file ()
167165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
167265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  $opt_debug
167365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  case ,$2, in
167465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    *,"$to_tool_file_cmd",*)
167565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_to_tool_file_result=$1
167665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      ;;
167765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    *)
167865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      $to_tool_file_cmd "$1"
167965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_to_tool_file_result=$func_to_host_file_result
168065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      ;;
168165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  esac
168265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
168365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# end func_to_tool_file
168465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
168565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
168665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_convert_file_noop ARG
168765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Copy ARG to func_to_host_file_result.
168865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_convert_file_noop ()
168965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
169065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  func_to_host_file_result="$1"
169165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
169265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# end func_convert_file_noop
169365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
169465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
169565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_convert_file_msys_to_w32 ARG
169665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic
169765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# conversion to w32 is not available inside the cwrapper.  Returns result in
169865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_to_host_file_result.
169965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_convert_file_msys_to_w32 ()
170065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
170165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  $opt_debug
170265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  func_to_host_file_result="$1"
170365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if test -n "$1"; then
170465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_convert_core_msys_to_w32 "$1"
170565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_to_host_file_result="$func_convert_core_msys_to_w32_result"
170665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  fi
170765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  func_convert_file_check "$1" "$func_to_host_file_result"
170865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
170965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# end func_convert_file_msys_to_w32
171065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
171165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
171265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_convert_file_cygwin_to_w32 ARG
171365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Convert file name ARG from Cygwin to w32 format.  Returns result in
171465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_to_host_file_result.
171565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_convert_file_cygwin_to_w32 ()
171665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
171765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  $opt_debug
171865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  func_to_host_file_result="$1"
171965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if test -n "$1"; then
172065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # because $build is cygwin, we call "the" cygpath in $PATH; no need to use
172165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # LT_CYGPATH in this case.
172265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_to_host_file_result=`cygpath -m "$1"`
172365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  fi
172465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  func_convert_file_check "$1" "$func_to_host_file_result"
172565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
172665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# end func_convert_file_cygwin_to_w32
172765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
172865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
172965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_convert_file_nix_to_w32 ARG
173065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Convert file name ARG from *nix to w32 format.  Requires a wine environment
173165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# and a working winepath. Returns result in func_to_host_file_result.
173265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_convert_file_nix_to_w32 ()
173365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
173465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  $opt_debug
173565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  func_to_host_file_result="$1"
173665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if test -n "$1"; then
173765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_convert_core_file_wine_to_w32 "$1"
173865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_to_host_file_result="$func_convert_core_file_wine_to_w32_result"
173965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  fi
174065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  func_convert_file_check "$1" "$func_to_host_file_result"
174165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
174265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# end func_convert_file_nix_to_w32
174365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
174465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
174565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_convert_file_msys_to_cygwin ARG
174665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Convert file name ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
174765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Returns result in func_to_host_file_result.
174865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_convert_file_msys_to_cygwin ()
174965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
175065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  $opt_debug
175165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  func_to_host_file_result="$1"
175265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if test -n "$1"; then
175365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_convert_core_msys_to_w32 "$1"
175465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_cygpath -u "$func_convert_core_msys_to_w32_result"
175565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_to_host_file_result="$func_cygpath_result"
175665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  fi
175765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  func_convert_file_check "$1" "$func_to_host_file_result"
175865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
175965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# end func_convert_file_msys_to_cygwin
176065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
176165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
176265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_convert_file_nix_to_cygwin ARG
176365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Convert file name ARG from *nix to Cygwin format.  Requires Cygwin installed
176465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# in a wine environment, working winepath, and LT_CYGPATH set.  Returns result
176565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# in func_to_host_file_result.
176665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_convert_file_nix_to_cygwin ()
176765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
176865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  $opt_debug
176965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  func_to_host_file_result="$1"
177065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if test -n "$1"; then
177165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # convert from *nix to w32, then use cygpath to convert from w32 to cygwin.
177265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_convert_core_file_wine_to_w32 "$1"
177365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_cygpath -u "$func_convert_core_file_wine_to_w32_result"
177465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_to_host_file_result="$func_cygpath_result"
177565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  fi
177665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  func_convert_file_check "$1" "$func_to_host_file_result"
177765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
177865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# end func_convert_file_nix_to_cygwin
177965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
178065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
178165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#############################################
178265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# $build to $host PATH CONVERSION FUNCTIONS #
178365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#############################################
178465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# invoked via `$to_host_path_cmd ARG'
178565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#
178665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# In each case, ARG is the path to be converted from $build to $host format.
178765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# The result will be available in $func_to_host_path_result.
178865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#
178965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Path separators are also converted from $build format to $host format.  If
179065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# ARG begins or ends with a path separator character, it is preserved (but
179165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# converted to $host format) on output.
179265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#
179365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# All path conversion functions are named using the following convention:
179465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#   file name conversion function    : func_convert_file_X_to_Y ()
179565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#   path conversion function         : func_convert_path_X_to_Y ()
179665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# where, for any given $build/$host combination the 'X_to_Y' value is the
179765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# same.  If conversion functions are added for new $build/$host combinations,
179865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# the two new functions must follow this pattern, or func_init_to_host_path_cmd
179965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# will break.
180065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
180165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
180265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_init_to_host_path_cmd
180365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Ensures that function "pointer" variable $to_host_path_cmd is set to the
180465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# appropriate value, based on the value of $to_host_file_cmd.
180565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichto_host_path_cmd=
180665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_init_to_host_path_cmd ()
180765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
180865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  $opt_debug
180965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if test -z "$to_host_path_cmd"; then
181065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_stripname 'func_convert_file_' '' "$to_host_file_cmd"
181165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    to_host_path_cmd="func_convert_path_${func_stripname_result}"
181265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  fi
181365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
181465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
181565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
181665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_to_host_path ARG
181765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Converts the path ARG from $build format to $host format. Return result
181865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# in func_to_host_path_result.
181965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_to_host_path ()
182065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
182165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  $opt_debug
182265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  func_init_to_host_path_cmd
182365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  $to_host_path_cmd "$1"
182465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
182565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# end func_to_host_path
182665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
182765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
182865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_convert_path_noop ARG
182965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Copy ARG to func_to_host_path_result.
183065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_convert_path_noop ()
183165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
183265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  func_to_host_path_result="$1"
183365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
183465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# end func_convert_path_noop
183565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
183665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
183765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_convert_path_msys_to_w32 ARG
183865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic
183965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# conversion to w32 is not available inside the cwrapper.  Returns result in
184065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_to_host_path_result.
184165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_convert_path_msys_to_w32 ()
184265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
184365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  $opt_debug
184465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  func_to_host_path_result="$1"
184565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if test -n "$1"; then
184665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # Remove leading and trailing path separator characters from ARG.  MSYS
184765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # behavior is inconsistent here; cygpath turns them into '.;' and ';.';
184865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # and winepath ignores them completely.
184965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_stripname : : "$1"
185065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_to_host_path_tmp1=$func_stripname_result
185165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
185265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_to_host_path_result="$func_convert_core_msys_to_w32_result"
185365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_convert_path_check : ";" \
185465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      "$func_to_host_path_tmp1" "$func_to_host_path_result"
185565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
185665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  fi
185765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
185865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# end func_convert_path_msys_to_w32
185965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
186065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
186165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_convert_path_cygwin_to_w32 ARG
186265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Convert path ARG from Cygwin to w32 format.  Returns result in
186365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_to_host_file_result.
186465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_convert_path_cygwin_to_w32 ()
186565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
186665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  $opt_debug
186765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  func_to_host_path_result="$1"
186865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if test -n "$1"; then
186965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # See func_convert_path_msys_to_w32:
187065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_stripname : : "$1"
187165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_to_host_path_tmp1=$func_stripname_result
187265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"`
187365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_convert_path_check : ";" \
187465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      "$func_to_host_path_tmp1" "$func_to_host_path_result"
187565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
187665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  fi
187765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
187865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# end func_convert_path_cygwin_to_w32
187965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
188065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
188165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_convert_path_nix_to_w32 ARG
188265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Convert path ARG from *nix to w32 format.  Requires a wine environment and
188365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# a working winepath.  Returns result in func_to_host_file_result.
188465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_convert_path_nix_to_w32 ()
188565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
188665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  $opt_debug
188765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  func_to_host_path_result="$1"
188865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if test -n "$1"; then
188965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # See func_convert_path_msys_to_w32:
189065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_stripname : : "$1"
189165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_to_host_path_tmp1=$func_stripname_result
189265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
189365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_to_host_path_result="$func_convert_core_path_wine_to_w32_result"
189465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_convert_path_check : ";" \
189565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      "$func_to_host_path_tmp1" "$func_to_host_path_result"
189665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
189765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  fi
189865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
189965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# end func_convert_path_nix_to_w32
190065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
190165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
190265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_convert_path_msys_to_cygwin ARG
190365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Convert path ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
190465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Returns result in func_to_host_file_result.
190565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_convert_path_msys_to_cygwin ()
190665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
190765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  $opt_debug
190865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  func_to_host_path_result="$1"
190965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if test -n "$1"; then
191065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # See func_convert_path_msys_to_w32:
191165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_stripname : : "$1"
191265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_to_host_path_tmp1=$func_stripname_result
191365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
191465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_cygpath -u -p "$func_convert_core_msys_to_w32_result"
191565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_to_host_path_result="$func_cygpath_result"
191665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_convert_path_check : : \
191765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      "$func_to_host_path_tmp1" "$func_to_host_path_result"
191865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
191965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  fi
192065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
192165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# end func_convert_path_msys_to_cygwin
192265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
192365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
192465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_convert_path_nix_to_cygwin ARG
192565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Convert path ARG from *nix to Cygwin format.  Requires Cygwin installed in a
192665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# a wine environment, working winepath, and LT_CYGPATH set.  Returns result in
192765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_to_host_file_result.
192865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_convert_path_nix_to_cygwin ()
192965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
193065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  $opt_debug
193165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  func_to_host_path_result="$1"
193265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if test -n "$1"; then
193365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # Remove leading and trailing path separator characters from
193465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # ARG. msys behavior is inconsistent here, cygpath turns them
193565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # into '.;' and ';.', and winepath ignores them completely.
193665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_stripname : : "$1"
193765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_to_host_path_tmp1=$func_stripname_result
193865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
193965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result"
194065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_to_host_path_result="$func_cygpath_result"
194165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_convert_path_check : : \
194265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      "$func_to_host_path_tmp1" "$func_to_host_path_result"
194365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
194465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  fi
194565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
194665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# end func_convert_path_nix_to_cygwin
194765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
194865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
194965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_mode_compile arg...
195065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_mode_compile ()
195165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
195265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    $opt_debug
195365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # Get the compilation command and the source file.
195465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    base_compile=
195565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
195665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    suppress_opt=yes
195765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    suppress_output=
195865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    arg_mode=normal
195965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    libobj=
196065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    later=
196165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    pie_flag=
196265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
196365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    for arg
196465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    do
196565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      case $arg_mode in
196665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      arg  )
196765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# do not "continue".  Instead, add this to base_compile
196865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	lastarg="$arg"
196965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	arg_mode=normal
197065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
197165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
197265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      target )
197365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	libobj="$arg"
197465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	arg_mode=normal
197565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	continue
197665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
197765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
197865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      normal )
197965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Accept any command-line options.
198065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	case $arg in
198165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	-o)
198265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  test -n "$libobj" && \
198365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_fatal_error "you cannot specify \`-o' more than once"
198465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  arg_mode=target
198565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  continue
198665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
198765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
198865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	-pie | -fpie | -fPIE)
198965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich          func_append pie_flag " $arg"
199065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  continue
199165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
199265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
199365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	-shared | -static | -prefer-pic | -prefer-non-pic)
199465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_append later " $arg"
199565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  continue
199665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
199765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
199865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	-no-suppress)
199965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  suppress_opt=no
200065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  continue
200165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
200265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
200365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	-Xcompiler)
200465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  arg_mode=arg  #  the next one goes into the "base_compile" arg list
200565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  continue      #  The current "srcfile" will either be retained or
200665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;            #  replaced later.  I would guess that would be a bug.
200765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
200865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	-Wc,*)
200965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_stripname '-Wc,' '' "$arg"
201065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  args=$func_stripname_result
201165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  lastarg=
201265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  save_ifs="$IFS"; IFS=','
201365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  for arg in $args; do
201465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    IFS="$save_ifs"
201565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_append_quoted lastarg "$arg"
201665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  done
201765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  IFS="$save_ifs"
201865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_stripname ' ' '' "$lastarg"
201965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  lastarg=$func_stripname_result
202065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
202165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # Add the arguments to base_compile.
202265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_append base_compile " $lastarg"
202365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  continue
202465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
202565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
202665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	*)
202765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # Accept the current argument as the source file.
202865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # The previous "srcfile" becomes the current argument.
202965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  #
203065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  lastarg="$srcfile"
203165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  srcfile="$arg"
203265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
203365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	esac  #  case $arg
203465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
203565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      esac    #  case $arg_mode
203665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
203765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Aesthetically quote the previous argument.
203865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_append_quoted base_compile "$lastarg"
203965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    done # for arg
204065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
204165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    case $arg_mode in
204265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    arg)
204365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_fatal_error "you must specify an argument for -Xcompile"
204465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      ;;
204565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    target)
204665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_fatal_error "you must specify a target with \`-o'"
204765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      ;;
204865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    *)
204965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Get the name of the library object.
205065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      test -z "$libobj" && {
205165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_basename "$srcfile"
205265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	libobj="$func_basename_result"
205365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      }
205465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      ;;
205565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    esac
205665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
205765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # Recognize several different file suffixes.
205865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # If the user specifies -o file.o, it is replaced with file.lo
205965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    case $libobj in
206065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    *.[cCFSifmso] | \
206165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    *.ada | *.adb | *.ads | *.asm | \
206265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
206365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup)
206465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_xform "$libobj"
206565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      libobj=$func_xform_result
206665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      ;;
206765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    esac
206865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
206965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    case $libobj in
207065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
207165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    *)
207265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_fatal_error "cannot determine name of library object from \`$libobj'"
207365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      ;;
207465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    esac
207565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
207665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_infer_tag $base_compile
207765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
207865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    for arg in $later; do
207965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      case $arg in
208065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      -shared)
208165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	test "$build_libtool_libs" != yes && \
208265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_fatal_configuration "can not build a shared library"
208365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	build_old_libs=no
208465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	continue
208565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
208665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
208765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      -static)
208865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	build_libtool_libs=no
208965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	build_old_libs=yes
209065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	continue
209165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
209265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
209365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      -prefer-pic)
209465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	pic_mode=yes
209565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	continue
209665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
209765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
209865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      -prefer-non-pic)
209965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	pic_mode=no
210065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	continue
210165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
210265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      esac
210365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    done
210465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
210565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_quote_for_eval "$libobj"
210665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    test "X$libobj" != "X$func_quote_for_eval_result" \
210765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"'	 &()|`$[]' \
210865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      && func_warning "libobj name \`$libobj' may not contain shell special characters."
210965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_dirname_and_basename "$obj" "/" ""
211065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    objname="$func_basename_result"
211165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    xdir="$func_dirname_result"
211265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    lobj=${xdir}$objdir/$objname
211365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
211465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    test -z "$base_compile" && \
211565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_fatal_help "you must specify a compilation command"
211665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
211765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # Delete any leftover library objects.
211865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    if test "$build_old_libs" = yes; then
211965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      removelist="$obj $lobj $libobj ${libobj}T"
212065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    else
212165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      removelist="$lobj $libobj ${libobj}T"
212265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    fi
212365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
212465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # On Cygwin there's no "real" PIC flag so we must build both object types
212565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    case $host_os in
212665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    cygwin* | mingw* | pw32* | os2* | cegcc*)
212765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      pic_mode=default
212865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      ;;
212965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    esac
213065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
213165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # non-PIC code in shared libraries is not supported
213265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      pic_mode=default
213365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    fi
213465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
213565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # Calculate the filename of the output object if compiler does
213665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # not support -o with -c
213765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    if test "$compiler_c_o" = no; then
213865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext}
213965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      lockfile="$output_obj.lock"
214065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    else
214165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      output_obj=
214265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      need_locks=no
214365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      lockfile=
214465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    fi
214565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
214665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # Lock this critical section if it is needed
214765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # We use this script file to make the link, it avoids creating a new file
214865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    if test "$need_locks" = yes; then
214965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
215065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_echo "Waiting for $lockfile to be removed"
215165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	sleep 2
215265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      done
215365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    elif test "$need_locks" = warn; then
215465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test -f "$lockfile"; then
215565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	$ECHO "\
215665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich*** ERROR, $lockfile exists and contains:
215765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich`cat $lockfile 2>/dev/null`
215865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
215965de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichThis indicates that another process is trying to use the same
216065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichtemporary object file, and libtool could not work around it because
216165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichyour compiler does not support \`-c' and \`-o' together.  If you
216265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichrepeat this compilation, it may succeed, by chance, but you had better
216365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichavoid parallel builds (make -j) in this platform, or get a better
216465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichcompiler."
216565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
216665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	$opt_dry_run || $RM $removelist
216765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	exit $EXIT_FAILURE
216865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
216965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_append removelist " $output_obj"
217065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      $ECHO "$srcfile" > "$lockfile"
217165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    fi
217265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
217365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    $opt_dry_run || $RM $removelist
217465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_append removelist " $lockfile"
217565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
217665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
217765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_to_tool_file "$srcfile" func_convert_file_msys_to_w32
217865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    srcfile=$func_to_tool_file_result
217965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_quote_for_eval "$srcfile"
218065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    qsrcfile=$func_quote_for_eval_result
218165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
218265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # Only build a PIC object if we are building libtool libraries.
218365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    if test "$build_libtool_libs" = yes; then
218465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Without this assignment, base_compile gets emptied.
218565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fbsd_hideous_sh_bug=$base_compile
218665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
218765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test "$pic_mode" != no; then
218865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	command="$base_compile $qsrcfile $pic_flag"
218965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      else
219065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Don't build PIC code
219165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	command="$base_compile $qsrcfile"
219265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
219365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
219465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_mkdir_p "$xdir$objdir"
219565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
219665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test -z "$output_obj"; then
219765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Place PIC objects in $objdir
219865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_append command " -o $lobj"
219965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
220065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
220165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_show_eval_locale "$command"	\
220265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich          'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
220365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
220465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test "$need_locks" = warn &&
220565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
220665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	$ECHO "\
220765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich*** ERROR, $lockfile contains:
220865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich`cat $lockfile 2>/dev/null`
220965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
221065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichbut it should contain:
221165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich$srcfile
221265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
221365de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichThis indicates that another process is trying to use the same
221465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichtemporary object file, and libtool could not work around it because
221565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichyour compiler does not support \`-c' and \`-o' together.  If you
221665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichrepeat this compilation, it may succeed, by chance, but you had better
221765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichavoid parallel builds (make -j) in this platform, or get a better
221865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichcompiler."
221965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
222065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	$opt_dry_run || $RM $removelist
222165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	exit $EXIT_FAILURE
222265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
222365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
222465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Just move the object if needed, then go on to compile the next one
222565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
222665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_show_eval '$MV "$output_obj" "$lobj"' \
222765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
222865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
222965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
223065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Allow error messages only from the first compilation.
223165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test "$suppress_opt" = yes; then
223265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	suppress_output=' >/dev/null 2>&1'
223365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
223465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    fi
223565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
223665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # Only build a position-dependent object if we build old libraries.
223765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    if test "$build_old_libs" = yes; then
223865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test "$pic_mode" != yes; then
223965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Don't build PIC code
224065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	command="$base_compile $qsrcfile$pie_flag"
224165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      else
224265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	command="$base_compile $qsrcfile $pic_flag"
224365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
224465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test "$compiler_c_o" = yes; then
224565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_append command " -o $obj"
224665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
224765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
224865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Suppress compiler output if we already did a PIC compilation.
224965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_append command "$suppress_output"
225065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_show_eval_locale "$command" \
225165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
225265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
225365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test "$need_locks" = warn &&
225465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
225565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	$ECHO "\
225665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich*** ERROR, $lockfile contains:
225765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich`cat $lockfile 2>/dev/null`
225865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
225965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichbut it should contain:
226065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich$srcfile
226165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
226265de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichThis indicates that another process is trying to use the same
226365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichtemporary object file, and libtool could not work around it because
226465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichyour compiler does not support \`-c' and \`-o' together.  If you
226565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichrepeat this compilation, it may succeed, by chance, but you had better
226665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichavoid parallel builds (make -j) in this platform, or get a better
226765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichcompiler."
226865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
226965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	$opt_dry_run || $RM $removelist
227065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	exit $EXIT_FAILURE
227165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
227265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
227365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Just move the object if needed
227465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
227565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_show_eval '$MV "$output_obj" "$obj"' \
227665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
227765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
227865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    fi
227965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
228065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    $opt_dry_run || {
228165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
228265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
228365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Unlock the critical section if it was locked
228465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test "$need_locks" != no; then
228565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	removelist=$lockfile
228665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        $RM "$lockfile"
228765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
228865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    }
228965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
229065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    exit $EXIT_SUCCESS
229165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
229265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
229365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich$opt_help || {
229465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  test "$opt_mode" = compile && func_mode_compile ${1+"$@"}
229565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
229665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
229765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_mode_help ()
229865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
229965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # We need to display help for each of the modes.
230065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    case $opt_mode in
230165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      "")
230265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        # Generic help is extracted from the usage comments
230365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        # at the start of this file.
230465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        func_help
230565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        ;;
230665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
230765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      clean)
230865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        $ECHO \
230965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
231065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
231165de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichRemove files from the build directory.
231265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
231365de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichRM is the name of the program to use to delete files associated with each FILE
231465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
231565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichto RM.
231665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
231765de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichIf FILE is a libtool library, object or program, all the files associated
231865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichwith it are deleted. Otherwise, only FILE itself is deleted using RM."
231965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        ;;
232065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
232165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      compile)
232265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      $ECHO \
232365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
232465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
232565de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichCompile a source file into a libtool library object.
232665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
232765de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichThis mode accepts the following additional options:
232865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
232965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
233065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  -no-suppress      do not suppress compiler output for multiple passes
233165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  -prefer-pic       try to build PIC objects only
233265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  -prefer-non-pic   try to build non-PIC objects only
233365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  -shared           do not build a \`.o' file suitable for static linking
233465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  -static           only build a \`.o' file suitable for static linking
233565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  -Wc,FLAG          pass FLAG directly to the compiler
233665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
233765de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichCOMPILE-COMMAND is a command to be used in creating a \`standard' object file
233865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfrom the given SOURCEFILE.
233965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
234065de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichThe output file name is determined by removing the directory component from
234165de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichSOURCEFILE, then substituting the C source code suffix \`.c' with the
234265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichlibrary object suffix, \`.lo'."
234365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        ;;
234465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
234565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      execute)
234665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        $ECHO \
234765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
234865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
234965de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAutomatically set library path, then run a program.
235065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
235165de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichThis mode accepts the following additional options:
235265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
235365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  -dlopen FILE      add the directory containing FILE to the library path
235465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
235565de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichThis mode sets the library path environment variable according to \`-dlopen'
235665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichflags.
235765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
235865de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichIf any of the ARGS are libtool executable wrappers, then they are translated
235965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichinto their corresponding uninstalled binary, and any of their required library
236065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichdirectories are added to the library path.
236165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
236265de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichThen, COMMAND is executed, with ARGS as arguments."
236365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        ;;
236465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
236565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      finish)
236665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        $ECHO \
236765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
236865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
236965de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichComplete the installation of libtool libraries.
237065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
237165de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEach LIBDIR is a directory that contains libtool libraries.
237265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
237365de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichThe commands that this mode executes may require superuser privileges.  Use
237465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichthe \`--dry-run' option if you just want to see what would be executed."
237565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        ;;
237665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
237765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      install)
237865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        $ECHO \
237965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
238065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
238165de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichInstall executables or libraries.
238265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
238365de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichINSTALL-COMMAND is the installation command.  The first component should be
238465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevicheither the \`install' or \`cp' program.
238565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
238665de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichThe following components of INSTALL-COMMAND are treated specially:
238765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
238865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  -inst-prefix-dir PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
238965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
239065de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichThe rest of the components are interpreted as arguments to that command (only
239165de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichBSD-compatible install options are recognized)."
239265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        ;;
239365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
239465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      link)
239565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        $ECHO \
239665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
239765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
239865de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichLink object files or libraries together to form another library, or to
239965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichcreate an executable program.
240065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
240165de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichLINK-COMMAND is a command using the C compiler that you would use to create
240265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevicha program from several object files.
240365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
240465de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichThe following components of LINK-COMMAND are treated specially:
240565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
240665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  -all-static       do not do any dynamic linking at all
240765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  -avoid-version    do not add a version suffix if possible
240865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  -bindir BINDIR    specify path to binaries directory (for systems where
240965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                    libraries must be found in the PATH setting at runtime)
241065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
241165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
241265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
241365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  -export-symbols SYMFILE
241465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                    try to export only the symbols listed in SYMFILE
241565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  -export-symbols-regex REGEX
241665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                    try to export only the symbols matching REGEX
241765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  -LLIBDIR          search LIBDIR for required installed libraries
241865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  -lNAME            OUTPUT-FILE requires the installed library libNAME
241965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  -module           build a library that can dlopened
242065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  -no-fast-install  disable the fast-install mode
242165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  -no-install       link a not-installable executable
242265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  -no-undefined     declare that a library does not refer to external symbols
242365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
242465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  -objectlist FILE  Use a list of object files found in FILE to specify objects
242565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  -precious-files-regex REGEX
242665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                    don't remove output files matching REGEX
242765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  -release RELEASE  specify package release information
242865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
242965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
243065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  -shared           only do dynamic linking of libtool libraries
243165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  -shrext SUFFIX    override the standard shared library file extension
243265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  -static           do not do any dynamic linking of uninstalled libtool libraries
243365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  -static-libtool-libs
243465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                    do not do any dynamic linking of libtool libraries
243565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  -version-info CURRENT[:REVISION[:AGE]]
243665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                    specify library version info [each variable defaults to 0]
243765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  -weak LIBNAME     declare that the target provides the LIBNAME interface
243865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  -Wc,FLAG
243965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  -Xcompiler FLAG   pass linker-specific FLAG directly to the compiler
244065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  -Wl,FLAG
244165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  -Xlinker FLAG     pass linker-specific FLAG directly to the linker
244265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  -XCClinker FLAG   pass link-specific FLAG to the compiler driver (CC)
244365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
244465de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAll other options (arguments beginning with \`-') are ignored.
244565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
244665de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEvery other argument is treated as a filename.  Files ending in \`.la' are
244765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichtreated as uninstalled libtool libraries, other files are standard or library
244865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichobject files.
244965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
245065de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichIf the OUTPUT-FILE ends in \`.la', then a libtool library is created,
245165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichonly library objects (\`.lo' files) may be specified, and \`-rpath' is
245265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichrequired, except when creating a convenience library.
245365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
245465de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
245565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichusing \`ar' and \`ranlib', or on Windows using \`lib'.
245665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
245765de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
245865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichis created, otherwise an executable program is created."
245965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        ;;
246065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
246165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      uninstall)
246265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        $ECHO \
246365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
246465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
246565de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichRemove libraries from an installation directory.
246665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
246765de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichRM is the name of the program to use to delete files associated with each FILE
246865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
246965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichto RM.
247065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
247165de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichIf FILE is a libtool library, all the files associated with it are deleted.
247265de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichOtherwise, only FILE itself is deleted using RM."
247365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        ;;
247465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
247565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      *)
247665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        func_fatal_help "invalid operation mode \`$opt_mode'"
247765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        ;;
247865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    esac
247965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
248065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    echo
248165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    $ECHO "Try \`$progname --help' for more information about other modes."
248265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
248365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
248465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Now that we've collected a possible --mode arg, show help if necessary
248565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichif $opt_help; then
248665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if test "$opt_help" = :; then
248765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_mode_help
248865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  else
248965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    {
249065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_help noexit
249165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      for opt_mode in compile link execute install finish uninstall clean; do
249265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_mode_help
249365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      done
249465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    } | sed -n '1p; 2,$s/^Usage:/  or: /p'
249565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    {
249665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_help noexit
249765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      for opt_mode in compile link execute install finish uninstall clean; do
249865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	echo
249965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_mode_help
250065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      done
250165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    } |
250265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    sed '1d
250365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      /^When reporting/,/^Report/{
250465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	H
250565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	d
250665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      }
250765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      $x
250865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      /information about other modes/d
250965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      /more detailed .*MODE/d
251065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/'
251165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  fi
251265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  exit $?
251365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfi
251465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
251565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
251665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_mode_execute arg...
251765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_mode_execute ()
251865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
251965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    $opt_debug
252065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # The first argument is the command name.
252165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    cmd="$nonopt"
252265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    test -z "$cmd" && \
252365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_fatal_help "you must specify a COMMAND"
252465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
252565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # Handle -dlopen flags immediately.
252665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    for file in $opt_dlopen; do
252765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      test -f "$file" \
252865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	|| func_fatal_help "\`$file' is not a file"
252965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
253065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      dir=
253165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      case $file in
253265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      *.la)
253365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_resolve_sysroot "$file"
253465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	file=$func_resolve_sysroot_result
253565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
253665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Check to see that this really is a libtool archive.
253765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_lalib_unsafe_p "$file" \
253865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  || func_fatal_help "\`$lib' is not a valid libtool archive"
253965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
254065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Read the libtool library.
254165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	dlname=
254265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	library_names=
254365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_source "$file"
254465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
254565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Skip this library if it cannot be dlopened.
254665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test -z "$dlname"; then
254765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # Warn if it was a shared library.
254865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  test -n "$library_names" && \
254965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_warning "\`$file' was not linked with \`-export-dynamic'"
255065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  continue
255165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
255265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
255365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_dirname "$file" "" "."
255465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	dir="$func_dirname_result"
255565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
255665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test -f "$dir/$objdir/$dlname"; then
255765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_append dir "/$objdir"
255865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	else
255965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test ! -f "$dir/$dlname"; then
256065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
256165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
256265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
256365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
256465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
256565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      *.lo)
256665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Just add the directory containing the .lo file.
256765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_dirname "$file" "" "."
256865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	dir="$func_dirname_result"
256965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
257065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
257165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      *)
257265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
257365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	continue
257465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
257565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      esac
257665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
257765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Get the absolute pathname.
257865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      absdir=`cd "$dir" && pwd`
257965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      test -n "$absdir" && dir="$absdir"
258065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
258165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Now add the directory to shlibpath_var.
258265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if eval "test -z \"\$$shlibpath_var\""; then
258365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	eval "$shlibpath_var=\"\$dir\""
258465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      else
258565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
258665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
258765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    done
258865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
258965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # This variable tells wrapper scripts just to set shlibpath_var
259065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # rather than running their programs.
259165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    libtool_execute_magic="$magic"
259265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
259365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # Check if any of the arguments is a wrapper script.
259465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    args=
259565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    for file
259665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    do
259765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      case $file in
259865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      -* | *.la | *.lo ) ;;
259965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      *)
260065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Do a test to see if this is really a libtool program.
260165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if func_ltwrapper_script_p "$file"; then
260265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_source "$file"
260365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # Transform arg to wrapped name.
260465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  file="$progdir/$program"
260565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	elif func_ltwrapper_executable_p "$file"; then
260665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_ltwrapper_scriptname "$file"
260765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_source "$func_ltwrapper_scriptname_result"
260865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # Transform arg to wrapped name.
260965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  file="$progdir/$program"
261065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
261165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
261265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      esac
261365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Quote arguments (to preserve shell metacharacters).
261465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_append_quoted args "$file"
261565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    done
261665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
261765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    if test "X$opt_dry_run" = Xfalse; then
261865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test -n "$shlibpath_var"; then
261965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Export the shlibpath_var.
262065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	eval "export $shlibpath_var"
262165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
262265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
262365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Restore saved environment variables
262465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
262565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      do
262665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	eval "if test \"\${save_$lt_var+set}\" = set; then
262765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                $lt_var=\$save_$lt_var; export $lt_var
262865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      else
262965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		$lt_unset $lt_var
263065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      fi"
263165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      done
263265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
263365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Now prepare to actually exec the command.
263465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      exec_cmd="\$cmd$args"
263565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    else
263665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Display what would be done.
263765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test -n "$shlibpath_var"; then
263865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
263965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	echo "export $shlibpath_var"
264065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
264165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      $ECHO "$cmd$args"
264265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      exit $EXIT_SUCCESS
264365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    fi
264465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
264565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
264665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichtest "$opt_mode" = execute && func_mode_execute ${1+"$@"}
264765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
264865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
264965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_mode_finish arg...
265065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_mode_finish ()
265165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
265265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    $opt_debug
265365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    libs=
265465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    libdirs=
265565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    admincmds=
265665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
265765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    for opt in "$nonopt" ${1+"$@"}
265865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    do
265965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test -d "$opt"; then
266065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_append libdirs " $opt"
266165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
266265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      elif test -f "$opt"; then
266365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if func_lalib_unsafe_p "$opt"; then
266465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_append libs " $opt"
266565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	else
266665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_warning "\`$opt' is not a valid libtool archive"
266765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
266865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
266965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      else
267065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_fatal_error "invalid argument \`$opt'"
267165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
267265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    done
267365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
267465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    if test -n "$libs"; then
267565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test -n "$lt_sysroot"; then
267665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"`
267765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;"
267865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      else
267965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        sysroot_cmd=
268065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
268165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
268265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Remove sysroot references
268365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if $opt_dry_run; then
268465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        for lib in $libs; do
268565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich          echo "removing references to $lt_sysroot and \`=' prefixes from $lib"
268665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        done
268765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      else
268865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        tmpdir=`func_mktempdir`
268965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        for lib in $libs; do
269065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \
269165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    > $tmpdir/tmp-la
269265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  mv -f $tmpdir/tmp-la $lib
269365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	done
269465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        ${RM}r "$tmpdir"
269565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
269665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    fi
269765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
269865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
269965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      for libdir in $libdirs; do
270065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test -n "$finish_cmds"; then
270165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # Do each command in the finish commands.
270265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
270365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich'"$cmd"'"'
270465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
270565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test -n "$finish_eval"; then
270665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # Do the single finish_eval.
270765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  eval cmds=\"$finish_eval\"
270865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  $opt_dry_run || eval "$cmds" || func_append admincmds "
270965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich       $cmds"
271065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
271165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      done
271265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    fi
271365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
271465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # Exit here if they wanted silent mode.
271565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    $opt_silent && exit $EXIT_SUCCESS
271665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
271765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
271865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      echo "----------------------------------------------------------------------"
271965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      echo "Libraries have been installed in:"
272065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      for libdir in $libdirs; do
272165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	$ECHO "   $libdir"
272265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      done
272365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      echo
272465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      echo "If you ever happen to want to link against installed libraries"
272565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      echo "in a given directory, LIBDIR, you must either use libtool, and"
272665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
272765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      echo "flag during linking and do at least one of the following:"
272865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test -n "$shlibpath_var"; then
272965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	echo "   - add LIBDIR to the \`$shlibpath_var' environment variable"
273065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	echo "     during execution"
273165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
273265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test -n "$runpath_var"; then
273365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	echo "   - add LIBDIR to the \`$runpath_var' environment variable"
273465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	echo "     during linking"
273565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
273665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test -n "$hardcode_libdir_flag_spec"; then
273765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	libdir=LIBDIR
273865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	eval flag=\"$hardcode_libdir_flag_spec\"
273965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
274065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	$ECHO "   - use the \`$flag' linker flag"
274165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
274265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test -n "$admincmds"; then
274365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	$ECHO "   - have your system administrator run these commands:$admincmds"
274465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
274565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test -f /etc/ld.so.conf; then
274665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	echo "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
274765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
274865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      echo
274965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
275065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      echo "See any operating system documentation about shared libraries for"
275165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      case $host in
275265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	solaris2.[6789]|solaris2.1[0-9])
275365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  echo "more information, such as the ld(1), crle(1) and ld.so(8) manual"
275465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  echo "pages."
275565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
275665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	*)
275765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  echo "more information, such as the ld(1) and ld.so(8) manual pages."
275865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
275965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      esac
276065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      echo "----------------------------------------------------------------------"
276165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    fi
276265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    exit $EXIT_SUCCESS
276365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
276465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
276565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichtest "$opt_mode" = finish && func_mode_finish ${1+"$@"}
276665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
276765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
276865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_mode_install arg...
276965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_mode_install ()
277065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
277165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    $opt_debug
277265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # There may be an optional sh(1) argument at the beginning of
277365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # install_prog (especially on Windows NT).
277465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
277565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich       # Allow the use of GNU shtool's install command.
277665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich       case $nonopt in *shtool*) :;; *) false;; esac; then
277765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Aesthetically quote it.
277865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_quote_for_eval "$nonopt"
277965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      install_prog="$func_quote_for_eval_result "
278065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      arg=$1
278165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      shift
278265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    else
278365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      install_prog=
278465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      arg=$nonopt
278565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    fi
278665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
278765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # The real first argument should be the name of the installation program.
278865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # Aesthetically quote it.
278965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_quote_for_eval "$arg"
279065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_append install_prog "$func_quote_for_eval_result"
279165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    install_shared_prog=$install_prog
279265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    case " $install_prog " in
279365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      *[\\\ /]cp\ *) install_cp=: ;;
279465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      *) install_cp=false ;;
279565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    esac
279665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
279765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # We need to accept at least all the BSD install flags.
279865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    dest=
279965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    files=
280065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    opts=
280165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    prev=
280265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    install_type=
280365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    isdir=no
280465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    stripme=
280565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    no_mode=:
280665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    for arg
280765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    do
280865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      arg2=
280965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test -n "$dest"; then
281065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_append files " $dest"
281165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	dest=$arg
281265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	continue
281365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
281465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
281565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      case $arg in
281665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      -d) isdir=yes ;;
281765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      -f)
281865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if $install_cp; then :; else
281965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  prev=$arg
282065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
282165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
282265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      -g | -m | -o)
282365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	prev=$arg
282465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
282565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      -s)
282665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	stripme=" -s"
282765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	continue
282865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
282965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      -*)
283065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
283165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      *)
283265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# If the previous option needed an argument, then skip it.
283365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test -n "$prev"; then
283465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test "x$prev" = x-m && test -n "$install_override_mode"; then
283565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    arg2=$install_override_mode
283665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    no_mode=false
283765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
283865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  prev=
283965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	else
284065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  dest=$arg
284165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  continue
284265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
284365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
284465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      esac
284565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
284665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Aesthetically quote the argument.
284765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_quote_for_eval "$arg"
284865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_append install_prog " $func_quote_for_eval_result"
284965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test -n "$arg2"; then
285065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_quote_for_eval "$arg2"
285165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
285265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_append install_shared_prog " $func_quote_for_eval_result"
285365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    done
285465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
285565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    test -z "$install_prog" && \
285665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_fatal_help "you must specify an install program"
285765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
285865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    test -n "$prev" && \
285965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_fatal_help "the \`$prev' option requires an argument"
286065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
286165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    if test -n "$install_override_mode" && $no_mode; then
286265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if $install_cp; then :; else
286365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_quote_for_eval "$install_override_mode"
286465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_append install_shared_prog " -m $func_quote_for_eval_result"
286565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
286665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    fi
286765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
286865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    if test -z "$files"; then
286965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test -z "$dest"; then
287065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_fatal_help "no file or destination specified"
287165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      else
287265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_fatal_help "you must specify a destination"
287365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
287465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    fi
287565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
287665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # Strip any trailing slash from the destination.
287765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_stripname '' '/' "$dest"
287865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    dest=$func_stripname_result
287965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
288065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # Check to see that the destination is a directory.
288165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    test -d "$dest" && isdir=yes
288265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    if test "$isdir" = yes; then
288365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      destdir="$dest"
288465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      destname=
288565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    else
288665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_dirname_and_basename "$dest" "" "."
288765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      destdir="$func_dirname_result"
288865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      destname="$func_basename_result"
288965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
289065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Not a directory, so check to see that there is only one file specified.
289165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      set dummy $files; shift
289265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      test "$#" -gt 1 && \
289365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_fatal_help "\`$dest' is not a directory"
289465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    fi
289565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    case $destdir in
289665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    [\\/]* | [A-Za-z]:[\\/]*) ;;
289765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    *)
289865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      for file in $files; do
289965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	case $file in
290065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	*.lo) ;;
290165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	*)
290265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_fatal_help "\`$destdir' must be an absolute directory name"
290365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
290465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	esac
290565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      done
290665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      ;;
290765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    esac
290865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
290965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # This variable tells wrapper scripts just to set variables rather
291065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # than running their programs.
291165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    libtool_install_magic="$magic"
291265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
291365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    staticlibs=
291465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    future_libdirs=
291565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    current_libdirs=
291665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    for file in $files; do
291765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
291865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Do each installation.
291965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      case $file in
292065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      *.$libext)
292165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Do the static libraries later.
292265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_append staticlibs " $file"
292365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
292465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
292565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      *.la)
292665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_resolve_sysroot "$file"
292765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	file=$func_resolve_sysroot_result
292865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
292965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Check to see that this really is a libtool archive.
293065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_lalib_unsafe_p "$file" \
293165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  || func_fatal_help "\`$file' is not a valid libtool archive"
293265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
293365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	library_names=
293465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	old_library=
293565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	relink_command=
293665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_source "$file"
293765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
293865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Add the libdir to current_libdirs if it is the destination.
293965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test "X$destdir" = "X$libdir"; then
294065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  case "$current_libdirs " in
294165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *" $libdir "*) ;;
294265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *) func_append current_libdirs " $libdir" ;;
294365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  esac
294465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	else
294565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # Note the libdir as a future libdir.
294665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  case "$future_libdirs " in
294765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *" $libdir "*) ;;
294865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *) func_append future_libdirs " $libdir" ;;
294965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  esac
295065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
295165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
295265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_dirname "$file" "/" ""
295365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	dir="$func_dirname_result"
295465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_append dir "$objdir"
295565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
295665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test -n "$relink_command"; then
295765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # Determine the prefix the user has applied to our future dir.
295865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"`
295965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
296065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # Don't allow the user to place us outside of our expected
296165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # location b/c this prevents finding dependent libraries that
296265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # are installed to the same prefix.
296365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # At present, this check doesn't affect windows .dll's that
296465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # are installed into $libdir/../bin (currently, that works fine)
296565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # but it's something to keep an eye on.
296665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  test "$inst_prefix_dir" = "$destdir" && \
296765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
296865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
296965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test -n "$inst_prefix_dir"; then
297065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # Stick the inst_prefix_dir data into the link command.
297165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
297265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  else
297365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
297465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
297565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
297665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_warning "relinking \`$file'"
297765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_show_eval "$relink_command" \
297865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
297965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
298065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
298165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# See the names of the shared library.
298265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	set dummy $library_names; shift
298365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test -n "$1"; then
298465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  realname="$1"
298565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  shift
298665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
298765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  srcname="$realname"
298865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  test -n "$relink_command" && srcname="$realname"T
298965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
299065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # Install the shared library and build the symlinks.
299165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \
299265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      'exit $?'
299365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  tstripme="$stripme"
299465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  case $host_os in
299565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  cygwin* | mingw* | pw32* | cegcc*)
299665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    case $realname in
299765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    *.dll.a)
299865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      tstripme=""
299965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      ;;
300065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    esac
300165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    ;;
300265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  esac
300365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test -n "$tstripme" && test -n "$striplib"; then
300465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_show_eval "$striplib $destdir/$realname" 'exit $?'
300565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
300665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
300765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test "$#" -gt 0; then
300865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # Delete the old symlinks, and create new ones.
300965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # Try `ln -sf' first, because the `ln' binary might depend on
301065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # the symlink we replace!  Solaris /bin/ln does not understand -f,
301165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # so we also need to try rm && ln -s.
301265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    for linkname
301365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    do
301465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      test "$linkname" != "$realname" \
301565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		&& func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
301665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    done
301765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
301865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
301965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # Do each command in the postinstall commands.
302065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  lib="$destdir/$realname"
302165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_execute_cmds "$postinstall_cmds" 'exit $?'
302265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
302365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
302465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Install the pseudo-library for information purposes.
302565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_basename "$file"
302665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	name="$func_basename_result"
302765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	instname="$dir/$name"i
302865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
302965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
303065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Maybe install the static library, too.
303165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	test -n "$old_library" && func_append staticlibs " $dir/$old_library"
303265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
303365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
303465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      *.lo)
303565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Install (i.e. copy) a libtool object.
303665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
303765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Figure out destination file name, if it wasn't already specified.
303865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test -n "$destname"; then
303965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  destfile="$destdir/$destname"
304065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	else
304165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_basename "$file"
304265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  destfile="$func_basename_result"
304365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  destfile="$destdir/$destfile"
304465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
304565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
304665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Deduce the name of the destination old-style object file.
304765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	case $destfile in
304865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	*.lo)
304965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_lo2o "$destfile"
305065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  staticdest=$func_lo2o_result
305165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
305265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	*.$objext)
305365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  staticdest="$destfile"
305465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  destfile=
305565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
305665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	*)
305765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_fatal_help "cannot copy a libtool object to \`$destfile'"
305865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
305965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	esac
306065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
306165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Install the libtool object if requested.
306265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	test -n "$destfile" && \
306365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_show_eval "$install_prog $file $destfile" 'exit $?'
306465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
306565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Install the old object if enabled.
306665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test "$build_old_libs" = yes; then
306765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # Deduce the name of the old-style object file.
306865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_lo2o "$file"
306965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  staticobj=$func_lo2o_result
307065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
307165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
307265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	exit $EXIT_SUCCESS
307365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
307465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
307565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      *)
307665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Figure out destination file name, if it wasn't already specified.
307765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test -n "$destname"; then
307865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  destfile="$destdir/$destname"
307965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	else
308065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_basename "$file"
308165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  destfile="$func_basename_result"
308265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  destfile="$destdir/$destfile"
308365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
308465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
308565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# If the file is missing, and there is a .exe on the end, strip it
308665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# because it is most likely a libtool script we actually want to
308765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# install
308865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	stripped_ext=""
308965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	case $file in
309065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *.exe)
309165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    if test ! -f "$file"; then
309265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      func_stripname '' '.exe' "$file"
309365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      file=$func_stripname_result
309465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      stripped_ext=".exe"
309565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    fi
309665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    ;;
309765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	esac
309865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
309965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Do a test to see if this is really a libtool program.
310065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	case $host in
310165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	*cygwin* | *mingw*)
310265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    if func_ltwrapper_executable_p "$file"; then
310365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      func_ltwrapper_scriptname "$file"
310465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      wrapper=$func_ltwrapper_scriptname_result
310565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    else
310665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      func_stripname '' '.exe' "$file"
310765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      wrapper=$func_stripname_result
310865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    fi
310965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    ;;
311065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	*)
311165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    wrapper=$file
311265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    ;;
311365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	esac
311465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if func_ltwrapper_script_p "$wrapper"; then
311565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  notinst_deplibs=
311665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  relink_command=
311765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
311865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_source "$wrapper"
311965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
312065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # Check the variables that should have been set.
312165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  test -z "$generated_by_libtool_version" && \
312265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_fatal_error "invalid libtool wrapper script \`$wrapper'"
312365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
312465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  finalize=yes
312565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  for lib in $notinst_deplibs; do
312665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # Check to see that each library is installed.
312765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    libdir=
312865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    if test -f "$lib"; then
312965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      func_source "$lib"
313065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    fi
313165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test
313265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    if test -n "$libdir" && test ! -f "$libfile"; then
313365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      func_warning "\`$lib' has not been installed in \`$libdir'"
313465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      finalize=no
313565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    fi
313665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  done
313765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
313865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  relink_command=
313965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_source "$wrapper"
314065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
314165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  outputname=
314265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test "$fast_install" = no && test -n "$relink_command"; then
314365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    $opt_dry_run || {
314465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      if test "$finalize" = yes; then
314565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	        tmpdir=`func_mktempdir`
314665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		func_basename "$file$stripped_ext"
314765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		file="$func_basename_result"
314865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	        outputname="$tmpdir/$file"
314965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	        # Replace the output file specification.
315065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	        relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'`
315165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
315265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	        $opt_silent || {
315365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	          func_quote_for_expand "$relink_command"
315465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  eval "func_echo $func_quote_for_expand_result"
315565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	        }
315665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	        if eval "$relink_command"; then :
315765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	          else
315865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  func_error "error: relink \`$file' with the above command before installing it"
315965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  $opt_dry_run || ${RM}r "$tmpdir"
316065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  continue
316165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	        fi
316265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	        file="$outputname"
316365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      else
316465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	        func_warning "cannot relink \`$file'"
316565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      fi
316665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    }
316765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  else
316865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # Install the binary that we compiled earlier.
316965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"`
317065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
317165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
317265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
317365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# remove .exe since cygwin /usr/bin/install will append another
317465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# one anyway
317565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	case $install_prog,$host in
317665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	*/usr/bin/install*,*cygwin*)
317765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  case $file:$destfile in
317865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *.exe:*.exe)
317965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # this is ok
318065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    ;;
318165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *.exe:*)
318265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    destfile=$destfile.exe
318365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    ;;
318465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *:*.exe)
318565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_stripname '' '.exe' "$destfile"
318665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    destfile=$func_stripname_result
318765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    ;;
318865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  esac
318965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
319065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	esac
319165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
319265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	$opt_dry_run || if test -n "$outputname"; then
319365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ${RM}r "$tmpdir"
319465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
319565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
319665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      esac
319765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    done
319865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
319965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    for file in $staticlibs; do
320065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_basename "$file"
320165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      name="$func_basename_result"
320265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
320365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Set up the ranlib parameters.
320465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      oldlib="$destdir/$name"
320565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
320665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      tool_oldlib=$func_to_tool_file_result
320765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
320865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
320965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
321065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test -n "$stripme" && test -n "$old_striplib"; then
321165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_show_eval "$old_striplib $tool_oldlib" 'exit $?'
321265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
321365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
321465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Do each command in the postinstall commands.
321565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_execute_cmds "$old_postinstall_cmds" 'exit $?'
321665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    done
321765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
321865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    test -n "$future_libdirs" && \
321965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_warning "remember to run \`$progname --finish$future_libdirs'"
322065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
322165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    if test -n "$current_libdirs"; then
322265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Maybe just do a dry run.
322365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      $opt_dry_run && current_libdirs=" -n$current_libdirs"
322465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
322565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    else
322665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      exit $EXIT_SUCCESS
322765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    fi
322865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
322965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
323065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichtest "$opt_mode" = install && func_mode_install ${1+"$@"}
323165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
323265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
323365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_generate_dlsyms outputname originator pic_p
323465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Extract symbols from dlprefiles and create ${outputname}S.o with
323565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# a dlpreopen symbol table.
323665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_generate_dlsyms ()
323765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
323865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    $opt_debug
323965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    my_outputname="$1"
324065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    my_originator="$2"
324165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    my_pic_p="${3-no}"
324265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
324365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    my_dlsyms=
324465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
324565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
324665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test -n "$NM" && test -n "$global_symbol_pipe"; then
324765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	my_dlsyms="${my_outputname}S.c"
324865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      else
324965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_error "not configured to extract global symbols from dlpreopened files"
325065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
325165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    fi
325265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
325365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    if test -n "$my_dlsyms"; then
325465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      case $my_dlsyms in
325565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      "") ;;
325665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      *.c)
325765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Discover the nlist of each of the dlfiles.
325865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	nlist="$output_objdir/${my_outputname}.nm"
325965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
326065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
326165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
326265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Parse the name list into a source file.
326365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_verbose "creating $output_objdir/$my_dlsyms"
326465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
326565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	$opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
326665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
326765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
326865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
326965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#ifdef __cplusplus
327065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichextern \"C\" {
327165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#endif
327265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
327365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4))
327465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
327565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#endif
327665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
327765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
327865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
327965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich/* DATA imports from DLLs on WIN32 con't be const, because runtime
328065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich   relocations are performed -- see ld's documentation on pseudo-relocs.  */
328165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# define LT_DLSYM_CONST
328265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#elif defined(__osf__)
328365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich/* This system does not cope well with relocations in const data.  */
328465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# define LT_DLSYM_CONST
328565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#else
328665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# define LT_DLSYM_CONST const
328765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#endif
328865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
328965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich/* External symbol declarations for the compiler. */\
329065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich"
329165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
329265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test "$dlself" = yes; then
329365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_verbose "generating symbol list for \`$output'"
329465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
329565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
329665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
329765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # Add our own program objects to the symbol list.
329865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP`
329965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  for progfile in $progfiles; do
330065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_to_tool_file "$progfile" func_convert_file_msys_to_w32
330165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_verbose "extracting global C symbols from \`$func_to_tool_file_result'"
330265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'"
330365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  done
330465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
330565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test -n "$exclude_expsyms"; then
330665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    $opt_dry_run || {
330765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
330865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      eval '$MV "$nlist"T "$nlist"'
330965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    }
331065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
331165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
331265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test -n "$export_symbols_regex"; then
331365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    $opt_dry_run || {
331465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
331565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      eval '$MV "$nlist"T "$nlist"'
331665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    }
331765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
331865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
331965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # Prepare the list of exported symbols
332065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test -z "$export_symbols"; then
332165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    export_symbols="$output_objdir/$outputname.exp"
332265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    $opt_dry_run || {
332365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      $RM $export_symbols
332465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
332565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      case $host in
332665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      *cygwin* | *mingw* | *cegcc* )
332765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
332865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
332965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	        ;;
333065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      esac
333165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    }
333265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  else
333365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    $opt_dry_run || {
333465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
333565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
333665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      eval '$MV "$nlist"T "$nlist"'
333765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      case $host in
333865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	        *cygwin* | *mingw* | *cegcc* )
333965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	          eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
334065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	          eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
334165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	          ;;
334265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      esac
334365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    }
334465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
334565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
334665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
334765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	for dlprefile in $dlprefiles; do
334865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_verbose "extracting global C symbols from \`$dlprefile'"
334965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_basename "$dlprefile"
335065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  name="$func_basename_result"
335165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich          case $host in
335265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    *cygwin* | *mingw* | *cegcc* )
335365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # if an import library, we need to obtain dlname
335465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      if func_win32_import_lib_p "$dlprefile"; then
335565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	        func_tr_sh "$dlprefile"
335665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	        eval "curr_lafile=\$libfile_$func_tr_sh_result"
335765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	        dlprefile_dlbasename=""
335865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	        if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then
335965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	          # Use subshell, to avoid clobbering current variable values
336065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	          dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"`
336165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	          if test -n "$dlprefile_dlname" ; then
336265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	            func_basename "$dlprefile_dlname"
336365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	            dlprefile_dlbasename="$func_basename_result"
336465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	          else
336565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	            # no lafile. user explicitly requested -dlpreopen <import library>.
336665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	            $sharedlib_from_linklib_cmd "$dlprefile"
336765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	            dlprefile_dlbasename=$sharedlib_from_linklib_result
336865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	          fi
336965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	        fi
337065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	        $opt_dry_run || {
337165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	          if test -n "$dlprefile_dlbasename" ; then
337265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	            eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"'
337365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	          else
337465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	            func_warning "Could not compute DLL name from $name"
337565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	            eval '$ECHO ": $name " >> "$nlist"'
337665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	          fi
337765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	          func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
337865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	          eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe |
337965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	            $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'"
338065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	        }
338165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      else # not an import lib
338265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	        $opt_dry_run || {
338365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	          eval '$ECHO ": $name " >> "$nlist"'
338465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	          func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
338565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	          eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
338665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	        }
338765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      fi
338865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    ;;
338965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    *)
339065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      $opt_dry_run || {
339165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	        eval '$ECHO ": $name " >> "$nlist"'
339265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	        func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
339365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	        eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
339465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      }
339565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    ;;
339665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich          esac
339765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	done
339865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
339965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	$opt_dry_run || {
340065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # Make sure we have at least an empty file.
340165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  test -f "$nlist" || : > "$nlist"
340265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
340365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test -n "$exclude_expsyms"; then
340465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
340565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    $MV "$nlist"T "$nlist"
340665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
340765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
340865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # Try sorting and uniquifying the output.
340965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if $GREP -v "^: " < "$nlist" |
341065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      if sort -k 3 </dev/null >/dev/null 2>&1; then
341165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		sort -k 3
341265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      else
341365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		sort +2
341465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      fi |
341565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      uniq > "$nlist"S; then
341665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    :
341765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  else
341865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    $GREP -v "^: " < "$nlist" > "$nlist"S
341965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
342065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
342165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test -f "$nlist"S; then
342265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
342365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  else
342465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    echo '/* NONE */' >> "$output_objdir/$my_dlsyms"
342565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
342665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
342765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  echo >> "$output_objdir/$my_dlsyms" "\
342865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
342965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich/* The mapping between symbol names and symbols.  */
343065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichtypedef struct {
343165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  const char *name;
343265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  void *address;
343365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} lt_dlsymlist;
343465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichextern LT_DLSYM_CONST lt_dlsymlist
343565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichlt_${my_prefix}_LTX_preloaded_symbols[];
343665de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichLT_DLSYM_CONST lt_dlsymlist
343765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichlt_${my_prefix}_LTX_preloaded_symbols[] =
343865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{\
343965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  { \"$my_originator\", (void *) 0 },"
344065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
344165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  case $need_lib_prefix in
344265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  no)
344365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
344465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    ;;
344565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *)
344665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
344765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    ;;
344865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  esac
344965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  echo >> "$output_objdir/$my_dlsyms" "\
345065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  {0, (void *) 0}
345165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich};
345265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
345365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich/* This works around a problem in FreeBSD linker */
345465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#ifdef FREEBSD_WORKAROUND
345565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichstatic const void *lt_preloaded_setup() {
345665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  return lt_${my_prefix}_LTX_preloaded_symbols;
345765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
345865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#endif
345965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
346065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#ifdef __cplusplus
346165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
346265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#endif\
346365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich"
346465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	} # !$opt_dry_run
346565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
346665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	pic_flag_for_symtable=
346765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	case "$compile_command " in
346865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	*" -static "*) ;;
346965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	*)
347065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  case $host in
347165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # compiling the symbol table file with pic_flag works around
347265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # a FreeBSD bug that causes programs to crash when -lm is
347365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # linked before any other PIC object.  But we must not use
347465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # pic_flag when linking with -static.  The problem exists in
347565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
347665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
347765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
347865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *-*-hpux*)
347965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    pic_flag_for_symtable=" $pic_flag"  ;;
348065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *)
348165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    if test "X$my_pic_p" != Xno; then
348265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      pic_flag_for_symtable=" $pic_flag"
348365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    fi
348465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    ;;
348565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  esac
348665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
348765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	esac
348865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	symtab_cflags=
348965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	for arg in $LTCFLAGS; do
349065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  case $arg in
349165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  -pie | -fpie | -fPIE) ;;
349265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *) func_append symtab_cflags " $arg" ;;
349365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  esac
349465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	done
349565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
349665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Now compile the dynamic symbol file.
349765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
349865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
349965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Clean up the generated files.
350065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
350165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
350265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Transform the symbol file into the correct name.
350365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	symfileobj="$output_objdir/${my_outputname}S.$objext"
350465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	case $host in
350565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	*cygwin* | *mingw* | *cegcc* )
350665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test -f "$output_objdir/$my_outputname.def"; then
350765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
350865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
350965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  else
351065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
351165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
351265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
351365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
351465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	*)
351565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
351665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
351765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
351865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	esac
351965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
352065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      *)
352165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_fatal_error "unknown suffix for \`$my_dlsyms'"
352265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
352365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      esac
352465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    else
352565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # We keep going just in case the user didn't refer to
352665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
352765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # really was required.
352865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
352965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Nullify the symbol file.
353065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"`
353165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"`
353265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    fi
353365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
353465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
353565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_win32_libid arg
353665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# return the library type of file 'arg'
353765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#
353865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Need a lot of goo to handle *both* DLLs and import libs
353965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Has to be a shell function in order to 'eat' the argument
354065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# that is supplied when $file_magic_command is called.
354165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Despite the name, also deal with 64 bit binaries.
354265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_win32_libid ()
354365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
354465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  $opt_debug
354565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  win32_libid_type="unknown"
354665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  win32_fileres=`file -L $1 2>/dev/null`
354765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  case $win32_fileres in
354865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  *ar\ archive\ import\ library*) # definitely import
354965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    win32_libid_type="x86 archive import"
355065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    ;;
355165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  *ar\ archive*) # could be an import, or static
355265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD.
355365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
355465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich       $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then
355565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_to_tool_file "$1" func_convert_file_msys_to_w32
355665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" |
355765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	$SED -n -e '
355865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    1,100{
355965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		/ I /{
356065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    s,.*,import,
356165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    p
356265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    q
356365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		}
356465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    }'`
356565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      case $win32_nmres in
356665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      import*)  win32_libid_type="x86 archive import";;
356765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      *)        win32_libid_type="x86 archive static";;
356865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      esac
356965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    fi
357065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    ;;
357165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  *DLL*)
357265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    win32_libid_type="x86 DLL"
357365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    ;;
357465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  *executable*) # but shell scripts are "executable" too...
357565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    case $win32_fileres in
357665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    *MS\ Windows\ PE\ Intel*)
357765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      win32_libid_type="x86 DLL"
357865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      ;;
357965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    esac
358065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    ;;
358165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  esac
358265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  $ECHO "$win32_libid_type"
358365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
358465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
358565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_cygming_dll_for_implib ARG
358665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#
358765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Platform-specific function to extract the
358865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# name of the DLL associated with the specified
358965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# import library ARG.
359065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Invoked by eval'ing the libtool variable
359165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#    $sharedlib_from_linklib_cmd
359265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Result is available in the variable
359365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#    $sharedlib_from_linklib_result
359465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_cygming_dll_for_implib ()
359565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
359665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  $opt_debug
359765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"`
359865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
359965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
360065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs
360165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#
360265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# The is the core of a fallback implementation of a
360365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# platform-specific function to extract the name of the
360465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# DLL associated with the specified import library LIBNAME.
360565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#
360665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# SECTION_NAME is either .idata$6 or .idata$7, depending
360765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# on the platform and compiler that created the implib.
360865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#
360965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Echos the name of the DLL associated with the
361065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# specified import library.
361165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_cygming_dll_for_implib_fallback_core ()
361265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
361365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  $opt_debug
361465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"`
361565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  $OBJDUMP -s --section "$1" "$2" 2>/dev/null |
361665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    $SED '/^Contents of section '"$match_literal"':/{
361765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Place marker at beginning of archive member dllname section
361865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      s/.*/====MARK====/
361965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      p
362065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      d
362165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    }
362265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # These lines can sometimes be longer than 43 characters, but
362365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # are always uninteresting
362465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    /:[	 ]*file format pe[i]\{,1\}-/d
362565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    /^In archive [^:]*:/d
362665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # Ensure marker is printed
362765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    /^====MARK====/p
362865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # Remove all lines with less than 43 characters
362965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    /^.\{43\}/!d
363065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # From remaining lines, remove first 43 characters
363165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    s/^.\{43\}//' |
363265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    $SED -n '
363365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Join marker and all lines until next marker into a single line
363465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      /^====MARK====/ b para
363565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      H
363665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      $ b para
363765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      b
363865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      :para
363965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      x
364065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      s/\n//g
364165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Remove the marker
364265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      s/^====MARK====//
364365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Remove trailing dots and whitespace
364465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      s/[\. \t]*$//
364565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Print
364665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      /./p' |
364765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # we now have a list, one entry per line, of the stringified
364865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # contents of the appropriate section of all members of the
364965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # archive which possess that section. Heuristic: eliminate
365065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # all those which have a first or second character that is
365165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # a '.' (that is, objdump's representation of an unprintable
365265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # character.) This should work for all archives with less than
365365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # 0x302f exports -- but will fail for DLLs whose name actually
365465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # begins with a literal '.' or a single character followed by
365565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # a '.'.
365665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    #
365765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # Of those that remain, print the first one.
365865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    $SED -e '/^\./d;/^.\./d;q'
365965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
366065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
366165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_cygming_gnu_implib_p ARG
366265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# This predicate returns with zero status (TRUE) if
366365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# ARG is a GNU/binutils-style import library. Returns
366465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# with nonzero status (FALSE) otherwise.
366565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_cygming_gnu_implib_p ()
366665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
366765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  $opt_debug
366865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  func_to_tool_file "$1" func_convert_file_msys_to_w32
366965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  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)$'`
367065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  test -n "$func_cygming_gnu_implib_tmp"
367165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
367265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
367365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_cygming_ms_implib_p ARG
367465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# This predicate returns with zero status (TRUE) if
367565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# ARG is an MS-style import library. Returns
367665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# with nonzero status (FALSE) otherwise.
367765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_cygming_ms_implib_p ()
367865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
367965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  $opt_debug
368065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  func_to_tool_file "$1" func_convert_file_msys_to_w32
368165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'`
368265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  test -n "$func_cygming_ms_implib_tmp"
368365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
368465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
368565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_cygming_dll_for_implib_fallback ARG
368665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Platform-specific function to extract the
368765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# name of the DLL associated with the specified
368865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# import library ARG.
368965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#
369065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# This fallback implementation is for use when $DLLTOOL
369165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# does not support the --identify-strict option.
369265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Invoked by eval'ing the libtool variable
369365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#    $sharedlib_from_linklib_cmd
369465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Result is available in the variable
369565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#    $sharedlib_from_linklib_result
369665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_cygming_dll_for_implib_fallback ()
369765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
369865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  $opt_debug
369965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if func_cygming_gnu_implib_p "$1" ; then
370065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # binutils import library
370165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"`
370265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  elif func_cygming_ms_implib_p "$1" ; then
370365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # ms-generated import library
370465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"`
370565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  else
370665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # unknown
370765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    sharedlib_from_linklib_result=""
370865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  fi
370965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
371065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
371165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
371265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_extract_an_archive dir oldlib
371365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_extract_an_archive ()
371465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
371565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    $opt_debug
371665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    f_ex_an_ar_dir="$1"; shift
371765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    f_ex_an_ar_oldlib="$1"
371865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    if test "$lock_old_archive_extraction" = yes; then
371965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      lockfile=$f_ex_an_ar_oldlib.lock
372065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
372165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_echo "Waiting for $lockfile to be removed"
372265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	sleep 2
372365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      done
372465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    fi
372565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \
372665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		   'stat=$?; rm -f "$lockfile"; exit $stat'
372765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    if test "$lock_old_archive_extraction" = yes; then
372865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      $opt_dry_run || rm -f "$lockfile"
372965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    fi
373065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
373165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich     :
373265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    else
373365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
373465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    fi
373565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
373665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
373765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
373865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_extract_archives gentop oldlib ...
373965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_extract_archives ()
374065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
374165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    $opt_debug
374265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    my_gentop="$1"; shift
374365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    my_oldlibs=${1+"$@"}
374465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    my_oldobjs=""
374565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    my_xlib=""
374665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    my_xabs=""
374765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    my_xdir=""
374865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
374965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    for my_xlib in $my_oldlibs; do
375065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Extract the objects.
375165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      case $my_xlib in
375265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	[\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
375365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	*) my_xabs=`pwd`"/$my_xlib" ;;
375465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      esac
375565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_basename "$my_xlib"
375665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      my_xlib="$func_basename_result"
375765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      my_xlib_u=$my_xlib
375865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      while :; do
375965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        case " $extracted_archives " in
376065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	*" $my_xlib_u "*)
376165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_arith $extracted_serial + 1
376265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  extracted_serial=$func_arith_result
376365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  my_xlib_u=lt$extracted_serial-$my_xlib ;;
376465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	*) break ;;
376565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	esac
376665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      done
376765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      extracted_archives="$extracted_archives $my_xlib_u"
376865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      my_xdir="$my_gentop/$my_xlib_u"
376965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
377065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_mkdir_p "$my_xdir"
377165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
377265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      case $host in
377365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      *-darwin*)
377465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_verbose "Extracting $my_xabs"
377565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Do not bother doing anything if just a dry run
377665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	$opt_dry_run || {
377765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  darwin_orig_dir=`pwd`
377865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  cd $my_xdir || exit $?
377965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  darwin_archive=$my_xabs
378065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  darwin_curdir=`pwd`
378165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  darwin_base_archive=`basename "$darwin_archive"`
378265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
378365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test -n "$darwin_arches"; then
378465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
378565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    darwin_arch=
378665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
378765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    for darwin_arch in  $darwin_arches ; do
378865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
378965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
379065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
379165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      func_extract_an_archive "`pwd`" "${darwin_base_archive}"
379265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      cd "$darwin_curdir"
379365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
379465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    done # $darwin_arches
379565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich            ## Okay now we've a bunch of thin objects, gotta fatten them up :)
379665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
379765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    darwin_file=
379865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    darwin_files=
379965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    for darwin_file in $darwin_filelist; do
380065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP`
380165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      $LIPO -create -output "$darwin_file" $darwin_files
380265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    done # $darwin_filelist
380365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    $RM -rf unfat-$$
380465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    cd "$darwin_orig_dir"
380565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  else
380665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    cd $darwin_orig_dir
380765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_extract_an_archive "$my_xdir" "$my_xabs"
380865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi # $darwin_arches
380965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	} # !$opt_dry_run
381065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
381165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      *)
381265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        func_extract_an_archive "$my_xdir" "$my_xabs"
381365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
381465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      esac
381565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP`
381665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    done
381765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
381865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_extract_archives_result="$my_oldobjs"
381965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
382065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
382165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
382265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_emit_wrapper [arg=no]
382365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#
382465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Emit a libtool wrapper script on stdout.
382565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Don't directly open a file because we may want to
382665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# incorporate the script contents within a cygwin/mingw
382765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# wrapper executable.  Must ONLY be called from within
382865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_mode_link because it depends on a number of variables
382965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# set therein.
383065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#
383165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
383265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# variable will take.  If 'yes', then the emitted script
383365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# will assume that the directory in which it is stored is
383465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# the $objdir directory.  This is a cygwin/mingw-specific
383565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# behavior.
383665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_emit_wrapper ()
383765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
383865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_emit_wrapper_arg1=${1-no}
383965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
384065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	$ECHO "\
384165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#! $SHELL
384265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
384365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# $output - temporary wrapper script for $objdir/$outputname
384465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
384565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#
384665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# The $output program cannot be directly executed until all the libtool
384765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# libraries that it depends on are installed.
384865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#
384965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# This wrapper script should never be moved out of the build directory.
385065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# If it is, it will not operate correctly.
385165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
385265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Sed substitution that helps us do robust quoting.  It backslashifies
385365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# metacharacters that are still active within double-quoted strings.
385465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichsed_quote_subst='$sed_quote_subst'
385565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
385665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Be Bourne compatible
385765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichif test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
385865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  emulate sh
385965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  NULLCMD=:
386065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
386165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  # is contrary to our usage.  Disable this feature.
386265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  alias -g '\${1+\"\$@\"}'='\"\$@\"'
386365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  setopt NO_GLOB_SUBST
386465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichelse
386565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
386665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfi
386765de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichBIN_SH=xpg4; export BIN_SH # for Tru64
386865de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichDUALCASE=1; export DUALCASE # for MKS sh
386965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
387065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# The HP-UX ksh and POSIX shell print the target directory to stdout
387165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# if CDPATH is set.
387265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
387365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
387465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichrelink_command=\"$relink_command\"
387565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
387665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# This environment variable determines our operation mode.
387765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichif test \"\$libtool_install_magic\" = \"$magic\"; then
387865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  # install mode needs the following variables:
387965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  generated_by_libtool_version='$macro_version'
388065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  notinst_deplibs='$notinst_deplibs'
388165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichelse
388265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  # When we are sourced in execute mode, \$file and \$ECHO are already set.
388365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if test \"\$libtool_execute_magic\" != \"$magic\"; then
388465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    file=\"\$0\""
388565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
388665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"`
388765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    $ECHO "\
388865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
388965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# A function that is used when there is no print builtin or printf.
389065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_fallback_echo ()
389165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
389265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  eval 'cat <<_LTECHO_EOF
389365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich\$1
389465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich_LTECHO_EOF'
389565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
389665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    ECHO=\"$qECHO\"
389765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  fi
389865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
389965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Very basic option parsing. These options are (a) specific to
390065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# the libtool wrapper, (b) are identical between the wrapper
390165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# /script/ and the wrapper /executable/ which is used only on
390265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# windows platforms, and (c) all begin with the string "--lt-"
390365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# (application programs are unlikely to have options which match
390465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# this pattern).
390565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#
390665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# There are only two supported options: --lt-debug and
390765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# --lt-dump-script. There is, deliberately, no --lt-help.
390865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#
390965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# The first argument to this parsing function should be the
391065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# script's $0 value, followed by "$@".
391165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichlt_option_debug=
391265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_parse_lt_options ()
391365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
391465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  lt_script_arg0=\$0
391565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  shift
391665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  for lt_opt
391765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  do
391865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    case \"\$lt_opt\" in
391965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    --lt-debug) lt_option_debug=1 ;;
392065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    --lt-dump-script)
392165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\`
392265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=.
392365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\`
392465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        cat \"\$lt_dump_D/\$lt_dump_F\"
392565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        exit 0
392665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      ;;
392765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    --lt-*)
392865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2
392965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        exit 1
393065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      ;;
393165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    esac
393265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  done
393365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
393465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  # Print the debug banner immediately:
393565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if test -n \"\$lt_option_debug\"; then
393665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2
393765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  fi
393865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
393965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
394065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Used when --lt-debug. Prints its arguments to stdout
394165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# (redirection is the responsibility of the caller)
394265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_lt_dump_args ()
394365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
394465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  lt_dump_args_N=1;
394565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  for lt_arg
394665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  do
394765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\"
394865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    lt_dump_args_N=\`expr \$lt_dump_args_N + 1\`
394965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  done
395065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
395165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
395265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Core function for launching the target application
395365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_exec_program_core ()
395465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
395565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich"
395665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  case $host in
395765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  # Backslashes separate directories on plain windows
395865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  *-*-mingw | *-*-os2* | *-cegcc*)
395965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    $ECHO "\
396065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test -n \"\$lt_option_debug\"; then
396165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2
396265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        func_lt_dump_args \${1+\"\$@\"} 1>&2
396365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
396465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
396565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich"
396665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    ;;
396765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
396865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  *)
396965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    $ECHO "\
397065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test -n \"\$lt_option_debug\"; then
397165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2
397265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        func_lt_dump_args \${1+\"\$@\"} 1>&2
397365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
397465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      exec \"\$progdir/\$program\" \${1+\"\$@\"}
397565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich"
397665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    ;;
397765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  esac
397865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  $ECHO "\
397965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
398065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      exit 1
398165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
398265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
398365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# A function to encapsulate launching the target application
398465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Strips options in the --lt-* namespace from \$@ and
398565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# launches target application with the remaining arguments.
398665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_exec_program ()
398765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
398865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  case \" \$* \" in
398965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  *\\ --lt-*)
399065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    for lt_wr_arg
399165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    do
399265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      case \$lt_wr_arg in
399365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      --lt-*) ;;
399465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
399565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      esac
399665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      shift
399765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    done ;;
399865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  esac
399965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  func_exec_program_core \${1+\"\$@\"}
400065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
400165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
400265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  # Parse options
400365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  func_parse_lt_options \"\$0\" \${1+\"\$@\"}
400465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
400565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  # Find the directory that this script lives in.
400665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\`
400765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
400865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
400965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  # Follow symbolic links until we get to the real thisdir.
401065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\`
401165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  while test -n \"\$file\"; do
401265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\`
401365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
401465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # If there was a directory component, then change thisdir.
401565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    if test \"x\$destdir\" != \"x\$file\"; then
401665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      case \"\$destdir\" in
401765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
401865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      *) thisdir=\"\$thisdir/\$destdir\" ;;
401965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      esac
402065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    fi
402165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
402265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\`
402365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\`
402465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  done
402565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
402665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  # Usually 'no', except on cygwin/mingw when embedded into
402765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  # the cwrapper.
402865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1
402965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
403065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # special case for '.'
403165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    if test \"\$thisdir\" = \".\"; then
403265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      thisdir=\`pwd\`
403365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    fi
403465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # remove .libs from thisdir
403565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    case \"\$thisdir\" in
403665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;;
403765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    $objdir )   thisdir=. ;;
403865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    esac
403965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  fi
404065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
404165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  # Try to get the absolute directory name.
404265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  absdir=\`cd \"\$thisdir\" && pwd\`
404365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  test -n \"\$absdir\" && thisdir=\"\$absdir\"
404465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich"
404565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
404665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test "$fast_install" = yes; then
404765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  $ECHO "\
404865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  program=lt-'$outputname'$exeext
404965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  progdir=\"\$thisdir/$objdir\"
405065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
405165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if test ! -f \"\$progdir/\$program\" ||
405265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
405365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
405465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
405565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    file=\"\$\$-\$program\"
405665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
405765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    if test ! -d \"\$progdir\"; then
405865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      $MKDIR \"\$progdir\"
405965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    else
406065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      $RM \"\$progdir/\$file\"
406165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    fi"
406265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
406365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  $ECHO "\
406465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
406565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # relink executable if necessary
406665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    if test -n \"\$relink_command\"; then
406765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
406865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      else
406965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	$ECHO \"\$relink_command_output\" >&2
407065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	$RM \"\$progdir/\$file\"
407165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	exit 1
407265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
407365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    fi
407465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
407565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
407665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    { $RM \"\$progdir/\$program\";
407765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
407865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    $RM \"\$progdir/\$file\"
407965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  fi"
408065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	else
408165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  $ECHO "\
408265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  program='$outputname'
408365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  progdir=\"\$thisdir/$objdir\"
408465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich"
408565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
408665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
408765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	$ECHO "\
408865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
408965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if test -f \"\$progdir/\$program\"; then"
409065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
409165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# fixup the dll searchpath if we need to.
409265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	#
409365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Fix the DLL searchpath if we need to.  Do this before prepending
409465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# to shlibpath, because on Windows, both are PATH and uninstalled
409565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# libraries must come first.
409665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test -n "$dllsearchpath"; then
409765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  $ECHO "\
409865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # Add the dll search path components to the executable PATH
409965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    PATH=$dllsearchpath:\$PATH
410065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich"
410165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
410265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
410365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Export our shlibpath_var if we have one.
410465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
410565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  $ECHO "\
410665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # Add our own library path to $shlibpath_var
410765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
410865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
410965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # Some systems cannot cope with colon-terminated $shlibpath_var
411065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # The second colon is a workaround for a bug in BeOS R4 sed
411165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\`
411265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
411365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    export $shlibpath_var
411465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich"
411565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
411665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
411765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	$ECHO "\
411865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    if test \"\$libtool_execute_magic\" != \"$magic\"; then
411965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Run the actual program with our arguments.
412065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_exec_program \${1+\"\$@\"}
412165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    fi
412265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  else
412365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # The program doesn't exist.
412465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
412565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
412665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
412765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    exit 1
412865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  fi
412965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfi\
413065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich"
413165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
413265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
413365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
413465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_emit_cwrapperexe_src
413565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# emit the source code for a wrapper executable on stdout
413665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Must ONLY be called from within func_mode_link because
413765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# it depends on a number of variable set therein.
413865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_emit_cwrapperexe_src ()
413965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
414065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	cat <<EOF
414165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
414265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
414365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich   Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
414465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
414565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich   The $output program cannot be directly executed until all the libtool
414665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich   libraries that it depends on are installed.
414765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
414865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich   This wrapper executable should never be moved out of the build directory.
414965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich   If it is, it will not operate correctly.
415065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich*/
415165de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEOF
415265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    cat <<"EOF"
415365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#ifdef _MSC_VER
415465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# define _CRT_SECURE_NO_DEPRECATE 1
415565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#endif
415665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#include <stdio.h>
415765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#include <stdlib.h>
415865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#ifdef _MSC_VER
415965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# include <direct.h>
416065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# include <process.h>
416165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# include <io.h>
416265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#else
416365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# include <unistd.h>
416465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# include <stdint.h>
416565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# ifdef __CYGWIN__
416665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#  include <io.h>
416765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# endif
416865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#endif
416965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#include <malloc.h>
417065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#include <stdarg.h>
417165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#include <assert.h>
417265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#include <string.h>
417365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#include <ctype.h>
417465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#include <errno.h>
417565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#include <fcntl.h>
417665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#include <sys/stat.h>
417765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
417865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich/* declarations of non-ANSI functions */
417965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#if defined(__MINGW32__)
418065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# ifdef __STRICT_ANSI__
418165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichint _putenv (const char *);
418265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# endif
418365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#elif defined(__CYGWIN__)
418465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# ifdef __STRICT_ANSI__
418565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichchar *realpath (const char *, char *);
418665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichint putenv (char *);
418765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichint setenv (const char *, const char *, int);
418865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# endif
418965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich/* #elif defined (other platforms) ... */
419065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#endif
419165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
419265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich/* portability defines, excluding path handling macros */
419365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#if defined(_MSC_VER)
419465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# define setmode _setmode
419565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# define stat    _stat
419665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# define chmod   _chmod
419765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# define getcwd  _getcwd
419865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# define putenv  _putenv
419965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# define S_IXUSR _S_IEXEC
420065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# ifndef _INTPTR_T_DEFINED
420165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#  define _INTPTR_T_DEFINED
420265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#  define intptr_t int
420365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# endif
420465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#elif defined(__MINGW32__)
420565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# define setmode _setmode
420665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# define stat    _stat
420765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# define chmod   _chmod
420865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# define getcwd  _getcwd
420965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# define putenv  _putenv
421065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#elif defined(__CYGWIN__)
421165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# define HAVE_SETENV
421265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# define FOPEN_WB "wb"
421365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich/* #elif defined (other platforms) ... */
421465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#endif
421565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
421665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#if defined(PATH_MAX)
421765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# define LT_PATHMAX PATH_MAX
421865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#elif defined(MAXPATHLEN)
421965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# define LT_PATHMAX MAXPATHLEN
422065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#else
422165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# define LT_PATHMAX 1024
422265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#endif
422365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
422465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#ifndef S_IXOTH
422565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# define S_IXOTH 0
422665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#endif
422765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#ifndef S_IXGRP
422865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# define S_IXGRP 0
422965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#endif
423065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
423165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich/* path handling portability macros */
423265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#ifndef DIR_SEPARATOR
423365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# define DIR_SEPARATOR '/'
423465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# define PATH_SEPARATOR ':'
423565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#endif
423665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
423765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
423865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  defined (__OS2__)
423965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# define HAVE_DOS_BASED_FILE_SYSTEM
424065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# define FOPEN_WB "wb"
424165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# ifndef DIR_SEPARATOR_2
424265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#  define DIR_SEPARATOR_2 '\\'
424365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# endif
424465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# ifndef PATH_SEPARATOR_2
424565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#  define PATH_SEPARATOR_2 ';'
424665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# endif
424765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#endif
424865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
424965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#ifndef DIR_SEPARATOR_2
425065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
425165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#else /* DIR_SEPARATOR_2 */
425265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# define IS_DIR_SEPARATOR(ch) \
425365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	(((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
425465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#endif /* DIR_SEPARATOR_2 */
425565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
425665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#ifndef PATH_SEPARATOR_2
425765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
425865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#else /* PATH_SEPARATOR_2 */
425965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
426065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#endif /* PATH_SEPARATOR_2 */
426165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
426265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#ifndef FOPEN_WB
426365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# define FOPEN_WB "w"
426465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#endif
426565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#ifndef _O_BINARY
426665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# define _O_BINARY 0
426765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#endif
426865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
426965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
427065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#define XFREE(stale) do { \
427165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if (stale) { free ((void *) stale); stale = 0; } \
427265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich} while (0)
427365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
427465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#if defined(LT_DEBUGWRAPPER)
427565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichstatic int lt_debug = 1;
427665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#else
427765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichstatic int lt_debug = 0;
427865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#endif
427965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
428065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichconst char *program_name = "libtool-wrapper"; /* in case xstrdup fails */
428165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
428265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichvoid *xmalloc (size_t num);
428365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichchar *xstrdup (const char *string);
428465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichconst char *base_name (const char *name);
428565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichchar *find_executable (const char *wrapper);
428665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichchar *chase_symlinks (const char *pathspec);
428765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichint make_executable (const char *path);
428865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichint check_executable (const char *path);
428965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichchar *strendzap (char *str, const char *pat);
429065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichvoid lt_debugprintf (const char *file, int line, const char *fmt, ...);
429165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichvoid lt_fatal (const char *file, int line, const char *message, ...);
429265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichstatic const char *nonnull (const char *s);
429365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichstatic const char *nonempty (const char *s);
429465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichvoid lt_setenv (const char *name, const char *value);
429565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichchar *lt_extend_str (const char *orig_value, const char *add, int to_end);
429665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichvoid lt_update_exe_path (const char *name, const char *value);
429765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichvoid lt_update_lib_path (const char *name, const char *value);
429865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichchar **prepare_spawn (char **argv);
429965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichvoid lt_dump_script (FILE *f);
430065de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEOF
430165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
430265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    cat <<EOF
430365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichvolatile const char * MAGIC_EXE = "$magic_exe";
430465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichconst char * LIB_PATH_VARNAME = "$shlibpath_var";
430565de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEOF
430665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
430765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
430865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich              func_to_host_path "$temp_rpath"
430965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      cat <<EOF
431065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichconst char * LIB_PATH_VALUE   = "$func_to_host_path_result";
431165de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEOF
431265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    else
431365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      cat <<"EOF"
431465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichconst char * LIB_PATH_VALUE   = "";
431565de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEOF
431665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    fi
431765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
431865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    if test -n "$dllsearchpath"; then
431965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich              func_to_host_path "$dllsearchpath:"
432065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      cat <<EOF
432165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichconst char * EXE_PATH_VARNAME = "PATH";
432265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichconst char * EXE_PATH_VALUE   = "$func_to_host_path_result";
432365de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEOF
432465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    else
432565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      cat <<"EOF"
432665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichconst char * EXE_PATH_VARNAME = "";
432765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichconst char * EXE_PATH_VALUE   = "";
432865de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEOF
432965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    fi
433065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
433165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    if test "$fast_install" = yes; then
433265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      cat <<EOF
433365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichconst char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
433465de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEOF
433565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    else
433665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      cat <<EOF
433765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichconst char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
433865de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEOF
433965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    fi
434065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
434165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
434265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    cat <<"EOF"
434365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
434465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#define LTWRAPPER_OPTION_PREFIX         "--lt-"
434565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
434665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichstatic const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
434765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichstatic const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX "dump-script";
434865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichstatic const char *debug_opt            = LTWRAPPER_OPTION_PREFIX "debug";
434965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
435065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichint
435165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichmain (int argc, char *argv[])
435265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
435365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  char **newargz;
435465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  int  newargc;
435565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  char *tmp_pathspec;
435665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  char *actual_cwrapper_path;
435765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  char *actual_cwrapper_name;
435865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  char *target_name;
435965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  char *lt_argv_zero;
436065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  intptr_t rval = 127;
436165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
436265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  int i;
436365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
436465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  program_name = (char *) xstrdup (base_name (argv[0]));
436565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  newargz = XMALLOC (char *, argc + 1);
436665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
436765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  /* very simple arg parsing; don't want to rely on getopt
436865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich   * also, copy all non cwrapper options to newargz, except
436965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich   * argz[0], which is handled differently
437065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich   */
437165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  newargc=0;
437265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  for (i = 1; i < argc; i++)
437365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    {
437465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if (strcmp (argv[i], dumpscript_opt) == 0)
437565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	{
437665de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEOF
437765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    case "$host" in
437865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      *mingw* | *cygwin* )
437965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		# make stdout use "unix" line endings
438065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		echo "          setmode(1,_O_BINARY);"
438165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		;;
438265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      esac
438365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
438465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    cat <<"EOF"
438565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  lt_dump_script (stdout);
438665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  return 0;
438765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	}
438865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if (strcmp (argv[i], debug_opt) == 0)
438965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	{
439065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich          lt_debug = 1;
439165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich          continue;
439265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	}
439365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if (strcmp (argv[i], ltwrapper_option_prefix) == 0)
439465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        {
439565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich          /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
439665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich             namespace, but it is not one of the ones we know about and
439765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich             have already dealt with, above (inluding dump-script), then
439865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich             report an error. Otherwise, targets might begin to believe
439965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich             they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
440065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich             namespace. The first time any user complains about this, we'll
440165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich             need to make LTWRAPPER_OPTION_PREFIX a configure-time option
440265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich             or a configure.ac-settable value.
440365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich           */
440465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich          lt_fatal (__FILE__, __LINE__,
440565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    "unrecognized %s option: '%s'",
440665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                    ltwrapper_option_prefix, argv[i]);
440765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        }
440865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      /* otherwise ... */
440965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      newargz[++newargc] = xstrdup (argv[i]);
441065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    }
441165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  newargz[++newargc] = NULL;
441265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
441365de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEOF
441465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    cat <<EOF
441565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  /* The GNU banner must be the first non-error debug message */
441665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n");
441765de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEOF
441865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    cat <<"EOF"
441965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]);
442065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name);
442165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
442265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  tmp_pathspec = find_executable (argv[0]);
442365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if (tmp_pathspec == NULL)
442465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]);
442565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  lt_debugprintf (__FILE__, __LINE__,
442665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                  "(main) found exe (before symlink chase) at: %s\n",
442765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  tmp_pathspec);
442865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
442965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  actual_cwrapper_path = chase_symlinks (tmp_pathspec);
443065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  lt_debugprintf (__FILE__, __LINE__,
443165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                  "(main) found exe (after symlink chase) at: %s\n",
443265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  actual_cwrapper_path);
443365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  XFREE (tmp_pathspec);
443465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
443565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path));
443665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  strendzap (actual_cwrapper_path, actual_cwrapper_name);
443765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
443865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  /* wrapper name transforms */
443965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  strendzap (actual_cwrapper_name, ".exe");
444065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
444165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  XFREE (actual_cwrapper_name);
444265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  actual_cwrapper_name = tmp_pathspec;
444365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  tmp_pathspec = 0;
444465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
444565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  /* target_name transforms -- use actual target program name; might have lt- prefix */
444665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
444765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  strendzap (target_name, ".exe");
444865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
444965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  XFREE (target_name);
445065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  target_name = tmp_pathspec;
445165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  tmp_pathspec = 0;
445265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
445365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  lt_debugprintf (__FILE__, __LINE__,
445465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  "(main) libtool target name: %s\n",
445565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  target_name);
445665de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEOF
445765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
445865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    cat <<EOF
445965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  newargz[0] =
446065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    XMALLOC (char, (strlen (actual_cwrapper_path) +
446165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
446265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  strcpy (newargz[0], actual_cwrapper_path);
446365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  strcat (newargz[0], "$objdir");
446465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  strcat (newargz[0], "/");
446565de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEOF
446665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
446765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    cat <<"EOF"
446865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  /* stop here, and copy so we don't have to do this twice */
446965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  tmp_pathspec = xstrdup (newargz[0]);
447065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
447165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
447265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  strcat (newargz[0], actual_cwrapper_name);
447365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
447465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  /* DO want the lt- prefix here if it exists, so use target_name */
447565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
447665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  XFREE (tmp_pathspec);
447765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  tmp_pathspec = NULL;
447865de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEOF
447965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
448065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    case $host_os in
448165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      mingw*)
448265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    cat <<"EOF"
448365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  {
448465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    char* p;
448565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    while ((p = strchr (newargz[0], '\\')) != NULL)
448665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      {
448765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	*p = '/';
448865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      }
448965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    while ((p = strchr (lt_argv_zero, '\\')) != NULL)
449065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      {
449165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	*p = '/';
449265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      }
449365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  }
449465de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEOF
449565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    ;;
449665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    esac
449765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
449865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    cat <<"EOF"
449965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  XFREE (target_name);
450065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  XFREE (actual_cwrapper_path);
450165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  XFREE (actual_cwrapper_name);
450265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
450365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
450465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  lt_setenv ("DUALCASE", "1");  /* for MSK sh */
450565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  /* Update the DLL searchpath.  EXE_PATH_VALUE ($dllsearchpath) must
450665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich     be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath)
450765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich     because on Windows, both *_VARNAMEs are PATH but uninstalled
450865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich     libraries must come first. */
450965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
451065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
451165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
451265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n",
451365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  nonnull (lt_argv_zero));
451465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  for (i = 0; i < newargc; i++)
451565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    {
451665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n",
451765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		      i, nonnull (newargz[i]));
451865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    }
451965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
452065de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEOF
452165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
452265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    case $host_os in
452365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      mingw*)
452465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		cat <<"EOF"
452565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  /* execv doesn't actually work on mingw as expected on unix */
452665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  newargz = prepare_spawn (newargz);
452765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
452865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if (rval == -1)
452965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    {
453065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      /* failed to start process */
453165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      lt_debugprintf (__FILE__, __LINE__,
453265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		      "(main) failed to launch target \"%s\": %s\n",
453365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		      lt_argv_zero, nonnull (strerror (errno)));
453465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      return 127;
453565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    }
453665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  return rval;
453765de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEOF
453865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		;;
453965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      *)
454065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		cat <<"EOF"
454165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  execv (lt_argv_zero, newargz);
454265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  return rval; /* =127, but avoids unused variable warning */
454365de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEOF
454465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		;;
454565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    esac
454665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
454765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    cat <<"EOF"
454865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
454965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
455065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichvoid *
455165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichxmalloc (size_t num)
455265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
455365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  void *p = (void *) malloc (num);
455465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if (!p)
455565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    lt_fatal (__FILE__, __LINE__, "memory exhausted");
455665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
455765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  return p;
455865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
455965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
456065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichchar *
456165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichxstrdup (const char *string)
456265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
456365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
456465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			  string) : NULL;
456565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
456665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
456765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichconst char *
456865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichbase_name (const char *name)
456965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
457065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  const char *base;
457165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
457265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
457365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  /* Skip over the disk name in MSDOS pathnames. */
457465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if (isalpha ((unsigned char) name[0]) && name[1] == ':')
457565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    name += 2;
457665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#endif
457765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
457865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  for (base = name; *name; name++)
457965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    if (IS_DIR_SEPARATOR (*name))
458065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      base = name + 1;
458165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  return base;
458265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
458365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
458465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichint
458565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichcheck_executable (const char *path)
458665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
458765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  struct stat st;
458865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
458965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n",
459065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                  nonempty (path));
459165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if ((!path) || (!*path))
459265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    return 0;
459365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
459465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if ((stat (path, &st) >= 0)
459565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
459665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    return 1;
459765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  else
459865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    return 0;
459965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
460065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
460165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichint
460265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichmake_executable (const char *path)
460365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
460465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  int rval = 0;
460565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  struct stat st;
460665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
460765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n",
460865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                  nonempty (path));
460965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if ((!path) || (!*path))
461065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    return 0;
461165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
461265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if (stat (path, &st) >= 0)
461365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    {
461465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
461565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    }
461665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  return rval;
461765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
461865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
461965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich/* Searches for the full path of the wrapper.  Returns
462065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich   newly allocated full path name if found, NULL otherwise
462165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich   Does not chase symlinks, even on platforms that support them.
462265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich*/
462365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichchar *
462465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfind_executable (const char *wrapper)
462565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
462665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  int has_slash = 0;
462765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  const char *p;
462865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  const char *p_next;
462965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  /* static buffer for getcwd */
463065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  char tmp[LT_PATHMAX + 1];
463165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  int tmp_len;
463265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  char *concat_name;
463365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
463465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n",
463565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                  nonempty (wrapper));
463665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
463765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if ((wrapper == NULL) || (*wrapper == '\0'))
463865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    return NULL;
463965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
464065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  /* Absolute path? */
464165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
464265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
464365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    {
464465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      concat_name = xstrdup (wrapper);
464565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if (check_executable (concat_name))
464665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	return concat_name;
464765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      XFREE (concat_name);
464865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    }
464965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  else
465065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    {
465165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#endif
465265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if (IS_DIR_SEPARATOR (wrapper[0]))
465365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	{
465465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  concat_name = xstrdup (wrapper);
465565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if (check_executable (concat_name))
465665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    return concat_name;
465765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  XFREE (concat_name);
465865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	}
465965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
466065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    }
466165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#endif
466265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
466365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  for (p = wrapper; *p; p++)
466465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    if (*p == '/')
466565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      {
466665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	has_slash = 1;
466765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	break;
466865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      }
466965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if (!has_slash)
467065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    {
467165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      /* no slashes; search PATH */
467265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      const char *path = getenv ("PATH");
467365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if (path != NULL)
467465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	{
467565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  for (p = path; *p; p = p_next)
467665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    {
467765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      const char *q;
467865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      size_t p_len;
467965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      for (q = p; *q; q++)
468065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		if (IS_PATH_SEPARATOR (*q))
468165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  break;
468265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      p_len = q - p;
468365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      p_next = (*q == '\0' ? q : q + 1);
468465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      if (p_len == 0)
468565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		{
468665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  /* empty path: current directory */
468765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  if (getcwd (tmp, LT_PATHMAX) == NULL)
468865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
468965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                              nonnull (strerror (errno)));
469065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  tmp_len = strlen (tmp);
469165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  concat_name =
469265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
469365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  memcpy (concat_name, tmp, tmp_len);
469465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  concat_name[tmp_len] = '/';
469565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  strcpy (concat_name + tmp_len + 1, wrapper);
469665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		}
469765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      else
469865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		{
469965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  concat_name =
470065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
470165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  memcpy (concat_name, p, p_len);
470265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  concat_name[p_len] = '/';
470365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  strcpy (concat_name + p_len + 1, wrapper);
470465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		}
470565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      if (check_executable (concat_name))
470665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		return concat_name;
470765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      XFREE (concat_name);
470865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    }
470965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	}
471065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      /* not found in PATH; assume curdir */
471165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    }
471265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  /* Relative path | not found in path: prepend cwd */
471365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if (getcwd (tmp, LT_PATHMAX) == NULL)
471465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
471565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich              nonnull (strerror (errno)));
471665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  tmp_len = strlen (tmp);
471765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
471865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  memcpy (concat_name, tmp, tmp_len);
471965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  concat_name[tmp_len] = '/';
472065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  strcpy (concat_name + tmp_len + 1, wrapper);
472165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
472265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if (check_executable (concat_name))
472365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    return concat_name;
472465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  XFREE (concat_name);
472565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  return NULL;
472665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
472765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
472865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichchar *
472965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichchase_symlinks (const char *pathspec)
473065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
473165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#ifndef S_ISLNK
473265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  return xstrdup (pathspec);
473365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#else
473465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  char buf[LT_PATHMAX];
473565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  struct stat s;
473665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  char *tmp_pathspec = xstrdup (pathspec);
473765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  char *p;
473865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  int has_symlinks = 0;
473965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  while (strlen (tmp_pathspec) && !has_symlinks)
474065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    {
474165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      lt_debugprintf (__FILE__, __LINE__,
474265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		      "checking path component for symlinks: %s\n",
474365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		      tmp_pathspec);
474465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if (lstat (tmp_pathspec, &s) == 0)
474565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	{
474665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if (S_ISLNK (s.st_mode) != 0)
474765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    {
474865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      has_symlinks = 1;
474965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      break;
475065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    }
475165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
475265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  /* search backwards for last DIR_SEPARATOR */
475365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  p = tmp_pathspec + strlen (tmp_pathspec) - 1;
475465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
475565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    p--;
475665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
475765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    {
475865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      /* no more DIR_SEPARATORS left */
475965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      break;
476065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    }
476165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *p = '\0';
476265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	}
476365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      else
476465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	{
476565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  lt_fatal (__FILE__, __LINE__,
476665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    "error accessing file \"%s\": %s",
476765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    tmp_pathspec, nonnull (strerror (errno)));
476865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	}
476965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    }
477065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  XFREE (tmp_pathspec);
477165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
477265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if (!has_symlinks)
477365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    {
477465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      return xstrdup (pathspec);
477565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    }
477665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
477765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  tmp_pathspec = realpath (pathspec, buf);
477865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if (tmp_pathspec == 0)
477965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    {
478065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      lt_fatal (__FILE__, __LINE__,
478165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		"could not follow symlinks for %s", pathspec);
478265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    }
478365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  return xstrdup (tmp_pathspec);
478465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#endif
478565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
478665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
478765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichchar *
478865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichstrendzap (char *str, const char *pat)
478965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
479065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  size_t len, patlen;
479165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
479265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  assert (str != NULL);
479365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  assert (pat != NULL);
479465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
479565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  len = strlen (str);
479665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  patlen = strlen (pat);
479765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
479865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if (patlen <= len)
479965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    {
480065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      str += len - patlen;
480165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if (strcmp (str, pat) == 0)
480265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	*str = '\0';
480365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    }
480465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  return str;
480565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
480665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
480765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichvoid
480865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichlt_debugprintf (const char *file, int line, const char *fmt, ...)
480965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
481065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  va_list args;
481165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if (lt_debug)
481265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    {
481365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line);
481465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      va_start (args, fmt);
481565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      (void) vfprintf (stderr, fmt, args);
481665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      va_end (args);
481765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    }
481865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
481965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
482065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichstatic void
482165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichlt_error_core (int exit_status, const char *file,
482265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	       int line, const char *mode,
482365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	       const char *message, va_list ap)
482465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
482565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode);
482665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  vfprintf (stderr, message, ap);
482765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  fprintf (stderr, ".\n");
482865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
482965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if (exit_status >= 0)
483065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    exit (exit_status);
483165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
483265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
483365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichvoid
483465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichlt_fatal (const char *file, int line, const char *message, ...)
483565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
483665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  va_list ap;
483765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  va_start (ap, message);
483865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap);
483965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  va_end (ap);
484065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
484165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
484265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichstatic const char *
484365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichnonnull (const char *s)
484465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
484565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  return s ? s : "(null)";
484665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
484765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
484865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichstatic const char *
484965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichnonempty (const char *s)
485065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
485165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  return (s && !*s) ? "(empty)" : nonnull (s);
485265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
485365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
485465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichvoid
485565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichlt_setenv (const char *name, const char *value)
485665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
485765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  lt_debugprintf (__FILE__, __LINE__,
485865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  "(lt_setenv) setting '%s' to '%s'\n",
485965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                  nonnull (name), nonnull (value));
486065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  {
486165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#ifdef HAVE_SETENV
486265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    /* always make a copy, for consistency with !HAVE_SETENV */
486365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    char *str = xstrdup (value);
486465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    setenv (name, str, 1);
486565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#else
486665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    int len = strlen (name) + 1 + strlen (value) + 1;
486765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    char *str = XMALLOC (char, len);
486865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    sprintf (str, "%s=%s", name, value);
486965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    if (putenv (str) != EXIT_SUCCESS)
487065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      {
487165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        XFREE (str);
487265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      }
487365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#endif
487465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  }
487565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
487665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
487765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichchar *
487865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichlt_extend_str (const char *orig_value, const char *add, int to_end)
487965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
488065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  char *new_value;
488165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if (orig_value && *orig_value)
488265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    {
488365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      int orig_value_len = strlen (orig_value);
488465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      int add_len = strlen (add);
488565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      new_value = XMALLOC (char, add_len + orig_value_len + 1);
488665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if (to_end)
488765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        {
488865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich          strcpy (new_value, orig_value);
488965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich          strcpy (new_value + orig_value_len, add);
489065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        }
489165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      else
489265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        {
489365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich          strcpy (new_value, add);
489465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich          strcpy (new_value + add_len, orig_value);
489565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        }
489665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    }
489765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  else
489865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    {
489965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      new_value = xstrdup (add);
490065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    }
490165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  return new_value;
490265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
490365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
490465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichvoid
490565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichlt_update_exe_path (const char *name, const char *value)
490665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
490765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  lt_debugprintf (__FILE__, __LINE__,
490865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  "(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
490965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                  nonnull (name), nonnull (value));
491065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
491165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if (name && *name && value && *value)
491265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    {
491365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      char *new_value = lt_extend_str (getenv (name), value, 0);
491465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      /* some systems can't cope with a ':'-terminated path #' */
491565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      int len = strlen (new_value);
491665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
491765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        {
491865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich          new_value[len-1] = '\0';
491965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        }
492065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      lt_setenv (name, new_value);
492165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      XFREE (new_value);
492265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    }
492365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
492465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
492565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichvoid
492665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichlt_update_lib_path (const char *name, const char *value)
492765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
492865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  lt_debugprintf (__FILE__, __LINE__,
492965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  "(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
493065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                  nonnull (name), nonnull (value));
493165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
493265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if (name && *name && value && *value)
493365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    {
493465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      char *new_value = lt_extend_str (getenv (name), value, 0);
493565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      lt_setenv (name, new_value);
493665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      XFREE (new_value);
493765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    }
493865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
493965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
494065de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEOF
494165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    case $host_os in
494265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      mingw*)
494365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		cat <<"EOF"
494465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
494565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich/* Prepares an argument vector before calling spawn().
494665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich   Note that spawn() does not by itself call the command interpreter
494765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich     (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") :
494865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
494965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich         GetVersionEx(&v);
495065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich         v.dwPlatformId == VER_PLATFORM_WIN32_NT;
495165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      }) ? "cmd.exe" : "command.com").
495265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich   Instead it simply concatenates the arguments, separated by ' ', and calls
495365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich   CreateProcess().  We must quote the arguments since Win32 CreateProcess()
495465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich   interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a
495565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich   special way:
495665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich   - Space and tab are interpreted as delimiters. They are not treated as
495765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich     delimiters if they are surrounded by double quotes: "...".
495865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich   - Unescaped double quotes are removed from the input. Their only effect is
495965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich     that within double quotes, space and tab are treated like normal
496065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich     characters.
496165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich   - Backslashes not followed by double quotes are not special.
496265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich   - But 2*n+1 backslashes followed by a double quote become
496365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich     n backslashes followed by a double quote (n >= 0):
496465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich       \" -> "
496565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich       \\\" -> \"
496665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich       \\\\\" -> \\"
496765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich */
496865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#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"
496965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#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"
497065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichchar **
497165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichprepare_spawn (char **argv)
497265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
497365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  size_t argc;
497465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  char **new_argv;
497565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  size_t i;
497665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
497765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  /* Count number of arguments.  */
497865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  for (argc = 0; argv[argc] != NULL; argc++)
497965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    ;
498065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
498165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  /* Allocate new argument vector.  */
498265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  new_argv = XMALLOC (char *, argc + 1);
498365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
498465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  /* Put quoted arguments into the new argument vector.  */
498565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  for (i = 0; i < argc; i++)
498665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    {
498765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      const char *string = argv[i];
498865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
498965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if (string[0] == '\0')
499065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	new_argv[i] = xstrdup ("\"\"");
499165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL)
499265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	{
499365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL);
499465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  size_t length;
499565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  unsigned int backslashes;
499665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  const char *s;
499765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  char *quoted_string;
499865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  char *p;
499965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
500065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  length = 0;
500165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  backslashes = 0;
500265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if (quote_around)
500365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    length++;
500465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  for (s = string; *s != '\0'; s++)
500565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    {
500665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      char c = *s;
500765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      if (c == '"')
500865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		length += backslashes + 1;
500965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      length++;
501065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      if (c == '\\')
501165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		backslashes++;
501265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      else
501365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		backslashes = 0;
501465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    }
501565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if (quote_around)
501665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    length += backslashes + 1;
501765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
501865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  quoted_string = XMALLOC (char, length + 1);
501965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
502065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  p = quoted_string;
502165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  backslashes = 0;
502265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if (quote_around)
502365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    *p++ = '"';
502465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  for (s = string; *s != '\0'; s++)
502565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    {
502665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      char c = *s;
502765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      if (c == '"')
502865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		{
502965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  unsigned int j;
503065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  for (j = backslashes + 1; j > 0; j--)
503165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    *p++ = '\\';
503265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		}
503365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      *p++ = c;
503465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      if (c == '\\')
503565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		backslashes++;
503665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      else
503765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		backslashes = 0;
503865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    }
503965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if (quote_around)
504065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    {
504165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      unsigned int j;
504265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      for (j = backslashes; j > 0; j--)
504365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		*p++ = '\\';
504465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      *p++ = '"';
504565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    }
504665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *p = '\0';
504765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
504865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  new_argv[i] = quoted_string;
504965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	}
505065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      else
505165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	new_argv[i] = (char *) string;
505265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    }
505365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  new_argv[argc] = NULL;
505465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
505565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  return new_argv;
505665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
505765de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEOF
505865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		;;
505965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    esac
506065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
506165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich            cat <<"EOF"
506265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichvoid lt_dump_script (FILE* f)
506365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
506465de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEOF
506565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_emit_wrapper yes |
506665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      $SED -n -e '
506765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichs/^\(.\{79\}\)\(..*\)/\1\
506865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich\2/
506965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichh
507065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichs/\([\\"]\)/\\\1/g
507165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichs/$/\\n/
507265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichs/\([^\n]*\).*/  fputs ("\1", f);/p
507365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichg
507465de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichD'
507565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich            cat <<"EOF"
507665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
507765de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEOF
507865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
507965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# end: func_emit_cwrapperexe_src
508065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
508165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_win32_import_lib_p ARG
508265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# True if ARG is an import lib, as indicated by $file_magic_cmd
508365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_win32_import_lib_p ()
508465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
508565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    $opt_debug
508665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in
508765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    *import*) : ;;
508865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    *) false ;;
508965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    esac
509065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
509165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
509265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_mode_link arg...
509365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_mode_link ()
509465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
509565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    $opt_debug
509665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    case $host in
509765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
509865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # It is impossible to link a dll without this setting, and
509965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # we shouldn't force the makefile maintainer to figure out
510065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # which system we are compiling for in order to pass an extra
510165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # flag for every libtool invocation.
510265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # allow_undefined=no
510365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
510465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # FIXME: Unfortunately, there are problems with the above when trying
510565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # to make a dll which has undefined symbols, in which case not
510665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # even a static library is built.  For now, we need to specify
510765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # -no-undefined on the libtool link line when we can be certain
510865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # that all symbols are satisfied, otherwise we get a static library.
510965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      allow_undefined=yes
511065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      ;;
511165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    *)
511265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      allow_undefined=yes
511365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      ;;
511465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    esac
511565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    libtool_args=$nonopt
511665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    base_compile="$nonopt $@"
511765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    compile_command=$nonopt
511865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    finalize_command=$nonopt
511965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
512065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    compile_rpath=
512165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    finalize_rpath=
512265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    compile_shlibpath=
512365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    finalize_shlibpath=
512465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    convenience=
512565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    old_convenience=
512665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    deplibs=
512765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    old_deplibs=
512865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    compiler_flags=
512965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    linker_flags=
513065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    dllsearchpath=
513165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    lib_search_path=`pwd`
513265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    inst_prefix_dir=
513365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    new_inherited_linker_flags=
513465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
513565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    avoid_version=no
513665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    bindir=
513765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    dlfiles=
513865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    dlprefiles=
513965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    dlself=no
514065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    export_dynamic=no
514165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    export_symbols=
514265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    export_symbols_regex=
514365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    generated=
514465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    libobjs=
514565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    ltlibs=
514665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    module=no
514765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    no_install=no
514865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    objs=
514965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    non_pic_objects=
515065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    precious_files_regex=
515165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    prefer_static_libs=no
515265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    preload=no
515365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    prev=
515465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    prevarg=
515565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    release=
515665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    rpath=
515765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    xrpath=
515865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    perm_rpath=
515965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    temp_rpath=
516065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    thread_safe=no
516165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    vinfo=
516265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    vinfo_number=no
516365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    weak_libs=
516465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    single_module="${wl}-single_module"
516565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_infer_tag $base_compile
516665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
516765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # We need to know -static, to get the right output filenames.
516865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    for arg
516965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    do
517065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      case $arg in
517165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      -shared)
517265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	test "$build_libtool_libs" != yes && \
517365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_fatal_configuration "can not build a shared library"
517465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	build_old_libs=no
517565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	break
517665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
517765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      -all-static | -static | -static-libtool-libs)
517865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	case $arg in
517965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	-all-static)
518065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
518165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_warning "complete static linking is impossible in this configuration"
518265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
518365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test -n "$link_static_flag"; then
518465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    dlopen_self=$dlopen_self_static
518565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
518665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  prefer_static_libs=yes
518765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
518865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	-static)
518965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
519065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    dlopen_self=$dlopen_self_static
519165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
519265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  prefer_static_libs=built
519365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
519465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	-static-libtool-libs)
519565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
519665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    dlopen_self=$dlopen_self_static
519765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
519865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  prefer_static_libs=yes
519965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
520065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	esac
520165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	build_libtool_libs=no
520265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	build_old_libs=yes
520365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	break
520465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
520565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      esac
520665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    done
520765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
520865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # See if our shared archives depend on static archives.
520965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
521065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
521165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # Go through the arguments, transforming them on the way.
521265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    while test "$#" -gt 0; do
521365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      arg="$1"
521465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      shift
521565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_quote_for_eval "$arg"
521665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      qarg=$func_quote_for_eval_unquoted_result
521765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_append libtool_args " $func_quote_for_eval_result"
521865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
521965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # If the previous option needs an argument, assign it.
522065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test -n "$prev"; then
522165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	case $prev in
522265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	output)
522365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_append compile_command " @OUTPUT@"
522465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_append finalize_command " @OUTPUT@"
522565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
522665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	esac
522765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
522865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	case $prev in
522965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	bindir)
523065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  bindir="$arg"
523165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  prev=
523265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  continue
523365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
523465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	dlfiles|dlprefiles)
523565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test "$preload" = no; then
523665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # Add the symbol object into the linking commands.
523765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_append compile_command " @SYMFILE@"
523865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_append finalize_command " @SYMFILE@"
523965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    preload=yes
524065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
524165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  case $arg in
524265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *.la | *.lo) ;;  # We handle these cases below.
524365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  force)
524465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    if test "$dlself" = no; then
524565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      dlself=needless
524665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      export_dynamic=yes
524765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    fi
524865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    prev=
524965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    continue
525065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    ;;
525165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  self)
525265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    if test "$prev" = dlprefiles; then
525365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      dlself=yes
525465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
525565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      dlself=yes
525665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    else
525765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      dlself=needless
525865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      export_dynamic=yes
525965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    fi
526065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    prev=
526165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    continue
526265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    ;;
526365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *)
526465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    if test "$prev" = dlfiles; then
526565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      func_append dlfiles " $arg"
526665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    else
526765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      func_append dlprefiles " $arg"
526865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    fi
526965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    prev=
527065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    continue
527165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    ;;
527265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  esac
527365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
527465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	expsyms)
527565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  export_symbols="$arg"
527665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  test -f "$arg" \
527765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    || func_fatal_error "symbol file \`$arg' does not exist"
527865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  prev=
527965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  continue
528065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
528165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	expsyms_regex)
528265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  export_symbols_regex="$arg"
528365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  prev=
528465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  continue
528565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
528665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	framework)
528765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  case $host in
528865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    *-*-darwin*)
528965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      case "$deplibs " in
529065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		*" $qarg.ltframework "*) ;;
529165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		*) func_append deplibs " $qarg.ltframework" # this is fixed later
529265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		   ;;
529365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      esac
529465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      ;;
529565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  esac
529665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  prev=
529765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  continue
529865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
529965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	inst_prefix)
530065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  inst_prefix_dir="$arg"
530165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  prev=
530265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  continue
530365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
530465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	objectlist)
530565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test -f "$arg"; then
530665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    save_arg=$arg
530765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    moreargs=
530865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    for fil in `cat "$save_arg"`
530965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    do
531065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#	      func_append moreargs " $fil"
531165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      arg=$fil
531265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # A libtool-controlled object.
531365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
531465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # Check to see that this really is a libtool object.
531565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      if func_lalib_unsafe_p "$arg"; then
531665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		pic_object=
531765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		non_pic_object=
531865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
531965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		# Read the .lo file
532065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		func_source "$arg"
532165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
532265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		if test -z "$pic_object" ||
532365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		   test -z "$non_pic_object" ||
532465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		   test "$pic_object" = none &&
532565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		   test "$non_pic_object" = none; then
532665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  func_fatal_error "cannot find name of object for \`$arg'"
532765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		fi
532865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
532965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		# Extract subdirectory from the argument.
533065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		func_dirname "$arg" "/" ""
533165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		xdir="$func_dirname_result"
533265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
533365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		if test "$pic_object" != none; then
533465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  # Prepend the subdirectory the object is found in.
533565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  pic_object="$xdir$pic_object"
533665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
533765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  if test "$prev" = dlfiles; then
533865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
533965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		      func_append dlfiles " $pic_object"
534065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		      prev=
534165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		      continue
534265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    else
534365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		      # If libtool objects are unsupported, then we need to preload.
534465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		      prev=dlprefiles
534565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    fi
534665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  fi
534765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
534865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  # CHECK ME:  I think I busted this.  -Ossama
534965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  if test "$prev" = dlprefiles; then
535065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    # Preload the old-style object.
535165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    func_append dlprefiles " $pic_object"
535265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    prev=
535365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  fi
535465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
535565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  # A PIC object.
535665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  func_append libobjs " $pic_object"
535765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  arg="$pic_object"
535865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		fi
535965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
536065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		# Non-PIC object.
536165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		if test "$non_pic_object" != none; then
536265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  # Prepend the subdirectory the object is found in.
536365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  non_pic_object="$xdir$non_pic_object"
536465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
536565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  # A standard non-PIC object
536665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  func_append non_pic_objects " $non_pic_object"
536765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  if test -z "$pic_object" || test "$pic_object" = none ; then
536865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    arg="$non_pic_object"
536965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  fi
537065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		else
537165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  # If the PIC object exists, use it instead.
537265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  # $xdir was prepended to $pic_object above.
537365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  non_pic_object="$pic_object"
537465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  func_append non_pic_objects " $non_pic_object"
537565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		fi
537665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      else
537765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		# Only an error if not doing a dry-run.
537865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		if $opt_dry_run; then
537965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  # Extract subdirectory from the argument.
538065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  func_dirname "$arg" "/" ""
538165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  xdir="$func_dirname_result"
538265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
538365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  func_lo2o "$arg"
538465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  pic_object=$xdir$objdir/$func_lo2o_result
538565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  non_pic_object=$xdir$func_lo2o_result
538665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  func_append libobjs " $pic_object"
538765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  func_append non_pic_objects " $non_pic_object"
538865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	        else
538965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  func_fatal_error "\`$arg' is not a valid libtool object"
539065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		fi
539165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      fi
539265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    done
539365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  else
539465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_fatal_error "link input file \`$arg' does not exist"
539565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
539665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  arg=$save_arg
539765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  prev=
539865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  continue
539965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
540065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	precious_regex)
540165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  precious_files_regex="$arg"
540265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  prev=
540365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  continue
540465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
540565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	release)
540665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  release="-$arg"
540765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  prev=
540865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  continue
540965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
541065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	rpath | xrpath)
541165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # We need an absolute path.
541265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  case $arg in
541365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  [\\/]* | [A-Za-z]:[\\/]*) ;;
541465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *)
541565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_fatal_error "only absolute run-paths are allowed"
541665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    ;;
541765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  esac
541865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test "$prev" = rpath; then
541965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    case "$rpath " in
542065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    *" $arg "*) ;;
542165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    *) func_append rpath " $arg" ;;
542265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    esac
542365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  else
542465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    case "$xrpath " in
542565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    *" $arg "*) ;;
542665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    *) func_append xrpath " $arg" ;;
542765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    esac
542865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
542965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  prev=
543065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  continue
543165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
543265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	shrext)
543365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  shrext_cmds="$arg"
543465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  prev=
543565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  continue
543665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
543765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	weak)
543865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_append weak_libs " $arg"
543965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  prev=
544065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  continue
544165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
544265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	xcclinker)
544365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_append linker_flags " $qarg"
544465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_append compiler_flags " $qarg"
544565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  prev=
544665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_append compile_command " $qarg"
544765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_append finalize_command " $qarg"
544865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  continue
544965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
545065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	xcompiler)
545165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_append compiler_flags " $qarg"
545265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  prev=
545365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_append compile_command " $qarg"
545465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_append finalize_command " $qarg"
545565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  continue
545665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
545765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	xlinker)
545865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_append linker_flags " $qarg"
545965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_append compiler_flags " $wl$qarg"
546065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  prev=
546165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_append compile_command " $wl$qarg"
546265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_append finalize_command " $wl$qarg"
546365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  continue
546465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
546565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	*)
546665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  eval "$prev=\"\$arg\""
546765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  prev=
546865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  continue
546965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
547065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	esac
547165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi # test -n "$prev"
547265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
547365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      prevarg="$arg"
547465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
547565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      case $arg in
547665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      -all-static)
547765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test -n "$link_static_flag"; then
547865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # See comment for -static flag below, for more details.
547965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_append compile_command " $link_static_flag"
548065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_append finalize_command " $link_static_flag"
548165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
548265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	continue
548365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
548465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
548565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      -allow-undefined)
548665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# FIXME: remove this flag sometime in the future.
548765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_fatal_error "\`-allow-undefined' must not be used because it is the default"
548865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
548965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
549065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      -avoid-version)
549165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	avoid_version=yes
549265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	continue
549365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
549465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
549565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      -bindir)
549665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	prev=bindir
549765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	continue
549865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
549965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
550065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      -dlopen)
550165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	prev=dlfiles
550265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	continue
550365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
550465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
550565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      -dlpreopen)
550665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	prev=dlprefiles
550765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	continue
550865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
550965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
551065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      -export-dynamic)
551165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	export_dynamic=yes
551265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	continue
551365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
551465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
551565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      -export-symbols | -export-symbols-regex)
551665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
551765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_fatal_error "more than one -exported-symbols argument is not allowed"
551865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
551965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test "X$arg" = "X-export-symbols"; then
552065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  prev=expsyms
552165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	else
552265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  prev=expsyms_regex
552365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
552465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	continue
552565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
552665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
552765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      -framework)
552865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	prev=framework
552965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	continue
553065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
553165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
553265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      -inst-prefix-dir)
553365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	prev=inst_prefix
553465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	continue
553565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
553665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
553765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
553865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # so, if we see these flags be careful not to treat them like -L
553965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      -L[A-Z][A-Z]*:*)
554065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	case $with_gcc/$host in
554165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	no/*-*-irix* | /*-*-irix*)
554265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_append compile_command " $arg"
554365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_append finalize_command " $arg"
554465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
554565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	esac
554665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	continue
554765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
554865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
554965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      -L*)
555065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_stripname "-L" '' "$arg"
555165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test -z "$func_stripname_result"; then
555265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test "$#" -gt 0; then
555365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_fatal_error "require no space between \`-L' and \`$1'"
555465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  else
555565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_fatal_error "need path for \`-L' option"
555665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
555765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
555865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_resolve_sysroot "$func_stripname_result"
555965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	dir=$func_resolve_sysroot_result
556065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# We need an absolute path.
556165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	case $dir in
556265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	[\\/]* | [A-Za-z]:[\\/]*) ;;
556365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	*)
556465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  absdir=`cd "$dir" && pwd`
556565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  test -z "$absdir" && \
556665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_fatal_error "cannot determine absolute directory name of \`$dir'"
556765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  dir="$absdir"
556865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
556965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	esac
557065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	case "$deplibs " in
557165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	*" -L$dir "* | *" $arg "*)
557265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # Will only happen for absolute or sysroot arguments
557365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
557465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	*)
557565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # Preserve sysroot, but never include relative directories
557665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  case $dir in
557765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;;
557865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    *) func_append deplibs " -L$dir" ;;
557965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  esac
558065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_append lib_search_path " $dir"
558165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
558265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	esac
558365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	case $host in
558465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
558565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'`
558665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  case :$dllsearchpath: in
558765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *":$dir:"*) ;;
558865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ::) dllsearchpath=$dir;;
558965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *) func_append dllsearchpath ":$dir";;
559065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  esac
559165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  case :$dllsearchpath: in
559265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *":$testbindir:"*) ;;
559365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ::) dllsearchpath=$testbindir;;
559465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *) func_append dllsearchpath ":$testbindir";;
559565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  esac
559665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
559765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	esac
559865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	continue
559965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
560065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
560165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      -l*)
560265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
560365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  case $host in
560465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*)
560565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # These systems don't actually have a C or math library (as such)
560665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    continue
560765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    ;;
560865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *-*-os2*)
560965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # These systems don't actually have a C library (as such)
561065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    test "X$arg" = "X-lc" && continue
561165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    ;;
561265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
561365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # Do not include libc due to us having libc/libc_r.
561465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    test "X$arg" = "X-lc" && continue
561565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    ;;
561665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *-*-rhapsody* | *-*-darwin1.[012])
561765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # Rhapsody C and math libraries are in the System framework
561865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_append deplibs " System.ltframework"
561965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    continue
562065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    ;;
562165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *-*-sco3.2v5* | *-*-sco5v6*)
562265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # Causes problems with __ctype
562365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    test "X$arg" = "X-lc" && continue
562465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    ;;
562565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
562665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # Compiler inserts libc in the correct place for threads to work
562765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    test "X$arg" = "X-lc" && continue
562865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    ;;
562965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  esac
563065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	elif test "X$arg" = "X-lc_r"; then
563165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	 case $host in
563265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
563365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	   # Do not include libc_r directly, use -pthread flag.
563465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	   continue
563565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	   ;;
563665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	 esac
563765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
563865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_append deplibs " $arg"
563965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	continue
564065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
564165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
564265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      -module)
564365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	module=yes
564465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	continue
564565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
564665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
564765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Tru64 UNIX uses -model [arg] to determine the layout of C++
564865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # classes, name mangling, and exception handling.
564965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Darwin uses the -arch flag to determine output architecture.
565065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      -model|-arch|-isysroot|--sysroot)
565165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_append compiler_flags " $arg"
565265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_append compile_command " $arg"
565365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_append finalize_command " $arg"
565465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	prev=xcompiler
565565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	continue
565665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
565765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
565865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
565965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
566065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_append compiler_flags " $arg"
566165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_append compile_command " $arg"
566265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_append finalize_command " $arg"
566365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	case "$new_inherited_linker_flags " in
566465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    *" $arg "*) ;;
566565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    * ) func_append new_inherited_linker_flags " $arg" ;;
566665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	esac
566765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	continue
566865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
566965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
567065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      -multi_module)
567165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	single_module="${wl}-multi_module"
567265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	continue
567365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
567465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
567565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      -no-fast-install)
567665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fast_install=no
567765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	continue
567865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
567965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
568065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      -no-install)
568165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	case $host in
568265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
568365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # The PATH hackery in wrapper scripts is required on Windows
568465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # and Darwin in order for the loader to find any dlls it needs.
568565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_warning "\`-no-install' is ignored for $host"
568665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_warning "assuming \`-no-fast-install' instead"
568765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fast_install=no
568865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
568965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	*) no_install=yes ;;
569065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	esac
569165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	continue
569265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
569365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
569465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      -no-undefined)
569565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	allow_undefined=no
569665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	continue
569765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
569865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
569965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      -objectlist)
570065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	prev=objectlist
570165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	continue
570265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
570365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
570465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      -o) prev=output ;;
570565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
570665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      -precious-files-regex)
570765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	prev=precious_regex
570865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	continue
570965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
571065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
571165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      -release)
571265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	prev=release
571365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	continue
571465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
571565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
571665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      -rpath)
571765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	prev=rpath
571865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	continue
571965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
572065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
572165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      -R)
572265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	prev=xrpath
572365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	continue
572465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
572565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
572665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      -R*)
572765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_stripname '-R' '' "$arg"
572865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	dir=$func_stripname_result
572965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# We need an absolute path.
573065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	case $dir in
573165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	[\\/]* | [A-Za-z]:[\\/]*) ;;
573265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	=*)
573365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_stripname '=' '' "$dir"
573465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  dir=$lt_sysroot$func_stripname_result
573565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
573665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	*)
573765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_fatal_error "only absolute run-paths are allowed"
573865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
573965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	esac
574065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	case "$xrpath " in
574165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	*" $dir "*) ;;
574265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	*) func_append xrpath " $dir" ;;
574365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	esac
574465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	continue
574565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
574665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
574765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      -shared)
574865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# The effects of -shared are defined in a previous loop.
574965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	continue
575065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
575165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
575265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      -shrext)
575365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	prev=shrext
575465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	continue
575565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
575665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
575765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      -static | -static-libtool-libs)
575865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# The effects of -static are defined in a previous loop.
575965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# We used to do the same as -all-static on platforms that
576065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# didn't have a PIC flag, but the assumption that the effects
576165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# would be equivalent was wrong.  It would break on at least
576265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Digital Unix and AIX.
576365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	continue
576465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
576565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
576665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      -thread-safe)
576765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	thread_safe=yes
576865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	continue
576965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
577065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
577165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      -version-info)
577265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	prev=vinfo
577365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	continue
577465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
577565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
577665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      -version-number)
577765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	prev=vinfo
577865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	vinfo_number=yes
577965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	continue
578065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
578165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
578265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      -weak)
578365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        prev=weak
578465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	continue
578565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
578665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
578765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      -Wc,*)
578865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_stripname '-Wc,' '' "$arg"
578965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	args=$func_stripname_result
579065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	arg=
579165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	save_ifs="$IFS"; IFS=','
579265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	for flag in $args; do
579365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  IFS="$save_ifs"
579465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich          func_quote_for_eval "$flag"
579565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_append arg " $func_quote_for_eval_result"
579665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_append compiler_flags " $func_quote_for_eval_result"
579765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	done
579865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	IFS="$save_ifs"
579965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_stripname ' ' '' "$arg"
580065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	arg=$func_stripname_result
580165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
580265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
580365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      -Wl,*)
580465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_stripname '-Wl,' '' "$arg"
580565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	args=$func_stripname_result
580665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	arg=
580765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	save_ifs="$IFS"; IFS=','
580865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	for flag in $args; do
580965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  IFS="$save_ifs"
581065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich          func_quote_for_eval "$flag"
581165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_append arg " $wl$func_quote_for_eval_result"
581265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_append compiler_flags " $wl$func_quote_for_eval_result"
581365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_append linker_flags " $func_quote_for_eval_result"
581465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	done
581565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	IFS="$save_ifs"
581665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_stripname ' ' '' "$arg"
581765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	arg=$func_stripname_result
581865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
581965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
582065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      -Xcompiler)
582165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	prev=xcompiler
582265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	continue
582365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
582465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
582565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      -Xlinker)
582665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	prev=xlinker
582765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	continue
582865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
582965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
583065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      -XCClinker)
583165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	prev=xcclinker
583265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	continue
583365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
583465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
583565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # -msg_* for osf cc
583665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      -msg_*)
583765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_quote_for_eval "$arg"
583865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	arg="$func_quote_for_eval_result"
583965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
584065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
584165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Flags to be passed through unchanged, with rationale:
584265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # -64, -mips[0-9]      enable 64-bit mode for the SGI compiler
584365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # -r[0-9][0-9]*        specify processor for the SGI compiler
584465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler
584565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # +DA*, +DD*           enable 64-bit mode for the HP compiler
584665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # -q*                  compiler args for the IBM compiler
584765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # -m*, -t[45]*, -txscale* architecture-specific flags for GCC
584865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # -F/path              path to uninstalled frameworks, gcc on darwin
584965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # -p, -pg, --coverage, -fprofile-*  profiling flags for GCC
585065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # @file                GCC response files
585165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # -tp=*                Portland pgcc target processor selection
585265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # --sysroot=*          for sysroot support
585365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
585465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
585565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
585665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      -O*|-flto*|-fwhopr*|-fuse-linker-plugin)
585765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        func_quote_for_eval "$arg"
585865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	arg="$func_quote_for_eval_result"
585965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        func_append compile_command " $arg"
586065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        func_append finalize_command " $arg"
586165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        func_append compiler_flags " $arg"
586265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        continue
586365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        ;;
586465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
586565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Some other compiler flag.
586665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      -* | +*)
586765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        func_quote_for_eval "$arg"
586865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	arg="$func_quote_for_eval_result"
586965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
587065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
587165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      *.$objext)
587265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# A standard object.
587365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_append objs " $arg"
587465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
587565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
587665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      *.lo)
587765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# A libtool-controlled object.
587865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
587965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Check to see that this really is a libtool object.
588065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if func_lalib_unsafe_p "$arg"; then
588165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  pic_object=
588265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  non_pic_object=
588365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
588465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # Read the .lo file
588565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_source "$arg"
588665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
588765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test -z "$pic_object" ||
588865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	     test -z "$non_pic_object" ||
588965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	     test "$pic_object" = none &&
589065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	     test "$non_pic_object" = none; then
589165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_fatal_error "cannot find name of object for \`$arg'"
589265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
589365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
589465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # Extract subdirectory from the argument.
589565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_dirname "$arg" "/" ""
589665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  xdir="$func_dirname_result"
589765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
589865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test "$pic_object" != none; then
589965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # Prepend the subdirectory the object is found in.
590065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    pic_object="$xdir$pic_object"
590165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
590265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    if test "$prev" = dlfiles; then
590365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
590465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		func_append dlfiles " $pic_object"
590565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		prev=
590665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		continue
590765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      else
590865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		# If libtool objects are unsupported, then we need to preload.
590965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		prev=dlprefiles
591065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      fi
591165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    fi
591265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
591365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # CHECK ME:  I think I busted this.  -Ossama
591465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    if test "$prev" = dlprefiles; then
591565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # Preload the old-style object.
591665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      func_append dlprefiles " $pic_object"
591765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      prev=
591865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    fi
591965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
592065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # A PIC object.
592165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_append libobjs " $pic_object"
592265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    arg="$pic_object"
592365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
592465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
592565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # Non-PIC object.
592665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test "$non_pic_object" != none; then
592765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # Prepend the subdirectory the object is found in.
592865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    non_pic_object="$xdir$non_pic_object"
592965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
593065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # A standard non-PIC object
593165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_append non_pic_objects " $non_pic_object"
593265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    if test -z "$pic_object" || test "$pic_object" = none ; then
593365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      arg="$non_pic_object"
593465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    fi
593565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  else
593665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # If the PIC object exists, use it instead.
593765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # $xdir was prepended to $pic_object above.
593865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    non_pic_object="$pic_object"
593965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_append non_pic_objects " $non_pic_object"
594065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
594165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	else
594265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # Only an error if not doing a dry-run.
594365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if $opt_dry_run; then
594465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # Extract subdirectory from the argument.
594565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_dirname "$arg" "/" ""
594665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    xdir="$func_dirname_result"
594765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
594865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_lo2o "$arg"
594965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    pic_object=$xdir$objdir/$func_lo2o_result
595065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    non_pic_object=$xdir$func_lo2o_result
595165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_append libobjs " $pic_object"
595265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_append non_pic_objects " $non_pic_object"
595365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  else
595465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_fatal_error "\`$arg' is not a valid libtool object"
595565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
595665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
595765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
595865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
595965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      *.$libext)
596065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# An archive.
596165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_append deplibs " $arg"
596265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_append old_deplibs " $arg"
596365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	continue
596465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
596565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
596665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      *.la)
596765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# A libtool-controlled library.
596865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
596965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_resolve_sysroot "$arg"
597065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test "$prev" = dlfiles; then
597165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # This library was specified with -dlopen.
597265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_append dlfiles " $func_resolve_sysroot_result"
597365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  prev=
597465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	elif test "$prev" = dlprefiles; then
597565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # The library was specified with -dlpreopen.
597665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_append dlprefiles " $func_resolve_sysroot_result"
597765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  prev=
597865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	else
597965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_append deplibs " $func_resolve_sysroot_result"
598065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
598165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	continue
598265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
598365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
598465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Some other compiler argument.
598565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      *)
598665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Unknown arguments in both finalize_command and compile_command need
598765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# to be aesthetically quoted because they are evaled later.
598865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_quote_for_eval "$arg"
598965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	arg="$func_quote_for_eval_result"
599065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
599165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      esac # arg
599265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
599365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Now actually substitute the argument into the commands.
599465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test -n "$arg"; then
599565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_append compile_command " $arg"
599665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_append finalize_command " $arg"
599765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
599865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    done # argument parsing loop
599965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
600065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    test -n "$prev" && \
600165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_fatal_help "the \`$prevarg' option requires an argument"
600265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
600365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
600465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      eval arg=\"$export_dynamic_flag_spec\"
600565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_append compile_command " $arg"
600665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_append finalize_command " $arg"
600765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    fi
600865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
600965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    oldlibs=
601065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # calculate the name of the file, without its directory
601165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_basename "$output"
601265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    outputname="$func_basename_result"
601365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    libobjs_save="$libobjs"
601465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
601565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    if test -n "$shlibpath_var"; then
601665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # get the directories listed in $shlibpath_var
601765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\`
601865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    else
601965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      shlib_search_path=
602065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    fi
602165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
602265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
602365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
602465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_dirname "$output" "/" ""
602565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    output_objdir="$func_dirname_result$objdir"
602665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_to_tool_file "$output_objdir/"
602765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    tool_output_objdir=$func_to_tool_file_result
602865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # Create the object directory.
602965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_mkdir_p "$output_objdir"
603065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
603165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # Determine the type of output
603265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    case $output in
603365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    "")
603465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_fatal_help "you must specify an output file"
603565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      ;;
603665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    *.$libext) linkmode=oldlib ;;
603765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    *.lo | *.$objext) linkmode=obj ;;
603865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    *.la) linkmode=lib ;;
603965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    *) linkmode=prog ;; # Anything else should be a program.
604065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    esac
604165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
604265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    specialdeplibs=
604365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
604465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    libs=
604565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # Find all interdependent deplibs by searching for libraries
604665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # that are linked more than once (e.g. -la -lb -la)
604765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    for deplib in $deplibs; do
604865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if $opt_preserve_dup_deps ; then
604965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	case "$libs " in
605065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	*" $deplib "*) func_append specialdeplibs " $deplib" ;;
605165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	esac
605265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
605365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_append libs " $deplib"
605465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    done
605565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
605665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    if test "$linkmode" = lib; then
605765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      libs="$predeps $libs $compiler_lib_search_path $postdeps"
605865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
605965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Compute libraries that are listed more than once in $predeps
606065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # $postdeps and mark them as special (i.e., whose duplicates are
606165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # not to be eliminated).
606265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      pre_post_deps=
606365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if $opt_duplicate_compiler_generated_deps; then
606465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	for pre_post_dep in $predeps $postdeps; do
606565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  case "$pre_post_deps " in
606665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;;
606765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  esac
606865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_append pre_post_deps " $pre_post_dep"
606965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	done
607065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
607165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      pre_post_deps=
607265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    fi
607365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
607465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    deplibs=
607565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    newdependency_libs=
607665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    newlib_search_path=
607765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    need_relink=no # whether we're linking any uninstalled libtool libraries
607865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    notinst_deplibs= # not-installed libtool libraries
607965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    notinst_path= # paths that contain not-installed libtool libraries
608065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
608165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    case $linkmode in
608265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    lib)
608365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	passes="conv dlpreopen link"
608465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	for file in $dlfiles $dlprefiles; do
608565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  case $file in
608665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *.la) ;;
608765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *)
608865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
608965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    ;;
609065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  esac
609165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	done
609265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
609365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    prog)
609465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	compile_deplibs=
609565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	finalize_deplibs=
609665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	alldeplibs=no
609765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	newdlfiles=
609865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	newdlprefiles=
609965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	passes="conv scan dlopen dlpreopen link"
610065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
610165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    *)  passes="conv"
610265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
610365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    esac
610465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
610565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    for pass in $passes; do
610665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # The preopen pass in lib mode reverses $deplibs; put it back here
610765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # so that -L comes before libs that need it for instance...
610865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test "$linkmode,$pass" = "lib,link"; then
610965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	## FIXME: Find the place where the list is rebuilt in the wrong
611065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	##        order, and fix it there properly
611165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        tmp_deplibs=
611265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	for deplib in $deplibs; do
611365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  tmp_deplibs="$deplib $tmp_deplibs"
611465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	done
611565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	deplibs="$tmp_deplibs"
611665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
611765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
611865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test "$linkmode,$pass" = "lib,link" ||
611965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	 test "$linkmode,$pass" = "prog,scan"; then
612065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	libs="$deplibs"
612165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	deplibs=
612265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
612365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test "$linkmode" = prog; then
612465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	case $pass in
612565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	dlopen) libs="$dlfiles" ;;
612665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	dlpreopen) libs="$dlprefiles" ;;
612765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
612865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	esac
612965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
613065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test "$linkmode,$pass" = "lib,dlpreopen"; then
613165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Collect and forward deplibs of preopened libtool libs
613265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	for lib in $dlprefiles; do
613365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # Ignore non-libtool-libs
613465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  dependency_libs=
613565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_resolve_sysroot "$lib"
613665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  case $lib in
613765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *.la)	func_source "$func_resolve_sysroot_result" ;;
613865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  esac
613965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
614065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # Collect preopened libtool deplibs, except any this library
614165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # has declared as weak libs
614265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  for deplib in $dependency_libs; do
614365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_basename "$deplib"
614465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich            deplib_base=$func_basename_result
614565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    case " $weak_libs " in
614665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    *" $deplib_base "*) ;;
614765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    *) func_append deplibs " $deplib" ;;
614865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    esac
614965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  done
615065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	done
615165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	libs="$dlprefiles"
615265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
615365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test "$pass" = dlopen; then
615465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Collect dlpreopened libraries
615565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	save_deplibs="$deplibs"
615665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	deplibs=
615765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
615865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
615965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      for deplib in $libs; do
616065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	lib=
616165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	found=no
616265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	case $deplib in
616365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
616465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
616565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test "$linkmode,$pass" = "prog,link"; then
616665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    compile_deplibs="$deplib $compile_deplibs"
616765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    finalize_deplibs="$deplib $finalize_deplibs"
616865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  else
616965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_append compiler_flags " $deplib"
617065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    if test "$linkmode" = lib ; then
617165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		case "$new_inherited_linker_flags " in
617265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    *" $deplib "*) ;;
617365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    * ) func_append new_inherited_linker_flags " $deplib" ;;
617465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		esac
617565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    fi
617665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
617765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  continue
617865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
617965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	-l*)
618065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test "$linkmode" != lib && test "$linkmode" != prog; then
618165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_warning "\`-l' is ignored for archives/objects"
618265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    continue
618365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
618465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_stripname '-l' '' "$deplib"
618565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  name=$func_stripname_result
618665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test "$linkmode" = lib; then
618765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
618865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  else
618965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
619065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
619165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  for searchdir in $searchdirs; do
619265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    for search_ext in .la $std_shrext .so .a; do
619365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # Search the libtool library
619465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      lib="$searchdir/lib${name}${search_ext}"
619565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      if test -f "$lib"; then
619665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		if test "$search_ext" = ".la"; then
619765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  found=yes
619865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		else
619965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  found=no
620065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		fi
620165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		break 2
620265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      fi
620365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    done
620465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  done
620565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test "$found" != yes; then
620665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # deplib doesn't seem to be a libtool library
620765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    if test "$linkmode,$pass" = "prog,link"; then
620865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      compile_deplibs="$deplib $compile_deplibs"
620965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      finalize_deplibs="$deplib $finalize_deplibs"
621065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    else
621165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      deplibs="$deplib $deplibs"
621265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
621365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    fi
621465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    continue
621565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  else # deplib is a libtool library
621665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
621765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # We need to do some special things here, and not later.
621865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
621965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      case " $predeps $postdeps " in
622065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      *" $deplib "*)
622165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		if func_lalib_p "$lib"; then
622265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  library_names=
622365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  old_library=
622465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  func_source "$lib"
622565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  for l in $old_library $library_names; do
622665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    ll="$l"
622765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  done
622865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  if test "X$ll" = "X$old_library" ; then # only static version available
622965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    found=no
623065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    func_dirname "$lib" "" "."
623165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    ladir="$func_dirname_result"
623265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    lib=$ladir/$old_library
623365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    if test "$linkmode,$pass" = "prog,link"; then
623465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		      compile_deplibs="$deplib $compile_deplibs"
623565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		      finalize_deplibs="$deplib $finalize_deplibs"
623665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    else
623765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		      deplibs="$deplib $deplibs"
623865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
623965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    fi
624065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    continue
624165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  fi
624265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		fi
624365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		;;
624465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      *) ;;
624565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      esac
624665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    fi
624765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
624865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;; # -l
624965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	*.ltframework)
625065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test "$linkmode,$pass" = "prog,link"; then
625165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    compile_deplibs="$deplib $compile_deplibs"
625265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    finalize_deplibs="$deplib $finalize_deplibs"
625365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  else
625465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    deplibs="$deplib $deplibs"
625565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    if test "$linkmode" = lib ; then
625665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		case "$new_inherited_linker_flags " in
625765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    *" $deplib "*) ;;
625865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    * ) func_append new_inherited_linker_flags " $deplib" ;;
625965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		esac
626065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    fi
626165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
626265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  continue
626365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
626465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	-L*)
626565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  case $linkmode in
626665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  lib)
626765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    deplibs="$deplib $deplibs"
626865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    test "$pass" = conv && continue
626965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    newdependency_libs="$deplib $newdependency_libs"
627065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_stripname '-L' '' "$deplib"
627165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_resolve_sysroot "$func_stripname_result"
627265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_append newlib_search_path " $func_resolve_sysroot_result"
627365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    ;;
627465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  prog)
627565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    if test "$pass" = conv; then
627665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      deplibs="$deplib $deplibs"
627765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      continue
627865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    fi
627965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    if test "$pass" = scan; then
628065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      deplibs="$deplib $deplibs"
628165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    else
628265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      compile_deplibs="$deplib $compile_deplibs"
628365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      finalize_deplibs="$deplib $finalize_deplibs"
628465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    fi
628565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_stripname '-L' '' "$deplib"
628665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_resolve_sysroot "$func_stripname_result"
628765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_append newlib_search_path " $func_resolve_sysroot_result"
628865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    ;;
628965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *)
629065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_warning "\`-L' is ignored for archives/objects"
629165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    ;;
629265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  esac # linkmode
629365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  continue
629465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;; # -L
629565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	-R*)
629665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test "$pass" = link; then
629765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_stripname '-R' '' "$deplib"
629865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_resolve_sysroot "$func_stripname_result"
629965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    dir=$func_resolve_sysroot_result
630065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # Make sure the xrpath contains only unique directories.
630165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    case "$xrpath " in
630265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    *" $dir "*) ;;
630365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    *) func_append xrpath " $dir" ;;
630465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    esac
630565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
630665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  deplibs="$deplib $deplibs"
630765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  continue
630865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
630965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	*.la)
631065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_resolve_sysroot "$deplib"
631165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  lib=$func_resolve_sysroot_result
631265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
631365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	*.$libext)
631465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test "$pass" = conv; then
631565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    deplibs="$deplib $deplibs"
631665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    continue
631765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
631865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  case $linkmode in
631965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  lib)
632065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # Linking convenience modules into shared libraries is allowed,
632165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # but linking other static libraries is non-portable.
632265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    case " $dlpreconveniencelibs " in
632365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    *" $deplib "*) ;;
632465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    *)
632565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      valid_a_lib=no
632665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      case $deplibs_check_method in
632765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		match_pattern*)
632865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  set dummy $deplibs_check_method; shift
632965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
633065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \
633165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    | $EGREP "$match_pattern_regex" > /dev/null; then
633265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    valid_a_lib=yes
633365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  fi
633465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		;;
633565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		pass_all)
633665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  valid_a_lib=yes
633765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		;;
633865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      esac
633965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      if test "$valid_a_lib" != yes; then
634065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		echo
634165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		$ECHO "*** Warning: Trying to link with static lib archive $deplib."
634265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		echo "*** I have the capability to make that library automatically link in when"
634365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		echo "*** you link to this library.  But I can only do this if you have a"
634465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		echo "*** shared version of the library, which you do not appear to have"
634565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		echo "*** because the file extensions .$libext of this argument makes me believe"
634665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		echo "*** that it is just a static archive that I should not use here."
634765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      else
634865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		echo
634965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		$ECHO "*** Warning: Linking the shared library $output against the"
635065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		$ECHO "*** static library $deplib is not portable!"
635165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		deplibs="$deplib $deplibs"
635265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      fi
635365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      ;;
635465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    esac
635565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    continue
635665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    ;;
635765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  prog)
635865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    if test "$pass" != link; then
635965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      deplibs="$deplib $deplibs"
636065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    else
636165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      compile_deplibs="$deplib $compile_deplibs"
636265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      finalize_deplibs="$deplib $finalize_deplibs"
636365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    fi
636465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    continue
636565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    ;;
636665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  esac # linkmode
636765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;; # *.$libext
636865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	*.lo | *.$objext)
636965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test "$pass" = conv; then
637065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    deplibs="$deplib $deplibs"
637165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  elif test "$linkmode" = prog; then
637265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
637365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # If there is no dlopen support or we're linking statically,
637465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # we need to preload.
637565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      func_append newdlprefiles " $deplib"
637665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      compile_deplibs="$deplib $compile_deplibs"
637765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      finalize_deplibs="$deplib $finalize_deplibs"
637865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    else
637965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      func_append newdlfiles " $deplib"
638065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    fi
638165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
638265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  continue
638365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
638465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	%DEPLIBS%)
638565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  alldeplibs=yes
638665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  continue
638765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
638865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	esac # case $deplib
638965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
639065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test "$found" = yes || test -f "$lib"; then :
639165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	else
639265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
639365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
639465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
639565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Check to see that this really is a libtool archive.
639665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_lalib_unsafe_p "$lib" \
639765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  || func_fatal_error "\`$lib' is not a valid libtool archive"
639865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
639965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_dirname "$lib" "" "."
640065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	ladir="$func_dirname_result"
640165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
640265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	dlname=
640365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	dlopen=
640465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	dlpreopen=
640565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	libdir=
640665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	library_names=
640765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	old_library=
640865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	inherited_linker_flags=
640965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# If the library was installed with an old release of libtool,
641065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# it will not redefine variables installed, or shouldnotlink
641165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	installed=yes
641265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	shouldnotlink=no
641365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	avoidtemprpath=
641465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
641565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
641665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Read the .la file
641765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_source "$lib"
641865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
641965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Convert "-framework foo" to "foo.ltframework"
642065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test -n "$inherited_linker_flags"; then
642165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`
642265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
642365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    case " $new_inherited_linker_flags " in
642465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      *" $tmp_inherited_linker_flag "*) ;;
642565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";;
642665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    esac
642765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  done
642865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
642965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
643065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test "$linkmode,$pass" = "lib,link" ||
643165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	   test "$linkmode,$pass" = "prog,scan" ||
643265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then
643365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  test -n "$dlopen" && func_append dlfiles " $dlopen"
643465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen"
643565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
643665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
643765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test "$pass" = conv; then
643865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # Only check for convenience libraries
643965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  deplibs="$lib $deplibs"
644065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test -z "$libdir"; then
644165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    if test -z "$old_library"; then
644265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      func_fatal_error "cannot find name of link library for \`$lib'"
644365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    fi
644465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # It is a libtool convenience library, so add in its objects.
644565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_append convenience " $ladir/$objdir/$old_library"
644665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_append old_convenience " $ladir/$objdir/$old_library"
644765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
644865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_fatal_error "\`$lib' is not a convenience library"
644965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
645065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  tmp_libs=
645165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  for deplib in $dependency_libs; do
645265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    deplibs="$deplib $deplibs"
645365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    if $opt_preserve_dup_deps ; then
645465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      case "$tmp_libs " in
645565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      *" $deplib "*) func_append specialdeplibs " $deplib" ;;
645665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      esac
645765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    fi
645865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_append tmp_libs " $deplib"
645965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  done
646065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  continue
646165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi # $pass = conv
646265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
646365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
646465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Get the name of the library we link against.
646565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	linklib=
646665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test -n "$old_library" &&
646765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	   { test "$prefer_static_libs" = yes ||
646865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	     test "$prefer_static_libs,$installed" = "built,no"; }; then
646965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  linklib=$old_library
647065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	else
647165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  for l in $old_library $library_names; do
647265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    linklib="$l"
647365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  done
647465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
647565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test -z "$linklib"; then
647665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_fatal_error "cannot find name of link library for \`$lib'"
647765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
647865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
647965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# This library was specified with -dlopen.
648065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test "$pass" = dlopen; then
648165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test -z "$libdir"; then
648265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
648365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
648465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test -z "$dlname" ||
648565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	     test "$dlopen_support" != yes ||
648665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	     test "$build_libtool_libs" = no; then
648765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # If there is no dlname, no dlopen support or we're linking
648865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # statically, we need to preload.  We also need to preload any
648965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # dependent libraries so libltdl's deplib preloader doesn't
649065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # bomb out in the load deplibs phase.
649165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_append dlprefiles " $lib $dependency_libs"
649265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  else
649365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_append newdlfiles " $lib"
649465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
649565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  continue
649665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi # $pass = dlopen
649765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
649865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# We need an absolute path.
649965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	case $ladir in
650065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
650165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	*)
650265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  abs_ladir=`cd "$ladir" && pwd`
650365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test -z "$abs_ladir"; then
650465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_warning "cannot determine absolute directory name of \`$ladir'"
650565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_warning "passing it literally to the linker, although it might fail"
650665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    abs_ladir="$ladir"
650765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
650865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
650965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	esac
651065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_basename "$lib"
651165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	laname="$func_basename_result"
651265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
651365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Find the relevant object directory and library name.
651465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test "X$installed" = Xyes; then
651565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
651665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_warning "library \`$lib' was moved."
651765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    dir="$ladir"
651865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    absdir="$abs_ladir"
651965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    libdir="$abs_ladir"
652065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  else
652165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    dir="$lt_sysroot$libdir"
652265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    absdir="$lt_sysroot$libdir"
652365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
652465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
652565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	else
652665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
652765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    dir="$ladir"
652865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    absdir="$abs_ladir"
652965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # Remove this search path later
653065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_append notinst_path " $abs_ladir"
653165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  else
653265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    dir="$ladir/$objdir"
653365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    absdir="$abs_ladir/$objdir"
653465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # Remove this search path later
653565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_append notinst_path " $abs_ladir"
653665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
653765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi # $installed = yes
653865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_stripname 'lib' '.la' "$laname"
653965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	name=$func_stripname_result
654065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
654165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# This library was specified with -dlpreopen.
654265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test "$pass" = dlpreopen; then
654365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test -z "$libdir" && test "$linkmode" = prog; then
654465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
654565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
654665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  case "$host" in
654765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # special handling for platforms with PE-DLLs.
654865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    *cygwin* | *mingw* | *cegcc* )
654965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # Linker will automatically link against shared library if both
655065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # static and shared are present.  Therefore, ensure we extract
655165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # symbols from the import library if a shared library is present
655265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # (otherwise, the dlopen module name will be incorrect).  We do
655365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # this by putting the import library name into $newdlprefiles.
655465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # We recover the dlopen module name by 'saving' the la file
655565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # name in a special purpose variable, and (later) extracting the
655665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # dlname from the la file.
655765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      if test -n "$dlname"; then
655865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	        func_tr_sh "$dir/$linklib"
655965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	        eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname"
656065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	        func_append newdlprefiles " $dir/$linklib"
656165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      else
656265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	        func_append newdlprefiles " $dir/$old_library"
656365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	        # Keep a list of preopened convenience libraries to check
656465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	        # that they are being used correctly in the link pass.
656565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	        test -z "$libdir" && \
656665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	          func_append dlpreconveniencelibs " $dir/$old_library"
656765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      fi
656865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    ;;
656965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    * )
657065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # Prefer using a static library (so that no silly _DYNAMIC symbols
657165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # are required to link).
657265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      if test -n "$old_library"; then
657365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	        func_append newdlprefiles " $dir/$old_library"
657465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	        # Keep a list of preopened convenience libraries to check
657565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	        # that they are being used correctly in the link pass.
657665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	        test -z "$libdir" && \
657765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	          func_append dlpreconveniencelibs " $dir/$old_library"
657865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # Otherwise, use the dlname, so that lt_dlopen finds it.
657965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      elif test -n "$dlname"; then
658065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	        func_append newdlprefiles " $dir/$dlname"
658165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      else
658265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	        func_append newdlprefiles " $dir/$linklib"
658365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      fi
658465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    ;;
658565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  esac
658665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi # $pass = dlpreopen
658765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
658865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test -z "$libdir"; then
658965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # Link the convenience library
659065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test "$linkmode" = lib; then
659165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    deplibs="$dir/$old_library $deplibs"
659265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  elif test "$linkmode,$pass" = "prog,link"; then
659365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    compile_deplibs="$dir/$old_library $compile_deplibs"
659465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
659565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  else
659665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    deplibs="$lib $deplibs" # used for prog,scan pass
659765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
659865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  continue
659965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
660065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
660165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
660265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test "$linkmode" = prog && test "$pass" != link; then
660365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_append newlib_search_path " $ladir"
660465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  deplibs="$lib $deplibs"
660565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
660665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  linkalldeplibs=no
660765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
660865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	     test "$build_libtool_libs" = no; then
660965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    linkalldeplibs=yes
661065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
661165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
661265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  tmp_libs=
661365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  for deplib in $dependency_libs; do
661465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    case $deplib in
661565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    -L*) func_stripname '-L' '' "$deplib"
661665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	         func_resolve_sysroot "$func_stripname_result"
661765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	         func_append newlib_search_path " $func_resolve_sysroot_result"
661865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		 ;;
661965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    esac
662065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # Need to link against all dependency_libs?
662165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    if test "$linkalldeplibs" = yes; then
662265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      deplibs="$deplib $deplibs"
662365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    else
662465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # Need to hardcode shared library paths
662565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # or/and link against static libraries
662665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      newdependency_libs="$deplib $newdependency_libs"
662765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    fi
662865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    if $opt_preserve_dup_deps ; then
662965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      case "$tmp_libs " in
663065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      *" $deplib "*) func_append specialdeplibs " $deplib" ;;
663165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      esac
663265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    fi
663365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_append tmp_libs " $deplib"
663465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  done # for deplib
663565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  continue
663665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi # $linkmode = prog...
663765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
663865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test "$linkmode,$pass" = "prog,link"; then
663965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test -n "$library_names" &&
664065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	     { { test "$prefer_static_libs" = no ||
664165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	         test "$prefer_static_libs,$installed" = "built,yes"; } ||
664265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	       test -z "$old_library"; }; then
664365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # We need to hardcode the library path
664465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
664565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # Make sure the rpath contains only unique directories.
664665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      case "$temp_rpath:" in
664765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      *"$absdir:"*) ;;
664865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      *) func_append temp_rpath "$absdir:" ;;
664965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      esac
665065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    fi
665165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
665265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # Hardcode the library path.
665365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # Skip directories that are in the system default run-time
665465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # search path.
665565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    case " $sys_lib_dlsearch_path " in
665665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    *" $absdir "*) ;;
665765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    *)
665865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      case "$compile_rpath " in
665965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      *" $absdir "*) ;;
666065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      *) func_append compile_rpath " $absdir" ;;
666165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      esac
666265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      ;;
666365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    esac
666465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    case " $sys_lib_dlsearch_path " in
666565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    *" $libdir "*) ;;
666665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    *)
666765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      case "$finalize_rpath " in
666865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      *" $libdir "*) ;;
666965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      *) func_append finalize_rpath " $libdir" ;;
667065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      esac
667165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      ;;
667265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    esac
667365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi # $linkmode,$pass = prog,link...
667465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
667565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test "$alldeplibs" = yes &&
667665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	     { test "$deplibs_check_method" = pass_all ||
667765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	       { test "$build_libtool_libs" = yes &&
667865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		 test -n "$library_names"; }; }; then
667965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # We only need to search for static libraries
668065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    continue
668165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
668265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
668365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
668465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	link_static=no # Whether the deplib will be linked statically
668565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	use_static_libs=$prefer_static_libs
668665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test "$use_static_libs" = built && test "$installed" = yes; then
668765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  use_static_libs=no
668865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
668965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test -n "$library_names" &&
669065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	   { test "$use_static_libs" = no || test -z "$old_library"; }; then
669165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  case $host in
669265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *cygwin* | *mingw* | *cegcc*)
669365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # No point in relinking DLLs because paths are not encoded
669465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      func_append notinst_deplibs " $lib"
669565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      need_relink=no
669665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    ;;
669765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *)
669865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    if test "$installed" = no; then
669965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      func_append notinst_deplibs " $lib"
670065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      need_relink=yes
670165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    fi
670265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    ;;
670365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  esac
670465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # This is a shared library
670565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
670665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # Warn about portability, can't link against -module's on some
670765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # systems (darwin).  Don't bleat about dlopened modules though!
670865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  dlopenmodule=""
670965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  for dlpremoduletest in $dlprefiles; do
671065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    if test "X$dlpremoduletest" = "X$lib"; then
671165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      dlopenmodule="$dlpremoduletest"
671265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      break
671365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    fi
671465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  done
671565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
671665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    echo
671765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    if test "$linkmode" = prog; then
671865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      $ECHO "*** Warning: Linking the executable $output against the loadable module"
671965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    else
672065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      $ECHO "*** Warning: Linking the shared library $output against the loadable module"
672165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    fi
672265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    $ECHO "*** $linklib is not portable!"
672365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
672465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test "$linkmode" = lib &&
672565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	     test "$hardcode_into_libs" = yes; then
672665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # Hardcode the library path.
672765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # Skip directories that are in the system default run-time
672865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # search path.
672965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    case " $sys_lib_dlsearch_path " in
673065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    *" $absdir "*) ;;
673165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    *)
673265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      case "$compile_rpath " in
673365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      *" $absdir "*) ;;
673465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      *) func_append compile_rpath " $absdir" ;;
673565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      esac
673665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      ;;
673765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    esac
673865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    case " $sys_lib_dlsearch_path " in
673965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    *" $libdir "*) ;;
674065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    *)
674165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      case "$finalize_rpath " in
674265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      *" $libdir "*) ;;
674365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      *) func_append finalize_rpath " $libdir" ;;
674465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      esac
674565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      ;;
674665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    esac
674765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
674865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
674965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test -n "$old_archive_from_expsyms_cmds"; then
675065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # figure out the soname
675165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    set dummy $library_names
675265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    shift
675365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    realname="$1"
675465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    shift
675565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    libname=`eval "\\$ECHO \"$libname_spec\""`
675665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # use dlname if we got it. it's perfectly good, no?
675765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    if test -n "$dlname"; then
675865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      soname="$dlname"
675965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    elif test -n "$soname_spec"; then
676065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # bleh windows
676165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      case $host in
676265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      *cygwin* | mingw* | *cegcc*)
676365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	        func_arith $current - $age
676465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		major=$func_arith_result
676565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		versuffix="-$major"
676665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		;;
676765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      esac
676865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      eval soname=\"$soname_spec\"
676965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    else
677065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      soname="$realname"
677165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    fi
677265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
677365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # Make a new name for the extract_expsyms_cmds to use
677465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    soroot="$soname"
677565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_basename "$soroot"
677665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    soname="$func_basename_result"
677765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_stripname 'lib' '.dll' "$soname"
677865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    newlib=libimp-$func_stripname_result.a
677965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
678065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # If the library has no export list, then create one now
678165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    if test -f "$output_objdir/$soname-def"; then :
678265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    else
678365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      func_verbose "extracting exported symbol list from \`$soname'"
678465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
678565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    fi
678665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
678765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # Create $newlib
678865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    if test -f "$output_objdir/$newlib"; then :; else
678965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      func_verbose "generating import library for \`$soname'"
679065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
679165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    fi
679265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # make sure the library variables are pointing to the new library
679365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    dir=$output_objdir
679465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    linklib=$newlib
679565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi # test -n "$old_archive_from_expsyms_cmds"
679665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
679765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test "$linkmode" = prog || test "$opt_mode" != relink; then
679865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    add_shlibpath=
679965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    add_dir=
680065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    add=
680165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    lib_linked=yes
680265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    case $hardcode_action in
680365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    immediate | unsupported)
680465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      if test "$hardcode_direct" = no; then
680565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		add="$dir/$linklib"
680665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		case $host in
680765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
680865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  *-*-sysv4*uw2*) add_dir="-L$dir" ;;
680965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
681065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    *-*-unixware7*) add_dir="-L$dir" ;;
681165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  *-*-darwin* )
681265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    # if the lib is a (non-dlopened) module then we can not
681365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    # link against it, someone is ignoring the earlier warnings
681465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    if /usr/bin/file -L $add 2> /dev/null |
681565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			 $GREP ": [^:]* bundle" >/dev/null ; then
681665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		      if test "X$dlopenmodule" != "X$lib"; then
681765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			$ECHO "*** Warning: lib $linklib is a module, not a shared library"
681865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			if test -z "$old_library" ; then
681965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			  echo
682065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			  echo "*** And there doesn't seem to be a static archive available"
682165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			  echo "*** The link will probably fail, sorry"
682265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			else
682365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			  add="$dir/$old_library"
682465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			fi
682565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		      elif test -n "$old_library"; then
682665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			add="$dir/$old_library"
682765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		      fi
682865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    fi
682965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		esac
683065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      elif test "$hardcode_minus_L" = no; then
683165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		case $host in
683265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		*-*-sunos*) add_shlibpath="$dir" ;;
683365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		esac
683465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		add_dir="-L$dir"
683565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		add="-l$name"
683665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      elif test "$hardcode_shlibpath_var" = no; then
683765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		add_shlibpath="$dir"
683865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		add="-l$name"
683965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      else
684065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		lib_linked=no
684165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      fi
684265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      ;;
684365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    relink)
684465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      if test "$hardcode_direct" = yes &&
684565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	         test "$hardcode_direct_absolute" = no; then
684665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		add="$dir/$linklib"
684765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      elif test "$hardcode_minus_L" = yes; then
684865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		add_dir="-L$absdir"
684965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		# Try looking first in the location we're being installed to.
685065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		if test -n "$inst_prefix_dir"; then
685165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  case $libdir in
685265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    [\\/]*)
685365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		      func_append add_dir " -L$inst_prefix_dir$libdir"
685465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		      ;;
685565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  esac
685665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		fi
685765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		add="-l$name"
685865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      elif test "$hardcode_shlibpath_var" = yes; then
685965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		add_shlibpath="$dir"
686065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		add="-l$name"
686165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      else
686265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		lib_linked=no
686365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      fi
686465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      ;;
686565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    *) lib_linked=no ;;
686665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    esac
686765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
686865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    if test "$lib_linked" != yes; then
686965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      func_fatal_configuration "unsupported hardcode properties"
687065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    fi
687165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
687265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    if test -n "$add_shlibpath"; then
687365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      case :$compile_shlibpath: in
687465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      *":$add_shlibpath:"*) ;;
687565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      *) func_append compile_shlibpath "$add_shlibpath:" ;;
687665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      esac
687765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    fi
687865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    if test "$linkmode" = prog; then
687965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
688065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
688165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    else
688265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
688365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      test -n "$add" && deplibs="$add $deplibs"
688465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      if test "$hardcode_direct" != yes &&
688565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		 test "$hardcode_minus_L" != yes &&
688665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		 test "$hardcode_shlibpath_var" = yes; then
688765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		case :$finalize_shlibpath: in
688865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		*":$libdir:"*) ;;
688965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		*) func_append finalize_shlibpath "$libdir:" ;;
689065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		esac
689165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      fi
689265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    fi
689365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
689465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
689565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test "$linkmode" = prog || test "$opt_mode" = relink; then
689665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    add_shlibpath=
689765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    add_dir=
689865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    add=
689965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # Finalize command for both is simple: just hardcode it.
690065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    if test "$hardcode_direct" = yes &&
690165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	       test "$hardcode_direct_absolute" = no; then
690265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      add="$libdir/$linklib"
690365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    elif test "$hardcode_minus_L" = yes; then
690465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      add_dir="-L$libdir"
690565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      add="-l$name"
690665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    elif test "$hardcode_shlibpath_var" = yes; then
690765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      case :$finalize_shlibpath: in
690865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      *":$libdir:"*) ;;
690965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      *) func_append finalize_shlibpath "$libdir:" ;;
691065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      esac
691165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      add="-l$name"
691265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    elif test "$hardcode_automatic" = yes; then
691365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      if test -n "$inst_prefix_dir" &&
691465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		 test -f "$inst_prefix_dir$libdir/$linklib" ; then
691565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		add="$inst_prefix_dir$libdir/$linklib"
691665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      else
691765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		add="$libdir/$linklib"
691865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      fi
691965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    else
692065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # We cannot seem to hardcode it, guess we'll fake it.
692165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      add_dir="-L$libdir"
692265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # Try looking first in the location we're being installed to.
692365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      if test -n "$inst_prefix_dir"; then
692465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		case $libdir in
692565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  [\\/]*)
692665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    func_append add_dir " -L$inst_prefix_dir$libdir"
692765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    ;;
692865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		esac
692965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      fi
693065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      add="-l$name"
693165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    fi
693265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
693365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    if test "$linkmode" = prog; then
693465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
693565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
693665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    else
693765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
693865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      test -n "$add" && deplibs="$add $deplibs"
693965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    fi
694065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
694165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	elif test "$linkmode" = prog; then
694265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # Here we assume that one of hardcode_direct or hardcode_minus_L
694365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # is not unsupported.  This is valid on all known static and
694465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # shared platforms.
694565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test "$hardcode_direct" != unsupported; then
694665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    test -n "$old_library" && linklib="$old_library"
694765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    compile_deplibs="$dir/$linklib $compile_deplibs"
694865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
694965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  else
695065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    compile_deplibs="-l$name -L$dir $compile_deplibs"
695165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
695265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
695365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	elif test "$build_libtool_libs" = yes; then
695465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # Not a shared library
695565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test "$deplibs_check_method" != pass_all; then
695665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # We're trying link a shared library against a static one
695765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # but the system doesn't support it.
695865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
695965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # Just print a warning and add the library to dependency_libs so
696065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # that the program can be linked against the static library.
696165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    echo
696265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    $ECHO "*** Warning: This system can not link to static lib archive $lib."
696365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    echo "*** I have the capability to make that library automatically link in when"
696465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    echo "*** you link to this library.  But I can only do this if you have a"
696565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    echo "*** shared version of the library, which you do not appear to have."
696665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    if test "$module" = yes; then
696765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      echo "*** But as you try to build a module library, libtool will still create "
696865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      echo "*** a static module, that should work as long as the dlopening application"
696965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
697065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      if test -z "$global_symbol_pipe"; then
697165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		echo
697265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		echo "*** However, this would only work if libtool was able to extract symbol"
697365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
697465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		echo "*** not find such a program.  So, this module is probably useless."
697565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		echo "*** \`nm' from GNU binutils and a full rebuild may help."
697665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      fi
697765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      if test "$build_old_libs" = no; then
697865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		build_libtool_libs=module
697965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		build_old_libs=yes
698065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      else
698165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		build_libtool_libs=no
698265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      fi
698365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    fi
698465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  else
698565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    deplibs="$dir/$old_library $deplibs"
698665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    link_static=yes
698765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
698865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi # link shared/static library?
698965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
699065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test "$linkmode" = lib; then
699165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test -n "$dependency_libs" &&
699265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	     { test "$hardcode_into_libs" != yes ||
699365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	       test "$build_old_libs" = yes ||
699465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	       test "$link_static" = yes; }; then
699565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # Extract -R from dependency_libs
699665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    temp_deplibs=
699765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    for libdir in $dependency_libs; do
699865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      case $libdir in
699965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      -R*) func_stripname '-R' '' "$libdir"
700065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	           temp_xrpath=$func_stripname_result
700165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		   case " $xrpath " in
700265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		   *" $temp_xrpath "*) ;;
700365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		   *) func_append xrpath " $temp_xrpath";;
700465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		   esac;;
700565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      *) func_append temp_deplibs " $libdir";;
700665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      esac
700765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    done
700865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    dependency_libs="$temp_deplibs"
700965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
701065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
701165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_append newlib_search_path " $absdir"
701265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # Link against this library
701365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
701465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # ... and its dependency_libs
701565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  tmp_libs=
701665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  for deplib in $dependency_libs; do
701765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    newdependency_libs="$deplib $newdependency_libs"
701865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    case $deplib in
701965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich              -L*) func_stripname '-L' '' "$deplib"
702065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                   func_resolve_sysroot "$func_stripname_result";;
702165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich              *) func_resolve_sysroot "$deplib" ;;
702265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich            esac
702365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    if $opt_preserve_dup_deps ; then
702465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      case "$tmp_libs " in
702565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      *" $func_resolve_sysroot_result "*)
702665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                func_append specialdeplibs " $func_resolve_sysroot_result" ;;
702765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      esac
702865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    fi
702965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_append tmp_libs " $func_resolve_sysroot_result"
703065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  done
703165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
703265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test "$link_all_deplibs" != no; then
703365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # Add the search paths of all dependency libraries
703465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    for deplib in $dependency_libs; do
703565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      path=
703665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      case $deplib in
703765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      -L*) path="$deplib" ;;
703865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      *.la)
703965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	        func_resolve_sysroot "$deplib"
704065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	        deplib=$func_resolve_sysroot_result
704165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	        func_dirname "$deplib" "" "."
704265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		dir=$func_dirname_result
704365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		# We need an absolute path.
704465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		case $dir in
704565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
704665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		*)
704765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  absdir=`cd "$dir" && pwd`
704865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  if test -z "$absdir"; then
704965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    func_warning "cannot determine absolute directory name of \`$dir'"
705065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    absdir="$dir"
705165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  fi
705265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  ;;
705365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		esac
705465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		if $GREP "^installed=no" $deplib > /dev/null; then
705565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		case $host in
705665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		*-*-darwin*)
705765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  depdepl=
705865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
705965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  if test -n "$deplibrary_names" ; then
706065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    for tmp in $deplibrary_names ; do
706165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		      depdepl=$tmp
706265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    done
706365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    if test -f "$absdir/$objdir/$depdepl" ; then
706465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		      depdepl="$absdir/$objdir/$depdepl"
706565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		      darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
706665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                      if test -z "$darwin_install_name"; then
706765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                          darwin_install_name=`${OTOOL64} -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
706865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                      fi
706965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		      func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
707065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		      func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}"
707165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		      path=
707265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    fi
707365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  fi
707465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  ;;
707565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		*)
707665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  path="-L$absdir/$objdir"
707765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  ;;
707865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		esac
707965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		else
708065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
708165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  test -z "$libdir" && \
708265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    func_fatal_error "\`$deplib' is not a valid libtool archive"
708365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  test "$absdir" != "$libdir" && \
708465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    func_warning "\`$deplib' seems to be moved"
708565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
708665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  path="-L$absdir"
708765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		fi
708865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		;;
708965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      esac
709065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      case " $deplibs " in
709165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      *" $path "*) ;;
709265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      *) deplibs="$path $deplibs" ;;
709365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      esac
709465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    done
709565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi # link_all_deplibs != no
709665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi # linkmode = lib
709765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      done # for deplib in $libs
709865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test "$pass" = link; then
709965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test "$linkmode" = "prog"; then
710065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
710165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
710265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	else
710365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
710465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
710565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
710665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      dependency_libs="$newdependency_libs"
710765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test "$pass" = dlpreopen; then
710865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Link the dlpreopened libraries before other libraries
710965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	for deplib in $save_deplibs; do
711065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  deplibs="$deplib $deplibs"
711165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	done
711265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
711365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test "$pass" != dlopen; then
711465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test "$pass" != conv; then
711565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # Make sure lib_search_path contains only unique directories.
711665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  lib_search_path=
711765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  for dir in $newlib_search_path; do
711865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    case "$lib_search_path " in
711965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    *" $dir "*) ;;
712065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    *) func_append lib_search_path " $dir" ;;
712165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    esac
712265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  done
712365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  newlib_search_path=
712465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
712565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
712665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test "$linkmode,$pass" != "prog,link"; then
712765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  vars="deplibs"
712865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	else
712965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  vars="compile_deplibs finalize_deplibs"
713065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
713165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	for var in $vars dependency_libs; do
713265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # Add libraries to $var in reverse order
713365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  eval tmp_libs=\"\$$var\"
713465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  new_libs=
713565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  for deplib in $tmp_libs; do
713665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # FIXME: Pedantically, this is the right thing to do, so
713765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    #        that some nasty dependency loop isn't accidentally
713865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    #        broken:
713965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    #new_libs="$deplib $new_libs"
714065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # Pragmatically, this seems to cause very few problems in
714165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # practice:
714265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    case $deplib in
714365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    -L*) new_libs="$deplib $new_libs" ;;
714465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    -R*) ;;
714565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    *)
714665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # And here is the reason: when a library appears more
714765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # than once as an explicit dependence of a library, or
714865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # is implicitly linked in more than once by the
714965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # compiler, it is considered special, and multiple
715065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # occurrences thereof are not removed.  Compare this
715165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # with having the same library being listed as a
715265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # dependency of multiple other libraries: in this case,
715365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # we know (pedantically, we assume) the library does not
715465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # need to be listed more than once, so we keep only the
715565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # last copy.  This is not always right, but it is rare
715665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # enough that we require users that really mean to play
715765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # such unportable linking tricks to link the library
715865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # using -Wl,-lname, so that libtool does not consider it
715965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # for duplicate removal.
716065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      case " $specialdeplibs " in
716165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
716265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      *)
716365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		case " $new_libs " in
716465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		*" $deplib "*) ;;
716565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		*) new_libs="$deplib $new_libs" ;;
716665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		esac
716765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		;;
716865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      esac
716965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      ;;
717065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    esac
717165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  done
717265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  tmp_libs=
717365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  for deplib in $new_libs; do
717465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    case $deplib in
717565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    -L*)
717665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      case " $tmp_libs " in
717765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      *" $deplib "*) ;;
717865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      *) func_append tmp_libs " $deplib" ;;
717965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      esac
718065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      ;;
718165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    *) func_append tmp_libs " $deplib" ;;
718265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    esac
718365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  done
718465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  eval $var=\"$tmp_libs\"
718565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	done # for var
718665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
718765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Last step: remove runtime libs from dependency_libs
718865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # (they stay in deplibs)
718965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      tmp_libs=
719065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      for i in $dependency_libs ; do
719165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	case " $predeps $postdeps $compiler_lib_search_path " in
719265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	*" $i "*)
719365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  i=""
719465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
719565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	esac
719665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test -n "$i" ; then
719765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_append tmp_libs " $i"
719865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
719965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      done
720065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      dependency_libs=$tmp_libs
720165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    done # for pass
720265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    if test "$linkmode" = prog; then
720365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      dlfiles="$newdlfiles"
720465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    fi
720565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    if test "$linkmode" = prog || test "$linkmode" = lib; then
720665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      dlprefiles="$newdlprefiles"
720765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    fi
720865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
720965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    case $linkmode in
721065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    oldlib)
721165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
721265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_warning "\`-dlopen' is ignored for archives"
721365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
721465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
721565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      case " $deplibs" in
721665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      *\ -l* | *\ -L*)
721765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_warning "\`-l' and \`-L' are ignored for archives" ;;
721865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      esac
721965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
722065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      test -n "$rpath" && \
722165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_warning "\`-rpath' is ignored for archives"
722265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
722365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      test -n "$xrpath" && \
722465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_warning "\`-R' is ignored for archives"
722565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
722665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      test -n "$vinfo" && \
722765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_warning "\`-version-info/-version-number' is ignored for archives"
722865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
722965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      test -n "$release" && \
723065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_warning "\`-release' is ignored for archives"
723165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
723265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      test -n "$export_symbols$export_symbols_regex" && \
723365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_warning "\`-export-symbols' is ignored for archives"
723465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
723565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Now set the variables for building old libraries.
723665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      build_libtool_libs=no
723765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      oldlibs="$output"
723865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_append objs "$old_deplibs"
723965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      ;;
724065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
724165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    lib)
724265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Make sure we only generate libraries of the form `libNAME.la'.
724365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      case $outputname in
724465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      lib*)
724565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_stripname 'lib' '.la' "$outputname"
724665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	name=$func_stripname_result
724765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	eval shared_ext=\"$shrext_cmds\"
724865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	eval libname=\"$libname_spec\"
724965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
725065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      *)
725165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	test "$module" = no && \
725265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_fatal_help "libtool library \`$output' must begin with \`lib'"
725365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
725465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test "$need_lib_prefix" != no; then
725565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # Add the "lib" prefix for modules if required
725665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_stripname '' '.la' "$outputname"
725765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  name=$func_stripname_result
725865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  eval shared_ext=\"$shrext_cmds\"
725965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  eval libname=\"$libname_spec\"
726065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	else
726165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_stripname '' '.la' "$outputname"
726265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  libname=$func_stripname_result
726365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
726465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
726565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      esac
726665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
726765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test -n "$objs"; then
726865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test "$deplibs_check_method" != pass_all; then
726965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
727065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	else
727165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  echo
727265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
727365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  $ECHO "*** objects $objs is not portable!"
727465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_append libobjs " $objs"
727565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
727665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
727765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
727865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      test "$dlself" != no && \
727965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_warning "\`-dlopen self' is ignored for libtool libraries"
728065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
728165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      set dummy $rpath
728265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      shift
728365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      test "$#" -gt 1 && \
728465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_warning "ignoring multiple \`-rpath's for a libtool library"
728565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
728665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      install_libdir="$1"
728765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
728865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      oldlibs=
728965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test -z "$rpath"; then
729065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test "$build_libtool_libs" = yes; then
729165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # Building a libtool convenience library.
729265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # Some compilers have problems with a `.al' extension so
729365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # convenience libraries should have the same extension an
729465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # archive normally would.
729565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
729665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  build_libtool_libs=convenience
729765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  build_old_libs=yes
729865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
729965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
730065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	test -n "$vinfo" && \
730165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
730265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
730365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	test -n "$release" && \
730465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_warning "\`-release' is ignored for convenience libraries"
730565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      else
730665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
730765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Parse the version information argument.
730865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	save_ifs="$IFS"; IFS=':'
730965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	set dummy $vinfo 0 0 0
731065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	shift
731165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	IFS="$save_ifs"
731265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
731365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	test -n "$7" && \
731465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_fatal_help "too many parameters to \`-version-info'"
731565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
731665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# convert absolute version numbers to libtool ages
731765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# this retains compatibility with .la files and attempts
731865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# to make the code below a bit more comprehensible
731965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
732065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	case $vinfo_number in
732165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	yes)
732265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  number_major="$1"
732365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  number_minor="$2"
732465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  number_revision="$3"
732565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  #
732665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # There are really only two kinds -- those that
732765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # use the current revision as the major version
732865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # and those that subtract age and use age as
732965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # a minor version.  But, then there is irix
733065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # which has an extra 1 added just for fun
733165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  #
733265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  case $version_type in
733365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # correct linux to gnu/linux during the next big refactor
733465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  darwin|linux|osf|windows|none)
733565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_arith $number_major + $number_minor
733665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    current=$func_arith_result
733765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    age="$number_minor"
733865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    revision="$number_revision"
733965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    ;;
734065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  freebsd-aout|freebsd-elf|qnx|sunos)
734165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    current="$number_major"
734265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    revision="$number_minor"
734365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    age="0"
734465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    ;;
734565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  irix|nonstopux)
734665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_arith $number_major + $number_minor
734765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    current=$func_arith_result
734865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    age="$number_minor"
734965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    revision="$number_minor"
735065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    lt_irix_increment=no
735165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    ;;
735265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  esac
735365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
735465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	no)
735565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  current="$1"
735665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  revision="$2"
735765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  age="$3"
735865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
735965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	esac
736065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
736165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Check that each of the things are valid numbers.
736265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	case $current in
736365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	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]) ;;
736465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	*)
736565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_error "CURRENT \`$current' must be a nonnegative integer"
736665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_fatal_error "\`$vinfo' is not valid version information"
736765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
736865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	esac
736965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
737065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	case $revision in
737165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	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]) ;;
737265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	*)
737365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_error "REVISION \`$revision' must be a nonnegative integer"
737465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_fatal_error "\`$vinfo' is not valid version information"
737565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
737665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	esac
737765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
737865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	case $age in
737965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	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]) ;;
738065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	*)
738165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_error "AGE \`$age' must be a nonnegative integer"
738265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_fatal_error "\`$vinfo' is not valid version information"
738365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
738465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	esac
738565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
738665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test "$age" -gt "$current"; then
738765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_error "AGE \`$age' is greater than the current interface number \`$current'"
738865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_fatal_error "\`$vinfo' is not valid version information"
738965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
739065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
739165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Calculate the version variables.
739265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	major=
739365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	versuffix=
739465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	verstring=
739565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	case $version_type in
739665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	none) ;;
739765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
739865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	darwin)
739965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # Like Linux, but with the current version available in
740065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # verstring for coding it into the library header
740165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_arith $current - $age
740265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  major=.$func_arith_result
740365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  versuffix="$major.$age.$revision"
740465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # Darwin ld doesn't like 0 for these options...
740565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_arith $current + 1
740665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  minor_current=$func_arith_result
740765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
740865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
740965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
741065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
741165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	freebsd-aout)
741265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  major=".$current"
741365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  versuffix=".$current.$revision";
741465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
741565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
741665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	freebsd-elf)
741765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  major=".$current"
741865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  versuffix=".$current"
741965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
742065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
742165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	irix | nonstopux)
742265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test "X$lt_irix_increment" = "Xno"; then
742365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_arith $current - $age
742465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  else
742565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_arith $current - $age + 1
742665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
742765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  major=$func_arith_result
742865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
742965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  case $version_type in
743065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    nonstopux) verstring_prefix=nonstopux ;;
743165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    *)         verstring_prefix=sgi ;;
743265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  esac
743365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  verstring="$verstring_prefix$major.$revision"
743465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
743565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # Add in all the interfaces that we are compatible with.
743665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  loop=$revision
743765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  while test "$loop" -ne 0; do
743865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_arith $revision - $loop
743965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    iface=$func_arith_result
744065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_arith $loop - 1
744165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    loop=$func_arith_result
744265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    verstring="$verstring_prefix$major.$iface:$verstring"
744365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  done
744465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
744565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # Before this point, $major must not contain `.'.
744665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  major=.$major
744765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  versuffix="$major.$revision"
744865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
744965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
745065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	linux) # correct to gnu/linux during the next big refactor
745165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_arith $current - $age
745265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  major=.$func_arith_result
745365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  versuffix="$major.$age.$revision"
745465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
745565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
745665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	osf)
745765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_arith $current - $age
745865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  major=.$func_arith_result
745965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  versuffix=".$current.$age.$revision"
746065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  verstring="$current.$age.$revision"
746165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
746265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # Add in all the interfaces that we are compatible with.
746365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  loop=$age
746465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  while test "$loop" -ne 0; do
746565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_arith $current - $loop
746665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    iface=$func_arith_result
746765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_arith $loop - 1
746865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    loop=$func_arith_result
746965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    verstring="$verstring:${iface}.0"
747065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  done
747165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
747265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # Make executables depend on our current version.
747365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_append verstring ":${current}.0"
747465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
747565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
747665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	qnx)
747765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  major=".$current"
747865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  versuffix=".$current"
747965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
748065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
748165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	sunos)
748265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  major=".$current"
748365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  versuffix=".$current.$revision"
748465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
748565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
748665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	windows)
748765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # Use '-' rather than '.', since we only want one
748865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # extension on DOS 8.3 filesystems.
748965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_arith $current - $age
749065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  major=$func_arith_result
749165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  versuffix="-$major"
749265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
749365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
749465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	*)
749565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_fatal_configuration "unknown library version type \`$version_type'"
749665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
749765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	esac
749865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
749965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Clear the version info if we defaulted, and they specified a release.
750065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test -z "$vinfo" && test -n "$release"; then
750165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  major=
750265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  case $version_type in
750365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  darwin)
750465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # we can't check for "0.0" in archive_cmds due to quoting
750565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # problems, so we reset it completely
750665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    verstring=
750765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    ;;
750865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *)
750965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    verstring="0.0"
751065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    ;;
751165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  esac
751265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test "$need_version" = no; then
751365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    versuffix=
751465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  else
751565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    versuffix=".0.0"
751665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
751765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
751865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
751965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Remove version info from name if versioning should be avoided
752065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test "$avoid_version" = yes && test "$need_version" = no; then
752165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  major=
752265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  versuffix=
752365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  verstring=""
752465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
752565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
752665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Check to see if the archive will have undefined symbols.
752765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test "$allow_undefined" = yes; then
752865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test "$allow_undefined_flag" = unsupported; then
752965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_warning "undefined symbols not allowed in $host shared libraries"
753065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    build_libtool_libs=no
753165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    build_old_libs=yes
753265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
753365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	else
753465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # Don't allow undefined symbols.
753565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  allow_undefined_flag="$no_undefined_flag"
753665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
753765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
753865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
753965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
754065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_generate_dlsyms "$libname" "$libname" "yes"
754165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_append libobjs " $symfileobj"
754265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      test "X$libobjs" = "X " && libobjs=
754365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
754465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test "$opt_mode" != relink; then
754565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Remove our outputs, but don't remove object files since they
754665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# may have been created when compiling PIC objects.
754765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	removelist=
754865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	tempremovelist=`$ECHO "$output_objdir/*"`
754965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	for p in $tempremovelist; do
755065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  case $p in
755165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    *.$objext | *.gcno)
755265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	       ;;
755365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
755465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	       if test "X$precious_files_regex" != "X"; then
755565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		 if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
755665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		 then
755765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		   continue
755865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		 fi
755965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	       fi
756065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	       func_append removelist " $p"
756165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	       ;;
756265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    *) ;;
756365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  esac
756465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	done
756565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	test -n "$removelist" && \
756665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_show_eval "${RM}r \$removelist"
756765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
756865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
756965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Now set the variables for building old libraries.
757065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
757165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_append oldlibs " $output_objdir/$libname.$libext"
757265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
757365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Transform .lo files to .o files.
757465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP`
757565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
757665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
757765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Eliminate all temporary directories.
757865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      #for path in $notinst_path; do
757965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      #	lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"`
758065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      #	deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"`
758165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      #	dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"`
758265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      #done
758365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
758465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test -n "$xrpath"; then
758565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# If the user specified any rpath flags, then add them.
758665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	temp_xrpath=
758765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	for libdir in $xrpath; do
758865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_replace_sysroot "$libdir"
758965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_append temp_xrpath " -R$func_replace_sysroot_result"
759065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  case "$finalize_rpath " in
759165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *" $libdir "*) ;;
759265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *) func_append finalize_rpath " $libdir" ;;
759365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  esac
759465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	done
759565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
759665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  dependency_libs="$temp_xrpath $dependency_libs"
759765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
759865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
759965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
760065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Make sure dlfiles contains only unique files that won't be dlpreopened
760165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      old_dlfiles="$dlfiles"
760265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      dlfiles=
760365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      for lib in $old_dlfiles; do
760465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	case " $dlprefiles $dlfiles " in
760565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	*" $lib "*) ;;
760665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	*) func_append dlfiles " $lib" ;;
760765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	esac
760865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      done
760965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
761065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Make sure dlprefiles contains only unique files
761165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      old_dlprefiles="$dlprefiles"
761265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      dlprefiles=
761365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      for lib in $old_dlprefiles; do
761465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	case "$dlprefiles " in
761565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	*" $lib "*) ;;
761665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	*) func_append dlprefiles " $lib" ;;
761765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	esac
761865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      done
761965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
762065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test "$build_libtool_libs" = yes; then
762165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test -n "$rpath"; then
762265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  case $host in
762365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*)
762465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # these systems don't actually have a c library (as such)!
762565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    ;;
762665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *-*-rhapsody* | *-*-darwin1.[012])
762765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # Rhapsody C library is in the System framework
762865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_append deplibs " System.ltframework"
762965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    ;;
763065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *-*-netbsd*)
763165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # Don't link with libc until the a.out ld.so is fixed.
763265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    ;;
763365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
763465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # Do not include libc due to us having libc/libc_r.
763565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    ;;
763665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *-*-sco3.2v5* | *-*-sco5v6*)
763765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # Causes problems with __ctype
763865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    ;;
763965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
764065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # Compiler inserts libc in the correct place for threads to work
764165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    ;;
764265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *)
764365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # Add libc to deplibs on all other systems if necessary.
764465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    if test "$build_libtool_need_lc" = "yes"; then
764565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      func_append deplibs " -lc"
764665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    fi
764765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    ;;
764865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  esac
764965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
765065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
765165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Transform deplibs into only deplibs that can be linked in shared.
765265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	name_save=$name
765365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	libname_save=$libname
765465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	release_save=$release
765565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	versuffix_save=$versuffix
765665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	major_save=$major
765765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# I'm not sure if I'm treating the release correctly.  I think
765865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# release should show up in the -l (ie -lgmp5) so we don't want to
765965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# add it in twice.  Is that correct?
766065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	release=""
766165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	versuffix=""
766265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	major=""
766365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	newdeplibs=
766465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	droppeddeps=no
766565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	case $deplibs_check_method in
766665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	pass_all)
766765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # Don't check for shared/static.  Everything works.
766865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # This might be a little naive.  We might want to check
766965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # whether the library exists or not.  But this is on
767065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # osf3 & osf4 and I'm not really sure... Just
767165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # implementing what was already the behavior.
767265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  newdeplibs=$deplibs
767365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
767465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	test_compile)
767565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # This code stresses the "libraries are programs" paradigm to its
767665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # limits. Maybe even breaks it.  We compile a program, linking it
767765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # against the deplibs as a proxy for the library.  Then we can check
767865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # whether they linked in statically or dynamically with ldd.
767965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  $opt_dry_run || $RM conftest.c
768065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  cat > conftest.c <<EOF
768165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  int main() { return 0; }
768265de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEOF
768365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  $opt_dry_run || $RM conftest
768465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
768565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    ldd_output=`ldd conftest`
768665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    for i in $deplibs; do
768765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      case $i in
768865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      -l*)
768965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		func_stripname -l '' "$i"
769065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		name=$func_stripname_result
769165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
769265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  case " $predeps $postdeps " in
769365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  *" $i "*)
769465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    func_append newdeplibs " $i"
769565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    i=""
769665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    ;;
769765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  esac
769865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		fi
769965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		if test -n "$i" ; then
770065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  libname=`eval "\\$ECHO \"$libname_spec\""`
770165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
770265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  set dummy $deplib_matches; shift
770365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  deplib_match=$1
770465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
770565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    func_append newdeplibs " $i"
770665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  else
770765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    droppeddeps=yes
770865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    echo
770965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    $ECHO "*** Warning: dynamic linker does not accept needed library $i."
771065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    echo "*** I have the capability to make that library automatically link in when"
771165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    echo "*** you link to this library.  But I can only do this if you have a"
771265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    echo "*** shared version of the library, which I believe you do not have"
771365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    echo "*** because a test_compile did reveal that the linker did not use it for"
771465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    echo "*** its dynamic dependency list that programs get resolved with at runtime."
771565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  fi
771665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		fi
771765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		;;
771865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      *)
771965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		func_append newdeplibs " $i"
772065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		;;
772165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      esac
772265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    done
772365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  else
772465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # Error occurred in the first compile.  Let's try to salvage
772565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # the situation: Compile a separate program for each library.
772665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    for i in $deplibs; do
772765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      case $i in
772865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      -l*)
772965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		func_stripname -l '' "$i"
773065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		name=$func_stripname_result
773165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		$opt_dry_run || $RM conftest
773265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
773365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  ldd_output=`ldd conftest`
773465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
773565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    case " $predeps $postdeps " in
773665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    *" $i "*)
773765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		      func_append newdeplibs " $i"
773865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		      i=""
773965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		      ;;
774065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    esac
774165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  fi
774265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  if test -n "$i" ; then
774365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    libname=`eval "\\$ECHO \"$libname_spec\""`
774465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
774565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    set dummy $deplib_matches; shift
774665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    deplib_match=$1
774765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
774865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		      func_append newdeplibs " $i"
774965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    else
775065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		      droppeddeps=yes
775165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		      echo
775265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		      $ECHO "*** Warning: dynamic linker does not accept needed library $i."
775365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		      echo "*** I have the capability to make that library automatically link in when"
775465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		      echo "*** you link to this library.  But I can only do this if you have a"
775565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		      echo "*** shared version of the library, which you do not appear to have"
775665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		      echo "*** because a test_compile did reveal that the linker did not use this one"
775765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		      echo "*** as a dynamic dependency that programs can get resolved with at runtime."
775865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    fi
775965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  fi
776065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		else
776165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  droppeddeps=yes
776265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  echo
776365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  $ECHO "*** Warning!  Library $i is needed by this library but I was not able to"
776465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  echo "*** make it link in!  You will probably need to install it or some"
776565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  echo "*** library that it depends on before this library will be fully"
776665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  echo "*** functional.  Installing it before continuing would be even better."
776765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		fi
776865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		;;
776965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      *)
777065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		func_append newdeplibs " $i"
777165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		;;
777265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      esac
777365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    done
777465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
777565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
777665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	file_magic*)
777765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  set dummy $deplibs_check_method; shift
777865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
777965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  for a_deplib in $deplibs; do
778065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    case $a_deplib in
778165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    -l*)
778265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      func_stripname -l '' "$a_deplib"
778365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      name=$func_stripname_result
778465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
778565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		case " $predeps $postdeps " in
778665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		*" $a_deplib "*)
778765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  func_append newdeplibs " $a_deplib"
778865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  a_deplib=""
778965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  ;;
779065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		esac
779165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      fi
779265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      if test -n "$a_deplib" ; then
779365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		libname=`eval "\\$ECHO \"$libname_spec\""`
779465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		if test -n "$file_magic_glob"; then
779565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob`
779665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		else
779765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  libnameglob=$libname
779865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		fi
779965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob`
780065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
780165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  if test "$want_nocaseglob" = yes; then
780265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    shopt -s nocaseglob
780365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
780465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    $nocaseglob
780565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  else
780665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
780765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  fi
780865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  for potent_lib in $potential_libs; do
780965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		      # Follow soft links.
781065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		      if ls -lLd "$potent_lib" 2>/dev/null |
781165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			 $GREP " -> " >/dev/null; then
781265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			continue
781365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		      fi
781465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		      # The statement above tries to avoid entering an
781565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		      # endless loop below, in case of cyclic links.
781665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		      # We might still enter an endless loop, since a link
781765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		      # loop can be closed while we follow links,
781865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		      # but so what?
781965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		      potlib="$potent_lib"
782065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		      while test -h "$potlib" 2>/dev/null; do
782165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
782265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			case $potliblink in
782365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
782465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			*) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";;
782565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			esac
782665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		      done
782765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
782865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			 $SED -e 10q |
782965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			 $EGREP "$file_magic_regex" > /dev/null; then
783065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			func_append newdeplibs " $a_deplib"
783165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			a_deplib=""
783265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich			break 2
783365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		      fi
783465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  done
783565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		done
783665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      fi
783765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      if test -n "$a_deplib" ; then
783865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		droppeddeps=yes
783965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		echo
784065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
784165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		echo "*** I have the capability to make that library automatically link in when"
784265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		echo "*** you link to this library.  But I can only do this if you have a"
784365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		echo "*** shared version of the library, which you do not appear to have"
784465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		echo "*** because I did check the linker path looking for a file starting"
784565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		if test -z "$potlib" ; then
784665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
784765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		else
784865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  $ECHO "*** with $libname and none of the candidates passed a file format test"
784965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  $ECHO "*** using a file magic. Last file checked: $potlib"
785065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		fi
785165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      fi
785265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      ;;
785365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    *)
785465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # Add a -L argument.
785565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      func_append newdeplibs " $a_deplib"
785665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      ;;
785765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    esac
785865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  done # Gone through all deplibs.
785965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
786065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	match_pattern*)
786165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  set dummy $deplibs_check_method; shift
786265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
786365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  for a_deplib in $deplibs; do
786465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    case $a_deplib in
786565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    -l*)
786665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      func_stripname -l '' "$a_deplib"
786765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      name=$func_stripname_result
786865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
786965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		case " $predeps $postdeps " in
787065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		*" $a_deplib "*)
787165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  func_append newdeplibs " $a_deplib"
787265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  a_deplib=""
787365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  ;;
787465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		esac
787565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      fi
787665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      if test -n "$a_deplib" ; then
787765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		libname=`eval "\\$ECHO \"$libname_spec\""`
787865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
787965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
788065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  for potent_lib in $potential_libs; do
788165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    potlib="$potent_lib" # see symlink-check above in file_magic test
788265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \
788365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		       $EGREP "$match_pattern_regex" > /dev/null; then
788465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		      func_append newdeplibs " $a_deplib"
788565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		      a_deplib=""
788665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		      break 2
788765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    fi
788865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  done
788965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		done
789065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      fi
789165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      if test -n "$a_deplib" ; then
789265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		droppeddeps=yes
789365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		echo
789465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
789565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		echo "*** I have the capability to make that library automatically link in when"
789665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		echo "*** you link to this library.  But I can only do this if you have a"
789765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		echo "*** shared version of the library, which you do not appear to have"
789865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		echo "*** because I did check the linker path looking for a file starting"
789965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		if test -z "$potlib" ; then
790065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
790165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		else
790265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  $ECHO "*** with $libname and none of the candidates passed a file format test"
790365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  $ECHO "*** using a regex pattern. Last file checked: $potlib"
790465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		fi
790565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      fi
790665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      ;;
790765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    *)
790865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # Add a -L argument.
790965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      func_append newdeplibs " $a_deplib"
791065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      ;;
791165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    esac
791265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  done # Gone through all deplibs.
791365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
791465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	none | unknown | *)
791565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  newdeplibs=""
791665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'`
791765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
791865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    for i in $predeps $postdeps ; do
791965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # can't use Xsed below, because $i might contain '/'
792065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"`
792165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    done
792265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
792365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  case $tmp_deplibs in
792465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *[!\	\ ]*)
792565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    echo
792665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    if test "X$deplibs_check_method" = "Xnone"; then
792765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      echo "*** Warning: inter-library dependencies are not supported in this platform."
792865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    else
792965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      echo "*** Warning: inter-library dependencies are not known to be supported."
793065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    fi
793165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    echo "*** All declared inter-library dependencies are being dropped."
793265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    droppeddeps=yes
793365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    ;;
793465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  esac
793565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
793665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	esac
793765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	versuffix=$versuffix_save
793865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	major=$major_save
793965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	release=$release_save
794065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	libname=$libname_save
794165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	name=$name_save
794265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
794365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	case $host in
794465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	*-*-rhapsody* | *-*-darwin1.[012])
794565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # On Rhapsody replace the C library with the System framework
794665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'`
794765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
794865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	esac
794965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
795065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test "$droppeddeps" = yes; then
795165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test "$module" = yes; then
795265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    echo
795365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    echo "*** Warning: libtool could not satisfy all declared inter-library"
795465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    $ECHO "*** dependencies of module $libname.  Therefore, libtool will create"
795565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    echo "*** a static module, that should work as long as the dlopening"
795665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    echo "*** application is linked with the -dlopen flag."
795765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    if test -z "$global_symbol_pipe"; then
795865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      echo
795965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      echo "*** However, this would only work if libtool was able to extract symbol"
796065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
796165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      echo "*** not find such a program.  So, this module is probably useless."
796265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      echo "*** \`nm' from GNU binutils and a full rebuild may help."
796365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    fi
796465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    if test "$build_old_libs" = no; then
796565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      oldlibs="$output_objdir/$libname.$libext"
796665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      build_libtool_libs=module
796765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      build_old_libs=yes
796865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    else
796965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      build_libtool_libs=no
797065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    fi
797165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  else
797265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    echo "*** The inter-library dependencies that have been dropped here will be"
797365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    echo "*** automatically added whenever a program is linked with this library"
797465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    echo "*** or is declared to -dlopen it."
797565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
797665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    if test "$allow_undefined" = no; then
797765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      echo
797865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      echo "*** Since this library must not contain undefined symbols,"
797965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      echo "*** because either the platform does not support them or"
798065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      echo "*** it was explicitly requested with -no-undefined,"
798165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      echo "*** libtool will only create a static version of it."
798265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      if test "$build_old_libs" = no; then
798365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		oldlibs="$output_objdir/$libname.$libext"
798465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		build_libtool_libs=module
798565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		build_old_libs=yes
798665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      else
798765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		build_libtool_libs=no
798865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      fi
798965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    fi
799065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
799165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
799265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Done checking deplibs!
799365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	deplibs=$newdeplibs
799465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
799565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Time to change all our "foo.ltframework" stuff back to "-framework foo"
799665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      case $host in
799765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	*-*-darwin*)
799865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
799965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
800065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
800165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
800265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      esac
800365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
800465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # move library search paths that coincide with paths to not yet
800565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # installed libraries to the beginning of the library search list
800665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      new_libs=
800765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      for path in $notinst_path; do
800865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	case " $new_libs " in
800965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	*" -L$path/$objdir "*) ;;
801065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	*)
801165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  case " $deplibs " in
801265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *" -L$path/$objdir "*)
801365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_append new_libs " -L$path/$objdir" ;;
801465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  esac
801565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
801665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	esac
801765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      done
801865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      for deplib in $deplibs; do
801965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	case $deplib in
802065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	-L*)
802165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  case " $new_libs " in
802265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *" $deplib "*) ;;
802365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *) func_append new_libs " $deplib" ;;
802465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  esac
802565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
802665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	*) func_append new_libs " $deplib" ;;
802765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	esac
802865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      done
802965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      deplibs="$new_libs"
803065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
803165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # All the library-specific variables (install_libdir is set above).
803265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      library_names=
803365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      old_library=
803465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      dlname=
803565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
803665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Test again, we may have decided not to build it any more
803765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test "$build_libtool_libs" = yes; then
803865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Remove ${wl} instances when linking with ld.
803965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# FIXME: should test the right _cmds variable.
804065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	case $archive_cmds in
804165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *\$LD\ *) wl= ;;
804265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        esac
804365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test "$hardcode_into_libs" = yes; then
804465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # Hardcode the library paths
804565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  hardcode_libdirs=
804665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  dep_rpath=
804765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  rpath="$finalize_rpath"
804865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  test "$opt_mode" != relink && rpath="$compile_rpath$rpath"
804965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  for libdir in $rpath; do
805065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    if test -n "$hardcode_libdir_flag_spec"; then
805165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      if test -n "$hardcode_libdir_separator"; then
805265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		func_replace_sysroot "$libdir"
805365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		libdir=$func_replace_sysroot_result
805465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		if test -z "$hardcode_libdirs"; then
805565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  hardcode_libdirs="$libdir"
805665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		else
805765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  # Just accumulate the unique libdirs.
805865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
805965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
806065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    ;;
806165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  *)
806265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
806365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    ;;
806465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  esac
806565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		fi
806665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      else
806765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		eval flag=\"$hardcode_libdir_flag_spec\"
806865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		func_append dep_rpath " $flag"
806965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      fi
807065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    elif test -n "$runpath_var"; then
807165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      case "$perm_rpath " in
807265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      *" $libdir "*) ;;
807365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      *) func_append perm_rpath " $libdir" ;;
807465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      esac
807565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    fi
807665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  done
807765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # Substitute the hardcoded libdirs into the rpath.
807865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test -n "$hardcode_libdir_separator" &&
807965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	     test -n "$hardcode_libdirs"; then
808065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    libdir="$hardcode_libdirs"
808165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    eval "dep_rpath=\"$hardcode_libdir_flag_spec\""
808265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
808365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
808465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # We should set the runpath_var.
808565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    rpath=
808665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    for dir in $perm_rpath; do
808765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      func_append rpath "$dir:"
808865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    done
808965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
809065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
809165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
809265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
809365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
809465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	shlibpath="$finalize_shlibpath"
809565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
809665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test -n "$shlibpath"; then
809765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
809865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
809965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
810065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Get the real and link names of the library.
810165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	eval shared_ext=\"$shrext_cmds\"
810265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	eval library_names=\"$library_names_spec\"
810365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	set dummy $library_names
810465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	shift
810565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	realname="$1"
810665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	shift
810765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
810865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test -n "$soname_spec"; then
810965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  eval soname=\"$soname_spec\"
811065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	else
811165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  soname="$realname"
811265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
811365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test -z "$dlname"; then
811465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  dlname=$soname
811565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
811665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
811765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	lib="$output_objdir/$realname"
811865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	linknames=
811965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	for link
812065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	do
812165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_append linknames " $link"
812265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	done
812365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
812465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Use standard objects if they are pic
812565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP`
812665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	test "X$libobjs" = "X " && libobjs=
812765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
812865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	delfiles=
812965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test -n "$export_symbols" && test -n "$include_expsyms"; then
813065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
813165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  export_symbols="$output_objdir/$libname.uexp"
813265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_append delfiles " $export_symbols"
813365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
813465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
813565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	orig_export_symbols=
813665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	case $host_os in
813765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	cygwin* | mingw* | cegcc*)
813865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
813965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # exporting using user supplied symfile
814065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
814165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # and it's NOT already a .def file. Must figure out
814265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # which of the given symbols are data symbols and tag
814365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # them as such. So, trigger use of export_symbols_cmds.
814465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # export_symbols gets reassigned inside the "prepare
814565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # the list of exported symbols" if statement, so the
814665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # include_expsyms logic still works.
814765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      orig_export_symbols="$export_symbols"
814865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      export_symbols=
814965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      always_export_symbols=yes
815065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    fi
815165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
815265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
815365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	esac
815465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
815565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Prepare the list of exported symbols
815665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test -z "$export_symbols"; then
815765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
815865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_verbose "generating symbol list for \`$libname.la'"
815965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    export_symbols="$output_objdir/$libname.exp"
816065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    $opt_dry_run || $RM $export_symbols
816165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    cmds=$export_symbols_cmds
816265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    save_ifs="$IFS"; IFS='~'
816365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    for cmd1 in $cmds; do
816465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      IFS="$save_ifs"
816565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # Take the normal branch if the nm_file_list_spec branch
816665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # doesn't work or if tool conversion is not needed.
816765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      case $nm_file_list_spec~$to_tool_file_cmd in
816865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		*~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*)
816965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  try_normal_branch=yes
817065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  eval cmd=\"$cmd1\"
817165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  func_len " $cmd"
817265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  len=$func_len_result
817365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  ;;
817465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		*)
817565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  try_normal_branch=no
817665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  ;;
817765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      esac
817865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      if test "$try_normal_branch" = yes \
817965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		 && { test "$len" -lt "$max_cmd_len" \
818065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		      || test "$max_cmd_len" -le -1; }
818165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      then
818265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		func_show_eval "$cmd" 'exit $?'
818365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		skipped_export=false
818465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      elif test -n "$nm_file_list_spec"; then
818565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		func_basename "$output"
818665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		output_la=$func_basename_result
818765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		save_libobjs=$libobjs
818865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		save_output=$output
818965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		output=${output_objdir}/${output_la}.nm
819065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		func_to_tool_file "$output"
819165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		libobjs=$nm_file_list_spec$func_to_tool_file_result
819265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		func_append delfiles " $output"
819365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		func_verbose "creating $NM input file list: $output"
819465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		for obj in $save_libobjs; do
819565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  func_to_tool_file "$obj"
819665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  $ECHO "$func_to_tool_file_result"
819765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		done > "$output"
819865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		eval cmd=\"$cmd1\"
819965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		func_show_eval "$cmd" 'exit $?'
820065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		output=$save_output
820165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		libobjs=$save_libobjs
820265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		skipped_export=false
820365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      else
820465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		# The command line is too long to execute in one step.
820565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		func_verbose "using reloadable object file for export list..."
820665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		skipped_export=:
820765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		# Break out early, otherwise skipped_export may be
820865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		# set to false by a later but shorter cmd.
820965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		break
821065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      fi
821165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    done
821265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    IFS="$save_ifs"
821365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
821465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
821565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
821665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    fi
821765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
821865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
821965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
822065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test -n "$export_symbols" && test -n "$include_expsyms"; then
822165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  tmp_export_symbols="$export_symbols"
822265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
822365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
822465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
822565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
822665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
822765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # The given exports_symbols file has to be filtered, so filter it.
822865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
822965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # FIXME: $output_objdir/$libname.filter potentially contains lots of
823065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # 's' commands which not all seds can handle. GNU sed should be fine
823165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # though. Also, the filter scales superlinearly with the number of
823265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # global variables. join(1) would be nice here, but unfortunately
823365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # isn't a blessed tool.
823465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
823565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_append delfiles " $export_symbols $output_objdir/$libname.filter"
823665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  export_symbols=$output_objdir/$libname.def
823765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
823865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
823965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
824065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	tmp_deplibs=
824165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	for test_deplib in $deplibs; do
824265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  case " $convenience " in
824365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *" $test_deplib "*) ;;
824465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *)
824565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_append tmp_deplibs " $test_deplib"
824665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    ;;
824765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  esac
824865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	done
824965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	deplibs="$tmp_deplibs"
825065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
825165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test -n "$convenience"; then
825265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test -n "$whole_archive_flag_spec" &&
825365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    test "$compiler_needs_object" = yes &&
825465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    test -z "$libobjs"; then
825565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # extract the archives, so we have objects to list.
825665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # TODO: could optimize this to just extract one archive.
825765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    whole_archive_flag_spec=
825865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
825965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test -n "$whole_archive_flag_spec"; then
826065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    save_libobjs=$libobjs
826165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
826265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    test "X$libobjs" = "X " && libobjs=
826365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  else
826465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    gentop="$output_objdir/${outputname}x"
826565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_append generated " $gentop"
826665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
826765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_extract_archives $gentop $convenience
826865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_append libobjs " $func_extract_archives_result"
826965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    test "X$libobjs" = "X " && libobjs=
827065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
827165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
827265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
827365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
827465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  eval flag=\"$thread_safe_flag_spec\"
827565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_append linker_flags " $flag"
827665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
827765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
827865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Make a backup of the uninstalled library when relinking
827965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test "$opt_mode" = relink; then
828065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
828165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
828265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
828365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Do each of the archive commands.
828465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test "$module" = yes && test -n "$module_cmds" ; then
828565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
828665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    eval test_cmds=\"$module_expsym_cmds\"
828765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    cmds=$module_expsym_cmds
828865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  else
828965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    eval test_cmds=\"$module_cmds\"
829065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    cmds=$module_cmds
829165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
829265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	else
829365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
829465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    eval test_cmds=\"$archive_expsym_cmds\"
829565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    cmds=$archive_expsym_cmds
829665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  else
829765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    eval test_cmds=\"$archive_cmds\"
829865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    cmds=$archive_cmds
829965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
830065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
830165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
830265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test "X$skipped_export" != "X:" &&
830365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	   func_len " $test_cmds" &&
830465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	   len=$func_len_result &&
830565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	   test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
830665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  :
830765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	else
830865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # The command line is too long to link in one step, link piecewise
830965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # or, if using GNU ld and skipped_export is not :, use a linker
831065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # script.
831165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
831265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # Save the value of $output and $libobjs because we want to
831365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # use them later.  If we have whole_archive_flag_spec, we
831465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # want to use save_libobjs as it was before
831565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # whole_archive_flag_spec was expanded, because we can't
831665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # assume the linker understands whole_archive_flag_spec.
831765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # This may have to be revisited, in case too many
831865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # convenience libraries get linked in and end up exceeding
831965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # the spec.
832065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
832165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    save_libobjs=$libobjs
832265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
832365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  save_output=$output
832465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_basename "$output"
832565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  output_la=$func_basename_result
832665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
832765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # Clear the reloadable object creation command queue and
832865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # initialize k to one.
832965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  test_cmds=
833065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  concat_cmds=
833165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  objlist=
833265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  last_robj=
833365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  k=1
833465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
833565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
833665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    output=${output_objdir}/${output_la}.lnkscript
833765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_verbose "creating GNU ld script: $output"
833865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    echo 'INPUT (' > $output
833965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    for obj in $save_libobjs
834065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    do
834165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      func_to_tool_file "$obj"
834265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      $ECHO "$func_to_tool_file_result" >> $output
834365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    done
834465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    echo ')' >> $output
834565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_append delfiles " $output"
834665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_to_tool_file "$output"
834765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    output=$func_to_tool_file_result
834865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
834965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    output=${output_objdir}/${output_la}.lnk
835065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_verbose "creating linker input file list: $output"
835165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    : > $output
835265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    set x $save_libobjs
835365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    shift
835465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    firstobj=
835565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    if test "$compiler_needs_object" = yes; then
835665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      firstobj="$1 "
835765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      shift
835865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    fi
835965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    for obj
836065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    do
836165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      func_to_tool_file "$obj"
836265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      $ECHO "$func_to_tool_file_result" >> $output
836365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    done
836465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_append delfiles " $output"
836565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_to_tool_file "$output"
836665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    output=$firstobj\"$file_list_spec$func_to_tool_file_result\"
836765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  else
836865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    if test -n "$save_libobjs"; then
836965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      func_verbose "creating reloadable object files..."
837065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      output=$output_objdir/$output_la-${k}.$objext
837165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      eval test_cmds=\"$reload_cmds\"
837265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      func_len " $test_cmds"
837365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      len0=$func_len_result
837465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      len=$len0
837565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
837665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # Loop over the list of objects to be linked.
837765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      for obj in $save_libobjs
837865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      do
837965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		func_len " $obj"
838065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		func_arith $len + $func_len_result
838165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		len=$func_arith_result
838265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		if test "X$objlist" = X ||
838365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		   test "$len" -lt "$max_cmd_len"; then
838465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  func_append objlist " $obj"
838565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		else
838665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  # The command $test_cmds is almost too long, add a
838765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  # command to the queue.
838865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  if test "$k" -eq 1 ; then
838965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    # The first file doesn't have a previous command to add.
839065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    reload_objs=$objlist
839165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    eval concat_cmds=\"$reload_cmds\"
839265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  else
839365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    # All subsequent reloadable object files will link in
839465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    # the last one created.
839565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    reload_objs="$objlist $last_robj"
839665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\"
839765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  fi
839865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  last_robj=$output_objdir/$output_la-${k}.$objext
839965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  func_arith $k + 1
840065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  k=$func_arith_result
840165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  output=$output_objdir/$output_la-${k}.$objext
840265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  objlist=" $obj"
840365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  func_len " $last_robj"
840465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  func_arith $len0 + $func_len_result
840565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  len=$func_arith_result
840665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		fi
840765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      done
840865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # Handle the remaining objects by creating one last
840965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # reloadable object file.  All subsequent reloadable object
841065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # files will link in the last one created.
841165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
841265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      reload_objs="$objlist $last_robj"
841365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      eval concat_cmds=\"\${concat_cmds}$reload_cmds\"
841465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      if test -n "$last_robj"; then
841565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	        eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
841665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      fi
841765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      func_append delfiles " $output"
841865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
841965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    else
842065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      output=
842165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    fi
842265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
842365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    if ${skipped_export-false}; then
842465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      func_verbose "generating symbol list for \`$libname.la'"
842565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      export_symbols="$output_objdir/$libname.exp"
842665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      $opt_dry_run || $RM $export_symbols
842765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      libobjs=$output
842865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # Append the command to create the export file.
842965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
843065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
843165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      if test -n "$last_robj"; then
843265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
843365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      fi
843465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    fi
843565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
843665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    test -n "$save_libobjs" &&
843765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      func_verbose "creating a temporary reloadable object file: $output"
843865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
843965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # Loop through the commands generated above and execute them.
844065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    save_ifs="$IFS"; IFS='~'
844165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    for cmd in $concat_cmds; do
844265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      IFS="$save_ifs"
844365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      $opt_silent || {
844465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  func_quote_for_expand "$cmd"
844565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  eval "func_echo $func_quote_for_expand_result"
844665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      }
844765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      $opt_dry_run || eval "$cmd" || {
844865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		lt_exit=$?
844965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
845065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		# Restore the uninstalled library and exit
845165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		if test "$opt_mode" = relink; then
845265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  ( cd "$output_objdir" && \
845365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    $RM "${realname}T" && \
845465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		    $MV "${realname}U" "$realname" )
845565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		fi
845665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
845765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		exit $lt_exit
845865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      }
845965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    done
846065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    IFS="$save_ifs"
846165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
846265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    if test -n "$export_symbols_regex" && ${skipped_export-false}; then
846365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
846465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
846565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    fi
846665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
846765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
846865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich          if ${skipped_export-false}; then
846965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    if test -n "$export_symbols" && test -n "$include_expsyms"; then
847065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      tmp_export_symbols="$export_symbols"
847165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
847265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
847365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    fi
847465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
847565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    if test -n "$orig_export_symbols"; then
847665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # The given exports_symbols file has to be filtered, so filter it.
847765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
847865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # FIXME: $output_objdir/$libname.filter potentially contains lots of
847965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # 's' commands which not all seds can handle. GNU sed should be fine
848065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # though. Also, the filter scales superlinearly with the number of
848165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # global variables. join(1) would be nice here, but unfortunately
848265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # isn't a blessed tool.
848365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
848465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      func_append delfiles " $export_symbols $output_objdir/$libname.filter"
848565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      export_symbols=$output_objdir/$libname.def
848665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
848765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    fi
848865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
848965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
849065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  libobjs=$output
849165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # Restore the value of output.
849265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  output=$save_output
849365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
849465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
849565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
849665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    test "X$libobjs" = "X " && libobjs=
849765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
849865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # Expand the library linking commands again to reset the
849965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # value of $libobjs for piecewise linking.
850065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
850165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # Do each of the archive commands.
850265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test "$module" = yes && test -n "$module_cmds" ; then
850365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
850465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      cmds=$module_expsym_cmds
850565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    else
850665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      cmds=$module_cmds
850765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    fi
850865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  else
850965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
851065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      cmds=$archive_expsym_cmds
851165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    else
851265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      cmds=$archive_cmds
851365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    fi
851465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
851565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
851665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
851765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test -n "$delfiles"; then
851865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # Append the command to remove temporary files to $cmds.
851965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  eval cmds=\"\$cmds~\$RM $delfiles\"
852065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
852165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
852265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Add any objects from preloaded convenience libraries
852365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test -n "$dlprefiles"; then
852465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  gentop="$output_objdir/${outputname}x"
852565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_append generated " $gentop"
852665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
852765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_extract_archives $gentop $dlprefiles
852865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_append libobjs " $func_extract_archives_result"
852965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  test "X$libobjs" = "X " && libobjs=
853065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
853165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
853265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	save_ifs="$IFS"; IFS='~'
853365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	for cmd in $cmds; do
853465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  IFS="$save_ifs"
853565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  eval cmd=\"$cmd\"
853665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  $opt_silent || {
853765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_quote_for_expand "$cmd"
853865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    eval "func_echo $func_quote_for_expand_result"
853965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  }
854065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  $opt_dry_run || eval "$cmd" || {
854165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    lt_exit=$?
854265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
854365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # Restore the uninstalled library and exit
854465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    if test "$opt_mode" = relink; then
854565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      ( cd "$output_objdir" && \
854665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	        $RM "${realname}T" && \
854765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		$MV "${realname}U" "$realname" )
854865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    fi
854965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
855065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    exit $lt_exit
855165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  }
855265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	done
855365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	IFS="$save_ifs"
855465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
855565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Restore the uninstalled library and exit
855665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test "$opt_mode" = relink; then
855765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
855865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
855965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test -n "$convenience"; then
856065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    if test -z "$whole_archive_flag_spec"; then
856165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      func_show_eval '${RM}r "$gentop"'
856265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    fi
856365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
856465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
856565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  exit $EXIT_SUCCESS
856665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
856765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
856865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Create links to the real library.
856965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	for linkname in $linknames; do
857065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test "$realname" != "$linkname"; then
857165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
857265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
857365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	done
857465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
857565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# If -module or -export-dynamic was specified, set the dlname.
857665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test "$module" = yes || test "$export_dynamic" = yes; then
857765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # On all known operating systems, these are identical.
857865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  dlname="$soname"
857965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
858065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
858165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      ;;
858265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
858365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    obj)
858465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
858565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_warning "\`-dlopen' is ignored for objects"
858665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
858765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
858865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      case " $deplibs" in
858965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      *\ -l* | *\ -L*)
859065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_warning "\`-l' and \`-L' are ignored for objects" ;;
859165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      esac
859265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
859365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      test -n "$rpath" && \
859465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_warning "\`-rpath' is ignored for objects"
859565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
859665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      test -n "$xrpath" && \
859765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_warning "\`-R' is ignored for objects"
859865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
859965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      test -n "$vinfo" && \
860065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_warning "\`-version-info' is ignored for objects"
860165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
860265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      test -n "$release" && \
860365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_warning "\`-release' is ignored for objects"
860465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
860565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      case $output in
860665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      *.lo)
860765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	test -n "$objs$old_deplibs" && \
860865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_fatal_error "cannot build library object \`$output' from non-libtool objects"
860965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
861065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	libobj=$output
861165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_lo2o "$libobj"
861265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	obj=$func_lo2o_result
861365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
861465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      *)
861565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	libobj=
861665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	obj="$output"
861765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
861865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      esac
861965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
862065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Delete the old objects.
862165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      $opt_dry_run || $RM $obj $libobj
862265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
862365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Objects from convenience libraries.  This assumes
862465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # single-version convenience libraries.  Whenever we create
862565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # different ones for PIC/non-PIC, this we'll have to duplicate
862665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # the extraction.
862765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      reload_conv_objs=
862865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      gentop=
862965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # reload_cmds runs $LD directly, so let us get rid of
863065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # -Wl from whole_archive_flag_spec and hope we can get by with
863165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # turning comma into space..
863265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      wl=
863365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
863465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test -n "$convenience"; then
863565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test -n "$whole_archive_flag_spec"; then
863665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
863765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'`
863865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	else
863965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  gentop="$output_objdir/${obj}x"
864065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_append generated " $gentop"
864165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
864265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_extract_archives $gentop $convenience
864365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  reload_conv_objs="$reload_objs $func_extract_archives_result"
864465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
864565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
864665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
864765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # If we're not building shared, we need to use non_pic_objs
864865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      test "$build_libtool_libs" != yes && libobjs="$non_pic_objects"
864965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
865065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Create the old-style object.
865165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
865265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
865365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      output="$obj"
865465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_execute_cmds "$reload_cmds" 'exit $?'
865565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
865665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Exit if we aren't doing a library object file.
865765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test -z "$libobj"; then
865865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test -n "$gentop"; then
865965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_show_eval '${RM}r "$gentop"'
866065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
866165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
866265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	exit $EXIT_SUCCESS
866365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
866465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
866565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test "$build_libtool_libs" != yes; then
866665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test -n "$gentop"; then
866765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_show_eval '${RM}r "$gentop"'
866865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
866965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
867065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Create an invalid libtool object if no PIC, so that we don't
867165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# accidentally link it into a program.
867265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# $show "echo timestamp > $libobj"
867365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
867465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	exit $EXIT_SUCCESS
867565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
867665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
867765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test -n "$pic_flag" || test "$pic_mode" != default; then
867865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Only do commands if we really have different PIC objects.
867965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	reload_objs="$libobjs $reload_conv_objs"
868065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	output="$libobj"
868165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_execute_cmds "$reload_cmds" 'exit $?'
868265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
868365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
868465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test -n "$gentop"; then
868565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_show_eval '${RM}r "$gentop"'
868665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
868765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
868865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      exit $EXIT_SUCCESS
868965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      ;;
869065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
869165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    prog)
869265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      case $host in
869365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	*cygwin*) func_stripname '' '.exe' "$output"
869465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	          output=$func_stripname_result.exe;;
869565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      esac
869665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      test -n "$vinfo" && \
869765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_warning "\`-version-info' is ignored for programs"
869865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
869965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      test -n "$release" && \
870065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_warning "\`-release' is ignored for programs"
870165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
870265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      test "$preload" = yes \
870365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        && test "$dlopen_support" = unknown \
870465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	&& test "$dlopen_self" = unknown \
870565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	&& test "$dlopen_self_static" = unknown && \
870665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
870765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
870865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      case $host in
870965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      *-*-rhapsody* | *-*-darwin1.[012])
871065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# On Rhapsody replace the C library is the System framework
871165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'`
871265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'`
871365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
871465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      esac
871565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
871665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      case $host in
871765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      *-*-darwin*)
871865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Don't allow lazy linking, it breaks C++ global constructors
871965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# But is supposedly fixed on 10.4 or later (yay!).
872065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test "$tagname" = CXX ; then
872165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
872265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    10.[0123])
872365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      func_append compile_command " ${wl}-bind_at_load"
872465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      func_append finalize_command " ${wl}-bind_at_load"
872565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    ;;
872665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  esac
872765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
872865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Time to change all our "foo.ltframework" stuff back to "-framework foo"
872965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
873065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
873165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
873265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      esac
873365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
873465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
873565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # move library search paths that coincide with paths to not yet
873665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # installed libraries to the beginning of the library search list
873765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      new_libs=
873865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      for path in $notinst_path; do
873965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	case " $new_libs " in
874065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	*" -L$path/$objdir "*) ;;
874165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	*)
874265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  case " $compile_deplibs " in
874365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *" -L$path/$objdir "*)
874465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_append new_libs " -L$path/$objdir" ;;
874565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  esac
874665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
874765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	esac
874865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      done
874965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      for deplib in $compile_deplibs; do
875065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	case $deplib in
875165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	-L*)
875265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  case " $new_libs " in
875365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *" $deplib "*) ;;
875465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *) func_append new_libs " $deplib" ;;
875565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  esac
875665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
875765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	*) func_append new_libs " $deplib" ;;
875865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	esac
875965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      done
876065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      compile_deplibs="$new_libs"
876165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
876265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
876365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_append compile_command " $compile_deplibs"
876465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_append finalize_command " $finalize_deplibs"
876565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
876665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test -n "$rpath$xrpath"; then
876765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# If the user specified any rpath flags, then add them.
876865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	for libdir in $rpath $xrpath; do
876965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # This is the magic to use -rpath.
877065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  case "$finalize_rpath " in
877165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *" $libdir "*) ;;
877265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *) func_append finalize_rpath " $libdir" ;;
877365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  esac
877465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	done
877565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
877665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
877765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Now hardcode the library paths
877865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      rpath=
877965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      hardcode_libdirs=
878065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      for libdir in $compile_rpath $finalize_rpath; do
878165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test -n "$hardcode_libdir_flag_spec"; then
878265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test -n "$hardcode_libdir_separator"; then
878365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    if test -z "$hardcode_libdirs"; then
878465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      hardcode_libdirs="$libdir"
878565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    else
878665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # Just accumulate the unique libdirs.
878765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
878865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
878965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		;;
879065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      *)
879165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
879265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		;;
879365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      esac
879465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    fi
879565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  else
879665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    eval flag=\"$hardcode_libdir_flag_spec\"
879765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_append rpath " $flag"
879865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
879965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	elif test -n "$runpath_var"; then
880065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  case "$perm_rpath " in
880165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *" $libdir "*) ;;
880265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *) func_append perm_rpath " $libdir" ;;
880365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  esac
880465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
880565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	case $host in
880665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
880765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
880865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  case :$dllsearchpath: in
880965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *":$libdir:"*) ;;
881065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ::) dllsearchpath=$libdir;;
881165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *) func_append dllsearchpath ":$libdir";;
881265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  esac
881365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  case :$dllsearchpath: in
881465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *":$testbindir:"*) ;;
881565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ::) dllsearchpath=$testbindir;;
881665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *) func_append dllsearchpath ":$testbindir";;
881765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  esac
881865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
881965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	esac
882065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      done
882165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Substitute the hardcoded libdirs into the rpath.
882265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test -n "$hardcode_libdir_separator" &&
882365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	 test -n "$hardcode_libdirs"; then
882465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	libdir="$hardcode_libdirs"
882565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	eval rpath=\" $hardcode_libdir_flag_spec\"
882665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
882765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      compile_rpath="$rpath"
882865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
882965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      rpath=
883065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      hardcode_libdirs=
883165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      for libdir in $finalize_rpath; do
883265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test -n "$hardcode_libdir_flag_spec"; then
883365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test -n "$hardcode_libdir_separator"; then
883465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    if test -z "$hardcode_libdirs"; then
883565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      hardcode_libdirs="$libdir"
883665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    else
883765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # Just accumulate the unique libdirs.
883865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
883965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
884065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		;;
884165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      *)
884265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
884365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		;;
884465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      esac
884565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    fi
884665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  else
884765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    eval flag=\"$hardcode_libdir_flag_spec\"
884865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_append rpath " $flag"
884965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
885065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	elif test -n "$runpath_var"; then
885165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  case "$finalize_perm_rpath " in
885265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *" $libdir "*) ;;
885365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *) func_append finalize_perm_rpath " $libdir" ;;
885465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  esac
885565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
885665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      done
885765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Substitute the hardcoded libdirs into the rpath.
885865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test -n "$hardcode_libdir_separator" &&
885965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	 test -n "$hardcode_libdirs"; then
886065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	libdir="$hardcode_libdirs"
886165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	eval rpath=\" $hardcode_libdir_flag_spec\"
886265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
886365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      finalize_rpath="$rpath"
886465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
886565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test -n "$libobjs" && test "$build_old_libs" = yes; then
886665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Transform all the library objects into standard objects.
886765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
886865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
886965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
887065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
887165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
887265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
887365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # template prelinking step
887465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test -n "$prelink_cmds"; then
887565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_execute_cmds "$prelink_cmds" 'exit $?'
887665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
887765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
887865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      wrappers_required=yes
887965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      case $host in
888065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      *cegcc* | *mingw32ce*)
888165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway.
888265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        wrappers_required=no
888365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        ;;
888465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      *cygwin* | *mingw* )
888565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        if test "$build_libtool_libs" != yes; then
888665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich          wrappers_required=no
888765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        fi
888865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        ;;
888965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      *)
889065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
889165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich          wrappers_required=no
889265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        fi
889365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        ;;
889465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      esac
889565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test "$wrappers_required" = no; then
889665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Replace the output file specification.
889765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
889865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	link_command="$compile_command$compile_rpath"
889965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
890065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# We have no uninstalled library dependencies, so finalize right now.
890165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	exit_status=0
890265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_show_eval "$link_command" 'exit_status=$?'
890365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
890465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test -n "$postlink_cmds"; then
890565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_to_tool_file "$output"
890665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
890765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_execute_cmds "$postlink_cmds" 'exit $?'
890865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
890965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
891065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Delete the generated files.
891165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test -f "$output_objdir/${outputname}S.${objext}"; then
891265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
891365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
891465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
891565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	exit $exit_status
891665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
891765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
891865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test -n "$compile_shlibpath$finalize_shlibpath"; then
891965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
892065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
892165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test -n "$finalize_shlibpath"; then
892265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
892365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
892465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
892565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      compile_var=
892665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      finalize_var=
892765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test -n "$runpath_var"; then
892865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test -n "$perm_rpath"; then
892965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # We should set the runpath_var.
893065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  rpath=
893165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  for dir in $perm_rpath; do
893265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_append rpath "$dir:"
893365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  done
893465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
893565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
893665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test -n "$finalize_perm_rpath"; then
893765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # We should set the runpath_var.
893865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  rpath=
893965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  for dir in $finalize_perm_rpath; do
894065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_append rpath "$dir:"
894165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  done
894265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
894365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
894465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
894565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
894665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test "$no_install" = yes; then
894765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# We don't need to create a wrapper script.
894865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	link_command="$compile_var$compile_command$compile_rpath"
894965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Replace the output file specification.
895065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
895165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Delete the old output file.
895265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	$opt_dry_run || $RM $output
895365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Link the executable and exit
895465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_show_eval "$link_command" 'exit $?'
895565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
895665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test -n "$postlink_cmds"; then
895765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_to_tool_file "$output"
895865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
895965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_execute_cmds "$postlink_cmds" 'exit $?'
896065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
896165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
896265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	exit $EXIT_SUCCESS
896365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
896465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
896565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test "$hardcode_action" = relink; then
896665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Fast installation is not supported
896765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	link_command="$compile_var$compile_command$compile_rpath"
896865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	relink_command="$finalize_var$finalize_command$finalize_rpath"
896965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
897065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_warning "this platform does not like uninstalled shared libraries"
897165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_warning "\`$output' will be relinked during installation"
897265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      else
897365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test "$fast_install" != no; then
897465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  link_command="$finalize_var$compile_command$finalize_rpath"
897565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test "$fast_install" = yes; then
897665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'`
897765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  else
897865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # fast_install is set to needless
897965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    relink_command=
898065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
898165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	else
898265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  link_command="$compile_var$compile_command$compile_rpath"
898365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  relink_command="$finalize_var$finalize_command$finalize_rpath"
898465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
898565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
898665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
898765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Replace the output file specification.
898865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
898965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
899065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Delete the old output files.
899165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
899265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
899365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_show_eval "$link_command" 'exit $?'
899465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
899565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test -n "$postlink_cmds"; then
899665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_to_tool_file "$output_objdir/$outputname"
899765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	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'`
899865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_execute_cmds "$postlink_cmds" 'exit $?'
899965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
900065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
900165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Now create the wrapper script.
900265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_verbose "creating $output"
900365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
900465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Quote the relink command for shipping.
900565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test -n "$relink_command"; then
900665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Preserve any variables that may affect compiler behavior
900765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	for var in $variables_saved_for_relink; do
900865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if eval test -z \"\${$var+set}\"; then
900965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
901065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  elif eval var_value=\$$var; test -z "$var_value"; then
901165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    relink_command="$var=; export $var; $relink_command"
901265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  else
901365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_quote_for_eval "$var_value"
901465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
901565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
901665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	done
901765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	relink_command="(cd `pwd`; $relink_command)"
901865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
901965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
902065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
902165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Only actually do things if not in dry run mode.
902265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      $opt_dry_run || {
902365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# win32 will think the script is a binary if it has
902465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# a .exe suffix, so we strip it off here.
902565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	case $output in
902665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *.exe) func_stripname '' '.exe' "$output"
902765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	         output=$func_stripname_result ;;
902865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	esac
902965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# test for cygwin because mv fails w/o .exe extensions
903065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	case $host in
903165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *cygwin*)
903265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    exeext=.exe
903365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_stripname '' '.exe' "$outputname"
903465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    outputname=$func_stripname_result ;;
903565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *) exeext= ;;
903665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	esac
903765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	case $host in
903865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *cygwin* | *mingw* )
903965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_dirname_and_basename "$output" "" "."
904065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    output_name=$func_basename_result
904165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    output_path=$func_dirname_result
904265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    cwrappersource="$output_path/$objdir/lt-$output_name.c"
904365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    cwrapper="$output_path/$output_name.exe"
904465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    $RM $cwrappersource $cwrapper
904565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
904665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
904765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_emit_cwrapperexe_src > $cwrappersource
904865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
904965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # The wrapper executable is built using the $host compiler,
905065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # because it contains $host paths and files. If cross-
905165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # compiling, it, like the target executable, must be
905265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # executed on the $host or under an emulation environment.
905365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    $opt_dry_run || {
905465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
905565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      $STRIP $cwrapper
905665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    }
905765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
905865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # Now, create the wrapper script for func_source use:
905965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_ltwrapper_scriptname $cwrapper
906065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    $RM $func_ltwrapper_scriptname_result
906165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
906265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    $opt_dry_run || {
906365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # note: this script will not be executed, so do not chmod.
906465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      if test "x$build" = "x$host" ; then
906565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		$cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
906665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      else
906765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		func_emit_wrapper no > $func_ltwrapper_scriptname_result
906865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      fi
906965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    }
907065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
907165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  * )
907265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    $RM $output
907365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
907465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
907565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_emit_wrapper no > $output
907665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    chmod +x $output
907765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  ;;
907865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	esac
907965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      }
908065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      exit $EXIT_SUCCESS
908165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      ;;
908265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    esac
908365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
908465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # See if we need to build an old-fashioned archive.
908565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    for oldlib in $oldlibs; do
908665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
908765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test "$build_libtool_libs" = convenience; then
908865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	oldobjs="$libobjs_save $symfileobj"
908965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	addlibs="$convenience"
909065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	build_libtool_libs=no
909165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      else
909265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test "$build_libtool_libs" = module; then
909365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  oldobjs="$libobjs_save"
909465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  build_libtool_libs=no
909565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	else
909665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  oldobjs="$old_deplibs $non_pic_objects"
909765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test "$preload" = yes && test -f "$symfileobj"; then
909865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_append oldobjs " $symfileobj"
909965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
910065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
910165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	addlibs="$old_convenience"
910265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
910365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
910465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test -n "$addlibs"; then
910565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	gentop="$output_objdir/${outputname}x"
910665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_append generated " $gentop"
910765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
910865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_extract_archives $gentop $addlibs
910965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_append oldobjs " $func_extract_archives_result"
911065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
911165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
911265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Do each command in the archive commands.
911365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
911465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	cmds=$old_archive_from_new_cmds
911565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      else
911665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
911765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Add any objects from preloaded convenience libraries
911865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test -n "$dlprefiles"; then
911965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  gentop="$output_objdir/${outputname}x"
912065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_append generated " $gentop"
912165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
912265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_extract_archives $gentop $dlprefiles
912365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_append oldobjs " $func_extract_archives_result"
912465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
912565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
912665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# POSIX demands no paths to be encoded in archives.  We have
912765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# to avoid creating archives with duplicate basenames if we
912865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# might have to extract them afterwards, e.g., when creating a
912965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# static archive out of a convenience library, or when linking
913065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# the entirety of a libtool archive into another (currently
913165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# not supported by libtool).
913265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if (for obj in $oldobjs
913365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    do
913465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      func_basename "$obj"
913565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      $ECHO "$func_basename_result"
913665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    done | sort | sort -uc >/dev/null 2>&1); then
913765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  :
913865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	else
913965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  echo "copying selected object files to avoid basename conflicts..."
914065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  gentop="$output_objdir/${outputname}x"
914165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_append generated " $gentop"
914265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_mkdir_p "$gentop"
914365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  save_oldobjs=$oldobjs
914465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  oldobjs=
914565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  counter=1
914665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  for obj in $save_oldobjs
914765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  do
914865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_basename "$obj"
914965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    objbase="$func_basename_result"
915065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    case " $oldobjs " in
915165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    " ") oldobjs=$obj ;;
915265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    *[\ /]"$objbase "*)
915365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      while :; do
915465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		# Make sure we don't pick an alternate name that also
915565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		# overlaps.
915665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		newobj=lt$counter-$objbase
915765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		func_arith $counter + 1
915865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		counter=$func_arith_result
915965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		case " $oldobjs " in
916065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		*[\ /]"$newobj "*) ;;
916165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		*) if test ! -f "$gentop/$newobj"; then break; fi ;;
916265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		esac
916365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      done
916465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
916565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      func_append oldobjs " $gentop/$newobj"
916665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      ;;
916765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    *) func_append oldobjs " $obj" ;;
916865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    esac
916965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  done
917065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
917165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
917265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	tool_oldlib=$func_to_tool_file_result
917365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	eval cmds=\"$old_archive_cmds\"
917465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
917565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_len " $cmds"
917665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	len=$func_len_result
917765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
917865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  cmds=$old_archive_cmds
917965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	elif test -n "$archiver_list_spec"; then
918065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_verbose "using command file archive linking..."
918165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  for obj in $oldobjs
918265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  do
918365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_to_tool_file "$obj"
918465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    $ECHO "$func_to_tool_file_result"
918565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  done > $output_objdir/$libname.libcmd
918665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_to_tool_file "$output_objdir/$libname.libcmd"
918765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  oldobjs=" $archiver_list_spec$func_to_tool_file_result"
918865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  cmds=$old_archive_cmds
918965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	else
919065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # the command line is too long to link in one step, link in parts
919165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_verbose "using piecewise archive linking..."
919265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  save_RANLIB=$RANLIB
919365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  RANLIB=:
919465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  objlist=
919565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  concat_cmds=
919665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  save_oldobjs=$oldobjs
919765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  oldobjs=
919865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # Is there a better way of finding the last object in the list?
919965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  for obj in $save_oldobjs
920065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  do
920165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    last_oldobj=$obj
920265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  done
920365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  eval test_cmds=\"$old_archive_cmds\"
920465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_len " $test_cmds"
920565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  len0=$func_len_result
920665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  len=$len0
920765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  for obj in $save_oldobjs
920865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  do
920965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_len " $obj"
921065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_arith $len + $func_len_result
921165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    len=$func_arith_result
921265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_append objlist " $obj"
921365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    if test "$len" -lt "$max_cmd_len"; then
921465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      :
921565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    else
921665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # the above command should be used before it gets too long
921765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      oldobjs=$objlist
921865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      if test "$obj" = "$last_oldobj" ; then
921965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		RANLIB=$save_RANLIB
922065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      fi
922165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
922265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
922365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      objlist=
922465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      len=$len0
922565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    fi
922665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  done
922765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  RANLIB=$save_RANLIB
922865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  oldobjs=$objlist
922965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test "X$oldobjs" = "X" ; then
923065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    eval cmds=\"\$concat_cmds\"
923165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  else
923265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
923365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
923465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
923565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
923665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_execute_cmds "$cmds" 'exit $?'
923765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    done
923865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
923965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    test -n "$generated" && \
924065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_show_eval "${RM}r$generated"
924165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
924265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # Now create the libtool archive.
924365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    case $output in
924465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    *.la)
924565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      old_library=
924665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      test "$build_old_libs" = yes && old_library="$libname.$libext"
924765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_verbose "creating $output"
924865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
924965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Preserve any variables that may affect compiler behavior
925065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      for var in $variables_saved_for_relink; do
925165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if eval test -z \"\${$var+set}\"; then
925265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
925365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	elif eval var_value=\$$var; test -z "$var_value"; then
925465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  relink_command="$var=; export $var; $relink_command"
925565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	else
925665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_quote_for_eval "$var_value"
925765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
925865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
925965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      done
926065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Quote the link command for shipping.
926165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
926265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
926365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test "$hardcode_automatic" = yes ; then
926465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	relink_command=
926565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
926665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
926765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Only create the output if not a dry run.
926865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      $opt_dry_run || {
926965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	for installed in no yes; do
927065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test "$installed" = yes; then
927165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    if test -z "$install_libdir"; then
927265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      break
927365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    fi
927465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    output="$output_objdir/$outputname"i
927565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # Replace all uninstalled libtool libraries with the installed ones
927665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    newdependency_libs=
927765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    for deplib in $dependency_libs; do
927865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      case $deplib in
927965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      *.la)
928065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		func_basename "$deplib"
928165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		name="$func_basename_result"
928265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		func_resolve_sysroot "$deplib"
928365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
928465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		test -z "$libdir" && \
928565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  func_fatal_error "\`$deplib' is not a valid libtool archive"
928665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name"
928765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		;;
928865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      -L*)
928965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		func_stripname -L '' "$deplib"
929065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		func_replace_sysroot "$func_stripname_result"
929165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		func_append newdependency_libs " -L$func_replace_sysroot_result"
929265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		;;
929365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      -R*)
929465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		func_stripname -R '' "$deplib"
929565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		func_replace_sysroot "$func_stripname_result"
929665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		func_append newdependency_libs " -R$func_replace_sysroot_result"
929765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		;;
929865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      *) func_append newdependency_libs " $deplib" ;;
929965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      esac
930065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    done
930165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    dependency_libs="$newdependency_libs"
930265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    newdlfiles=
930365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
930465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    for lib in $dlfiles; do
930565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      case $lib in
930665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      *.la)
930765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	        func_basename "$lib"
930865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		name="$func_basename_result"
930965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
931065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		test -z "$libdir" && \
931165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  func_fatal_error "\`$lib' is not a valid libtool archive"
931265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name"
931365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		;;
931465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      *) func_append newdlfiles " $lib" ;;
931565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      esac
931665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    done
931765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    dlfiles="$newdlfiles"
931865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    newdlprefiles=
931965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    for lib in $dlprefiles; do
932065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      case $lib in
932165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      *.la)
932265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		# Only pass preopened files to the pseudo-archive (for
932365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		# eventual linking with the app. that links it) if we
932465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		# didn't already link the preopened objects directly into
932565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		# the library:
932665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		func_basename "$lib"
932765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		name="$func_basename_result"
932865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
932965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		test -z "$libdir" && \
933065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		  func_fatal_error "\`$lib' is not a valid libtool archive"
933165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name"
933265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		;;
933365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      esac
933465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    done
933565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    dlprefiles="$newdlprefiles"
933665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  else
933765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    newdlfiles=
933865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    for lib in $dlfiles; do
933965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      case $lib in
934065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
934165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		*) abs=`pwd`"/$lib" ;;
934265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      esac
934365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      func_append newdlfiles " $abs"
934465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    done
934565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    dlfiles="$newdlfiles"
934665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    newdlprefiles=
934765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    for lib in $dlprefiles; do
934865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      case $lib in
934965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
935065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		*) abs=`pwd`"/$lib" ;;
935165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      esac
935265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      func_append newdlprefiles " $abs"
935365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    done
935465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    dlprefiles="$newdlprefiles"
935565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
935665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  $RM $output
935765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # place dlname in correct position for cygwin
935865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # In fact, it would be nice if we could use this code for all target
935965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # systems that can't hard-code library paths into their executables
936065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # and that have no shared library path variable independent of PATH,
936165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # but it turns out we can't easily determine that from inspecting
936265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # libtool variables, so we have to hard-code the OSs to which it
936365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # applies here; at the moment, that means platforms that use the PE
936465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # object format with DLL files.  See the long comment at the top of
936565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # tests/bindir.at for full details.
936665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  tdlname=$dlname
936765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  case $host,$output,$installed,$module,$dlname in
936865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll)
936965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # If a -bindir argument was supplied, place the dll there.
937065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      if test "x$bindir" != x ;
937165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      then
937265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		func_relative_path "$install_libdir" "$bindir"
937365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		tdlname=$func_relative_path_result$dlname
937465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      else
937565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		# Otherwise fall back on heuristic.
937665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich		tdlname=../bin/$dlname
937765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      fi
937865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      ;;
937965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  esac
938065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  $ECHO > $output "\
938165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# $outputname - a libtool library file
938265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
938365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#
938465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Please DO NOT delete this file!
938565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# It is necessary for linking the library.
938665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
938765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# The name that we can dlopen(3).
938865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichdlname='$tdlname'
938965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
939065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Names of this library.
939165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichlibrary_names='$library_names'
939265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
939365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# The name of the static archive.
939465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichold_library='$old_library'
939565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
939665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Linker flags that can not go in dependency_libs.
939765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichinherited_linker_flags='$new_inherited_linker_flags'
939865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
939965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Libraries that this one depends upon.
940065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichdependency_libs='$dependency_libs'
940165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
940265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Names of additional weak libraries provided by this library
940365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichweak_library_names='$weak_libs'
940465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
940565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Version information for $libname.
940665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichcurrent=$current
940765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichage=$age
940865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichrevision=$revision
940965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
941065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Is this an already installed library?
941165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichinstalled=$installed
941265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
941365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Should we warn about portability when linking against -modules?
941465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichshouldnotlink=$module
941565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
941665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Files to dlopen/dlpreopen
941765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichdlopen='$dlfiles'
941865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichdlpreopen='$dlprefiles'
941965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
942065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Directory that this library needs to be installed in:
942165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichlibdir='$install_libdir'"
942265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test "$installed" = no && test "$need_relink" = yes; then
942365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    $ECHO >> $output "\
942465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichrelink_command=\"$relink_command\""
942565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
942665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	done
942765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      }
942865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
942965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Do a symbolic link so that the libtool archive can be found in
943065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # LD_LIBRARY_PATH before the program is installed.
943165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
943265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      ;;
943365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    esac
943465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    exit $EXIT_SUCCESS
943565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
943665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
943765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ test "$opt_mode" = link || test "$opt_mode" = relink; } &&
943865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_mode_link ${1+"$@"}
943965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
944065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
944165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# func_mode_uninstall arg...
944265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfunc_mode_uninstall ()
944365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{
944465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    $opt_debug
944565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    RM="$nonopt"
944665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    files=
944765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    rmforce=
944865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    exit_status=0
944965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
945065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # This variable tells wrapper scripts just to set variables rather
945165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # than running their programs.
945265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    libtool_install_magic="$magic"
945365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
945465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    for arg
945565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    do
945665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      case $arg in
945765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      -f) func_append RM " $arg"; rmforce=yes ;;
945865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      -*) func_append RM " $arg" ;;
945965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      *) func_append files " $arg" ;;
946065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      esac
946165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    done
946265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
946365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    test -z "$RM" && \
946465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_fatal_help "you must specify an RM program"
946565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
946665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    rmdirs=
946765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
946865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    for file in $files; do
946965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_dirname "$file" "" "."
947065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      dir="$func_dirname_result"
947165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test "X$dir" = X.; then
947265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	odir="$objdir"
947365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      else
947465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	odir="$dir/$objdir"
947565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
947665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_basename "$file"
947765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      name="$func_basename_result"
947865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      test "$opt_mode" = uninstall && odir="$dir"
947965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
948065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Remember odir for removal later, being careful to avoid duplicates
948165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test "$opt_mode" = clean; then
948265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	case " $rmdirs " in
948365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *" $odir "*) ;;
948465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *) func_append rmdirs " $odir" ;;
948565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	esac
948665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
948765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
948865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      # Don't error if the file doesn't exist and rm -f was used.
948965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if { test -L "$file"; } >/dev/null 2>&1 ||
949065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	 { test -h "$file"; } >/dev/null 2>&1 ||
949165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	 test -f "$file"; then
949265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	:
949365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      elif test -d "$file"; then
949465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	exit_status=1
949565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	continue
949665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      elif test "$rmforce" = yes; then
949765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	continue
949865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
949965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
950065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      rmfiles="$file"
950165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
950265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      case $name in
950365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      *.la)
950465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Possibly a libtool archive, so verify it.
950565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if func_lalib_p "$file"; then
950665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_source $dir/$name
950765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
950865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # Delete the libtool libraries and symlinks.
950965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  for n in $library_names; do
951065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_append rmfiles " $odir/$n"
951165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  done
951265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  test -n "$old_library" && func_append rmfiles " $odir/$old_library"
951365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
951465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  case "$opt_mode" in
951565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  clean)
951665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    case " $library_names " in
951765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    *" $dlname "*) ;;
951865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;;
951965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    esac
952065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i"
952165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    ;;
952265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  uninstall)
952365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    if test -n "$library_names"; then
952465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # Do each command in the postuninstall commands.
952565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
952665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    fi
952765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
952865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    if test -n "$old_library"; then
952965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      # Do each command in the old_postuninstall commands.
953065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
953165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    fi
953265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # FIXME: should reinstall the best remaining shared library.
953365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    ;;
953465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  esac
953565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
953665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
953765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
953865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      *.lo)
953965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	# Possibly a libtool object, so verify it.
954065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if func_lalib_p "$file"; then
954165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
954265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # Read the .lo file
954365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  func_source $dir/$name
954465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
954565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # Add PIC object to the list of files to remove.
954665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test -n "$pic_object" &&
954765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	     test "$pic_object" != none; then
954865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_append rmfiles " $dir/$pic_object"
954965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
955065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
955165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # Add non-PIC object to the list of files to remove.
955265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if test -n "$non_pic_object" &&
955365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	     test "$non_pic_object" != none; then
955465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_append rmfiles " $dir/$non_pic_object"
955565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
955665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
955765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
955865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
955965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      *)
956065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	if test "$opt_mode" = clean ; then
956165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  noexename=$name
956265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  case $file in
956365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  *.exe)
956465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_stripname '' '.exe' "$file"
956565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    file=$func_stripname_result
956665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_stripname '' '.exe' "$name"
956765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    noexename=$func_stripname_result
956865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # $file with .exe has already been added to rmfiles,
956965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # add $file without .exe
957065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_append rmfiles " $file"
957165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    ;;
957265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  esac
957365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  # Do a test to see if this is a libtool program.
957465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  if func_ltwrapper_p "$file"; then
957565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    if func_ltwrapper_executable_p "$file"; then
957665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      func_ltwrapper_scriptname "$file"
957765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      relink_command=
957865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      func_source $func_ltwrapper_scriptname_result
957965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      func_append rmfiles " $func_ltwrapper_scriptname_result"
958065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    else
958165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      relink_command=
958265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      func_source $dir/$noexename
958365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    fi
958465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
958565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # note $name still contains .exe if it was in $file originally
958665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    # as does the version of $file that was added into $rmfiles
958765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    func_append rmfiles " $odir/$name $odir/${name}S.${objext}"
958865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    if test "$fast_install" = yes && test -n "$relink_command"; then
958965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      func_append rmfiles " $odir/lt-$name"
959065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    fi
959165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    if test "X$noexename" != "X$name" ; then
959265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	      func_append rmfiles " $odir/lt-${noexename}.c"
959365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    fi
959465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  fi
959565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	fi
959665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	;;
959765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      esac
959865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      func_show_eval "$RM $rmfiles" 'exit_status=1'
959965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    done
960065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
960165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    # Try to remove the ${objdir}s in the directories where we deleted files
960265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    for dir in $rmdirs; do
960365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      if test -d "$dir"; then
960465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	func_show_eval "rmdir $dir >/dev/null 2>&1"
960565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      fi
960665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    done
960765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
960865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    exit $exit_status
960965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
961065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
961165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } &&
961265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    func_mode_uninstall ${1+"$@"}
961365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
961465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichtest -z "$opt_mode" && {
961565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  help="$generic_help"
961665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  func_fatal_help "you must specify a MODE"
961765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
961865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
961965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichtest -z "$exec_cmd" && \
962065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  func_fatal_help "invalid operation mode \`$opt_mode'"
962165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
962265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichif test -n "$exec_cmd"; then
962365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  eval exec "$exec_cmd"
962465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  exit $EXIT_FAILURE
962565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfi
962665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
962765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichexit $exit_status
962865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
962965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
963065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# The TAGs below are defined such that we never get into a situation
963165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# in which we disable both kinds of libraries.  Given conflicting
963265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# choices, we go for a static library, that is the most portable,
963365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# since we can't tell whether shared libraries were disabled because
963465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# the user asked for that or because the platform doesn't support
963565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# them.  This is particularly important on AIX, because we don't
963665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# support having both static and shared libraries enabled at the same
963765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# time on that platform, so we default to a shared-only configuration.
963865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# If a disable-shared tag is given, we'll fallback to a static-only
963965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# configuration.  But we'll never go from static-only to shared-only.
964065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
964165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
964265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichbuild_libtool_libs=no
964365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichbuild_old_libs=yes
964465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# ### END LIBTOOL TAG CONFIG: disable-shared
964565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
964665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# ### BEGIN LIBTOOL TAG CONFIG: disable-static
964765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichbuild_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
964865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# ### END LIBTOOL TAG CONFIG: disable-static
964965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
965065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Local Variables:
965165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# mode:shell-script
965265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# sh-indentation:2
965365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# End:
965465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# vi:sw=2
965565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
9656